Exploring the Kookaberry

The Kookaberry is a microcontroller-based digital system with a lot of added features to make it easy to collect, measure and analyse data; and to process that data for display on its screen, or to control external devices.

Compared to the micro:bit upon which it is based, it has

  • a screen,
  • a memory chip to store pre-coded applications and data logged when it is measuring something,
  • plugs and sockets for attaching input and output devices - collectively called “peripherals” in Kookaberry speak,
  • an on-board MicroPython compiler which means you don’t have to be connected to the Internet to load, code and run applications,
  • a USB interface which makes it easy to connect to a PC to drag-and-drop application files, and to take Excel data files out of memory for graphing and analysis,
  • an Integrated Development Environment (IDE) which is installed on a PC to which a Kookaberry is connected. The IDE allows the user to load, display, modify, and run the code driving the applications in real time.
  • a teachers’ window where the screen on a connected Kookaberry can be viewed in a separate window on the teacher’s PC and displayed on a monitor or smart board.

Kookaberry Graphic

The legend at the bottom of the graphic illustrates the flow of data between the main elements of a digital system. The background colour of the various descriptor boxes in the graphic indicate where they sit within the data flow legend.

Image

Front of the Kookaberry

The following descriptions reference the Kookaberry graphic, and are in anti-clockwise order starting from the top left

OLED Display and barcode

 

The display is monochrome with cyan (light-blue) pixels. It is capable of displaying text and simple line and dot graphics. The dimensions of the display are 128 pixels wide by 64 pixels high.

 

Image
Image

The display is manufactured using Organic Light Emitting Diodes (OLED) which are made of thin plastic layers and are brighter, lighter, and more flexible than earlier LED and LCD screens. 

The bezel is plastic and can be popped off from the board by pushing on the little plastic stubs protruding through the back of the board. The barcode - which is unique to each Kookaberry is under the screen as shown.

The screen itself can be carefully removed by gently pulling on the orange connecting ribbon. Replacement is the opposite of the removal operation.

 

LED's

Three tiny Light Emitting Diodes (LED’s) sit just under the screen. They are coloured (reading from left to right) Green, Orange, and Red respectively. Their operation is controlled by code contained in the app software.

The LED Cycle app rapidly switches on each LED in turn and then repeats.

 

Image
Image

Four push buttons

The four buttons on the front of the Kookaberry are colour coded and marked A, B, C, and D. They can be programmed to emulate most game controllers and anything else pertinent to the particular app functionality.

In general, Button A is used to Exit apps, and Button B to both switch the Kookaberry on (whilst simultaneously pressing the Reset button on the back) and Run the apps.

Buttons C and D are generally used for navigation around the menu and in-app functionality.

Edge connector

The primary peripheral connection mode is via the plug-in connectors on the back of the board. This edge connector is an alternative way  for the Kookaberry to connect to external circuits and peripherals when plugged into a mating connector on an expansion board.

The edge connector has 38 pins, of which 29 are allocated as follows:

  •       14 GPIO: D0 –D13 Arduino compatible
  •       6 Analogue to Digital Conversion (ADC): A0 – A5 Arduino compatible
  •       2 Digital to Analogue Conversion (DAC) 
  •       1 I2C interface
  •       1 Supplier Programme Interface (SPI)
  •       1 Universal Asynchronous Receiver/Transmitter (UART)
  •       VCC Out: Nominal 3v
  •       VDDA Out: Nominal 3v
  •       Power Supply In: Nominal 3-7v
  •       Status Pin: To indicate when Kookaberry is plugged into another device (eg, a robot)

These pin connections allow the Kookaberry to be fully compatible with both the micro:bit and the Arduino and use any peripherals already bought for these devices.

All of these pins are brought out on jst sockets in AustSTEM's breakout board.

Image Image

Back of the Kookaberry

The following descriptions reference the Kookaberry graphic, and are in anti-clockwise order starting from the top left

Image
Micro USB port

This micro USB connector accepts USB leads that plug into a computer.  It provides access by the computer to the Kookaberry’s memory and  appears to the computer as a USB memory stick.  The Kookaberry will also accept power from this connector.

Important! Always check if it is safe to disconnect the Kookaberry from the computer by clicking on the USB “Safely remove Hardware and eject media” icon in the bottom menu bar of your PC and then clicking on “Eject Kookaberry”. It is safe to remove the Kookaberry if there is no message advising that it is not safe to do so.

If such a message appears, close all the software files in use (ie, the Kookaberry Directory window or the IDE) and try again.

In general, it is safe to disconnect the Kookaberry from a PC if there are no file transfer operations being performed such as viewing an Excel generated data file or connected to the Kookaberry IDE. If data transfer is interrupted in this way, corruption of data within the USB can occur, and data could be lost.

It is easy to recover from this situation by reformatting the USB directory [Link required to instructions} and reloading the contents from a previously saved location.

Important! Total USB supply voltage should be between 4.7 to 5.1 volts.  Damage may result to the Kookaberry if the USB supplied voltage exceeds 5.1 volts.  Also, operation of the Kookaberry may be adversely affected if the USB supplied voltage is less than 4.7 volts.

 

BLE radio

The microcontroller

Kookaberries communicate amongst themselves using a short range radio communications system called Bluetooth Low Energy (BLE). This is similar to the Bluetooth system connecting smartphones and PC’s to similarly equipped devices - but using much less power and without pairing.

