vrijdag 12 april 2013

Chauffeino: introducing my new pet project...

I recently bought a new room thermostat to replace the old one. With my life becoming more hectic lately, and no fixed routine during the week, the old thermostat which had one program for weekdays and one for weekends was showing its limits. I could either program it frugally and arrive at a cold house some days of the week, or program it for comfort and waste heat on an empty house the other days of the week. Full 7-day individually programmable thermostat to the rescue. And life was good...

Until of course, it wasn't.

See, the new thermostat boasted nice features such as 7-day individual programs. But nobody told me what a royal pain it was to set up. Once you have it set up approximately right, you really don't want to go through that process again if you realize your schedule has suffered another change... Or what about "intelligent start so that it will start earlier on cold mornings"? Never noticed a thing; in fact, if I set it to 20°C at 5am, at exactly 5am I'll hear the relay click.

So yeah... Most people would just put up with that, as they do with most failings of technology. But I just got my Raspberry Pi back and was looking to put it to good use. Already have a computer hooked up to the TV, so a better controller for the central heating was the first thing that came to mind. The goal is to do:
  1. per-room programming so you can heat up different parts of the house at different times
  2. intelligent predictions: the system should learn how long it takes for a room to warm up, given some parameters such as outside temperature, the temperature of the water for the radiators, and the heat demand for the rest of the house perhaps - this means that when I want 22°C at 5am, I'll program 22°C at 5am, which is a lot more intuitive than the classical room thermostat's "but it takes half an hour to warm up, so set it for 4:30" approach
  3. if possible, turn off the central heating unit when heat demand is low enough, but turn it on again in time for the water to have warmed up before the first circuit demands heat
  4. be easy to program
  5. allow dynamic control, either through a web-interface, or later, through an Android app

Looking around, I discovered the Dallas Semiconductor DS18x20 digital thermometer chips, which could be read directly on the Pi as it doesn't have any analog pins. They use the 1-Wire protocol which means you can hang a bunch of 'em on one input pin, and read each and every one of them individually. So you can guess what my first (dumb) idea was: run wires through the whole house, connecting to DS18B20 sensors in every room, all connected to a small Pi which in turn was hooked up to the central heating through a bunch of relays. Thankfully a colleague had some experience wiring his house up with electronics... He politely informed me that this idea wouldn't fly due to electrical interference from other cabling in the walls, even if I'd use all shielded cables.

So back to the drawing board: I needed a way to read those thermometers directly in the room, but somehow report the measurements to the central Pi. Which is when I stumbled upon the Moteino project by Felix Rusu. A Moteino is in essence an Arduino at 1/4 of the footprint, with a built-in wireless RFM12B transceiver. Can you say wireless room thermostat?

  • March 28: order a bunch of components, wait for them to arrive...
  • April 11: after some trouble getting the LCD to display "hello world", we are reading temperatures off a DS18B20, displaying something on an LCD and spewing debug output on the Moteino's serial port:
    Sensor address: 408723415740048
    Temp resolution: 12
    Requesting temperature
    Temperature: 22.44
    Requesting temperature
    Temperature: 22.44
    Requesting temperature
    Temperature: 22.44
    Temp 0: 22.44
    Temp 1: 22.44
    Temp 2: 22.44
    Requesting temperature
    Temperature: 22.44
    Requesting temperature
    Temperature: 22.37
    Requesting temperature
    Temperature: 22.37
    Temp 0: 22.44
    Temp 1: 22.37
    Temp 2: 22.37 
  • April 12: ChauffeIno is born.
At the moment, it doesn't do much. It's just the humble beginnings of a wireless room thermostat. It currently displays the temperature sensor's precision on the LCD, and takes temperature measurements every 20 seconds, which it stores in a buffer so they can be sent to the central unit for processing. But I already have my first customer...

Geen opmerkingen:

Een reactie posten