เซ็นเซอร์อัลตราโซนิก MicroPython HC-SR04 – ESP32 และ Thonny IDE

Sensexr Xaltra So Nik Micropython Hc Sr04 Esp32 Laea Thonny Ide



MicroPython ใช้กันอย่างแพร่หลายกับไมโครคอนโทรลเลอร์และระบบฝังตัว เราสามารถเขียนโค้ดและไลบรารีภายใน MicroPython IDE และเชื่อมต่อเซ็นเซอร์หลายตัว บทความนี้จะแนะนำคุณเกี่ยวกับการวัดระยะทางโดยใช้ ESP32 พร้อมเซ็นเซอร์ HC-SR04

ESP32 พร้อมเซ็นเซอร์อัลตราโซนิก HC-SR04 โดยใช้ MicroPython

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









การใช้ MicroPython ซึ่งเป็นภาษาที่ออกแบบสำหรับ ESP32 และไมโครคอนโทรลเลอร์อื่น ๆ เราสามารถเชื่อมต่อกับเซ็นเซอร์หลายตัวเช่น HC-SR04 . จะเขียนโค้ด MicroPython ซึ่งจะคำนวณเวลาที่คลื่น SONAR ใช้ในการเข้าถึงจากเซ็นเซอร์ไปยังวัตถุและกลับไปที่วัตถุ ต่อมาใช้สูตรระยะทาง เราสามารถคำนวณระยะทางวัตถุได้



ต่อไปนี้คือไฮไลท์หลักบางประการของเซ็นเซอร์ HC-SR04:





ลักษณะเฉพาะ ค่า
แรงดันไฟฟ้าที่ใช้งาน 5โวลต์ดีซี
กระแสไฟที่ใช้งาน 15mA
ความถี่ในการทำงาน 40KHz
ช่วงของฉัน 2ซม./1นิ้ว
ช่วงสูงสุด 400 ซม. / 13 ฟุต
ความแม่นยำ 3 มม
มุมการวัด <15 องศา

HC-SR04 พินเอาท์ HC-SR04 ประกอบด้วยสิ่งต่อไปนี้ สี่ หมุด:

  • วีซีซี: เชื่อมต่อกับพิน ESP32 Vin
  • Gnd: เชื่อมต่อกับ GND
  • หนุน: ปักหมุดรับสัญญาณควบคุมจากบอร์ด ESP32
  • เสียงก้อง: ส่งสัญญาณกลับ. บอร์ดไมโครคอนโทรลเลอร์รับสัญญาณนี้เพื่อคำนวณระยะทางโดยใช้เวลา



อัลตราโซนิกทำงานอย่างไร

หลังจากเชื่อมต่อเซ็นเซอร์ HC-SR04 กับ ESP32 สัญญาณที่ หนุน พินจะถูกสร้างขึ้นโดยบอร์ด เมื่อได้รับสัญญาณที่ขาตรีโกณของเซ็นเซอร์ HC-SR04 คลื่นอัลตราโซนิกจะถูกสร้างขึ้นซึ่งออกจากเซ็นเซอร์และกระทบวัตถุหรือตัวสิ่งกีดขวาง หลังจากกระแทกแล้วจะเด้งกลับมาที่ผิววัตถุ

  รูปภาพที่มีข้อความคำอธิบายที่สร้างขึ้นโดยอัตโนมัติ

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

  คำอธิบายข้อความที่สร้างขึ้นโดยอัตโนมัติ

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

แผนผัง

ต่อไปนี้เป็นแผนผังการเชื่อมต่อ ESP32 กับเซ็นเซอร์อัลตราโซนิก:

  รูปภาพประกอบด้วยข้อความ คำอธิบายอิเล็กทรอนิกส์ที่สร้างขึ้นโดยอัตโนมัติ

เชื่อมต่อทริกเกอร์และพิน echo ของเซ็นเซอร์กับ GPIO 5 และ GPIO 18 ของ ESP32 ตามลำดับ เชื่อมต่อพิน ESP32 GND และ Vin ด้วยพินเซ็นเซอร์

HC-SR04 อัลตราโซนิกเซนเซอร์ พิน ESP32
หนุน จีพีไอโอ 5
เสียงสะท้อน จีพีไอโอ 18
จีเอ็นดี จีเอ็นดี
วี.ซี.ซี มา

ฮาร์ดแวร์

จำเป็นต้องมีส่วนประกอบต่อไปนี้เพื่อตั้งโปรแกรมเซ็นเซอร์อัลตราโซนิก:

  • ESP32
  • HC-SR04
  • เขียงหั่นขนม
  • สายจัมเปอร์

  รูปภาพที่มีข้อความคำอธิบายที่สร้างขึ้นโดยอัตโนมัติ

