- มันทำงานอย่างไร:
- ส่วนประกอบที่ต้องการ:
- คำอธิบายวงจร:
- องศา GPS นาทีถึงองศาทศนิยมการบรรจบกันของพิกัด:
- คำอธิบายการเขียนโปรแกรม:
ระบบติดตามยานพาหนะกลายเป็นสิ่งสำคัญมากในปัจจุบันโดยเฉพาะอย่างยิ่งในกรณีรถถูกขโมย หากคุณติดตั้งระบบ GPSในรถคุณสามารถติดตามตำแหน่งยานพาหนะของคุณและช่วยให้ตำรวจติดตามรถที่ถูกขโมยได้ ก่อนหน้านี้เราได้สร้างโครงการที่คล้ายกันซึ่งมีการส่งพิกัดตำแหน่งของยานพาหนะบนโทรศัพท์มือถือตรวจสอบที่นี่ 'Arduino ติดตามยานพาหนะโดยใช้ GPS และ GSM
นี่เรากำลังสร้างรุ่นที่สูงขึ้นของระบบติดตามยานพาหนะในที่ที่คุณสามารถติดตามยานพาหนะของคุณบน Google Maps ในโครงการนี้เราจะส่งพิกัดตำแหน่งไปยัง Local Server และคุณเพียงแค่ต้องเปิด 'หน้าเว็บ' บนคอมพิวเตอร์หรือมือถือของคุณซึ่งคุณจะพบลิงก์ไปยัง Google แผนที่พร้อมพิกัดตำแหน่งยานพาหนะของคุณ เมื่อคุณคลิกที่ลิงก์นั้นระบบจะนำคุณไปยัง Google Maps ซึ่งแสดงตำแหน่งยานพาหนะของคุณ ในการนี้ระบบติดตามยานพาหนะโดยใช้ Google Maps, โมดูลจีพีเอจะใช้สำหรับการรับตำแหน่งพิกัด, โมดูล Wi-Fiเพื่อให้ส่งข้อมูลไปยังเครื่องคอมพิวเตอร์หรือโทรศัพท์มือถือผ่าน Wi-Fi และArduinoจะใช้เพื่อให้ GPS และ Wi-Fi พูดคุยกับแต่ละอื่น ๆ.
มันทำงานอย่างไร:
ในการติดตามรถเราต้องหาพิกัดของยานพาหนะโดยใช้โมดูล GPS โมดูล GPS สื่อสารอย่างต่อเนื่องกับดาวเทียมเพื่อรับพิกัด จากนั้นเราก็ต้องส่งพิกัดเหล่านี้จาก GPS เพื่อ Arduino ของเราโดยใช้UARTจากนั้น Arduino แยกข้อมูลที่ต้องการจากข้อมูลที่ได้รับโดย GPS
ก่อนหน้านี้ Arduino จะส่งคำสั่งไปยังโมดูล Wi-Fi ESP8266เพื่อกำหนดค่าและเชื่อมต่อกับเราเตอร์และรับที่อยู่ IP หลังจาก Arduino เริ่มต้น GPS เพื่อรับพิกัดและ LCD จะแสดงข้อความ 'Page Refresh message' นั่นหมายความว่าผู้ใช้ต้องรีเฟรชหน้าเว็บ เมื่อผู้ใช้รีเฟรชหน้าเว็บ Arduino จะได้รับพิกัด GPS และส่งข้อมูลเดียวกันนี้ไปยังเว็บเพจ (เซิร์ฟเวอร์ภายใน) ผ่าน Wi-Fi โดยมีข้อมูลเพิ่มเติมและลิงก์ Google Maps อยู่ ตอนนี้โดยการคลิกลิงก์นี้ผู้ใช้จะเปลี่ยนเส้นทางไปยัง Google แผนที่พร้อมกับพิกัดจากนั้นเขา / เธอจะได้รับตำแหน่งปัจจุบันของยานพาหนะที่จุดแดงบน Google แผนที่ กระบวนการทั้งหมดแสดงอย่างถูกต้องในวิดีโอตอนท้าย
ส่วนประกอบที่ต้องการ:
- Arduino UNO
- โมดูล Wi-Fi ESP8266
- โมดูล GPS
- สาย USB
- การเชื่อมต่อสายไฟ
- แล็ปท็อป
- แหล่งจ่ายไฟ
- 16x2 LCD
- คณะกรรมการขนมปัง
- เราเตอร์ Wi-Fi
คำอธิบายวงจร:
วงจรสำหรับ 'การติดตามยานพาหนะโดยใช้โครงการ Google Maps'นั้นง่ายมากและเราต้องใช้โมดูล Arduino UNO, โมดูล GPS และโมดูล Wi-Fi ESP8266 เป็นหลัก มีจอ LCD 16x2เชื่อมต่อเป็นทางเลือกสำหรับการแสดงสถานะ LCD นี้เชื่อมต่อที่พิน Arduino 14-19 (A0-A5)
ที่นี่ Tx pin ของโมดูล GPSเชื่อมต่อโดยตรงกับพินดิจิทัลหมายเลข 10 ของ Arduino เมื่อใช้ Software Serial Library ที่นี่เราอนุญาตให้มีการสื่อสารแบบอนุกรมบนพิน 10 และ 11 และทำให้เป็น Rx และ Tx ตามลำดับและเปิดพิน Rx ของโมดูล GPS ไว้ โดยค่าเริ่มต้น Pin 0 และ 1 ของ Arduino จะใช้สำหรับการสื่อสารแบบอนุกรม แต่ด้วยการใช้ไลบรารี SoftwareSerial เราสามารถอนุญาตการสื่อสารแบบอนุกรมบนพินดิจิทัลอื่น ๆ ของ Arduino ได้ ใช้อะแดปเตอร์ 12 โวลต์เพื่อจ่ายไฟให้กับโมดูล GPS ไปที่นี่เพื่อเรียนรู้“ วิธีใช้ GPS กับ Arduino” และรับพิกัด
โมดูล Wi-Fi หมุด Vcc และ GND ของ ESP8266 เชื่อมต่อโดยตรงกับ3.3Vและ GND ของ Arduino และ CH_PD ยังเชื่อมต่อด้วย 3.3V หมุด Tx และ Rx ของ ESP8266 เชื่อมต่อโดยตรงกับพิน 2 และ 3 ของ Arduino ซอฟต์แวร์ Serial Library ยังใช้ที่นี่เพื่ออนุญาตการสื่อสารแบบอนุกรมบนพิน 2 และ 3 ของ Arduino เราได้กล่าวถึงการเชื่อมต่อของโมดูล Wi-Fi ESP8266 กับ Arduino โดยละเอียดแล้วโปรดอ่าน“ วิธีการส่งข้อมูลจาก Arduino ไปยังเว็บเพจโดยใช้ WiFi” ก่อนที่จะทำโครงการนี้ ด้านล่างนี้คือภาพของ ESP8266:
ESP8266 มีไฟ LED สองดวงดวงหนึ่งเป็นสีแดงสำหรับแสดงพลังงานและดวงที่สองคือสีน้ำเงินนั่นคือ LED การสื่อสารข้อมูล ไฟ LED สีน้ำเงินกะพริบเมื่อ ESP ส่งข้อมูลบางส่วนผ่านพิน Tx นอกจากนี้อย่าเชื่อมต่อ ESP กับแหล่งจ่ายไฟ +5 โวลต์มิฉะนั้นอุปกรณ์ของคุณอาจเสียหายได้ ในโครงการนี้เราได้เลือกอัตรารับส่งข้อมูล 9600 สำหรับการสื่อสาร UART ทั้งหมด
ผู้ใช้ยังสามารถดูการสื่อสารระหว่างโมดูล Wi-Fi ESP8266 และ Arduino บน Serial Monitor ที่อัตราการส่งข้อมูลที่ 9600:
ตรวจสอบวิดีโอในตอนท้ายของโปรเจ็กต์นี้ด้วยสำหรับขั้นตอนการทำงานโดยละเอียด
องศา GPS นาทีถึงองศาทศนิยมการบรรจบกันของพิกัด:
โมดูล GPS รับพิกัดจากดาวเทียมในรูปแบบDegree Minute (ddmm.mmmm) และที่นี่เราต้องการรูปแบบทศนิยมเพื่อค้นหาตำแหน่งบนGoogle Maps ก่อนอื่นเราต้องแปลงพิกัดจากรูปแบบองศานาทีเป็นรูปแบบองศาทศนิยมโดยใช้สูตรที่กำหนด
สมมติว่า 2856.3465 (ddmm.mmmm) คือ Latitude ที่เราได้รับจากโมดูล GPS ตอนนี้ตัวเลขสองตัวแรกคือองศาและที่เหลือคือนาที
28 คือองศาและ 56.3465 คือนาที
ตอนนี้ไม่จำเป็นต้องแปลงส่วนองศา (28) แต่ต้องแปลงส่วนนาทีเป็นองศาทศนิยมโดยหาร 60:
พิกัดองศาทศนิยม = องศา + นาที / 60
พิกัดองศาทศนิยม = 28 + 56.3465 / 60
พิกัดองศาทศนิยม = 28 + 0.94
พิกัดองศาทศนิยม = 28.94
กระบวนการเดียวกันจะทำได้สำหรับลองจิจูดข้อมูลเราได้แปลงพิกัดจากองศานาทีเป็นองศาทศนิยมโดยใช้สูตรข้างต้นใน Arduino Sketch:
ลอยนาที = lat_minut.toFloat (); นาที = นาที / 60; องศาลอย = lat_degree.toFloat (); ละติจูด = องศา + ลบ; นาที = long_minut.toFloat (); นาที = นาที / 60; องศา = long_degree.toFloat (); logitude = องศา + ลบ;
คำอธิบายการเขียนโปรแกรม:
ในรหัสนี้เราได้ใช้ไลบรารี SerialSoftware เพื่อเชื่อมต่อ ESP8266 และโมดูล GPS กับ Arduino จากนั้นเราได้กำหนดพินที่แตกต่างกันสำหรับทั้งสองและเริ่มต้น UART ด้วยอัตราบอด 9600 รวม LiquidCrystal Library สำหรับอินเทอร์เฟซ LCD กับ Arduino
# รวม
หลังจากนั้นเราต้องกำหนดหรือประกาศตัวแปรและสตริงเพื่อวัตถุประสงค์ที่แตกต่างกัน
หน้าเว็บสตริง = ""; int ผม = 0, k = 0; int gps_status = 0; ชื่อสตริง = "
1. ชื่อ: ชื่อของคุณ
"; // 22 สตริง dob ="2. DOB: 12 ก.พ. 2536
"; // 21 หมายเลขสตริง ="4. หมายเลขรถ: RJ05 XY 4201
"; // 29 สายอักขระ Cordinat ="พิกัด:
"; // 17 String latitude =" "; String logitude =" "; String gpsString =" "; char * test =" $ GPGGA ";จากนั้นเราได้สร้างฟังก์ชันบางอย่างเพื่อวัตถุประสงค์ที่แตกต่างกันเช่น:
ฟังก์ชั่นรับข้อมูล GPS พร้อมพิกัด:
เป็นโมฆะ gpsEvent () {gpsString = ""; ในขณะที่ (1) {while (gps.available ()> 0) {ถ่าน inChar = (ถ่าน) gps.read (); gpsString + = inChar; ถ้า (ฉัน <7) {if (gpsString! = test) {i = 0;……… ป…..
ฟังก์ชั่นสำหรับการดึงข้อมูลจากสตริง GPS และแปลงข้อมูลนั้นให้อยู่ในรูปแบบทศนิยมจากรูปแบบนาทีทศนิยมตามที่อธิบายไว้ก่อนหน้า
โมฆะพิกัด 2dec () {สตริง lat_degree = ""; สำหรับ (i = 18; i <20; i ++) lat_degree + = gpsString; สตริง lat_minut = ""; สำหรับ (i = 20; i <28; i ++) lat_minut + = gpsString;……… ป…..
ฟังก์ชั่นสำหรับส่งคำสั่งไปยัง ESP8266 เพื่อกำหนดค่าและเชื่อมต่อกับ WIFI
เป็นโมฆะ connect_wifi (สตริง cmd, int t) {int temp = 0, i = 0; ในขณะที่ (1) {Serial.println (cmd); Serial1.println (cmd); ในขณะที่ (Serial1.available ()> 0)……………….
void show_coordinate () ฟังก์ชันสำหรับแสดงพิกัดบน LCD และ Serial Monitor และ ฟังก์ชัน void get_ip () สำหรับการรับที่อยู่ IP
ฟังก์ชัน Void Send () สำหรับสร้างสตริงข้อมูลที่จะส่งไปยังเว็บเพจโดยใช้ ESP8266 และ โมฆะ sendwebdata () ฟังก์ชันสำหรับส่งสตริงข้อมูลไปยังเว็บเพจโดยใช้ UART
ในฟังก์ชัน void loop Arduino รออย่างต่อเนื่องสำหรับหน้าเว็บแบบฟอร์มคำขอ (การรีเฟรชหน้าเว็บ)
ห่วงเป็นโมฆะ () {k = 0; Serial.println ("โปรดรีเฟรชหน้า Ur"); lcd.setCursor (0,0); lcd.print ("โปรดรีเฟรช"); lcd.setCursor (0,1); lcd.print ("หน้าเว็บของคุณ.. "); ในขณะที่ (k <1000)……………….
ตรวจสอบรหัสเต็มด้านล่าง