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