วิธีการตั้งค่า Ultrasonic HC-SR04 ด้วย ESP32 โดยใช้ MicroPython

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

ขั้นตอนที่ 1: ตอนนี้เปิด Thonny IDE สร้างไฟล์ใหม่ในหน้าต่างแก้ไข ไปที่ : ไฟล์>ใหม่ หรือกด Ctrl + N .

เมื่อเปิดไฟล์ใหม่แล้ว ให้วางโค้ดต่อไปนี้ลงในหน้าต่างแก้ไข Thonny IDE

นำเข้า เครื่องจักร , เวลา
จาก เครื่องจักร นำเข้า เข็มหมุด

ระดับ HCSR04:

# echo_timeout_us อยู่ในขีดจำกัดช่วงชิป (400 ซม.)
แน่นอน __ร้อน__ ( ตัวเอง , trigger_pin , เสียงสะท้อน , echo_timeout_us = 500 * สอง * 30 ) :

ตัวเอง . echo_timeout_us = echo_timeout_us
# พินทริกเกอร์เริ่มต้น (ออก)
ตัวเอง . สิ่งกระตุ้น = เข็มหมุด ( trigger_pin , โหมด = เข็มหมุด. ออก , ดึง = ไม่มี )
ตัวเอง . สิ่งกระตุ้น . ค่า ( 0 )

# เริ่มต้น echo pin (ใน)
ตัวเอง . เสียงสะท้อน = เข็มหมุด ( เสียงสะท้อน , โหมด = เข็มหมุด. ใน , ดึง = ไม่มี )

แน่นอน _send_pulse_และ_รอ ( ตัวเอง ) :

ตัวเอง . สิ่งกระตุ้น . ค่า ( 0 ) #ทำให้เซ็นเซอร์เสถียร
เวลา . sleep_us ( 5 )
ตัวเอง . สิ่งกระตุ้น . ค่า ( 1 )
# ส่งชีพจร 10us
เวลา . sleep_us ( 10 )
ตัวเอง . สิ่งกระตุ้น . ค่า ( 0 )
ลอง :
ชีพจร_เวลา = เครื่องจักร. time_pulse_us ( ตัวเอง . เสียงสะท้อน , 1 , ตัวเอง . echo_timeout_us )
กลับ ชีพจร_เวลา
ยกเว้น ข้อผิดพลาด เช่น อดีต:
ถ้า อดีต. หาเรื่อง [ 0 ] == 110 : # 110 = หมดเวลา
ยก ข้อผิดพลาด ( 'ไม่อยู่ในขอบเขต' )
ยก อดีต

แน่นอน ระยะทาง_มม ( ตัวเอง ) :

ชีพจร_เวลา = ตัวเอง ._send_pulse_and_wait ( )

มม = ชีพจร_เวลา * 100 // 582
กลับ มม

แน่นอน ระยะทาง_ซม ( ตัวเอง ) :

ชีพจร_เวลา = ตัวเอง ._send_pulse_and_wait ( )

ซม = ( ชีพจร_เวลา / สอง ) / 29.1
กลับ ซม

ขั้นตอนที่ 2: หลังจากเขียน ห้องสมุด โค้ดภายในหน้าต่างตัวแก้ไขตอนนี้เราต้องบันทึกไว้ในอุปกรณ์ MicroPython

  ข้อความคำอธิบายแอปพลิเคชันที่สร้างขึ้นโดยอัตโนมัติ

ขั้นตอนที่ 3: ไปที่ : ไฟล์>บันทึก หรือกด Ctrl + S .

  ส่วนติดต่อผู้ใช้แบบกราฟิก แอปพลิเคชัน คำอธิบายของ Teams สร้างขึ้นโดยอัตโนมัติ

ขั้นตอนที่ 4: หน้าต่างใหม่จะปรากฏขึ้น ตรวจสอบให้แน่ใจว่า ESP32 เชื่อมต่อกับพีซี เลือกอุปกรณ์ MicroPython เพื่อบันทึกไฟล์ไลบรารี

  ส่วนติดต่อผู้ใช้แบบกราฟิก คำอธิบายของแอปพลิเคชันที่สร้างขึ้นโดยอัตโนมัติ

ขั้นตอนที่ 5: บันทึกไฟล์ไลบรารีอัลตราโซนิกพร้อมชื่อ hcsr04.py แล้วคลิก ตกลง .

  ส่วนติดต่อผู้ใช้แบบกราฟิก คำอธิบายของแอปพลิเคชันที่สร้างขึ้นโดยอัตโนมัติ

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

รหัสสำหรับ Ultrasonic Sensor โดยใช้ MicroPython

สำหรับรหัสเซ็นเซอร์อัลตราโซนิกให้สร้างไฟล์ใหม่ ( Ctrl + N ). ในหน้าต่างตัวแก้ไข ให้ป้อนรหัสที่ระบุด้านล่างและบันทึกไว้ใน main.py หรือ boot.py ไฟล์. รหัสนี้จะพิมพ์ระยะทางของวัตถุใด ๆ ที่อยู่ด้านหน้า HC-SR04

  ส่วนติดต่อผู้ใช้แบบกราฟิก ข้อความ คำอธิบายแอปพลิเคชันที่สร้างขึ้นโดยอัตโนมัติ

รหัสเริ่มต้นด้วยการเรียกใช้ไลบรารีที่สำคัญเช่น HCSR04 และ เวลา ห้องสมุดร่วมด้วย นอน เพื่อให้เกิดความล่าช้า

ต่อไป เราสร้างวัตถุใหม่ที่มีชื่อ เซ็นเซอร์ . วัตถุนี้รับอาร์กิวเมนต์ที่แตกต่างกันสามแบบ: ทริกเกอร์ เสียงก้อง และหมดเวลา การหมดเวลาที่นี่ถูกกำหนดเป็นเวลาสูงสุดหลังจากที่เซ็นเซอร์อยู่นอกช่วง

เซ็นเซอร์ = HCSR04 ( trigger_pin = 5 , เสียงสะท้อน = 18 , echo_timeout_us = 10,000 )

ในการวัดและบันทึกระยะทางวัตถุใหม่ชื่อ ระยะทาง ถูกสร้างขึ้น วัตถุนี้จะบันทึกระยะทางเป็นซม.

ระยะทาง = เซ็นเซอร์ ระยะทาง_ซม ( )

เขียนโค้ดต่อไปนี้เพื่อรับข้อมูลเป็น mm

ระยะทาง = เซ็นเซอร์ ระยะทาง_มม ( )

ต่อไป เราพิมพ์ผลลัพธ์บนเชลล์ MicroPython IDE

พิมพ์ ( 'ระยะทาง:' , ระยะทาง , 'ซม.' )

ในที่สุดจะมีการหน่วงเวลา 1 วินาที

นอน ( 1 )

รหัสที่สมบูรณ์ได้รับด้านล่าง:

จาก hcsr04 นำเข้า HCSR04
จาก เวลา นำเข้า นอน
#ESP32
เซ็นเซอร์ = HCSR04 ( trigger_pin = 5 , เสียงสะท้อน = 18 , echo_timeout_us = 10,000 )
#ESP8266
#sensor = HCSR04(trigger_pin=12, echo_pin=14, echo_timeout_us=10000)
ในขณะที่ จริง :
ระยะทาง = เซ็นเซอร์ ระยะทาง_ซม ( )
พิมพ์ ( 'ระยะทาง:' , ระยะทาง , 'ซม.' )
นอน ( 1 )

หลังจากเขียนและบันทึกโค้ดในอุปกรณ์ MicroPython แล้ว ตอนนี้ฉันเรียกใช้เซ็นเซอร์อัลตราโซนิก main.py รหัสไฟล์. คลิกปุ่มเล่นหรือกด F5 .

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

เอาต์พุตของ Ultrasonic Sensor เมื่อวัตถุอยู่ใกล้

ตอนนี้วางวัตถุไว้ใกล้กับเซ็นเซอร์อัลตราโซนิกและตรวจสอบระยะทางที่วัดได้ในหน้าต่างมอนิเตอร์อนุกรมของ Arduino IDE

  รูปภาพที่มีข้อความคำอธิบายที่สร้างขึ้นโดยอัตโนมัติ

ระยะห่างของวัตถุแสดงในเทอร์มินัลเชลล์ ตอนนี้วางวัตถุไว้ที่ 5 ซม. จากเซ็นเซอร์อัลตราโซนิก

เอาต์พุตของ Ultrasonic Sensor เมื่อวัตถุอยู่ไกล

ตอนนี้เพื่อตรวจสอบผลลัพธ์ของเรา เราจะวางวัตถุให้ห่างจากเซ็นเซอร์และตรวจสอบการทำงานของเซ็นเซอร์อัลตราโซนิก วางวัตถุตามที่แสดงในภาพด้านล่าง:

  รูปภาพที่มีข้อความคำอธิบายที่สร้างขึ้นโดยอัตโนมัติ

หน้าต่างผลลัพธ์จะให้ระยะทางใหม่แก่เรา และเนื่องจากเราเห็นว่าวัตถุนั้นอยู่ไกลจากเซ็นเซอร์ ดังนั้นระยะทางที่วัดได้จึงประมาณ 15 ซม. จากเซ็นเซอร์อัลตราโซนิก

  ส่วนติดต่อผู้ใช้แบบกราฟิก แอปพลิเคชัน คำอธิบาย Word สร้างขึ้นโดยอัตโนมัติ

บทสรุป

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