- ส่วนประกอบที่จำเป็น:
- โมดูล GPS และการทำงาน:
- การเตรียม Raspberry Pi เพื่อสื่อสารกับ GPS:
- การเชื่อมต่อสำหรับโมดูล Raspberry Pi GPS การเชื่อมต่อ:
- การทดสอบก่อน Python Script:
หนึ่งในแพลตฟอร์มฝังตัวที่ยอดเยี่ยมที่สุดเช่น Arduino ทำให้ผู้ผลิตและ DIYers สามารถรับข้อมูลตำแหน่งได้อย่างง่ายดายโดยใช้โมดูล GPS และสร้างสิ่งต่าง ๆ ที่ต้องอาศัยตำแหน่ง ด้วยปริมาณพลังงานที่อัดแน่นโดย Raspberry Pi มันจะค่อนข้างยอดเยี่ยมในการสร้างโครงการที่ใช้ GPS ด้วยโมดูล GPS ราคาถูกแบบเดียวกันและนั่นคือจุดสำคัญของโพสต์นี้ วันนี้ในโครงการนี้เราจะเชื่อมต่อโมดูล GPS กับ Raspberry Pi 3
เป้าหมายของโครงการนี้คือการรวบรวมข้อมูลตำแหน่ง (ลองจิจูดและละติจูด) ผ่าน UART จากโมดูล GPS และแสดงบนจอ LCD 16x2ดังนั้นหากคุณไม่คุ้นเคยกับวิธีการทำงานของ LCD 16x2 กับ Raspberry Pi นี่เป็นอีกอย่างหนึ่ง โอกาสที่ดีในการเรียนรู้
ส่วนประกอบที่จำเป็น:
- ราสเบอร์รี่ Pi 3
- โมดูล GPS Neo 6m v2
- จอ LCD 16 x 2
- แหล่งพลังงานสำหรับ Raspberry Pi
- สาย LAN เพื่อเชื่อมต่อ pi กับพีซีของคุณในโหมด headless
- เขียงหั่นขนมและสายจัมเปอร์
- ตัวต้านทาน / โพเทนชิออมิเตอร์ไปยัง LCD
- การ์ดหน่วยความจำ 8 หรือ 16Gb ที่รัน Raspbian Jessie
นอกเหนือจากนั้นเราต้องติดตั้งไลบรารี GPS Daemon (GPSD), ไลบรารี LCD Adafruit 16x2 ซึ่งเราติดตั้งในบทช่วยสอนนี้ในภายหลัง
นี่เรากำลังใช้ ราสเบอร์รี่ Pi 3 กับเจสซี Raspbian OS ข้อกำหนดฮาร์ดแวร์และซอฟต์แวร์พื้นฐานทั้งหมดได้กล่าวไว้ก่อนหน้านี้คุณสามารถค้นหาได้ในบทนำ Raspberry Pi
โมดูล GPS และการทำงาน:
GPS ย่อมาจาก Global Positioning System และใช้ในการตรวจจับละติจูดและลองจิจูดของตำแหน่งใด ๆ บนโลกด้วยเวลา UTC ที่แน่นอน (Universal Time Coordinated) โมดูล GPS เป็นส่วนประกอบหลักในโครงการระบบติดตามยานพาหนะของเรา อุปกรณ์นี้รับพิกัดจากดาวเทียมเป็นรายวินาทีพร้อมเวลาและวันที่
โมดูล GPSส่งข้อมูลที่เกี่ยวข้องกับตำแหน่งการติดตามแบบเรียลไทม์และส่งข้อมูลจำนวนมากในรูปแบบ NMEA (ดูภาพหน้าจอด้านล่าง) รูปแบบ NMEA ประกอบด้วยหลายประโยคซึ่งเราต้องการเพียงประโยคเดียว ประโยคนี้เริ่มต้นจาก$ GPGGAและมีพิกัดเวลาและข้อมูลที่เป็นประโยชน์อื่น ๆ นี้GPGGAจะเรียกว่าGlobal Positioning System แก้ไขข้อมูล เรียนรู้เพิ่มเติมเกี่ยวกับการอ่านข้อมูล GPS และสตริงที่นี่
เราสามารถแยกพิกัดจากสตริง $ GPGGA โดยการนับลูกน้ำในสตริง สมมติว่าคุณพบสตริง $ GPGGA และเก็บไว้ในอาร์เรย์แล้วละติจูดสามารถพบได้หลังจากพบเครื่องหมายจุลภาคสองตัวและลองจิจูดหลังจากสี่ลูกน้ำ ตอนนี้ละติจูดและลองจิจูดเหล่านี้สามารถใส่ในอาร์เรย์อื่นได้
ด้านล่างนี้คือ $ GPGGA String พร้อมกับคำอธิบาย:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M,, * 47
$ GPGGA, HHMMSS.SSS, ละติจูด, N, ลองจิจูด, E, FQ, NOS, HDP, ความสูง, M, ความสูง, M, ข้อมูลการตรวจสอบ
ตัวระบุ |
คำอธิบาย |
$ GPGGA |
ข้อมูลการแก้ไขระบบกำหนดตำแหน่งบนพื้นโลก |
HHMMSS.SSS |
เวลาเป็นชั่วโมงนาทีวินาทีและรูปแบบมิลลิวินาที |
ละติจูด |
ละติจูด (พิกัด) |
น |
ทิศทาง N = เหนือ, S = ใต้ |
ลองจิจูด |
ลองจิจูด (พิกัด) |
จ |
ทิศทาง E = ตะวันออก, W = ตะวันตก |
FQ |
แก้ไขข้อมูลคุณภาพ |
NOS |
จำนวนดาวเทียมที่ใช้ |
HPD |
การเจือจางความแม่นยำในแนวนอน |
ระดับความสูง |
ระดับความสูงจากระดับน้ำทะเล |
ม |
เมตร |
ความสูง |
ความสูง |
เช็คซัม |
ข้อมูล Checksum |
คุณสามารถตรวจสอบโครงการ GPS อื่น ๆ ของเรา:
- ติดตามยานพาหนะที่ใช้ Arduino โดยใช้ GPS และ GSM
- ระบบแจ้งเตือนอุบัติเหตุรถยนต์ที่ใช้ Arduino โดยใช้ GPS, GSM และ Accelerometer
- วิธีใช้ GPS กับ Arduino
- ติดตามยานพาหนะบน Google Maps โดยใช้ Arduino, ESP8266 และ GPS
การเตรียม Raspberry Pi เพื่อสื่อสารกับ GPS:
โอเคที่จะเข้ามาเพื่อไม่ให้น่าเบื่อฉันจะถือว่าคุณรู้มากเกี่ยวกับ Raspberry Pi แล้วพอที่จะติดตั้งระบบปฏิบัติการของคุณรับที่อยู่ IP เชื่อมต่อกับซอฟต์แวร์เทอร์มินัลเช่นผงสำหรับอุดรูและสิ่งอื่น ๆ เกี่ยวกับ PI. หากคุณมีปัญหาในการทำสิ่งใด ๆ ที่กล่าวมาข้างต้นโปรดติดต่อฉันใต้ส่วนความคิดเห็นเรายินดีที่จะช่วยเหลือ
สิ่งแรกที่เราต้องทำเพื่อให้โครงการนี้กำลังดำเนินการอยู่คือการเตรียม Raspberry Pi 3 ของเราให้สามารถสื่อสารกับโมดูล GPS ผ่าน UARTเชื่อฉันสิมันค่อนข้างยุ่งยากและต้องพยายามทำให้ถูกต้อง แต่ถ้าคุณทำตาม คำแนะนำของฉันอย่างรอบคอบคุณจะได้รับในครั้งเดียวนี่เป็นส่วนที่ยากที่สุดของโครงการ ที่นี่เราได้ใช้โมดูล GPS Neo 6m v2
ในการดำน้ำที่นี่เป็นคำอธิบายเล็ก ๆ น้อย ๆ ของวิธีราสเบอร์รี่ Pi 3 UART ธิการ
Raspberry Pi มี UART ในตัวสองตัวคือ PL011 และ UART ขนาดเล็ก มีการใช้งานโดยใช้บล็อกฮาร์ดแวร์ที่แตกต่างกันดังนั้นจึงมีลักษณะที่แตกต่างกันเล็กน้อย อย่างไรก็ตามในราสเบอร์รี่ pi 3 โมดูลไร้สาย / บลูทู ธ เชื่อมต่อกับ PLO11 UART ในขณะที่มินิ UART ใช้สำหรับคอนโซล linux ouptut ขึ้นอยู่กับว่าคุณเห็นอย่างไรฉันจะกำหนดให้ PLO11 เป็นสิ่งที่ดีที่สุดในสอง UART เนื่องจากระดับการใช้งาน ดังนั้นสำหรับโครงการนี้เราจะปิดใช้งานโมดูลบลูทู ธ จาก PLO11 UART โดยใช้โอเวอร์เลย์ที่มีอยู่ใน Raspbian Jessie เวอร์ชันปัจจุบันที่อัปเดตแล้ว
ขั้นตอนที่ 1: การอัปเดต Raspberry Pi:
สิ่งแรกที่ฉันชอบฉันชอบทำก่อนที่จะเริ่มทุกโครงการคือการอัปเดต raspberry pi ลองทำตามปกติและเรียกใช้คำสั่งด้านล่าง
sudo apt-get update sudo apt-get upgrade
จากนั้นรีบูตระบบด้วย;
sudo รีบูต
ขั้นตอนที่ 2: การตั้งค่า UART ใน Raspberry Pi:
สิ่งแรกที่เราจะทำภายใต้สิ่งนี้คือแก้ไข ไฟล์ /boot/config.txt ในการดำเนินการนี้ให้เรียกใช้คำสั่งด้านล่าง:
sudo nano /boot/config.txt
ที่ด้านล่างของไฟล์ config.txt ให้เพิ่มบรรทัดต่อไปนี้
dtparam = spi = บน dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + x เพื่อออกจากนั้นกด y และ Enter เพื่อบันทึก
ตรวจสอบให้แน่ใจว่าไม่มีการพิมพ์ผิดหรือข้อผิดพลาดโดยการตรวจสอบซ้ำว่าเป็นข้อผิดพลาดซึ่งอาจทำให้ pi ของคุณไม่สามารถบูตได้
เหตุผลสำหรับคำสั่งเหล่านี้คือ อะไร force_turbo ทำให้ UART ใช้ความถี่หลักสูงสุดซึ่งเราตั้งค่าในกรณีนี้เป็น 250 เหตุผลนี้คือเพื่อให้แน่ใจว่าได้รับข้อมูลอนุกรมอย่างสม่ำเสมอและสมบูรณ์ สิ่งสำคัญที่ต้องทราบในตอนนี้คือการใช้ force_turbo = 1 จะทำให้การรับประกันราสเบอร์รี่ pi ของคุณเป็นโมฆะ แต่ก็ยังค่อนข้างปลอดภัย
dtoverlay = PI3-disable-BT ยกเลิกการเชื่อมต่อบลูทู ธ จากที่ ttyAMA0 นี้คือการช่วยให้เราเข้าถึงการใช้พลังงาน UART เต็มสามารถใช้ได้ผ่านทาง ttyAMAO แทนของมินิ UART ttyS0
ขั้นตอนที่สองในส่วนการตั้งค่า UART นี้คือการแก้ไข boot / cmdline.txt
ฉันจะแนะนำให้คุณทำสำเนา cmdline.txt และบันทึกก่อนแก้ไขเพื่อให้คุณสามารถย้อนกลับไปใช้ในภายหลังได้หากจำเป็น สามารถทำได้โดยใช้;
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
แทนที่เนื้อหาด้วย;
dwc_otg.lpm_enable = 0 console = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 elevator = deadline fsck.repair = yes rootwait quiet splash plymouth.ignore-serial-consoles
บันทึกและออก.
เมื่อเสร็จแล้วเราจะต้องรีบูตระบบอีกครั้งเพื่อให้มีผลต่อการเปลี่ยนแปลง ( sudo reboot )
ขั้นตอนที่ 3: การปิดใช้งานบริการ Raspberry Pi Serial Getty
ขั้นตอนต่อไปคือการปิดใช้งาน Serial the getty ของ Pi คำสั่งจะป้องกันไม่ให้เริ่มต้นอีกครั้งเมื่อรีบูต
sudo systemctl หยุด [email protected] sudo systemctl ปิดการใช้งาน [email protected]
คำสั่งต่อไปนี้สามารถใช้เพื่อเปิดใช้งานได้อีกครั้งหากจำเป็น
sudo systemctl เปิดใช้งาน [email protected] sudo systemctl เริ่ม [email protected]
รีบูตระบบ
ขั้นตอนที่ 4: การเปิดใช้งาน ttyAMAO:
เราได้ปิดการใช้งาน ttyS0, สิ่งต่อไปคือสำหรับเราที่จะเปิดใช้งานttyAMAO
sudo systemctl เปิดใช้งาน [email protected]
ขั้นตอนที่ 5: ติดตั้ง Minicom และ pynmea2:
เราจะเป็นมินิคอมเพื่อเชื่อมต่อกับโมดูล GPS และทำความเข้าใจกับข้อมูล นอกจากนี้ยังเป็นหนึ่งในเครื่องมือที่เราจะใช้ในการทดสอบคือโมดูล GPS ของเราทำงานได้ดี อีกทางเลือกหนึ่งของ minicom คือซอฟต์แวร์ daemon GPSD
sudo apt-get minicom ติดตั้ง
เพื่อให้ง่ายต่อการแยกวิเคราะห์ข้อมูลที่ได้รับเราจะทำให้การใช้งานของห้องสมุด pynmea2 สามารถติดตั้งโดยใช้;
sudo pip ติดตั้ง pynmea2
สามารถดูเอกสารประกอบของห้องสมุดได้ที่นี่
ขั้นตอนที่ 6: การติดตั้งไลบรารี LCD:
สำหรับบทช่วยสอนนี้เราจะใช้ห้องสมุด AdaFruit ไลบรารีถูกสร้างขึ้นสำหรับหน้าจอ AdaFruit แต่ยังใช้กับบอร์ดแสดงผลที่ใช้ HD44780 หากการแสดงผลของคุณเป็นไปตามนี้ก็ควรจะทำงานได้โดยไม่มีปัญหา
ฉันรู้สึกดีกว่าที่จะโคลนไลบรารีและติดตั้งโดยตรง เพื่อโคลนรัน;
git clone
เปลี่ยนเป็นไดเร็กทอรีโคลนและติดตั้ง
cd./Adafruit_Python_CharLCD sudo python setup.py ติดตั้ง
ในขั้นตอนนี้ฉันจะแนะนำการรีบูตอีกครั้งเพื่อให้เราพร้อมที่จะเชื่อมต่อส่วนประกอบ
การเชื่อมต่อสำหรับโมดูล Raspberry Pi GPS การเชื่อมต่อ:
เชื่อมต่อโมดูล GPS และ LCD เข้ากับ Raspberry Pi ดังแสดงในแผนภาพวงจรด้านล่าง
การทดสอบก่อน Python Script:
ฉันรู้สึกว่ามันสำคัญที่จะต้องทดสอบการเชื่อมต่อโมดูล GPS ก่อนดำเนินการต่อกับสคริปต์ python เราจะใช้ minicom สำหรับสิ่งนี้ เรียกใช้คำสั่ง:
sudo minicom -D / dev / ttyAMA0 -b9600
โดยที่ 9600 แสดงถึงอัตราการส่งข้อมูลที่โมดูล GPS สื่อสาร สิ่งนี้อาจใช้เมื่อเราแน่ใจในการสื่อสารข้อมูลระหว่าง GPS และ RPI แล้วก็ถึงเวลาเขียนสคริปต์ python ของเรา
การทดสอบสามารถทำได้โดยใช้ cat
sudo cat / dev / ttyAMA0
ใน Window คุณจะเห็นประโยค NMEAที่เราได้พูดคุยกันก่อนหน้านี้
Python Script สำหรับการสอน Raspberry Pi GPSมีให้ด้านล่างในส่วนรหัส
เมื่อพูดและทำเสร็จแล้วก็ถึงเวลาทดสอบระบบทั้งหมด สิ่งสำคัญคือคุณต้องแน่ใจว่า GPS ของคุณได้รับการแก้ไขที่ดีโดยการถอดออก GPS ส่วนใหญ่ต้องใช้ดาวเทียมสามถึง 4 ดวงเพื่อรับการแก้ไขแม้ว่าของฉันจะทำงานในร่มก็ตาม
ใช้งานได้จริงไหม ใช่…
มีคำถามหรือความคิดเห็น? วางไว้ในส่วนความคิดเห็น
วิดีโอสาธิตให้ดูด้านล่างซึ่งเราได้แสดงตำแหน่งในละติจูดและลองจิจูดบน LCD โดยใช้ GPS และ Raspberry Pi