Daiktų interneto integravimas e-mokymosi sistemose

microbit

#1

Sveiki,

Šiuo metu rašau magistro darbą apie daiktų interneto integravimą e-mokymosi sistemose.

Kuriu tinklą kurį sudaro keli micro:bit mikrovaldikliai, MQTT tinklų sietuvas, Moodle e-mokymosi aplinka , mokytojo nešiojamasis kompiuteris ir maršrutizatorius.

Šiuo metu sprendžiu BLE ir MQTT ryšio klausimus. Gal kas darėte BLE -> interneto tinklų sietuvą (angl. gateway)? Iš pradžių galvojau vietoj MQTT naudoti CoAP, nes jis artimas REST’ui. Tačiau pastebiu, kad populiaresni sprendimai yra su MQTT. Todėl matyt bus Mosquitto ir Eclipse Paho.

Taip pat yra minčių BLE->WiFi realizuoti naudojant ESP8266, prijungtą prie microbit’o per nuoseklųjį prievadą.

Idėjų daiktų internetui pritaikyti e. mokymuose turiu begalo daug. Jei yra kokių bendraminčių - mielai kviečiu pasikalbėti ar sudalyvauti praktiniame magistrinio darbo eksperimente :slight_smile:

Iki.


#2

Šią savaitę vyko pirmieji MQTT protokolo bandymai “Windows” platformoje. Geriau jau būčiau viską daręs “Ubuntu” - vargai su priklausomybėmis, begalinis stackoverflow skaitymas užsirovus ant kompiliavimo/diegimo/suderinamumo problemų :smiley:

Įdiegta mosquitto MQTT brokerio programinė įranga, BLEUART -> UDP sietuvas ir MQTT-SN->MQTT sietuvas. MQTT paketams stebėti naudojama programa MQTT-SPY.

Micro:bit kodo pagrindą sudaro kodas iš https://github.com/kartben/microbit-mqttsn-ble
Norint sukompiliuoti micro:bit platformai skirtas C++ programas buvo naudojamas yotta priklausomybių tvarkytuvas.

yotta clean
yotta build

Po to sugeneruotą HEX failą tempiame Windows Explorer’yje iš aplanko build\bbc-microbit-classic-gcc\source į micro:bit’o diską.

Kodas susikėlė į micro:bit’ą ir, atrodė, nieko nevyksta - juodas ekranas. Todėl main.cpp papildžiau teksto į LED išvedimu, kad bent jau būtų aišku, kad micro:bit veikia.

Antasis žingsnis BLEUART to UDP sietuvo https://github.com/kartben/ble-uart-to-udp bandymas. Sietuvas rašytas su Node.js, deja į Windows konsolę išveda nesibaigiančius įspėjimus noble warning unknown peripheral

Norint to išvengti reikia paleisti bbowl.js šitaip:
node.js --harmony bbowl.js

P.S. Daug laiko gaištasi sprendžiant bibliotekų suderinamumo problemas, teko įsidiegti C++ “Visual Studio 2017”. Reikės pabandyti visą aplinką įdiegti Linux aplinkoje - tikriausiai bus greičiau ir paprasčiau.


#3

Taigi - kaip ir reikėjo tikėtis kurti daiktų internetui “Windows” platformoje yra pragaras.
Naudodamas USB tvarkyklės pakeitimo programą Zadig sugadinau Windows’us taip, kad Bluetooth atsirado tik perinstaliavus operacinę sistemą (jokie tvarkyklių perdiegimai nepadėjo).

Dabar viską darau Ubuntu, viskas kiek geriau suderinta (jokių Zadig ir Microsoft Visual Studio :D) ir darbai po truputį juda pirmyn. Matau micro:Bit iš Node.js!

Ubuntu 16 dabar įdiegta virtualioje mašinoje Virtualbox. Naudoju išorinį USB Bluetooth 4.0 adapterį (būtinai turi palaikyti BLE), kurį bet kada galiu fiziškai atjungti ir prijungti - patogu, kai kas nors užstringa, be to šis bevardis adapteris turi mirksinčias lemputes ir matosi jo aktyvumas.

Bibliotekų tarpusavio priklausomybių raizgalynė. Vėl teko sudiegti bluez, bluez-tools, Node.js su npm ir nvm, yotta, mosquitto, mosquitto-spy (čia su Java buvo vargo - naudokite javą iš Oracle), wireshark (bluetooth srauto stebėjimui), bibliotekas ARM platformai.

Daugiausia sugaišau laiko dėl micro:Bit Bluetooth ir Ubuntu poravimo (pairing). Jei įjungtas įprastinis poravimas Ubuntu neleidžia iki galo suporuoti abu įrenginius - todėl autentifikaciją naudojant PIN teko atjungti. Prie šitos problemos grįšiu, kai išspręsiu kitą, didesnę problemą - nestabilų Bluetooth ryšį.

