Komunikácia a micro:bit: Rozdiel medzi revíziami
Zo stránky SensorWiki
Riadok 54: | Riadok 54: | ||
Ďalšie informácie: | Ď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 | * o programovaní a prístupu k sériovej linke v C++ programoch pre Windows: http://senzor.robotika.sk/ap/blok3.php | ||
<BR> | |||
<BR> | |||
== Bezdrôtový prenos == | == Bezdrôtový prenos == |
Verzia z 22:48, 26. november 2017
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.
Na strane PC však nevieme prijímať dáta priamo v prostredí simulátora, preto potrebujeme špeciálny program. Je ich mnoho, ale len niektoré z nich umožňujú spustenie pod Windows bez administrátorského oprávnenia. My budeme používať tieto dva:
Serial Terminal by Bray
Na testovanie a prvé pokusy so sériovým rozhraním sa vám určite zíde aj nejaký terminálový program, masochisti môžu použiť aj Hyperterminál z Windows. Terminál je jednoduchý program, v ktorom sa zobrazujú všetky prijaté znaky a naopak, je možné nejaké iné znaky odvysielať. Dajú sa samozrejme aj nastaviť základné komunikačné parametre.
- Terminal by Bray++, neinštaluje sa, len spustí.
- Terminal -- lokálna kópia
Ukážka práce s Terminalom vrátane správneho nastavenia parametrov
Serial Plotter
Serial Plotter je trocha sofistikovanejší program ako Terminal, jeho úlohou je zakresliť graficky všetky prijaté informácie. Najjednoduchšie je posielať mu čísla, pričom
Úloha:
Zobrazte v programe SerialPlot všetky tri osi akcelerometra a predveďte, že meria skutočne aj gravitačné zrýchlenie.
Postup:
- vytvorte program v prostredí makecode
- program preneste do micro:bitu
- skontrolujte v správcovi zariadení, aké číslo portu mu pridelil OS Windows (v prípade, že žiaden nevidíte, môže pomôcť vytiahnutie a opätovné pripojenie micro:bitu)
- spustite program Terminal, nastavte komunikačné parametre 115200,n,8,1 a stlačte Connect - v terminálovom okne by ste mali vidieť prijaté znaky. Ak je formát vyhovujúci, pokračujte ďalej
- Nastavte parametre pre grafický program SerialPlot. Zapisujú sa do textového súboru .ini, musíte ho editovať v Notepade alebo podobnom editore. Po spustení programu SerialPlot by ste mali vidieť grafické priebehy
Ď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
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: 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!!!