สารบัญ:

อินเทอร์เฟซ Arduino Mega พร้อมโมดูล GPS (Neo-6M): 8 ขั้นตอน
อินเทอร์เฟซ Arduino Mega พร้อมโมดูล GPS (Neo-6M): 8 ขั้นตอน

วีดีโอ: อินเทอร์เฟซ Arduino Mega พร้อมโมดูล GPS (Neo-6M): 8 ขั้นตอน

วีดีโอ: อินเทอร์เฟซ Arduino Mega พร้อมโมดูล GPS (Neo-6M): 8 ขั้นตอน
วีดีโอ: การทำ GPS แจ้งเตือนผ่านแอพพลิเคชั่น LINE ด้วย NodeMCU และ โมดูล GPS 2024, มิถุนายน
Anonim
อินเทอร์เฟซ Arduino Mega พร้อมโมดูล GPS (Neo-6M)
อินเทอร์เฟซ Arduino Mega พร้อมโมดูล GPS (Neo-6M)

ในโครงการนี้ ฉันได้แสดงวิธีเชื่อมต่อโมดูล GPS (Neo-6M) กับ Arduino Mega ไลบรารี TinyGPS ใช้เพื่อแสดงข้อมูลของลองจิจูดและละติจูด และ TinyGPS++ ใช้สำหรับแสดงละติจูด ลองจิจูด ระดับความสูง ความเร็ว และจำนวนดาวเทียมบนจอภาพแบบอนุกรม

ขั้นตอนที่ 1: ส่วนประกอบที่จำเป็น

ฮาร์ดแวร์

  • Arduino Mega ==> $ 30
  • โมดูล GPS Neo-6M ==> $ 30

ซอฟต์แวร์

Arduino IDE

ต้นทุนรวมของโครงการคือ 60 เหรียญสหรัฐ

ขั้นตอนที่ 2: ข้อมูลเกี่ยวกับ GPS

GPS คืออะไร

Global Positioning System (GPS) เป็นระบบนำทางด้วยดาวเทียมที่ประกอบด้วยดาวเทียมอย่างน้อย 24 ดวง GPS ทำงานได้ในทุกสภาพอากาศ ทุกที่ในโลก ตลอด 24 ชั่วโมง โดยไม่มีค่าธรรมเนียมการสมัครหรือค่าติดตั้ง

GPS ทำงานอย่างไร

ดาวเทียม GPS จะโคจรรอบโลกวันละสองครั้งในวงโคจรที่แม่นยำ ดาวเทียมแต่ละดวงส่งสัญญาณเฉพาะและพารามิเตอร์การโคจรที่อนุญาตให้อุปกรณ์ GPS ถอดรหัสและคำนวณตำแหน่งที่แม่นยำของดาวเทียม เครื่องรับ GPS ใช้ข้อมูลนี้และการแยกย่อยเพื่อคำนวณตำแหน่งที่แน่นอนของผู้ใช้ โดยพื้นฐานแล้ว เครื่องรับ GPS จะวัดระยะห่างของดาวเทียมแต่ละดวงตามระยะเวลาที่ใช้ในการรับสัญญาณที่ส่ง ด้วยการวัดระยะทางจากดาวเทียมอีกสองสามดวง เครื่องรับสามารถระบุตำแหน่งของผู้ใช้และแสดงผลได้

ในการคำนวณตำแหน่ง 2 มิติของคุณ (ละติจูดและลองจิจูด) และติดตามความเคลื่อนไหว เครื่องรับ GPS จะต้องล็อคกับสัญญาณของดาวเทียมอย่างน้อย 3 ดวง ด้วยการดูดาวเทียม 4 ดวงขึ้นไป เครื่องรับสามารถกำหนดตำแหน่งสามมิติของคุณได้ (ละติจูด ลองจิจูด และระดับความสูง) โดยทั่วไป เครื่องรับ GPS จะติดตามดาวเทียมตั้งแต่ 8 ดวงขึ้นไป แต่นั่นก็ขึ้นอยู่กับช่วงเวลาของวันและตำแหน่งที่คุณอยู่บนโลก เมื่อระบุตำแหน่งของคุณแล้ว หน่วย GPS สามารถคำนวณข้อมูลอื่นๆ เช่น

  • ความเร็ว
  • การแบก
  • ติดตาม
  • การเดินทาง dist
  • ระยะทางถึงที่หมาย

