Měření vzdálenosti s Arduinem: ultrazvukový dálkoměr HC-SR04

Modulů pro Arduino existuje spousta. Některé měří teplotu, jiné světlo, napětí, proud nebo třeba vlhkost. Tentokrát se podíváme na jeden z nejznámějších modulů pro měření vzdálenosti – ultrazvukový dálkoměr HC-SR04.
Na první pohled ho pozná snad každý. Má dvě kulatá „očka“, díky kterým vypadá trochu jako malý robot nebo obličej. Ve skutečnosti jde o vysílač a přijímač ultrazvuku. Modul vyšle krátký zvukový impuls, počká na jeho odraz od překážky a podle času návratu spočítá vzdálenost.
Je to jednoduchý, levný a pro začátečníky hodně vděčný modul. Dá se na něm pěkně ukázat nejen měření vzdálenosti, ale i to, že reálný svět není tak dokonalý jako příklady v učebnici. Některé předměty se měří dobře, jiné hůř, na šikmé plochy se zvuk odráží jinam a hodnoty občas trochu poskakují.
V článku si ukážeme, jak HC-SR04 funguje, jak ho zapojit k Arduinu, jak napsat jednoduchý program a na co si dát při měření pozor.

Pokračování textu Měření vzdálenosti s Arduinem: ultrazvukový dálkoměr HC-SR04

Jak zjistit stav Li-Ion akumulátoru pomocí modulu MAX17043

Bateriově napájené projekty mají jednu společnou věc: dřív nebo později začne člověka zajímat, kolik energie v baterii ještě zbývá. U jednoduchých projektů to někdy vůbec neřešíme. Zařízení prostě běží, dokud se baterie nevybije. Jenže u venkovních čidel, meteostanic, solárních projektů nebo různých přenosných zařízení už je dobré mít alespoň základní přehled o stavu baterie.

Nejjednodušší možností je měřit napětí baterie přes analogový vstup. To ale není vždy ideální. U Li-Ion a Li-Pol článků napětí neklesá úplně pěkně lineárně, takže z něj nejde jednoduše říct, kolik procent baterie ještě zbývá. Hodnota 3,7 V neznamená automaticky 50 % a 3,9 V nemusí znamenat přesně tolik, kolik bychom čekali.

Právě k tomu slouží modul DFRobot Gravity I2C 3.7V Li Battery Fuel Gauge s čipem MAX17043. Je to malý modul, který umí měřit napětí jednočlánkové Li-Ion nebo Li-Pol baterie a zároveň odhadovat její zbývající kapacitu v procentech. S Arduinem, ESP nebo Raspberry Pi komunikuje přes sběrnici I2C, takže zapojení i program jsou poměrně jednoduché. Modul má pevnou I2C adresu 0x36 a je určený pro baterii s napětím 2,5 až 4,2 V.

Pokračování textu Jak zjistit stav Li-Ion akumulátoru pomocí modulu MAX17043

DS18B20 – digitální teploměr pro Arduino

Digitální teplotní čidlo DS18B20 je taková malá klasika mezi Arduino senzory. Není to žádná novinka, ale pořád se používá hodně často, protože je jednoduché, levné a připojuje se jen přes jednu datovou linku.

Mám tu dvě varianty. Jednu obyčejnou v pouzdru TO-92, která vypadá jako malý tranzistor, a druhou vodotěsnou variantu v kovové sondě na kabelu. Obě uvnitř fungují stejně, ale každá se hodí na trochu jiné použití.

V článku ukážu základní zapojení, rozdíly mezi pouzdry, klasické i parazitní napájení a přidám několik testovacích programů. Jeden bude používat pevně zadanou adresu čidla, druhý si čidlo najde automaticky a třetí bude jednoduchý 1-Wire scanner, který vypíše nalezená čidla i s adresou a teplotou.

Oba druhy čidla
Pokračování textu DS18B20 – digitální teploměr pro Arduino

Servo: malý motor, který ví, kam se má otočit

Motorů a pohonů existuje spousta. Některé se jen točí, jiné potřebují složité řízení a u některých musíme řešit přesné počítání kroků. Servo je proti tomu docela příjemná součástka. Neříkáme mu totiž jen „toč se“, ale rovnou „natoč se sem“.

Právě proto jsou serva oblíbená v modelářství, robotice, jednoduchých mechanických projektech a různých bastlících pokusech. Hodí se všude tam, kde potřebujeme něco pootočit do určité polohy. Třeba klapku, páčku, ukazatel, ručičku, zámek, přepínač nebo malý mechanický mechanismus.

V článku se podíváme na to, co servo vlastně je, jak funguje, jak ho připojit k Arduinu a na co si dát pozor, aby se místo hezkého pohybu nedostavilo jen cukání, bzučení a resetování desky.

levné mikro servo SG90
Pokračování textu Servo: malý motor, který ví, kam se má otočit

Rotační enkodér s tlačítkem a Arduino

