Bluetooth UART siuntimas iš PC į micro:bit naudojant NodeJS ir makecode.microbit.org

bluetooth
microbit

#1

Kuriantiems programinę įrangą ir nenorintiems gilintis į C++ pasaulį pateikiu šią pamoką, kaip pasiųsti tekstą ir kitus duomenis iš PC į micro:bit’ą naudojant NodeJS ir makecode.microbit.org Scratch aplinką.

Naudojama operacinė sistema Ubuntu. Reikia įdiegti NodeJS ir paketų diegimo priemonę npm.

Naudodami npm įdiegiame NodeJS paketus bbc-microbit ir bluetooth-hci-socket

npm install --no-optional bbc-microbit
npm install --no-optional bluetooth-hci-socket

Programinio kodo pagrindą galima paimti iš bbc-microbit bibliotekos pavyzdžių:
led-text.js

Užtenka pakeisti teksto siuntimo funkciją:

    textBuffer = new Buffer(text, "binary");
    microbit.writeUart(textBuffer, function() {
      console.log('\ttext sent');
      console.log('disconnecting');
      microbit.disconnect();
    });

Dabar sukuriame kodą micro:Bit’ui naudodami makecode.microbit.org redaktorių.
Programos kodą HEX failą galite atsisiųsti iš čia:
https://makecode.microbit.org/_fJt9UyfhwPRD

Atsisiunčiame HEX ir nutempiame jį į micro:Bit diską.

Pastaba - projekto nustatymuose reikia atjungti Bluetooth poravimą pasirenkant parinktį Unsecure Pairing: Anyone can connect via Bluetooth.

Belieka iš Ubuntu terminalo įvykdyti šią komandą:

node send-uart.js

Ekrane prabėgs eilutė “Hello world” :slight_smile:

Tai ir viskas.

P.S. žemiau pateikiu NodeJs programos kodą:

 var BBCMicrobit = require('bbc-microbit'); 

var text = "Hello world!\r\n";

console.log('Scanning for microbit');
BBCMicrobit.discover(function(microbit) {
  console.log('\tdiscovered microbit: id = %s, address = %s', microbit.id, microbit.address);

  microbit.on('disconnect', function() {
    console.log('\tmicrobit disconnected!');
    process.exit(0);
  });

    console.log('connecting to microbit');
    microbit.connectAndSetUp(function() {
    console.log('\tconnected to microbit');


    console.log('sending text: "%s"', text);

    textBuffer = new Buffer(text, "binary");
    microbit.writeUart(textBuffer, function() {
      console.log('\ttext sent');
      console.log('disconnecting');
      microbit.disconnect();
    });
  });
});


#2

Toliau pateikiu kodą, kurio reikia norint siųsti duomenis iš micro:bit į PC.

Hex failas micro:bit’ui yra čia:
https://makecode.microbit.org/_U63YszUmDH3D

Node.JS failas:

var BBCMicrobit = require('bbc-microbit'); 


console.log('Scanning for microbit');
BBCMicrobit.discover(function(microbit) {
  
    console.log('\tdiscovered microbit: id = %s, address = %s', microbit.id, microbit.address);

    microbit.on('disconnect', function() {
       console.log('\tmicrobit disconnected!');
       process.exit(0);
    });

    console.log('connecting to microbit');
    microbit.connectAndSetUp(function() {
        console.log('\tconnected to microbit');

 
       microbit.subscribeUart();
        console.log('Waiting for data');

        microbit.on('uartData', function(data) {
	   console.log(data.toString());
        });

   
  });
});

Toliau reikia atsidaryti terminalą ir įvykdyti komandą:

node receive-uart.js

Spustelėjus micro:bit mygtuką A iš micro:bit pasiunčiamas tekstas, kuris išvedamas kompiuterio konsolėje.

Taigi - jau galime siųsti duomenis iš micro:bit ir juos gauti.

Toliau užsiimsiu micro:bit -> Bluetooth -> REST grandinės kūrimu. Paspaudus mygtuką ant micro:bit’o atsinaujins duomenys kokioje nors interneto svetainėje,


#3

Galbūt pasikeitė bbc-microbit biblioteka, dabar subscribeUart reikalauja callback’o errorams, tai norint, kad veiktų duomenų gavimas iš microbit’o, teks papildyti/pakeist antrojo javascript failo kodą.

microbit.subscribeUart(); į microbit.subscribeUart((e)=>{}); (trumpai tariant į funkcijos parametrus įdedam calback’ą (kuris nieko nedarys, nebent patys keisit, kad darytų).

O šiaip tai, labai ačiū, už užvedimą ant kelio, kaip žaist su bluetooth.