สัญญาณคืออะไร

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

รหัสสุ่ม

มันคือไอดี รหัสที่ระบุว่าดาวเทียมดวงใดกำลังส่งข้อมูล คุณสามารถดูดาวเทียมดวงใดที่คุณได้รับสัญญาณจากหน้าดาวเทียมของอุปกรณ์

ข้อมูล Ephemeris

จำเป็นต้องใช้ข้อมูล Ephemeris เพื่อระบุตำแหน่งของดาวเทียมและให้ข้อมูลสำคัญเกี่ยวกับความสมบูรณ์ของดาวเทียม วันที่และเวลาปัจจุบัน

ข้อมูลปูม

ข้อมูลปูมจะบอกเครื่องรับ GPS ว่าดาวเทียม GPS แต่ละดวงควรอยู่ที่ใดตลอดเวลาตลอดทั้งวัน และแสดงข้อมูลการโคจรของดาวเทียมดวงนั้นและดาวเทียมดวงอื่นๆ ในระบบ

ขั้นตอนที่ 3: โมดูล GPS Neo-6M

โมดูล GPS NEO-6M แสดงในรูปด้านล่าง มาพร้อมกับเสาอากาศภายนอกและไม่ได้มาพร้อมกับหมุดส่วนหัว ดังนั้นคุณจะต้องบัดกรีมัน

ภาพรวมของโมดูล GPS NEO-6M

ชิป GPS NEO-6M

หัวใจของโมดูลคือชิป GPS NEO-6M จาก u-blox สามารถติดตามดาวเทียมได้มากถึง 22 ดวงใน 50 ช่องสัญญาณ และบรรลุระดับความไวสูงสุดของอุตสาหกรรม เช่น การติดตาม -161 dB ในขณะที่ใช้กระแสไฟจ่ายเพียง 45mA เอ็นจิ้นการกำหนดตำแหน่ง u-blox 6 ยังมี Time-To-First-Fix (TTFF) ที่น้อยกว่า 1 วินาที หนึ่งในคุณสมบัติที่ดีที่สุดที่ชิปมีให้คือโหมดประหยัดพลังงาน (PSM) ช่วยลดการใช้พลังงานของระบบโดยการเลือกสวิตช์เปิดและปิดส่วนต่างๆ ของเครื่องรับ ซึ่งช่วยลดการใช้พลังงานของโมดูลลงอย่างมากให้เหลือเพียง 11mA ทำให้เหมาะสำหรับการใช้งานที่ไวต่อพลังงาน เช่น นาฬิกาข้อมือ GPS หมุดข้อมูลที่จำเป็นของชิป GPS NEO-6M ถูกแยกออกเป็นส่วนหัวพิทช์ 0.1 นิ้ว ซึ่งรวมถึงพินที่จำเป็นสำหรับการสื่อสารกับไมโครคอนโทรลเลอร์ผ่าน UART

หมายเหตุ: - โมดูลรองรับอัตราบอดตั้งแต่ 4800bps ถึง 230400bps โดยมีบอดเริ่มต้นที่ 9600

ตำแหน่ง Fix ไฟ LED แสดงสถานะ

มีไฟ LED บนโมดูล GPS NEO-6M ซึ่งระบุสถานะของการแก้ไขตำแหน่ง มันจะกะพริบในอัตราต่างๆขึ้นอยู่กับสถานะที่อยู่ใน

  1. ไม่กะพริบ ==> หมายถึง กำลังค้นหาดาวเทียม
  2. กะพริบทุกๆ 1 วินาที – หมายถึงพบ Position Fix