The BLE microcontroller is the Nordic nRF52822 ARM-Cortex M0 microcontroller with 256 Kb flash memory and 16 Kb static ram. It is the larger of the two chips at top left of the back of the board.

Currently it operates in packet radio broadcast mode on 2.4 Ghz which means that all Kookaberries within a range of 5-10 metres and operating on the same radio channel (set in the Kappconfig file) will receive the signal and be able to process any data contained within it.

The antenna

The antenna for transmitting (Tx) or receiving (Rx) the signal is etched into the top left hand corner of the back of the board as shown to the right. It looks like a little square wave.

 

Image Image
Image

Front end processor

The Front End Processor (FEP) controls the flow of data and instructions amongst the various elements on the board. It is the traffic cop directing the flow of information around the boards. It is the large chip in the centre of the back of the board.

The FEP is an STM32F103ARM Cortex-M0 microcontroller with 128 Kb of flash memory and 16 Kb static ram.  

It organises the download of MicroPython (*.py) files from a PC into its USB drive (its serial memory (see below).

It is also controls the data flowing back and forth when the Kookaberry Integrated Development Environment (IDE) [ link needed here to IDE explanation] is being used for either the Teachers’ Window [link needed here] or for programming.

USB Memory

This is a serial memory chip capable of storing 4 Megabytes of information. The number of bits it is capable of storing is actually 32 Megabits as there are 8 bits in a byte. It is the little chip just above P4 on the back of the board.

It is organised and works exactly the same as a USB flash drive and is used for both storing the MicroPython source code files and the .csv files containing the data logged by the Kookaberry when in data logging mode.

Micropython source code is loaded as Python text files (name.py) onto the memory by a simple drag and drop operation when the Kookaberry is mounted as a USB drive on a computer.  

Image
Image

Main processor

This is the “brain” of Kookaberry. It is where the algorithms (instructions) in the apps (written in MicroPython), are translated into the chip-specific commands and operations required to make the Kookaberry perform as the app requires.

It is an STM32F091 ARM-Cortex M0 microcontroller having 256 Kb of flash memory and 32 Kb static ram. 

It a provides general purpose inputs and outputs (GPIO) that may be used by the applications together with the interfacing to the other on-board peripherals - being the

It controls the configuration of all the different input and output connections and interfacing with

  • accelerometer / e- compass
  • BLE
  • USB memory (via the FEP)
  • OLED display.

Five Sensor and Peripheral Connectors

These jst connectors are used for input peripherals such as sensors, and output peripherals such as buzzers, loudspeakers, servos, motors, fans, timing, heaters, etc.  The function of each connector is controlled by Kookaberry apps.

The four small 3-pin ones (P1 to P4) are for single sensors or peripherals, whilst the larger, 4-pin, one (P5)  uses an I2C bus protocol which allows control of multiple connected peripherals such as neopixels and for the Real Time Clock

Image
Image

Compass/Magnetometer

This is a combined  accelerometer/magnetometer.

It is a STM LSM303C module which provides a 3D digital linear acceleration sensor and a 3D digital magnetic sensor. When programmed, it can provide features of a tilt-compensated compass, map rotation, position detection, motion-activation, free fall detection, etc. It is a dead reckoning device, and does not provide GPS accuracy.

It measures both acceleration and its position relative to gravity in 3D space - ie along three axis at 90 degrees to one another (x, y, z).

It is the same sort of chip that is in smartphones or tablets to show portrait or landscape modes when the device is rotated.

The accelerometer’s function can be demonstrated by running the BounceMe app.

The magnetometer’s function can be demonstrated by running the Compass app. NOTE: The magnetometer is affected both by nearby magnets and metal objects like the rechargeable battery used with the Kookaberry. Always use the compass at a distance from such things.

 

Power supply

The Kookaberry has a generous and protected power supply which allows voltages to be used from different sources.

  • Default: 5v via micro USB port
  • Auxiliary: 3.7 to 9v via a JST 2-pin battery connector.
  • Edge connector: 3.7 to 9v via a a pin on the edge connector.
Image

It takes an incoming voltage from any of these three sources (simultaneously if required) and converts this into a board power supply voltage of 3.3 volts.

This 3.3 voltage (Vcc) powers all the three  microcontrollers on the Kookaberry as well as peripheral components such as the display, serial random access memory (serial RAM), accelerometer, magnetometer, and LED’s.

The current drain on the incoming power supply is quite small and typically sits at around 20 mA peaking up to around 35 mA when the display is heavily used.

An allowance has been made for the Kookaberry to draw up to around 50 mA under certain operating conditions.

An additional 100 mA has been allocated to power external peripherals associated with operating the Kookaberry including connected sensors. A user of the Kookaberry must consider this when connecting sensors to the board.

MORE →

Image

Reset button

Before code is loaded onto a microcontroller it needs to brought into a known state.  

When running; if code is written to the microcontroller and it hangs up or crashes, a reset is needed to get back to a known condition.  

Two separate reset functions are required on the Kookaberry, and both are triggered when power is first applied.

The Reset button takes the main processor; the radio processor; and the magnetometer/compass processor back to a known state prior to the display being switched by depressing Button B and the Reset Button simultaneously.