เครื่องติดตาม GPS แบบทำเองโดยใช้ GY-NEO6M นั้นเป็นเรื่องง่าย คำอธิบายโดยย่อของหน้าต่างการตั้งค่า Arduino GPS tracker Hattire Arduino
หลังจากการทดลองกับ Arduino หลายครั้ง ฉันตัดสินใจสร้างเครื่องติดตาม GPS ที่เรียบง่ายและไม่แพงมากพร้อมพิกัดที่ส่งผ่าน GPRS ไปยังเซิร์ฟเวอร์
Arduino Mega 2560 มือสอง ( อาร์ดูโน่ อูโน่), SIM900 - โมดูล GSM/GPRS (สำหรับส่งข้อมูลไปยังเซิร์ฟเวอร์), ตัวรับสัญญาณ GPS SKM53 GPS
ทุกอย่างถูกซื้อบน ebay.com รวมประมาณ 1,500 รูเบิล (ประมาณ 500 รูเบิลสำหรับ Arduino น้อยกว่าเล็กน้อยสำหรับโมดูล GSM และอีกเล็กน้อยสำหรับ GPS)
เครื่องรับ GPS
ก่อนอื่นคุณต้องเข้าใจวิธีการทำงานกับ GPS ก่อน โมดูลที่เลือกเป็นหนึ่งในโมดูลที่ถูกที่สุดและง่ายที่สุด อย่างไรก็ตามผู้ผลิตสัญญาว่าจะใช้แบตเตอรี่เพื่อประหยัดข้อมูลดาวเทียม ตามเอกสารข้อมูล การสตาร์ทขณะเย็นควรใช้เวลา 36 วินาที อย่างไรก็ตาม ในสภาพของฉัน (ชั้น 10 จากขอบหน้าต่าง ไม่มีอาคารอยู่ใกล้ๆ) ใช้เวลามากถึง 20 นาที อย่างไรก็ตาม การเริ่มต้นครั้งถัดไปเป็นเวลา 2 นาทีแล้ว
พารามิเตอร์ที่สำคัญของอุปกรณ์ที่เชื่อมต่อกับ Arduino คือการใช้พลังงาน หากคุณโอเวอร์โหลดตัวแปลง Arduino มากเกินไป มันอาจจะไหม้ได้ สำหรับเครื่องรับที่ใช้ การสิ้นเปลืองพลังงานสูงสุดคือ 45mA @ 3.3v เหตุใดข้อกำหนดควรระบุความแรงของกระแสที่แรงดันไฟฟ้าอื่นนอกเหนือจากที่ต้องการ (5V) จึงเป็นปริศนาสำหรับฉัน อย่างไรก็ตาม ตัวแปลง Arduino จะทนกระแสไฟได้ 45 mA
การเชื่อมต่อ
GPS ไม่ได้ถูกควบคุมแม้ว่าจะมีพิน RX ก็ตาม ไม่ทราบจุดประสงค์อะไร สิ่งสำคัญที่คุณสามารถทำได้กับเครื่องรับนี้คือการอ่านข้อมูลผ่านโปรโตคอล NMEA จากพิน TX ระดับ - 5V เฉพาะสำหรับ Arduino ความเร็ว - 9600 บอด ฉันเชื่อมต่อ VIN กับ VCC ของ arduino, GND ถึง GND, TX ถึง RX ของอนุกรมที่เกี่ยวข้อง ฉันอ่านข้อมูลด้วยตนเองก่อน จากนั้นจึงใช้ไลบรารี TinyGPS น่าแปลกที่ทุกอย่างสามารถอ่านได้ หลังจากเปลี่ยนมาใช้ Uno ฉันต้องใช้ SoftwareSerial จากนั้นปัญหาก็เริ่มขึ้น - อักขระข้อความบางตัวหายไป สิ่งนี้ไม่สำคัญมากนัก เนื่องจาก TinyGPS ตัดข้อความที่ไม่ถูกต้องออก แต่ก็ไม่เป็นที่พอใจนัก: คุณสามารถลืมความถี่ 1Hz ได้เลยหมายเหตุโดยย่อเกี่ยวกับ SoftwareSerial: ไม่มีพอร์ตฮาร์ดแวร์บน Uno (นอกเหนือจากพอร์ตที่เชื่อมต่อกับ USB Serial) ดังนั้นคุณต้องใช้ซอฟต์แวร์ ดังนั้นจึงสามารถรับข้อมูลบนพินที่บอร์ดรองรับการขัดจังหวะเท่านั้น ในกรณีของ Uno จะเป็น 2 และ 3 นอกจากนี้ พอร์ตดังกล่าวเพียงพอร์ตเดียวเท่านั้นที่สามารถรับข้อมูลได้ในแต่ละครั้ง
นี่คือลักษณะของ "ม้านั่งทดสอบ"
เครื่องรับ/ส่งสัญญาณ GSM
![](https://i0.wp.com/habrastorage.org/getpro/habr/post_images/162/da3/ab5/162da3ab5e84b80e39db1b97b0b839cd.jpg)
ตอนนี้มาถึงส่วนที่น่าสนใจมากขึ้น โมดูล GSM - SIM900 รองรับระบบ GSM และ GPRS ไม่รองรับ EDGE และโดยเฉพาะ 3G สำหรับการส่งข้อมูลพิกัดนี่น่าจะดี - จะไม่มีความล่าช้าหรือปัญหาในการสลับระหว่างโหมดต่างๆ แถมตอนนี้ GPRS ก็สามารถใช้งานได้เกือบทุกที่แล้ว อย่างไรก็ตาม สำหรับการใช้งานที่ซับซ้อนกว่านี้อาจไม่เพียงพอ
การเชื่อมต่อ
โมดูลยังถูกควบคุมผ่านพอร์ตอนุกรมด้วยระดับเดียวกัน - 5V และที่นี่เราต้องการทั้ง RX และ TX โมดูลเป็นแบบชีลด์นั่นคือติดตั้งบน Arduino นอกจากนี้ยังเข้ากันได้กับทั้ง mega และ uno ความเร็วเริ่มต้นคือ 115200เราประกอบมันบน Mega และนี่คือความประหลาดใจอันไม่พึงประสงค์ประการแรกรอเราอยู่: พิน TX ของโมดูลตกลงบนพินที่ 7 ของ Mega ไม่มีการขัดจังหวะบนพินที่ 7 ของ mega ซึ่งหมายความว่าคุณจะต้องเชื่อมต่อพินที่ 7 เช่นกับพินที่ 6 ซึ่งอาจเกิดการหยุดชะงักได้ ดังนั้นเราจะเสียพิน Arduino ไปหนึ่งอัน สำหรับเมก้ามันไม่น่ากลัวมาก - ท้ายที่สุดก็มีหมุดเพียงพอ แต่สำหรับ Uno สิ่งนี้ซับซ้อนกว่าอยู่แล้ว (ฉันเตือนคุณว่ามีเพียง 2 พินที่รองรับการขัดจังหวะ - 2 และ 3) เพื่อเป็นแนวทางแก้ไขปัญหานี้ เราไม่แนะนำให้ติดตั้งโมดูลบน Arduino แต่ให้เชื่อมต่อด้วยสายไฟ จากนั้นคุณสามารถใช้ Serial1
หลังจากเชื่อมต่อแล้ว เราพยายาม "พูดคุย" กับโมดูล (อย่าลืมเปิดใช้งาน) เราเลือกความเร็วพอร์ต - 115200 และจะดีถ้าพอร์ตอนุกรมในตัวทั้งหมด (4 บนเมกะ, 1 บน uno) และพอร์ตซอฟต์แวร์ทั้งหมดทำงานด้วยความเร็วเท่ากัน ด้วยวิธีนี้คุณสามารถถ่ายโอนข้อมูลที่มีเสถียรภาพมากขึ้น ฉันไม่รู้ว่าทำไมถึงแม้ฉันจะเดาได้
ดังนั้นเราจึงเขียนโค้ดดั้งเดิมสำหรับการส่งต่อข้อมูลระหว่างพอร์ตอนุกรม ส่ง Atz และรับความเงียบในการตอบสนอง เกิดอะไรขึ้น? อ่า คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ATZ เราโอเค ไชโย โมดูลสามารถได้ยินเรา คุณควรโทรหาเราด้วยความอยากรู้หรือไม่? ATD +7499... โทรศัพท์บ้านดังขึ้น ควันมาจาก Arduino แล็ปท็อปปิดเครื่อง ตัวแปลง Arduino ถูกไฟไหม้ เป็นความคิดที่ดีที่จะป้อนไฟ 19 โวลต์ถึงแม้ว่าจะมีเขียนไว้ว่าสามารถทำงานได้ตั้งแต่ 6 ถึง 20V แต่แนะนำให้ใช้ 7-12V เอกสารข้อมูลสำหรับโมดูล GSM ไม่ได้กล่าวถึงการใช้พลังงานภายใต้โหลด เมก้าไปที่โกดังอะไหล่ ฉันเปิดแล็ปท็อปซึ่งได้รับ +19V ผ่านสาย +5V จาก USB ด้วยความที่หายใจไม่ออก มันใช้งานได้และแม้แต่ USB ก็ไม่หมด ขอบคุณ Lenovo ที่ปกป้องเรา
หลังจากที่คอนเวอร์เตอร์หมด ฉันมองหาปริมาณการใช้กระแสไฟ ดังนั้นจุดสูงสุด - 2A โดยทั่วไป - 0.5A เห็นได้ชัดว่าเกินความสามารถของตัวแปลง Arduino ต้องใช้อาหารแยกต่างหาก
การเขียนโปรแกรม
โมดูลนี้มีความสามารถในการถ่ายโอนข้อมูลที่กว้างขวาง เริ่มจากการโทรด้วยเสียงและ SMS และปิดท้ายด้วย GPRS นั่นเอง ยิ่งกว่านั้นสำหรับอย่างหลังก็สามารถทำได้ คำขอ HTTPโดยใช้คำสั่ง AT คุณจะต้องส่งหลายรายการ แต่ก็คุ้มค่า: คุณไม่ต้องการสร้างคำขอด้วยตนเองจริงๆ มีความแตกต่างสองสามประการในการเปิดช่องทางการรับส่งข้อมูลผ่าน GPRS - จำ AT+CGDCONT=1, “IP”, “apn” แบบคลาสสิกได้ไหม ดังนั้นจึงจำเป็นต้องมีสิ่งเดียวกันที่นี่ แต่มีไหวพริบมากกว่านี้เล็กน้อยหากต้องการรับเพจจาก URL ที่ระบุ คุณต้องส่งคำสั่งต่อไปนี้:
AT+SAPBR=1,1 //ผู้ให้บริการเปิด (ผู้ให้บริการ) AT+SAPBR=3,1,"CONTYPE", "GPRS" // ประเภทการเชื่อมต่อ - GPRS AT + SAPBR = 3,1, "APN", "อินเทอร์เน็ต" //APN สำหรับ Megafon - อินเทอร์เน็ต AT+HTTPINIT // เริ่มต้น HTTP AT+HTTPPARA="CID",1 // ID ผู้ให้บริการที่จะใช้ AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" // URL จริง หลังจาก sprintf พร้อมพิกัด AT+HTTPACTION=0 // ขอข้อมูลโดยใช้วิธี GET //รอการตอบสนอง AT+HTTPTERM //หยุด HTTP
ส่งผลให้หากมีการเชื่อมต่อเราจะได้รับการตอบสนองจากเซิร์ฟเวอร์ ที่จริงแล้วเรารู้วิธีส่งข้อมูลพิกัดแล้วหากเซิร์ฟเวอร์ได้รับผ่าน GET
โภชนาการ
เนื่องจากฉันพบว่าการเปิดโมดูล GSM จากตัวแปลง Arduino เป็นความคิดที่ไม่ดี จึงตัดสินใจซื้อตัวแปลง 12v->5v, 3A บน ebay เดียวกัน อย่างไรก็ตามโมดูลไม่ชอบแหล่งจ่ายไฟ 5V ไปแฮ็กกันเถอะ: เชื่อมต่อ 5V เข้ากับพินที่ 5V มาจาก Arduino จากนั้นตัวแปลงในตัวของโมดูล (มีประสิทธิภาพมากกว่าตัวแปลง Arduino, MIC 29302WU) จะสร้างจาก 5V ตามที่โมดูลต้องการเซิร์ฟเวอร์
เซิร์ฟเวอร์เขียนอันดั้งเดิม - จัดเก็บพิกัดและวาดบน Yandex.maps ในอนาคต เป็นไปได้ที่จะเพิ่มคุณสมบัติต่างๆ รวมถึงการรองรับผู้ใช้จำนวนมาก สถานะ "ติดอาวุธ/ไม่มีอาวุธ" สถานะของระบบยานพาหนะ (ระบบจุดระเบิด ไฟหน้า ฯลฯ) และอาจถึงขั้นควบคุมระบบของยานพาหนะด้วยซ้ำ แน่นอนว่าด้วยการสนับสนุนที่เหมาะสมสำหรับตัวติดตามซึ่งจะกลายเป็นระบบเตือนภัยเต็มรูปแบบได้อย่างราบรื่นการทดสอบภาคสนาม
นี่คือลักษณะของอุปกรณ์ที่ประกอบโดยไม่มีเคส:หลังจากติดตั้งตัวแปลงไฟและวางไว้ในเคสจากโมเด็ม DSL ที่ใช้งานไม่ได้ ระบบจะมีลักษณะดังนี้:
ฉันบัดกรีสายไฟและลบหน้าสัมผัสหลายอันออกจากบล็อก Arduino พวกเขามีลักษณะเช่นนี้:
ฉันเชื่อมต่อไฟ 12V ในรถ ขับรถไปรอบๆ มอสโกว และได้เส้นทาง:
จุดติดตามค่อนข้างไกลจากกัน เหตุผลก็คือการส่งข้อมูลผ่าน GPRS ใช้เวลานานพอสมควรและระหว่างนี้พิกัดจะไม่ถูกอ่าน นี่เป็นข้อผิดพลาดในการเขียนโปรแกรมอย่างชัดเจน ประการแรกจะได้รับการปฏิบัติโดยการส่งแพ็กเก็ตของพิกัดทันทีเมื่อเวลาผ่านไป และประการที่สองโดยการทำงานแบบอะซิงโครนัสกับโมดูล GPRS
เวลาในการค้นหาดาวเทียมในที่นั่งผู้โดยสารของรถยนต์คือสองสามนาที
ข้อสรุป
การสร้างตัวติดตาม GPS บน Arduino ด้วยมือของคุณเองนั้นเป็นไปได้แม้ว่าจะไม่ใช่งานเล็กน้อยก็ตาม คำถามหลักตอนนี้คือจะซ่อนอุปกรณ์ในรถได้อย่างไรเพื่อไม่ให้สัมผัสกับปัจจัยที่เป็นอันตราย (น้ำ, อุณหภูมิ) ไม่ถูกปกคลุมด้วยโลหะ (มีเกราะป้องกัน GPS และ GPRS) และไม่ได้สังเกตเห็นได้ชัดเจนเป็นพิเศษ สำหรับตอนนี้มันอยู่ในห้องโดยสารและเชื่อมต่อกับช่องเสียบที่จุดบุหรี่เท่านั้นเรายังต้องแก้ไขโค้ดเพื่อให้แทร็กราบรื่นขึ้น แม้ว่าตัวติดตามจะทำงานหลักอยู่แล้วก็ตาม
อุปกรณ์ที่ใช้แล้ว
- อาร์ดูโน่ เมก้า 2560
- อาร์ดูโน่ อูโน่
- จีพีเอส สกายแล็บ SKM53
- ชิลด์ GSM/GPRS ที่ใช้ SIM900
- ตัวแปลงไฟ DC-DC 12v->5v 3A
เครื่องส่ง GPS ส่วนบุคคล
ปัจจุบัน ความก้าวหน้ากำลังดำเนินไปอย่างรวดเร็วจนอุปกรณ์ที่ก่อนหน้านี้มีขนาดใหญ่ มีราคาแพง และมีความเชี่ยวชาญสูงสูญเสียขนาด น้ำหนัก และราคาไปอย่างรวดเร็ว แต่กลับได้รับฟังก์ชันใหม่ๆ มากมาย
นี่คือวิธีที่อุปกรณ์ที่ใช้เทคโนโลยี GPS เข้าถึงอุปกรณ์พกพาและตั้งถิ่นฐานอย่างมั่นคงที่นั่น ทำให้ผู้คนมีโอกาสใหม่ ๆ คุ้มค่าอย่างยิ่งที่จะเน้นไปที่เครื่องส่งสัญญาณ GPS แต่ละตัว
โดยพื้นฐานแล้ว สิ่งเหล่านี้คือเครื่องติดตาม GPS แบบเดียวกัน ซึ่งออกแบบมาเพื่อการใช้งานที่ไม่ได้อยู่บนยานพาหนะเท่านั้น แต่โดยบุคคลในชีวิตประจำวัน
ขึ้นอยู่กับรุ่นหลายแบบ อุปกรณ์ต่างๆ. ในรูปแบบที่ง่ายที่สุด มันเป็นเพียงกล่องเล็กๆ ที่ไม่มีจอแสดงผล ซึ่ง ช่วยให้คุณควบคุมการเคลื่อนไหวของเด็ก สัตว์ หรือวัตถุอื่น ๆ ได้ซึ่งได้รับการแก้ไขแล้ว
ข้างในนั้นตั้งอยู่ โมดูลจีพีเอสซึ่งกำหนดพิกัดบนพื้น โมดูล GSM/GPRS ที่ส่งข้อมูลและรับคำสั่งควบคุม รวมถึงแหล่งพลังงานที่ช่วยให้การทำงานอัตโนมัติเป็นเวลานาน
การทำงานของเครื่องส่งสัญญาณ GPS
เมื่อฟังก์ชันเพิ่มขึ้น ความสามารถต่อไปนี้ของอุปกรณ์จะปรากฏขึ้น:
![](https://i1.wp.com/steptosleep.ru/wp-content/uploads/2018/06/32087.jpg)
ตัวเลือกสำหรับเครื่องส่งสัญญาณ GPS
ขึ้นอยู่กับการกำหนดค่า ตัวเรือนเครื่องส่งสัญญาณอาจแตกต่างกันอย่างมาก รุ่นต่างๆมีการประหารชีวิตในรูปแบบ โทรศัพท์มือถือเครื่องนำทางแบบคลาสสิก หรือแม้แต่นาฬิกาข้อมือ
การออกแบบสีสันสดใสของเวอร์ชันพิเศษและการเพิ่มเติมที่เป็นประโยชน์ช่วยให้เด็กๆ ปฏิบัติต่ออุปกรณ์เหล่านี้ได้ไม่ใช่ "สายลับของผู้ปกครอง" แต่เป็นอุปกรณ์ที่ทันสมัยและใช้งานได้จริง
ข้อดีคือควรกล่าวถึงความจริงที่ว่าอุปกรณ์หลายเวอร์ชันสามารถทำได้โดยไม่ต้องมี ค่าสมัครสำหรับบริการของผู้ให้บริการเฉพาะทางและข้อมูลที่จำเป็นทั้งหมดจะถูกส่งไปยังลูกค้าโดยตรงผ่านทางอินเทอร์เน็ตหรือข้อความ SMS ซึ่งช่วยให้ประหยัดอย่างมากในการบำรุงรักษาอุปกรณ์ดังกล่าว
บทความเกี่ยวกับเครื่องติดตาม GPS
ในบทความนี้ ฉันจะแสดงวิธีใช้โมดูล gsm กับ arduino โดยใช้ sim800L เป็นตัวอย่าง คำแนะนำเดียวกันนี้ค่อนข้างเหมาะสมสำหรับการใช้โมดูล GSM อื่น ๆ เช่น sim900 เป็นต้น เนื่องจากโมดูลทั้งหมดทำงานในลักษณะเดียวกันโดยประมาณ - นี่คือการแลกเปลี่ยนคำสั่ง AT ผ่านพอร์ต
ฉันจะแสดงการใช้งานโมดูลกับ Arduino โดยใช้ตัวอย่างการถ่ายทอด SMS ซึ่งสามารถใช้เพื่อควบคุมอุปกรณ์จากระยะไกลผ่านคำสั่ง SMS สามารถใช้ร่วมกับสัญญาณเตือนรถ ฯลฯ
โมดูลเชื่อมต่อกับ Arduino ผ่านทางอินเทอร์เฟซ UART ของพอร์ตอนุกรมซอฟต์แวร์ที่ทำงานบนพินดิจิทัล 2 และ 3 ของ Arduino nano
การทำงานกับ Arduino กับโมดูล GSM
ในการจ่ายไฟให้โมดูลจำเป็นต้องใช้แรงดันไฟฟ้าในช่วงตั้งแต่ 3.6V ถึง 4.2V ซึ่งหมายความว่าคุณจะต้องใช้ตัวปรับแรงดันไฟฟ้าเพิ่มเติมเนื่องจาก Arduino มีการติดตั้งตัวปรับแรงดันไฟฟ้า 3.3 โวลต์ซึ่งไม่เหมาะสำหรับการจ่ายไฟให้กับโมดูล เหตุผลที่สองในการติดตั้งโคลงเพิ่มเติมคือโมดูล GSM มีภาระงานหนักเนื่องจากมีเครื่องส่งสัญญาณที่อ่อนแอที่ให้ การเชื่อมต่อที่มั่นคงด้วยสถานีเซลลูล่าร์ พลังงานสำหรับ Arduino nano จ่ายให้กับพิน VIN ซึ่งเป็นตัวปรับเสถียรที่ติดตั้งใน Arduino เพื่อให้แน่ใจว่าโมดูลจะทำงานในช่วงแรงดันไฟฟ้าที่กว้าง (6-10V) โมดูลรีเลย์เชื่อมต่อตามข้อความโปรแกรมที่กำหนดเพื่อปักหมุด 10 ของ Arduino nano และสามารถเปลี่ยนเป็นโมดูลอื่นที่ทำงานเป็นเอาต์พุตดิจิทัลได้อย่างง่ายดาย
มันทำงานดังนี้: ติดตั้งซิมการ์ดในโมดูล GSM เปิดเครื่องและส่ง SMS ไปที่หมายเลขพร้อมข้อความ "1" ซิมการ์ดเพื่อเปิดรีเลย์ของเราหากต้องการปิดเราจะส่ง SMS พร้อมข้อความ "0"
#รวม
ซอฟต์แวร์อนุกรม gprsSerial(2, 3); // ตั้งค่าพิน 2 และ 3 สำหรับพอร์ตซอฟต์แวร์
int LedPin = 10; // สำหรับรีเลย์
การตั้งค่าเป็นโมฆะ ()
{
gprsSerial.begin(4800);
pinMode(LedPin, เอาท์พุต);
//ตั้งค่าการรับข้อความ
gprsSerial.print("AT+CMGF=1\r");
gprsSerial.print("AT+IFC=1, 1\r");
ล่าช้า (500);
gprsSerial.print("AT+CPBS=\"SM\"\r");
ล่าช้า (500); // หน่วงเวลาสำหรับการประมวลผลคำสั่ง
gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
ล่าช้า(700);
}
สตริง currStr = "";
// หากบรรทัดนี้เป็นข้อความ ตัวแปรก็จะรับค่า True
isStringMessage บูลีน = false;
เป็นโมฆะวน()
{
ถ้า (!gprsSerial.available())
กลับ;
ถ่าน currSymb = gprsSerial.read();
ถ้า ('\r' == currSymb) (
ถ้า (isStringMessage) (
// หากบรรทัดปัจจุบันเป็นข้อความแสดงว่า...
ถ้า (!currStr.compareTo("1")) (
digitalWrite (LedPin, สูง);
) อื่น ๆ ถ้า (!currStr.compareTo("0")) (
digitalWrite (LedPin, ต่ำ);
}
isStringMessage = เท็จ;
) อื่น (
ถ้า (currStr.startsWith("+CMT")) (
// หากบรรทัดปัจจุบันขึ้นต้นด้วย “+CMT” แสดงว่าข้อความถัดไป
isStringMessage = จริง;
}
}
currStr = "";
) อย่างอื่นถ้า ('\n' != currSymb) (
currStr += สตริง (currSymb);
}
}
เวอร์ชันวิดีโอของบทความ:
แท็ก: #Arduino, #SIM800L
เครื่องหมายของคุณ:
ผลิตภัณฑ์ที่ใช้ในบทความนี้:
← เครื่องบันทึก GPS บน arduino | การควบคุมรีเลย์ผ่านพอร์ต COM →
เครื่องสแกน GSM บน RTL-SDR
| บ้าน| อังกฤษ | การพัฒนา | คำถามที่พบบ่อย |
ลักษณะสำคัญของสแกนเนอร์
เครื่องสแกน GSM จะสแกนช่องสัญญาณดาวน์ลิงก์ของ GSM และแสดงข้อมูลเกี่ยวกับความแรงของสัญญาณและความเป็นเจ้าของช่องของหนึ่งในสามผู้ให้บริการหลัก การสื่อสารเคลื่อนที่เอ็มทีเอ, Beeline และ Megafon เครื่องสแกนช่วยให้คุณบันทึกรายการตัวระบุตามผลงาน สถานีฐาน MCC, MNC, LAC และ CI สำหรับช่องที่สแกนทั้งหมด
เครื่องสแกน GSM สามารถใช้เพื่อประเมินระดับสัญญาณ GSM และเปรียบเทียบคุณภาพสัญญาณ ตัวดำเนินการที่แตกต่างกัน, การประเมินความครอบคลุมของวิทยุ เมื่อตัดสินใจติดตั้งเครื่องขยายสัญญาณโทรศัพท์มือถือและปรับพารามิเตอร์ เพื่อวัตถุประสงค์ทางการศึกษา ฯลฯ
เครื่องสแกนทำงานบน Windows และใช้ตัวรับที่เรียบง่ายและราคาถูก - RTL-SDR คุณสามารถอ่านเกี่ยวกับ RTL-SDR ได้ที่:
RTL-SDR (RTL2832U) และซอฟต์แวร์กำหนดข่าวและโครงการวิทยุ
RTL-SDR – OsmoSDR,
RTL-SDR ในภาษารัสเซีย
พารามิเตอร์ RTL-SDR จะกำหนดคุณลักษณะหลักของเครื่องสแกน แน่นอนว่าเครื่องสแกนระบบ GSM ไม่สามารถทดแทนอุปกรณ์ตรวจวัดทั่วไปได้
สแกนเนอร์แจกฟรี โดยไม่มีข้อจำกัดในการใช้งาน
รุ่นปัจจุบันรองรับแบนด์ GSM 900 และไม่รองรับ GSM 1800 สิ่งนี้ถูกกำหนดโดยข้อเท็จจริงที่ว่าความถี่การทำงานของ RTL-SDR พร้อมจูนเนอร์ R820T ถูก จำกัด ไว้ที่ 1760 MHz มีความหวังว่าการใช้ไดรเวอร์ RTL-SDR รุ่นทดลองจะช่วยให้สามารถทำงานได้ในช่วง 1800 MHz เป็นอย่างน้อย
การเปิดตัวสแกนเนอร์
สามารถดาวน์โหลดสแกนเนอร์เวอร์ชันล่าสุดได้จากลิงค์นี้ เพียงแตกไฟล์ไปยังตำแหน่งที่สะดวกแล้วเรียกใช้ gsmscan.exe
รุ่นก่อนหน้าเครื่องสแกน ลิงก์ไปยังพื้นที่เก็บข้อมูลพร้อมแหล่งที่มาและข้อมูลอื่น ๆ ที่เกี่ยวข้องกับการพัฒนาอยู่ในหน้าการพัฒนา
เพื่อให้สแกนเนอร์ทำงานได้ จำเป็นต้องติดตั้งไดรเวอร์ RTL-SDR หากยังไม่ได้ติดตั้ง สามารถทำได้สะดวกโดยใช้โปรแกรม Zadig เพื่ออธิบายขั้นตอนการติดตั้ง
การใช้เครื่องสแกน
ด้านล่างนี้เป็นมุมมองของหน้าต่างโปรแกรมสแกนเนอร์:
แกนนอนจะแสดงหมายเลขช่องสัญญาณ GSM ในรูปแบบ ARFCN หรือเป็น MHz และแกนแนวตั้งจะแสดงระดับสัญญาณเป็น dBm ความสูงของเส้นแสดงความแรงของสัญญาณ
โมดูล GSM NEOWAY M590 สื่อสารกับ Arduino
หากถอดรหัสตัวระบุ BS ได้สำเร็จ และสอดคล้องกับตัวระบุของผู้ให้บริการโทรคมนาคมหลักสามราย เส้นจะถูกวาดด้วยสีที่สอดคล้องกัน
รายการแบบเลื่อนลงที่ด้านบนของหน้าจอทำให้คุณสามารถเลือกเครื่องรับ SDR ได้ หากมีการเชื่อมต่อหลายเครื่องอยู่ งานจีเอสเอ็ม 900 หรือ GSM 1800 และหน่วยแกนนอน ARFCN หรือ MHz
ปุ่มต่างๆ ช่วยให้คุณบันทึกรายงานการทำงานของเครื่องสแกนในรูปแบบของรายการสถานีฐานที่ถอดรหัส ล้างผลการถอดรหัส BS และรับข้อมูลเกี่ยวกับโปรแกรม
หลักการและคุณสมบัติของงาน
ในระหว่างการดำเนินการโปรแกรมจะสแกนช่วงความถี่การทำงานด้วยขั้นตอน 2.0 MHz (10 ช่องสัญญาณ GSM) และแปลงสัญญาณดิจิทัลด้วยความถี่สุ่มตัวอย่าง 2.4 MHz กระบวนการสแกนประกอบด้วยการส่งผ่านอย่างรวดเร็วตลอดทั้งช่วงเพื่อวัดความแรงของสัญญาณ และการส่งผ่านอย่างช้าๆ เพื่อถอดรหัสตัวระบุ BS
ขั้นตอนการถอดรหัสหนึ่งขั้นตอนจะดำเนินการหลังจากสำรวจช่วงทั้งหมดเพื่อวัดกำลัง ดังนั้นในช่วง GSM 900 ระดับสัญญาณจะได้รับการอัปเดตประมาณทุกๆ 2 วินาที และการถอดรหัสที่สมบูรณ์จะใช้เวลาประมาณ 1 นาที
เนื่องจากสัญญาณที่ได้รับจาก RTL-SDR มีคุณภาพต่ำ ความน่าจะเป็นในการถอดรหัสข้อมูลระบบ (SI) ของช่องสัญญาณควบคุมการออกอากาศ BS (BCCH) อย่างถูกต้องจึงไม่สูง ความผันผวนของระดับสัญญาณอันเป็นผลมาจากการแพร่กระจายแบบหลายเส้นทางยังช่วยลดโอกาสในการถอดรหัสข้อมูลระบบอีกด้วย ด้วยเหตุผลเหล่านี้ เพื่อให้ได้รับตัวระบุ BS เครื่องสแกนจึงจำเป็นต้องรวบรวมข้อมูลในช่วงเวลาประมาณ 10 นาที แต่ในกรณีนี้ก็ไม่ใช่ทุกช่องที่มีให้ สถานที่นี้ระดับสัญญาณและคุณภาพที่เพียงพอสำหรับการถอดรหัสแม้โดยเครื่องรับที่เหมาะสมที่สุด นอกจากนี้ ไม่ได้ใช้ช่อง GSM ทั้งหมดเพื่อดำเนินการ มาตรฐานจีเอสเอ็มดังที่เห็นในรูปด้านบน Megafon ใช้งานช่อง 975 - 1,000 เพื่อดำเนินการ มาตรฐาน UMTS.
ระหว่างการทำงาน เครื่องสแกนจะเพิ่มข้อมูลระบบเกี่ยวกับช่องสัญญาณที่ถอดรหัสใหม่ให้กับอาร์เรย์ข้อมูลทั่วไปของช่องสัญญาณ แต่ข้อมูลเกี่ยวกับช่องสัญญาณที่ถอดรหัสก่อนหน้านี้จะไม่ถูกลบเมื่อข้อมูลระบบไม่ได้ถูกถอดรหัสในขั้นตอนนี้ และยังคงอยู่ในอาร์เรย์ หากต้องการล้างข้อมูลนี้ ให้ใช้ปุ่มเพื่อล้างผลการถอดรหัส BS
เมื่อคุณคลิกที่ปุ่มบันทึกรายงาน ผลลัพธ์สะสมจะถูกบันทึกไว้ ไฟล์ข้อความโดยมีชื่อที่ประกอบด้วยชื่อโปรแกรม วันที่ และเวลาที่บันทึกข้อมูล ด้านล่างนี้เป็นตัวอย่างส่วนหนึ่งของไฟล์รายงาน:
สแกนเนอร์ได้รับการออกแบบให้ทำงานภายใต้ Windows 7, 8.1 และ 10 งานได้รับการทดสอบด้วย RTL-SDR สามชุดพร้อมจูนเนอร์ R820T จูนเนอร์ประเภทอื่นไม่ได้ทดสอบ
โปรแกรมเวอร์ชันพิเศษได้รับการคอมไพล์ให้ทำงานภายใต้ Windows XP โดยทำงานช้ากว่าเวอร์ชันมาตรฐานหลายเท่า
การพัฒนา.
โปรแกรมสแกนเนอร์มีให้ตามที่เป็นอยู่ โดยไม่มีการรับประกันหรือความรับผิดใดๆ หากคุณมีความคิดที่สมเหตุสมผลเกี่ยวกับวิธีการขยายฟังก์ชันการทำงานหรือปรับปรุงประสิทธิภาพของเครื่องสแกน เราพร้อมที่จะหารือเกี่ยวกับความเป็นไปได้ของการนำไปปฏิบัติ
คุณสามารถมีส่วนร่วมในการพัฒนาเครื่องสแกนได้ โดยไปที่หน้าการพัฒนา
มีการวางแผนพัฒนาเครื่องสแกน GSM เพิ่มเติมโดยอาจมีส่วนร่วมของคุณ
หลังจากการทดลองกับ Arduino หลายครั้ง ฉันตัดสินใจสร้างเครื่องติดตาม GPS ที่เรียบง่ายและไม่แพงมากพร้อมพิกัดที่ส่งผ่าน GPRS ไปยังเซิร์ฟเวอร์
ใช้ Arduino Mega 2560 (Arduino Uno), SIM900 - โมดูล GSM/GPRS (สำหรับส่งข้อมูลไปยังเซิร์ฟเวอร์), เครื่องรับ GPS SKM53 GPS
ทุกอย่างถูกซื้อบน ebay.com รวมประมาณ 1,500 รูเบิล (ประมาณ 500 รูเบิลสำหรับ Arduino น้อยกว่าเล็กน้อยสำหรับโมดูล GSM และอีกเล็กน้อยสำหรับ GPS)
เครื่องรับ GPS
ก่อนอื่นคุณต้องเข้าใจวิธีการทำงานกับ GPS ก่อน โมดูลที่เลือกเป็นหนึ่งในโมดูลที่ถูกที่สุดและง่ายที่สุด อย่างไรก็ตามผู้ผลิตสัญญาว่าจะใช้แบตเตอรี่เพื่อประหยัดข้อมูลดาวเทียม ตามเอกสารข้อมูล การสตาร์ทขณะเย็นควรใช้เวลา 36 วินาที อย่างไรก็ตาม ในสภาพของฉัน (ชั้น 10 จากขอบหน้าต่าง ไม่มีอาคารอยู่ใกล้ๆ) ใช้เวลามากถึง 20 นาที อย่างไรก็ตาม การเริ่มต้นครั้งถัดไปเป็นเวลา 2 นาทีแล้ว
พารามิเตอร์ที่สำคัญของอุปกรณ์ที่เชื่อมต่อกับ Arduino คือการใช้พลังงาน หากคุณโอเวอร์โหลดตัวแปลง Arduino มากเกินไป มันอาจจะไหม้ได้ สำหรับเครื่องรับที่ใช้ การสิ้นเปลืองพลังงานสูงสุดคือ 45mA @ 3.3v เหตุใดข้อกำหนดควรระบุความแรงของกระแสที่แรงดันไฟฟ้าอื่นนอกเหนือจากที่ต้องการ (5V) จึงเป็นปริศนาสำหรับฉัน อย่างไรก็ตาม ตัวแปลง Arduino จะทนกระแสไฟได้ 45 mA
การเชื่อมต่อ
GPS ไม่ได้ถูกควบคุมแม้ว่าจะมีพิน RX ก็ตาม ไม่ทราบจุดประสงค์อะไร สิ่งสำคัญที่คุณสามารถทำได้กับเครื่องรับนี้คือการอ่านข้อมูลผ่านโปรโตคอล NMEA จากพิน TX ระดับ - 5V เฉพาะสำหรับ Arduino ความเร็ว - 9600 บอด ฉันเชื่อมต่อ VIN กับ VCC ของ arduino, GND ถึง GND, TX ถึง RX ของอนุกรมที่เกี่ยวข้อง ฉันอ่านข้อมูลด้วยตนเองก่อน จากนั้นจึงใช้ไลบรารี TinyGPS น่าแปลกที่ทุกอย่างสามารถอ่านได้ หลังจากเปลี่ยนมาใช้ Uno ฉันต้องใช้ SoftwareSerial จากนั้นปัญหาก็เริ่มขึ้น - อักขระข้อความบางตัวหายไป สิ่งนี้ไม่สำคัญมากนัก เนื่องจาก TinyGPS ตัดข้อความที่ไม่ถูกต้องออก แต่ก็ไม่เป็นที่พอใจนัก: คุณสามารถลืมความถี่ 1Hz ได้เลย
หมายเหตุโดยย่อเกี่ยวกับ SoftwareSerial: ไม่มีพอร์ตฮาร์ดแวร์บน Uno ดังนั้นคุณต้องใช้ซอฟต์แวร์ดังกล่าว ดังนั้นจึงสามารถรับข้อมูลบนพินที่บอร์ดรองรับการขัดจังหวะเท่านั้น ในกรณีของ Uno จะเป็น 2 และ 3 นอกจากนี้ พอร์ตดังกล่าวเพียงพอร์ตเดียวเท่านั้นที่สามารถรับข้อมูลได้ในแต่ละครั้ง
นี่คือลักษณะของ "ม้านั่งทดสอบ"
เครื่องรับ/ส่งสัญญาณ GSM
ตอนนี้มาถึงส่วนที่น่าสนใจมากขึ้น โมดูล GSM - SIM900 รองรับระบบ GSM และ GPRS ไม่รองรับ EDGE และโดยเฉพาะ 3G สำหรับการส่งข้อมูลพิกัดนี่น่าจะดี - จะไม่มีความล่าช้าหรือปัญหาในการสลับระหว่างโหมดต่างๆ แถมตอนนี้ GPRS ก็สามารถใช้งานได้เกือบทุกที่แล้ว อย่างไรก็ตาม สำหรับการใช้งานที่ซับซ้อนกว่านี้อาจไม่เพียงพอ
การเชื่อมต่อ
โมดูลยังถูกควบคุมผ่านพอร์ตอนุกรมด้วยระดับเดียวกัน - 5V และที่นี่เราต้องการทั้ง RX และ TX โมดูลเป็นแบบชีลด์นั่นคือติดตั้งบน Arduino นอกจากนี้ยังเข้ากันได้กับทั้ง mega และ uno ความเร็วเริ่มต้นคือ 115200
เราประกอบมันบน Mega และนี่คือความประหลาดใจอันไม่พึงประสงค์ประการแรกรอเราอยู่: พิน TX ของโมดูลตกลงบนพินที่ 7 ของ Mega ไม่มีการขัดจังหวะบนพินที่ 7 ของ mega ซึ่งหมายความว่าคุณจะต้องเชื่อมต่อพินที่ 7 เช่นกับพินที่ 6 ซึ่งอาจเกิดการหยุดชะงักได้ ดังนั้นเราจะเสียพิน Arduino ไปหนึ่งอัน สำหรับเมก้ามันไม่น่ากลัวมาก - ท้ายที่สุดก็มีหมุดเพียงพอ แต่สำหรับ Uno สิ่งนี้ซับซ้อนกว่าอยู่แล้ว (ฉันเตือนคุณว่ามีเพียง 2 พินที่รองรับการขัดจังหวะ - 2 และ 3) เพื่อเป็นแนวทางแก้ไขปัญหานี้ เราไม่แนะนำให้ติดตั้งโมดูลบน Arduino แต่ให้เชื่อมต่อด้วยสายไฟ จากนั้นคุณสามารถใช้ Serial1
หลังจากเชื่อมต่อแล้ว เราพยายาม "พูดคุย" กับโมดูล (อย่าลืมเปิดใช้งาน) เราเลือกความเร็วพอร์ต - 115200 และจะดีถ้าพอร์ตอนุกรมในตัวทั้งหมด (4 บนเมกะ, 1 บน uno) และพอร์ตซอฟต์แวร์ทั้งหมดทำงานด้วยความเร็วเท่ากัน ด้วยวิธีนี้คุณสามารถถ่ายโอนข้อมูลที่มีเสถียรภาพมากขึ้น ฉันไม่รู้ว่าทำไมถึงแม้ฉันจะเดาได้
ดังนั้นเราจึงเขียนโค้ดดั้งเดิมสำหรับการส่งต่อข้อมูลระหว่างพอร์ตอนุกรม ส่ง Atz และรับความเงียบในการตอบสนอง เกิดอะไรขึ้น? อ่า คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ATZ เราโอเค ไชโย โมดูลสามารถได้ยินเรา คุณควรโทรหาเราด้วยความอยากรู้หรือไม่? ATD +7499... โทรศัพท์บ้านดังขึ้น ควันมาจาก Arduino แล็ปท็อปปิดเครื่อง ตัวแปลง Arduino ถูกไฟไหม้ เป็นความคิดที่ดีที่จะป้อนไฟ 19 โวลต์ถึงแม้ว่าจะมีเขียนไว้ว่าสามารถทำงานได้ตั้งแต่ 6 ถึง 20V แต่แนะนำให้ใช้ 7-12V เอกสารข้อมูลสำหรับโมดูล GSM ไม่ได้กล่าวถึงการใช้พลังงานภายใต้โหลด เมก้าไปที่โกดังอะไหล่ ฉันเปิดแล็ปท็อปซึ่งได้รับ +19V ผ่านสาย +5V จาก USB ด้วยความที่หายใจไม่ออก มันใช้งานได้และแม้แต่ USB ก็ไม่หมด ขอบคุณ Lenovo ที่ปกป้องเรา
หลังจากที่คอนเวอร์เตอร์หมด ฉันมองหาปริมาณการใช้กระแสไฟ ดังนั้นจุดสูงสุด - 2A โดยทั่วไป - 0.5A เห็นได้ชัดว่าเกินความสามารถของตัวแปลง Arduino ต้องใช้อาหารแยกต่างหาก
การเขียนโปรแกรม
โมดูลนี้มีความสามารถในการถ่ายโอนข้อมูลที่กว้างขวาง เริ่มจากการโทรด้วยเสียงและ SMS และปิดท้ายด้วย GPRS นั่นเอง นอกจากนี้ ในระยะหลัง ยังสามารถดำเนินการร้องขอ HTTP โดยใช้คำสั่ง AT คุณจะต้องส่งหลายรายการ แต่ก็คุ้มค่า: คุณไม่ต้องการสร้างคำขอด้วยตนเองจริงๆ มีความแตกต่างสองสามประการในการเปิดช่องทางการรับส่งข้อมูลผ่าน GPRS - จำ AT+CGDCONT=1, “IP”, “apn” แบบคลาสสิกได้ไหม ดังนั้นจึงจำเป็นต้องมีสิ่งเดียวกันที่นี่ แต่มีไหวพริบมากกว่านี้เล็กน้อย
หากต้องการรับเพจจาก URL ที่ระบุ คุณต้องส่งคำสั่งต่อไปนี้:
AT+SAPBR=1,1 //ผู้ให้บริการเปิด (ผู้ให้บริการ) AT+SAPBR=3,1,"CONTYPE", "GPRS" // ประเภทการเชื่อมต่อ - GPRS AT + SAPBR = 3,1, "APN", "อินเทอร์เน็ต" //APN สำหรับ Megafon - อินเทอร์เน็ต AT+HTTPINIT // เริ่มต้น HTTP AT+HTTPPARA="CID",1 // ID ผู้ให้บริการที่จะใช้ AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" // URL จริง หลังจาก sprintf พร้อมพิกัด AT+HTTPACTION=0 // ขอข้อมูลโดยใช้วิธี GET //รอการตอบสนอง AT+HTTPTERM //หยุด HTTP
ส่งผลให้หากมีการเชื่อมต่อเราจะได้รับการตอบสนองจากเซิร์ฟเวอร์ ที่จริงแล้วเรารู้วิธีส่งข้อมูลพิกัดแล้วหากเซิร์ฟเวอร์ได้รับผ่าน GET
โภชนาการ
เนื่องจากฉันพบว่าการเปิดโมดูล GSM จากตัวแปลง Arduino เป็นความคิดที่ไม่ดี จึงตัดสินใจซื้อตัวแปลง 12v->5v, 3A บน ebay เดียวกัน อย่างไรก็ตามโมดูลไม่ชอบแหล่งจ่ายไฟ 5V ไปแฮ็กกันเถอะ: เชื่อมต่อ 5V เข้ากับพินที่ 5V มาจาก Arduino จากนั้นตัวแปลงในตัวของโมดูล (มีประสิทธิภาพมากกว่าตัวแปลง Arduino, MIC 29302WU) จะสร้างจาก 5V ตามที่โมดูลต้องการ
เซิร์ฟเวอร์
เซิร์ฟเวอร์เขียนอันดั้งเดิม - จัดเก็บพิกัดและวาดบน Yandex.maps ในอนาคต เป็นไปได้ที่จะเพิ่มคุณสมบัติต่างๆ รวมถึงการรองรับผู้ใช้จำนวนมาก สถานะ "ติดอาวุธ/ไม่มีอาวุธ" สถานะของระบบยานพาหนะ (ระบบจุดระเบิด ไฟหน้า ฯลฯ) และอาจถึงขั้นควบคุมระบบของยานพาหนะด้วยซ้ำ แน่นอนว่าด้วยการสนับสนุนที่เหมาะสมสำหรับตัวติดตามซึ่งจะกลายเป็นระบบเตือนภัยเต็มรูปแบบได้อย่างราบรื่น
การทดสอบภาคสนาม
นี่คือลักษณะของอุปกรณ์ที่ประกอบโดยไม่มีเคส:
หลังจากติดตั้งตัวแปลงไฟและวางไว้ในเคสจากโมเด็ม DSL ที่ใช้งานไม่ได้ ระบบจะมีลักษณะดังนี้:
ฉันบัดกรีสายไฟและลบหน้าสัมผัสหลายอันออกจากบล็อก Arduino พวกเขามีลักษณะเช่นนี้:
ฉันเชื่อมต่อไฟ 12V ในรถ ขับรถไปรอบๆ มอสโกว และได้เส้นทาง:
แทร็กกลายเป็นฉีกขาด เหตุผลก็คือการส่งข้อมูลผ่าน GPRS ใช้เวลานานพอสมควรและระหว่างนี้พิกัดจะไม่ถูกอ่าน นี่เป็นข้อผิดพลาดในการเขียนโปรแกรมอย่างชัดเจน ประการแรกจะได้รับการปฏิบัติโดยการส่งแพ็กเก็ตของพิกัดทันทีเมื่อเวลาผ่านไป และประการที่สองโดยการทำงานแบบอะซิงโครนัสกับโมดูล GPRS
แผนภาพโครงการ:
สวัสดีเพื่อนๆ เรามียานอวกาศจำนวนมากที่บินอยู่เหนือหัวของเรา ในจำนวนนั้นมีดาวเทียมนำทางที่มีประโยชน์อย่างยิ่งประมาณ 90 ดวงจากระบบ GPS ของอเมริกา, GLONASS ของรัสเซีย, กาลิเลโอของยุโรปและเป่ยโต่วของจีน และวันนี้เราจะจับสัญญาณจากพวกเขาได้
ประการแรก ทฤษฎีเล็กๆ น้อยๆ: ระบบนำทางด้วยดาวเทียมเป็นเครือข่ายของยานอวกาศที่บินไปตามเส้นทางที่รู้จักก่อนหน้านี้ สังเกตวงโคจรและวิถีของมันอย่างแม่นยำ หรือตั้งอยู่ที่จุดที่หยุดนิ่งที่รู้จักในวงโคจรค้างฟ้าหรือธรณีซิงโครนัส ดาวเทียมบินโดยเฉลี่ยที่ระดับความสูงประมาณ 20,000 กิโลเมตร และแต่ละดวงเป็นนาฬิกาอะตอมที่มีความแม่นยำสูงเป็นพิเศษซึ่งถ่ายทอดเวลาอย่างต่อเนื่องไปทั่วโลก เวลาปัจจุบัน.
สัญญาณวิทยุที่แพร่กระจายด้วยความเร็วแสงมาถึงโลกด้วยความล่าช้า 60 ถึง 90 มิลลิวินาที ขึ้นอยู่กับระยะห่างของดาวเทียม เมื่อทราบตำแหน่งที่แน่นอนของแหล่งสัญญาณวิทยุตามเวลาล่าช้าของการแพร่กระจาย คุณสามารถค้นหาระยะทางที่แน่นอนไปยังดาวเทียมได้ จากนั้น เมื่อคำนวณระยะทางของวัตถุต่างๆ ที่รู้จักแล้ว คุณจะสามารถทราบได้ว่าคุณกำลังอยู่ที่ไหนในอวกาศ
ลองนึกภาพว่าลูกบอลสีน้ำเงินนี้คือโลกของเรา ดาวเทียมสามดวงบินอยู่เหนือมันที่ระดับความสูง 20,000 กิโลเมตร เมื่อวัดระยะทางไปยังวงแรก คุณจะได้รับข้อมูลว่าคุณอยู่ที่ไหนสักแห่งในวงกลมนี้ - ขณะนี้ยังไม่มีข้อมูลมากนัก สัญญาณจากดาวเทียมดวงที่สองจะชี้แจงตำแหน่งของคุณไปยังจุดตัดกันสองจุดโดยไม่ต้องอ้างอิงถึงระดับความสูง สัญญาณจากดาวเทียมนำทางดวงที่สามจะระบุความสูงของจุดเหล่านี้เหนือพื้นผิวและแก้สมการการนำทางอย่างเป็นทางการ โดยลดตำแหน่งของคุณลงเหลือสองตำแหน่งที่เป็นไปได้ ในความเป็นจริง พิกัดใดพิกัดหนึ่งมีลักษณะที่น่าทึ่งและถูกละทิ้งไป จึงสามารถแก้ไขปัญหาได้อย่างสมบูรณ์ สัญญาณจากดาวเทียมดวงที่สี่ทำสิ่งเดียวกัน - มันแก้สมการการนำทางได้อย่างแม่นยำอย่างไม่น่าสงสัยอยู่แล้ว
การวัดระยะทางของดาวเทียมแต่ละดวงที่ตามมาจะเพิ่มความแม่นยำของตำแหน่ง และปัจจุบันมีระยะตั้งแต่ 1 ถึง 3 เมตร โดยมีทัศนวิสัยมาตรฐานของดาวเทียมนำทางประมาณ 10 ดวง
เราได้แยกทฤษฎีออกแล้ว เรามาฝึกฝนกันต่อ ปัจจุบันโมดูลการนำทางต่างๆ จำหน่ายแยกต่างหาก ดาวเทียมที่ง่ายและเก่าแก่ที่สุดรองรับเฉพาะสัญญาณจากระบบสังเกตการณ์ GPS ของอเมริกา โดยเฉลี่ย 5-7 ดาวเทียม โมดูลขั้นสูงยังสามารถรับสัญญาณจากกลุ่มดาว GLONASS ของรัสเซียได้ ทำให้จำนวนดาวเทียมทั้งหมดที่สังเกตได้โดยเฉลี่ยเพิ่มขึ้นสองเท่า นอกจากนี้ยังมีโมดูลลดราคาที่รวมกับเข็มทิศซึ่งใช้สำหรับการนำทางที่แม่นยำและการบำรุงรักษาเส้นทาง
ดาวเทียมของระบบนำทางต่างๆ สามารถมองเห็นได้บนหน้าจอโทรศัพท์ของฉัน วงกลมคือ GPS สามเหลี่ยมคือ GLONASS และดวงดาวคือ BeiDou ของจีน ดังนั้นโทรศัพท์ของฉันจึงรองรับสามแบบที่แตกต่างกัน ระบบนำทางและการรวมสัญญาณจากสิ่งเหล่านั้นจะช่วยเพิ่มความแม่นยำในการกำหนดตำแหน่ง ตอนนี้มีดาวเทียม 28 ดวงอยู่เหนือหัวของฉันและสัญญาณใช้ได้ตั้งแต่ 7 เท่านั้นนั่นคือ โทรศัพท์ของฉันรู้ล่วงหน้าแล้วว่าดาวเทียมแต่ละดวงอยู่ที่ไหน และสัญญาณที่หายไปจากดาวเทียม 21 ดวง หมายความว่าไม่อยู่ในสายตา สัญญาณการนำทางอ่อนมากจากคำว่า VASCHE แทบจะไม่สะท้อนเลยถูกปิดกั้นโดยภูมิประเทศอาคารหลังคารถ - โลหะใด ๆ ที่อยู่เหนือศีรษะหรือด้านข้าง แม้แต่หิมะตกนอกหน้าต่างก็ยังรบกวนการรับสัญญาณที่ดี
ในการดำเนินโครงการคุณจะต้องมีโมดูลอิเล็กทรอนิกส์จำนวนหนึ่ง: แพลตฟอร์ม Arduino Nano ที่ตั้งโปรแกรมได้, หน้าจอ OLED 128 x 32 จุด (เชื่อมต่อผ่านบัส I2C), โมดูล GPS สำหรับเชื่อมต่อผ่าน UART ใด ๆ แบตเตอรี่ลิเธียมด้วยความจุสูงกว่า 200 มิลลิแอมป์ โมดูลชาร์จแบบป้องกันสำหรับลิเธียม และบูสต์คอนเวอร์เตอร์เพื่อรับไฟ 5 โวลต์ ฉันมีสามประเภทที่แตกต่างกันที่นี่ ใครๆ ก็ทำ ฉันยังวางแผนที่จะใช้ไฟ LED RGB สีเพื่อระบุสถานะ แต่ละทิ้งสิ่งนี้ไปเมื่อโครงการดำเนินไป
เราเชื่อมต่อหน้าจอกับ Arduino และพบกับปัญหาแรก ห้องสมุดมาตรฐานหน้าจอ OLED ใช้พื้นที่ 20 kB ซึ่งเป็น 70% ของหน่วยความจำของไมโครคอนโทรลเลอร์ และแทบไม่มีที่ว่างสำหรับโปรแกรม ก่อนหน้านี้ฉันกำลังประกอบเครื่องวัดระยะสูงและต้องเผชิญกับความจริงที่ว่าบรรทัดใหม่ของโค้ดนำไปสู่หน่วยความจำล้นและไมโครคอนโทรลเลอร์ค้างระหว่างการทำงาน ดังนั้นฉันจะใช้มากขึ้น ห้องสมุดแสง. ใช้งานไม่ได้กับกราฟิกและแสดงเฉพาะข้อความบนหน้าจอ OLED เท่านั้น และใช้หน่วยความจำเพียง 1 KB
ฉันเชื่อมต่อโมดูล GPS เข้ากับเขียงหั่นขนมและดูข้อมูลการนำทางแรก - สัญญาณจากอวกาศถูกจับและประมวลผลแล้ว ตอนนี้ฉันแสดงข้อมูลบนหน้าจอ ระดับ! เห็นดาวเทียม 4 ดวง ตอนนี้ 3 และอีกครั้ง 4 เป็น 5 แล้ว! เพื่อการรับสัญญาณ GPS ที่ดีขึ้น โมดูลจะแขวนไว้บนสายไฟนอกหน้าต่าง
ในระหว่างการพัฒนาโครงการ ฉันใช้โมดูล GPS ประเภทต่างๆ. GPS แบบธรรมดาและ GPS แบบรวมเข้ากับ Glonass เราต้องทำการทดลองหลายชั่วโมงต่อเนื่องกันเพื่อตรวจสอบความเสถียรของการทำงาน โมดูลกลับกลายเป็นว่าใช้งานได้ แต่ด้วย ไลบรารีซอฟต์แวร์ฉันต้องคนจรจัด ลองมาหลายตัวแล้ว ห้องสมุดที่แตกต่างกันและ TinyGPS+ เป็นเพียงเครื่องเดียวที่ทำงานร่วมกับโมดูล GPS ทั้งหมดในคราวเดียว
โดยทั่วไป ไลบรารีจะแยกวิเคราะห์โปรโตคอล NMEA เพียงแยกวิเคราะห์ข้อมูลที่โมดูล GPS พ่นออกมาสองครั้งต่อวินาที นี่คือลักษณะของสตรีมข้อมูลที่ยังไม่ได้ประมวลผล
ด้วยเหตุนี้ เฟิร์มแวร์ของฉันจึงอนุญาตให้คุณเชื่อมต่อโมดูล GPS เกือบทุกตัวผ่าน UART ด้วยโปรโตคอลการถ่ายโอนข้อมูล NMEA อันที่จริงแล้ว เหล่านี้คือโมดูลส่วนใหญ่ที่มีพิน RX และ TX ฉันแนะนำให้นำโมดูล GPS จาก Glonass มาใช้ เพราะจะเห็นดาวเทียมได้มากขึ้น ดังนั้นความแม่นยำจึงสูงขึ้น ลิงก์ไปยังส่วนประกอบและโมดูลทั้งหมดอยู่ในคำอธิบายของวิดีโอนี้
เขียงหั่นขนมแสดงฟังก์ชันการทำงานเต็มรูปแบบของระบบ ตอนนี้คุณสามารถประกอบทุกอย่างในฮาร์ดแวร์ได้แล้ว ฉันจะใช้แบตเตอรี่ลิเธียมเป็นพลังงานโดยจะเชื่อมต่อกับแผงป้องกันพร้อมการชาร์จ บนบอร์ดนี้ ตัวต้านทานตัวล่าง R3 จะตั้งค่ากระแสการชาร์จแบตเตอรี่ โดยค่าเริ่มต้นคือ 1 แอมแปร์ ซึ่งถือว่ามากสำหรับแบตเตอรี่ขนาดเล็ก ดังนั้นจึงจำเป็นต้องเปลี่ยนตัวต้านทาน บนหน้าจอคุณจะเห็นแผ่นที่มีค่าตัวต้านทานสำหรับกระแสการชาร์จที่แตกต่างกัน หากแบตเตอรี่ของคุณมีความจุ 500 มิลลิแอมป์ชั่วโมง คุณจะต้องตั้งค่ากระแสไฟชาร์จไม่สูงกว่าค่านี้ เหล่านั้น. คุณสามารถตั้งค่าได้ 200 หรือ 300 มิลลิแอมป์ และไม่เกิน 500
ถัดไปต้องเพิ่มแรงดันไฟฟ้า หน้าจอและโมดูล GPS ใช้พลังงาน 5 โวลต์ เราจะทำสิ่งนี้โดยใช้ตัวแปลงแรงดันไฟฟ้าเพิ่ม โดยปกติจะติดตั้งไว้ในพาวเวอร์แบงค์เพื่อเพิ่มแรงดันไฟฟ้าจาก 3.7 เป็น 5 โวลต์ ฉันจะใช้โมดูลสีเขียวขนาดเล็ก ซึ่งสามารถส่งออกได้สูงสุด 300mA และเพียงพอสำหรับโปรเจ็กต์นี้
ฉันได้อัปเดตเฟิร์มแวร์แล้ว ตอนนี้เมื่อโหลดหน้าจอหลักจะแสดงเวลาปัจจุบันที่แน่นอนจากดาวเทียม จำนวนดาวเทียมที่มองเห็นได้ และความเร็วปัจจุบันของตัวติดตาม มันจะกระโดดเนื่องจากมีข้อผิดพลาดในการระบุตำแหน่ง เมื่อคุณกดปุ่ม หน้าจอจะเปลี่ยนไป ค่าความเร็วปัจจุบันและค่าสูงสุดสำหรับระยะเวลาการสังเกตจะแสดงที่นี่ ในอีกหน้าจอหนึ่งจะมีระยะทางปัจจุบันถึงจุดศูนย์ ระยะทางสูงสุดที่บันทึกไว้และมาตรวัดระยะทาง
ฉันวัดขนาดของโมดูลทั้งหมดและพยายามจัดเรียงให้กะทัดรัดที่สุดเท่าที่จะเป็นไปได้ แต่ไม่ว่าฉันพยายามแค่ไหน หน้าจอบางก็ไม่พอดีกับจอกว้าง เครื่องรับ GPSโอห์ม ดังนั้นฉันจึงตัดสินใจเปลี่ยนหน้าจอด้วย OLED 128x64 พิกเซลอีกอัน ทำให้ออกแบบตามหลักสรีรศาสตร์มากขึ้นและช่วยให้มีปุ่มที่ใหญ่ขึ้น หน้าจอ OLED เข้ากันได้อย่างสมบูรณ์และต้องมีการแก้ไขโค้ดเพียงเล็กน้อย ดังนั้นเฟิร์มแวร์จะมีให้ใช้กับอุปกรณ์ทั้งสองเวอร์ชันที่มีหน้าจอขนาดเล็กและขนาดใหญ่
แผนภาพการประกอบนั้นเรียบง่าย คุณต้องเชื่อมต่อหน้าจอกับบัส I2C ซึ่งเป็นพิน A4 และ A5 โมดูล gps เชื่อมต่อกับพอร์ตอนุกรมของซอฟต์แวร์บนพิน D3 และ D4 ปุ่มบนพิน D7 พลังงานแบตเตอรี่ผ่าน โมดูลป้องกันลากไปที่สวิตช์จากนั้นไปที่บูสต์คอนเวอร์เตอร์แล้วเชื่อมต่อ Arduino กับ 5 โวลต์
เพื่อความสะดวกในการจัดวางส่วนประกอบ ฉันจะใช้เขียงหั่นขนมสีเขียวขนาด 7 x 3 เซนติเมตร เพื่อป้องกันไม่ให้หน้าจอแขวนอยู่บนขั้วต่อ ฉันจึงติดตั้งบนขาตั้งพลาสติกที่มีสเปเซอร์ขนาด 5 มม. จะมีตัวรับสัญญาณ GPS อยู่ระหว่างหน้าจอกับปุ่ม ที่ด้านหลังของบอร์ดจะมีตัวควบคุม Arduino แบตเตอรี่ และแผงป้องกัน แบตเตอรี่จะใช้ลิเธียมบาง 350 มิลลิแอมป์ ถ้าจำไม่ผิด ใช้กับบุหรี่ไฟฟ้า แต่อย่างที่ผมบอกไปว่าจะใช้แบตเตอรี่ลิเธียมอะไรก็ได้
ฉันวัดทุกอย่างอีกครั้ง วัดและเตรียมการออกแบบตัวเรือนสำหรับการพิมพ์บนเครื่องพิมพ์ 3D ใช้เวลาเพียง 15 นาทีบนเว็บไซต์ TinkerCAD และโปรเจ็กต์ก็พร้อมที่จะพิมพ์ ฉันถ่ายโอนไฟล์ไปยังแฟลชไดรฟ์ เปิดใช้งานแล้วไปกันเลย เวลาในการพิมพ์ประมาณ 40 นาที นี่เป็นตัวเล็งตัวแรกสำหรับการลองวางโมดูล
บอร์ดและปุ่มเข้าที่พอดี แต่หน้าจอสั้นเพียง 1 มิลลิเมตร และขาตั้งภายในก็ขวางทาง ดังนั้นทุกอย่างลงตัวและติดตั้งเข้าที่ เยี่ยมมาก ฉันแก้ไขโปรเจ็กต์และพิมพ์ รุ่นสุดท้ายที่อยู่อาศัยสีส้ม หลังจากพิมพ์เสร็จต้องให้เวลาโต๊ะเย็นแล้วจึงฉีกส่วนออกเท่านั้น จากนั้นด้านหน้าจะเรียบและไม่ขยับ
ฉันหักและทำความสะอาดขอบยึดของพลาสติก เนื่องจากฉันใช้พลาสติก ABS จึงต้องมีการแปรรูปด้วยอะซิโตน ฉันใช้มันด้วยแปรงชั้นต่างๆ จะติดกันและร่างกายจะแข็งแรงขึ้นและได้รับความเงางาม
บอร์ดพอดีกับเคสอย่างสมบูรณ์, ตัวยึดอยู่ในแนวเดียวกัน, ปุ่มไม่ติด ปลายด้านหนึ่งมีรูสำหรับขั้วต่อ Arduino Nano และอีกด้านหนึ่งสำหรับชาร์จแบตเตอรี่ มันแคบลงเล็กน้อยดังนั้นฉันจึงขยายมันด้วยมีดผ่าตัด
แผงชาร์จมีส่วนยื่นออกมาตามขอบ ป้องกันไม่ให้ขั้วต่อลึก ดังนั้นฉันจึงบดมันด้วยตะไบเข็ม ตอนนี้บอร์ดอยู่ในตำแหน่งที่ดีแล้ว
ใน ปริทัศน์อุปกรณ์จะมีลักษณะเช่นนี้ ตัวเรือนตั้งอยู่ด้านบน ข้างใต้จะมีไมโครสวิตช์, เขียงหั่นขนมพร้อมหน้าจอ, โมดูล GPS และปุ่ม นอกจากนี้ยังมีตัวแปลงไฟแบบสเต็ปอัพด้านข้างอีกด้วย
ฉันแยกสวิตช์ออกจากกันโดยใช้มีดผ่าตัดเจาะรูเหนือปุ่ม มันฝังอยู่ในร่างกายและจะไม่รบกวน
ถึงเวลาที่จะประสาน ฉันประสานหน้าสัมผัสแรกของหน้าจอเข้ากับบอร์ดลองอีกครั้ง - ทุกอย่างถูกต้องและคุณสามารถประสานหน้าสัมผัสที่เหลืออีกสามหน้าได้ ตอนนี้ปุ่ม และอย่าลืมทำความสะอาดฟลักซ์ด้วยแปรง ฉันบัดกรีสายไฟเข้ากับโมดูลป้องกันแบตเตอรี่
เมื่อเชื่อมต่อต้องแน่ใจว่าได้ใส่ใจกับสีของสายไฟ สีที่ไม่ถูกต้องบางครั้งมาจากประเทศจีน ในกรณีนี้ ฉันตัดสินใจถอดขั้วต่อและบัดกรีสายไฟโดยตรง ติดต่อได้ดีขึ้น. ขั้นตอนนี้ซับซ้อนและต้องใช้ความแม่นยำและความระมัดระวังในการบัดกรี นอกจากนี้ฉันเติมกาวร้อนที่หน้าสัมผัสซึ่งจะช่วยป้องกันรางและสายไฟจากการดึงออกโดยไม่ตั้งใจ และเราจะบรรจุโมดูล GPS ทั้งหมดลงในกล่องหดด้วยความร้อนทันที ซึ่งไม่จำเป็น แต่จะป้องกันเพิ่มเติมอีกด้วย ความเสียหายทางกลและไฟฟ้าลัดวงจรเมื่อติดตั้งบนเขียงหั่นขนม
นอกจากนี้เรายังหุ้มบูสต์คอนเวอร์เตอร์ในการหดด้วยความร้อนอีกด้วย เพื่อยึดโมดูลให้แน่นหนา ฉันใช้เทปสองหน้า เมื่อติดตั้งบอร์ดปรากฎว่ามีพื้นที่ไม่เพียงพอสำหรับสายไฟดังนั้นฉันจึงเจาะรูตรงกลางแล้วสอดสายไฟเข้าไปที่นั่น
ฉันขอแนะนำสว่านไร้สายสุดเจ๋ง มันใช้แบตเตอรี่ 18650 เพียงก้อนเดียวและช่วยให้คุณเจาะรูที่คล้ายกันบนบอร์ดและเคสต่างๆ ได้อย่างรวดเร็ว ก่อนหน้านี้ สำหรับงานดังกล่าว ฉันต้องถอด Dremel ออกจากเคสแล้วเสียบเข้ากับเต้ารับไฟฟ้า สว่านนี้อยู่ในมือ
ประกอบส่วนบนของบอร์ดแล้วมีเกลียวสายไฟและตอนนี้คุณต้องติดตั้งสวิตช์ ในการทำเช่นนี้เรากัดขาพิเศษที่ขานั้นออกโดยมีเพียงสองตัวเท่านั้นที่จำเป็นในการจ่ายและขัดจังหวะแหล่งจ่ายไฟ เราบัดกรีลวดเข้ากับพวกมันและตามปกติความร้อนจะหดตัวทุกอย่าง จากนั้นคุณสามารถติดตั้งสวิตช์แทนและเติมด้วยกาวร้อน ตอนนี้การเปิดและปิดตัวติดตามจะสะดวกกว่า
ฉันติดตั้งบอร์ดลงในเคสและยึดให้แน่นด้วยสกรูขนาดเล็กสี่ตัว มีรูที่เกี่ยวข้องไว้บนส่วนรองรับตัวเรือนแล้ว เมื่อฉันถอดฟิล์มป้องกันออกจากหน้าจอ ฉันสังเกตเห็นช่องว่างขนาดใหญ่ระหว่างจอแสดงผลและตัวเครื่อง ดังนั้นฉันจึงหยิบบรรจุภัณฑ์โปร่งใสชิ้นหนึ่งจากอุปกรณ์อิเล็กทรอนิกส์บางชนิดแล้วตัดกระจกออกมาให้พอดีกับขนาดของหน้าต่าง และติดกาวอะซิโตนเข้ากับพลาสติกของเคส
เราดำเนินการประกอบตามแบบแผนไม่มีปัญหาหรือความแตกต่างที่นี่ แค่ตั้งใจฟัง บวกถึงบวก ลบถึงลบ เราเชื่อมต่อสวิตช์โดยตรงกับเอาต์พุตของโมดูลการชาร์จ การดำเนินการนี้จะปิดวงจรไฟฟ้าทั้งหมดและป้องกันไม่ให้แบตเตอรี่หมด
หลังจากบัดกรีสายไฟทั้งหมดเข้ากับโมดูลแล้ว ให้ปิดแผงด้านล่างด้วยเทปไฟฟ้าสีน้ำเงิน ตัวควบคุม Arduino ที่มีการชาร์จจะอยู่ด้านบนและหากไม่มีฉนวนก็อาจเกิดการลัดวงจรได้
ฉันประสานโมดูลป้องกันและยึดให้เข้าที่ด้วยกาวร้อน
ฉันวางหน้าสัมผัสของแบตเตอรี่และบัดกรีลวดเข้ากับพวกมันอย่างรวดเร็วเพื่อไม่ให้แบตเตอรี่ร้อนเกินไป ในด้านหนึ่งและอีกด้านหนึ่ง หลังจากนี้คุณจะต้องเชื่อมต่อ ไมโครยูเอสบีสายเคเบิลและจ่ายไฟให้กับโมดูลป้องกันซึ่งจะเปิดใช้งานการทำงาน
เสร็จแล้ว ตอนนี้คุณต้องอัปโหลดเฟิร์มแวร์ เราเชื่อมต่อ Arduino กับคอมพิวเตอร์ไปที่หน้าโครงการซึ่งมีลิงก์อยู่ในคำอธิบายวิดีโอ ดาวน์โหลดไฟล์เก็บถาวร แตกไฟล์ ติดตั้งไลบรารี เปิดเวอร์ชันเฟิร์มแวร์ที่จำเป็นสำหรับหน้าจอ 32 หรือ 64 พอยต์ แล้วโหลดลงในคอนโทรลเลอร์ ทุกอย่างได้ผลในครั้งแรก! ข้อมูลจากแกน GPS เย็น!
ฉันติดตั้งคอนโทรลเลอร์เข้าที่ เปิดแหล่งจ่ายไฟอัตโนมัติ... iiiiiiiii... ไม่มีอะไรเลย ไฟ LED เพาเวอร์บน Arduino เปิดอยู่ แต่หน้าจอไม่เปิด และนั่นคือสิ่งที่เกิดขึ้น เหตุผลที่ฉันยังไม่รู้ ฉันใช้เวลาหลายชั่วโมงในการทำงานเพื่อให้ตัวติดตามทำงานโดยอัตโนมัติจากแบตเตอรี่ในตัว
ตอนแรกฉันคิดว่าตัวแปลงไฟแบบสเต็ปอัพขนาดเล็กคือตัวการ แต่การตรวจสอบด้วยมัลติมิเตอร์พบว่ามีแรงดันไฟฟ้า 5 โวลต์คงที่ ต่อไป ฉันเชื่อมต่อโมดูลพลังงานอัตโนมัติที่ฉันเหลือจากโปรเจ็กต์อื่น มันถูกสร้างขึ้นบนบูสต์คอนเวอร์เตอร์ขนาดใหญ่ - และแท้จริงแล้ว ตัวติดตามเริ่มทำงาน แต่ค้างหลังจากนั้นไม่กี่วินาที
ฉันชาร์จแบตเตอรี่และวางเครื่องติดตามไว้บนหน้าต่างเพื่อจับดาวเทียม สามนาทีต่อมา เขาก็รับสัญญาณจากดาวเทียม 4 ดวงและระบุตำแหน่งได้ นั่นหมายความว่าใช้งานได้และสามารถประกอบได้ใช่ไหม? เราเปลี่ยนบูสต์คอนเวอร์เตอร์เห็นได้ชัดว่าอันเล็กทำให้เกิดเสียงรบกวนจากแหล่งจ่ายไฟมาก
ในการทำเช่นนี้ ฉันต้องถอดแยกชิ้นส่วนตัวติดตามออกทั้งหมด ปลดสายไฟทั้งหมดออกแล้วประกอบกลับเข้าไปใหม่อีกครั้ง โมดูลจ่ายไฟใหม่จะอยู่ในตำแหน่งเดียวกับอันเก่า โดยต้องถอดขาตั้งเพียงอันเดียวจึงจะพอดีกับใต้หน้าจอ
เพียงเท่านี้ฉันก็บิดสายไฟเป็นผมเปียเพื่อหลีกเลี่ยงการรบกวน อ่า... ไอ้เวรนี่ไม่เปิดอีกเลย แม่นยำยิ่งขึ้นคือเปิดขึ้นและค้างทันทีพร้อมกับสิ่งประดิษฐ์บนหน้าจอ ทำงานหลายชั่วโมงและเปล่าประโยชน์เลย การเปลี่ยนตัวแปลงไม่ได้ช่วยอะไร
ฉันลองติดตั้งตัวเก็บประจุบนแหล่งจ่ายไฟ - ไม่มีอะไรช่วย ตัวติดตามปฏิเสธที่จะทำงานโดยอัตโนมัติทั้งจากบูสต์คอนเวอร์เตอร์และจากแหล่งจ่ายไฟในห้องปฏิบัติการ - มันค้างหรือไม่เปิดเลย แต่ในขณะเดียวกันก็ทำงานได้อย่างสมบูรณ์แบบจากขั้วต่อ Arduino USB
เมื่อใช้วิธีการปิดเครื่องตามลำดับ ฉันสามารถพบว่าหน้าจอ OLED ต้องตำหนิในเรื่องนี้ แต่ฉันก็ยังไม่เข้าใจว่าทำไม พบวิธีแก้ปัญหาอย่างกะทันหัน ในระหว่างการตรวจสอบแหล่งจ่ายไฟอัตโนมัติครั้งต่อไป ฉันจ่ายไฟ 5 โวลต์ไปที่พิน VIN โดยไม่ได้ตั้งใจ ฉันสังเกตว่าพินนี้! ไม่! ออกแบบให้จ่ายไฟ 5 โวลต์ และต้องใช้แรงดันไฟฟ้า 7 ถึง 12 โวลต์
แต่อย่างไรก็ตาม ตัวติดตามก็เริ่มทำงานทันทีและเริ่มทำงานได้อย่างเสถียร เหล่านั้น. ปรากฎว่าโคลงขนาดเล็กไม่ใช่สาเหตุของปัญหา แต่เป็นอย่างอื่น
ในขณะเดียวกันฉันก็ตัดสินใจตรวจสอบปริมาณการใช้กระแสไฟ จากไฟ 5 โวลต์ ตัวติดตามกินไฟประมาณ 70 มิลลิแอมป์ และจาก 4 โวลต์ผ่านบูสต์คอนเวอร์เตอร์กลายเป็นประมาณ 110 มิลลิแอมป์ ดังนั้นแบตเตอรี่ขนาดเล็ก 350 มิลลิแอมป์ของฉันจะใช้งานได้นานสามชั่วโมง อายุการใช้งานแบตเตอรี่. และฉันยังไม่ได้ปรับแหล่งจ่ายไฟให้เหมาะสม คุณสามารถตัดไฟ LED ที่เปิดตลอดเวลาและยังคงประหยัดแบตเตอรี่ได้
ตัวติดตามเริ่มทำงานอย่างเสถียรโดยสมบูรณ์ ฉันทิ้งมันไว้ที่หน้าต่าง และหลังจากนั้นไม่กี่นาที มันก็จับดาวเทียมได้ 4 ดวง ยอดเยี่ยม
หากคุณสนใจที่จะช่วยให้ฉันเข้าใจสาเหตุของพฤติกรรมแปลกๆ ของ Arduino ต่อไปนี้เป็นคำแนะนำ:
1 – ตัวติดตามทำงานได้หากขับเคลื่อนผ่านขั้วต่อ Arduino USB
2 – ตัวติดตามค้างและไม่เปิดหากคุณจ่ายไฟผ่านพิน Arduino 5V โดยใช้แรงดันไฟฟ้า 5 โวลต์จากแหล่งพลังงานใดๆ
3 – ตัวติดตามค้างและไม่เปิดหากใช้ไฟ 7 โวลต์ขึ้นไปผ่านพิน Arduino VIN
4 – ตัวติดตามทำงานได้หากใช้พลังงาน 5 โวลต์ที่ไม่ได้มาตรฐานผ่านพิน VIN เดียวกัน
อุปกรณ์ที่เสร็จสมบูรณ์แล้วคือมาตรวัดความเร็วอัตโนมัติแบบสากล, เรนจ์ไฟนเนอร์, มาตรวัดระยะทางและนาฬิกาบอกเวลาที่แม่นยำผ่านดาวเทียมในตัวเครื่องเดียว
บนหน้าจอหลักหลังจากโหลดเวลาปัจจุบันใน Greenwich จะแสดงที่ด้านบน บรรทัดที่สองคือความเร็วปัจจุบัน 0.3 กิโลเมตรต่อชั่วโมงและค่าความเร็วสูงสุดที่บันทึกไว้นับตั้งแต่เวลาที่เปิดเครื่อง - 26 กิโลเมตรต่อชั่วโมง ในบรรทัดที่สาม ระยะทางปัจจุบันถึงจุดศูนย์คือ 530 เมตร และระยะทางสูงสุดที่ทำได้ตั้งแต่เปิดเครื่องคือ 580 เมตร ในบรรทัดที่สี่ มาตรวัดระยะทางแสดง 923 เมตร และจำนวนดาวเทียมที่ใช้
ตัวอักษรบรรทัดล่างคือจำนวนข้อมูลที่ได้รับจากโมดูล GPS
เมื่อคุณกดปุ่มสั้นๆ การแสดงผลหน้าจอจะเปลี่ยนไป และเมื่อคุณกดปุ่มค้างไว้เป็นเวลานาน เครื่องติดตามจะจดจำตำแหน่งปัจจุบันเป็นจุดอ้างอิงเป็นศูนย์สำหรับการวัดระยะทาง หน้าจอที่สองแสดงความเร็วปัจจุบันและความเร็วสูงสุด หน้าจอที่สามประกอบด้วยข้อมูลเกี่ยวกับระยะทางถึงจุดศูนย์ หน้าจอที่สี่คือมาตรวัดระยะทาง ละติจูดและลองจิจูดที่ห้า
คุณสามารถรีเซ็ตมาตรวัดระยะทางและค่าสูงสุดได้โดยการกดปุ่มบนหน้าจอค้างไว้ด้วยพารามิเตอร์เหล่านี้ เหล่านั้น. ไปที่มาตรวัดระยะทางแล้วกดปุ่มค้างไว้เพื่อรีเซ็ต
มาดูการทดสอบกันดีกว่า ตอนนี้ตัวติดตามเห็นดาวเทียม 12 ดวง ฉันตั้งค่าจุดศูนย์ในปัจจุบันและรีเซ็ตมาตรวัดระยะทางเป็นศูนย์ ฉันทำสิ่งเดียวกันกับมาตรวัดระยะทางของรถยนต์ เมื่อเดินทาง 1.2 กิโลเมตรตามมาตรวัดความเร็วของรถ ฉันเห็น 1205 เมตรเดียวกันบนตัวติดตาม GPS ระยะทางปัจจุบันถึงจุดศูนย์ในแนวตรงคือ 0.93 กิโลเมตร และตามแผนที่นั้น 930 เมตรเท่ากัน จนถึงตอนนี้ทุกอย่างถูกต้อง
ฉันตัดสินใจวัดระยะทางที่ไกลขึ้น ฉันรีเซ็ตการอ่านบนตัวติดตามและรถยนต์เป็นศูนย์อีกครั้ง เมื่อเดินทางไปแล้ว 8.4 กิโลเมตร ฉันพบเครื่องติดตามว่าระยะทางสั้นกว่า - เพียง 7974 เมตร ในกรณีนี้ ระยะทางปัจจุบันถึงจุดศูนย์คือ 4,930 เมตร ลองดูในแผนที่ว่าแม่นมาก 4,930 เมตรเท่าเดิม ยังไม่ชัดเจน แต่ทำไมมาตรวัดระยะทางจึงอยู่ที่ 400 เมตร และมาตรวัดระยะทางตัวใดที่วางอยู่บนรถหรือ GPS
เอาล่ะ ถึงเวลาพิมพ์แล้ว ปกหลังและเราจะทดสอบอีกครั้ง ฉันกำลังปิด. น้ำหนักของอุปกรณ์ที่เสร็จแล้วกลายเป็น 55 กรัม มาก แต่ไม่สำคัญ - ในตอนท้ายฉันจะแสดงวิธีลดน้ำหนักให้คุณ
ฉันมาถึงลานสเก็ตและตัดสินใจวัดความเร็วของผู้เล่นฮอกกี้ ให้ตายเถอะ เขายังต้องถอดฝาครอบออกเพื่อความรวดเร็ว ผลลัพธ์ที่ได้คือความเร็วที่รุนแรงราวกับ "จรวดรัสเซีย" - 5 กิโลเมตรต่อชั่วโมง ฉันเดินและทั้งหมดเป็นเพราะเพดานบนลานสเก็ตหุ้มด้วยฟอยล์สะท้อนแสงเพื่อป้องกันความเย็น มีสัญญาณจากดาวเทียมแต่ไม่แม่นยำ
มาทำแบบทดสอบครั้งสุดท้ายด้วย โทรศัพท์มือถือ. โทรศัพท์เห็นดาวเทียม 7 ดวงและเครื่องติดตาม 9 ฉันเริ่มบันทึกและรีเซ็ตมาตรวัดระยะทางบนตัวติดตาม เอาล่ะ...ไปกันเลย หลังจากขับรถไปได้สามกิโลเมตร โทรศัพท์และตัวติดตามก็แสดงค่าที่เหมือนกันบนมาตรวัดระยะทาง 3017 เทียบกับ 3021 เมตรเป็นผลลัพธ์ที่ยอดเยี่ยม ฉันไม่ได้คาดหวังความแม่นยำเช่นนี้
แต่มาตรวัดระยะทางเกิดข้อผิดพลาดมากถึง 12,000 กิโลเมตร ไม่เปรี้ยว ก่อนหน้านี้เมื่อทำการดีบั๊กโปรแกรมฉันพบข้อผิดพลาดดังกล่าวแล้วและตัวติดตามก็ถูกย้ายไปทันที 7,000 กิโลเมตร เมื่อฉันกลับถึงบ้าน ฉันสร้างจุดใน Google โดยมีละติจูดและลองจิจูดเป็นศูนย์ ปรากฎว่าตั้งอยู่ในมหาสมุทรแอตแลนติกซึ่งอยู่ไม่ไกลจากชายฝั่งกานา เมื่อวัดระยะทางจากจุดนั้นถึงตำแหน่งของฉัน ฉันก็ไปได้ 7,000 กิโลเมตรเท่าเดิม ปรากฎว่าบางครั้งโมดูล GPS ข้ามศูนย์ไปตามพิกัด สิ่งนี้สามารถแก้ไขได้อย่างง่ายดายโดยการเพิ่มเงื่อนไขเดียวให้กับโค้ดโปรแกรม และไม่พบข้อผิดพลาดนี้ในระหว่างการทดสอบ
ฉันคิดว่าตัวติดตามดูดีมาก นี่เป็นประสบการณ์ครั้งแรกของฉันในการทำงานกับโมดูล GPS โดยตรง เหตุใดจึงจำเป็น? ตัวติดตามดังกล่าวสามารถทำหน้าที่เป็นมาตรวัดความเร็วอัตโนมัติหรือมาตรวัดระยะทางอิสระ สามารถวางบนจักรยาน รถยนต์ ของเล่น หรือควอดคอปเตอร์ได้ นอกจากนี้ยังช่วยให้คุณวัดระยะทางเป็นเส้นตรงไปยังจุดที่กำหนดโดยเก็บค่าเป็นศูนย์ไว้ หน่วยความจำไม่ลบเลือน. จดจำค่าความเร็วและระยะทางสูงสุดที่ได้รับ มันทำทั้งหมดนี้โดยอัตโนมัติและไม่ได้ขึ้นอยู่กับใครอื่นนอกจากดาวเทียม และแน่นอนว่านี่คือนาฬิกาบอกเวลาที่แม่นยำ ฉันจำเป็นต้องใช้มันเพื่อวัดความเร็วสูงสุดและระยะห่างสูงสุดจากวัตถุ ถูกต้อง คุณต้องเพิ่มความสูงให้กับหน้าจอเพื่อวัดว่าคุณสูงขึ้นแค่ไหน!
เรามาพูดถึงวิธีลดน้ำหนักกันเถอะ วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการประกอบตัวติดตามบนแพลตฟอร์ม อาร์ดูโน่ โปรมินิที่ 3.3 โวลต์ จากนั้นคุณไม่จำเป็นต้องใช้บูสต์คอนเวอร์เตอร์ แต่จะมี stub เชิงเส้นเล็ก ๆ ที่ 3.3 โวลต์แทนโมดูล GPS ทำงานได้โดยไม่มีปัญหากับแรงดันไฟฟ้านี้และคุณจะต้องข้ามระบบป้องกันกำลังไฟบนหน้าจอ
ฉันจะตอบคำถามทันที: เป็นไปได้ไหมที่จะเพิ่มโมดูล GSM และควบคุมตัวติดตามผ่าน SMS ใช่คุณสามารถ. ในการดำเนินการนี้นอกเหนือจากโมดูลแล้วคุณจะต้องเพิ่มการประมวลผลคำสั่ง SMS ลงในโค้ดโปรแกรมด้วยและควรเป็นโครงการแยกต่างหาก
เพียงเท่านี้สำหรับวันนี้ หากคุณชอบวิดีโอนี้ ฉันแน่ใจว่าคุณจะต้องชอบและแชร์ลิงก์ไปยังวิดีโอกับเพื่อนของคุณ
ขอบคุณที่รับชม ขอให้โชคดีทุกคน และพบกันในวิดีโอใหม่! ลาก่อน!
ข้อมูลจะถูกบันทึกในสเปรดชีต dataGPS.csv ซึ่งมีรูปแบบที่สอดคล้องกับข้อกำหนดของบริการ Google แผนที่ของฉัน.
ภาษาการเขียนโปรแกรม: Arduino (C++)