สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
สวัสดีทุกคน!
ฉันต้องการสร้างโซลูชันที่สมบูรณ์สำหรับอุปกรณ์กันขโมยรถยนต์ GPS ซึ่งจะเป็น:
ถูกที่สุด
ให้สมบูรณ์ที่สุด
อย่างที่มันเพิ่งจะได้ผล ไม่มีอะไรจะทำอย่างอื่นให้มากที่สุด
ดังนั้นฉันจึงลงเอยด้วยการสร้างโซลูชันที่ใช้ Arduino ซึ่งเสียค่าใช้จ่ายทั้งหมด 25$ ไม่มากก็น้อย
อย่างที่คุณเห็นจากวิดีโอ มันใช้งานได้! คุณสตาร์ทรถ คุณจะได้รับการแจ้งเตือนทางโทรศัพท์มือถือว่ารถกำลังเคลื่อนที่ จากนั้นคุณเปิดแอปบนอุปกรณ์เคลื่อนที่และคุณจะเห็นรถเคลื่อนที่แบบเรียลไทม์ (ด้วยการอัปเดตล่าช้า 10 วินาที)
บทช่วยสอนนี้จะแนะนำคุณตลอดขั้นตอนทั้งหมด โดยคำนึงถึงองค์ประกอบหลายอย่างในโซลูชัน:
1) ฮาร์ดแวร์ (ใช้ Arduino)
2) ซอฟต์แวร์ (โปรแกรม Arduino)
3) ซอฟต์แวร์เพิ่มเติม (การรับตำแหน่ง gps ฝั่งเซิร์ฟเวอร์)
4) ซอฟต์แวร์มากยิ่งขึ้น (แอพมือถือ)
เริ่มกันเลย..
ขั้นตอนที่ 1: ฮาร์ดแวร์
รายการช้อปปิ้ง:
1) Arduino Uno R3 หรือโคลน ฉันใช้โคลน "DCcEle DCcduino uno" ซึ่งดูเหมือนจะไม่มีให้ใช้งานอีกต่อไป นี่เทียบเท่า: ใน Aliexpress - 3.75$
2) หน่วย GPS สำหรับ Arduino (โมดูล GPS ใหม่ GY-NEO6MV2 พร้อมการควบคุมการบินควบคุมการบิน EEPROM MWC APM2.5 เสาอากาศขนาดใหญ่ NEO6MV2) ฉันใช้สิ่งนี้: ใน Aliexpress - 6.66$
3) หน่วย GPRS / GSM สำหรับ Arduino (SIM800L V2.0 5V ไร้สาย GSM GPRS โมดูล Quad-Band W / ฝาครอบสายเคเบิลเสาอากาศ) ฉันใช้สิ่งนี้: ใน Aliexpress - 6.71$
4) สายเคเบิลดูปองท์สำรองเช่นนี้: ใน Aliexpress - 0.89$
5) ซิมการ์ดข้อมูล IoT (หรือซิมการ์ดอื่นที่มีการเชื่อมต่อข้อมูล) ฉันใช้สิ่งนี้: จาก Hologram.io ฉันมีนักพัฒนาซอฟต์แวร์ฟรี ชำระค่าจัดส่งเท่านั้น - 7.50$
รวม: 25.51$ แต่ฉันมีสายอยู่แล้วดังนั้นมันจึงน้อยกว่า 25$ !
ภาพสองภาพแสดงส่วนประกอบก่อนประกอบ และผลิตภัณฑ์ขั้นสุดท้าย การเชื่อมต่อที่คุณต้องทำคือ:
Arduino -- SIM800L
10 -- รีเซ็ต
GND - GND (2 ในนั้น)
5v -- 5v
7 -- SIM_TXD
8 -- SIM_RXD
Arduino -- GY-NEO6MV2
GND -- GND
5v -- VCC
3 -- RX
4 -- TX
เชื่อมต่อสายเคเบิลและเสาอากาศทั้งหมด และตรวจสอบให้แน่ใจว่าคุณได้เปิดเครื่อง Arduino จากแหล่งที่สามารถให้ค่าสูงสุด 2A แก่คุณได้ USB ของคอมพิวเตอร์แทบไม่ใช้ได้ (ฉันใช้ MacBook Pro) ที่ชาร์จโทรศัพท์แบบ "สุ่ม" จะไม่เพียงพอ เต้ารับ USB ในรถยนต์ส่วนใหญ่ยังน้อยกว่า 1A หากเป็นกรณีของคุณ คุณต้องใช้แหล่งจ่ายไฟ 5v สำหรับรถยนต์ 12v ที่มีอย่างน้อย 2A ด้วย
ใส่ซิมการ์ด หากคุณกำลังใช้ซิมการ์ด Hologram.io ตรวจสอบให้แน่ใจว่าคุณได้ลงทะเบียนบนแดชบอร์ดและเปิดใช้งานซิมการ์ด (ใช้เวลาสองสามนาที / ชั่วโมง)
ขั้นตอนที่ 2: ซอฟต์แวร์ (โปรแกรม Arduino)
ฉันจะถือว่าคุณคุ้นเคยกับการเขียนโปรแกรม Arduino มิฉะนั้น โปรดเริ่มด้วยคู่มือนี้: บน Instructables
คุณต้องการไลบรารีภายนอกเพียงตัวเดียว ฉันต้องติดตั้งด้วยตนเอง ไปที่นี่: TinyGPS ส่งออกไลบรารี และติดตั้งลงในโฟลเดอร์ Arduino ในเครื่องของคุณ
จากนั้น เราจะ "ขโมย" โค้ดบางส่วนจากตัวอย่างพื้นฐาน และแก้ไขให้เป็นไปตามวัตถุประสงค์ของเรา
จากนั้นเราจะ "ขโมย" จากคู่มือนี้ และแก้ไขโค้ดอีกครั้งตามวัตถุประสงค์ของเรา
ผลลัพธ์คือโปรแกรม.ino ที่แนบมา
มีสองสิ่งที่คุณทำได้และต้องปรับแต่ง:
"วินาที" กำหนด และ "เซิร์ฟเวอร์" กำหนด
ฉันตั้งค่า SECONDS เป็น 10 และนี่คือเหตุผล: โปรแกรมสำหรับนักพัฒนา Hologram.io ให้ข้อมูลฟรี 1mb ต่อเดือนแก่คุณ ซึ่งหมายความว่าเราต้องการย่อขนาดไบต์ที่ส่งให้น้อยที่สุด แต่เราจำเป็นต้องอัปเดตตำแหน่งของเราบ่อยครั้งเช่นกัน เราจะใช้คำสั่งโมเด็ม AT มาตรฐานเพื่อส่งแพ็กเก็ต UDP ไปยังเซิร์ฟเวอร์ของเราที่ได้รับข้อความ โดยมี lat/lon แต่ละตัวใช้ 4 ไบต์ และความเร็ว 1 ไบต์ ดังนั้นการอัปเดต gps ทั้งหมดคือ 20 ไบต์ (ส่วนหัว IP) บวก 8 ไบต์ (ส่วนหัว UDP) บวก 9 ไบต์ (เพย์โหลด) นั่นคือ 37 ไบต์ สมมติว่ารถของฉันมีการใช้งานไม่เกิน 2 ชั่วโมงต่อวัน ฉันสามารถจ่ายค่าอัปเดตทุกๆ 10 วินาทีและกินไฟเพียง 806kb ต่อเดือน (31 วัน) นั่นทำให้ฉัน 218kb สำหรับการขับรถด้วยตัวเองนั่นคือขโมยรถ ซึ่งให้เวลาฉันในการติดตาม gps 16.76 ชั่วโมงนอกเวลาขับรถของฉัน โดยมีการอัปเดตหนึ่งครั้งทุกๆ 10 วินาที
ตอนนี้แพ็กเก็ต UDP เหล่านี้ต้องไปที่ไหนสักแห่ง ฉันใช้เซิร์ฟเวอร์ Ubuntu ที่โฮสต์บนคลาวด์ CloudAtCost ซึ่งฉันซื้อในราคา 8$ พร้อมส่วนลด 80% และให้บริการเพื่อวัตถุประสงค์อื่น ดังนั้นจึงไม่ต้องนำไปคำนวณต้นทุน หากคุณไม่ต้องการจ่ายค่าเซิร์ฟเวอร์ คุณสามารถรับอินสแตนซ์ Amazon AWS ฟรีเป็นเวลา 12 เดือน และติดตั้ง Ubuntu ได้ เมื่อคุณตั้งค่าเซิร์ฟเวอร์ของคุณแล้ว (ดูขั้นตอนถัดไป) ให้รับที่อยู่ IP แบบคงที่ และวางไว้ถัดจากการกำหนดเซิร์ฟเวอร์
ขั้นตอนที่ 3: ซอฟต์แวร์เพิ่มเติม (การรับตำแหน่ง Gps ฝั่งเซิร์ฟเวอร์)
ทั้ง CloudAtCost และ Amazon มาพร้อมกับอิมเมจ Ubuntu ที่กำหนดค่าไว้ล่วงหน้า (CloudAtCost อยู่ที่ Ubuntu 14.04) ฉันจะไม่ทำตามขั้นตอนในการติดตั้ง Ubuntu อย่างที่คุณไม่จำเป็นต้องทำ หากคุณใช้ CloudAtCost คุณอาจต้องการอัปเกรดเป็น Ubuntu 16.04 ซึ่งเสร็จสิ้นด้วย
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
จากนั้นคุณต้องติดตั้ง LAMP (ดูคู่มือนี้: ที่นี่) แม้ว่าเราจะไม่ใช้ PHP ก็ตาม
ติดตั้ง Python ด้วย
sudo apt-get ติดตั้ง python-minimal pip
จากนั้นเพิ่มสองสามโมดูล:
pip install --user urllib3 ร้องขอ
เราจำเป็นต้องตั้งค่า /var/www ที่คุณเขียนได้ ให้ทำดังนี้
sudo adduser YOUR_USER www-datasudo chown -R www-data:www-data /var/www
sudo chmod -R g+rwX /var/www
ตอนนี้ เราต้องการ "เซิร์ฟเวอร์" เพื่อ i) รับแพ็กเก็ต UDP ii) สร้างแทร็ก iii) ส่งการแจ้งเตือนไปยังโทรศัพท์มือถือของเรา และ "เซิร์ฟเวอร์" เพื่อให้บริการแทร็ก gps ที่สร้างขึ้น (นี่คือ apache)
สำหรับเซิร์ฟเวอร์แรก ให้คัดลอกรหัสหลามที่แนบมา คุณต้องกำหนดค่าสิ่งต่อไปนี้:
iftttuser="ผู้ใช้ IFTTT ของคุณ"
iftttpass="รหัสผ่าน IFTTT ของคุณ"
iftttappletid="แอปเพล็ตการแจ้งเตือน IFTTT ของคุณ"
iftttkey="คีย์ IFTTT ของคุณ"
iftttevent="กิจกรรม IFTTT ของคุณ"
อย่างที่คุณอาจเดาได้ เรากำลังใช้ IFTTT เพื่อส่งการแจ้งเตือนแบบเรียลไทม์ไปยังโทรศัพท์มือถือของเรา ทำตามคำแนะนำนี้: ที่นี่ แต่แทนที่จะเลือก "ส่ง SMS ถึงฉัน" ให้เลือก "ส่งการแจ้งเตือนแอป" รับรหัสแอปเพล็ตของคุณ (เลื่อนไปที่ด้านล่างของการกำหนดค่าแอปเพล็ตเพื่อดู) และใช้สิ่งนั้นด้านบน ใช้คีย์ที่สร้างขึ้นดังนั้นในการตั้งค่าด้านบนด้วย งาน IFTTT คือชื่อที่คุณตั้งให้กับแอปเพล็ตของคุณ ฉันตั้งชื่อมันว่า "carmoving"
ขณะนี้ AFAIK ไม่มีแพลตฟอร์มการแจ้งเตือนแบบเรียลไทม์ฟรี หากคุณรู้อย่างใดอย่างหนึ่งบอกฉัน IFTTT มีความล่าช้า ความล่าช้านี้สามารถย่อให้เหลือไม่กี่วินาทีหากคุณใช้ทริกเกอร์อีเมล น่าเสียดายที่สิ่งนี้ไม่น่าเชื่อถือ เว็บฮุคที่เพิ่งสร้างขึ้นมีความล่าช้า 15 นาที แต่เราไม่อยากรอ 15 นาทีถึงรู้ว่ารถของเราถูกขโมยใช่ไหม? นั่นคือรหัสผ่านที่ขอให้คุณตั้งค่าทั้งหมดข้างต้น หากคุณเลื่อนโค้ด python คุณจะเห็นว่ามีสองสามบรรทัด คือ 45-53 เพื่อให้ฟังก์ชัน "ตรวจสอบทันที" ของ IFTTT เป็นไปโดยอัตโนมัติ ซึ่งบังคับให้ตรวจสอบทริกเกอร์อย่างกะทันหัน และทริกเกอร์การแจ้งเตือนภายในเวลาไม่ถึง 1 วินาที! ด้วยความยินดี:)
เมื่อคุณตั้งค่ารหัสหลามของคุณไว้ที่ใดที่หนึ่งแล้ว ให้เรียกใช้มัน หากคุณเป็นผู้ใช้มืออาชีพ ให้เริ่มต้นที่การบูตเซิร์ฟเวอร์ อ้างถึงคู่มือออนไลน์ฟรีมากมายเกี่ยวกับวิธีการทำเช่นนั้น ตัวอย่างเช่น คู่มือนี้
ขั้นตอนที่ 4: ซอฟต์แวร์มากยิ่งขึ้น (แอพมือถือ)
เราต้องการวิธีที่รวดเร็วและง่ายดายในการแสดงภาพแทร็ก gps ที่เซิร์ฟเวอร์ในขั้นตอนก่อนหน้านี้กำลังอัปเดตอยู่เสมอ อาจต้องใช้งานได้กับสมาร์ทโฟนทุกประเภท
ลองใช้ชุดแอปมือถือข้ามแพลตฟอร์ม เช่น Ionic/Cordova ฉันใช้ Ionic v1 อย่าสับสนกับ Ionic Native หรือ Ionic v2 นั่นเป็นคนละเรื่องกัน
ทำตามขั้นตอนง่ายๆ เหล่านี้เพื่อเริ่มโครงการแรกของคุณใน Ionic: ที่นี่
จากนั้น คุณต้องเริ่มโครงการใหม่โดยใช้ google maps sdk ดังนี้:
ionic start myapp maps
ไปที่โฟลเดอร์ "resources" และคัดลอกรูปภาพรถขนาดใหญ่ที่นี่เป็น "icon.png" อัปโหลดแทนไอคอนขนาดเล็กเป็น "car2.png" และ "start.png" ที่ใดที่หนึ่งบนเซิร์ฟเวอร์ของคุณ เช่น https://yourserver/car2-p.webp
ใช้ไฟล์ index.html ที่แนบมา (เปลี่ยนชื่อ index.html.txt เป็น index.html), directives.js และไฟล์ controllers.js และใส่ลงใน www (index.html), www/js (js ทั้งหมด)
เพิ่มแพลตฟอร์มของคุณดังนี้:
อิออนเพิ่ม plaftorm android
สร้างแบบนี้:
ionic build android
จากนั้นอิออนจะบอกคุณว่ามันสร้าง.apk ของคุณไว้ที่ใด ซึ่งคุณสามารถติดตั้งบนโทรศัพท์มือถือของคุณได้
ในการสร้างสำหรับ iOS คุณจะต้องมี Mac และ Xcode ไอออนิกสามารถบันทึกโปรเจ็กต์ Xcode ซึ่งคุณสามารถเปิดใน Xcode และสร้างสำหรับโทรศัพท์ของคุณได้ หากคุณไม่มีบัญชีนักพัฒนา iOS คุณจะต้องแนบโทรศัพท์กับ Xcode และตั้งค่าโทรศัพท์สำหรับการพัฒนาเพื่อให้สามารถติดตั้งแอปได้ที่นั่น นี่อยู่นอกขอบเขตของคำแนะนำนี้
ในไฟล์ js ต่างๆ คุณจะต้องค้นหาบรรทัดที่เกี่ยวข้องกับ "car2.png" และ "start.png" และแก้ไขด้วยเส้นทางของรูปภาพของคุณ เช่นเดียวกับ "plan.json"
แค่นั้นแหละ!!
ขั้นตอนที่ 5: งานในอนาคต
1) ฉันใส่ทุกอย่างลงในกล่องกระดาษแข็งซึ่งฉันสามารถซ่อนได้ทุกที่ใกล้กับเต้ารับ usb สิ่งที่ดีที่สุดที่ควรทำคือการติดตั้งเคสที่ดีกว่าไว้ใต้ฝากระโปรงรถด้วยตัวแปลง 12v->5v
2) ด้วยเซ็นเซอร์บลูทูธ คุณสามารถ "สัมผัส" ได้จริงหากคุณอยู่ในรถ ดังนั้นระบบ gps จะไม่เปิดขึ้น
3) เพียงชำระค่าแผนข้อมูลซิมและตั้งค่า SECONDS เป็น 1 เพื่อสนุกกับการติดตามแบบเรียลไทม์:)
หวังว่าคุณจะสนุกกับการสั่งสอนครั้งแรกของฉัน!