
สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12

การขับรถตอนกลางคืนค่อนข้างสนุก แต่บ่อยครั้งกลับกลายเป็นฝันร้าย ในรูปแบบของสัตว์ข้ามถนน (โดยเฉพาะแมวและสุนัขจรจัดที่รอให้คุณขับรถเข้าใกล้พวกมันจะได้ข้ามไป!!) ดังนั้นฉันจึงคิดว่าจะทำบางอย่างเพื่อเตือนคุณเมื่อคุณเข้าใกล้สถานที่เสี่ยงเหล่านี้ เพื่อให้คุณขับรถได้ระมัดระวังมากขึ้น
ระบบมีสองส่วน: การรวบรวมข้อมูลและการดึงข้อมูล ส่วนแรกใช้ข้อมูลตำแหน่งซึ่งเป็นตำแหน่งที่มีความเป็นไปได้ที่สัตว์จะข้ามผ่านมากขึ้น ต้องเพิ่มข้อมูลนี้ด้วยตนเองและอัปเดตบนแผนที่ ส่วนหลังใช้ตำแหน่งปัจจุบันของเราแล้วเปรียบเทียบกับข้อมูลที่รวบรวมและมีการแจ้งเตือนหรือคำเตือนที่เหมาะสม
เสบียง
ฮาร์ดแวร์ที่ใช้
บอร์ดพัฒนา ESP8266 WiFi
โมดูล GPS Ublox NEO-6M
ไฟ LED
ปุ่มกดชั่วขณะ
ซอฟต์แวร์ที่ใช้
Arduino IDE
ตัวแก้ไข JavaScript ใด ๆ
Firebase (สำหรับการจัดเก็บและดึงข้อมูล)
ขั้นตอนที่ 1: หน่วยฮาร์ดแวร์
ฮาร์ดแวร์จำเป็นต้องทำงานสองวิธี (โหมด): 1) จัดเก็บตำแหน่งไปยังฐานข้อมูล: นี่เป็นส่วนสำคัญในกระบวนการรวบรวมข้อมูล ตำแหน่งที่โมดูล GPS ดึงมาจะถูกส่งไปยังฐานข้อมูล firebase ผ่านบอร์ดพัฒนา ESP8266 WiFi
2) ให้การแจ้งเตือนระหว่างการนำทาง: ในระหว่างการนำทาง ตำแหน่งปัจจุบันจะถูกดึงและถูกส่งไปยังฐานข้อมูล เมื่อมีการอัปเดตตำแหน่งแต่ละครั้ง ระยะห่างระหว่างตำแหน่งปัจจุบันกับตำแหน่งเหล่านั้น (ซึ่งถูกเก็บไว้ระหว่างกระบวนการรวบรวมข้อมูล) จะถูกคำนวณและกู้คืนโดยโมดูล ESP8266 ซึ่งจะเตือนผู้ใช้ว่าผู้ใช้อยู่ใกล้แค่ไหนจากตำแหน่งที่เก็บไว้เหล่านั้น
ฉันเพิ่ม LED สามดวงเพื่อแจ้งการเปลี่ยนแปลงในโหมดต่างๆ รวมถึงการอัพเดตฐานข้อมูลสำเร็จและไฟเตือนเพื่อแจ้งความใกล้ชิดของผู้ใช้ไปยังตำแหน่งที่จัดเก็บไว้
ปุ่มกดใช้เพื่อจัดเก็บตำแหน่งด้วยการคลิกเพียงครั้งเดียว (ในโหมดจัดเก็บ/รวบรวมข้อมูล) และเพื่อเปลี่ยนระหว่างโหมดเหล่านี้
เปิดเครื่อง
เริ่มแรกใช้แบตเตอรี่ Lipo 3.7V 300mAh แต่เกิดปัญหาบางอย่าง ปัญหาหลักคือการรีเซ็ต ESP8266 (อาจเป็นเพราะกระแสไฟพุ่งสูง) แบตเตอรี่ก็ใช้งานได้ไม่นาน ในที่สุดพาวเวอร์แบงค์ก็มาช่วยชีวิตฉัน
ขั้นตอนที่ 2: วงจร

ขั้นตอนที่ 3: เกี่ยวกับ Firebase




Firebase เป็นแพลตฟอร์มการพัฒนาแอปพลิเคชันมือถือและเว็บที่ Google เป็นเจ้าของ มันมีคุณสมบัติมากมาย แต่ที่นี่ฉันใช้เพียงสองคุณสมบัติเท่านั้น คือ Realtime Database และ Cloud Functions
ในการเริ่มต้นใช้งาน Firebase
1. ไปที่หน้า firebase ก่อน
2. ไปที่คอนโซลแล้วคลิกสร้างโครงการใหม่
3. คุณต้องระบุชื่อโครงการพร้อมกับรายละเอียดอื่น ๆ เพื่อสร้างโครงการ
4. หลังจากสร้างโครงการแล้ว ให้คลิกที่ตัวเลือกฐานข้อมูลจากบานหน้าต่างด้านข้างเพื่อสร้างฐานข้อมูลใหม่
5. ทำเช่นเดียวกันสำหรับฟังก์ชั่น
นี่เป็นขั้นตอนทั่วไปในการสร้างโปรเจ็กต์ firebase ได้รับการจัดทำเป็นเอกสารไว้อย่างดี และมีชุดวิดีโอ youtube มากมายสำหรับผู้เริ่มต้น โปรดอ่านเพื่อทำความเข้าใจเพิ่มเติม
ขั้นตอนที่ 4: ฐานข้อมูลเรียลไทม์


