该项目的目的是为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辫子电缆 |

