Evaluating Arduino with LoRa

This work was done to see how small, and secondarily power-efficient, an Arduino/LoRa solution can be, as a preparation for education and measurements in the field.

I used a clone (Adafruit Feather 32u4 RFM95), that is software-wise fully compatible with an Arduino and supported by Arduino IDE, including uploading of software, but has slightly more I/O.

The bottom protoboard is just to protect the pins on the Feather board. The blue wire is necessary for LoRa to work at all. The red wire carries the data from the temperature sensor.

To get software support for LoRa I used arduino-lmic, and to support the temperature sensor I used OneWire and Arduino_Temperature_Control_Library.

It works quite well. The main gotcha is that only 15% (out of 32 kbytes) of Flash remains, which is a potential problem, but not for basic use.

The antenna is a half-wave (17 cm) wire, that surprisingly worked as well as a proper antenna.

I got the following results in terms of current draw with 60 second intervals and sleep in between. Note that the board was powered via USB without a battery connected. If powered with 3V3 directly the current draw during sleep could potentially be much lower. No LED was lit except for 1 second during sending.

  • Sleep: 0.2 mA
  • Awake: 4 mA
  • Preparing for LoRa transmission: 10 mA
  • Transmission peak: 130 mA for 70 ms

Measurements were made with an Otii and a USB adapter cable. Overall it spent 7 seconds somehow awake, that could be shortened a bit due to explicit delays. Checking temperature every minute is of course unnecessarily often in real use.

As a graph over time (x: 1 / 4000 seconds, y: Ampere):

I used Sensative Yggio as IoT platform and Abiro IoT for visualizing the data.

The data is jumpy due to forced temperature changes.