Pojďme programovat elektroniku: Vyzkoušíme ultrazvukový dálkoměr, detektor pohybu, deště a další kouzla

  • Vyzkoušíme si senzory na pokročilých sběrnicích
  • Budeme ultrazvukem měřit vzdálenost
  • Detekujeme déšť i pohyb
Pojďme programovat elektroniku: Vyzkoušíme ultrazvukový dálkoměr, detektor pohybu, deště a další kouzla

Zatímco rodiče pomalu nakupují nové penály, tužky, propisky, kružítka, pravítka, aktovky s pokémony a datové tarify pro své ratolesti, do Česka v záplavě ostatních cetek přicestoval i kontejner plný laciných senzorů, a tak se konečně můžeme vrhnout na pokračování našeho seriálu o domácím programování drobné elektroniky.

Dnes si vyzkoušíme, jak vlastně získat údaje z některého z mnoha čidel, které dnes můžete společně s nejrůznějšími mikropočítači pořídit v kdejakém českém e-shopu pro kutily, anebo na eBayi a celém zástupu asijských katalogů od Banggoodu po DealExtreme.

Klepněte pro větší obrázek
Prototypovací počítače v praxi: Intel Edison, Intel Galileo, Arduino Uno (na něm dnes budeme vše stavět), SmartEverything pro bezdrátový protokol Sigfox, NodeMCU s Wi-Fi, armový Photon s Wi-Fi a konečně maličké Arduino Pro Mini

Platí zde jednoduché pravidlo. Na eBayi sice seženete senzor i základní prototypovací mikropočítač Arduino Uno za pár korun a zpravidla i s bezplatnou dotovanou dopravou z Číny nebo Hongkongu, ale počkáte si i několik dlouhých týdnů. Pokud chcete svoje Arduino s armádou senzorů, propojovacích kablíků a dalšího potřebného příslušenství teď hned, české e-shopy jako Arduino-shop, Robotstore, GME, GES, Tays, Santy a další vám vyjdou vstříc, ale pochopitelně za trošku jiné ceny – není to přeci charita a hlavně získáte zákonnou záruku.

Klepněte pro větší obrázek
Hromada mikropočítačů, součástek a senzorů. Dnes si některé z nich předvedeme.

Tak, konec nakupování a jdeme si hrát a zapojovat naše nové moduly do mikropočítače typu Arduino Uno, jehož laciný klon i s USB kabelem jsem koupil na eBayi zhruba za sto korun.

Analogový teploměr TMP36

Pro začátek si připomeňme zapojení primitivního analogového teploměru TMP36 se třemi vodiči. Zatímco krajní nožky slouží pro napájení (+/-), ta prostřední vede samotný signál o teplotě. A jelikož se jedná o analogový senzor, oním signálem je napětí o určité velikosti. Čím vyšší teplotu čidlo zaznamená, tím se zvýší i napětí na signálovém vodiči. Mikropočítač toto napětí přečte, pomocí A/D převodníku převede na celé číslo a s ním už můžeme pracovat.

Klepněte pro větší obrázek
Analogový teploměr TMP36

Počítače Arduino mají 10bitový A/D převodník a pracují s napětím 5 V, což v praxi znamená, že 0 až 5 V na některém z analogových konektorů vyjádří hodnotou 0 až 1 023 (1 024 = 210 = deset bitů).

Pak už pouze stačí pročíst dokumentaci konkrétní elektrické součástky, ze které se dozvíte, že TMP36 vyjádří teplotu 25 °C napětím 750 mV a změna napětí o 10 mV odpovídá 1 °C. Proč tedy rovnou nevyjádří onu pokojovou teplotu napětím 250 mV? Protože 500mV posun (500 + 250 = 750) usnadní výpočet záporných teplot. Když bychom tedy na signálovém vodiči naměřili napětí 300 mV, odpovídá to -20°C, protože platí rovnice 300-500 = -200 a -200/10 = -20.

Suma sumárum, celé číslo z A/D převodníku přepočítáme zpět na napětí a to podle pravidel výše na teplotu.

Klepněte pro větší obrázek

Jak to zapojit dohromady

Takže to bychom měli analogovou teorii a teď samotné zapojení. Mikropočítače označení + a pro napájení zpravidla nepoužívají. Namísto toho zde máme konektor GND (zem) pro záporný pól a ostatní konektory pro generování určitého napětí a tedy kladný pól.

V případě teplotního čidla nepotřebujeme programově zapínat a vypínat jeho napájení jako třeba u LED diody, která má blikat, můžeme jej tedy připojit k některému konektoru, který poskytuje stálé a regulované napětí. Arduino zpravidla disponuje piny pro 5V a 3,3V zdroj napětí, které můžeme použít.

TMP36 je nízkonapěťové čidlo, pro které je 5 V opravdu nejvyšší hranice a více mu sluší napětí okolo 3 V, kdy podává přesnější výsledky. Pro napájení jsem tedy použil konektor označený 3.3V.

Klepněte pro větší obrázek Klepněte pro větší obrázek
Zapojení našeho analogového teploměru TMP36 k Arduinu. Pomohlo nám tzv. nepájivé pole – breadboard, což je matice propojených děr, do kterých stačí zapíchnout senzory a drátky bez potřeby jakéhokoliv pájení

Prostřední signálový vodič teploměru jsem pak připojil do konektoru A0, který je společně s dalšími piny okolo určený pro práci s analogovým signálem.

