Hardware | Pojďme programovat elektroniku | Programování

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

V roce 1984 založila parta inženýrů z texaského Dallasu společnost Dallas Semiconductor (dnes Maxim), která se specializovala na vývoj a výrobu síťových a teplotních integrovaných obvodů. Do historie se zapsala zejména svým digitálním protokolem 1-Wire, který funguje jako sběrnice a umožňuje sériové zapojit hromadu zařízení, které tomuto protokolu rozumí. Hlavní výhodou je to, že si sběrnice vystačí s jedním jediným signálovým vodičem.

Fanoušci Arduina velmi dobře znají především digitální teplotní senzor DS18B20, který komunikuje skrze 1-Wire a my si ho nyní zapojíme.

Klepněte pro větší obrázek
DS18B20 může mít hromadu podob. Takto vypadá ve schránce TO-92

Podle obrázku je patrné, že DS18B20 na první pohled vypadá naprosto identicky jako analogové čidlo TMP36 z předchozí kapitoly, ale uvnitř jeho černé hlavičky přitom na rozdíl od hloupého analogového čidla najdete sofistikovaný integrovaný obvod s vlastní logikou.

Podobnost je dána pouze tím, že obě čidla používají standardizované pouzdro TO-92, které může obsahovat prakticky jakoukoliv vhodnou součástku, pro kterou se tam najde místo.

Knihovna nám usnadní hromadu práce

Snímání komplexních informací z digitálních čidel už není tak jednoduché jako přečíst hodnotu z A/D převodníku. Digitální pin vrací buď logickou 1, nebo 0, což v praxi znamená, že je na něm zrovna buď vyšší (HIGH), nebo nižší (LOW) napětí. Aby tedy senzor předal nějaká data, musí je přeložit do dvojkové soustavy a poslat jako sled nul a jedniček.

Pokud bychom měli takovou komunikaci bez pomoci dekódovat, náš program by byl obrovský, a to se přitom jen chceme teploměru zeptat, jakou právě naměřil teplotu. Naštěstí máme po ruce knihovny – hotové kusy kódu, které tuto otrockou práci udělají za nás.

Klepněte pro větší obrázek
Arduino má vlastní správu knihoven ze svého vlastního katalogu

V tomto případě je k dispozici knihovna OneWire, která se stará o komunikaci na protokolu 1-Wire. Díky rozšířenosti čidla DS18B20 však existuje i knihovna pro práci přímo s tímto senzorem, kterou najdete na GitHubu.

Obě tyto knihovny stáhnete v balíčku ZIP, který pak můžete přímo nahrát do vývojového prostředí Arduina skrze jeho správu knihoven a nabídku Projekt → Přidat knihovnu → Přidat ZIP knihovnu. Poté obě najdete v seznamu knihoven a můžete je vložit přímo do kódu.

Klepněte pro větší obrázek
Ručně přidané knihovny v ZIP balíčku

Program se použitím obou knihoven poměrně nafoukne, takže je třeba brát zřetel i na to, že Arduino není váš stolní počítač, ale má jen pár kilobajtů paměti. Každý projekt ale můžete před nahráním do mikropočítače analyzovat a zjistíte, kolik prostředků nakonec zabere. Tato informace se zobrazí v černém stavovém pruhu ve spodní části okna.

Zapojení s pull-up rezistorem

Náš program bude opět s časovou prodlevou vypisovat teplotu. Tentokrát se díky použití knihoven ptáme přímo speciálního objektu, který reprezentuje naše senzory DS18B20. My máme jen jeden, čili se zeptáme na teplotu čidla s indexem 0. Kdybychom měli v obvodu zapojená třeba dvě čidla, to druhé bude mít index 1 a tak dále.

Klepněte pro větší obrázek
Díky použití knihoven pro digitální teploměr DS18B20 a jeho protokol 1-Wire je kód našeho programu stále jednoduchý

Při pohledu na schéma obvodu níže je patrné, že jsme použili novou součástku – 4k7 rezistor, který v tomto případě propojuje signální vodič s napájecím. Jedná se o tzv. pull-up rezistor, který se nám stará o to, aby na digitálním pinu 2, do kterého je signální vodič připojený, nevznikal žádný nahodilý šum, který by si mohl mikropočítač vyložit jako logickou 0, nebo 1.

Klepněte pro větší obrázek Klepněte pro větší obrázek
Žlutý signálový vodič už nevede do analogového pinu A0, ale do digitálního pinu 2. Teploměr je zároveň napájený 5 V, přičemž tento vodič je s tím signálním propojený tzv. pull-up rezistorem 4k7 (4,7 kΩ).

Rezistor je naprosto kritická součástka, bez které se žádný začátečník neobejde, a jelikož může jejich odpor nabývat různých hodnot, nováček udělá nejlépe, pokud si koupí za pár korun celou sadu se všemi častými odpory – prodává je každý slušný elektroobchod.

Hned poté by si měl přečíst třeba článek Proč je u tlačítka rezistor na webu Arduino.cz, naučit se značení hodnot rezistorů a po večerech si pročítat 280stránkový Průvodce světem Arduina.

Kód programu

Nakonec pro celkový přehled opět kód celého programu. Zatímco knihovna OneWire se postará o komunikaci na protokolu 1-Wire, DallasTemperature se postará přímo o ovládání teploměru DS18B20, který tento protokol používá.

#include <OneWire.h>
#include <DallasTemperature.h>

// Zarizení 1-Wire je pripojene na digitalni pin 2
OneWire oneWire(2);

// Zarizeni 1-Wire je teplomer DS18B20 
DallasTemperature sensors(&oneWire);

void setup(void){
  // Nastaveni seriove linky
  Serial.begin(9600);
  while(!Serial){;}
  Serial.println("*** Ukazka digitalniho teplomeru DS18B20 ***");
  
  // Nastartovani teplotniho senzoru 
  sensors.begin();
}

void loop(void) {
  // Povel k zmereni teploty
  sensors.requestTemperatures();

  // Vypsani teploty ze senzoru s indexem 0
  Serial.print("Teplota: ");
  Serial.println(sensors.getTempCByIndex(0)); 

  // Pockej pet sekund a opakuj
  delay(5000);
}

Takže jsme zvládli základní demonstraci analogového a digitálního čidla. Teď se pojďme podívat na další – barometr, vlhkoměr a teploměr v jednom, který komunikuje na sběrnici I2C.

Témata článku: Technologie, Hardware, IoT, Pojďme programovat elektroniku, Programování, Arduino, Pohyb, Zajímavosti, Sigfox, Maličké Arduino, Paměťový efekt, Sucho, Print, Rovnice, Jednoduchý vyhledávač, Arduino-shop cz, Déšť, Atmosférický tlak, Kapka, Ultrazvukový dálkoměr, Řídicí jednotka, DealeXtreme, Sonda, Celkový přehled, Cactus, Stolní počítače na Mall.cz


Určitě si přečtěte

Pojďme programovat elektroniku: Postavíme bezpečnostní systém za 30 Kč

Pojďme programovat elektroniku: Postavíme bezpečnostní systém za 30 Kč

** Před pár týdny jste si mohli v akci koupit Wi-Fi desku za jeden dolar ** Nám už TTGO T-Display dorazila do redakce ** Připojíme k ní jazýčkový kontakt a vyrobíme bezpečnostní systém

Jakub Čížek | 30

Co zabírá nejvíce místa na disku? Těchto 10 nástrojů odhalí největší žrouty dat

Co zabírá nejvíce místa na disku? Těchto 10 nástrojů odhalí největší žrouty dat

** Je vhodné jednou za čas zanalyzovat, co vám leží na disku ** Poradíme vám nástroje, kterými zjistíte, jaká data uchováváte ** Podle výsledků můžete optimalizovat svá data či úložiště

Karel Kilián | 49

Šmírování kamerami Googlu: Koukněte, co šíleného se objevilo na Street View

Šmírování kamerami Googlu: Koukněte, co šíleného se objevilo na Street View

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

redakce | 6

Windows 10 po čtyřech letech: Jsou populární, ale stále je to šílený kočkopes

Windows 10 po čtyřech letech: Jsou populární, ale stále je to šílený kočkopes

** Windows 10 tu jsou už čtyři roky, první verze dorazila 29. 7. 2015 ** Desítky měly nahradit neúspěšnou řadu Windows 8.x ** I po letech však systém budí emoce a zůstává kočkopsem

Jakub Čížek | 111

Je ta fotka černobílá, nebo barevná? Náš mozek realitu pouze odhaduje a vymýšlí si

Je ta fotka černobílá, nebo barevná? Náš mozek realitu pouze odhaduje a vymýšlí si

** Klasický počítač bezchybně zpracuje bit po bitu dat ** Mozek si realitu naopak spíše představuje a chybuje ** Teď se tím baví internet u další optické iluze

Jakub Čížek | 32



Aktuální číslo časopisu Computer

Speciál o přechodu na DVB-T2

Velký test herních myší

Super fotky i z levného mobilu

Jak snadno upravit PDF