บทความนี้กล่าวถึงการใช้โมดูล Ultrasonic กับบอร์ด Raspberry Pi (บทความก่อนหน้านี้ใช้กับ ESP8266) ด้วยภาษาไพธอนเพื่อแสดงระยะห่างจากเซ็นเซอร์กับวัตถุที่พบได้ใกล้ที่สุด
อุปกรณ์
อุปกรณ์ประกอบการทดลองในบทความนี้ประกอบด้วย
- บอร์ด Raspberry Pi 3 หรือ 4
- บอร์ดโมดูลเซ็นเซอร์อัลตราโซนิค (Ultrasonic Sensor)
การเชื่อมต่อ
การเชื่อมต่อโมดูล Ultrasonic Sensor เข้ากับบอร์ด Raspberry Pi เป็นดังตารางต่อไปนี้
Raspberry Pi | Ultrasonic Sensor |
---|---|
+5VDC | Vcc |
GND | GND |
GPIO20 | Trig |
GPIO21 | Echo |
ตัวอย่างโปรแกรม
ตัวอย่างโปรแกรม code25-1 เป็นการกำหนดให้ขา GPIO20 เป็นขา Trig เพื่อส่งสัญญาณเสียงออก และขา GPIO21 เป็นขา Echo เพื่อรอรับสัญญาณเสียงที่สะท้อนกลับมา จึงกำหนดให้เป็นขา Output และ Input ตามลำดับ โดยการจับเวลาในการเคลื่อนที่ของเสียงที่สะท้อนกลับใช้คำสั่ง time.monotonic() หลังจากนั้นทำการคำนวณระยะทางในหน่วยเซ็นติเมตรแล้วรายงานผลออกทางจอแสดงผลดังตัวอย่างในภาพที่ 3
#code25-1
from time import time
from time import monotonic
from time import sleep
import RPi.GPIO as GPIO
pinTrig = 20
pinEcho = 21
mps = 343 # Metre per second (Sound speed)
GPIO.setmode(GPIO.BCM)
GPIO.setup(pinTrig, GPIO.OUT)
GPIO.setup(pinEcho, GPIO.IN)
GPIO.output(pinTrig, False)
sleep(0.5)
GPIO.output(pinTrig, True)
sleep(0.00001)
GPIO.output(pinTrig, False)
# send trig
GPIO.output(pinTrig, True)
sleep(0.00001)
GPIO.output(pinTrig, False)
# start count
t0 = monotonic()
while GPIO.input(pinEcho) == 0:
# wait for echo
pass
while GPIO.input(pinEcho) == 1:
# wait for end echo
pass
t1 = monotonic()
echoTime = t1-t0
distance = (echoTime*mps*100)/2
print("{} cm.".format(distance))
GPIO.cleanup()
สรุป
จากบทความนี้จะพบว่าหลักการทำงานและวิธีการเขียนโปรแกรมด้วยภาษาไพธอนเพื่อใช้งานโมดูล Ultrasonic Sensor ในการวัดระยะห่างระหว่างเซ็นเซอร์กับวัตถุที่พบใกล้ที่สุดนั้นใช้หลักการเขียนเหมือนกับบอร์ด ESP8266 เพียงแตกต่างในเรื่องขั้นตอนการสั่ง GPIO และไลบรารีที่แตกต่างกันเนื่องจาก MicroPython เป็นเพียงส่วนหนึ่งของตัวแปลภาษาไพธอนที่ใช้งานกับบอร์ดขนาดเล็ก ดังนั้น จึงต้องลดทอนและปรับปรุงให้เหมาะสม แต่ภาษาไพธอนบนบอร์ด Raspberry Pi นั้นเป็นตัวเดียวกับที่ใช้งานบนเครื่อง PC จึงมีความเข้ากันได้ และด้วยเหตุนี้การเขียนด้วยภาษาไพธอนจึงเหมาะกับผู้เขียนโปรแกรมที่เน้นการใช้งานและความเร็วในการทดสอบงาน แต่ถ้าเมื่อไรต้องการความเร็วของการทำงานโปรแกรมผู้เขียนโปรแกรมอาจจะต้องเลือกใช้ภาษาในระดับที่ลล่างกว่า เช่น ภาษา C/C++ และ Assembly
สุดท้ายนี้หวังว่าบทความนี้คงมีประโยชน์แก่ผู้อ่านบ้างไม่มากก็น้อย และขอให้สนุกกับการเขียนโปรแกรมครับ
(C) 2020, โดย อ.ดนัย เจษฎาฐิติกุล/อ.จารุต บุศราทิจ
ปรับปรุงเมื่อ 2020-12-15