
micro:bit UART Terminal
Bluetooth Terminal for micro:bit devices
Ferdinand Stueckler · com.ble.microbit.uart
UpdatedJun 4, 2024
PublishedApr 20, 2021
Packagecom.ble.microbit.uart
MD52052eb2f16d747f0b28301b4b7e74787
SHA1 (signer)2E:D3:9A:09:70:CF:0D:24:4B:DE:52:14:61:14:A6:9B:AF:C1:87:82
Signed byCN=Ferdinand Stueckler
Malware scanTRUSTED
Websitehttp://lehrer.bulme.at/~sk
Contact[email protected]
What's new
HEX mode
Description
This app communicates between Android and a micro:bit device. You can transmit and receive text in 'notification' or 'indication' mode. The UART communication also has to be implemented at the micro:bit device (Block, Javascript, MBED).
Options:
- Indication: Default micro:bit mode (otherwise notification mode)
- LF: Linefeed added
- CR: Carriage return added
Requirements:
- Min. Android 5
- Bluetooth Low Energy (BLE)
- Paired devices
- micro:bit programm (developed by yourself)
V 2.1: Copy to Clipboard (Option Menu)
V 2.2: Clear List (Option Menu), No Log Option
V 2.5: Hex Mode
MBED example:
#include "MicroBit.h"
#include "MicroBitUARTService.h"
#include "BMP180.h"
MicroBit uBit;
MicroBitUARTService *uart;
BMP180 bmp180(P0_30, P0_0);
char buffer[80];
float pressure,temperature;
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)
{
uBit.display.scroll(buffer);
}
void onButtonB(MicroBitEvent e)
{
uBit.display.scroll("SK");
}
/*
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()
{
bmp180.Initialize(64, BMP180_OSS_ULTRA_LOW_POWER);
pressure = -1;
temperature = -1;
if (bmp180.ReadData(&temperature,&pressure))
sprintf(buffer, "%.2f C %4.0f hPa", temperature, pressure);
else
sprintf(buffer,"NOK");
// 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);
uart = new MicroBitUARTService(*uBit.ble, 32, 32);
uBit.display.scroll(":)");
while(1)
{
pressure = -1;
temperature = -1;
if (bmp180.ReadData(&temperature,&pressure))
sprintf(buffer, "%.2f C %4.0f hPa", temperature, pressure);
else
sprintf(buffer,"NOK");
if (!connected) {
uBit.sleep(500);
}
else
{
uart->send(buffer);
uBit.sleep(1000);
}
}
release_fiber();
}
Options:
- Indication: Default micro:bit mode (otherwise notification mode)
- LF: Linefeed added
- CR: Carriage return added
Requirements:
- Min. Android 5
- Bluetooth Low Energy (BLE)
- Paired devices
- micro:bit programm (developed by yourself)
V 2.1: Copy to Clipboard (Option Menu)
V 2.2: Clear List (Option Menu), No Log Option
V 2.5: Hex Mode
MBED example:
#include "MicroBit.h"
#include "MicroBitUARTService.h"
#include "BMP180.h"
MicroBit uBit;
MicroBitUARTService *uart;
BMP180 bmp180(P0_30, P0_0);
char buffer[80];
float pressure,temperature;
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)
{
uBit.display.scroll(buffer);
}
void onButtonB(MicroBitEvent e)
{
uBit.display.scroll("SK");
}
/*
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()
{
bmp180.Initialize(64, BMP180_OSS_ULTRA_LOW_POWER);
pressure = -1;
temperature = -1;
if (bmp180.ReadData(&temperature,&pressure))
sprintf(buffer, "%.2f C %4.0f hPa", temperature, pressure);
else
sprintf(buffer,"NOK");
// 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);
uart = new MicroBitUARTService(*uBit.ble, 32, 32);
uBit.display.scroll(":)");
while(1)
{
pressure = -1;
temperature = -1;
if (bmp180.ReadData(&temperature,&pressure))
sprintf(buffer, "%.2f C %4.0f hPa", temperature, pressure);
else
sprintf(buffer,"NOK");
if (!connected) {
uBit.sleep(500);
}
else
{
uart->send(buffer);
uBit.sleep(1000);
}
}
release_fiber();
}
Required features
- Bluetooth android.hardware.bluetooth
- Faketouch android.hardware.faketouch
- Location android.hardware.location
Permissions (4)
micro:bit UART Terminal requests the following Android permissions:
- Access Coarse Location android.permission.ACCESS_COARSE_LOCATION
- Access Fine Location android.permission.ACCESS_FINE_LOCATION
- Bluetooth android.permission.BLUETOOTH
- Bluetooth Admin android.permission.BLUETOOTH_ADMIN