Search Code

ESP32 บทเรียน 19/55 - การตรวจจับสิ่งกีดขวางโดยใช้เซนเซอร์อินฟราเรด | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

ESP32 บทเรียน 19/55 - การตรวจจับสิ่งกีดขวางโดยใช้เซนเซอร์อินฟราเรด | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีใช้เซนเซอร์ตรวจจับสิ่งกีดขวางอินฟราเรดร่วมกับโมดูล ESP32 เพื่อตรวจจับสิ่งกีดขวาง โปรเจกต์นี้จะสาธิตวิธีที่เซนเซอร์สามารถสั่งให้ออดส่งเสียงเมื่อตรวจพบสิ่งกีดขวาง การตั้งค่านี้จะแสดงสถานะการตรวจจับบนซีเรียลมอนิเตอร์ด้วย ซึ่งเป็นวิธีที่ชัดเจนและโต้ตอบได้ในการสังเกตการทำงานของเซนเซอร์

เราจะทำงานร่วมกับชุดเรียนรู้ IoT ESP32 ของ SunFounder ซึ่งประกอบด้วยไมโครคอนโทรลเลอร์ ESP32 ที่มาพร้อมความสามารถ Wi-Fi และบลูทูธ เซนเซอร์อินฟราเรดทำงานโดยการส่งแสงอินฟราเรดออกไป ซึ่งจะสะท้อนกลับจากสิ่งกีดขวางที่อยู่ใกล้เคียง เมื่อแสงสะท้อนกลับมา เซนเซอร์จะส่งสัญญาณเอาต์พุตที่เราจะอ่านในโค้ดของเรา เราจะรวมออดที่ทำงานเมื่อตรวจพบสิ่งกีดขวาง เพื่อให้มีสัญญาณเตือนที่ได้ยิน

อธิบายฮาร์ดแวร์

ส่วนประกอบหลักของโปรเจกต์นี้ประกอบด้วยโมดูล ESP32 เซนเซอร์ตรวจจับสิ่งกีดขวางอินฟราเรด และออด โมดูล ESP32 ทำหน้าที่เป็นหน่วยประมวลผลกลาง จัดการอินพุตจากเซนเซอร์และควบคุมเอาต์พุต สามารถจ่ายไฟด้วยแบตเตอรี่ลิเธียม ทำให้พกพาสะดวกและยืดหยุ่นสำหรับการใช้งานต่างๆ

เซนเซอร์ตรวจจับสิ่งกีดขวางอินฟราเรดประกอบด้วยตัวส่งและตัวรับ ตัวส่งจะปล่อยแสงอินฟราเรด ในขณะที่ตัวรับจะตรวจจับแสงที่สะท้อนจากวัตถุใกล้เคียง เมื่อมีสิ่งกีดขวาง ขาพินเอาต์พุตของเซนเซอร์จะเปลี่ยนเป็นสถานะต่ำ ส่งสัญญาณให้ ESP32 ดำเนินการ เช่น เปิดออด

รายละเอียดจากดาต้าชีต

ผู้ผลิตSunFounder
หมายเลขชิ้นส่วนเซนเซอร์ตรวจจับสิ่งกีดขวางอินฟราเรด
แรงดันไฟฟ้าที่ใช้งาน3.3 V - 5 V
ประเภทเอาต์พุตดิจิทัล (ต่ำเมื่อตรวจพบสิ่งกีดขวาง)
ระยะการตรวจจับสูงสุด 20 ซม.
เวลาตอบสนองน้อยกว่า 10 มิลลิวินาที
แพ็คเกจโมดูล

  • แหล่งจ่ายไฟ: 3.3 V ถึง 5 V สำหรับการทำงาน
  • สัญญาณเอาต์พุตเปลี่ยนเป็นต่ำเมื่อตรวจพบสิ่งกีดขวาง
  • ปรับความไวได้ผ่านโพเทนชิโอมิเตอร์
  • ระยะการตรวจจับทั่วไปสูงสุด 20 ซม.
  • เวลาตอบสนองรวดเร็วต่ำกว่า 10 มิลลิวินาที

คำแนะนำการเดินสายไฟ

ESP32-19-obstacle_voide-wiring

ในการเดินสายไฟเซนเซอร์ตรวจจับสิ่งกีดขวางอินฟราเรดเข้ากับ ESP32 ให้เริ่มต้นโดยเชื่อมต่อขา VCC ของเซนเซอร์เข้ากับขา 5V บน ESP32 จากนั้นเชื่อมต่อขา GND ของเซนเซอร์เข้ากับขา GND ขาใดขาหนึ่งบน ESP32 สุดท้าย เชื่อมต่อขา OUT ของเซนเซอร์เข้ากับขา GPIO 14 บน ESP32

