micro:bit Gateway

free


not available



This app establishes a channel between two micro:bit devices. The channel will be handeled as UART communication. You have to develope a programm on each micro:bit device with UART transfer.Indication aktive: BLE Indication (Default)Indication inaktive: BLE Notification
Silent aktive: No visual loggingSilent inaktive: Logging
Requirements:- Min. Android 4.4- Bluetooth Low Energy (BLE)- Paired devices- micro:bit programm (developed by yourself)
MBED example:
#include "MicroBit.h"#include "MicroBitUARTService.h"
MicroBit uBit;MicroBitUARTService *uart;
int connected = 0;
void onConnected(MicroBitEvent e){ uBit.display.scroll("C"); connected = 1; }
void onDisconnected(MicroBitEvent e){ uBit.display.scroll("D"); connected = 0;}
void onButtonA(MicroBitEvent e){ if (connected == 0) { uBit.display.scroll("NC"); return; } uart->send("Yes"); uBit.display.scroll("Y");}
void onButtonB(MicroBitEvent e){ if (connected == 0) { uBit.display.scroll("NC"); return; } uart->send("No"); uBit.display.scroll("N");}
void onButtonAB(MicroBitEvent e){ if (connected == 0) { uBit.display.scroll("NC"); return; } uart->send("SK"); uBit.display.scroll("SK");}
void processBLEUart() { uint8_t readBuf[22]; while (1) { // loop for ever if ((!connected) || (!uart->isReadable())) { uBit.sleep(50); // wait 50mS and check again continue; // loop; } //else we are connected AND there is some input to read if (uart->isReadable()) { while (uart->isReadable()) { int charCount = uart->read(readBuf, 22, ASYNC); if (charCount != 0) { for (int i = 0; i < charCount; i++) uBit.display.scroll((char) readBuf[i]); } } } }}
/*IMPORTANT !!!Oherwise you will run out of memory !
Recommend disabling the DFU and Event services in MicroBitConfig.h since they are not needed here:microbit->microbit-dal->inc->core->MicroBitConfig.h
#define MICROBIT_BLE_DFU_SERVICE 0#define MICROBIT_BLE_EVENT_SERVICE 0#define MICROBIT_SD_GATT_TABLE_SIZE 0x500*/
int main(){ // Initialise the micro:bit runtime. uBit.init();
uBit.messageBus.listen(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_CONNECTED, onConnected); uBit.messageBus.listen(MICROBIT_ID_BLE, MICROBIT_BLE_EVT_DISCONNECTED, onDisconnected); uBit.messageBus.listen(MICROBIT_ID_BUTTON_A, MICROBIT_BUTTON_EVT_CLICK, onButtonA); uBit.messageBus.listen(MICROBIT_ID_BUTTON_B, MICROBIT_BUTTON_EVT_CLICK, onButtonB); uBit.messageBus.listen(MICROBIT_ID_BUTTON_AB, MICROBIT_BUTTON_EVT_CLICK, onButtonAB);
uart = new MicroBitUARTService(*uBit.ble, 32, 32); uBit.display.scroll("Go"); create_fiber(&processBLEUart); // create fiber and schedule it.
release_fiber();}