Operácie

Senzory na mikropočítači micro:bit: Rozdiel medzi revíziami

Z SensorWiki

Riadok 13: Riadok 13:
  
 
'''Úloha 1:'''<BR>
 
'''Úloha 1:'''<BR>
Upravte program pre snímač magnetického poľa tak, aby fungoval ako skutočný kompas a zobrazoval šipku ukazujúcu na sever.  
+
Naprogramujte kompas, ktorý bude na displeji zobrazovať šipku podľa natočenia magnetického senzora. (8 polôh N, NE, E, SE, S, SW, W, NW). Na displeji má byť zobrazená šípka, nie písmená alebo uhol.
 
<BR>
 
<BR>
 
Rozdeľte 360 stupňov na príslušné intervaly a v každom znich zobrazíte správnu šípku. Nie je nevyhnutné kresliť každú z nich  
 
Rozdeľte 360 stupňov na príslušné intervaly a v každom znich zobrazíte správnu šípku. Nie je nevyhnutné kresliť každú z nich  
Riadok 20: Riadok 20:
 
ale naozaj obrázok šípky.  
 
ale naozaj obrázok šípky.  
  
Ukážka: [https://youtu.be/MiVr8rZpZCU takto by to vyzeralo naživo]
+
Ukážka: [https://youtu.be/MiVr8rZpZCU takto nejako by to malo vyzerať]
  
  
  
 
'''Úloha 2:'''<BR>
 
'''Úloha 2:'''<BR>
 +
<!--
 
Zoberte ľubovoľný iný senzor a zobrazte jeho hodnotu na stupnici s LED diód alebo ako ručičku, ktorou na stupnici hýbe motorček.  
 
Zoberte ľubovoľný iný senzor a zobrazte jeho hodnotu na stupnici s LED diód alebo ako ručičku, ktorou na stupnici hýbe motorček.  
 +
-->
 +
Pretočte micro:bit o 360 stupňov okolo osi x a zobrazte tento pohyb na grafe, ktorý potom odovzdáte. (z grafu musí byť jasne vidno, že ste spravili celú otočku).
 
<BR>
 
<BR>
 
Jediný zádrhel v tejto úlohe spočíva v tom, že musíte správne pretransformovať rozsah daného snímača do rozsahu LED pásiku alebo motorčeka.
 
Jediný zádrhel v tejto úlohe spočíva v tom, že musíte správne pretransformovať rozsah daného snímača do rozsahu LED pásiku alebo motorčeka.
  
Ak vám program funguje, spravte scresnshot, zachytávajúci váš program aj samotný microbit a odovzdajte ho ako riešenie tejto úlohy v Classroome.
+
<BR>
  
Ukážka: [https://youtu.be/aUGPcf8Wibs takto by to vyzeralo naozaj s LED pásikom] [https://youtu.be/LWb3FAJSiNQ a takto so servomotorčekom]
+
Ak vám oba programy fungujú, spravte scresnshot, zachytávajúci váš program aj samotný microbit a odovzdajte ho ako riešenie v Classroome.  
  
 +
Ukážka: [takto nejako by to mohlo vyzerať]
  
 
'''Termín:''' ihneď po cvičení, najneskôr však 29.11.
 
'''Termín:''' ihneď po cvičení, najneskôr však 29.11.
 
  
  
 
&nbsp;<BR>
 
&nbsp;<BR>
 
&nbsp;<BR>
 
&nbsp;<BR>
 
== <span style="background:Turquoise"> Snímač tlaku  </span> ==
 
 
 
'''Výstup:'''<BR>
 
číslo -- tlak na tlačidlo - 0 (nestlačené) a  1 (silný tlak, stlačené).
 
 
Aj keď sa to na prvý pohľad nezdá, obyčajné tlačidlo je tiež senzorom. Môže indikovať dosiahnutie
 
nejakej hraničnej polohy, prípadne naozaj aj tlak cez nejaký prevodový mechanizmus. Žiaľ, má len
 
dva stavy - 0 a 1 a teda nie veľkú presnosť.
 
 
 
[[Súbor:SenzorTlaku01.png]]
 
 
'''Pozn.:''' Nemôžeme priamo zobraziť stav tlačidla, pretože "premenná"  '''button A is pressed''' je boolovského typu,
 
teda má len hodnoty true a false, pričom funkcia '''show number''' potrebuje ako argument číslo. Preto je v programe jednoduchý test '''if-then-else''',
 
ktorým sa pridadí do premennej potrebné číslo.
 
&nbsp;<BR>
 
&nbsp;<BR>
 
&nbsp;<BR>
 
&nbsp;<BR>
 
 
  
  
Riadok 185: Riadok 166:
 
&nbsp;<BR>
 
&nbsp;<BR>
 
&nbsp;<BR>
 
&nbsp;<BR>
 
 
 
  
  
Riadok 197: Riadok 175:
  
 
[[Súbor:uBitArrowBlock.png]]
 
[[Súbor:uBitArrowBlock.png]]
 +
 +
=== Zmena rozsahov ===
 +
 +
Zmena rozsahov, tak aby vám aj pri minimálnej aj pri maximálnej hodnote zo senzora zobrazil displej alebo LED pásik alebo motorček to čo potrebujete sa dá spraviť rozličným spôsobom. Ale asi najjednoduchšie je to pomocou bloku MAP, ktorý nájdete v MATH knižnici. Vysvetľujúci obrázok snáď pomôže.
 +
 +
[[Súbor:BlockMapExplain.png]]
 +
 +
 +
=== Stĺpcový graf ===
 +
 +
V tejto časti si ukážeme, ako vie micro:bit jednoduchým spôsobom zobraziť hodnotu premennej alebo meranej veličiny na displeji vo forme stĺpcového grafu. Jeho výška zodpovedá hodnote veličiny, pričom rozsah je od nula po maximálnu hodnotu, ktorú zadávame do progamového bloku. Zároveň sa v simulátore daná veličina zakresluje aj do časového diagramu.
 +
 +
[[Súbor:plotBarGraf.png]]
 +
 +
<!--
  
 
=== Servo motorček ===
 
=== Servo motorček ===
Riadok 220: Riadok 213:
 
[[Súbor:uBitNeopixelUsage.png]]
 
[[Súbor:uBitNeopixelUsage.png]]
  
=== Zmena rozsahov ===
 
 
Zmena rozsahov, tak aby vám aj pri minimálnej aj pri maximálnej hodnote zo senzora zobrazil displej alebo LED pásik alebo motorček to čo potrebujete sa dá spraviť rozličným spôsobom. Ale asi najjednoduchšie je to pomocou bloku MAP, ktorý nájdete v MATH knižnici. Vysvetľujúci obrázok snáď pomôže.
 
 
[[Súbor:BlockMapExplain.png]]
 
 
 
 
 
 
 
[[Category: Základy počítačov]][[Category: micro:bit]]
 
 
 
=== Stĺpcový graf ===
 
 
 
V tejto časti si ukážeme, ako vie micro:bit jednoduchým spôsobom zobraziť hodnotu premennej alebo meranej veličiny na displeji vo forme stĺpcového grafu. Jeho výška zodpovedá hodnote veličiny, pričom rozsah je od nula po maximálnu hodnotu, ktorú zadávame do progamového bloku. Zároveň sa v simulátore daná veličina zakresluje aj do časového diagramu.
 
 
[[Súbor:plotBarGraf.png]]
 
 
'''Úloha 4 pre Automobilovú mechatroniku:'''<BR>
 
Naprogramujte airbag. Pri prekročení istej hranice sa odpáli airbag.
 
Zariadenie musí byť spoľahlivé. Nesmie odpáliť airbag pri akomkoľvek malom náraze, na druhej strane však pri silnom náraze musí odpáliť vak vždy.
 
 
 
'''Úloha 4 pre ostatných:'''<BR>
 
Vyberte si jednu z možných úloh: krokomer - počítadlo krokov, rolujúci text ktorý sa presúva podľa smeru naklonenia, vodováha, alarm, alebo airbag.
 
 
&nbsp;<BR>
 
&nbsp;<BR>
 
&nbsp;<BR>
 
&nbsp;<BR>
 
&nbsp;<BR>
 
  
 
== <span style="background:Yellow"> Zoznam úloh </span> ==
 
== <span style="background:Yellow"> Zoznam úloh </span> ==
Riadok 275: Riadok 234:
 
'''Úloha 4 pre ostatných:'''<BR>
 
'''Úloha 4 pre ostatných:'''<BR>
 
Vyberte si jednu z možných úloh: krokomer - počítadlo krokov, rolujúci text ktorý sa presúva podľa smeru naklonenia, vodováha, alarm, alebo airbag.
 
Vyberte si jednu z možných úloh: krokomer - počítadlo krokov, rolujúci text ktorý sa presúva podľa smeru naklonenia, vodováha, alarm, alebo airbag.
 +
 +
-->
  
  
 
[[Category: Základy počítačov]][[Category: micro:bit]]
 
[[Category: Základy počítačov]][[Category: micro:bit]]

Verzia zo dňa a času 18:21, 24. november 2022

Na tomto cvičení sa oboznámite so všetkými senzormi, ktoré sú dostupné na mikropočítači micro:bit.

 
 
 
 


Zoznam úloh

Úloha 1:
Naprogramujte kompas, ktorý bude na displeji zobrazovať šipku podľa natočenia magnetického senzora. (8 polôh N, NE, E, SE, S, SW, W, NW). Na displeji má byť zobrazená šípka, nie písmená alebo uhol.
Rozdeľte 360 stupňov na príslušné intervaly a v každom znich zobrazíte správnu šípku. Nie je nevyhnutné kresliť každú z nich ručne, existuje na to špeciálny blok. Pozor však dajte na smerovanie na sever, musí obsahovať aj hodnoty okolo nuly aj okolo 360. Pre kontrolu, smerov je 8: S, SV, V, JV, J, JZ, Z a SZ. Na obrazovke však nebudete zobrazovať ani uhol (číslo), ani text (JZ) ale naozaj obrázok šípky.

Ukážka: takto nejako by to malo vyzerať


Úloha 2:
Pretočte micro:bit o 360 stupňov okolo osi x a zobrazte tento pohyb na grafe, ktorý potom odovzdáte. (z grafu musí byť jasne vidno, že ste spravili celú otočku).
Jediný zádrhel v tejto úlohe spočíva v tom, že musíte správne pretransformovať rozsah daného snímača do rozsahu LED pásiku alebo motorčeka.


Ak vám oba programy fungujú, spravte scresnshot, zachytávajúci váš program aj samotný microbit a odovzdajte ho ako riešenie v Classroome.

Ukážka: [takto nejako by to mohlo vyzerať]

Termín: ihneď po cvičení, najneskôr však 29.11.


 
 


Snímač teploty

Výstup:
číslo -- teplota od -5 po +50 (nekalibrovaný odhad).

Mikropočítač micro:bit vlastne nemá špecializovaný snímač teploty okolia. Hodnota, ktorú zobrazuje nasledovný program je odvodená z interného snímača teploty, ktorý meria teplotu jadra procesora. Keďže procesor nie je našimi programami veľmi zaťažený a je to relatívne výkonný ARM procesor, pri činnosti sa veľmi neohrieva a preto je keho teplota celkom dobrou aproximáciou teploty okolia. Snímač teploty má vysoké rozlíšenie (t.j. je schopný detekovať aj zmeny o desatiny stupňa), ale nie je kalibrovaný, preto môže detekovať trebárs 20 stupňov hoci teplota je v skutočnosti len 17. Napriek tomu je však dostatočne citlivý a reaguje aj na malé zmeny teploty.

SenzorTeploty01.png

 
 
 
 


Snímač intenzity svetla

Výstup:
číslo -- intenzita osvetlenia od 0 (tma) po 255 (silné svetlo).

SensorLigh01.png


Funkcia:
Mikropočítač micro:bit nemá žiaden špeciálny senzor na snímanie intenzity osvetlenia. Ako je možné, že teda svetlo meriame? Používa na to LED diódy maticového displeja v reverznom zapojení, kedy využívame náboj na P-N priechode v závernom smere. Jeho množstvo je ovplyvnené dopadajúcim svetlom a množstvo náboja potom vieme odmerať nepriamo ako čas potrebný na vybitie parazitného kondenzátora na priechodne. Táto "finta" sa používa už dlho. LED diódu pri tom používame oboma spôsobmi - najprv výstup mikroprocesora privedie napätie na LED, ktorá sa rozsvieti. Potom mikrokontrolér zmení smer na vstupný a meria čas, kým napätie na prechode LED diódy nekleesne pod referenčnú hodnotu. Tento čas je zhruba úmerný množstvu svetla dopadajúcemu na PN prechod.

Pre záujemcov o podrobnejšie vysvetlenie:

 
 
 
 
 


Snímač magnetického poľa

Výstup:
číslo -- smer od 0 po 359.


Ako snímač intenzity magnetického poľa je použitý špeciálny čip MAG3110. Na doštičke sa nachádza v ľavej zadnej časti.

Microbit-back.png

Pred použitím senzora je potrebné vykonať jeho kalibráciu, vtedy sa na displeji zobrazí správa "Draw a circle!" Doštičkou treba opísať kruh a po ukončení kalibrácie sa spustí aplikačný program.

Hodnota nameranej veľkosti magnetického poľa je najprv prepočítaná do vodorovnej roviny a potom je výsledná hodnota v stupňoch z intervalu 0 a 359 prístupná cez "premennú" compass heading.

Magnetometer01.png


MAG3110: Freescale High Accuracy, 3-Axis Magnetometer

Ako snímač intenzity magnetického poľa je použitý špeciálny čip MAG3110. Je to digitálny trojosový magnetický snímač s nízkou spotrebou a širokým dynamickým rozsahom.

Snímač meria jednotlivé zložky (x-, y- a z-) lokálneho magnetického poľa, ktoré je tvorené predovšetkým magnetickým poľom zeme a zároveň súčtom vplyvov od všetkých komponentov na doske plošného spoja a v jeho okolí. V spojení s akcelerometrom (informácia o natočení a polohe) poskytuje informáciu o natočení voči zemskej osi pričom nie je nevyhnutné udržiavať ho vo vodorovnej polohe ako bežný kompas. Meranie vo všetkých troch osiach umožňuje kompenzovať náklon senzora. Samozrejme, že pri meraní nesmú byť v okolí iné silné zdroje magnetického poľa. K mikroprocesoru na doske je pripojený cez komunikačné rozhranie I2C a je schopný merať magnetické polia do hodnoty 10 Gauss s opakovacou frekvenciou 80 Hz.
(viac info...)


 
 
 
 

Akcelerometer

Výstup:
Číslo - zrýchlenie vo zvolenej osi (x-, y- alebo z-) v mg v intervale +/-1023. Zrýchlenie 1g zodpovedá zemskej gravitácii. Ak je doštička položená vodorovne displejom nahor, tak x=0, y=0 and z=-1023.

SensorAccelerometer01.png

Okrem toho máme možnosť softvérovo rozpoznávať nasledovné pohyby (gestá): up, down, left, right, face up, face down, freefall, 3g, 6g, 8g, shake. V praxi sa akcelerometre používajú napríklad na

  • detekciu otrasov a seizmickej aktivity
  • v autopilotoch na lodiach
  • v navigačných systémoch
  • stabilizáciu dronov
  • stabilizáciu otrasov kamery
  • detekciu nárazov a aktiváciu airbagov

SensorAccelerometer02.png

Akcelerometer, alebo snímač zrýchlenia, je špeciálny čip, ktorý meria zrýchlenie v troch osiach (x-, y- a z-). K procesoru je pripojený cez zbernicu I2C.

Typ             MMA8653FC
Rozsah 	 3 osi, rozsahy ±2g/±4g/±8g
Rozlíšenie  	 10 bitov (0..1023)
Citlivosť       1 mg / LSB
Max. rýchlosť   800Hz
Spotreba        7 uA

Viac informácií...

Keďže podľa všeobecnej teórie relativity nevieme rozlíšiť účinky zrýchlenia a gravitácie, tak aj tento senzor nerozlišuje medzi gravitačným a mechanickým zrýchlením. Vyskúšajte si, že ak je senzor kolmo na podlahu, tak zložka g je nulová, zatiaľ čo pri pootočení o 90 stupňov nameriate vždy presne 1g.

 
 
 
 
 


Doplnky

Šipky

Aby ste sa nemuseli trápiť s vykreslovaním všetkých 8 šípok, použite blok SHOW ARROW z knižnice BASIC

UBitArrowBlock.png

Zmena rozsahov

Zmena rozsahov, tak aby vám aj pri minimálnej aj pri maximálnej hodnote zo senzora zobrazil displej alebo LED pásik alebo motorček to čo potrebujete sa dá spraviť rozličným spôsobom. Ale asi najjednoduchšie je to pomocou bloku MAP, ktorý nájdete v MATH knižnici. Vysvetľujúci obrázok snáď pomôže.

BlockMapExplain.png


Stĺpcový graf

V tejto časti si ukážeme, ako vie micro:bit jednoduchým spôsobom zobraziť hodnotu premennej alebo meranej veličiny na displeji vo forme stĺpcového grafu. Jeho výška zodpovedá hodnote veličiny, pričom rozsah je od nula po maximálnu hodnotu, ktorú zadávame do progamového bloku. Zároveň sa v simulátore daná veličina zakresluje aj do časového diagramu.

PlotBarGraf.png