BatRobot

batman-312342_1280

Nietoperze, walenie i okręty

Echolokacja to określanie pozycji obiektów na podstawie analizy odbitego od nich sygnału dźwiękowego (echa). Echolokacją bardzo skutecznie posługują się nietoperze oraz ssaki morskie. Badania na echolokacją zapoczątkowała katastrofa Titanica w 1912 roku. W tym też roku powstało pierwsze urządzenie mające lokalizować góry lodowe. W czasie pierwszej wojny światowej Brytyjczycy rozpoczęli badania nad echolokacją okrętów podwodnych. W dniu rozpoczęcia II wojny światowej posiadali system echolokacji o kryptonimie ASDic (od nazwy zespołu badawczego Anti-Submarine Division + “ic” końcówka od “ultrasonic”). Wraz z wybuchem II wojny światowej Brytyjczycy przekazali technologię ASDIC Amerykanom, którzy nazwali ją SONAR (SOund Navigation And Ranging). Wraz z powszechnym użyciem ASDIC rozpowszechniło się dźwiękonaśladowcze słowo “ping” na określenie dźwięku wysyłanego do obiektu. Słówko obecnie używane w informatyce. Ping to napisany w 1983 roku program sprawdzający połączenia sieciowe pomiędzy komputerami. Jego działanie polegające na wysłaniu krótkiej informacji i oczekiwaniu na odpowiedź (echo) co przypominało autorowi działanie SONARU.

Współcześnie sonary oprócz zastosowań militarnych są używane powszechnie w rybołówstwie, badaniach dna morskiego oraz w diagnostyce medycznej.

 

Ultradźwiękowe oko robota – HC-SR04

HC-SR04 to moduł ultradźwiękowego pomiaru odległości. Moduł składa się nadajnika ( Transmiter ) i odbiornika  ( Receiver ) oraz układu elektronicznego. Moduł posiada cztery wyprowadzenia:

  • Vcc – plus zasilania 5V
  • Trig – wyzwolenie pomiaru stanem wysokim (10 mikrosekund)
  • Echo – na tym pinie pojawia się stan wysoki o czasie trwania proporcjonalnym do odległości
  • Gnd – minus zasilania, GND

Aby nastąpił pomiar należy ustawić na pinie połączonym z Trig stan wysoki na 10 mikrosekund. Następnie układ wysyła sygnał pomiarowy (ping), włącza stan wysoki na wyjściu (echo) na czas aż do powrotu echa. Czas trwania stanu wysokiego na wyjściu Echo jest więc proporcjonalny do odległości.

Do obsługi modułu możemy użyć poleceń dostępnych w IDE Arduino lub specjalnej biblioteki NewPing.

Zadanie 1.

Napisać program dokonujący dwa razy na sekundę pomiaru odległości. Wynik w centymetrach przesłać przez USB na monitor portu szeregowego. Do komunikacji z czujnikiem wybrać dwa dowolne piny. Odległość w cm obliczamy ze wzoru: odległość(cm) = czasTrwaniaImpulsu(us)/58

 

Przydatne elementy języka:

  • delayMicroseconds(time) – odpowiednik polecenia delay, tyle tylko, że odmierza czas przerwy w mikrosekundach a nie milisekundach jak delay.
  • x=pulseIn(pin, value, timeout) – funkcja mierzy na pinie podanym w parametrze “pin” czas stanu (wysokiego lub niskiego podanego w parametrze “value”). W opcjonalnym parametrze timeout możemy podać maksymalny czas pomiaru. Funkcja może mierzyć czasy od 10 mikrosekund do 3 minut.

 

Zadanie 2.

Do dowolnie wybranego pinu dołączyć  buzzer i do programu z zadania 1  dopisać funkcjonalność alarmu, który będzie się włączał po przekroczeniu odległości bezpiecznej (np. 5 cm).

 

Biblioteka NewPing

 

Ultradźwiękowy czujnik odległości HC-SR04 można obsługiwać używając specjalnie napisanej w tym celu biblioteki o nazwie NewPing. Bibliotekę należy pobrać z internetu i dołączyć do bibliotek na komputerze na którym programujemy Arduino. Można to zrobić za pomocą zakładki Szkic>Dołącz bibliotekę >Dodaj bibliotekę.ZIP lub ręcznie rozpakowując plik w formacie ZIP do katalogu libraries.Aby używać biblioteki w swoim programie trzeba ją najpierw dołączyć umieszczając na początku swojego kodu polecenie #include:
#include<NewPing.h>
Następnie należy stworzyć obiekt o wybranej nazwie np: batrobot:
NewPing batrobot( trigger_pin, echo_pin, odl_maks);
Gdzie trigger_pin to numer pinu wyzwalającego pomiar, echo_pin to numer pinu mierzącego echo, odl_maks to maksymalna mierzona odległość (parametr opcjonalny).
Aby w pętli programu odczytać mierzoną odległość należy wpisać:
Odleglosc = batrobot.ping_cm();

Zadanie 3.

Napisz program z zadania 1 i 2 z użyciem biblioteki NewPing.

0 komentarzy