Ultrasoniczna linijka
- Opublikowano • 2 min

Jesteś w serii Lab. Prezentuję w niej moje eksperymenty, niekoniecznie w skończonej albo uporządkowanej formie.
Przykład wykorzystania sensora HC-SR04.
Zabawa z mikrokontrolerami nie musi być nudna. Tym razem na tapetę biorę czujnik ultradźwiękowy HC-SR04. To niedrogi czujnik (~7 PLN netto na dzień dziesiejszy), działający w zakresie od 2 cm do 400 cm. Nie wchodząc w szczegóły, idealnie nadaje się do projektów hobbystycznych oraz edukacyjnych.
Cały kod znajduje się w repozytorium.
Narzędziownik
- Express
- Komunikacja z Arduino Uno poprzez Johnny-Five, obsługa socketów
- JavaScript
- Aktualizacja widoku po otrzymaniu odczytu poprzez Socket.io
- Johnny-Five
- Wysokopoziomowa obsługa mikrokontrolera
- Arduino UNO
- Mikrokontroler
- HR-SR04
- Ultradźwiękowy czujnik
Po wykonaniu node example.js Johnny-Five łączy się z Arduino UNO i następuje pierwszy odczyt. Jeżeli przybliżymy coś do czujnika albo oddalimy, również wykona się event change.
function onReady() {
const proximity = new Five.Proximity({
controller: "HCSR04",
pin: "A0",
freq: 500,
});
proximity.on("change", () => {
const { cm } = proximity;
io.sockets.emit("lengthChanged", {
length: cm,
});
});
io.on("connection", function (socket) {
console.log(`Client connected: ${socket.id}`);
socket.on("disconnect", function (reason) {
console.log(`Client disconnected with reason: ${reason}`);
});
});
}
Na poniższym nagraniu oddalam przedmiot od czujnika. Czujnik nie należy do najdokładniejszych. Nie do końca wiem, dlaczego czasem są duże różnice w odczycie w sytuacji, kiedy sensor „celuje” w to samo miejsce. Wydaje mi się, że powierzchnia przedmiotu może działać jak lustro albo tak to jest z prototypowaniem (płytka prototypowa). Dla celów edukacyjnych nie ma to większego znaczenia. Prędzej czy później się dowiem.
Trochę teorii
Moduł HR-SR04 dokonuje pomiaru odległości przy pomocy fali dźwiękowej, a to pozwala na bardziej „namacalne” doświadczenie czym jest fala dźwiękowa i jak za jej pomocą zmierzyć odległość.
HC-SR04 wysyła falę dźwiękową, która odbija się od obiektu i powraca jako echo. Moduł proximity w Johnny-Five mierzy odległość w centrymetrach według wzoru:
(value / 29.1 / 2).toFixed(1);
Kontekst:
toCm: {
value(value) {
// https://www.sparkfun.com/products/13959
//
//
// From `Product features` paragraph at page 1
// 'Ultrasonic ranging module HC - SR04 provides 2cm - 400cm non-contact
// measurement function, the ranging accuracy can reach to 3mm'
return toFixed(value / 29.1 / 2, 1);
}
}
},
value:
To czas trwania w mikrosekundach (µs).
/ 29.1
Średnio fala dźwiękowa przebywa drogę 1 cm w ciągu 29.1 µs, co odpowiada prędkości 343 m/s (w temperaturze 20°C).
/ 2:
Dzielimy przez dwa, bo liczymy tam i z powrotem (odbicie się fali).
I tak odległości podane w tabeli możemy wyliczyć na podstawie przebytego czasu (value / 29.1 / 2), gdzie value to nasze mikrosekundy.
| Odległość (cm) | Czas (µs) |
|---|---|
| 10 | 582 |
| 20 | 1164 |
| 50 | 2910 |
| 100 | 5820 |
| 400 | 23280 |
Połączenie


Zwróć uwagę na to, że piny TRIG i ECHO są połączone przez opornik 2,2 kΩ do jednego pinu A0. Więcej informacji
Cześć! Jestem otwarty na nowe wyzwania zawodowe.
Brzmi interesująco? Skontaktuj się ze mną poprzez poprzez LinkedIn
Jak jeszcze wykorzystać czujnik?
- Mierzenie objętności cieczy.
- Radar: czujnik zamontowany na serwo.
- Zmiana toru jazdy po wykryciu przeszkody.
- Mierzenie dzieci :-)