Arduino – czujnik odległości HC-SR04 i wykresy w czasie rzeczywistym

IMG_0752Zaopatrzyłem się ostatnio w ultradźwiękowy czujnik odległości HC-SR04. Jest tani, bo kosztuje poniżej 10 zł., podłącza się go bezpośrednio do Arduino czterema przewodami żeńsko-męskimi i mierzy on odległość od przeszkody w granicy 2-200 cm.

W sieci można znaleźć wiele opisów i przykładów podłączenia tego modułu, ja jednak w tym artykule skupię się na czymś innym. Przedstawię sposób prezentacji odczytywanych pomiarów w czasie rzeczywistym w przeglądarce internetowej. W skrócie: sygnał z czujnika trafia do Arduino, ten zaś wysyła otrzymane dane na port szeregowy. W stacji roboczej uruchomiony jest serwer w Javie odbierający informacje z portu szeregowego, który znowu je przekazuje do przeglądarki, gdzie są one odbierane przez socket.io i wyświetlane za pomocą biblioteki do wykresów.

Elementy

Tak jak pisałem wyżej elementy mojego mini-projektu to:

Zasada działania

Czujnik ultradźwiękowy składa się z dwóch podstawowych elementów: nadajnika i odbiornika:

 

IMG_0752_nadajnik_odbiornik

Sygnał wysyłany jest przez nadajnik, odbija się od przeszkody i wraca do odbiornika.

 

HC-SR04-1

Na podstawie różnicy czasu między wysłaniem i odebraniem sygnału czujnik zwraca sygnał od czasie trwania proporcjonalnym do odległości od przeszkody.

Bardziej szczegółowo

Rozpoczęcie pomiaru polega na podaniu na pin TRIG stanu wysokiego przez 10μS. Pomiar odległości wykonywany jest przy pomocy fali dźwiękowej o częstotliwości 40 kHz. Do mikrokontrolera wysyłany jest sygnał, w którym odległość zależna jest od czasu trwania stanu wysokiego i można ją obliczyć ze wzoru:

odległość = (czas trwania stanu wysokiego × prędkość rozchodzenia się fali dźwiękowej w powietrzu / 2

Prędkość rozchodzenia się fali dźwiękowej jest nam znana i wynosi 340 m/s, dlatego nasz wzór możemy zapisać jako:

odległość [cm] = (czas trwania stanu wysokiego × 34 / 1000 / 2

Fala dźwiękowa pokonuje jeden centymetr w czasie 29μs. Opisywany czujnik umożliwia kalkulację odległości na podstawie czasu trwania sygnału ECHO:

odległość [cm] = (czas trwania sygnału ECHO / 58

 

Podłączenie do Arduino

Moduł HC-SR04 można podłączyć do Arduino bezpośrednio bez żadnych dodatkowych elementów:
hcsr04

W moim przykładzie podłączyłem czujnik w następujący sposób:

sketch_bb

Program dla Arduino

Program w Javie odbierający dane z portu szeregowego i wysyłający je do przeglądarki

Program jest prawie identyczny w stosunku do wcześniej przygotowanego we wpisie opisującym zdalne sterowanie oświetleniem dlatego nie będę tu umieszczał całości kodu, tylko wybrane fragmenty.

W tamtym wpisie klasa przechowująca komendy miała nazwę Light. Tutaj nazwałem ją DistanceSensor:

Klasa do komunikacji z portem szeregowym:

Różnica między tą klasą, a poprzednią jest taka, że dodałem do niej nowy interfejs:

którego implementację należy przekazać do konstruktora. Interfejs ten jest wykorzystany w metodzie serialEvent do wysyłki odebranych danych z portu szeregowego.

Klasa uruchamiająca serwer:

 Interfejs użytkownika

Jako bibliotekę do renderowania wykresu postanowiłem wykorzystać flotcharts.org.

Strona html:

Plik distanceSensor.js odbierający dane z serwera w Javie przez socket.io:

I to tyle, nasze programy są gotowe 🙂

Tutaj przykład renderowania losowych danych przez flotchart:

Podsumowanie

Dobrnęliśmy do zaprezentowania wyniku działania naszych programów 🙂

To również może Cię zainteresować:

  • Komunikacja szeregowa dwóch Arduino przez Raspberry PIKomunikacja szeregowa dwóch Arduino przez Raspberry PI Celem ćwiczenia jest wykonanie komunikacji dwóch płytek Arduino za pomocą terminala w Raspbianie Raspberry PI. Wykorzystałem do tego Arduino Leonardo do wysyłania sygnałów oraz KAmduino […]
  • Arduino – sterowanie za pomocą aktywności mięśni dzięki Muscle Sensor 3Arduino – sterowanie za pomocą aktywności mięśni dzięki Muscle Sensor 3 Dotarła do mnie w tym tygodniu paczka z zamówionym SparkFun Muscle Sensor 3, za pomocą którego chciałem przetestować możliwość sterowania wyjściem Arduino poprzez sygnały odczytywane na […]
  • Arduino – zdalne sterowanie oświetleniemArduino – zdalne sterowanie oświetleniem W tym artykule opiszę sposób wykonania zdalnego sterowania jednym urządzeniem wpinanym do gniazdka 230V z wykorzystaniem Arduino. Wykorzystane będzie połączenie przez USB z komputerem, […]
  • Trochę elektroniki – od czego zacząć?Trochę elektroniki – od czego zacząć? Korzystając z ostatniego dnia promocji w ebookpoint.pl kupiłem sobie książkę: "Arduino. 65 praktycznych projektów" Johna Boxalla za zaledwie 32,99 zł. Tym samym rozpoczynam swoją przygodę […]
  • KAmduino UNO – polskie Arduino za 50 zł!KAmduino UNO – polskie Arduino za 50 zł! Dzięki uprzejmości firmy Kamami.pl miałem okazję przed chwilą przetestować polskie Arduino - KAmduino UNO. Przyznam, że uruchomienie układu z przykładowym programem zajęło mi dosłownie […]
  • Arduino – przyciski i szeregowy monitorArduino – przyciski i szeregowy monitor W drugim dniu zabawy z Arduino postanowiłem przede wszystkim wykonać coś do odczytu wejść. Zmontowałem układ realizujący dwa cele: Wysyłka informacji do komputera przez szeregowy […]

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *