Week 10

mikrokontrolér Arduino, senzor, aktuátor, Arduino IDE

Oznamy

  • Uterákový deň (slide)
  • Adventúra
    • deadline dva týždne (slide)
      • živá ukážka
  • Arduino
    • cvičenia od budúceho týždňa
    • zadanie - DIY - comming soon

Motivácia

  • Pred pár rokmi som si kúpil túto knižku (slide). Je to taká veselá knižka pre najmenších (vekovú kategóriu som splnil už dávno) o robotoch, pomocou ktorej si môžete postaviť vlastných robotov (rozlične inteligentných a z rozličných komponentov). Kúpil som si ju z viacerých dôvodov, ale dva z nich boli: terminológia a ilustrácie, resp. príklady. A v pár veciach mi bola užitočnou aj pri príprave tejto prednášky.

  • (slide) Tá knižka je vyznavačom tzv. DIY princípu, čo je skratka od Do It Yourself, teda urob si sám. Čiže je pre takých domácich kutilov a hobbystov. Táto oblasť sa označuje aj podobným termínom Make a teda každý, kto sa takýmto činnostiam venuje je Maker (makač :-))) (slide)). A makači majú tiež svoje vlastné stretnutia (slide)

  • V tej knižke sa spomína tzv. sense-think-act cycle, ktorý vyzerá nasledovne (slide). Tento cyklus je charakteristický pre robotov, kde:

    • sense - reprezentuje robotove vnímanie, kedy robot prijíma informácie o dianí okolo seba,
    • think - reprezentuje robotovo myslenie, kedy na základe prijatých informácií z okolia sa robot rozhodne, čo urobí, a
    • act - predstavuje robotovu činnosť, ktorou ovplyvní vonkajší svet.
  • Aby sme boli konkrétni, všetky tieto fázy cyklu je možné reprezentovať konkrétnymi prvkami:

    • Fáza sense je reprezentovaná prvkami, ktoré sa nazývajú senzory. Senzor je súčiastka, ktorá zisťuje, čo sa deje okolo a prevádza inú formu energie na elektrickú (napr. fotočleny, tlačidlo, …) (slide)

    • Fáza think je reprezentovaná radičom alebo mikrokontrolérom. Mikrokontrolér je počítač v jednom púzdre (na jednej doske) a je možné ho programovať. (slide)

    • Fáza act je reprezentovaná akčným členom (aktér, efektor, vykonávateľ). Akčný člen je súčiastka, ktorá prevádza elektrickú energiu na inú formu energie (napr. dióda, reproduktor, motor, …) (slide)

Airplane Example

  • Ako tento cyklus pracuje v praxi, si môžeme predstaviť na príklade letiaceho lietadla, ktoré ho taktiež používa. V tomto prípade môžeme lietadlo dokonca priamo nazvať systémom pracujúcim v reálnom čase.

  • Lietadlo obsahuje počítač, ktorý vyhodnocuje údaje z prebiehajúceho letu. Na to potrebuje počas letu tieto údaje zbierať. Napr. potrebuje vedieť, ako vysoko letí, ako rýchlo letí, kde sa práve nachádza (GPS). Všetky tieto informácie lietadlo potrebuje na to, aby sa vedelo rozhodnúť, čo urobí, resp. kde by sa malo nachádzať v najbližšom momente. Na základe zozbieraných údajov teda upraví výšku pomocou krídiel, spomalí alebo zrýchli pomocou motorov.

  • Ak by sme teda mali vztiahnuť tento systém reálneho času na náš sense-think-act cyklus, tak:

    • zbieranie informácií o aktuálnom stave a polohe lietadla, patrí do časti cyklu s názvom sense,
    • vyhodnotenie informácií a naplánovanie ďalšieho kroku lietadla, patrí do časti cyklu s názvom think, a
    • zníženie, resp. zvýšenie výkonu motorov lietadla, upravenie polohy krídiel, patrí do časti cyklu s názvom act.

Arduino UNO

  • Na našich najbližších stretnutiach a rovnako aj vaše posledné zadanie bude venované práve programovaniu mikrokontrolérov. Konkrétne sa budeme učiť programovať mikrokontrolér Arduino.

  • (slide) Arduino UNO je mikrokontrolér z množiny Arduín, ktorý sa odporúča v prípadoch, ak chcete začať s programovaním pre Arduino.

  • Pozrime sa však bližšie na to, s čím sa konkrétne dá na doske stretnúť:

    • napájací konektor - Arduino je možné napájať z externého zdroja v rozsahu 7-12V
    • USB port - používa sa na napájanie, nahrávanie vášho programu do Arduina (programovanie) a na komunikáciu pomocou sériového portu
    • reset tlačidlo - resetuje mikrokontrolér (reštartne program, ktorý je v ňom nahratý)
    • TX a RX LED diódy - tieto LED-ky indikujú komunikáciu medzi Arduinom a počítačom, čo je možné vidieť napr. pri nahrávaní programu do Arduina alebo pri komunikovaní po sériovej linke
    • mikrokontrolér - samotný mikrokontrolér, ktorý je srdcom Arduina (ATmega)
    • LED-ka napájania - indikuje, že Arduino je napájané
    • digitálne piny - ku ktorým je možné pripojiť senzory a aktuátory, používa sa 5V logika S príchodom novej elektroniky sa začína používať 3.3V logika. Ak použijete takýto senzor/zariadenie, je otázne, či toto zariadenie bude tzv. 5V tolerantné (či bude vedieť pracovať s 5V). Ak totiž nebude, tak si viete dané zariadenie odpáliť. Napr. Rapsberry PI používa 3.3V logiku, ale nie je 5V tolerantné. Aby všetko fungovalo ako má, potrebujete prevodníky logických úrovní medzi 3.3V a 5V.
    • analógové piny - ku ktorým je možné pripojiť senzory a aktuátory
    • špeciálne piny - napr. GND a 5V, PWM a pod