ตัวควบคุม LDO 3.3V

แรงดันไฟฟ้าในการทำงานของชิป NEO-6M อยู่ที่ 2.7 ถึง 3.6V แต่โมดูลนี้มาพร้อมกับตัวควบคุม 3V3 แบบเลื่อนออกต่ำพิเศษ MIC5205 จาก MICREL พินลอจิกยังทนต่อ 5 โวลต์ ดังนั้นเราจึงสามารถเชื่อมต่อกับ Arduino หรือไมโครคอนโทรลเลอร์ลอจิก 5V โดยไม่ต้องใช้ตัวแปลงระดับลอจิก

แบตเตอรี่ & EEPROM

โมดูลนี้ติดตั้ง EEPROM แบบอนุกรมสองสาย HK24C32 มีขนาด 4KB และเชื่อมต่อกับชิป NEO-6M ผ่าน I2C โมดูลนี้ยังมีแบตเตอรี่แบบชาร์จไฟได้ซึ่งทำหน้าที่เป็นตัวเก็บประจุแบบซุปเปอร์

EEPROM ร่วมกับแบตเตอรี่ช่วยรักษา RAM สำรองของแบตเตอรี่ (BBR) BBR ประกอบด้วยข้อมูลนาฬิกา ข้อมูลตำแหน่งล่าสุด (ข้อมูลวงโคจรของ GNSS) และการกำหนดค่าโมดูล แต่ไม่ได้มีไว้สำหรับการจัดเก็บข้อมูลถาวร

เนื่องจากแบตเตอรี่ยังคงนาฬิกาและตำแหน่งสุดท้าย เวลาในการแก้ไขครั้งแรก (TTFF) จะลดลงเหลือ 1 วินาทีอย่างมาก ซึ่งช่วยให้ล็อกตำแหน่งได้เร็วขึ้นมาก

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

Pinout

GND คือ Ground Pin และจำเป็นต้องเชื่อมต่อกับพิน GND บน Arduino

พิน TxD (ตัวส่งสัญญาณ) ใช้สำหรับการสื่อสารแบบอนุกรม

พิน RxD (ตัวรับ) ใช้สำหรับการสื่อสารแบบอนุกรม

VCC จ่ายไฟให้กับโมดูล คุณสามารถเชื่อมต่อโดยตรงกับพิน 5V บน Arduino

ขั้นตอนที่ 4: Arduino Mega

Arduino เป็นแพลตฟอร์มอิเล็กทรอนิกส์แบบโอเพ่นซอร์สที่ใช้ฮาร์ดแวร์และซอฟต์แวร์ที่ใช้งานง่าย บอร์ด Arduino สามารถอ่านอินพุต - ไฟบนเซ็นเซอร์, นิ้วบนปุ่มหรือข้อความ Twitter - และเปลี่ยนเป็นเอาต์พุต - เปิดใช้งานมอเตอร์, เปิด LED, เผยแพร่บางสิ่งทางออนไลน์ คุณสามารถบอกบอร์ดของคุณว่าต้องทำอะไรโดยส่งชุดคำสั่งไปยังไมโครคอนโทรลเลอร์บนบอร์ด ในการทำเช่นนี้คุณใช้ภาษาการเขียนโปรแกรม Arduino (ตาม Wiring) และซอฟต์แวร์ Arduino (IDE) ตามการประมวลผล

Arduino Mega

