Целью этого проекта является предоставление аппаратной/программной платформы с открытым исходным кодом для быстрого и недорогого развития сенсорных узлов 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
Чтобы скомпилировать код для этого нового датчика, вам придется добавить в файл конфигурации 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 минут после питания устройства.
| Идентификатор команды | Тип | Описание |
|---|---|---|
| Дюймовый | Ведущий | DeVeui - уникальный идентификатор устройства. |
| Эн | R/w | Appeui - уникальный идентификатор приложения. |
| K | R/w | Appkey - используется в OTAA для генерации клавиш сеанса. |
Для использования по умолчанию над активацией воздуха (OTAA) вам нужно будет зарегистрировать свое устройство с помощью его устройства EUI
Устройство EUI - это уникальный адрес, предоставляемый микроконтроллером ATMEGA328P. Чтобы получить это, введите серийную консоль:
Дюймовый
Перейдите в сеть вещей и откройте приложение, в которое вы хотите добавить устройство, и нажмите «Зарегистрируемое устройство».

Теперь, когда мы зарегистрировали устройство, мы можем активировать соединение с самого нашего устройства. Активация означает, что устройство будет использовать сгенерированную клавишу приложения для согласования клавиш сеанса для дальнейшего общения.
Перейдите в обзор устройства и скопируйте 8-байтовое приложение EUI. Теперь вы должны отправить команду «E» со значением, полученным через последовательный порт устройства:
E: 70B3D57ED0038147
Повторите тот же процесс, чтобы отправить ключ приложения 16 байтов:
K: 7B4F7BC85D064898DB39214D7607440E
Теперь перезапустите устройство, и оно автоматически зарегистрируется в сети.

Ключи сеансов не хранятся в нелетучих памяти, поэтому они пересматриваются каждый раз, когда устройство включается. Такое поведение не является наиболее подходящим и будет рассмотрено в будущих версиях.
Получение Gerbers для изготовления печатной платы здесь.
| Имя | Анмант | Описание |
|---|---|---|
| Arduino Pro Mini | 1 | Pro Mini Armega328p 3,3 В 8 МГц |
| RFM95W | 1 | RFM95W 868-915MHZ LORA SX1276 При трансивер |
| DC-DC Buck | 1 | 3,3 В фиксированный выход, вход 5V-24V |
| Резистор 2.2K | 1 | 2.2K SMD резистор 0805 |
| Резистор 4.7K | 3 | 4.7K SMD резистор 0805 |
| Конденсатор 4.7 UF/6,3 В | 1 | 4.7 UF SMD -конденсатор 0805 |
| SMD LED | 1 | Светодиод SMD 0850 |
| Переключить погружение | 1 | Переключить 4 -контактный металл SMD |
| Винт терминал 01x03 | 2 | 3p - шаг 3,5/3,96 мм винтовой печатной платы |
| Винт терминал 01x02 | 1 | 2p - шаг 3,5/3,96 мм винтовой печатной платы |
| Connector U.Fl-R-Smt | 1 | Connector U.Fl-R-Smt |
| Антенна 3DBI RP-SMA | 1 | Антенна 3DBI RP-SMA разъем + 21см SMA SMA SCALTH/U.FL CABLAY CABLE |

