After looking for a already implemented solution for getting data from remote sensors, I decided to build my own solution, using existing components like Arduino, Raspberry Pi and especially I was interested on using the low cost RFM69W LoRa module.
My other target was to send the data to my own MySQL server instead of using third-party parterns like TTN.
And how it works? Basically it consist of two parts: sensors and gateway.
Sensor
It uses an Arduino Mini Pro 3.3V – 8MHz version as a processing core. It remains on deep-sleep mode, consuming less than 5 micro amperes and it wakes up every 10 minutes, sends data during few seconds, and sleep again. This strategy allows the sensor to be powered from 2 standard AA batteries and having an autonomy longer than a year.
The RFM69W module is connected to the Arduino using SPI and few control signals:
Arduino Mini PRO | LoRa RFM69W module |
10 – SLAVE SELECT | NNS |
11 – MOSI | MOSI |
12 – MISO | MISO |
13 – SCK | SCK |
A0 – RESET | RESET |
2 – DIO0 | DIO0 |
7 – DIO1 (not used) | DIO1 |
8 – DIO2 (not used) | DIO2 |
It also contains a Adafruit Si7020 temerature & humidity sensor, connected via I2C to the Arduino (I removes and bridged transistors of this module to work at 3.3V)
Gateway
The gateway is mostly a Rasperry Pi connected to a RFM69 module using SPI and control signals This is the pinout:
Raspberry Pi (BCM numeration) | LoRa RFM69 module |
9 – MISO | MISO |
10 – MOSI | MOSI |
11 – SCK | SCK |
8 | NSS |
25 | DIO0 |
22 | RESET |
23 | EXTERNAL LED (not in module) |
TODO: Write about software and firmware