Arduino IDE

  • Písať programy tentokrát nebudeme v editore Vim, ale v samostatnom IDE, ktoré je možné stiahnuť si zo stránky projektu. Dá sa nainštalovať aj priamo z balíčkov distribúcie, ale odporúčam vám nainštalovať si tento nástroj priamo pomocou inštalačiek zo stránky www.arduino.cc (nie www.arduino.org), pretože je možné, že budete mať vo svojej distribúcii v balíčkoch podstatne staršiu verziu ako je tá, ktorá je aktuálne k dispozícii.

  • Pozrime sa teda na prostredie, ktoré budeme používať na písanie programov pre Arduino trošku bližšie.

  • Najpodstatnejšia vec, ktorú musíte po spustení urobiť alebo aspoň skontrolovať je, pre akú dosku, resp. pre aký mikrokontrolér je vaše IDE nastavené a ku akému portu je táto doska (mikrokontrolér) pripojený. To si môžete všimnúť vpravo dole v rozhraní IDE. Ak chcete tieto nastavenia zmeniť, tak:

    • choďte do menu Tools > Board, ak chcete zmeniť prednastavenú dosku, alebo
    • choďte do menu Tools > Port, ak chcete zmeniť prednastavený port.
  • Ak by ste totiž mali vybratý nesprávny port, k nahratiu programu na dosku nedôjde, ale proces nahrávania skončí s chybou. Ak by ste však mali nesprávne vybratú dosku, tak síce k nahratiu dôjde, ale program sa nemusí (ale môže) spustiť (samotné dosky/mikrokontroléry sa navzájom líšia).

.kkrieger

  • Pri tejto príležitesti si môžeme dovoliť krátku odbočku na tému, čo všetko sa dá vopchať do necelých 95kB kódu - pozrieme sa na projekt .kkrieger.

  • .kkrieger (from Krieger, German for warrior) is a first-person shooter video game created by German demogroup .theprodukkt (a former subdivision of Farbrausch) which won first place in the 96k game competition at Breakpoint in April 2004. The game remains a beta version as of 2012

  • stiahnutie na stránke archívu webu (direct download)

Programy písané pre Arduino

Connecting LED Diode

  • Tentokrát rozšírme naše riešenie o LED diódu, ktorú pripojíme k PIN-u č. 12 - rovno pod pin, ku ktorému je pripojená dióda priamo na doske. Na to budeme potrebovať pár pomôcok.

Prepojovacie pole

  • Aktuálne sa nachádzame v situácii, kedy nerobíme hotové riešenie, ale v princípe prototypujeme. A teda na pripevnenie diódy k Arduinu nebudeme potrebovať spájkovačku, ale použijeme tzv. prepojovacie pole (breadboard). (slide).

  • Všimnite si na obrázku, ako je toto pole prepojené - krajné dva rady sú vzájomne prepojené vertikálne a zvykne sa do nich pripojiť napätie a zem (vertikálne preto, aby boli rovnako vzdialené pre celé prepojovacie pole). Zvyšok je prepojený horizontálne.

LED dióda

  • Schématickú značku LED diódy, ako aj obrázok súčiastky, sa nachádza na slajde (slide). Je dôležité si uvedomiť, že diódy je možné zapájať len jedným smerom - keď sa na anódu privedie kladné napätie a na katódu zasa záporné. Je to dané tým, že sa jedná o polovodičovú súčiastku.

  • Skúsme teda pripojiť LED diódu pomocou pár vodičov priamo na pin č. 12 pomocou prepojovacieho poľa.

  • Jemne upravíme sketch programu Blink, aby dióda po pripojení na tento pin svietila a neblikala (aby nám bolo jasné, že sme ju naozaj pripojili správne):

  • Po pripojení sa dióda rozsvieti. Ak však skúsime resetnúť Arduino, už sa znova nerozsvieti - diódu sa nám podarilo úspešne odpáliť.

Rezistor/Odpor

  • Ak nezapojíme pred diódu odpor, je veľmi pravdepodobné, že LED diódu odpálime, pretože sa na ňu dostane priveľký prúd.

  • Hodnota rezistora býva vyznačená priamo na ňom. Kedysi bola hodnota odporu napísaná priamo na súčiastke číselne (napr. 3K7), dnes sa však skôr stretnete s farebným označením hodnoty. Význam jednotlivých farieb sa nachádza na obrázku v prezentácii (slide)

Knight Rider Efect

Additional Resources