이 프로젝트의 목표는 로라완 센서 노드의 빠르고 저렴한 개발을위한 오픈 소스 하드웨어/소프트웨어 플랫폼을 제공하는 것입니다. 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 Code 및 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
이 새 센서의 코드를 컴파일하려면 플랫폼 오니 오니 구성 파일에 새로운 빌드 환경을 추가해야합니다.
[env:pro8MHzatmega328_SENSORNAME]
platform = atmelavr
board = pro8MHzatmega328
framework = arduino
build_flags = -DSENS_SENSORNAME
이제 Visual Studio Code에서 빌드 환경을 선택할 수 있습니다.
장치 구성은 장치에서 구현 된 명령 줄 인터페이스 (CLI)를 통해 수행됩니다.
먼저 장치를 USB의 Arduino 직렬 모니터에 연결하십시오. Arduino Pro Mini에는 온보드 FTDI 칩이 없으므로 USB-TTL 어댑터를 사용해야합니다. 보드 속도를 9600으로 설정하고 직렬 포트를 열어 연결을 설정하십시오. 중요 : 장치 전력 소비를 줄이기 위해 직렬 인터페이스는 장치 전원을 공급 한 후 10 분 동안 만 사용할 수 있습니다.
| 명령 ID | 유형 | 설명 |
|---|---|---|
| 디 | 아르 자형 | Deveui- 고유 한 장치 식별자. |
| 이자형 | r/w | APPEUI- 응용 프로그램의 고유 식별자. |
| 케이 | r/w | APPKEY- 세션 키를 생성하는 데 OTAA에서 사용됩니다. |
공기 활성화 (OTAA)를 통해 기본값을 사용하려면 장치 EUI로 장치를 등록해야합니다.
장치 EUI는 ATMEGA328P 마이크로 컨트롤러가 제공하는 고유 주소입니다. 이를 검색하려면 직렬 콘솔을 입력하십시오.
디
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 벅 | 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 LED | 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 MALE/U.FL 피그 테일 케이블 |