Začátečníci si mohou celý obvod vyzkoušet třeba ve webovém simulátoru Circuits.io, aniž by se museli obávat, že chybným zapojením něco poškodí.

Změř teplotu každou sekundu

A to je celé. Teď už pouze stačí napsat jednoduchý program ve stejnojmenném vývojovém prostředí Arduino, který přečte hodnotu z A/D převodníku, převede ji na napětí, to dále na teplotu a všechny tři hodnoty pošle skrze sériovou linku do velkého počítače, který je s Arduinem spojený USB kabelem na portu COM7. Následně program počká jednu sekundu a vše zopakuje.

Klepněte pro větší obrázek
Program vypisuje surovou hodnotu z A/D převodníku,
zpětně vypočítané napětí a konečně i teplotu

Kód programu

Jakmile se program přeloží a nahraje do paměti mikropočítače, začne se zpracovávat, kdykoliv Arduino připojíte do elektřiny. Právě jsme tedy dali křemíkové destičce její první smysl.

int data;
float napeti, teplota;

void setup(){
 // Nastaveni seriove linky
 Serial.begin(9600);
 while(!Serial){;}
}

void loop() {
 // Precti hodnotu z analogoveho pinu A0
 data = analogRead(A0);

 // Vypocitej napeti na pinu A0
 napeti = (5.0/1024.0) * data;

 // Vypocitej teplotu podle dokuemntace cidla TMP36 
 teplota = (napeti - 0.5) * 100;

 // Vypis hodntu z A/D, vypocitane napeti a teplotu
 Serial.print(data); Serial.print("\t");
 Serial.print(napeti); Serial.print(" V\t");
 Serial.print(teplota); Serial.println(" stupnu");

 // Pockej jednu sekudnu a opakuj
 delay(1000);
}

V další kapitole se už podíváme na mnohem zajímavější a také digitální senzory, se kterými se pracuje úplně jinak a vlastně i jednodušeji, protože pro každý kousek složitějšího hardwaru už dnes existuje nějaká ta knihovna, která vše naprosto usnadní.

Témata článku: Technologie, Hardware, Pojďme programovat elektroniku, Programování, IoT, Arduino, Zajímavosti, Pohyb, Arduino Uno, Cactus, Dallas, DealeXtreme, Delay, Edison, Echo, GME, Playground, Pokémon, Print, Puls, Pulse, Sensor, Serial, Trigger, Pravítka

24 komentářů

Nejnovější komentáře

  • Jan Krajíc 29. 9. 2016 20:17:03
    Super článek. Jen nevím jestli jsem to nenašel, nebo to tady není. Ale byl...
  • Martin Novák 30. 8. 2016 7:38:53
    Super článek! Mimo tento seriál ještě často sleduji...
  • Tomáš Kapler 29. 8. 2016 23:03:13
    myslím, že chybka: int hodnota = map(hodnotaZprevodniku, 0, 1023, 1,...
Určitě si přečtěte

Jak převést PDF do Wordu: 3 způsoby, které můžete použít

Jak převést PDF do Wordu: 3 způsoby, které můžete použít

** Využít můžete přímo Word v rámci balíčku Office ** Zdarma lze využít Google Dokumenty, neporadí si ale s formátováním ** Obrátit se také můžete na specializované stránky

11.  8.  2017 | Vladislav Kluska | 9

USB zařízení je možné odposlouchávat ze sousedního portu

USB zařízení je možné odposlouchávat ze sousedního portu

** Crosstalk byl dřív problém paralelních portů, dnes se ho pokusili prověřit na USB ** Zařízení ze sousedního USB portu může odposlouchávat to vedlejší ** Mohou vznikat záškodnické flašky nebo třeba USB lampičky

14.  8.  2017 | Adam Harmada | 19

Zrušený evropský roaming je brutální vražda virtuálních operátorů

Zrušený evropský roaming je brutální vražda virtuálních operátorů

** Když EU rušila roaming, šla přes mrtvoly ** Tou největší jsou virtuální operátoři ** Vlastně je překvapivé, že už nepadají jeden po druhém

12.  8.  2017 | Filip Kůžel | 85

Co je realita a fikce? Brzy to nepoznáme. A.I. ze Stanfordu tvoří fotky z neexistujících měst

Co je realita a fikce? Brzy to nepoznáme. A.I. ze Stanfordu tvoří fotky z neexistujících měst

** Fotografii každý vnímá jako jednoznačný důkaz ** časem to ale přestane platit ** Strojové učení se totiž neustále zdokonaluje

Včera | Jakub Čížek | 8

Obrněná raketová vozidla Stryker budou bojovat proti dronům a letadlům

Obrněná raketová vozidla Stryker budou bojovat proti dronům a letadlům

** Původně kanadská obrněná bojová vozidla Stryker od společnosti General Dynamics existují v celé řadě verzí ** Některá slouží k průzkumu, jiná jsou vybavena těžkými zbraněmi ** Nyní bylo představeno nové raketové vozidlo Stryker, které je vyzbrojeno raketami Sidewinder a Hellfire

11.  8.  2017 | Stanislav Mihulka | 1


Aktuální číslo časopisu Computer

Velký test NVMe a SATA SSD

Máte slabý signál
Wi-Fi? Poradíme!

Jak umělá inteligence opravuje fotky

Kupujete dron? Ty levné se nevyplatí