Laborator 11 - UART și Bluetooth BBC Micro: bit

Obiectivele laboratorului

  • Utilizarea protocolului de comunicare UART
  • Conectarea bbc micro: bit la telefon prin Bluetooth

UART

Pentru desfășurarea acestui capitol din cadrul laboratorului, se va folosi VirtualBox. Pentru a conecta plăcuța la mașina virtuală, trebuie instalat Extension Pack și integrat la extensii în VirtualBox.

Conectați micro:bit-ul la mașina virtuală selectand optiunea Devices→USB→Microbit. Dupa care deschdeți un terminal si daca nu aveți deja instalat programul screen tastați comanda următoare:

$sudo apt-get install screen

Următorul pas este să găsiți port-ul la care este conectată plăcuța, folosind comanda:

$ls /dev/ttyACM*

Ar trebui să aveți un output similar cu acesta /dev/ttyACM0 . Ultimul pas este conectarea la serial utilizând comanda:

$sudo screen /dev/ttyACM0 115200

115200 reprezintă viteza citită de către portul serial. Pentru a ieși din screen tastați Ctrl-A, apoi Ctrl-D.

Funcții utile din modulul uart :

  • microbit.uart.init(baudrate=9600, bits=8, parity=None, stop=1, *, tx=None, rx=None) - inițializează comunicarea cu serialul.

bauderate- reprezintă viteza de comunicare cu serialul, acesta poate lua următoarele valori : 9600, 14400, 19200, 28800, 38400, 57600, 115200.

bits- reprezintă numărul de biți care vor fi transmiși.

parity- arată modul de verificare al parității; poate lua valorile: None, microbit.uart.ODD, microbit.uart.EVEN.

stop- reprezintă numarul de biți de oprire, în cazul acestei plăcuțe valoarea este 1.

  • uart.any - returnează True dacă așteaptă date, altfel va returna False.
  • uart.read([nbytes]) - citește biți. Parametrul nbytes este opțional, însă dacă acesta este specificat se vor citi cel mult nbytes.
  • uart.readall() - citește cât de multe date posibile.
  • uart.readinto(buf[, nbytes]) -returnează numărul de biți citiți și stocați în buf sau retunează None la timeout.
  • uart.readline() - citește o linie care se termină cu o nouă linie.
  • uart.write(buf) - scrie buffer-ul.
Exemplu

În exemplul următor vom trimite un mesaj de la micro:bit către calculator. Încărcați codul pe micro: bit, apoi în terminalul de linux, unde ați deschis programul screen veți vedea mesajul Hello from micro: bit .

from microbit import *
 
msg = "Hello from micro: bit"
uart.write(msg)

Trimiterea datelor de la micro: bit către calculator

Dacă nu aveți instalat python pe mașina virtuală, urmați pașii din documentație.

Primul pas este să scriem codul care va fi încărcat pe micro: bit. Programul următor va măsura si afișa temperatura la fiecare secundă.

from microbit import *
while True:
    msg = str(temperature()) + "\n"
    uart.write(msg)
    sleep (100)

Scrieți intr-un fișier python numit serial_exemple.py programul următor:

import serial, time #import the libraries; serial library is used for the connection to micro:bit
port = "/dev/ttyACM0" #port value to connect the computer with micro: bit
baud = 115200
s = serial.Serial(port) #initialize the serial
s.baudrate = baud
while True:
    data = s.readline() # read the lines of data being sent via the serial connection
    print(data)
    time.sleep(1)

Pentru a executa programul trebuie să instalți pyserial folosind comanda de mai jos.

sudo pip3 install pyserial

Rulați fișierul python scris anterior cu comanda:

$sudo python3 serial_exemple.py

Exerciții

  1. Scrieți un program în Python, care trimite către calculator la un interval de 2 secunde cate o valoare a parametrilor ambientali(temperatură, luminozitate, nivelul de zgomot)). Exemplu(temperature: 20)
  2. Scrieți un program în Python, care anunță calculatorul printr-un mesaj, dacă de pe micro:bit au fost apăsate logo-ul sau butoanele, iar dacă plăcuța a fost scuturată programul va opri execuția.
  3. Simulare Chatbot. Scrieți un program cu următoarele funcționalități:
  • La inceputul programului trimite către utilizator (în screen) un mesaj salut, ex: Hello!.
  • În cazul in care micro:bit-ul este scuturat, chatbot-ul trimite un mesaj “Can't respond!”
  • Utilizator poate trimite mesaje standard pentru a afla valorile parametrilor ambientali. De exemplu, dacă utilizatorul întroduce textul light chatbot-ul va returna valoarea nivelului de lumină înregistrat de către micro:bit. Comenzi asemănătoare și pentru restul parametrilor (ex: temperature, sound, compass, accelerometer)
  • Activarea alarmei: atunci cand utilizatorul introduce mesajul “Alarm on”, micro:bit-ul va incepe sa lumineze timp de 2 secunde si sa redea o melodie din cadrum biblioteciimusic.
  • Pentru a încheia “conversația ” cu chatbot-ul, utilizatorul va trimite mesajul “Goodbye ”. Chatbot-ul va trimite același mesaj.

Bluetooth