Otočný ovladač zná asi každý. Najdeme ho na rádiích, zesilovačích, měřicích přístrojích, 3D tiskárnách nebo v různých menu elektronických zařízení. Na první pohled může rotační enkodér vypadat trochu jako obyčejný potenciometr, ale funguje úplně jinak.

Potenciometr má začátek, konec a podle natočení mění odpor. Rotační enkodér se může otáčet stále dokola a neposílá Arduinu přímo žádnou analogovou hodnotu. Místo toho při otáčení vytváří impulzy, ze kterých si Arduino dokáže spočítat, jestli se ovladačem otáčí doprava nebo doleva.

V tomto článku se podíváme na jednoduchý mechanický rotační enkodér s integrovaným tlačítkem. Nebude to hotový modul na DPS, ale samotná součástka. To je důležité, protože takový enkodér nemá vývody VCC, GND, CLK, DT a SW jako hotové moduly. Má jen kontakty samotného enkodéru a zvlášť kontakty tlačítka.

Pokračování textu Rotační enkodér s tlačítkem a Arduino

Měření proudu a napětí s Arduinem: senzor INA219

Senzorů a modulů pro Arduino existuje opravdu hodně. Některé měří teplotu, jiné vlhkost, světlo, tlak nebo vzdálenost. Tentokrát se podíváme na modul INA219, který slouží k měření napětí, proudu a výkonu.

Na první pohled je to malý nenápadný modul s několika piny, ale pro různé pokusy je hodně užitečný. Díky němu můžeme zjistit, kolik proudu odebírá LED pásek, motor, Arduino projekt, malý solární panel nebo třeba zařízení napájené z baterie.

Velká výhoda INA219 je v tom, že neposílá do Arduina jen nějakou neurčitou analogovou hodnotu. Komunikuje přes sběrnici I2C a hodnoty dostaneme rovnou jako napětí, proud a výkon. Pro začátečníka je to tedy docela jednoduchý způsob, jak si začít hrát s měřením spotřeby.

V článku si ukážeme, co modul INA219 umí, jak se zapojuje, proč se musí připojit do série se zátěží a jak si naměřené hodnoty zobrazit v Arduino IDE.

modul od Laskakitu
Pokračování textu Měření proudu a napětí s Arduinem: senzor INA219

Měření světla s Arduinem: senzor VEML7700

Senzorů pro Arduino existuje spousta. Některé měří teplotu, jiné vlhkost, tlak, proud, napětí nebo třeba vzdálenost. Tentokrát se podíváme na senzor VEML7700, který slouží k měření intenzity okolního světla.

Na první pohled je to malý a nenápadný modul, ale pro různé pokusy je docela zajímavý. Na rozdíl od obyčejného fotorezistoru nevrací jen neurčitou hodnotu typu „víc světla / míň světla“, ale umí pracovat přímo s hodnotou v luxech. Díky tomu se dají naměřené hodnoty mnohem lépe porovnávat.

V článku si ukážeme, co VEML7700 vlastně měří, jak ho připojit k Arduinu, jak nainstalovat knihovnu a jak z něj dostat první hodnoty. Přidám i několik jednoduchých praktických příkladů, které se dají snadno upravit pro vlastní projekty.

senzor VEML7700
Pokračování textu Měření světla s Arduinem: senzor VEML7700

Arduino a modul RTC DS3231

Při potřebě práce s reálným časem na Arduinu je potřeba použít modul reálného času (RTC). Modulů se nabízí několik základních typů, ale jako nejlepší se ukazuje modul s čipem DS3231. Modul má vlastní záložní baterii a komunikuje po sběrnici I2C. Z výroby je nastavená adresa 0x68. Modul pracuje při napětí 3.3V i 5V, a tak jde použít s různými řídícími jednotkami.

modul ze strany IO
Pokračování textu Arduino a modul RTC DS3231

Arduino a klávesnice M5 Stack

Pro připravovaný projekt jsem scháněl dostatečně malou kompletní klávesnici, nakonec se mi podařilo najít klávesnici od M5 Stack.
Klávesnice je velikosti kreditní karty a obsahuje všechny písmena abecedy, čísla, různé symboly, pár funkčních kláves a RGB LED. Komunikuje po sběrnici I2C na adrese 5Fh.

Klávesnice defaultně píše malá písmena a čísla.
Přepnutím Shiftem (LEDka bliká červeně), napíše velké písmeno. Při dvou rychlích zmáčkutích Shiftu (LEDka svítí červeně), píše velká písmena až do opětovné deaktivace.
Přepnutím klávesou SYM (LEDka bliká zeleně), napíše symbol u příslušného tlačítka. Při dvou rychlých zmáčknutích (LEDka svítí zeleně), píše symboly až do opětovné deaktivace.
Přepnutím klávesou „fn“ (LEDka bliká modře), pošle třetí kód klávesy kterému lze přiřadit vlastní funkce. Při dvou rychlých zmáčknutích (LEDka svítí modře), posílá kódy až do opětovné deaktivace.

Testovací program vypisuje znak stisknuté klávesy a její hexadecimární kód po sériové lince.

Další díly ze začátečnické série o modulech najdete zde: