สารบัญ:

โครงการ Arduino: ช่วงทดสอบโมดูล LoRa RF1276 สำหรับโซลูชันการติดตามด้วย GPS: 9 ขั้นตอน (พร้อมรูปภาพ)
โครงการ Arduino: ช่วงทดสอบโมดูล LoRa RF1276 สำหรับโซลูชันการติดตามด้วย GPS: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: โครงการ Arduino: ช่วงทดสอบโมดูล LoRa RF1276 สำหรับโซลูชันการติดตามด้วย GPS: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: โครงการ Arduino: ช่วงทดสอบโมดูล LoRa RF1276 สำหรับโซลูชันการติดตามด้วย GPS: 9 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Arduino and LoRa based Automation Project with Feedback message, Lora SX1278 range test 2024, กรกฎาคม
Anonim
โครงการ Arduino: ช่วงทดสอบโมดูล LoRa RF1276 สำหรับโซลูชันการติดตามด้วย GPS
โครงการ Arduino: ช่วงทดสอบโมดูล LoRa RF1276 สำหรับโซลูชันการติดตามด้วย GPS

การเชื่อมต่อ: USB - Serial

ต้องการ: เบราว์เซอร์ Chrome

ต้องการ: 1 X Arduino Mega

ต้องการ: 1 X GPS

ต้องการ: 1 X การ์ด SD

ต้องการ: 2 X โมเด็ม LoRa RF1276

ฟังก์ชัน: Arduino ส่งค่า GPS ไปยังฐานหลัก - เก็บข้อมูลฐานหลักใน Dataino Server Lora Module: RF1276 ระยะไกลพิเศษจาก APPCONWIRELESS LoRa เป็นเทคนิคการมอดูเลตแบบสเปรดสเปกตรัมแบบใหม่ ซึ่งช่วยให้ส่งข้อมูลในอัตราข้อมูลที่ต่ำมากไปยังมาก ช่วงยาว อัตราข้อมูลต่ำ (ลดลงเหลือไม่กี่ไบต์ต่อวินาที) และการมอดูเลต LoRa นำไปสู่ความไวของตัวรับที่ต่ำมาก หมายถึงในการทดสอบนี้หมายถึงมากกว่า 10 กม.

ขั้นตอนที่ 1: สร้างสถานีฐาน

สร้างสถานีฐาน
สร้างสถานีฐาน
สร้างสถานีฐาน
สร้างสถานีฐาน

การเชื่อมต่ออินเทอร์เน็ตแบบกว้างของคอมพิวเตอร์และโมเด็ม LoRa ที่เชื่อมต่อกับพอร์ต USB

ชุดอุปกรณ์ติดรถยนต์ Arduino ·

กล่องเมตริก

Anduino Mega เชื่อมต่อกับซีเรียล 2 กับเครื่องรับ GPS และ Serial 1 ถึงโมเด็ม LoRa การ์ด SD ใช้สำหรับเก็บข้อมูล

ขั้นตอนที่ 2: การทดสอบครั้งแรก

การทดสอบครั้งแรก
การทดสอบครั้งแรก

· 10.6 กม. บนเส้นทางผ่านใจกลางเมือง แกลเลอรี่ และตามแนวชายฝั่งที่สร้างด้วยห่วง

อัตราส่วนการรับ/ส่งสัญญาณอยู่ที่ 321/500TX point

จุด RX

ขั้นตอนที่ 3: สร้างอินเทอร์เฟซ

สร้างอินเทอร์เฟซ
สร้างอินเทอร์เฟซ
สร้างอินเทอร์เฟซ
สร้างอินเทอร์เฟซ

1 - ตั้งค่าโครงการใหม่ LoRa

กดไอคอนฟันเฟืองเพื่อเปิดการกำหนดค่าโครงการ

ขั้นตอนที่ 4: เพิ่มเกจ

เพิ่มเกจ
เพิ่มเกจ

2) เปิดแถบเลื่อนเกจ

· 3) เลื่อนไปที่ GPS

· 4) เพิ่มหนึ่งรายการไปที่โต๊ะทำงาน

ขั้นตอนที่ 5: ลากเกจ GPS และเพิ่ม OpenStreetMap

ลากเกจ GPS และเพิ่ม OpenStreetMap
ลากเกจ GPS และเพิ่ม OpenStreetMap
ลากเกจ GPS และเพิ่ม OpenStreetMap
ลากเกจ GPS และเพิ่ม OpenStreetMap

· 5) เพิ่มแผนที่ OpenStreetMap ไปที่โต๊ะทำงาน

การลากส่วนประกอบ GPS บนแผนที่ไอคอน แผนที่ OpenStreet จะถูกสร้างขึ้น

สร้างอินเทอร์เฟซ

· 6) เปลี่ยนการรีเฟรชแผนที่

เปลี่ยนเวลารีเฟรชแผนที่จาก 5000 เป็น 10000

ขั้นตอนที่ 6: ลากมาตรวัด GPS และเพิ่มบันทึกตาราง

ลากมาตรวัด GPS และเพิ่มบันทึกตาราง
ลากมาตรวัด GPS และเพิ่มบันทึกตาราง

· 7) เพิ่มเกจบันทึกตาราง

โดยการลากเกจเหนือตารางไอคอน GPS จะถูกสร้างขึ้น บันทึกตารางเกจ

· 8) เปลี่ยนการรีเฟรชบันทึกตาราง เปลี่ยนเวลารีเฟรชแผนที่จาก 5000 เป็น 10000

ปรับตำแหน่งเกจ

· 9) ลากเกจปรับตำแหน่งของเกจโดยการลากผ่านหน้าจอ

· 10) บันทึกโครงการ

ขั้นตอนที่ 7: รับรหัส

รับรหัส
รับรหัส

10) เปิดใช้งานคอนเทนเนอร์โค้ด

ปุ่มบนปุ่มขวาบน เลือกทั้งหมด และคัดลอกรหัสฐาน

ขั้นตอนที่ 8: Arduino IDE

Arduino IDE
Arduino IDE

· 11) วางโค้ดบน Arduino IDE

· 12) แก้ไขรหัส เพิ่มบรรทัดนี้ในคำจำกัดความ

ขั้นตอนที่ 9: รายละเอียดการเข้ารหัส

เพิ่มบรรทัดนี้ในคำจำกัดความ

//*************************************************************************

//** ห้องสมุด ** //***************************************** **************************************

#include // ++ ห้องสมุด GPS

#include // ++ ไลบรารี SPI #include

// ++ ไลบรารี SD//

*************************************************************************

//** SD ** //*********************************************** **************************************

// * การ์ด SD ที่แนบมากับบัส SPI ดังนี้:

// ** UNO: MOSI - พิน 11, MISO - พิน 12, CLK - พิน 13, CS - พิน 4

// (CS pin สามารถเปลี่ยนได้) และ pin #10 (SS) ต้องเป็นเอาต์พุต

// ** เมกะ: MOSI - พิน 51, MISO - พิน 50, CLK - พิน 52, CS - พิน 53

// (ขา CS สามารถเปลี่ยนได้) และขา #52 (SS) ต้องเป็นเอาต์พุต

// ** Leonardo: เชื่อมต่อกับฮาร์ดแวร์ SPI ผ่านส่วนหัว ICSP

// Pin 4 ใช้ที่นี่เพื่อให้สอดคล้องกับตัวอย่าง Arduino อื่น ๆ const int chipSelect = 53;

// ++ ตัวเลือกพิน SD

//*************************************************************************

//** จีพีเอส ** //***************************************** **************************************

จีพีเอส TinyGPS; // ++ GPS บน Serial2

เป็นโมฆะ gpsdump (TinyGPS & gps); // ++

บูล newdataGPS = เท็จ; // ++

เพิ่มบรรทัดนี้ในการตั้งค่า ()

//***********************************************************************

//** การตั้งค่าอนุกรม GPS ** //****************************************** **************************************

Serial2.begin(9600); // ++

ล่าช้า (1000); // ++

//***********************************************************************

//** การเริ่มต้น SD ** //********************************************** *************************************

// ตรวจสอบให้แน่ใจว่าตั้งค่าพินการเลือกชิปเริ่มต้นเป็น // ++

// ส่งออก แม้ว่าคุณจะไม่ได้ใช้: // ++

โหมดพิน (SS, เอาต์พุต); // ++

Serial.println(F("กำลังเริ่มต้นการ์ด SD…")); // ++

// ดูว่าการ์ดมีอยู่และสามารถเริ่มต้นได้หรือไม่: // ++

if (!SD.begin(chipSelect)) { // ++

Serial.println(F("การ์ดล้มเหลวหรือไม่มีอยู่")); // ++

// อย่าทำอะไรอีก: // ++

กลับ; // ++

} อื่นๆ { // ++

Serial.println(F("SD การ์ดตกลง")); // ++

} // ++

เพิ่มบรรทัดนี้ใน loop() void

serialEvent2(); // ++ เรียกเหตุการณ์อนุกรม GPS

เพิ่มโค้ด SeriaEvent2

//*************************************************************************

//** GPS serialEvent ** //**************************************** ***************************************

เป็นโมฆะ serialEvent2 () { // ++

ในขณะที่ (Serial2.available ()) { // ++

ถ่าน c = Serial2.read(); // ++

// Serial.print(c); // ไม่ใส่ความคิดเห็นเพื่อดูข้อมูล GPS ดิบ // ++

ถ้า (gps.encode (c)) { // ++

newdataGPS = จริง; // ++

หยุดพัก; // uncomment พิมพ์ข้อมูลใหม่ทันที! // ++

} // ++

} // ++

} // ++

เพิ่มการถ่ายโอนข้อมูล GPS

//*************************************************************************

//** gps dump ** //**************************************** ***************************************

//** ช่วงละติจูดที่ถูกต้องในหน่วยองศาคือ -90 และ +90 **

//** ลองจิจูดอยู่ในช่วง -180 และ +180 **

//**ระบุตำแหน่งทิศตะวันออก-ตะวันตก**

//** "123456789 1234567890" **

//** "000.00000;0000.00000" ** //*************************************************************************

เป็นโมฆะ gpsdump (TinyGPS & gps) // ++

{ // ++

ปี int; // ++

ไบต์เดือน, วัน, ชั่วโมง, นาที, วินาที, ในร้อย; // ++

อายุยืนยาว // ++

gps.f_get_position(&LATGP00, &LONGP00, &age); // ++

gps.crack_datetime(&ปี, &เดือน, &วัน, &ชั่วโมง, // ++

&นาที &วินาที &ร้อย &อายุ); // ++

lat ยาว lon; // ++

gps.get_position(&lat, &lon, &age); // ++

// *********************************************************************

// ** สร้างสตริงสำหรับรวบรวมข้อมูลเพื่อบันทึก: **

// *********************************************************************

สตริง dataString = ""; // ++

dataString += (lat / 100000); // ++

dataString += "."; // ++

dataString += lat - (lat / 100000) * 100000; // ++

dataString += ";"; // ++

dataString += (lon / 100000); // ++

dataString += "."; // ++

dataString += lon - (lon / 100000) * 100000; // ++

dataString += ";"; // ++

dataString += สตริง (static_cast (วัน)); // ++

dataString += "/"; // ++

dataString += String(static_cast(เดือน)); // ++

dataString += "/"; // ++

dataString += สตริง (ปี); // ++

dataString += ";"; // ++

dataString += สตริง (static_cast (ชั่วโมง)); // ++

dataString += ":"; // ++

dataString += สตริง (static_cast (นาที)); // ++

dataString += ":"; // ++

dataString += สตริง (static_cast (วินาที)); // ++ //********************************************** *************************************

//** บันทึกลงใน SD ** //****************************************** ****************************************

// เปิดไฟล์. โปรดทราบว่าสามารถเปิดไฟล์ได้ครั้งละหนึ่งไฟล์เท่านั้น **

// ดังนั้นคุณต้องปิดอันนี้ก่อนที่จะเปิดอีกอัน ** //****************************************************** *********************************

ไฟล์ dataFile = SD.open("gps00.txt", FILE_WRITE); // ++

// ***********************************************************************

// ** หากไฟล์พร้อมใช้งาน ให้เขียนไปที่: **

// ***********************************************************************

ถ้า (dataFile) { // ++

dataFile.println (dataString); // ++

dataFile.close(); // ++

} อื่นๆ { // ++

Serial.println(F("ข้อผิดพลาดในการเขียน SD")); // ++

} // ++

}

หากคุณต้องการดาวน์โหลดรหัส โปรดไปที่หน้านี้

แนะนำ: