Natural gas is widely used in our region for heating of dwellings. Boilers located in the basement heat up the water, convection draws up heated water through system of pipes to heat radiators located up in the house.
Simple yet convinient system has a disappointing draw back. Boiling water which is expanding steam can damage pipeworks.
Reasons for overheating we can handle by monitoring the temperature:
- Insufficient speed of coolant (water) circulation or lack thereof (may be caused by too fast heating up)
- Insufficient amount of coolant in the system (caused by evaporation)
Critical moments are the time when you increase the firing (gas infeed) and when the system is working for quite a long period. That's why boiler temperature monitoring is crucial in preventing damages and heating outage in winter time.
Anyway access to temperatures must be convinient. I don't want to zip around to basement and backwards.
That's how this device appeared. It consists of actually two controllers.
- Arduino with temperature sensors and radio module (tranceiver)
- Arduino nano
- MAX7219 Dot Matrix Module
- 2.4 gHz Wireless tranceiver module NRF24L01+
Tranceiver is checking the temperature every two seconds. These values are transferred to the receiver and displayed in a creeping line. Apart from that both devices sound the alarm in case a temperature threshold is exceeded. In case tranceiver fails the display would show: "No signal from boilers..."
Step 1: Feasibility Study
Now let's calculate. I bought all components from Aliexpress (links in previous step)
Arduino nano x 2 = $4.28
ds18b20 x 2 = $ 2.18
nRF24L01+ x 2 = $ 1.38
buzzer x 2 = $ 0.84
dot led matrix = $ 3.90
TOTAL: $12.58 both controllers without wires and boxes.
Do the expenses worth the problem described? You decide.
Step 2: Wiring the Tranceiver
The connection is simple. Data pins of both temperature sensors are connected to one pin A2 (pin 16) (OneWire library is used). NRF24L01+ module is connected as follows:
Arduino Nano, UNO
SCK — D13
MOSI — D11
MISO — D12
CSN — D10
CE/SS — D9
SCK — D52
MOSI — D51
MISO — D50
CSN — D53
CE/SS — D49
You may use any pins as СЕ and CSN (to be changed in the sketch).
Pay attention to radio module power supply. It is 3.3V!
To enhance the connectivity it is recommended to solder ~100uF capacitor to VCC and GND of the module.
These brilliant radio modules work as wireless modem. What you send is what you receive in digital form!
Since sensors are digital no adjustment or calibration is needed. The buzzer is connected between GND and A1 (pin 15 of Arduino nano).
The controller is powered from simple 5V USB charger.
Step 3: Wiring the Receiver
Radio module NRF24L01+ is connected exactly like the first one. Again, pay attention to radio module power supply. It is 3.3V!
MAX7219 Dot Matrix Module is connected as follows:
CLK - pin 6
CS - pin 7
DIN - pin 8
GND - GND
The buzzer again is connected between GND and A1 (pin 15 of Arduino nano). The controller is powered from media player USB port. It can be powered from power bank although.
Step 4: Programming the Tranceiver
Tranceiver's task is simple. It reads data from sensors, multiplies by 100 (handling integers are much more easier) and puts them to the array of two variables.This array is sent to the receiver.
I used Arduino IDE to upload sketches to Arduino microcontroller. Install Arduino IDE onto your PC. Download libraries enclosed herewith. Add libraries one by one to the Arduino IDE (Main menu: Sketch -> Include library -> Add .zip Library). Connect your Arduino Nano to USB port of our PC. Find out which port it is connected to.
Open the sketch in Arduino IDE, check out the menu: Tools -> port. Upload the sketch to microcontroller. Sketch -> Upload (Ctrl + U).
It's gonna start transmitting the temperature data at once. It is making short sound signals to indicate transmission. In the basement it will bother noone.
Step 5: Programming the Receiver
Receiver is obviously receiving the array and is inserting the values to the pre-prepared strings. In case there's no transmission it picks the string "No signal from boilers..." as the alarm message. If one of the values exceed a threshold of 90° Celcius it sounds the alarm and shows "ALARM!" string as the alarm message along with temperature values.
Upload the sketch NRF24L01_nano_ds18b20_rx_Matrix.ino to your receiver microcontroller. You will need one more library fourMatrix. Arduino will start receiving data at once and displaying it on the led dot matrix.
Since the time I installed this radio thermometer there's no worries about boiler overheating - by one problem less than.