After three months of puzzling , soldering and coding, time has come to share my experiences with the Arduino community.
Components:
Arduino Due based Master module
- Ethernet shield (NTP client + Web server)
- Real Time Clock with Battery backup (DS3231)
- 4 digit display (00:00) TM1637
- Wireless module nRF24L01 for communication with wireless modules
- I2C bus for RT Clock and future sensors
- I2C bus for connecting local slave modules
- 8 x Relay outputs
- 20 x digital inputs
- 8 x 0-10V output for driving dimmers and electronic fluorescent lamp drivers
Arduino Pro Mini based modules on I2C bus (4 of them in our home placed in the wiring closet)
- I2C bus for communication with master
- 8 x Relay outputs
- 8 x digital inputs
Arduino Pro Mini based modules with wireless communication
- nRF24L01 module for communication with master
- mix of PWM outputs (for driving LED), Relay
- ? x digital inputs
- Optional IR Receiver (Remote control)
Modules are receiving config from master and local inputs can switch local output without communicating with master
Software
- Simple communication protocol with CRC / Acknowledgement used for both I2C (Wire) and Wireless (nRF24L01 ) communication. At this moment in multi-master mode. Each module can initiate communication.
- Webserver, serving a status page, logfile, webapplication (HTML5/Javascript) and communicating with Android App (receiving commands and serving status of all outputs)
- Time management: Getting time through NTP, setting / reading RT Clock / getting sunrise/sunset time
- Reading config from SD card (on Ethernet Shield). Config is stored in 5 csv files:
- Modules (type, bus, address, ports)
- Outputs (module, port, type, …)
- Sensors (module, input, type, …)
- Timers (timed operations)
- Logic
- Moods
Apart from the software on the Arduino’s there is some HTML5/javascript code for running on Web clients and a Android App based on same HTML5/javascript code.
More info on: http://ardomo.blogspot.be/
Code is available on GitHub - krunkel/ardomo: Arduino based domotica system
Greetings,
Gert