Arduino Mega 2560 เป็นบอร์ดไมโครคอนโทรลเลอร์ที่ใช้ Atmega2560

  • มีพิน I/O ดิจิตอล 54 พินและพินอะนาล็อก 16 พินที่รวมอยู่ในบอร์ด ซึ่งทำให้อุปกรณ์นี้มีเอกลักษณ์และโดดเด่นกว่าที่อื่น จาก 54 ดิจิตอล I/O, 15 อันใช้สำหรับ PWM (การปรับความกว้างพัลส์)
  • เพิ่มคริสตัลออสซิลเลเตอร์ความถี่ 16MHz บนบอร์ด
  • บอร์ดมาพร้อมกับพอร์ตสาย USB ที่ใช้เชื่อมต่อและโอนรหัสจากคอมพิวเตอร์ไปยังบอร์ด
  • แจ็คไฟ DC เชื่อมต่อกับบอร์ดที่ใช้จ่ายไฟให้กับบอร์ด
  • บอร์ดมาพร้อมกับตัวควบคุมแรงดันไฟฟ้าสองตัวคือ 5V และ 3.3V ซึ่งให้ความยืดหยุ่นในการควบคุมแรงดันไฟฟ้าตามความต้องการ
  • มีปุ่มรีเซ็ตและพอร์ตอนุกรมฮาร์ดแวร์ 4 พอร์ตที่เรียกว่า USART ซึ่งสร้างความเร็วสูงสุดสำหรับการตั้งค่าการสื่อสาร
  • มีสามวิธีในการขับเคลื่อนบอร์ด คุณสามารถใช้สาย USB เพื่อจ่ายไฟให้กับบอร์ดและโอนรหัสไปยังบอร์ด หรือคุณจะเปิดเครื่องโดยใช้ Vin ของบอร์ด หรือผ่านแจ็คเสียบปลั๊กหรือแบตเตอร์รี่ก็ได้

ข้อมูลจำเพาะ

Pinout

คำอธิบายพิน

  • 5V & 3.3V ==>พินนี้ใช้สำหรับจ่ายแรงดันเอาต์พุตที่ควบคุมได้ประมาณ 5V แหล่งจ่ายไฟที่มีการควบคุมนี้จะให้พลังงานแก่คอนโทรลเลอร์และส่วนประกอบอื่นๆ บนบอร์ด สามารถรับได้จาก Vin ของบอร์ดหรือสาย USB หรือแหล่งจ่ายแรงดันไฟ 5V อื่นที่มีการควบคุม ในขณะที่การควบคุมแรงดันไฟฟ้าอื่นมีให้โดยพิน 3.3V กำลังสูงสุดที่สามารถดึงได้คือ 50mA
  • GND ==>มีหมุดกราวด์ 5 อันบนกระดาน ซึ่งทำให้มีประโยชน์เมื่อต้องใช้หมุดกราวด์มากกว่าหนึ่งอันสำหรับโปรเจ็กต์
  • รีเซ็ต ==> พินนี้ใช้เพื่อรีเซ็ตบอร์ด การตั้งค่าพินนี้เป็น LOW จะเป็นการรีเซ็ตบอร์ด
  • Vin ==> เป็นแรงดันไฟขาเข้าที่จ่ายให้กับบอร์ดซึ่งมีช่วงตั้งแต่ 7V ถึง 20V แรงดันไฟฟ้าที่จ่ายโดยแจ็คจ่ายไฟสามารถเข้าถึงได้ผ่านพินนี้ อย่างไรก็ตาม แรงดันเอาต์พุตผ่านพินนี้ไปยังบอร์ดจะถูกตั้งค่าโดยอัตโนมัติที่ 5V
  • การสื่อสารแบบอนุกรม ==> RXD และ TXD เป็นพินอนุกรมที่ใช้ในการส่งและรับข้อมูลอนุกรม เช่น Rx แสดงถึงการส่งข้อมูลในขณะที่ Tx ใช้ในการรับข้อมูล มีการใช้พินอนุกรมเหล่านี้สี่แบบร่วมกัน โดยที่ Serail 0 มี RX(0) และ TX(1), Serial 1 ประกอบด้วย TX(18) และ RX(19), Serial 2 ประกอบด้วย TX(16) และ RX(17), และ Serial 3 ประกอบด้วย TX(14) และ RX(15)
  • อินเตอร์รัปต์ภายนอก ==> หกพินใช้สำหรับสร้างอินเตอร์รัปต์ภายนอกเช่น อินเตอร์รัปต์ 0(0), อินเตอร์รัปต์ 1(3), อินเตอร์รัปต์ 2(21), อินเตอร์รัปต์ 3(20), อินเตอร์รัปต์ 4(19), อินเตอร์รัปต์ 5(18) พินเหล่านี้สร้างอินเทอร์รัปต์ได้หลายวิธี เช่น ให้ค่าต่ำ ขอบขึ้นหรือลง หรือเปลี่ยนค่าเป็นพินอินเทอร์รัปต์
  • LED ==> บอร์ดนี้มาพร้อมกับ LED ในตัวที่เชื่อมต่อกับพินดิจิตอล 13 ค่าสูงที่พินนี้จะเปิด LED และค่า LOW จะปิด
  • AREF ==> AREF ย่อมาจาก Analog Reference Voltage ซึ่งเป็นแรงดันอ้างอิงสำหรับอินพุตแบบอะนาล็อก
  • Analog Pins ==> มี 16 พินแบบอะนาล็อกที่รวมอยู่ในบอร์ดที่มีป้ายกำกับว่า A0 ถึง A15 สิ่งสำคัญที่ควรทราบคือ พินอะนาล็อกเหล่านี้สามารถใช้เป็นพิน I/O ดิจิทัลได้ พินอะนาล็อกแต่ละอันมาพร้อมกับความละเอียด 10 บิต พินเหล่านี้สามารถวัดจากกราวด์ถึง 5V อย่างไรก็ตาม ค่าบนสามารถเปลี่ยนแปลงได้โดยใช้ฟังก์ชัน AREF และ analogReference()
  • I2C ==> สองพิน 20 และ 21 รองรับการสื่อสาร I2C โดยที่ 20 หมายถึง SDA (Serial Data Line ส่วนใหญ่ใช้สำหรับเก็บข้อมูล) และ 21 หมายถึง SCL (Serial Clock Line ส่วนใหญ่ใช้สำหรับการซิงโครไนซ์ข้อมูลระหว่างอุปกรณ์)
  • การสื่อสาร SPI ==> SPI ย่อมาจาก Serial Peripheral Interface ที่ใช้สำหรับการส่งข้อมูลระหว่างคอนโทรลเลอร์และอุปกรณ์ต่อพ่วงอื่นๆ สี่พินเช่น 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS) ใช้สำหรับการสื่อสาร SPI

