สารบัญ:
- ขั้นตอนที่ 1: ข้อกำหนดเบื้องต้น
- ขั้นตอนที่ 2: แนวคิดหลัก
- ขั้นตอนที่ 3: โมดูล SIM800L
- ขั้นตอนที่ 4: Ublox Neo 6m
- ขั้นตอนที่ 5: วงจรไฟฟ้า
- ขั้นตอนที่ 6: รหัส
- ขั้นตอนที่ 7: เว็บเซิร์ฟเวอร์
- ขั้นตอนที่ 8: การสิ้นสุด/ประสบการณ์
วีดีโอ: ตัวติดตาม GPS แบบเรียลไทม์แบบโฮมเมด (SIM800L, Ublox NEO-6M, Arduino): 8 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
คุณมีโมดูล GSM วางอยู่รอบ ๆ เหมือนฉันหรือไม่? ยังเป็นเครื่องติดตาม GPS?
เราคิดเหมือนกัน!
ในคำแนะนำนี้ ฉันจะพยายามแนะนำวิธีบรรลุเป้าหมายของคุณจากมุมมองของมือใหม่
เนื่องจากฉันไม่มีความรู้ด้านวิศวกรรมไฟฟ้ามาก่อน (ตามจริงแล้ว โปรเจ็กต์ไม่ต้องการอะไรมาก แต่เปล่าเลย) และไม่รู้ว่าจะสร้างอุปกรณ์ที่ปั๊มข้อมูลแบบเรียลไทม์ไปยังเว็บเซิร์ฟเวอร์ได้อย่างไร ฉันพบปัญหามากมาย ถึงกระนั้นในที่สุดฉันก็สามารถทำงานให้สำเร็จได้
ดังนั้น ในบทช่วยสอนนี้ ฉันต้องการเน้นย้ำข้อผิดพลาดที่ผู้เริ่มต้นสามารถทำได้ และสร้างโครงการตามลำดับ
ข้อควรจำ: โปรดใช้ความระมัดระวังในขณะที่คุณทำงานกับไฟฟ้า!
หมายเหตุ: ฉันไม่ใช่มืออาชีพ รหัสอาจไม่ซับซ้อนเพียงพอสำหรับความต้องการทั้งหมดของคุณ โครงการตั้งใจให้เป็น "โครงการอดิเรก" แต่! มันได้ผลสำหรับฉัน และถ้ามันได้ผลสำหรับฉัน มันก็จะเหมาะกับคุณเช่นกัน!
ขั้นตอนที่ 1: ข้อกำหนดเบื้องต้น
โมดูล GSM - SIM800L
- เล็กกระทัดรัด น่าใช้
- สามารถใช้อินเทอร์เน็ตบนมือถือ (GPRS) ได้
- ราคาถูก
โมดูล GPS - Ublox NEO6M
- ยังเล็ก
- จัดการงานได้เป็นอย่างดี
ไมโครคอนโทรลเลอร์ - เป็นอะไรก็ได้ - คุณสามารถใช้ Arduino Uno หรือ Nano ที่มีชื่อเสียงเพื่อเพิ่มพื้นที่ว่างได้
แบตเตอรี่ - ฉันใช้เซลล์ 18650 เป็นหลักและแหล่งพลังงานเท่านั้น (Nominal 3.7V)
ที่ใส่แบตเตอรี่ - ทำไม? - เพราะการบัดกรีแบต 18650 ค่อนข้างอันตรายเพราะความร้อน
DC-DC Boost Converter Step Up Module 5V - ต้องมี เนื่องจาก Arduino ที่ฉันใช้ต้องการ 5V
เครื่องมือ สิ่งพื้นฐานที่อาจมีประโยชน์:
สายไฟ หัวแร้ง เขียงหั่นขนมสำหรับการทดสอบ
ขั้นตอนที่ 2: แนวคิดหลัก
แนวคิดหลักของระบบมีดังนี้:
ประกอบด้วย 3 ส่วน:
- อุปกรณ์ - ซึ่งมีพิกัด GPS ที่เหมาะสมและสามารถเชื่อมต่อกับเซิร์ฟเวอร์จากระยะไกลและส่งข้อมูลไปที่นั้นได้
- เว็บเซิร์ฟเวอร์ - ซึ่งสามารถรับข้อมูลที่เข้ามา - จัดเก็บ - และให้บริการลูกค้ารายอื่น
- แพลตฟอร์ม - ที่ที่เราสามารถดูพิกัดได้ - ตอนนี้ควรเป็นแอปพลิเคชันมือถือหรือเว็บไซต์
ขั้นตอนที่ 3: โมดูล SIM800L
ฉันมีช่วงเวลาที่ยากลำบากกับโมดูล
ฉันต้องการเริ่มต้นด้วยคุณลักษณะและข้อมูลอ้างอิงบางประการ
ตามแผ่นข้อมูล:
- ทำงานระหว่าง 3.4V - 4.4V
- สามารถส่ง SMS โทรออกด้วยเสียงไปยังโทรศัพท์เครื่องอื่นและเชื่อมต่ออินเทอร์เน็ตได้!
- เราสามารถสื่อสารกับมันผ่านคำสั่ง AT!
- สามารถใช้ได้ถึง 2A ในช่วงเวลาสูงสุด! หมายเหตุ: คุณอาจไม่สามารถวัดด้วยมัลติมิเตอร์ได้ เนื่องจากอัตราการสุ่มตัวอย่างต่ำ
ประสบการณ์ของฉันคือ SIM800L ที่ต่ำกว่า 3.8V ใช้งานไม่ได้จริงๆ
สำหรับข้อมูลเพิ่มเติม โปรดไปที่: แผ่นข้อมูล
ดังนั้นงานของคุณคือจัดหาอย่างน้อย 3.8V ให้กับโมดูล (ควรเป็น 4V) ซึ่งเป็นแหล่งจ่ายไฟที่มีเอาต์พุตอย่างน้อย 2A
ก่อนใช้โมดูลในอุปกรณ์ขั้นสุดท้าย ฉันแนะนำให้คุณสร้างการสื่อสารกับ SIM800L และคอมพิวเตอร์ของคุณเพื่อให้แน่ใจว่าอุปกรณ์ของคุณทำงานอย่างถูกต้อง
ก่อนอื่นให้เสียบซิมการ์ดตามภาพด้านบน
ในการเชื่อมต่อกับพีซีของคุณ คุณสามารถใช้ตัวแปลง USB เป็น TTL หรือ Arduino
ตอนนี้ฉันไปกับ Arduino
เชื่อมต่อ SIM800L VCC และ GND กับขั้วแหล่งพลังงานของคุณ
เชื่อมต่อ TX กับพินดิจิทัล Arduino ตัวที่ 10, RX กับพินดิจิทัลที่ 11 ของ Arduino
ดาวน์โหลดรหัสฉันเชื่อมโยงในขั้นตอนนี้
ด้วยรหัสนี้ คุณสามารถส่งคำสั่งและรับคำสั่งเหล่านั้นกลับมาบน Serial Monitor ของคุณได้
คำสั่งง่ายๆ บางอย่าง:
AT คืนค่า OK หากการเชื่อมต่อใช้ได้
ATD+123456789; โทรไปยังหมายเลขโทรศัพท์ที่กำหนด หมายเหตุ: อย่าลืมลงท้ายด้วยเครื่องหมายอัฒภาค
AT+CPIN? คืนสถานะซิมการ์ด (ล็อคหรือไม่)
หากคุณต้องการส่ง SMS คุณต้องสิ้นสุดการป้อนข้อมูลด้วยอักขระพิเศษ ซึ่งสามารถทำได้ด้วยสัญลักษณ์ '$'
สำหรับคำสั่งที่น่าสนใจอื่น ๆ ฉันแนะนำให้คุณอ่านสิ่งนี้
มีคำสั่งต่าง ๆ ทำความคุ้นเคยกับพวกมันมีประโยชน์จริงๆ
มีไฟ LED แสดงสถานะสีแดง ซึ่งจะบอกคุณว่า SIM800L ทำงานอย่างไร
64 MS ON - 800MS OFF - SIM800L ไม่ได้ลงทะเบียนกับเครือข่าย
64 MS ON - 3000MS OFF - SIM800L ลงทะเบียนกับเครือข่ายแล้ว
64 MS ON - 300MS OFF - SIM800l อยู่ในโหมด GPRS
หาก SIM800L รีสตาร์ทอย่างต่อเนื่องหลังจากกะพริบประมาณ 8-10 ครั้ง อาจเป็นเพราะไม่มีแหล่งจ่ายไฟที่มีประสิทธิภาพ
หากคุณไม่โอเคหลังจาก AT ให้ตรวจสอบสายไฟ! หากคุณมีมัลติมิเตอร์ ให้ตรวจสอบความต่อเนื่องของสายไฟ
ตรวจสอบการเชื่อมต่อของสายไฟและข้อต่อประสาน! โมดูลจะทำงานเมื่อกะพริบเท่านั้น
ขั้นตอนที่ 4: Ublox Neo 6m
ลักษณะบางประการ
- แรงดันไฟสูงสุด: 3.6V - ฉันจ่ายไฟด้วยพิน 3.3V ของ Arduino
- การดึงกระแสสูงสุดคือ 67mA - ดังนั้นคุณจึงสามารถใช้พลังงานจาก arduino
- ช่วงอุณหภูมิ: -40-85 องศาเซลเซียส (น่าจะพอดีตัว)
หน่วยที่ฉันสั่งมาพร้อมกับเสาอากาศที่เห็นในภาพ ฉันแค่เสียบมันในช่องที่เกี่ยวข้อง
อุปกรณ์เมื่อมีสัญญาณจะกะพริบพร้อมไฟ LED สีฟ้า
ขั้นแรก ตรวจสอบการทำงานของ GPS ที่นี่ หากคุณไม่ทราบ
เมื่ออุปกรณ์เปิดอยู่และพบดาวเทียม 3 ดวง จะส่งค่าที่คั่นด้วยเครื่องหมายจุลภาคจำนวนมากไปยัง Arduino ตามที่กล่าวไว้ข้างต้น
เพื่อช่วยงานของเรา เราสามารถใช้ห้องสมุดภายนอกบางแห่งเพื่อแยกวิเคราะห์ข้อมูลนี้เพื่อให้มนุษย์อ่านได้ง่ายขึ้น
คุณสามารถใช้ไลบรารี TinyGps หรือไลบรารี NeoGPS ฉันใช้อันที่ 2 เพราะมันเบากว่า
สำหรับการทดสอบ คุณต้องเชื่อมต่อพินจ่ายไฟกับ Arduino 3.3V และ GND
ดาวน์โหลดรหัสนี้และใช้กับ GPS ของคุณ RX พินดิจิตอล 10, TX พินดิจิตอล 11
หมายเหตุ: อย่าลืมใช้โมดูลภายนอกอาคาร โดยเฉพาะเมื่อไม่มีระบบคลาวด์
หลังจากผ่านไปครึ่งนาที อุปกรณ์จะกะพริบและแสดงพิกัด GPS ของคุณ!:)
เมื่อคุณรู้ว่าโมดูล SIM800L และ GPS ของคุณทำงานอย่างถูกต้องแล้ว คุณสามารถไปยังขั้นตอนถัดไปได้
ขั้นตอนที่ 5: วงจรไฟฟ้า
วงจรตามรูปเลยครับ
ดังนั้นแบตเตอรี่ 3.4V - 4.2V 18650 จึงเป็นแหล่งจ่ายไฟหลัก Sim800L ได้รับพลังงานโดยตรงจากมัน มีตัวเก็บประจุระหว่างกันแบบขนานเพื่อปรับปรุงความเสถียรของวงจร
เมื่อคุณเลือกตัวเก็บประจุ คุณควรเลือกตัวเก็บประจุ ESR ต่ำ
ตัวแปลงสเต็ปอัพ 5V หนึ่งตัวช่วยเพิ่มแรงดันไฟฟ้าของแบตเตอรี่เป็น 5V (จำเป็นต้องใช้ ir เนื่องจาก Arduino ทำงานร่วมกับ 5V)
รางไฟ 5V เชื่อมต่อกับนาโนที่นี่ Sim800L และ Neo6m เชื่อมต่อกับ Nano ตามภาพ (ซิม Tx-D10, SimRx-D11; NeoTX-D3, NeoRX-D4)
D12 เชื่อมต่อกับ RST ดังนั้นเราจึงสามารถรีบูตระบบโดยทางโปรแกรมได้ (ยกเว้น SIM800L) หมายเหตุ: วิธีการรีบูตนี้อาจไม่ใช่แนวทางปฏิบัติที่ดีที่สุด)
และสุดท้าย LEDS สองดวงเชื่อมต่อกับ NANO ดังนั้นเราจึงสามารถบอกผู้ใช้ได้หากมีข้อผิดพลาดเกิดขึ้น
ขั้นตอนที่ 6: รหัส
รหัสถูกแนบมากับ Instructables หรือดูที่ github
คุณสามารถแก้ไขเพื่อให้ทำงานได้อย่างถูกต้องตามความต้องการของคุณ หรือคุณสามารถใช้รหัสของผู้อื่นได้หากต้องการ
waitUntilResponse(); ฟังก์ชั่นตัวช่วยถูกพรากไปจากรหัสของเขา ตรวจสอบงานของเขาและรหัสด้วย!
ในฟังก์ชันการตั้งค่าโดยย่อ เราจำเป็นต้องเปิดใช้งานการเชื่อมต่อ GPRS ของโมดูล SIM800L ของเรา เรารู้ว่าจะสำเร็จหรือไม่หากไฟ LED กะพริบอย่างรวดเร็ว (ตั้งค่าGPRSConnection())
ในฟังก์ชันวนรอบ - ทุก 15 วินาทีจะมีการเรียกฟังก์ชัน sendData() - ซึ่งมีคำขอ
ฉันใช้สตริงการสืบค้นเพื่อส่งข้อมูลไปยังเว็บเซิร์ฟเวอร์ในรูปแบบนี้:
ip address/file.php?key=value&key=value เช่น
หากเกิดข้อผิดพลาด ไฟ LED ที่เกี่ยวข้องจะสว่างขึ้น (ซิม, จีพีเอส)
ขั้นตอนที่ 7: เว็บเซิร์ฟเวอร์
สำหรับการใช้งานของเรา เว็บเซิร์ฟเวอร์น้ำหนักเบาธรรมดาก็เพียงพอแล้ว
มีตัวเลือกบางอย่างที่คุณสามารถเลือกได้:
- คุณสามารถใช้เซิร์ฟเวอร์ระยะไกลของบริษัท ซึ่งคุณอาจต้องจ่ายเงินเป็นประจำ
- คุณสามารถใช้คอมพิวเตอร์ของคุณเอง ฉันแค่แนะนำสำหรับการทดสอบ มันไม่มีประสิทธิภาพจริง ๆ ที่จะใช้งานตลอด 24 ชั่วโมงทุกวันเนื่องจากการสูญเสียพลังงานและปัญหาด้านความปลอดภัย
- คุณสามารถใช้คอมพิวเตอร์ขนาดเล็ก เช่น Raspberry PI น้ำหนักเบา ราคาถูก ไม่กินไฟมาก
ฉันลองตัวเลือกที่ 2 และ 3 พวกเขาทำงานได้ดี เป้าหมายหลักไม่ใช่เซิร์ฟเวอร์ของคำแนะนำนี้ แต่ฉันแนะนำคำแนะนำบางอย่างให้คุณ
หากคุณใช้พีซี คุณอาจใช้ Windows ถ้าฉันเป็นคุณ ฉันจะติดตั้งเซิร์ฟเวอร์ Apache หรือ XAMPP ลงไป
XAMPP มี PHP อยู่แล้ว นอกจากนี้ยังมาพร้อมกับ HTML, Perl และระบบจัดการฐานข้อมูล ด้วย PHP คุณสามารถสร้างเซิร์ฟเวอร์แบบไดนามิกได้ หากคุณต้องการใช้เซิร์ฟเวอร์ภายในเครื่องที่คุณเพิ่งสร้างขึ้นจากที่ใดก็ได้ในโลก คุณต้องกำหนด IP แบบคงที่ให้กับพีซีของคุณและทำการส่งต่อ บทช่วยสอนที่เป็นประโยชน์สำหรับ IP แบบคงที่:
และสิ่งที่ส่งต่อทั้งหมด:
หากคุณมี Raspberry คุณควรใช้มัน คุณสามารถทำความคุ้นเคยกับคำสั่ง Linux และเรียกใช้เซิร์ฟเวอร์ของคุณเองได้ทุกวันตลอด 24 ชั่วโมง
ระบบปฏิบัติการคือ Raspbian Jessie พร้อมการตั้งค่าแบบไม่มีหัว (ไม่มีแป้นพิมพ์ จอภาพ) - ฉันควบคุมด้วยคอมพิวเตอร์ด้วยการเชื่อมต่อ SSH
ฉันใช้ Putty เพื่อเข้าสู่ระบบ Raspberry ของฉัน อย่าลืมเปลี่ยนรหัสผ่านของบัญชีของคุณ เพื่อไม่ให้ผู้อื่นเข้าสู่ระบบ Pi ของคุณได้ ค่าเริ่มต้นคือ: pi, passw: ราสเบอร์รี่
ฉันติดตั้งเว็บเซิร์ฟเวอร์ lighttpd ด้วย sqlite3 กวดวิชาที่ดีพบที่นี่:
ฉันใช้ PHP เป็นหลักในรหัสเซิร์ฟเวอร์ ด้วย PHP คุณสามารถรับข้อมูล อ่าน/เขียนฐานข้อมูล - เข้ารหัสการสืบค้นเป็นรูปแบบ json ฯลฯ …บทช่วยสอนนี้จะช่วยคุณได้มาก วิธีจัดการฐานข้อมูลของคุณด้วย PHP
คุณสามารถดูรหัสของฉันบน GitHub ได้ในโฟลเดอร์ server_files
และแน่นอน คุณต้องเปิดใช้งานการส่งต่อไปยัง Pi ของคุณบนเราเตอร์ หากคุณต้องการเข้าถึงจากระยะไกล
ขั้นตอนที่ 8: การสิ้นสุด/ประสบการณ์
ยังไม่ได้ทำตู้
ประสบการณ์ของฉันคือระบบทำงานได้ไม่เลวเกินไป แต่มีการปรับปรุงความเสถียรรออยู่
หากตัวติดตามใช้ไม่ได้กับรหัสที่ฉันแนบ ไม่ต้องกังวล พยายามตรวจสอบให้แน่ใจว่า SIM800L และ NEO 6M ทำงานตามที่ควรจะเป็น คุณสามารถแก้ไขรหัสของฉันได้อย่างอิสระ หรือมองหารหัสที่ดีกว่า ฉันแค่หวังว่าฉันจะแสดงตัวอย่างให้คุณเห็น คุณจะทำโครงงานนี้ได้อย่างไร
ฉันยอมรับคำแนะนำใด ๆ การแก้ไขจากความคิดเห็น อย่าลังเลที่จะถาม.
แนะนำ:
ตัวติดตาม GPS: 6 ขั้นตอน
GPS Tracker: สวัสดีทุกคนในวิดีโอนี้ เราจะสร้างตัวติดตาม GPS โดยใช้ Esp 8266 (nodemcu) และโมดูล GPS neo 6m มาเริ่มกันเลย
ตัวติดตาม COVID19 บนเดสก์ท็อปพร้อมนาฬิกา! Raspberry Pi Powered Tracker: 6 ขั้นตอน
ตัวติดตาม COVID19 บนเดสก์ท็อปพร้อมนาฬิกา! Raspberry Pi Powered Tracker: เรารู้ว่าเราสามารถตายได้ตลอดเวลา แม้ว่าฉันจะตายได้ในขณะที่เขียนโพสต์นี้ ฉันเอง คุณ เราทุกคนต่างก็เป็นมนุษย์ปุถุชน โลกทั้งใบสั่นสะเทือนเพราะการระบาดของ COVID19 เรารู้วิธีป้องกันสิ่งนี้ แต่เดี๋ยวก่อน! เรารู้วิธีอธิษฐานและทำไมต้องอธิษฐาน เราทำ
นาฬิกา GPS Arduino พร้อมเวลาท้องถิ่นโดยใช้โมดูล NEO-6M: 9 ขั้นตอน
นาฬิกา GPS Arduino พร้อมเวลาท้องถิ่นโดยใช้โมดูล NEO-6M: ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีรับเวลาปัจจุบันจากดาวเทียมโดยใช้ Arduino ดูวิดีโอ
โมดูล GPS Ublox LEA 6h 02 พร้อม Arduino และ Python: 4 ขั้นตอน
โมดูล GPS Ublox LEA 6h 02 พร้อม Arduino และ Python: การเชื่อมต่อโมดูล GPS โดยใช้ Arduino UNO (หรืออุปกรณ์ Arduino อื่น ๆ ) และคำนวณละติจูดและลองจิจูดเพื่อแสดงบนหน้าต่างแอปพลิเคชันที่เขียนด้วย Python
การเข้าถึง GPS Ublox Neo 6M ด้วยตนเองด้วย Raspberry Pi B+: 3 ขั้นตอน
การเข้าถึง GPS Ublox Neo 6M ด้วยตนเองด้วย Raspberry Pi B+: Raspberry Pi เป็นมินิพีซีที่เข้ากันได้ดีมากสำหรับโมดูลต่างๆ ที่ค่อนข้างใช้งานง่าย โดยพื้นฐานแล้วเกือบจะเหมือนกับพีซี แต่สามารถควบคุมได้ด้วย GPIO จาก Raspberry Pi Raspberry Pi ยังรองรับการสื่อสารหลายสาย หนึ่ง