เป้าหมายของโครงการนี้คือการจัดหาแพลตฟอร์มฮาร์ดแวร์/ซอฟต์แวร์โอเพนซอร์สสำหรับการพัฒนาอย่างรวดเร็วและราคาถูกของโหนดเซ็นเซอร์ Lorawan ประกอบด้วยโมดูล Arduino Pro Mini, โมดูลการสื่อสาร LORA RMF95W, ตัวแปลง Buck DC-DC และส่วนประกอบบางอย่างเพื่อลดความซับซ้อนของการเชื่อมต่อกับเซ็นเซอร์ที่แตกต่างกัน

ดาวน์โหลดที่เก็บและอัปเดต submodules:
$ 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 Code และโครงการทั้งหมดจะพร้อมใช้งาน
คุณต้องสร้างไฟล์. CPP ใหม่ที่คุณใช้รูทีนการสื่อสารด้วยเซ็นเซอร์ หากคุณใช้โครงการต่อไปนี้คุณจะต้องเพิ่มการสื่อสารกับเซ็นเซอร์เท่านั้น ฟังก์ชั่น sensors_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 สภาพแวดล้อมการสร้างใหม่
[env:pro8MHzatmega328_SENSORNAME]
platform = atmelavr
board = pro8MHzatmega328
framework = arduino
build_flags = -DSENS_SENSORNAME
ตอนนี้คุณจะสามารถเลือกสภาพแวดล้อมการสร้างจากรหัส Visual Studio
การกำหนดค่าอุปกรณ์ทำได้ผ่านอินเตอร์เฟสบรรทัดคำสั่ง (CLI) ที่ใช้ในอุปกรณ์
ก่อนอื่นให้เชื่อมต่ออุปกรณ์ของคุณเข้ากับมอนิเตอร์อนุกรม Arduino ผ่าน USB เนื่องจาก Arduino Pro Mini ไม่มีชิป FTDI บนกระดานคุณจะต้องใช้อะแดปเตอร์ USB-TTL ตั้งค่าอัตราการรับส่งข้อมูลเป็น 9600 และเปิดพอร์ตอนุกรมเพื่อสร้างการเชื่อมต่อ สำคัญ: เพื่อลดการใช้พลังงานอุปกรณ์อินเทอร์เฟซอนุกรมจะใช้ได้เพียง 10 นาทีหลังจากการเพิ่มกำลังของอุปกรณ์
| รหัสคำสั่ง | พิมพ์ | คำอธิบาย |
|---|---|---|
| d | R | Deveui - ตัวระบุอุปกรณ์ที่ไม่ซ้ำกัน |
| อี | r/w | Appeui - ตัวระบุที่ไม่ซ้ำกันของแอปพลิเคชัน |
| K | r/w | Appkey - ใช้ใน OTAA เพื่อสร้างคีย์เซสชัน |
ในการใช้ค่าเริ่มต้นผ่านการเปิดใช้งานอากาศ (OTAA) คุณจะต้องลงทะเบียนอุปกรณ์ของคุณด้วยอุปกรณ์ EUI
อุปกรณ์ EUI เป็นที่อยู่เฉพาะที่จัดทำโดยไมโครคอนโทรลเลอร์ ATMEGA328P หากต้องการเรียกคืนสิ่งนี้ให้พิมพ์คอนโซลอนุกรม:
d
ไปที่เครือข่ายสิ่งต่าง ๆ และเปิดแอปพลิเคชันที่คุณต้องการเพิ่มอุปกรณ์และคลิกอุปกรณ์ลงทะเบียน

ตอนนี้เราได้ลงทะเบียนอุปกรณ์แล้วเราสามารถเปิดใช้งานการเชื่อมต่อจากอุปกรณ์ของเราเอง การเปิดใช้งานหมายความว่าอุปกรณ์จะใช้คีย์แอพที่สร้างขึ้นเพื่อเจรจาคีย์เซสชันสำหรับการสื่อสารเพิ่มเติม
ไปที่ภาพรวมอุปกรณ์และคัดลอกแอปพลิเคชัน 8 ไบต์ EUI ตอนนี้คุณต้องส่งคำสั่ง "E" ด้วยค่าที่ได้รับผ่านพอร์ตอนุกรมของอุปกรณ์:
E: 70B3D57ED0038147
ทำซ้ำกระบวนการเดียวกันเพื่อส่งคีย์แอปพลิเคชัน 16 ไบต์:
K: 7B4F7BC85D064898DB39214D7607440E
ตอนนี้รีสตาร์ทอุปกรณ์และจะลงทะเบียนกับเครือข่ายโดยอัตโนมัติ

คีย์เซสชันจะไม่ถูกเก็บไว้ในหน่วยความจำที่ไม่ลบเลือนดังนั้นพวกเขาจะถูกเจรจาใหม่ทุกครั้งที่อุปกรณ์เปิดใช้งาน พฤติกรรมนี้ไม่เหมาะสมที่สุดและจะได้รับการตรวจสอบในรุ่นอนาคต
รับ Gerbers สำหรับการผลิต PCB ที่นี่
| ชื่อ | anmount | คำอธิบาย |
|---|---|---|
| Arduino Pro Mini | 1 | Pro Mini Armega328p 3,3V 8MHz |
| RFM95W | 1 | RFM95W 868-915MHz Lora SX1276 ตัวรับส่งสัญญาณ |
| DC-DC Buck | 1 | 3.3V คงที่เอาต์พุตอินพุต 5V-24V อินพุต |
| ตัวต้านทาน 2.2k | 1 | 2.2K SMD Resistor 0805 |
| ตัวต้านทาน 4.7k | 3 | 4.7K SMD Resistor 0805 |
| ตัวเก็บประจุ 4.7 UF/6.3 V | 1 | 4.7 ตัวเก็บประจุ UF SMD 0805 |
| SMD LED | 1 | LED SMD 0850 |
| สวิตช์จุ่ม | 1 | สลับ 4 พินโลหะ SMD |
| ขั้วสกรู 01x03 | 2 | 3P - PITCH 3.5/3.96 มม. สกรูขั้วต่อขั้วต่อขั้วต่อ PCB |
| ขั้วสกรู 01x02 | 1 | 2P - PITCH 3.5/3.96 มม. สกรูขั้วต่อขั้วต่อขั้วต่อ PCB PCB |
| ตัวเชื่อมต่อ U.FL-R-SMT | 1 | ตัวเชื่อมต่อ U.FL-R-SMT |
| เสาอากาศ 3DBI RP-SMA | 1 | Antenna 3DBI RP-SMA Connector + 21 ซม. SMA MALE/U.FL Cable Pigtail |

