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

Pojďme programovat elektroniku: Postavíme si ultrazvukový radar s detektorem vetřelců

  • S ultrazvukovým dálkoměrem jsme si už hráli
  • Připevníme jej na motor
  • Výsledkem bude 180stupňový radar s vizualizací

Jeden z prvních senzorů, který mi koncem léta přicestoval z daleké Asie, byl levný ultrazvukový dálkoměr HC-SR04, který je součástí každé sady pro začátečníky, kteří se chtějí naučit programovat nějaké to Arduino.

HC-SR04 je levný (na eBay jeho kusová cena začíná zhruba na 20 korunách) a naprosto primitivní modul. Vedle napájení má dva signální vodiče. Pomocí prvního označeného jako Trig vyšleme zvukovou vlnu, no a pak je tu ještě pin Echo, který nám dá vědět, že se vlna odrazila od překážky a dorazila zpět do senzoru.

80499566 410988745 457995007
HC-SR04 v akci: Změříme dobu, po kterou letěla zvuková vlna od senzoru k překážce, odrazila se a zachytil ji znovu detektor. Díky známé rychlosti zvuku pak vypočítáme vzdálenost překážky a s výsledkem se pochlubíme třeba pomocí terminálu sériové linky.

Pokud dobu mezi vysláním a přijetím signálu podělíme dvěma, zjistíme, jak dlouho letěla zvuková vlna k překážce a podle známé rychlosti zvuku v běžném prostředí spočítáme konečně vzdálenost. Celé to bude trvat jen kratičký okamžik.

HC-SR04 není žádný profesionální dálkoměr. Je to opravdu jen efektní modul za pár kaček a na nějakou velkou přesnost se zde tedy opravdu nehraje. Dá nám hrubou představu o vzdálenosti v rozmezí několika centimetrů až metrů, pokud byste ale podle něj chtěli zaměřovat svoji novou vilku, postavíte leda tak tančící dům.

Jenže o to přeci vůbec nejde. Arduino je především dokonalou učebnicí a simulátorem toho, jak funguje elektronika na úplně nejnižší úrovni. A to prakticky – bez nudného teoretizování. Ten okamžik, kdy svépomocí zaměříte židli uprostřed pokoje, je prostě kouzelný.

Co kdybychom dálkoměr upevnili na motorek a roztočili?

Primitivní dálkoměr je ale pouze to pomyslné A. Troufám si tvrdit, že naprosto každého majitele podobného modulu dříve či později napadne otázka, jestli bychom ten ultrazvukový dálkoměr nemohli přimontovat na motor, roztočit jej kolem své osy a vyrobit si funkční radar, který bude detekovat překážky a pohybující se vetřelce ve svém okolí.

Takový projekt je už samozřejmě mnohem rozsáhlejší, vedle samotného mikropočítače a motoru s dálkoměrem totiž potřebujeme ještě vizualizační program v PC, který bude informace ze sonaru přijímat třeba pomocí sériové linky a tedy USB spojení s počítačem.

To už je opravdu vyšší dívčí, internet je ale naštěstí plný hotových projektů těch, kteří si už takový radar skutečně postavili. Krásným příkladem je třeba tento kód Ujashe Patela, který pro rotaci dálkoměru použil servomotor a k vizualizaci samotného a opravdu efektního radaru pak skript pro analytické běhové prostředí Processing.

340190926
Vývojové a běhové analytické prostředí Processing s radarem, který získává data z připojeného Arduina

Processing je kouzelné prostředí, v editoru podobném Arduino IDE totiž můžete psát skripty, které zobrazí v okně nejrůznější geometrické tvary, a po ruce máte ohromné množství knihoven, pomocí kterých můžete zpracovat prakticky jakoukoliv informaci od surové matematiky, přes statistická data až po ta geografická.

Processing zároveň umí komunikovat s připojeným hardwarem k PC pomocí zmíněné sériové linky, a tak se doslova nabízí pro pokročilou analýzu dat třeba právě z Arduin a dalších mikropočítačů.

Jak to vlastně celé funguje?

Já sice doma žádný modelářský servomotorek nenašel, za to jsem ale narazil na 5V krokový motor – konkrétně pak model 28BYJ-48, jehož cena včetně destičky s ovladačem se na eBay pohybuje okolo šedesáti korun.

788911501 668656492
Krokový motor s deskou ovladače a vše dohromady: Arduino Uno jako řídící mikropočítač připojený k PC sériovou linkou (USB) a krokový motor s připojeným dálkoměrem a vlastním zdrojem napájení (12V zdroj připojený zcela vlevo přes 5V měnič).

Krokový motor už podle svého názvu otáčí hřídel díky složitému soukolí po jednotlivých a dostatečně maličkých krocích. Ten můj jich má asi 4 000, takže jednomu stupni odpovídá asi 11 kroků. V podstatě tedy stačí motor roztočit a každý 11. krok změřit vzdálenost.

Jenže to má jeden háček. Pokud se bude hlava se sonarem stále otáčet, nastane problém s kabeláží, která by se mi po první otočce samozřejmě zamotala. Tento problém bych mohl vyřešit nějakým rotačním převodníkem vodičů, který by mohl fungovat podobně jako klasický audio jack, který se může protáčet, jelikož však nic podobného po ruce nemám, nakonec jsem se rozhodl pro jiný scénář.

Namísto 360stupňového záběru budu sondovat jen 180 stupňů. Hlava se sonarem tedy pokaždé obkreslí půlkruh, no a pak se zase vrátí do výchozí pozice. V obou směrech provede každý stupeň měření a informaci o aktuálním úhlu a změřené vzdálenosti okamžitě pošle skrze sériovou linku do počítače.

953746837
Ultrazvukový radar s detektorem pohybujících se vetřelců a vysvětlení, co jednotlivé údaje vlastně znamenají

V počítači už bude poslouchat upravený skript pro prostředí Processing od Ujashe Patela, který data konečně vykreslí do půlkruhového radaru. A jelikož se Ujash opravdu snažil, jeho kód dokonce porovnává dva poslední průchody, a pokud se budou data výrazněji lišit, znamená to, že se před sonarem předmět pohybuje, což program vyznačí v grafu červenými symboly.

37319240 569381257
Položil jsem před dálkoměr v závěru otáčky na jeden průchod dlaň. Radar zjistil, že oproti předchozím průchodům se před ním na daném azimutu objevila ve vzdálenosti několika desítek centimetrů nová překážka, a tak ji označil červenými kruhy jako pohyb.

A je to

Na tomto základním programu bychom pak mohli dále stavět a ultrazvukový dálkoměr vybavit třeba ještě infračerveným detektorem pohybu PIR, který reaguje na tělesné teplo, a tak správně detekuje lidskou postavu, ale nebude si všímat třeba padající knihy. Ostatně i tento modul za dvacku jsme si v našem seriálu už také vyzkoušeli, čili si to můžete připomenout zde.

Tak a to je celé. Máme ultrazvukový radar. Svým způsobem funguje velmi podobně jako ten laserový – LIDAR, kterým je dnes vybavené každé chytré auto a pomocí laserových paprsků s mnohonásobně vyšší přesností a v 3D osahává své nejbližší okolí.

My si to díky Arduinu a se vším všudy celé postavili asi za storkorunu.

Diskuze (16) Další článek: Windows 10 dostaly i zelenou obrazovku smrti, běžní uživatelé se s ní ale nesetkají

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,