สำหรับออด ให้เชื่อมต่อขั้วลบเข้ากับ GND และขั้วบวกเข้ากับขา GPIO 27 ตรวจสอบให้แน่ใจว่าการเชื่อมต่อทั้งหมดแน่นหนาและเซนเซอร์ได้รับไฟอย่างถูกต้อง การเดินสายไฟควรตรงไปตรงมา เนื่องจากเซนเซอร์และออดต้องการเพียงการเชื่อมต่อไฟและสัญญาณอย่างง่าย

ตัวอย่างโค้ดและคำอธิบาย

ในโค้ด อันดับแรกเรากำหนดขาที่เชื่อมต่อกับเซนเซอร์ตรวจจับสิ่งกีดขวาง โดยใช้ตัวระบุ avoidPin ตั้งค่าเป็น 14 เรายังประกาศตัวแปร avoidState เพื่อเก็บสถานะเอาต์พุตของเซนเซอร์

const int avoidPin = 14;  // หมายเลขขาของโมดูลหลีกเลี่ยง

int avoidState = 0;

ในฟังก์ชัน setup เราจะเริ่มต้นการสื่อสารซีเรียลและตั้งค่า avoidPin เป็นอินพุต ซึ่งช่วยให้ ESP32 อ่านสถานะเอาต์พุตของเซนเซอร์ได้

void setup() {
  Serial.begin(115200);  
  pinMode(avoidPin, INPUT);
}

ภายในฟังก์ชัน loop เราจะอ่านเอาต์พุตของเซนเซอร์อย่างต่อเนื่องโดยใช้ digitalRead(avoidPin) และเก็บผลลัพธ์ไว้ใน avoidState ค่านี้จะถูกพิมพ์ไปยังซีเรียลมอนิเตอร์ ทำให้เราเห็นเมื่อตรวจพบสิ่งกีดขวาง (เอาต์พุตจะเป็น 0) หรือไม่พบ (เอาต์พุตจะเป็น 1)

void loop() {
  avoidState = digitalRead(avoidPin);
  Serial.println(avoidState);
}

สำหรับโค้ดเต็ม โปรดดูส่วนการโหลดด้านล่างบทความ

การสาธิต / สิ่งที่คาดหวัง

เมื่อการตั้งค่าเสร็จสมบูรณ์และอัปโหลดโค้ดแล้ว คุณควรเห็นซีเรียลมอนิเตอร์แสดง 0 หรือ 1 ขึ้นอยู่กับว่าตรวจพบสิ่งกีดขวางหรือไม่ เมื่อมีสิ่งกีดขวางอยู่ในระยะการตรวจจับ เอาต์พุตจะอ่านค่าเป็น 0 และออดจะดังขึ้น หากนำสิ่งกีดขวางออก เอาต์พุตจะอ่านค่าเป็น 1 และออดจะหยุด ฟังก์ชันนี้สาธิตในวิดีโอ (ในวิดีโอที่เวลา 12:30)

ปัญหาทั่วไปอาจรวมถึงการเดินสายไฟที่ไม่ถูกต้อง ซึ่งอาจทำให้เซนเซอร์ทำงานไม่ถูกต้อง หรืออัตราบอดไม่ตรงกันในซีเรียลมอนิเตอร์ ทำให้ข้อมูลไม่แสดงอย่างถูกต้อง ตรวจสอบประเด็นเหล่านี้หากคุณพบปัญหา

ไทม์สแตมป์วิดีโอ

  • 00:00 เริ่มต้น
  • 1:57 แนะนำโปรเจกต์
  • 4:33 การเดินสายไฟเซนเซอร์หลีกเลี่ยงสิ่งกีดขวาง
  • 5:55 โค้ด Arduino สำหรับการหลีกเลี่ยงสิ่งกีดขวาง
  • 7:36 การเลือกบอร์ด ESP32 และพอร์ต COM ใน Arduino IDE
  • 9:18 การสาธิตโปรเจกต์
  • 10:42 การปรับความไวเพิ่มระยะ
  • 12:39 การดำเนินการเมื่อตรวจพบสิ่งกีดขวาง
  • 14:24 การใช้ออดเมื่อตรวจพบสิ่งกีดขวาง

ภาพ

ESP32-19-obstacle_voide-schematic
ESP32-19-obstacle_voide-schematic
ESP32-19-obstacle_voide-wiring
ESP32-19-obstacle_voide-wiring
818-ESP32 Tutorial 19/55- Arduino code for obstacle avoidance module
ภาษา: C++
// set pin
const int avoidPin = 14;  // the number of the avoid avoid module pin

// variable for storing the avoid status 
int avoidState = 0;

void setup() {
  Serial.begin(115200);  
  // initialize the avoid pin as an input
  pinMode(avoidPin, INPUT);
}

void loop() {
  // read the state of the avoid value
  avoidState = digitalRead(avoidPin);
  Serial.println(avoidState);
}

แหล่งข้อมูลและเอกสารอ้างอิง

ไฟล์📁

ไม่มีไฟล์ที่พร้อมใช้งาน