กลับไปหน้ารวมไฟล์
interfacing-ultrasonic-sensor-with-arduino-uno-624119.md

ชื่อโปรเจกต์: การเชื่อมต่อ Ultrasonic sensor กับ Arduino Uno

ก่อนอื่น เราต้องรู้ก่อนว่า Ultrasonic sensor คืออะไร?

Ultrasonic sensor วัดระยะทางของวัตถุเป้าหมายโดยการปล่อยคลื่นเสียง Ultrasonic และแปลงเสียงที่สะท้อนกลับมาเป็นสัญญาณไฟฟ้า คลื่น Ultrasonic ถูกนิยามว่าเป็น "เสียงที่มนุษย์ไม่ได้ยินซึ่งมีความถี่สูง" Ultrasonic sensors มีส่วนประกอบหลักสองส่วน ได้แก่ ตัวส่ง (Trigger pin) และตัวรับ (Echo pin) ตัวส่งจะแปลงสัญญาณไฟฟ้าเป็นคลื่น Ultrasonic ส่วนตัวรับจะแปลงคลื่น Ultrasonic เป็นสัญญาณไฟฟ้า และ Transceiver สามารถทั้งส่งและรับคลื่น Ultrasonic ได้ Ultrasonic sensor มี 4 pins ได้แก่ Gnd, Vcc, Trigger และ Echo โดย Gnd ถือเป็น pin ขั้วลบและเชื่อมต่อกับ ground ของระบบ Vcc จะจ่ายไฟให้กับ sensor โดยทั่วไปคือ 3.3 V ส่วน Trigger ทำหน้าที่เป็นตัวส่ง และ Echo ทำหน้าที่เป็นตัวรับ

การทำงานและแผนภาพ pin ของ Ultrasonic sensor....

Arduino Uno คือบอร์ด Microcontroller ที่ใช้ ATmega328 เป็นหลัก มี digital input/output pins 20 pin (ซึ่ง 6 pin สามารถใช้เป็น PWM outputs และ 6 pin สามารถใช้เป็น analog inputs ได้), resonator ขนาด 16 MHz, ช่องเชื่อมต่อ USB, ช่องเสียบปลั๊กไฟ, in-circuit system programming (ICSP) header และปุ่ม reset

Arduino Uno

กล่าวอย่างง่ายที่สุด Light-Emitting Diode (LED) คืออุปกรณ์ Semiconductor ที่เปล่งแสงออกมาเมื่อมีกระแสไฟฟ้าไหลผ่าน แสงจะเกิดขึ้นเมื่ออนุภาคที่นำกระแสไฟฟ้า (ที่เรียกว่า electrons และ holes) รวมตัวกันภายในวัสดุ Semiconductor โดย LED มีสองขั้ว ได้แก่ ขั้วบวกและขั้วลบ

Buzzer หรือ Beeper คืออุปกรณ์ส่งสัญญาณเสียง ซึ่งอาจเป็นแบบ mechanical, electromechanical หรือ piezoelectric (เรียกสั้นๆ ว่า piezo) การใช้งานทั่วไปของ Buzzers และ Beepers ได้แก่ อุปกรณ์เตือนภัย, Timers และการยืนยันการป้อนข้อมูลของผู้ใช้ เช่น การคลิกเมาส์ หรือการกดปุ่ม Buzzer มีสองขั้ว ได้แก่ ขั้วบวกและขั้วลบ

ตอนนี้เรามาเริ่มทำวงจรกันเลย:

การเชื่อมต่อ Ultrasonic sensor -

Vcc ไปยัง 3.3 V ของ Arduino

Gnd ไปยัง Gnd ของ Arduino

Trigger ไปยัง digital pin 1 ของ Arduino

Echo ไปยัง digital pin 2 ของ Arduino

การเชื่อมต่อ LED: ขั้วลบของ LED ควรเชื่อมต่อกับขาหนึ่งของ resistor และขาอีกข้างของ resistor ควรเชื่อมต่อกับ Gnd ของ Arduino

ขั้วบวกของ LED No. 1 ไปยัง digital pin 10 ของ Arduino

ขั้วบวกของ LED No. 2 ไปยัง digital pin 9 ของ Arduino

ขั้วบวกของ LED No. 3 ไปยัง digital pin 8 ของ Arduino

การเชื่อมต่อ Buzzer:

ขั้วบวกของ Buzzer ไปยัง digital pin 3 ของ Arduino

Negative pin ไปยังขาหนึ่งของ resistor

ขาอีกข้างของ resistor ไปยัง Gnd ของ Arduino

โปรดดูแผนภาพวงจรเพื่อความเข้าใจที่ดียิ่งขึ้น:

แผนภาพวงจรสำหรับวงจรนี้

แผนภาพวงจรถูกอัปโหลดไว้ในส่วน Hardware นี่คือ Code สำหรับโปรเจกต์นี้:

int trigPin = 1;// Trigger pin of Ultrasonic sensor to digital pin 1 of Arduino.
int echoPin = 2;// Echo pin of Ultrasonic sensor to digital pin 2 of Arduino.
int buzzer = 3;// Buzzer positive terminal to digital pin 3 of Arduino.
int LED1 = 10;// Led 1 positive terminal to digital pin 10 of Arduino.
int LED2 = 9;// Led 2 positive terminal to digital pin 9 of Arduino.
int LED3 = 8;// Led 3 positive terminal to digital pin 10 of Arduino.
long duration;
int distance;
void setup()
{
pinMode(trigPin, OUTPUT); // Leds and buzzer is output here. // Arduino and Ultrasonic sensor is input here.
pinMode(echoPin, INPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance= duration*0.034/2;
if(distance<=10){
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,HIGH);
tone(buzzer, 2500);
}
else if (distance<=20){
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,LOW);
tone(buzzer, 2500);
delay(50);
noTone(buzzer);
delay(50);
}
else if(distance<=35){
digitalWrite(LED1,HIGH);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
tone(buzzer, 2500);
delay(250);
noTone(buzzer);
delay(250);
}
else{
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
noTone(buzzer);
}
Serial.print("Distance from the object = ");
Serial.print(distance);
Serial.println(" cm");
delay(1000);
}

.

รายละเอียดทางเทคนิคเพิ่มเติม

ตรรกะพื้นฐานของการวัดระยะด้วย Sonar

การเจาะลึกทางเทคนิคเกี่ยวกับฟิสิกส์ของการเดินทางของเสียงและการวัดระยะทางในระบบนิเวศของ Arduino

  • Time-of-Flight (ToF) Calculation: Arduino จะทริกเกอร์พัลส์ 10µs จาก Trigger pin ของ HC-SR04 จากนั้นจะบันทึกระยะเวลาเป็นไมโครวินาทีที่แน่นอนของ Echo pulse ที่เข้ามา สูตร $(Duration imes 0.034) / 2$ ใช้ในการคำนวณระยะทางเป็นเซนติเมตร
  • Non-Blocking Ranging: (เวอร์ชันขั้นสูง) ใช้ NewPing library ซึ่งใช้ Timer interrupts แทนการ busy-waiting ทำให้ Arduino สามารถทำงานอื่นๆ ได้ (เช่น การอัปเดตจอแสดงผล) ในขณะที่รอ Sonic echo

ฮาร์ดแวร์ ฮับ

  • Signal Filtering Matrix: ใช้ "Median Filter" ที่รับค่า pings ติดต่อกัน 5 ครั้งและละเว้นค่าที่ผิดปกติ เพื่อให้มั่นใจว่าการอ่านค่าระยะทางมีเสถียรภาพและปราศจากสัญญาณรบกวนสำหรับการใช้งานด้าน Robotics หรือระบบรักษาความปลอดภัย

ข้อมูล Frontmatter ดั้งเดิม

title: "Interfacing ultrasonic sensor with Arduino uno"
description: "In this tutorial we are going to see how to interface Arduino Uno with Ultrasonic sensor. So let's start !!!"
author: "electronicsfan123"
category: ""
tags:
  - "arduino uno"
  - "ultrasonic sensor"
  - "electronics"
views: 3497
likes: 1
price: 1120
difficulty: "Intermediate"
components:
  - "1x 5 mm LED: Green"
  - "1x Buzzer"
  - "1x Ultrasonic Sensor - HC-SR04 (Generic)"
  - "1x LED, Blue Green"
  - "1x 5 mm LED: Red"
  - "1x Breadboard (generic)"
  - "1x Jumper wires (generic)"
  - "1x Arduino UNO"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "1cf79664bdccaae1ce018c89ed7450740f498d223497546bf0cd13ffc692d347"
encryptedPayload: "U2FsdGVkX1/JIzpYvSgPE9NAuSSjmIOdVM5mLzQZ8GI+5oY05ysPH6XlDDcXgRMeb6slExV+F8f5M1a6SwNdY5Ckh19NfOSL+KB4s0AM4hs="
seoDescription: "Learn how to interface an Ultrasonic sensor with Arduino Uno in this step-by-step tutorial. Perfect for beginners starting with Arduino projects."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/interfacing-ultrasonic-sensor-with-arduino-uno-624119_cover.jpg"
lang: "th"