該項目的目的是為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文件,其中您可以在其中使用傳感器實現通信例程。如果您使用以下方案,則只需要與傳感器添加通信。 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
要編譯該新傳感器的代碼,您將必須添加到Platform.ini配置文件中一個新的構建環境。
[env:pro8MHzatmega328_SENSORNAME]
platform = atmelavr
board = pro8MHzatmega328
framework = arduino
build_flags = -DSENS_SENSORNAME
現在,您將能夠從Visual Studio代碼中選擇構建環境。
設備配置是通過設備中實現的命令行接口(CLI)完成的。
首先,將您的設備連接到USB上的Arduino串行顯示器。由於Arduino Pro Mini沒有車載FTDI芯片,因此您需要使用USB-TTL適配器。將波特率設置為9600,並打開串行端口以建立連接。重要的是:為了減少設備功耗,串行接口僅在設備電源後10分鐘可用。
| 命令ID | 類型 | 描述 |
|---|---|---|
| d | r | DEVEUI-唯一的設備標識符。 |
| e | r/w | Appeui-應用程序的唯一標識符。 |
| k | r/w | AppKey-在OTAA中用於生成會話密鑰。 |
要使用空氣激活(OTAA)上的默認值,您需要在其設備EUI上註冊設備
EUI設備是由Atmega328p微控制器提供的唯一地址。要檢索這一點,請輸入串行控制台:
d
轉到Things Network,並打開要添加設備的應用程序,然後單擊“註冊設備”。

現在我們已經註冊了設備,我們可以從設備本身激活連接。激活意味著該設備將使用生成的應用程序密鑰來協商會話密鑰以進行進一步通信。
轉到設備概述並複制8個字節應用程序EUI。現在,您必須以通過設備的串行端口獲得的值發送“ E”命令:
E:70B3D57ED0038147
重複相同的過程發送16個字節應用程序密鑰:
K:7B4F7BC85D064898DB39214D7607440E
現在,重新啟動設備,它將自動註冊到網絡。

會話密鑰不會存儲在非易失性存儲器中,因此每次設備供電時都會重新談判它們。這種行為不是最合適的,將在以後的版本中進行審查。
在此處獲取用於PCB製造的Gerbers。
| 姓名 | 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電阻0805 |
| 電阻4.7K | 3 | 4.7K SMD電阻0805 |
| 電容器4.7 UF/6.3 V | 1 | 4.7 UF SMD電容器0805 |
| SMD領導 | 1 | LED SMD 0850 |
| 開關傾角 | 1 | 開關4針金屬SMD |
| 螺釘端子01x03 | 2 | 3P-螺距3.5/3.96mm螺釘PCB端子塊連接器 |
| 螺絲端子01x02 | 1 | 2P-螺距3.5/3.96mm螺釘PCB端子塊連接器 |
| 連接器U.FL-R-SMT | 1 | 連接器U.FL-R-SMT |
| 天線3DBI RP-SMA | 1 | 天線3DBI RP-SMA連接器 + 21cm SMA男性/U.FL辮子電纜 |

