Ultrazvukový vodotěsný modul pro měření vzdálenosti JSN-SR04T

Ultrazvukový vodotěsný modul pro měření vzdálenosti obsahuje měřící senzor JSN-SR04T. 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 5 mA, zatímco při měření se můžeme dostat až na 30 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 25 cm až cca 4,5 m. Z vlastního měření pak mohu potvrdit, že v rozsahu 25 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ímu úhlu cca 45 stupňů.

Pro úspěšné propojení měřícího modulu JSN-SR04T s Arduinem stačí propojit celkem čtyři vodiče. Propojíme 5V 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ý vodotěsný modul pro měření vzdálenosti
// JSN-SR04T

// 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 JSN-SR04T dostaneme například tento výsledek:

Vzdalenost mezi senzorem a predmetem je 207 cm.
Vzdalenost mezi senzorem a predmetem je 199 cm.
Vzdalenost mezi senzorem a predmetem je 43 cm.
Vzdalenost mezi senzorem a predmetem je 43 cm.
Vzdalenost mezi senzorem a predmetem je 43 cm.
Vzdalenost mezi senzorem a predmetem je 42 cm.

Ultrazvukový vodotěsný modul pro měření vzdálenosti je praktickým měřícím modulem, který může najít vhodné uplatnění například při detekci předmětů ve venkovním prostředí nebo obecně tam, kde by běžné senzory vzdálenosti mohly být poškozeny vlhkostí. Může tedy nalézt uplatnění v projektech s vlastním zabezpečením, detekcí okolního prostoru pro roboty či jako parkovací senzor. Jako malá nevýhoda pak může být brána minimální detekovatelná vzdálenost 25 cm nebo poměrně velký detekční úhel.

 

Seznam použitých komponent:

http://dratek.cz/arduino/1511-original-arduino-uno-rev3-1485165418.html

http://dratek.cz/arduino/1306-ultrazvukovy-vodotesny-modul-pro-mereni-vzdalenosti-pro-arduino-1464639497.html

Další podobné články