สารบัญ:
- ขั้นตอนที่ 1: รายการชิ้นส่วน
- ขั้นตอนที่ 2: ระบบย่อย 1: การติดตามตำแหน่ง
- ขั้นตอนที่ 3: การตั้งค่าเซิร์ฟเวอร์
- ขั้นตอนที่ 4: ระบบย่อย 2: การบันทึก Telemetry
- ขั้นตอนที่ 5: การรวมระบบ
- ขั้นตอนที่ 6: สิ่งที่แนบมา
- ขั้นตอนที่ 7: บทสรุป
วีดีโอ: Rocket Telemetry/ตัวติดตามตำแหน่ง: 7 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
โปรเจ็กต์นี้มีวัตถุประสงค์เพื่อบันทึกข้อมูลเที่ยวบินจากโมดูลเซ็นเซอร์ 9 DOF ไปยังการ์ด SD และส่งตำแหน่ง GPS ผ่านเครือข่ายเซลลูลาร์ไปยังเซิร์ฟเวอร์พร้อมกัน ระบบนี้ช่วยให้สามารถพบจรวดได้หากพื้นที่ลงจอดของระบบอยู่นอกเหนือ LOS
ขั้นตอนที่ 1: รายการชิ้นส่วน
ระบบโทรเลข:
1x ATmega328 ไมโครคอนโทรลเลอร์ (Arduino UNO, นาโน)
1x ฝ่าวงล้อม Micro SD -
การ์ด Micro SD 1x - (ขนาดไม่สำคัญว่าฟอร์แมต FAT 16/32) - Amazon Link
1x Gy-86 IMU - Amazon Link
การติดตามตำแหน่ง:
1x ATmega328 ไมโครคอนโทรลเลอร์ (Arduino UNO, Nano) (แต่ละระบบต้องการไมโครคอนโทรลเลอร์ของตัวเอง)
1x โมดูล Sim800L GSM GPRS - Amazon Link
1x ซิมการ์ด (ต้องมีแผนบริการข้อมูล) - https://ting.com/ (คิดค่าบริการเฉพาะสิ่งที่คุณใช้)
1x โมดูล NEO 6M GPS - Amazon LINK
ชิ้นส่วนทั่วไป:
1x3.7v lipo แบตเตอรี่
ตัวแปลง step-up 1x 3.7-5v (ถ้าคุณไม่สร้าง pcb)
1x Raspberry pi หรือคอมพิวเตอร์เครื่องใดก็ได้ที่สามารถโฮสต์เซิร์ฟเวอร์ php ได้
- การเข้าถึงเครื่องพิมพ์ 3 มิติ
-BOM สำหรับ pcb แสดงอยู่ในสเปรดชีต
-Gerbers อยู่ที่ github repo -
ขั้นตอนที่ 2: ระบบย่อย 1: การติดตามตำแหน่ง
การทดสอบ:
เมื่อคุณมีชิ้นส่วนสำหรับระบบ (NEO-6M GPS, Sim800L) อยู่ในมือแล้ว คุณต้องทดสอบการทำงานของระบบอย่างอิสระ คุณจะได้ไม่ต้องปวดหัวกับการพยายามคิดว่าอะไรใช้ไม่ได้เมื่อคุณรวมระบบเข้าด้วยกัน
การทดสอบ GPS:
ในการทดสอบเครื่องรับ GPS คุณสามารถใช้ซอฟต์แวร์ที่ Ublox ให้มา (ซอฟต์แวร์ U-Center)
หรือแบบร่างการทดสอบที่เชื่อมโยงใน github repo (การทดสอบ GPS)
1. ในการทดสอบด้วยซอฟต์แวร์ U-center เพียงเสียบตัวรับสัญญาณ GPS ผ่าน USB และเลือกพอร์ต com ใน U-center ระบบจะเริ่มติดตามตำแหน่งของคุณโดยอัตโนมัติหลังจากนั้น
2. ในการทดสอบด้วยไมโครคอนโทรลเลอร์ ให้อัปโหลดภาพร่างการทดสอบ GPS ไปยัง Arduino ผ่าน IDE จากนั้นเชื่อมต่อ 5V และ GND กับพินที่ติดฉลากบนตัวรับสัญญาณเข้ากับพิน Arduino และ GPS RX กับพินดิจิตอล 3 และ TX กับดิจิตอล 4 บน Arduino ในที่สุดก็เปิดมอนิเตอร์แบบอนุกรมบน arduino IDE และตั้งค่าอัตราบอดเป็น 9600 และตรวจสอบว่าพิกัดที่ได้รับนั้นถูกต้อง
หมายเหตุ: ตัวระบุภาพของล็อคดาวเทียมบนโมดูล NEO-6M คือไฟ LED สีแดงจะกะพริบทุก ๆ สองสามวินาทีเพื่อระบุการเชื่อมต่อ
การทดสอบ SIM800L:
ในการทดสอบโมดูลเซลลูลาร์ คุณจะต้องลงทะเบียนซิมการ์ดกับแผนข้อมูลที่ใช้งานอยู่ ฉันแนะนำ Ting เพราะพวกเขาคิดค่าใช้จ่ายเฉพาะสิ่งที่คุณใช้แทนแผนข้อมูลรายเดือน
เป้าหมายสำหรับโมดูล Sim คือการส่งคำขอ HTTP GET ไปยังเซิร์ฟเวอร์พร้อมตำแหน่งที่เครื่องรับ GPS ได้รับ
1. ในการทดสอบโมดูลเซลล์ ให้ใส่ซิมการ์ดลงในโมดูลโดยหันด้านลบมุมออก
2. เชื่อมต่อโมดูลซิมกับ GND และแหล่ง 3.7-4.2v ห้ามใช้ 5v!!!! โมดูลไม่สามารถทำงานที่ 5v เชื่อมต่อ Sim module RX กับ Analog 2 และ TX กับ Analog 3 บน Arduino
3. อัปโหลดแบบร่างการส่งผ่านข้อมูลแบบอนุกรมจาก GitHub เพื่อให้สามารถส่งคำสั่งไปยังโมดูลเซลล์ได้
4. ทำตามบทช่วยสอนนี้ หรือดาวน์โหลดรุ่นทดลองของ AT Command Tester เพื่อทดสอบฟังก์ชัน HTTP GET
การดำเนินการ:
เมื่อคุณตรวจสอบแล้วว่าทั้งสองระบบทำงานแยกกัน คุณสามารถอัปโหลดภาพร่างแบบเต็มไปยังไมโครคอนโทรลเลอร์ github ได้ คุณสามารถเปิดมอนิเตอร์แบบอนุกรมที่ 9600 baud เพื่อตรวจสอบว่าระบบกำลังส่งข้อมูลไปยังเว็บเซิร์ฟเวอร์
*อย่าลืมเปลี่ยน IP ของเซิร์ฟเวอร์และพอร์ตเป็นของคุณเอง และอย่าลืมค้นหา APN สำหรับผู้ให้บริการเซลล์ที่คุณใช้อยู่
ย้ายไปยังขั้นตอนถัดไปที่เราตั้งค่าเซิร์ฟเวอร์
ขั้นตอนที่ 3: การตั้งค่าเซิร์ฟเวอร์
ในการตั้งค่าเซิร์ฟเวอร์เพื่อแสดงตำแหน่งของจรวด ฉันใช้ raspberry pi เป็นโฮสต์ แต่คุณสามารถใช้คอมพิวเตอร์เครื่องใดก็ได้
ทำตามบทช่วยสอนนี้เกี่ยวกับการตั้งค่า lightphp บน RPI จากนั้นคัดลอกไฟล์ php จาก github ไปไว้ในโฟลเดอร์ /var/www/html ของ RPI หลังจากเพียงแค่ใช้คำสั่ง
sudo service lighttpd บังคับโหลดซ้ำ
เพื่อโหลดเซิร์ฟเวอร์ใหม่
ตรวจสอบให้แน่ใจว่าได้ส่งต่อพอร์ตที่เกี่ยวข้องกับเซิร์ฟเวอร์บนเราเตอร์ของคุณ เพื่อให้คุณสามารถเข้าถึงข้อมูลได้จากระยะไกล บน rpi ควรเป็นพอร์ต 80 และพอร์ตภายนอกสามารถเป็นหมายเลขใดก็ได้
เป็นความคิดที่ดีที่จะตั้งค่า ip แบบคงที่สำหรับ RPI เพื่อให้พอร์ตที่คุณส่งต่อชี้ไปที่ที่อยู่ของ RPI เสมอ
ขั้นตอนที่ 4: ระบบย่อย 2: การบันทึก Telemetry
โปรแกรม telemetry ทำงานบนไมโครคอนโทรลเลอร์แยกจากระบบติดตามตำแหน่ง การตัดสินใจนี้เกิดขึ้นเนื่องจากข้อจำกัดด้านหน่วยความจำใน ATmega328 ทำให้ทั้งสองโปรแกรมไม่สามารถทำงานบนระบบเดียวได้ ไมโครคอนโทรลเลอร์อีกทางเลือกหนึ่งที่มีข้อมูลจำเพาะที่ปรับปรุงแล้วสามารถแก้ไขปัญหานี้และอนุญาตให้ใช้โปรเซสเซอร์กลางตัวเดียวได้ แต่ฉันต้องการใช้ชิ้นส่วนที่มีอยู่เพื่อให้ใช้งานง่าย
คุณสมบัติ: โปรแกรมนี้อิงจากตัวอย่างอื่นที่ฉันพบทางออนไลน์ที่นี่
- โปรแกรมอ่านค่าความสูงสัมพัทธ์โดยกำเนิด (การอ่านระดับความสูงเป็นศูนย์เมื่อเริ่มต้น) อุณหภูมิ ความดัน การเร่งความเร็วในทิศทาง X (คุณจะต้องเปลี่ยนทิศทางของการอ่านความเร่งตามการวางแนวทางกายภาพของเซ็นเซอร์) และการประทับเวลา (เป็นมิลลิวินาที).
- เพื่อป้องกันไม่ให้ข้อมูลถูกบันทึกขณะนั่งอยู่บนแท่นยิงจรวดและสิ้นเปลืองพื้นที่จัดเก็บ ระบบจะเริ่มเขียนข้อมูลเมื่อตรวจพบการเปลี่ยนแปลงระดับความสูงเท่านั้น (กำหนดค่าได้ในโปรแกรม) และจะหยุดเขียนข้อมูลเมื่อตรวจพบว่าจรวดกลับสู่สภาพเดิม ระดับความสูง หรือหลังจากเวลาบินผ่านไป 5 นาที
- ระบบจะแจ้งว่าเปิดเครื่องและเขียนข้อมูลผ่านไฟ LED แสดงสถานะเพียงดวงเดียว
การทดสอบ:
ในการทดสอบระบบก่อนอื่นให้เชื่อมต่อการ์ด SD ฝ่าวงล้อม
การ์ด SD Arduino
พิน 4 ---------------- CS
พิน 11 -------------- DI
พิน 13 -------------- SCK
พิน 12 -------------- DO
ตอนนี้เชื่อมต่อ GY-86 กับระบบผ่าน I^2C
Arduino GY-86
ปักหมุด A4 -------------- SDA
พิน A5 -------------- SCL
พิน 2 ---------------- INTA
ในการ์ด SD ให้สร้างไฟล์ในไดเร็กทอรีหลักที่ชื่อ datalog.txt ซึ่งเป็นที่ที่ระบบจะเขียนข้อมูลลงไป
ก่อนอัปโหลดภาพร่าง Data_Logger.ino ไปยังไมโครคอนโทรลเลอร์ ให้เปลี่ยนค่า ALT_THRESHOLD เป็น 0 ดังนั้นระบบจะละเว้นระดับความสูงสำหรับการทดสอบ หลังจากอัปโหลดแล้ว ให้เปิดมอนิเตอร์แบบอนุกรมที่ความเร็ว 9600 บอดเพื่อดูเอาต์พุตของระบบ ตรวจสอบให้แน่ใจว่าระบบสามารถเชื่อมต่อกับเซ็นเซอร์ได้ และข้อมูลกำลังเขียนลงในการ์ด SD ถอดปลั๊กระบบและใส่การ์ด SD ลงในคอมพิวเตอร์ของคุณเพื่อตรวจสอบว่ามีการเขียนข้อมูลบนการ์ด
ขั้นตอนที่ 5: การรวมระบบ
หลังจากตรวจสอบแล้วว่าแต่ละส่วนของระบบทำงานในรูปแบบเดียวกับที่ใช้กับ PCB หลัก ก็ถึงเวลารวบรวมทั้งหมดและเตรียมพร้อมสำหรับการเปิดตัว! ฉันได้รวมไฟล์ Gerbers และ EAGLE สำหรับ PCB และแผนผังใน github คุณจะต้องอัปโหลด gerbers ไปยังผู้ผลิตเช่น OSH park หรือ JLC เพื่อผลิต กระดานเหล่านี้เป็นสองชั้นและมีขนาดเล็กพอที่จะใส่ลงในประเภทผู้ผลิตส่วนใหญ่ 10 ซม. x 10 ซม. สำหรับบอร์ดราคาถูก
เมื่อคุณได้บอร์ดคืนจากการผลิตแล้ว ก็ถึงเวลาประสานส่วนประกอบทั้งหมดที่พบในสเปรดชีตและรายการชิ้นส่วนเข้ากับบอร์ด
การเขียนโปรแกรม:
หลังจากบัดกรีทุกอย่างแล้ว คุณจะต้องอัปโหลดโปรแกรมไปยังไมโครคอนโทรลเลอร์สองตัว เพื่อประหยัดเนื้อที่ของบอร์ด ฉันไม่ได้รวมฟังก์ชัน USB ใด ๆ ไว้ แต่ปล่อยให้ ICSP และพอร์ตอนุกรมแตกออก เพื่อให้คุณยังสามารถอัปโหลดและตรวจสอบโปรแกรมได้
- ในการอัปโหลดโปรแกรม ให้ทำตามบทช่วยสอนนี้เกี่ยวกับการใช้บอร์ด Arduino เป็นโปรแกรมเมอร์ อัปโหลด SimGpsTransmitter.ino ไปยังพอร์ต ICSP_GPS และ Data_Logger.ino ไปยังพอร์ต ICSP_DL (พอร์ต ICSP บน PCB เป็นรูปแบบเดียวกับที่พบในบอร์ด Arduino UNO มาตรฐาน)
-
เมื่ออัปโหลดโปรแกรมทั้งหมดแล้ว คุณสามารถจ่ายไฟให้กับอุปกรณ์จากอินพุตแบตเตอรี่ด้วย 3.7-4.2V และใช้ไฟแสดงสถานะ 4 ดวงเพื่อตรวจสอบว่าระบบทำงานอยู่
- ไฟสองดวงแรก 5V_Ok และ VBATT_OK ระบุว่าแบตเตอรี่และราง 5v ได้รับพลังงานแล้ว
- ไฟดวงที่สาม DL_OK จะกะพริบทุกๆ 1 วินาทีเพื่อระบุว่าการบันทึกการส่งข้อมูลทางไกลทำงานอยู่
- SIM_Transmit ไฟสุดท้ายจะเปิดขึ้นเมื่อเชื่อมต่อโมดูลเซลลูลาร์และ GPS และข้อมูลจะถูกส่งไปยังเซิร์ฟเวอร์
ขั้นตอนที่ 6: สิ่งที่แนบมา
จรวดที่ฉันออกแบบโครงการนี้มีเส้นผ่านศูนย์กลางภายใน 29 มม. เพื่อป้องกันอุปกรณ์อิเล็กทรอนิกส์และอนุญาตให้ประกอบเข้ากับร่างกายทรงกระบอกของจรวด ฉันทำเคสพิมพ์ 3 มิติสองส่วนแบบง่าย ๆ ที่ยึดเข้าด้วยกันและมี ดูพอร์ตสำหรับไฟแสดงสถานะ ไฟล์ STL สำหรับการพิมพ์และไฟล์.ipt ดั้งเดิมอยู่ใน github repo ฉันไม่ได้จำลองสิ่งนี้เนื่องจากฉันไม่แน่ใจว่าจะใช้แบตเตอรี่ในขณะนั้น แต่ฉันได้สร้างช่องสำหรับแบตเตอรี่ 120 mAh ด้วยตนเองเพื่อให้พอดีกับด้านล่างของเคส แบตเตอรี่นี้คาดว่าจะให้รันไทม์สูงสุด ~45 นาทีสำหรับระบบที่การใช้พลังงาน ~ 200mA (ขึ้นอยู่กับการใช้โปรเซสเซอร์และการใช้พลังงานสำหรับการส่งข้อมูล SIM800L ถูกเสนอให้ดึงขึ้น 2A ในการระเบิดระหว่างการสื่อสาร)
ขั้นตอนที่ 7: บทสรุป
โปรเจ็กต์นี้เป็นการใช้งานสองระบบที่แยกจากกันค่อนข้างตรงไปตรงมา เนื่องจากฉันเพิ่งใช้โมดูลที่ไม่ต่อเนื่องที่พบใน Amazon การผสานรวมระบบโดยรวมค่อนข้างไม่สดใสนัก เนื่องจากขนาดโดยรวมของโปรเจ็กต์ค่อนข้างใหญ่สำหรับสิ่งที่ทำ เมื่อพิจารณาถึงข้อเสนอจากผู้ผลิตบางราย การใช้ SIP ที่มีทั้งระบบเซลลูลาร์และ GPS จะลดขนาดแพ็คเกจโดยรวมลงอย่างมาก
ฉันแน่ใจว่าหลังจากทำการทดสอบเที่ยวบินเพิ่มเติมแล้ว ฉันจะต้องทำการแก้ไขบางอย่างในโปรแกรม และจะต้องแน่ใจว่าได้อัปเดต Github repo ด้วยการเปลี่ยนแปลงใดๆ
หวังว่าคุณจะสนุกกับโครงการนี้ อย่าลังเลที่จะติดต่อฉันเกี่ยวกับคำถามใดๆ ที่คุณอาจมี
แนะนำ:
2d Rocket Landing Sim: 3 ขั้นตอน
2d Rocket Landing Sim: คุณจะต้องสร้างฉากหลัง วาดจรวด และตัวบ่งชี้เพื่อเริ่มต้น (แน่นอนว่าคุณต้องมีการเชื่อมต่ออินเทอร์เน็ตเพื่อใช้ scratch) หากคุณต้องการเล่นเกมจำลอง คลิกที่นี่ หรือ ไปที่ https://scratch.mit.edu/projects/432509470
Rocket Launcher ที่ควบคุมด้วยเสียงของ Alexa: 9 ขั้นตอน (พร้อมรูปภาพ)
Rocket Launcher ที่ควบคุมด้วยเสียงของ Alexa: เมื่อใกล้ถึงฤดูหนาว มาถึงช่วงนั้นของปีที่มีการเฉลิมฉลองเทศกาลแห่งแสงสี ใช่ เรากำลังพูดถึง Diwali ซึ่งเป็นเทศกาลของอินเดียที่แท้จริงซึ่งมีการเฉลิมฉลองทั่วโลก ปีนี้ Diwali จบลงแล้ว และพบกับผู้คน
RC Plane Altimeter (เข้ากันได้กับ Spektrum Telemetry): 7 ขั้นตอน
RC Plane Altimeter (เข้ากันได้กับ Spektrum Telemetry): ฉันสร้างเครื่องวัดระยะสูงนี้เพื่อให้นักบินรู้ว่ามันอยู่ใต้ขีดจำกัด 400 ฟุตบนเครื่องบิน RC ในสหรัฐอเมริกา เพื่อนของฉันเป็นกังวลเพราะเขาไม่สามารถพูดได้อย่างแน่นอนว่าเขาอยู่ต่ำกว่า 400 ฟุตเสมอ และต้องการการรับรองเพิ่มเติมว่าเซ็นเซอร์พร้อม
Rocket Nightlight: 4 ขั้นตอน
Rocket Nightlight: ผู้ใหญ่ที่ทำงานได้ดีทุกคนต้องการไฟกลางคืน และเรากำลังสร้างไฟกลางคืนที่เปิดใช้การสัมผัสและธีมอวกาศ
NRF24 Two-Way Radio for Telemetry: 9 ขั้นตอน (พร้อมรูปภาพ)
NRF24 Two-Way Radio for Telemetry: สวัสดีทุกคน ฉันชื่อ Pedro Castelani และฉันกำลังนำคำแนะนำแรกของฉันมาให้คุณ: การสร้างวิทยุสองทางด้วย Arduino สำหรับสิ่งที่คุณต้องการ ในโครงการนี้ เราจะทำ วงจรแยกสองวงจรซึ่งจะทำหน้าที่เป็นทั้งตัวรับและส่งสัญญาณ