หลังจากที่คุณสร้างฐานข้อมูลแล้ว ขั้นตอนต่อไปคือการดูว่าข้อมูลในฐานข้อมูลถูกจัดเก็บและสามารถเข้าถึงได้อย่างไร สำหรับการเขียนหรืออ่านไปยัง/จากฐานข้อมูล คุณต้องกำหนดค่ากฎของฐานข้อมูล เพื่อวัตถุประสงค์ในการพัฒนา เราสามารถใช้กฎเปิดเพื่อให้ทุกคนที่มีการอ้างอิงฐานข้อมูลสามารถอ่าน/เขียนได้ แต่โปรดใช้ความระมัดระวังขณะกำหนดค่ากฎ ฐานข้อมูลจัดเก็บข้อมูลในรูปแบบ JSON และซิงค์กับอุปกรณ์ทั้งหมดที่เชื่อมต่อกับ ฐานข้อมูล คุณสามารถเพิ่มโหนดย่อยโดยใช้เครื่องหมาย '+' แต่โหนดสามารถสร้างโดยทางโปรแกรมได้เช่นกัน ข้อมูลทั้งหมดที่เราอัปโหลดไปยังฐานข้อมูลในโหมด 'จัดเก็บ' (จัดเก็บตำแหน่งที่รวบรวม) จะถูกจัดเก็บที่นี่เป็นโหนดแยกต่างหาก ในขณะที่ข้อมูลในโหมด 'การแจ้งเตือน' (การดึงข้อมูลเมื่อนำทาง) จะได้รับการอัปเดตทุกครั้ง (ตรวจสอบภาพ)
ขั้นตอนที่ 5: การตั้งค่าฟังก์ชัน Firebase



เราต้องการบางสิ่งในการคำนวณความใกล้ชิดของตำแหน่งปัจจุบันไปยังตำแหน่งที่เก็บไว้ และฟังก์ชันฐานข้อมูลเบื้องหลังที่เรียกใช้จะทำหน้าที่ของเรา ฟังก์ชั่นเขียนด้วยจาวาสคริปต์และจำเป็นต้องปรับใช้กับฐานไฟ
คุณต้องติดตั้ง node.js บนคอมพิวเตอร์ของคุณ
1) ตอนนี้ดาวน์โหลดอินเทอร์เฟซบรรทัดคำสั่ง firebase โดยใช้คำสั่ง "npm install -g firebase-tools" บนพรอมต์คำสั่งของคุณ
2) ตอนนี้คุณต้องลงชื่อเข้าใช้ firebase โดยใช้คำสั่ง "firebase login" (คุณต้องให้รหัสผ่านล็อกอิน gmail หากคุณยังไม่ได้เข้าสู่ระบบ)
3) หลังจากนี้ไปที่ไดเร็กทอรีโครงการของคุณและเริ่มต้นฟังก์ชันด้วยคำสั่ง "firebase init" คุณจะต้องเลือกตัวเลือก 'ฟังก์ชัน' เพื่อเริ่มต้นฟังก์ชัน firebase สำหรับโครงการของคุณ
4) ตอนนี้คุณต้องไปที่โฟลเดอร์ 'ฟังก์ชั่น' ในไดเรกทอรีโครงการของคุณและค้นหาไฟล์ 'index.js'
5)แก้ไขไฟล์ด้วยโปรแกรมแก้ไขข้อความและแก้ไขไฟล์/แทนที่ไฟล์ด้วย mappifier_function.txt (นี่จะเป็นฟังก์ชันของเราอย่างมีประสิทธิภาพ)
6) สุดท้ายปรับใช้ฟังก์ชันของคุณโดยใช้ "firebase deploy" ที่พรอมต์คำสั่ง
คุณสามารถตรวจสอบว่าฟังก์ชันถูกปรับใช้ภายใต้เมนูฟังก์ชันบนคอนโซล firebase ของคุณหรือไม่
ขั้นตอนที่ 6: รหัส



สำหรับ ESP8266:
บอร์ดเชื่อมต่อกับ WiFi และ Firebase โดยใช้ข้อมูลรับรองและรอการกดปุ่ม ตามระยะเวลาของการกดปุ่ม โหมดต่างๆ จะเริ่มต้นขึ้น ในโหมดรวบรวมข้อมูล (เรียกโหมดนี้ว่า "ร้านค้า") การกดปุ่มแต่ละครั้งจะนำไปสู่ตำแหน่งปัจจุบันที่ถูกส่งไปยังฐานข้อมูลในขณะที่อยู่ในโหมดดึงข้อมูล ("โหมดการแจ้งเตือน") ตำแหน่งปัจจุบันจะถูกส่งไปยังฐานข้อมูล และระยะทางจะถูกดึงจากฐานข้อมูลโดยอัตโนมัติ ฉันเพิ่มไฟ LED สำหรับคำเตือน (ความใกล้ชิดกับตำแหน่งที่ทำเครื่องหมายไว้) และการแจ้งเตือน (เช่น การแก้ไข GPS, การเชื่อมต่อ WiFi, การเขียนฐานข้อมูลสำเร็จ, การเปลี่ยนโหมด ฯลฯ)
สำหรับฟังก์ชัน Firebase:
ฟังก์ชันนี้จะตรวจสอบการเขียนไปยังโหนด 'ตำแหน่งปัจจุบัน' บนฐานข้อมูล และคำนวณระยะห่างระหว่างตำแหน่งบนฐานข้อมูลและตำแหน่งปัจจุบัน จากนั้นค้นหาระยะทางที่เล็กที่สุดซึ่งจะถูกเขียนไปยังโหนด 'ระยะทาง' บนฐานข้อมูล
อย่าลืมเพิ่มข้อมูลรับรอง wifi และข้อมูลรับรอง firebase auth ก่อนที่จะอัปโหลดโปรแกรมของคุณ (โปรดดูภาพ) นอกจากนี้ หากคุณยังใหม่กับ ESP8266 และต้องการเขียนโค้ดบน Arduino IDE ให้อ้างอิงสิ่งเหล่านี้
ขั้นตอนที่ 7: ขั้นตอนที่เลือกได้ (การสร้างสิ่งที่แนบมา)




ในการทำให้ชิ้นส่วนฮาร์ดแวร์มีขนาดกะทัดรัดจึงสามารถติดตั้งได้ ฉันจึงสร้างกล่องหุ้มขนาดเล็กเพื่อใส่เข้าไปข้างใน มีรูสองสามรูสำหรับติดไฟ LED และเชื่อมต่อสาย USB แต่ฉากสุดท้ายมันเกินคาด!! มันพอดีกับฝ่ามือของฉันอย่างสมบูรณ์แบบ และติดตั้งได้อย่างง่ายดายมากบนที่จับจักรยานและบนพวงมาลัย
ขั้นตอนที่ 8: ในการดำเนินการ…
นี่คือวิดีโอขนาดเล็กที่แสดงทั้งสองโหมด (ร้านค้าและการแจ้งเตือน) พร้อมไฟ LED เตือนและแจ้งเตือน
ขั้นตอนที่ 9: ก้าวต่อไป…

ระบบนี้สามารถใช้เพื่อวัตถุประสงค์ต่างๆ เช่น พิจารณาสถานการณ์ปัจจุบัน หากคุณสามารถหาตำแหน่งของการแพร่กระจายของโรคและจัดเก็บไว้ในฐานข้อมูล ระบบนี้จะแจ้งเตือนเมื่อคุณอยู่ใกล้สถานที่เหล่านั้น แต่ฉันกำลังคิดอย่างจริงจังว่าจะหาข้อมูลการข้ามผ่านของสัตว์จากทั่วโลกเพื่อให้ผู้ขับขี่ระมัดระวังและช่วยชีวิตสัตว์จำนวนมากจากอุบัติเหตุ ฉันได้สร้างหน้าเว็บง่ายๆ (แต่ยังไม่ได้โฮสต์) ซึ่งมีข้อมูลทั้งหมดที่ฉันรวบรวม ข้อมูลเหล่านี้เป็นข้อมูลที่ฉันรวบรวมระหว่างการเดินหรือปั่นจักรยาน (เมื่อใดก็ตามที่ฉันพบแมวหรือสุนัขข้างถนนเนื่องจากมีแนวโน้มที่จะข้าม) แต่เราต้องการข้อมูลมากกว่านี้ในการดำเนินการ
ฉันค่อนข้างใหม่ในการสร้างหน้าเว็บ (ส่วนใหญ่เป็นจาวาสคริปต์) และสิ่งอื่น ๆ และชอบที่จะได้รับคำแนะนำและความเชี่ยวชาญของคุณ:)
แนะนำ:
ระบบการแจ้งเตือน ISS อย่างง่าย: 6 ขั้นตอน (พร้อมรูปภาพ)

ระบบการแจ้งเตือน ISS อย่างง่าย: สถานีอวกาศนานาชาติคืออะไรและทำไมคุณถึงต้องการทำนายว่าอยู่ที่ไหน เพื่อตอบคำถามแรก เราสามารถดูที่เว็บไซต์ของ NASA เพื่อหาคำตอบ ซึ่งในระยะสั้นคือ:สถานีอวกาศนานาชาติเป็นยานอวกาศขนาดใหญ่ มันโคจรรอบ