Remote Sensor (Temperature and Humidity) Monitoring over RF Link

1. Description

The purpose of this project is to build a system that periodically sends sensor data from a remote device (standalone ATmega328 microcontroller) to a central monitoring device (Arduino Uno R3 development board) over a RF link. Some power-saving techniques have been used in order to preserve remote device’s battery life. For the purpose of simplicity, a simple temperature and humidity sensor has been used at the remote device; it could be easily replaced with any other sensor. The simple topology (one remote device to one monitoring device) could be extended (multiple remote devices to a single monitoring device).

Difficulty level: advanced.

Note. The remote device is powered on from an external battery. In order to preserve its battery life, several techniques have been used:

– hardware:

– use of a standalone microcontroller instead of a development board;
– use an efficient switching voltage regulator;
– power on external modules (sensor module) only when needed through a MOSFET;

– software;

– turn off unneeded internal modules;
– disable internal brown-out detection;
– put microcontroller in sleep mode and wake it up only when needed (new reading and transmission).

More details on power-saving techniques: ATmega328P-PU Power Saving (Sleep Mode and Watchdog Timer)

2. Parts

– Monitoring device:

– 1 x Arduino Uno R3;
– 1 x RWS-371 RF Receiver Module (434 MHz);
– Breadboard + wires;

– Remote device:

– 1 x Standalone ATmega328P-PU w Reset Button and LED;
– 1 x DHT11;
– 1 x IRF520NPbF MOSFET transistor;
– 1 x TWS-BS RF Transmitter Module (434 MHz);
– 1 x 9V standard battery (i.e. 6LF22PA);
– 1 x 5V switching power regulator (i.e. S7V7FS)
– Breadboard + wires.

3. Schematics

– Monitoring device:

(click to enlarge)

– Remote device:

(click to enlarge)

4. Assembly (breadboard)

– Monitoring device:

(click to enlarge)

– Remote device:

(click to enlarge)



5. Code

– monitoring_device.ino – to be uploaded into the monitoring device:

– remote_device.ino – to be uploaded into the remote device:

6. Additional resources

Libraries:
– Adafruit Unified Sensor Driver: https://github.com/adafruit/Adafruit_Sensor
– DHT-sensor-library: https://github.com/adafruit/DHT-sensor-library
– RadioHead-1.74: http://www.airspayce.com/mikem/arduino/RadioHead/
– SPI standard library (included with the Arduino IDE)

References:
– RadioHead Packet Radio library for embedded microprocessors:
http://www.airspayce.com/mikem/arduino/RadioHead/
– RF 434MHz ASK Transmitter and Receiver:
https://www.arduinolab.net/rf-434mhz-ask-transmitter-and-receiver/
– Sensor Reading tutorial:
https://www.arduinolab.net/category/tutorials/sensor-reading/
– ATmega328P-PU Power Saving (Sleep Mode and Watchdog Timer):
https://www.arduinolab.net/atmega328p-pu-power-saving-sleep-mode-and-watchdog-timer/


Leave a Reply