ขั้นตอนที่ 5: Arduino IDE

ที่นี่ฉันสมมติว่าคุณติดตั้ง Arduino IDE แล้ว

1. ดาวน์โหลดไลบรารีที่จำเป็นที่ระบุด้านล่าง

TinyGPS lib

2. หลังจากดาวน์โหลดแล้ว แตกไฟล์และย้ายไปยังโฟลเดอร์ C:\Users\…\Documents\Arduino\libraries ตรวจสอบให้แน่ใจว่าไม่มี (-)

3. เปิด Arduino IDE และคัดลอกโค้ดจากส่วนโปรแกรม

4. จากนั้นเลือกบอร์ดสำหรับที่ไปที่ Tools ==> Boards ==> เลือกบอร์ดที่นี่เราใช้ Arduino Mega 2560

5. หลังจากเลือกบอร์ดแล้ว ให้เลือกพอร์ตสำหรับสิ่งนั้น ไปที่ Tools ==> Ports

6. หลังจากเลือกบอร์ดและพอร์ตแล้ว ให้คลิกอัพโหลด

7. เมื่ออัปโหลดรหัสแล้ว ให้เปิดเทอร์มินัลอนุกรมเพื่อดูผลลัพธ์

ขั้นตอนที่ 6: การเชื่อมต่อ

Arduino MEGA ==> NEO-6M GPS

  • 3.3V ==> VCC
  • GND ==> GND
  • Tx1 (18) ==> Rx
  • Rx (19) ==> Tx

คุณสามารถใช้ Serial2 หรือ Serial3 แทน Serial1. ได้

แนะนำ: