Operácie

Komunikácia a micro:bit 2023: Rozdiel medzi revíziami

Z SensorWiki

 
(6 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 6: Riadok 6:
 
Terminály v browseri, fungujú len v Chrome alebo Edge s využitím WebSerial API (https://github.com/svendahlstrand/web-serial-api):
 
Terminály v browseri, fungujú len v Chrome alebo Edge s využitím WebSerial API (https://github.com/svendahlstrand/web-serial-api):
  
* https://serial.capuf.in/
+
* Web Serial Plotter https://sekigon-gonnoc.github.io/web-serial-plotter/ na kreslenie grafov
* https://googlechromelabs.github.io/serial-terminal/
+
* Web Serial Terminal https://serial.capuf.in/ textový terminál na kontrolu
* https://bipes.net.br/aroca/web-serial-terminal/
 
* https://webserial.io/?vid=0d28&pid=0204
 
* https://www.anticyclone-systems.co.uk/aslwebterm.php
 
* https://www.serialterminal.com/
 
  
 
+
== '''Sériová linka''' ==
* https://labs.vaadin.com/plotser/
 
 
 
== Sériová linka ==
 
  
 
Teória a podrobnejšie informácie o sériovej linke: [http://senzor.robotika.sk/ap/texty/rs232.php RS-232].
 
Teória a podrobnejšie informácie o sériovej linke: [http://senzor.robotika.sk/ap/texty/rs232.php RS-232].
Riadok 34: Riadok 27:
  
 
Programovanie micro:bitu potom spočíva vo volaní blokov z knižnice Serial.  
 
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 ===
 
 
[[Súbor:IconTerminal.png|left]] 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.
 
 
* [https://sites.google.com/site/terminalbpp/ Terminal by Bray++], neinštaluje sa, len spustí.
 
* [http://senzor.robotika.sk/zp/Terminal.exe Terminal] -- lokálna kópia
 
 
 
[[Súbor:TerminalExample.png]]
 
 
Ukážka práce s Terminalom vrátane správneho nastavenia parametrov
 
 
=== Serial Plotter ===
 
 
[[Súbor:IconSerialPlotter.png|left]] 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 ich môže byť aj viac, oddelených čiarkami. Každá jedna n-tica hodnôt musí končíť znakom pre nový riadok. V knižnici Serial použite bloky Serial Write Number pre čísla, Serial Write String pre čiarky a Serial Write Line pre ukončenie riadka. Neposielajte hodnoty príliš často, aby sa nepreplnil vstupný buffer.
 
* [https://hackaday.io/project/5334-serialplot-realtime-plotting-software Domovská stránka programu]
 
* [http://senzor.robotika.sk/zp/serialplot.zip Lokálna kópia]
 
 
<BR><BR>
 
 
[[Súbor:SerialPlotter01.png]]
 
  
 
<BR>
 
<BR>
 
<BR>
 
<BR>
'''Úloha:''' <BR>
+
'''Úloha 1: Obojstranná sériová komunikácia''' <BR>
Zobrazte v programe SerialPlot všetky tri osi akcelerometra a predveďte, že meria skutočne aj gravitačné zrýchlenie.
+
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+n 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 4800 Bd!
  
 
Postup:<BR>
 
Postup:<BR>
 
* vytvorte program v prostredí makecode:
 
* vytvorte program v prostredí makecode:
** program má pomocou príkazov Serial_Write_Number poslať do PC tri čísla -- zrýchlenie v osi x-, y- a z-. Čísla majú byť oddelené čiarkou (Serial_Write_String) a na konci má byť nový riadok (Serial_Write_Line).
+
** 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
 
* 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 [https://sekigon-gonnoc.github.io/web-serial-plotter/ Web Serial Plotter], nastavte komunikačné parametre 9600,n,8,1 a stlačte Connect - v terminálovom okne by ste mali vidieť  
* 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, odpojte port (Disconnect) a pokračujte ďalej
+
grafy prijímaných dát.
* Nastavte parametre pre grafický program SerialPlot. Po spustení programu SerialPlot by ste mali vidieť grafické priebehy.
+
 
 +
<BR>
 +
<BR>
 +
Program by mohol vyzerať napríklad takto nejako
  
 +
[[Súbor:microbitSerialExample01.png|center|800px]]
  
 +
ale textový reťazec sa žiaľ nedá poskladať takto jednoducho, musíte použiť príkaz Join, ako napr. na tomto obrázku
  
 +
[[Súbor:microbitSerialJoinExample.png|center|300px]]
  
  
Riadok 81: Riadok 55:
 
<BR>
 
<BR>
  
== Bezdrôtový prenos ==
+
== '''Bezdrôtový prenos''' ==
  
 
Bezdrôtový prenos medzi dvoma micro:bitmi je realizovaný pomocou špeciálneho firemného protokolu, ktorý sa však pomocou  
 
Bezdrôtový prenos medzi dvoma micro:bitmi je realizovaný pomocou špeciálneho firemného protokolu, ktorý sa však pomocou  
Riadok 97: Riadok 71:
 
a naopak. Zároveň sa údaje zobrazujú aj graficky v simulátore.  
 
a naopak. Zároveň sa údaje zobrazujú aj graficky v simulátore.  
  
 +
'''Úloha 2: Skúška komunikácie '''<BR>
 +
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: Schôdzka naslepo. '''<BR>
+
 
 +
 
 +
'''Úloha 3: Schôdzka naslepo. '''<BR>
 
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.  
 
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.  
  
Riadok 104: Riadok 83:
  
 
'''Neoprávnené vysielanie na cudzom kanáli, obzvlášť na č. 1, bude potrestané odpočítaním 10 bodov!!!'''
 
'''Neoprávnené vysielanie na cudzom kanáli, obzvlášť na č. 1, bude potrestané odpočítaním 10 bodov!!!'''
 
<!--
 
 
Príloha: Konfiguračný súbor pre program SerialPlotter
 
 
<source lang="ini">
 
[MainWindow]
 
size=@Size(927 689)
 
pos=@Point(218 102)
 
activePanel=Port
 
hidePanels=false
 
maximized=false
 
state=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\0\0\0\x3\x9f\0\0\x2n\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x1\0\0\0\x2\0\0\0\x3\0\0\0\f\0t\0\x62\0P\0l\0o\0t\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x1a\0t\0\x62\0P\0o\0r\0t\0\x43\0o\0n\0t\0r\0o\0l\x1\0\0\0\xb0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x10\0t\0\x62\0R\0\x65\0\x63\0o\0r\0\x64\x1\0\0\x1\xcf\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
 
 
[Port]
 
selectedPort=COM8
 
baudRate=115200
 
parity=none
 
dataBits=8
 
stopBits=1
 
flowControl=none
 
 
[DataFormat]
 
format=ascii
 
 
[DataFormat_Binary]
 
numOfChannels=4
 
numberFormat=uint8
 
endianness=little
 
 
[DataFormat_ASCII]
 
numOfChannels=3
 
 
[DataFormat_CustomFrame]
 
numOfChannels=1
 
numberFormat=uint8
 
endianness=little
 
frameStart=AA BB
 
fixedSize=false
 
frameSize=1
 
checksum=false
 
debugMode=false
 
 
[Channels]
 
channel\1\name=Zrychlenie X
 
channel\1\color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0VV\0\0)
 
channel\1\visible=true
 
channel\2\name=Zrychlenie Y
 
channel\2\color=@Variant(\0\0\0\x43\x2\xff\xff-o\xc7\xf5\xff\xff\0\0)
 
channel\2\visible=true
 
channel\3\name=Zrychlenie Z
 
channel\3\color=@Variant(\0\0\0\x43\x2\xff\xff\x19\xed\xfa\xb4\xf0s\0\0)
 
channel\3\visible=true
 
channel\4\name=Channel 4
 
channel\4\color=@Variant(\0\0\0\x43\x1\xff\xff\xfe\xfe\x89\x89\0\0\0\0)
 
channel\4\visible=true
 
channel\size=4
 
 
[Plot]
 
numOfSamples=1000
 
indexAsX=true
 
xMax=1000
 
xMin=0
 
autoScale=false
 
yMax=1023
 
yMin=-1023
 
darkBackground=true
 
grid=true
 
minorGrid=true
 
legend=true
 
multiPlot=false
 
symbols=auto
 
 
[Commands]
 
command\1\name=Command 1
 
command\1\type=ascii
 
command\1\data=ok
 
command\2\name=Zastav meranie
 
command\2\type=ascii
 
command\2\data=stop
 
command\size=2
 
 
[Record]
 
autoIncrement=true
 
recordPaused=true
 
stopOnClose=true
 
header=true
 
disableBuffering=false
 
separator=","
 
 
</source>
 
-->
 
 
  
  

Aktuálna revízia z 19:21, 26. november 2023

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):

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:

MicroBitSerial01.png


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:

WindowsDeviceManagerForSerial.png

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+n 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 4800 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

MicrobitSerialExample01.png

ale textový reťazec sa žiaľ nedá poskladať takto jednoducho, musíte použiť príkaz Join, ako napr. na tomto obrázku

MicrobitSerialJoinExample.png




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.


MicrobitRadio01.png

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: