جدول المحتويات:

مشروع Arduino: اختبار المدى LoRa Module RF1276 لحل تتبع نظام تحديد المواقع العالمي (GPS): 9 خطوات (بالصور)
مشروع Arduino: اختبار المدى LoRa Module RF1276 لحل تتبع نظام تحديد المواقع العالمي (GPS): 9 خطوات (بالصور)

فيديو: مشروع Arduino: اختبار المدى LoRa Module RF1276 لحل تتبع نظام تحديد المواقع العالمي (GPS): 9 خطوات (بالصور)

فيديو: مشروع Arduino: اختبار المدى LoRa Module RF1276 لحل تتبع نظام تحديد المواقع العالمي (GPS): 9 خطوات (بالصور)
فيديو: How to use LoRa Module with Arduino - Range Test - RYLR406 15KM 2024, يوليو
Anonim
مشروع Arduino: اختبار المدى LoRa Module RF1276 لحل تتبع نظام تحديد المواقع العالمي (GPS)
مشروع Arduino: اختبار المدى LoRa Module RF1276 لحل تتبع نظام تحديد المواقع العالمي (GPS)

التوصيل: USB - المسلسل

تحتاج: متصفح كروم

تحتاج: 1 X Arduino Mega

تحتاج: 1 X GPS

تحتاج: 1 × بطاقة SD

تحتاج: 2 X LoRa Modem RF1276

الوظيفة: Arduino أرسل قيمة GPS إلى القاعدة الرئيسية - بيانات المخزن الأساسي الرئيسي في Dataino Server Lora Module: RF1276 طويل المدى للغاية من APPCONWIRELESS LoRa هي تقنية تعديل طيف جديدة وخصوصية تتيح إرسال البيانات بمعدلات بيانات منخفضة للغاية إلى أقصى حد نطاقات طويلة. يؤدي معدل البيانات المنخفض (وصولاً إلى عدد قليل من البايتات في الثانية) وتعديل LoRa إلى حساسية منخفضة جدًا للمستقبل ، مما يعني في هذا الاختبار أكثر من 10 كم.

الخطوة 1: بناء المحطة الأساسية

بناء المحطة الأساسية
بناء المحطة الأساسية
بناء المحطة الأساسية
بناء المحطة الأساسية

اتصال إنترنت بعرض الكمبيوتر ومودم LoRa متصل بمنفذ USB.

طقم سيارة اردوينو ·

الصندوق المتري

Anduino Mega متصل بالمسلسل 2 بجهاز استقبال GPS ، والمسلسل 1 بمودم LoRa. تستخدم بطاقة SD لتخزين البيانات.

الخطوة الثانية: الاختبار الأول

الاختبار الأول
الاختبار الأول

· 10.6 كم على مسار عبر المراكز الحضرية والمعارض وعلى طول الساحل مصنوع من الحلقات

كانت نسبة الاستقبال / الإرسال 321 / 500TX نقطة

نقطة RX

الخطوة 3: إنشاء الواجهة

قم بإنشاء الواجهة
قم بإنشاء الواجهة
قم بإنشاء الواجهة
قم بإنشاء الواجهة

1 - انشاء مشروع جديد LoRa

اضغط على رمز الترس لفتح تكوين المشروع

الخطوة 4: إضافة مقياس

إضافة مقياس
إضافة مقياس

2) افتح شريط تمرير القياس.

· 3) انتقل إلى GPS.

· 4) أضف واحدة إلى المكتب.

الخطوة 5: قم بسحب Gauge GPS وإضافة OpenStreetMap

قم بسحب Gauge GPS وإضافة OpenStreetMap
قم بسحب Gauge GPS وإضافة OpenStreetMap
قم بسحب Gauge GPS وإضافة OpenStreetMap
قم بسحب Gauge 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

اردوينو IDE
اردوينو IDE

· 11) الصق الكود على Arduino IDE

· 12) تعديل الكود أضف هذا السطر في التعريف

الخطوة 9: تفاصيل الترميز

أضف هذا السطر في التعريف

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

//** مكتبة ** //***************************************** **********************************

# تضمين // ++ مكتبة GPS

# تضمين // ++ مكتبة SPI # تضمين

// ++ مكتبة SD //

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

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

// * بطاقة SD متصلة بناقل SPI على النحو التالي:

// ** UNO: MOSI - pin 11، MISO - pin 12، CLK - pin 13، CS - pin 4

// (يمكن تغيير دبوس CS) والدبوس رقم 10 (SS) يجب أن يكون ناتجًا

// ** ميجا: MOSI - pin 51، MISO - pin 50، CLK - pin 52، CS - pin 53

// (يمكن تغيير دبوس CS) والدبوس رقم 52 (SS) يجب أن يكون ناتجًا

// ** Leonardo: الاتصال بـ SPI للأجهزة عبر رأس ICSP

// Pin 4 المستخدم هنا للتوافق مع أمثلة Arduino الأخرى const int chipSelect = 53 ؛

// ++ محدد دبوس SD

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

// ** GPS ** // ******************************************* **********************************

نظام تحديد المواقع TinyGPS ؛ // ++ GPS في المسلسل 2

GPSdump باطل (TinyGPS و GPS) ؛ // ++

منطقي newdataGPS = خطأ ؛ // ++

أضف هذا السطر في الإعداد ()

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

// ** الإعداد التسلسلي لنظام تحديد المواقع العالمي ** // ***************************************** **********************************

Serial2.begin (9600) ؛ // ++

تأخير (1000) ؛ // ++

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

// ** تهيئة SD ** // ****************************************** *********************************

// تأكد من تعيين دبوس تحديد الشريحة الافتراضي على // ++

// ، حتى لو لم تستخدمه: // ++

pinMode (SS ، الإخراج) ؛ // ++

Serial.println (F ("تهيئة بطاقة SD …")) ؛ // ++

// لمعرفة ما إذا كانت البطاقة موجودة ويمكن تهيئتها: // ++

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

Serial.println (F ("البطاقة فشلت ، أو غير موجودة")) ؛ // ++

// لا تفعل أي شيء أكثر من ذلك: // ++

إرجاع؛ // ++

} else {// ++

Serial.println (F ("بطاقة SD على ما يرام")) ؛ // ++

} // ++

أضف هذه الأسطر في حلقة () باطلة

serialEvent2 () ، // ++ استدعاء حدث تسلسلي GPS

أضف رمز SeriaEvent2

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

// ** المسلسل GPS ** // ******************************************** ***********************************

serialEvent2 () باطل {// ++

while (Serial2.available ()) {// ++

char c = Serial2.read () ، // ++

//Serial.print (ج) ؛ // uncomment لرؤية بيانات GPS الأولية // ++

if (gps.encode (c)) {// ++

newdataGPS = صحيح ، // ++

استراحة؛ // uncomment لطباعة البيانات الجديدة على الفور! // ++

} // ++

} // ++

} // ++

إضافة صوت تفريغ GPS

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

// ** تفريغ GPS ** // ****************************************** ***********************************

// ** النطاق الصالح لخط العرض بالدرجات هو -90 و +90. **

// ** خط الطول في النطاق -180 و +180 **

// ** تحديد موقع الشرق والغرب **

//** "123456789 1234567890" **

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

void gpsdump (TinyGPS & GPS) // ++

{ // ++

سنة int // ++

شهر البايت ، اليوم ، الساعة ، الدقيقة ، الثانية ، المئات ؛ // ++

عمر طويل بدون توقيع // ++

gps.f_get_position (& LATGP00 ، & LONGP00 ، & العمر) ؛ // ++

gps.crack_datetime (& السنة ، والشهر ، واليوم ، والساعة ، // ++

& دقيقة ، وثانية ، ومئات ، & العمر) ؛ // ++

خط الطول ، خط الطول ؛ // ++

gps.get_position (& lat ، & lon ، & age) ؛ // ++

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

// ** أنشئ سلسلة لتجميع البيانات للتسجيل: **

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

سلسلة dataString = ""؛ // ++

dataString + = (خط الطول / 100000) ؛ // ++

dataString + = "." ؛ // ++

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

dataString + = "؛" ؛ // ++

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

dataString + = "." ؛ // ++

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

dataString + = "؛" ؛ // ++

dataString + = String (static_cast (day)) ؛ // ++

dataString + = "/" ؛ // ++

dataString + = String (static_cast (month)) ؛ // ++

dataString + = "/" ؛ // ++

dataString + = String (year) ؛ // ++

dataString + = "؛" ؛ // ++

dataString + = String (static_cast (ساعة)) ؛ // ++

dataString + = ":" ؛ // ++

dataString + = String (static_cast (بالدقيقة)) ؛ // ++

dataString + = ":" ؛ // ++

dataString + = String (static_cast (second)) ؛ // ++ // ********************************************** *******************************

// ** حفظ في SD ** // ***************************************** ************************************

// افتح الملف. لاحظ أنه يمكن فتح ملف واحد فقط في كل مرة ، **

// لذا عليك إغلاق هذا قبل فتح الآخر. ** // ************************************************ *****************************

ملف dataFile = SD.open ("gps00.txt" ، FILE_WRITE) ؛ // ++

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

// ** إذا كان الملف متاحًا ، فاكتب إليه: **

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

إذا (ملف البيانات) {// ++

dataFile.println (dataString) ؛ // ++

dataFile.close () ، // ++

} else {// ++

Serial.println (F ("ERROR SD Write")) ؛ // ++

} // ++

}

إذا كنت ترغب في تنزيل الكود ، يرجى زيارة هذه الصفحة.

موصى به: