433mHz Radio connected pool thermometer

Updated 30 March 2022

I was wanting to know what the water temperature was without having to physically go and check and I was curious about how warm the water would get during a sunny day and how much heat was lost overnight. I am interested in the idea of home automation, so I looked for a solution that was future ready for other sensors and gadgets I might add later. The temperature can now be viewed from any internet device in the house (phone/tablet/pc etc) and data is stored so historical data can be viewed.

Looking at the big picture of me wanting to log/graph the data and want to add further temperature sensors to other areas of my home I settled on the open source MySensors/MyController software solution. The MySensors library takes care of all the radio communication from the sensor to the central controller. While the MyController software is the brains and is responsible for the presentation of the data via a web interface.

The MyController software runs on an RPi using an Arduino board as a Serial Gateway between the software and the 433mhz network. I decided to use a 433mhz radio link for the sensor as I was concerned about range throughout the house and given that the pool temp sensor would be inside the pool skimmer box which is surrounded by concrete, I figured the lower frequency may help.

Step 1 - Parts you'll need for the Sensor module:

I needed the sensor to be small and battery powered so it would fit under the pool skimmer box cover. I chose the Adafruit Feather 32u4 with the RFM69HCW 433mhz radio on board. This board is small and also has a LiPo battery connection on board. The battery voltage is already tied to a pin with double resistors so battery voltage can be monitored without adding any other components.

I chose a 18650 2600mah battery to give the sensor a long runtime between charges. I used a JST-PH connector on the battery to make it plug-in ready with the onboard battery connector of the Feather.

I added a uFL connector and uFL to SMA adapter cable so I could mount a small rubber duck antenna on the project box to ensure a good quality signal.

I decided to make a floating platform for the sensor so it sits on top of the water regardless of the water level. The temperature sensor hangs down into the water through the foam platform and the antenna is always above the water to allow the signal to reach the gateway.

Step 2 - Pins / Wiring the sensor:

433mhz-radio-connected-pool-thermometer-sensor-wiring-diagram

On the waterproof DS18B20 sensor simply connect the Red wire to Vcc, Black to GND and Yellow to any unused digital pin, I used pin 12. Connect an antenna to the antenna pin and plug the battery into the onboard connector. The battery voltage data is already tied to pin 9 so no wiring is required to be able to measure battery voltage from within the sketch.

Step 3 - Writing the Code for the Sensor

I found it beneficial to test my two radios with the LoPowerLabs RFM69 library which has a simple Gateway/Node sketch that sends data back and forth. It was a simple way to know the radio hardware was connected correctly and working before adding the complexities of the MySensor/MyController setup to the sketch.

Libraries Used ( These will need to be loaded into your Arduino IDE)

  • MySensors
  • DallasTemperature
  • OneWireNoResistor (replace the built-in OneWire library in the DallasTemperature library) Using the OneWireNoResistor library meant I didn't have to add a resistor to the sensor as is usually specified.
  • SPI (default library)

I have included a copy of my 'MySensors' sketch for the temperature sensor, just download it below. The code uses the MySenors library to configure the RFM69 radio, communicate with the temp sensor and send the data back to a MyController Gateway. The sensor is programmed to send temp data back every 5 minutes. It also sends back the battery voltage as a percentage which will be displayed in the software.

Step 4 - Parts you'll need for the controller & gateway devices

I could have used another Adafruit Feather for the gateway instead of the UNO and breakout but I already had a UNO so I just added the RFM69HCW breakout to the UNO. The UNO acts as a USB serial gateway, passing messages between the 433mhz RF network and the control software running on the RPI3.

433mhz-radio-connected-pool-thermometer-gateway-controller-wiring-diagram

Step 5 - Software for the Controller

The MyController software can be loaded on any Raspberry Pi. I happened to have an RPi3 so I used that. My RPi3 is loaded with the Raspian OS and I access it remotely using VNC over WiFi allowing the RPi3 to be configured without a monitor/keyboard/mouse attached. This also means the controller/gateway can be located easily in a central part of the house. The MyController software can be downloaded from mycontroller.org - Just follow the instructions in the 'getting started' section on their site.

Make sure you configure the MyController software to start at boot time on the RPi (instructions on mycontroller.org).

Step 6 - Software for the Gateway

I have included my GatewaySerial Sketch. This sketch is very simple sketch taken from the MySensors examples as all the hard work is done for you in the MySensors library. I found I needed to add some code to reset the radio upon boot for the radio to start correctly. I think this requirement is unique to using the RFM69 with MySensors. To be able to reset the radio from the sketch the RST pin has to be connected to an 'Interrupt' pin on the Arduino. Different brands of the board have different pin #s that are interrupt-capable.

433mhz-radio-connected-pool-thermometer-top-down-image

433mhz-radio-connected-pool-thermometer-mycontroller-screenshot

433mhz-radio-connected-pool-thermometer-mycontroller-graphical-view-screenshot

Attachment - Project Files

Have a question? Ask the Author of this guide today!

Please enter minimum 20 characters

Your comment will be posted (automatically) on our Support Forum which is publicly accessible. Don't enter private information, such as your phone number.

Expect a quick reply during business hours, many of us check-in over the weekend as well.

Comments


Loading...
Feedback

Please continue if you would like to leave feedback for any of these topics:

  • Website features/issues
  • Content errors/improvements
  • Missing products/categories
  • Product assignments to categories
  • Search results relevance

For all other inquiries (orders status, stock levels, etc), please contact our support team for quick assistance.

Note: click continue and a draft email will be opened to edit. If you don't have an email client on your device, then send a message via the chat icon on the bottom left of our website.

Makers love reviews as much as you do, please follow this link to review the products you have purchased.