Hi,
I have recently been able to spend some time on one of my pet projects: building a home automation system using my Raspberry Pi and GrovePi+.
I have embedded in the GrovePi firmware the RC-Switch library to drive a 433MHz pair of transmitter / receiver.
With this, I can:
-
remotely turn on or off radio-controlled outlet sockets that can commonly be found in hardware stores or supermarkets
-
receive signals from the remote coming with these sockets
There are lots of possible applications with this, like turning on or off lights, fans, portable heaters, etc, without having to mess with relays and high currents/voltages.
My modified version of the firmware is developed here on github, and I will submit a pull request once I will have finished documentation, and the Python library and samples (I will add node.js support after that).
There are however a few points I would like to discuss with the community.
Interrupt registration
The ATMega328 has two interrupt lines, coupled with inputs D2 and D3.
Several sensors require one of these, including both the 433 TX and RX modules, as well as the dust sensor.
The current 1.2.7 firmware during its setup phase registers one of the interrupts for the dust sensor module, even if it is not present:
void setup()
{
// Serial.begin(38400); // start serial for output
Wire.begin(SLAVE_ADDRESS);
Wire.onReceive(receiveData);
Wire.onRequestndData);
attachInterrupt(0,readPulseDust,CHANGE);
}
In my modified version of the firmware, I removed this, and kept only an interrupt registration when one starts the dust sensor module (command 14: enable dust sensor). Does this makes sense for you? I do not have the dust sensor, so I cannot check the impact.
Firmware branch management
Firmware-wise, the git repository is organized with a folder by version.
Wouldn’t it be better to have a ‘master’ folder with the under-development version,and when a version is considered OK for general release, copy its source and the binary to a new folder?
This would make easier to identify changes made from one version to another using git (currently, you have to manually diff files in several folders), and to know on which codebase you should develop when extending the firmware.