Folosind seviciile bluetooth, putem utiliza următoarele funcții:

  • bluetooth.on_bluetooth_connected() - acesta pornește un event handler care rulează atâta timp cât microȘbit-ul este conectat de la Bluetooth.
  • bluetooth.on_bluetooth_disconnected() - acesta pornește un event handler care rulează atâta timp cât microȘbit-ul este deconectat de la Bluetooth.
  • bluetooth.start_accelerometer_service() - serviciul pentru accelerometru permite unui alt dispozitiv, de exemplu smartphone, să primească fără fir date de la accelerometrul micro: bit-ului. Un accelerometru detectează mișcarea.
  • bluetooth.start_button_service() - serviciul cu butoane face posibil ca un alt dispozitiv, de exemplu un smartphone, să fie notificat fără fir ori de câte ori este apăsat un buton din partea frontală a micro: bit-ului.
  • bluetooth.start_led_service() - serviciul cu LED-uri permite unui alt dispozitiv, cum ar fi un smartphone, să trimită șiruri de text scurte sau modele printr-o conexiune Bluetooth către un micro: bit pentru afișare pe matricea sa de LED-uri.
  • bluetooth.start_temperature_service() - serviciul de temperatură Bluetooth, transformă smartphone-ul sau tableta într-un termometru grafic folosind micro: bit ca senzor.

Pairing

Întâi de toate, se recomandă să încărcăm pe placuță fisierul .hex dintr-un program scris în MakeCode. Scrieți un program, care afișează o imagine pe display-ul micro:bit-ului, ca în exemplul următor:

basic.show_icon(IconNames.HAPPY)

Următorul pas este să instalăm aplicația micro:bit pe telefon Android iOS. Deschideți aplicația de pe telefonul mobil și selectați “Pair”, apoi apăsați pe “PAIR A NEW MICRO:BIT”. Permiteți aplicației să acceseze Bluetooth. Apăsați simultan pe butoanele A și B, apoi apăsați și eliberați butonul de RESET. Țineți apăsat pe butoanele A și B până când veți vedea pe display semnul ce reprezentativ pentru bluetooth. Pe ecranul micro:bit-ului va apărea un model pe care trebuie să-l reproduceți pe telefon.

Dacă întâmpinați probleme în accesarea bluetooth-ului de pe plăcuță opriți alimentarea micro:bit-ului de la calculator și conectați plăcuța la bateria din kit.

Crearea unui program din aplicație

Adăugați extensia pentru bluetooth în MakeCode din meniu apăsând “Extensions”, apoi alegeți extensia dorită. Pentru că plăcuța este conectată prin bluetooth la telefon, prin intermediul aplicației, se pot scrie programe, care pot rula pe micro: bit.

Exercițiu

Din meniul aplicației apăsați pe “Create code”, apoi veți avea deschis editorul de cod. Scrieți un cod în Python, care la apăsarea logo-ului afișează pe display-ul micro:bit-ului un număr random de la 0 la 9.

Este posibil ca micro:bit-ul să nu fie detectat de către aplicație, în unele situații. În acest caz intrați în setările telefonului la Bluetooth, apăsați pentru Unpair BBC micro:bit, apoi reluați pașii anteriori.

Servicii Bluetooth

Exemplu

Pentru început vom scrie un program simplu în care vom verifica dacă microcontrolerul este conectat sau nu la bluetooth, accesând extensia adăugată anterior. Vom utiliza on_bluetooth_connected și on_bluetooth_disconnected. Încărcați programul următor pe micro: bit porniți bluetooth-ul atât pe plăcuță, cât și pe telefon.

def on_bluetooth_connected():
    basic.show_icon(IconNames.HAPPY)
bluetooth.on_bluetooth_connected(on_bluetooth_connected)
 
def on_bluetooth_disconnected():
    basic.show_icon(IconNames.SAD)
bluetooth.on_bluetooth_disconnected(on_bluetooth_disconnected)

Bitty Blue

Bitty Blue este o aplicație pentru iOS și Android care permite conectarea cu dispozitivul BBC micro:bit prin Bluetooth. Instalați pe telefon aplicația pentru Android sau iOS.

Exemplu

În exemplu următor vom utiliza busola. Încărcați codul următor pe plăcuță, apoi conectați-o prin bluetooth la aplicația Bitty Blue apăsând pe butonul Scan. După conectare alegeți din meniul aplicației Compass unde veți putea vedea în timp real coordonatele micro: bit-ului pe busolă.

def on_bluetooth_connected():
    basic.show_icon(IconNames.HAPPY)
bluetooth.on_bluetooth_connected(on_bluetooth_connected)
 
def on_bluetooth_disconnected():
    basic.show_icon(IconNames.SAD)
bluetooth.on_bluetooth_disconnected(on_bluetooth_disconnected)
 
input.calibrate_compass()
bluetooth.start_magnetometer_service()

Exercițu

  1. Scrieți câte un program, care accesează funcționalitățile disponibile din cadrul aplicației Bity Blue și observați cum intercaționează cu plăcuța. (polysquiggle, display control, animal magic).
sde2/laboratoare/11_microbit_ro.txt · Last modified: 2021/05/26 14:21 by ioana_maria.culic
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0