Suporavus prietaisus jie susijungia, tačiau po keliasdešimt sekundžių microbit ir Ubuntu ryšys nutrūksta. Ši problema kyla net su programomis rašytomis naudojant https://makecode.microbit.org/ ir jos Bluetooth biblioteką. Pridėjus Bluetooth biblioteką reikia nepamiršti projekto nustatymuose nurodyti Unsecure pairing: Anyone can connect via Bluetooth.

Taigi - didžiausios problemos:
1) nestabilus ryšys, (bandyti pakeisti Bluetooth adapterį kitu???)
2) neveikia pairingas naudojant PIN.

Džiaugsmai:

  1. matau microbit iš Node.js, galiu matyti Bluetooth servisus.

Kol kas tiek.


#4

Išspręsta pairingo su PIN problema. Iš Windows’ų bluetooth pairingas veikė puikiai.

Norint suporuoti microbit ir Ubuntu 16 reikia Ubuntu atlikti šiuos veiksmus:

bluetoothctl -a
[NEW] Controller 00:15:83:12:16:08 vagrant-VirtualBox [default]
[NEW] Device FA:A4:8D:79:56:85 BBC micro:bit [zatag]
Agent registered
[bluetooth]# power on
[CHG] Controller 00:15:83:12:16:08 Class: 0x0c0000
Changing power on succeeded
[CHG] Controller 00:15:83:12:16:08 Powered: yes
[bluetooth]# agent on
Agent is already registered
[bluetooth]# default-agent
Default agent request successful
[bluetooth]# scan on
Discovery started
[CHG] Controller 00:15:83:12:16:08 Discovering: yes
[CHG] Device FA:A4:8D:79:56:85 RSSI: -46
[CHG] Device FA:A4:8D:79:56:85 Name: BBC micro:bit
[CHG] Device FA:A4:8D:79:56:85 Alias: BBC micro:bit
[CHG] Device FA:A4:8D:79:56:85 RSSI: -77
[CHG] Device FA:A4:8D:79:56:85 RSSI: -46
[CHG] Device FA:A4:8D:79:56:85 Name: BBC micro:bit [zatag]
[CHG] Device FA:A4:8D:79:56:85 Alias: BBC micro:bit [zatag]
[CHG] Device FA:A4:8D:79:56:85 RSSI: -56
[bluetooth]# pair FA:A4:8D:79:56:85
Attempting to pair with FA:A4:8D:79:56:85
[CHG] Device FA:A4:8D:79:56:85 Connected: yes
Request passkey

micro:bit ekranėlyje matome nupieštą rodyklę. Spaudžiame mygtuką A ir suvedame prabėgantį PIN kodą:

[agent] Enter passkey (number in 0-999999): 058467
[CHG] Device FA:A4:8D:79:56:85 Paired: yes
**Pairing successful**

#5

Parašiau į micro:Bit’ų supportą dėl Ubuntu ir micro:Bit pairing’o problemų.

Hello,

I cannot pair micro:bit with Ubuntu 16.

Steps to reproduce:

  1. In web browser, open https makecode microbit org/
  2. go to Settings/Add package and add Bluetooth services package.
  3. click on Project settings and make sure Passkey pairing is selected.
  4. Create some simple code which uses Bluetooth: e.g.

bluetooth.onBluetoothConnected(() => {
basic.showString(“C”)
})
bluetooth.onBluetoothDisconnected(() => {
basic.showString(“D”)
})

  1. Download hex file to micro:bit

  2. On Ubuntu click Applications/ Bluetooth. Ensure that the Bluetooth is on.

  3. On micro:bit:
    On your micro:bit hold the A and B buttons, at the same time press and release RESET – this will send your micro:bit into Pairing Mode and it will display a pattern

  4. On Device search click ‘BBC micro:bit [zatag]’ device. Click Pin Options and ensure that “Automatic PIN selection” is selected. Click Next.

  5. On ubuntu “Connecting to BBC micro:bit [zatag]” is displayed for a few seconds. On micro:bit: nothing happens.

  6. Then error message “Setting up ‘BBC micro:bit [zatag]’ failed” is displayed.

I have tried to google various solutions on stackoverflow - no easy GUI way to pair devices was found.

I can easily pair my Android phones with Ubuntu, and Android with micro:Bit. However no way to pair Ubuntu and micro:bit.

Please help.

Marijus Bernotas
Vilnius, Lithuania

P.S. Currently I am developing BLE->REST gateway solution for classroom to use micro:bit as IoT device.


#6

Užkliuvau svetainę, kur kalbama apie BBC poravimą su raspberry - gal pravers :wink: