JSN -SR04T je snadno použitelný vodotěsný ultrazvukový senzor vzdálenosti s dosahem 25 až 450 cm. Lze jej použít pro měření hladiny vody nebo venkovního měření vzdálenosti .
Senzor JSN-SR04T se používá v různých aplikacích, včetně autonomního řízení, predikce nehod, detekce pohybu a další.
Vodotěsná vlastnost z něj dělá senzor vhodný pro venkovní použití.
Základy snímače JSN-SR04T
Běžně dostupné snímače JSN-SR04T jsou zobrazeny na obrázku níže. Snímač není přímo součástí CB, ale je odnímatelný. Umožňuje umístit senzor (nárazník vozidla) a chránit PCB před drsným prostředím.
Ultrazvukový senzor vzdálenosti funguje tak, že vysílá ultrazvukové vlny. Tyto ultrazvukové vlny se odrážejí zpět od objektu a ultrazvukový senzor je detekuje. Načasováním času, který uplynul mezi odesláním a příjmem zvukových vln, můžete vypočítat vzdálenost mezi senzorem a objektem.
Snímač JSN-SR04T podporuje více režimů provozu. Jedním z režimů je režim HC-SR04, který přijímá spouštěcí signál a poskytuje echo signální impuls odpovídající době, kterou zvuk potřebuje, aby se pohyboval a odrazil jakýkoli předmět.
Níže uvedený obrázek ukazuje schéma vývodů modulu vodotěsného ultrazvukového senzoru JSN-SR04T.
JSN-SR04T Provozní režimy
Režim 0 snímače JSN-SR04T
V režimu 0 senzor napodobuje činnost ultrazvukového senzoru HC-SR04. Toto je výchozí režim, ve kterém je PCB implicitně dostupné.
Režim 1 snímače JSN-SR04T
Ultrazvukový senzor sám vypočítá vzdálenost a sériově sdělí naměřenou hodnotu? To dělá režim 1.
Stačí přijímat naměřenou vzdálenost ze senzoru přímo přes sériový port.
Chcete-li aktivovat režim 1, propojte malé plošky související s padem M1.
Header | Data 1 | Data 0 | Kontrolní součet |
0xFF, označuje začátek dat bloku | Vyšší bajt 16bitových dat | Dolní bajt 16bitových dat | Součet všech tří bajtů |
Režim 2 snímače JSN-SR04T
Tento režim je stejný jako režim 1. V tomto případě nejsou data snímačem odesílána automaticky. Musíte odeslat požadavek přes sériový port.
Chcete-li aktivovat režim 2, zkratujte malé pady související s padem M2.
Režim 3 snímače JSN-SR04T
Režim 3 je stejný jako režim 1 (režim HC-SR04). Zde nebude čekat na spouštěcí signál od hostitele (ESP32). Automaticky se spustí každých 200 ms a poskytne vám puls na echo vstupu.
Chcete-li aktivovat režim 3, umístěte odpor 200 kOhm na podložku „mode“.
Režim 4 snímače JSN-SR04T
Režim 4 je stejný jako režim 1 (režim HC-SR04) s velmi nízkou spotřebou energie.
Chcete-li aktivovat režim 4, umístěte odpor 360 k ohmů na podložku „mode“.
Režim 5 snímače JSN-SR04T
Režim 5 funguje jako předem nakonfigurovaný přepínač. Echo pin se přepne, když senzor detekuje jakýkoli objekt ve vzdálenosti 1,5 m.
Chcete-li aktivovat režim 5, umístěte odpor 470 kΩ na podložku „mode“.
Vlastnosti senzoru JSN-SR04T
Zde jsou vlastnosti snímače JSN-SR04T shrnuté v tabulce.
Provozní napětí | 5 V |
Provozní proud | 30 mA |
Klidový proud | 5 mA |
Frekvence | 40 kHz |
Rozsah měření | 25-450 cm |
Rozlišení | 2 mm |
Úhel měření | 45-75 stupňů |
Rozměry snímače | 23,5 x 20 mm, 2,5 m dlouhý kabel |
Rozměry PCB | 41 x 28,5 mm |
Montážní otvor | 18 mm |
Aplikace snímače JSN-SR04T
Ultrazvukové senzory se používají v různých aplikacích. Senzory pomáhají šetřit energii, zlepšují uživatelský komfort a zvyšují pohodlí a bezpečnost. Zde jsou některé běžné aplikace:
Měření vzdálenosti: Měření vzdálenosti je klíčovou funkcí ultrazvukového senzoru, který je užitečný při parkování, robotické navigaci a automatizaci v průmyslu.
Detekce objektů: Senzor JSN-SR04T můžete použít k detekci objektů, pohybu domácích mazlíčků, bezpečnostních systémů k detekci osob na omezených místech atd.
Měření hladiny: Senzor můžete použít k detekci měření hladiny kapalin v nádržích, průmyslových kotlích a počtu položek zbývajících v nádobách.
Funkce JSN-SR04T
Chcete-li senzor ovládat, musíte jej nastavit Trig
na HIGH po dobu alespoň 10 mikrosekund. To způsobí, že deska vyšle osm ultrazvukových impulsů (sonic burst).
Pokud je přijat odražený zvuk (ozvěna), Echo
výstup přejde na VYSOKOU úroveň a vzdálenost lze vypočítat jako
vzdálenost = čas na vysoké úrovni * 340 m/s / 2
kde 340 m/s je rychlost zvuku. Tento vzorec je použite v níže uvedeném kódu, ale protože budeme měřit vzdálenost v cm, konstanta bude 0,034 cm/s.
případě JSN-SR04T by cíl měl mít velikost alespoň 0,5 metru čtverečních a chcete senzor nasměrovat kolmo k cíli. Níže uvedená tabulka ukazuje specifikaci snímače, ale dejte pozor, že rozsah měření a rozlišení předpokládá ideální podmínky.
Všimněte si, že ultrazvukové senzory nejsou jako lasery se zaostřeným paprskem. Místo toho je jejich směrovost tvarována jako bublina a také vyžaduje dostatečně velký a tvrdý/reflexní povrch pro přesná měření vzdálenosti.
Připojení senzorového modulu JSN-SR04T k ESP32
Modul ultrazvukového senzoru JSN-SR04T má možnost 4pinového konektoru pro propojení s mikrokontroléry.
- Připojte kolík GND snímače ke kolíkům GND ESP32.
- Připojte kolík VCC snímače ke kolíku ESP32 5V.
- Připojte kolík GPIO5 ESP32 ke kolíku TRIG snímače.
- ECHO pin snímače jde do GPIO18 ESP32.
Piny ultrazvukového snímače JSN-SR04T | Piny ESP32 |
VCC | 5V |
TRIG | GPIO5 |
ECHO | GPIO18 |
GND | GND |
Programový kód
#define echoPin 18
#define trigPin 5
long duration;
int distance;
void setup()
{
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
Serial.println("Distance measurement using JSN-SR04T");
delay(500);
}
void loop()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.0344 / 2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(100);
}
Jak kód funguje
Nejprve je definován spouštěcí kolík a echo pin. Volám jim trigPin
a echoPin
. Spouštěcí kolík je připojen k digitálnímu kolíku 12 a kolík echa k digitálnímu kolíku 11 na Arduinu. Příkaz const
se používá k pojmenování konstantní hodnoty.
const int trigPin = 18;
const int echoPin = 5;
V setup()
, začnete inicializací sériové komunikace s přenosovou rychlostí 115200. Chcete-li zobrazit naměřenou vzdálenost na sériovém monitoru, stiskněte Ctrl+Shift+M nebo Tools > Serial Monitor. Ujistěte se, že přenosová rychlost je také nastavena na 115200 v sériovém monitoru.
Dále nastavujeme trigPin jako výstup a echoPin jako vstup.
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
V <loop()
, spustíte senzor nastavením trigPin HIGH na 20 µs. Všimněte si, že pro získání čistého signálu začněte vymazáním trigPinu jeho nastavením na LOW na 5 mikrosekund.
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
Dále musíte přečíst duration
puls odeslaný echoPin
. pulseIn()
K tomu používám funkci. Tato funkce čeká, až kolík přejde z LOW do HIGH, spustí časování, poté čeká, až kolík přejde na LOW a zastaví časování.
Poté můžete vypočítat vzdálenost pomocí vzorce uvedeného v úvodu tohoto návodu. Všimněte si, že pro rychlost zvuku používáme konstantu 0,034 (místo 340), protože chceme vzdálenost v centimetrech a ne v metrech.
long duration = pulseIn(echoPin, HIGH);
long distance = duration * 0.034 / 2;
Nakonec vytiskněte vypočítanou vzdálenost na sériovém monitoru a také ji zobrazte na plotru. Zpoždění 100 milisekund na konci zpomaluje měření na rozumnou míru.
Serial.print("Distance:");
Serial.println(distance);
delay(100);
Příklad kódu JSN-SR04T s knihovnou NewPing
Knihovnu NewPing napsanou Timem Eckelem lze použít s mnoha ultrazvukovými senzory vzdálenosti. Nejnovější verzi této knihovny lze stáhnout zde na bitbucket.org. Můžete si všimnout, že níže uvedený kód, který používá knihovnu NewPing, je mnohem kratší než kód, který jsme používali dříve.
#include "newping.h"
const int trigPin = 12;
const int echoPin = 11;
const int maxDist = 450;
NewPing sonar(trigPin, echoPin, maxDist);
void setup() {
Serial.begin(115200);
}
void loop() {
// Wait 50ms between pings (about 20 pings/sec)
delay(50);
long distance = sonar.ping_cm();
Serial.print("Distance:");
Serial.println(distance);
delay(100);
}