Aim of HellfirePi is to provide intelligent fully featured controller for my house's heating system. Though the way I'm trying to develop this project should make it easy adaptable to other heating systems configurations as well.
My heating system components:
- wood fueled water boiler
- 800L buffer tank
- radiator system with mixing valve
HellfirePi tasks:
- control fuel burning process by manipulating air intake shutter? using on exhaust pipe thermocouple and water temperature readings
- control heat buffering process
- control radiator circuit through enabling and disabling it's water pump as well as through operating mixing valve
- gather statistics and data for more efficient fuel burning techniques
- provide safety related features like:
- provide failover solutions: water boiling prevention, etc.
- warnings and alerts sent over text messages as well as through dedicated iOS application (long term plan).
Heart of this controller makes Raspberry Pi with several external DB18b20 temperature sensors along with MAX6675 chip connected to thermocouple K on boiler's exhaust pipe that allows measuring temperatures up to 800 degrees Celsius.
Devices controlled (or to be controlled) by this software:
- heating circuit water pump
- heating circuit mixing valve
- boiler circuit water pump
- boiler air intake controlled with servo
+----+-----+-------------------+---------------------------------------------+
|wPi | Phs | Pin name | Used as |
+----+-----+-------------------+---------------------------------------------+
| | 1 | 3.3v | powering 3.3v line |
| | 2 | 5v | not used |
| 8 | 3 | SDA.1 | not used |
| | 4 | 5v | not used |
| 9 | 5 | SCL.1 | not used |
| | 6 | 0v | not used |
| 7 | 7 | 1-wire data line | 1-wire devices (thermal sensors) |
| 15 | 8 | TxD | not used |
| | 9 | 0v | providing GND for 3.3v line |
| 16 | 10 | RxD | not used |
| 0 | 11 | GPIO. 0 | wired to buzzer (makes noise on LOW) |
| 1 | 12 | GPIO. 1 | not used |
| 2 | 13 | GPIO. 2 | not used |
| | 14 | 0v | not used |
| 3 | 15 | GPIO. 3 | servo control line |
| 4 | 16 | GPIO. 4 | not used |
| | 17 | 3.3v | not used |
| 5 | 18 | GPIO. 5 | not used |
| 12 | 19 | MOSI | SPI (thermocouple & analog sensors) |
| | 20 | 0v | not used |
| 13 | 21 | MISO | SPI (thermocouple & analog sensors) |
| 6 | 22 | GPIO. 6 | not used |
| 14 | 23 | SCLK | SPI (thermocouple & analog sensors) |
| 10 | 24 | CE0 | SPI CS for analog sensors |
| | 25 | 0v | not used |
| 11 | 26 | CE1 | SPI CS for thermocouple |
| 30 | 27 | SDA.0 | not used |
| 31 | 28 | SCL.0 | not used |
| 21 | 29 | GPIO.21 | relay 8 |
| 21 | 30 | 0v | not used |
| 22 | 31 | GPIO.22 | relay 7 |
| 26 | 32 | GPIO.26 | not used |
| 23 | 33 | GPIO.23 | relay 6 |
| | 34 | 0v | not used |
| 24 | 35 | GPIO.24 | relay 5 |
| 27 | 36 | GPIO.27 | relay 1 |
| 25 | 37 | GPIO.25 | relay 4 |
| 28 | 38 | GPIO.28 | relay 2 |
| | 39 | 0v | not used |
| 29 | 40 | GPIO.29 | relay 3 |
+----+-----+-------------------+---------------------------------------------+
SPI sensors communication for HellfirePi is realized by https://github.com/frak/php_spi
1-wire sensors readings are provided through W1Server I developed due to significant delay on reading those sensors.
Servo control is realized by ServoBlaster from here: https://github.com/richardghirst/PiBits/tree/master/ServoBlaster
For my setup it's supposed to be launched this way: ./servod --p1pins=15 --min=500us --max=2440us
sudo apt-get install php7.0-dev sudo apt-get install git git clone https://github.com/frak/php_spi cd php_spi phpize ./configure --enable-spi make
... and SPI is outdated so it doesn't work :/
sudo apt-get install dirmngr sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BB761EA8 echo "deb https://deb.berry.volantus.org/ stretch main" | sudo tee -a /etc/apt/sources.list.d/volantus-berry.list sudo apt-get update sudo apt-get install php7.0-berry-spi
sudo apt-get install pigpio
git clone https://github.com/richardghirst/PiBits cd PiBits/Servoblaster/user make sudo make install
git clone https://github.com/CopernicaMarketingSoftware/PHP-CPP.git cd PHP-CPP make sudo make install sudo ln -s /usr/lib/libphpcpp.so.2.1.1 /usr/lib/libphpcpp.so.2.0
sudo raspi-config Enter "interfacing" Enable 1-wire interface
sudo ./hellfire.php install:fix-permissions