الهدف من هذا المشروع هو توفير منصة للأجهزة/البرمجيات مفتوحة المصدر للتطوير السريع والمنخفض التكلفة لعقد مستشعر Lorawan. وهو يتألف من وحدة Arduino Pro Mini ، ووحدة اتصالات Lora RMF95W ، ومحول Buck DC-DC وبعض المكونات لتبسيط الاتصال بأجهزة استشعار مختلفة.

تنزيل المستودع وتحديث العارض الفرعي:
$ git clone https://github.com/AngelJMC/agriot-sensor-node.git
$ cd agriot-sensor-node
$ git submodule update --init --recursive
.
├── docs # Documentation files
├── firmware # FW source code (Visual Studio Code)
├── hardware # HW design files (Kicad)
إذا كنت ترغب في تعديل الكود المصدري أو برمجة أجهزتك ، يوصى بشدة باستخدام رمز Visual Studio و Platformio البرنامج المساعد. ما عليك سوى فتح دليل "البرامج الثابتة" باستخدام رمز Visual Studio وسيكون المشروع بأكمله جاهزًا للاستخدام.
يجب عليك إنشاء ملف .CPP جديد تقوم فيه بتنفيذ إجراءات الاتصال باستخدام المستشعر. إذا كنت تستخدم المخطط التالي ، فسيتعين عليك فقط إضافة الاتصال مع المستشعر. يتم تنفيذ وظيفة SESSORS_UPDATE () بشكل دوري وبمجرد الانتهاء من عملية الاستحواذ على المستشعر ، يتم إرسال البيانات بواسطة طبقة اتصال Lorawan.
#ifdef SENS_SENSORNAME
#include "protocol.h"
#include "sensors.h"
#include <CayenneLPP.h>
/* Schedule sensore measurement every this senconds */
#define SENSOR_INTERVAL (5*60) //seconds
static osjob_t sensjob;
CayenneLPP lpp(51);
static void sensors_update( osjob_t* j ) {
os_avoidSleep();
/*TO-BE Implemented -- Read sensor*/
float t = readYourSensor();
/* Update Data Frame using Cayennne Library */
lpp.reset();
lpp.addTemperature(1, t); /*Change according your sensor*/
protocol_updateDataFrame( lpp.getBuffer(), lpp.getSize() );
/* Schedule next sensor reading*/
os_setTimedCallback( &sensjob, os_getTime() + sec2osticks(SENSOR_INTERVAL), sensors_update );
Serial.flush();
os_acceptSleep();
}
void sensors_init( ) {
/*TO-BE Implemented -- Init sensor*/
initYourSensor();
/*Schedule the first sensor reading*/
os_setTimedCallback(&sensjob, os_getTime() + sec2osticks(10), sensors_update);
}
#endif
لتجميع رمز هذا المستشعر الجديد ، سيتعين عليك إضافته إلى Platformio.Ini Configuration Pister بيئة بناء جديدة.
[env:pro8MHzatmega328_SENSORNAME]
platform = atmelavr
board = pro8MHzatmega328
framework = arduino
build_flags = -DSENS_SENSORNAME
الآن ستتمكن من تحديد بيئة البناء من رمز Visual Studio.
يتم تكوين الجهاز من خلال واجهة سطر الأوامر (CLI) المنفذة في الجهاز.
أولاً ، قم بتوصيل جهازك بالمراقبة التسلسلية Arduino على USB. نظرًا لأن Arduino Pro Mini لا يحتوي على شريحة FTDI على متن الطائرة ، فستحتاج إلى استخدام محول USB-TTL. قم بتعيين معدل Baud على 9600 وفتح المنفذ التسلسلي لإنشاء اتصال. هام: لتقليل استهلاك طاقة الجهاز ، تتوفر الواجهة التسلسلية فقط لمدة 10 دقائق بعد زيادة طاقة الجهاز.
| معرف الأمر | يكتب | وصف |
|---|---|---|
| د | ص | Deveui - معرف الجهاز الفريد. |
| ه | ص/ث | appeui - معرف فريد للتطبيق. |
| ك | ص/ث | Appkey - يستخدم في OTAA لإنشاء مفاتيح الجلسة. |
لاستخدام الافتراضي على تنشيط الهواء (OTAA) ، ستحتاج إلى تسجيل جهازك بجهازه EUI
الجهاز EUI هو عنوان فريد يوفره متحكم ATMEGA328P. لاسترداد هذا ، اكتب وحدة التحكم التسلسلية:
د
انتقل إلى شبكة الأشياء وافتح التطبيق الذي ترغب في إضافة جهاز والنقر فوق جهاز التسجيل.

الآن بعد أن قمنا بتسجيل الجهاز ، يمكننا تنشيط الاتصال من جهازنا نفسه. يعني التنشيط أن الجهاز سيستخدم مفتاح التطبيق الذي تم إنشاؤه للتفاوض على مفاتيح الجلسة لمزيد من الاتصالات.
انتقل إلى نظرة عامة على الجهاز ونسخ تطبيق 8 بايت EUI. الآن ، يجب عليك إرسال الأمر "E" مع القيمة التي تم الحصول عليها من خلال المنفذ التسلسلي للجهاز:
E: 70B3D57ED0038147
كرر نفس العملية لإرسال مفتاح تطبيق 16 بايت:
K: 7B4F7BC85D064898DB39214D7607440E
الآن ، أعد تشغيل الجهاز وسيقوم بالتسجيل تلقائيًا في الشبكة.

لا يتم تخزين مفاتيح الجلسة في الذاكرة غير المتطايرة ، لذا يتم إعادة التفاوض عليها في كل مرة يتم فيها تشغيل الجهاز. هذا السلوك ليس هو الأنسب ، وسيتم مراجعته في الإصدارات المستقبلية.
الحصول على الجيربرز لتصنيع ثنائي الفينيل متعدد الكلور هنا.
| اسم | anmount | وصف |
|---|---|---|
| Arduino Pro Mini | 1 | PRO MINI ARMEGA328P 3،3V 8MHz |
| RFM95W | 1 | RFM95W 868-915MHz LORA SX1276 TRANSCEIVER |
| DC-DC باك | 1 | 3.3V الإخراج الثابت ، المدخلات 5V-24V |
| المقاوم 2.2 كيلو | 1 | 2.2K SMD Resportor 0805 |
| المقاوم 4.7 كيلو | 3 | 4.7K SMD Resportor 0805 |
| مكثف 4.7 UF/6.3 V | 1 | 4.7 UF SMD مكثف 0805 |
| LED SMD | 1 | LED SMD 0850 |
| تبديل تراجع | 1 | تبديل 4 دبوس المعدن SMD |
| برغي محطة 01x03 | 2 | 3p - الملعب 3.5/3.96mm المسمار ثنائي الفينيل متعدد الكلور موصل كتلة كتلة |
| برغي محطة 01x02 | 1 | 2p - الملعب 3.5/3.96mm المسمار ثنائي الفينيل متعدد الكلور موصل كتلة كتلة |
| موصل U.FL-R-SMT | 1 | موصل U.FL-R-SMT |
| هوائي 3DBI RP-SMA | 1 | هوائي 3DBI RP-SMA موصل + 21 سم SMA الذكور/U.FL Cable |

