13 KiB
อ่านข้อมูล GPS - ฮาร์ดแวร์ IoT เสมือนจริง
ในส่วนนี้ของบทเรียน คุณจะเพิ่มเซ็นเซอร์ GPS ลงในอุปกรณ์ IoT เสมือนจริงของคุณ และอ่านค่าจากเซ็นเซอร์นั้น
ฮาร์ดแวร์เสมือนจริง
อุปกรณ์ IoT เสมือนจริงจะใช้เซ็นเซอร์ GPS จำลองที่สามารถเข้าถึงได้ผ่าน UART ผ่านพอร์ตอนุกรม
เซ็นเซอร์ GPS จริงจะมีเสาอากาศเพื่อรับคลื่นวิทยุจากดาวเทียม GPS และแปลงสัญญาณ GPS เป็นข้อมูล GPS ส่วนเวอร์ชันเสมือนจริงจะจำลองสิ่งนี้โดยให้คุณตั้งค่าละติจูดและลองจิจูด ส่งประโยค NMEA ดิบ หรืออัปโหลดไฟล์ GPX ที่มีตำแหน่งหลายตำแหน่งซึ่งสามารถส่งคืนได้ตามลำดับ
🎓 ประโยค NMEA จะถูกอธิบายในภายหลังในบทเรียนนี้
เพิ่มเซ็นเซอร์ใน CounterFit
เพื่อใช้เซ็นเซอร์ GPS เสมือน คุณต้องเพิ่มเซ็นเซอร์นี้ในแอป CounterFit
งาน - เพิ่มเซ็นเซอร์ใน CounterFit
เพิ่มเซ็นเซอร์ GPS ในแอป CounterFit
-
สร้างแอป Python ใหม่ในคอมพิวเตอร์ของคุณในโฟลเดอร์ชื่อ
gps-sensor
โดยมีไฟล์เดียวชื่อapp.py
และสภาพแวดล้อมเสมือน Python และเพิ่มแพ็กเกจ pip ของ CounterFit⚠️ คุณสามารถดู คำแนะนำสำหรับการสร้างและตั้งค่าโปรเจกต์ Python ของ CounterFit ในบทเรียนที่ 1 หากจำเป็น
-
ติดตั้งแพ็กเกจ Pip เพิ่มเติมเพื่อติดตั้ง CounterFit shim ที่สามารถสื่อสารกับเซ็นเซอร์ที่ใช้ UART ผ่านการเชื่อมต่ออนุกรม ตรวจสอบให้แน่ใจว่าคุณกำลังติดตั้งจากเทอร์มินัลที่เปิดใช้งานสภาพแวดล้อมเสมือน
pip install counterfit-shims-serial
-
ตรวจสอบให้แน่ใจว่าแอปเว็บ CounterFit กำลังทำงานอยู่
-
สร้างเซ็นเซอร์ GPS:
-
ในกล่อง Create sensor ในแถบ Sensors เลือกกล่องแบบเลื่อนลง Sensor type และเลือก UART GPS
-
ปล่อยให้ Port ตั้งค่าเป็น /dev/ttyAMA0
-
เลือกปุ่ม Add เพื่อสร้างเซ็นเซอร์ GPS บนพอร์ต
/dev/ttyAMA0
เซ็นเซอร์ GPS จะถูกสร้างและปรากฏในรายการเซ็นเซอร์
-
เขียนโปรแกรมเซ็นเซอร์ GPS
อุปกรณ์ IoT เสมือนจริงสามารถเขียนโปรแกรมเพื่อใช้เซ็นเซอร์ GPS เสมือนได้แล้ว
งาน - เขียนโปรแกรมเซ็นเซอร์ GPS
เขียนโปรแกรมแอปเซ็นเซอร์ GPS
-
ตรวจสอบให้แน่ใจว่าแอป
gps-sensor
เปิดอยู่ใน VS Code -
เปิดไฟล์
app.py
-
เพิ่มโค้ดต่อไปนี้ที่ด้านบนของ
app.py
เพื่อเชื่อมต่อแอปกับ CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
เพิ่มโค้ดต่อไปนี้ด้านล่างเพื่อเรียกใช้ไลบรารีที่จำเป็น รวมถึงไลบรารีสำหรับพอร์ตอนุกรมของ CounterFit:
import time import counterfit_shims_serial serial = counterfit_shims_serial.Serial('/dev/ttyAMA0')
โค้ดนี้นำเข้าโมดูล
serial
จากแพ็กเกจ Pipcounterfit_shims_serial
จากนั้นเชื่อมต่อกับพอร์ตอนุกรม/dev/ttyAMA0
ซึ่งเป็นที่อยู่ของพอร์ตอนุกรมที่เซ็นเซอร์ GPS เสมือนใช้สำหรับพอร์ต UART -
เพิ่มโค้ดต่อไปนี้ด้านล่างเพื่ออ่านจากพอร์ตอนุกรมและพิมพ์ค่าลงในคอนโซล:
def print_gps_data(line): print(line.rstrip()) while True: line = serial.readline().decode('utf-8') while len(line) > 0: print_gps_data(line) line = serial.readline().decode('utf-8') time.sleep(1)
ฟังก์ชันชื่อ
print_gps_data
ถูกกำหนดขึ้นเพื่อพิมพ์บรรทัดที่ส่งผ่านไปยังคอนโซลจากนั้นโค้ดจะวนลูปตลอดเวลา โดยอ่านบรรทัดข้อความจากพอร์ตอนุกรมในแต่ละลูป และเรียกใช้ฟังก์ชัน
print_gps_data
สำหรับแต่ละบรรทัดหลังจากอ่านข้อมูลทั้งหมดแล้ว ลูปจะหยุดพัก 1 วินาที จากนั้นลองอีกครั้ง
-
รันโค้ดนี้ โดยตรวจสอบให้แน่ใจว่าคุณใช้เทอร์มินัลที่แตกต่างจากที่แอป CounterFit กำลังทำงานอยู่ เพื่อให้แอป CounterFit ยังคงทำงานต่อไป
-
จากแอป CounterFit เปลี่ยนค่าของเซ็นเซอร์ GPS คุณสามารถทำได้ในวิธีใดวิธีหนึ่งดังนี้:
-
ตั้งค่า Source เป็น
Lat/Lon
และตั้งค่าละติจูด ลองจิจูด และจำนวนดาวเทียมที่ใช้ในการรับค่าตำแหน่ง GPS ค่านี้จะถูกส่งเพียงครั้งเดียว ดังนั้นให้ทำเครื่องหมายที่กล่อง Repeat เพื่อให้ข้อมูลส่งซ้ำทุกวินาที -
ตั้งค่า Source เป็น
NMEA
และเพิ่มประโยค NMEA ลงในกล่องข้อความ ค่าทั้งหมดนี้จะถูกส่ง โดยมีการหน่วงเวลา 1 วินาทีก่อนที่ประโยค GGA (ตำแหน่ง) ใหม่จะถูกอ่านคุณสามารถใช้เครื่องมืออย่าง nmeagen.org เพื่อสร้างประโยคเหล่านี้โดยการวาดบนแผนที่ ค่าจะถูกส่งเพียงครั้งเดียว ดังนั้นให้ทำเครื่องหมายที่กล่อง Repeat เพื่อให้ข้อมูลส่งซ้ำหลังจากส่งทั้งหมดแล้ว
-
ตั้งค่า Source เป็นไฟล์ GPX และอัปโหลดไฟล์ GPX ที่มีตำแหน่งเส้นทาง คุณสามารถดาวน์โหลดไฟล์ GPX จากเว็บไซต์แผนที่และเดินป่ายอดนิยม เช่น AllTrails ไฟล์เหล่านี้มีตำแหน่ง GPS หลายตำแหน่งเป็นเส้นทาง และเซ็นเซอร์ GPS จะส่งคืนตำแหน่งใหม่ทุกๆ 1 วินาที
ค่าจะถูกส่งเพียงครั้งเดียว ดังนั้นให้ทำเครื่องหมายที่กล่อง Repeat เพื่อให้ข้อมูลส่งซ้ำหลังจากส่งทั้งหมดแล้ว
เมื่อคุณตั้งค่าการตั้งค่า GPS เสร็จแล้ว ให้เลือกปุ่ม Set เพื่อบันทึกค่าลงในเซ็นเซอร์
-
-
คุณจะเห็นผลลัพธ์ดิบจากเซ็นเซอร์ GPS บางอย่างเช่น:
$GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67
💁 คุณสามารถค้นหาโค้ดนี้ได้ในโฟลเดอร์ code-gps/virtual-device
😀 โปรแกรมเซ็นเซอร์ GPS ของคุณสำเร็จแล้ว!
ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้