Hot Tub Controller Circuit Board |
The controller is built to mount on top of a Raspberry Pi and does the following:
● Monitor the water temperature
● Turn a circulation pump and heater on to heat the water as needed
● Respond to buttons that increase/decrease the desired temperature
● Respond to buttons that turn the water jets on and off
● Display the current temperature
● Detect various failure modes and place system in safe mode
● Listen for commands from a smart phone app to control hot tub
● Detect various failure modes and place system in safe mode
● Listen for commands from a smart phone app to control hot tub
● Upload data periodically to an Internet of Things service
Temperature monitoring is performed by a waterproof DS18B20 from Adafruit. It uses a simple 1-wire bus to read the data.
The display, also from Adafruit, is a 7-segment LED display and is controlled using an I2C bus.
The device is powered by a 24V DC power supply since the relays on the hot tub are controlled by a 24V signal. A 5V step down regulator provides power to the Raspberry Pi.
Relay Control with LED Indicator |
The push buttons are connected to GPIO inputs which drive interrupts. These require "debounce" conditioning and this is explained in this post.
The Internet of Things support is using ThingSpeak and the method is described in this post. You can see the live data at this URL.
The system also listens on a network socket for incoming commands from a smart phone app that allows me to monitor and control the hot tub remotely. It's actually not an app, rather just a web page designed for a mobile screen. This way it can easily be used by my Android, my wife or son's iPhone, or from any web browser.
Here is a video showing the completed controller in action.
And, yes, I really do keep my hot tub that hot. One advantage of making my own controller is that I am not limited to 104 degrees max.