Ultrazvukový modul pro měření vzdálenosti obsahuje měřící senzor HY-SRF05. Tento modul umožňuje komunikaci s Arduinem pomocí dvou datových vodičů a pracuje na napájecím napětí 5 V. Co se týká proudového odběru, tak v klidu odebírá modul okolo 2 mA, zatímco při měření se můžeme dostat špičkově až na 40 mA. Měřící senzor funguje na principu vysílání a zpětné detekce signálu na frekvenci 40 kHz a tento typ pracuje s měřícím rozsahem 2 cm až cca 4,5 m. Z vlastního měření pak mohu potvrdit, že v rozsahu 3 cm až 2 m funguje modul velice přesně. Ale na větší vzdálenost už musíme počítat s tím, že nám může vzniknout zkreslení díky měřící úhlu cca 45 stupňů.
Pro úspěšné propojení měřícího modulu HY-SRF05 s Arduinem stačí propojit celkem čtyři vodiče. Propojíme VCC s 5 V Arduina, Trig s pinem D3, Echo s pinem D4 a GND se zemí Arduina. Co se týká datových pinů Trig a Echo, lze využít také jiné volné piny, ale je nutné tuto volbu také provést na začátku programu.
Pro správnou funkci uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu NewPing, návod, jak na to, je uveden zde. Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny, nastavení propojovacích pinů a definování maximální měřené vzdálenosti, která je v tomto případě 450 cm. V dalším kroku provedeme inicializaci měřícího modulu z knihovny a v podprogramu setup zahájíme komunikaci po sériové lince.
Na začátku nekonečné smyčky loop načteme do nové proměnné data o vzdálenosti mezi senzorem a předmětem. Poté po krátké pauze zkontrolujeme pomocí funkce if hodnotu načtené proměnné. Pokud je tato hodnota větší než nula, máme v měřícím rozsahu nějaký předmět, a proto v následujícím kódu provedeme pomocí funkce for změření vzdálenosti pětkrát po sobě. Přičemž při každém měření uložíme výsledek do pomocné proměnné a pro získání průměru za posledních pět měření následně vydělíme naměřený součet pětkou. Poté už jen vytiskneme informace po sériové lince. Pokud by ale začáteční kontrola zjistila v proměnné hodnotu nula, jedná se o měření mimo měřící rozsah či špatné zapojení senzoru, a proto pouze vytiskneme informaci po sériové lince a po pauze půl vteřiny přejdeme na nové měření.
// Ultrazvukový modul HY-SRF05 pro měření vzdálenosti // připojení potřebné knihovny #include <NewPing.h> // nastavení propojovacích pinů #define pinTrigger 3 #define pinEcho 4 #define maxVzdalenost 450 // inicializace měřícího modulu z knihovny NewPing sonar(pinTrigger, pinEcho, maxVzdalenost); void setup() { // zahájení komunikace po sériové lince Serial.begin(9600); } void loop() { // načtení vzdálenosti v centimetrech do vytvořené proměnné vzdalenost int vzdalenost = sonar.ping_cm(); // pauza před dalším měřením delay(50); // pokud byla detekována vzdálenost větší než 0, // provedeme další měření if (vzdalenost > 0) { vzdalenost = 0; // pro získání stabilnějších výsledků provedeme 5 měření // a výsledky budeme přičítat do proměnné vzdalenost for (int i = 0; i < 5; i++) { vzdalenost += sonar.ping_cm(); delay(50); } // v proměnné vzdálenost máme součet posledních 5 měření // a musíme tedy provést dělení 5 pro získání průměru vzdalenost = vzdalenost / 5; // vytištění informací po sériové lince Serial.print("Vzdalenost mezi senzorem a predmetem je "); Serial.print(vzdalenost); Serial.println(" cm."); } // pokud byla detekována vzdálenost 0, je předmět mimo měřící rozsah, // tedy příliš blízko nebo naopak daleko else { Serial.println("Vzdalenost mezi senzorem a predmetem je mimo merici rozsah."); delay(500); } }
Po nahrání ukázkového kódu do Arduino desky s připojeným senzorem vzdálenosti HY-SRF05 dostaneme například tento výsledek:
Vzdalenost mezi senzorem a predmetem je 24 cm. Vzdalenost mezi senzorem a predmetem je 20 cm. Vzdalenost mezi senzorem a predmetem je 16 cm. Vzdalenost mezi senzorem a predmetem je 13 cm. Vzdalenost mezi senzorem a predmetem je 10 cm. Vzdalenost mezi senzorem a predmetem je 9 cm. Vzdalenost mezi senzorem a predmetem je 7 cm. Vzdalenost mezi senzorem a predmetem je 3 cm.
Ultrazvukový modul pro měření vzdálenosti je praktickým měřícím modulem, který může najít vhodné uplatnění v projektech, kde nám jde o detekci předmětů či měření vzdálenosti. Může tedy nalézt uplatnění v projektech s vlastním zabezpečením, detekcí prostoru pro roboty či jako parkovací senzor. Jako malá nevýhoda pak může být minimální detekovatelná vzdálenost 2-3 cm nebo poměrně velký detekční úhel.
Seznam použitých komponent:
http://dratek.cz/arduino/1511-original-arduino-uno-rev3-1485165418.html