Tujuan dari proyek ini adalah untuk menyediakan platform perangkat keras/perangkat lunak open source untuk pengembangan node sensor Lorawan yang cepat dan berbiaya rendah. Ini terdiri dari modul mini Arduino Pro, modul komunikasi LORA RMF95W, konverter Buck DC-DC dan beberapa komponen untuk menyederhanakan koneksi ke berbagai sensor.

Unduh Repositori dan Perbarui 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)
Jika Anda ingin memodifikasi kode sumber atau memprogram perangkat Anda, sangat disarankan untuk menggunakan kode Visual Studio dan plugin PlatformIO. Cukup buka direktori "firmware" dengan kode Visual Studio dan seluruh proyek akan siap untuk digunakan.
Anda harus membuat file .cpp baru di mana Anda menerapkan rutinitas komunikasi dengan sensor. Jika Anda menggunakan skema berikut, Anda hanya perlu menambahkan komunikasi dengan sensor. Fungsi sensors_update () dieksekusi secara berkala dan setelah akuisisi sensor selesai, data dikirim oleh lapisan komunikasi 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
Untuk mengkompilasi kode untuk sensor baru ini, Anda harus menambahkan ke file konfigurasi platformio.ini, lingkungan build baru.
[env:pro8MHzatmega328_SENSORNAME]
platform = atmelavr
board = pro8MHzatmega328
framework = arduino
build_flags = -DSENS_SENSORNAME
Sekarang Anda akan dapat memilih lingkungan build dari kode Visual Studio.
Konfigurasi perangkat dilakukan melalui antarmuka baris perintah (CLI) yang diimplementasikan di perangkat.
Pertama, hubungkan perangkat Anda ke Monitor Serial Arduino melalui USB. Karena Arduino Pro Mini tidak memiliki chip FTDI on-board, Anda perlu menggunakan adaptor USB-TTL. Atur baud rate ke 9600 dan buka port serial untuk membuat koneksi. Penting: Untuk mengurangi konsumsi daya perangkat, antarmuka serial hanya tersedia selama 10 menit setelah power-up perangkat.
| ID Perintah | Jenis | Keterangan |
|---|---|---|
| D | R | Deveui - Pengidentifikasi Perangkat Unik. |
| E | R/w | APPEUI - Identifier Unik dari Aplikasi. |
| K | R/w | Appkey - Digunakan di OTAA untuk menghasilkan kunci sesi. |
Untuk menggunakan default atas aktivasi udara (OTAA) Anda harus mendaftarkan perangkat Anda dengan perangkatnya EUI
Perangkat EUI adalah alamat unik yang disediakan oleh mikrokontroler ATmega328p. Untuk mengambil ini, ketik konsol serial:
D
Buka jaringan Things dan buka aplikasi yang ingin Anda tambahkan perangkat dan klik Daftar Perangkat.

Sekarang kami telah mendaftarkan perangkat, kami dapat mengaktifkan koneksi dari perangkat kami sendiri. Aktivasi berarti bahwa perangkat akan menggunakan tombol APP yang dihasilkan untuk menegosiasikan kunci sesi untuk komunikasi lebih lanjut.
Buka ikhtisar perangkat dan salin EUI aplikasi 8-byte. Sekarang, Anda harus mengirim perintah "e" dengan nilai yang diperoleh melalui port serial perangkat:
E: 70B3D57ED0038147
Ulangi proses yang sama untuk mengirim kunci aplikasi 16 byte:
K: 7B4F7BC85D064898DB39214D7607440E
Sekarang, restart perangkat dan secara otomatis akan mendaftar ke jaringan.

Kunci sesi tidak disimpan dalam memori non-volatile sehingga mereka dinegosiasikan ulang setiap kali perangkat didukung. Perilaku ini bukan yang paling tepat, dan akan ditinjau dalam versi mendatang.
Mendapatkan Gerbers untuk fabrikasi PCB di sini.
| Nama | Anmount | Keterangan |
|---|---|---|
| Arduino Pro Mini | 1 | Pro Mini Armega328p 3,3V 8MHz |
| RFM95W | 1 | RFM95W 868-915MHz Lora SX1276 Transceiver |
| DC-DC Buck | 1 | 3.3V output tetap, input 5V-24V |
| Resistor 2.2k | 1 | 2.2K SMD Resistor 0805 |
| Resistor 4.7k | 3 | 4.7K SMD Resistor 0805 |
| Kapasitor 4.7 UF/6.3 V | 1 | 4.7 UF SMD Capacitor 0805 |
| SMD LED | 1 | LED SMD 0850 |
| Switch Dip | 1 | Switch 4 pin metal SMD |
| Terminal sekrup 01x03 | 2 | 3P - Pitch 3.5/3.96mm sekrup PCB Terminal Block Connector |
| Terminal sekrup 01x02 | 1 | 2p - Pitch 3.5/3.96mm sekrup PCB Terminal Block Connector |
| Konektor u.fl-r-smt | 1 | Konektor u.fl-r-smt |
| Antena 3DBI RP-SMA | 1 | Antena 3DBI RP-SMA Connector + 21cm SMA Pria/U.Fl Kabel Pigtail |

