Komunikácia a micro:bit 2023: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace |
dBez shrnutí editace |
||
Riadok 31: | Riadok 31: | ||
<BR> | <BR> | ||
'''Úloha 1: Obojstranná sériová komunikácia''' <BR> | '''Úloha 1: Obojstranná sériová komunikácia''' <BR> | ||
Zobrazte v programe [https://sekigon-gonnoc.github.io/web-serial-plotter/ Web Serial Plotter] všetky tri osi akcelerometra a pridajte aj reakciu na | Zobrazte v programe [https://sekigon-gonnoc.github.io/web-serial-plotter/ Web Serial Plotter] všetky tri osi akcelerometra a pridajte aj reakciu na aspoň jeden príkaz odvysielaný z PC (napríklad po prijatí textu 'Ahoj' sa na displeji na 3 sekundy objaví nejaký obrázok). Počas vysielania by malo byť na displeji tiež niečo aktívne zobrazené, aby sme videli, že vysielanie prebieha. '''Dôležité:''' komunikácia má prebiehať rýchlosťou 9600 Bd! | ||
Postup:<BR> | Postup:<BR> |
Aktuálna revízia z 19:07, 3. december 2024
Ovládač pre Windows
Terminály v browseri, fungujú len v Chrome alebo Edge s využitím WebSerial API (https://github.com/svendahlstrand/web-serial-api):
- Web Serial Plotter https://sekigon-gonnoc.github.io/web-serial-plotter/ na kreslenie grafov
- Web Serial Terminal https://serial.capuf.in/ textový terminál na kontrolu
Sériová linka
Teória a podrobnejšie informácie o sériovej linke: RS-232.
Programovanie komunikácie v micro:bite je pomerne jednoduché pomocou blokov z knižnice Serial. Vyskúšajte:
Dáta vieme posielať cez USB rozhranie, ktorým je micro:bit pripojený k počítaču. Okrem toho, že micro:bit sa tvári
ako USB disk pripojený k počítaču a je cez toto rozhranie aj napájaný, vieme vytvoriť virtuálny sériový port, ktorý
sa potom objaví aj v Správcovi zariadení - budeme ho potrebovať, aby sme zistili, aké číslo portu priradil operačný
systém:
Programovanie micro:bitu potom spočíva vo volaní blokov z knižnice Serial.
Úloha 1: Obojstranná sériová komunikácia
Zobrazte v programe Web Serial Plotter všetky tri osi akcelerometra a pridajte aj reakciu na aspoň jeden príkaz odvysielaný z PC (napríklad po prijatí textu 'Ahoj' sa na displeji na 3 sekundy objaví nejaký obrázok). Počas vysielania by malo byť na displeji tiež niečo aktívne zobrazené, aby sme videli, že vysielanie prebieha. Dôležité: komunikácia má prebiehať rýchlosťou 9600 Bd!
Postup:
- vytvorte program v prostredí makecode:
- program má pomocou príkazov Serial_Write_Line poslať do PC tri reťazec v nasledovnom tvare: "accX:217,accY:1023,accz:-25\n" na konci má byť nový riadok (musíme použiť príkaz Serial_Write_Line a nie Serial_Write_String).
- program preneste do micro:bitu
- spustite Web Serial Plotter, nastavte komunikačné parametre 9600,n,8,1 a stlačte Connect - v terminálovom okne by ste mali vidieť
grafy prijímaných dát.
Program by mohol vyzerať napríklad takto nejako
ale textový reťazec sa žiaľ nedá poskladať takto jednoducho, musíte použiť príkaz Join, ako napr. na tomto obrázku
Bezdrôtový prenos
Bezdrôtový prenos medzi dvoma micro:bitmi je realizovaný pomocou špeciálneho firemného protokolu, ktorý sa však pomocou blokov v knižnici Radio realizuje veľmi jednoducho. Najprv treba nastaviť číslo skupiny v ktorej bude modul komunikovať, číslo 1 je na cvičení vyhradené pre učiteľa, ostatní použijú pridelené číslo.
Potom používame dve funkcie: radio_send_number, ktorá na danom kanáli odvysiela príslušné číslo z argumentu a on_radio_received, ktorá vyvolá príslušnú akciu vždy, keď je prijatý rádiový paket. Výsledok príjmu máte k dispozícii v premennej.
Pri použití komunikácie v simulátore sa objaví druhý modul, ktorý je však naprogramovaný rovnako ako prvý. Vyskúšajte vyššie uvedený program. Jeho funkcia spočíva vo výmene hodôt zrýchlenia v osi x medzi dvoma microbitmi, pričom pohyb prvého sa zobrazuje ako stĺpcový graf na druhom a naopak. Zároveň sa údaje zobrazujú aj graficky v simulátore.
Úloha 2: Skúška komunikácie
Spoločne so susedom si vyskúšajte vyššie uvedený program a potom ho modifikujte nasledovne: po stlačení tlačidla A sa u suseda objaví na displeji veselý smajlík,
pri stlačení B smutný smajlík.
Úloha 3: Schôdzka naslepo.
Zistite, ktorý spolužiak má rovnaké číslo ako vy. Naprogramujte micro:bit, aby na pridelenom kanáli vysielal vaše meno (alebo nick), a zároveň na tom istom kanáli počúvajte, či niekto nevysiela svoje meno. Zobrazte si prijatý reťazec a vyplňte správne dvojicu vysielač / prijímač. Za správne spárovanie získate 2 body. Ak si myslíte, že váš program je správny a chyba je len v protistrane, potom môžete využiť služby verejného majáku na kanáli č. 1. Ten vysiela nepretržite a tak zistíte, či vám program funguje.
Namiesto funkcie radio_send_number použite blok radio_send_string.
Neoprávnené vysielanie na cudzom kanáli, obzvlášť na č. 1, bude potrestané odpočítaním 10 bodov!!!
Ďalšie informácie:
- o programovaní a prístupu k sériovej linke v C++ programoch pre Windows: http://senzor.robotika.sk/ap/blok3.php