User Tools

Site Tools



Distributed sensor and actuator network using a CAN-bus.


Status: In progress.

Date Comment
2007-07-26 Added exp-ethernet photo.
2006-10-01 Project created.


A home automation system to monitor and control my apartment. The system base is a CAN-bus with different nodes with sensors and/or acuators communicating with eachother.


The bus is a standard CAN-bus with an additional 12V supply powering all nodes. Almost all nodes are using a base node with an additonal application specific expansion card. All nodes has a bootloader so the software can be updated over the CAN-bus. See canBootloader for more info.

CanNode - base node canNode. This is the base node. It is build up around a Microchip 18F2685 CAN microcontroller, has a 2551 CAN transceiver, a 5V regulator, two micromatch CAN-bus connectors and a ICSP-contact.

The following nodes are or are going to be on the bus:

CanTemp canTemp. Uses canNode. Messaures temperature outside and inside the apartment. Can also turn the blind of my top right window.

CanTemp - close up Another view of the servo/blind connection.

canFreezer: Uses canBase. Messaures temperature in the freezer and refrigerator and monitors if the freezer and refrigerator doors are open or closed. Status: Software done. Schematic done. Todo: Expansion card.

canLCD: Uses canNode. Control panel next to the outer door. Messaures temperature outside and if the outer door is open or closed. Also has a 128×64 graphical LCD which displays different sensor values and where things like light and blind can be controlled (all acuators on the bus). Status: Software done. Schematic done. Todo: Expansion card.

canIR: Uses canNode. Receives command from a remote control using the RC5, RC5-E or RC6 protocol. Can control all acutators on the bus. Status: Software done. Schematic done (connect a IR-receiver to a canNode basicly). Has a working prototype on breadboard. Todo: Expansion card.

canIRtrans: Uses canNode. Send IR-commands to systems like TV, surround receiver, etc. Todo: Software, schematic and Expansion card.

canDimmer: Uses canNode or application specific node. Can dim 230V lights like regular light bulbs, halogen, etc. Todo: Schematic, software (has an old from lightDimmer that can be used), and maybe expension card.

canToSerial: Uses canNode. Works like a wrapper between the bus and RS232 for montioring and controlling the nodes from a computer. Status: Software done. Schematic done. Has a working prototype on breadboard. Todo: Expansion card.

CanEthernet canEthernet: Uses canNode. Works like a wrapper between the bus and internet (TCP/UDP) for controlling the nodes from internet and mobile phone.

Future nodes, only abstract ideas so far.

canBed: Node that messaures the weight of the bed. By analyzing the weight changes in the bed it's possible to see eg. how much a person turns during the night.

canVoice: Voice recognition node. Makes it possible to control all actuators using voice commands.


There is no PC control software yet, but there is a couple of monitoring/debug applications. All written in C#.

canWatcher canWatcher. Can send and receive CAN-packets.

canWatcherLight canWatcherLight. Same as canWatcher, but a light version.

canBootloader canBootloader. See canBootloader for more info.


canNode - schematic canNode schematic.

canNode - PCB canNode PCB.

canEthernet - Schematic canEthernet schematic.

canEthernet - PCB canEthernet PCB.

canFreezer - Schematic canFreezer schematic.

canLCD - Schematic canLCD schematic.

canTemp - Schematic canTemp schematic.


Code is written in C18 v 3.10 using MPLAB v 7.52.


Latest source code and schematic/PCB-layout can be found in repository
/software/trunk/PC/can* ,
/software/trunk/Embedded/CAN/ and
/hardware/trunk/schematics/piCAN/ in SVN.


All information found on this page are licensed. See the license page for more information.

hardware/homeautomation.txt · Last modified: 2010/07/15 05:11 (external edit)