4.3.ULTRASONIK MASOFA SENSOR. Ultrasonik masofa sensori masofalarni o‘lchash uchun ESPHome bilan HC-SR04 ( ma'lumotlar jadvali , SparkFun ) kabi oddiy ultratovush sensorlaridan foydalanish imkonini beradi . Bu datchiklar odatda ikki metrdan ko‘proq narsani o‘lchay olmaydi va ba'zida zerikarli bosish tovushlarini chiqarishi mumkin.
Ushbu sensor platformasi ma'lum bir pinda tetik puls yuborilishi mumkin bo‘lgan sensorni kutadi va o‘lchov olingandan so‘ng aks-sado pulsini yuboradi . Chunki ba'zan (masalan, hech qanday ob'ekt aniqlanmasa) aks-sado pulsi qaytarilmaydi, bu sensorda qiymatlarni qancha kutish kerakligini ko‘rsatadigan vaqt tugashi opsiyasi ham mavjud.
sensor:
- platform: ultrasonic
trigger_pin: D1
echo_pin: D2
name: "Ultrasonic Sensor"
Konfiguratsiya oʻzgaruvchilari:
trigger_pin ( Majburiy , Pin sxemasi ): Vaqti-vaqti bilan tetik pulsini yuborish uchun chiqish pin.
echo_pin ( Majburiy , Pin sxemasi ): aks-sado kutiladigan kirish pin.
nom ( Majburiy , string): Sensorning nomi.
update_interval ( Ixtiyoriy , Vaqt ): Sensorni tekshirish oralig'i. Birlamchi 60s.
Sensordan boshqa barcha variantlar .
Kengaytirilgan variantlar:
Vaqt tugashi ( ixtiyoriy , float): Vaqt tugashi uchun hisoblagichlar soni. Ko‘pgina datchiklar faqat 2 metrgacha his qila oladi. Standart 2 metrgacha.
pulse_time ( Ixtiyoriy , Vaqt ): Trigger pinining faol bo‘lish muddati. Birlamchi 10us.
id ( ixtiyoriy , ID ): Kod yaratish uchun ishlatiladigan identifikatorni qo‘lda belgilang.
Ushbu tajribada masofani o‘lchash uchun ultratovushli sensorni ko‘rib chiqamiz va WH1602 LCD displeyida datchik ko‘rsatkichlarini ko‘rsatish uchun loyiha yaratamiz.
Ultrasonik masofani o‘lchash vositasi HC-SR04 (4.7-rasm) - bu bitta plataga joylashtirilgan ultratovush signalining qabul qiluvchisi va uzatuvchisi. Emiter to‘siqdan aks etgan holda qabul qiluvchiga urilgan signalni hosil qiladi. Signalning ob’ektga va orqaga o‘tish vaqtini o‘lchash orqali siz masofani taxmin qilishingiz mumkin. Qabul qilgich va uzatgichdan tashqari, platada ushbu sensor bilan ishlashni sodda va qulay qilish uchun zarur bog’lash ham mavjud.
4.7-rasm: Ultrasonik masofani o‘lchash
HC-SR04 ultratovush masofadan o‘lchagichining xususiyatlari:
Ma’lumotlarni olish bo‘yicha harakatlar ketma-ketligi quyidagicha:
Bizning tajribamizda MQ4 sensorini Arduino platasiga ulab, uning gazlar mavjudligiga qanday ta’sir qilishini ko‘rib chiqamiz. Sensorning ulanish diagrammasi 4.8-rasmda.
masofani o‘lchash moslamasi ichida kirish impulsi 40 kHz chastotali 8 ta impulsga aylantiriladi va T emiteri orqali oldinga yuboriladi;
to‘siqqa etib borganimizda, yuborilgan impulslar aks ettiriladi va qabul qiluvchida R qabul qilinadi, natijada biz Echo pinida chiqish signalini olamiz;
to‘g’ridan-to‘g’ri qo‘mondon tomonida biz qabul qilingan signalni quyidagi formula bo‘yicha masofaga tarjima qilamiz:
–– impuls kengligi (ms) / 58 = masofa (sm);
–– impuls kengligi (µs) / 148 = masofa (dyuym).
Bizning tajribamizda biz Arduino taxtasiga 1 m dan kam masofada yaqinlashganda eshitiladigan signalni yaratamiz. Datchik aylanayotgan servo qo‘lida joylashgan va maydonni 180 ° ko‘rish burchagi bilan kuzatib boradi. Agar datchik ob’ektni 1 m radiusda aniqlasa, piezo emitentga ovozli signal yuboriladi, servoning aylanishi to‘xtaydi. Elementlarning ulanish diagrammasi 4.8-rasmda
4.8-rasm: Ovozli signalizatsiya uchun elementlarning ulanish diagrammasi
Sketchni yozishda biz Servo kutubxonasidan servo disk va Ultrasonik kutubxona bilan ishlash uchun foydalanamiz.Arduino uchun HC-SR04 sensori bilan ishlash uchun tayyor kutubxona mavjud - Ultrasonik.
Ultrasonik konstruktor ikkita parametrni oladi: navbati bilan Trig va Echo pinlari ulangan pin raqamlari:
Ultrasonik ultratovushli (12.13);
#include // Servo kutubxonasini ulash
Servo servo1;
const int pinServo=8; // servoni ulash uchun pin
int pos = 0; // servo holatini saqlash uchun o‘zgaruvchan
int dir =1; // servo harakatining yo‘nalishi
// HC-SR04 Trig - 12, Echo - 13 ni ulash uchun pinlar
Ultrasonic ultrasonic(12, 13);
float dist_cm; // masofa uchun o‘zgaruvchan, sm
// karnayni 9-pinga ulang
int speakerPin = 9;
void setup()
{
// servo1 o‘zgaruvchisini pinServo1 piniga ulang
servo1.attach(pinServo1);
pinMode(speakerPin, OUTPUT);
}
void loop()
{
servo1.write(pos); // servolarni olingan burchakka burish delay(15); // servolarning aylanishini kutish uchun pauza
float dist_cm = ultrasonic.Ranging(CM);
if(dist_cm<100 && dist_cm>20)
tone(speakerPin,); // piezo signalini yoqing
else
{
tone(speakerPin,0); // piezo signalini o‘chirib qo‘ying
pos=pos+dir; // o‘zgaruvchan servo pozitsiyasi
if(pos==0 || pos==180
dir=dir*(-1); // harakat yo‘nalishini o‘zgartirish
}
Ulanish tartibi:
1. Biz HC-SR04 masofa sensorini servoga biriktiramiz.
2. Biz HC-SR04 datchigi, piezo signal va servolarni
Arduino platasiga 4.8-rasmdagi sxema bo‘yicha ulaymiz.
3. 37 darsdan sketchni Arduino platasiga yuklang.
4. Biz servoning davr harakatini kuzatamiz, obyekt HCSR04 datchigi ko‘rish maydoniga kirganda, piezosignal beradi, servo to‘xtaydi, obyekt datchik ko‘rinishidan
g’oyib bo‘lganda, servo yana harakatlana boshlaydi.
100>15>