RFX demo project: Automated Roof Ventilation Control System


Intelligent control of in-roof ventilation system to switch on fans only when actually needed (rather than simply being on a 24-hour timer or similar.) Saves on energy use, prolongs fan life.

Photos of the controller deployed in the roof cavity:


I’ve decided to present the project development in stages, starting with a basic, standalone embedded application (stage 1).

Next, we add wireless Internet/LAN networking connectivity via nRF24L01+ modules and the RFX Gateway system, resulting in a simple networked app using a basic TTY terminal text-based user interface (stage 2a).

We then develop a more advanced networked app that features a virtual RTC (real-time clock), courtesy of the RFX Gateway server, and remote data logging using Xively.com (stage 2b).

The final stage in the sketch’s evolution is for it to become to a fully-fledged web app with a web browser user interface, serving HTML web pages wirelessly via an nRF24L01+ radio module through the RFX Gateway system (stage 3a).

Basic controller design — sketch stage 1:

  • Measure the air temperature inside the roof cavity, from which the fans extract air, and also the ambient outside air temperature, from which exchange air will be drawn.
  • If the difference in temperature exceeds some preset threshold (“fans_on_delta”), then the fans are switched on via a relay. Once the difference in temperatures drops below a certain threshold (“fans_off_delta”) the fans turn off again.
  • For a cooling application, fans_off_delta will be less than or equal to  fans_on_delta  (e.g., turn on fans at 5 degrees difference, turn off again at 4 degrees difference). If the thresholds are not equal, the range in between is the “dead band” of control, providing control hysteresis, which is a common design feature used to eliminate over active switching at around the on/off threshold.

Advanced RFXduino-enabled features we will be adding — stages 2 & 3 (RFXduino Gateway required):

  • Wireless Internet/LAN networking connectivity via nRF24L01+ modules and RFXduino Gateway. (stage 2a)
  • A virtual RTC (real-time clock), that needs no additional hardware, and automatically keeps itself synced to the NTP-set time on the gateway server clock. (Every RFX project gets an RTC for free!) (stage 2b)
  • Cloud or gateway server-based data logging (no additional SD card hardware needed) so the control history can be reviewed as time-series graphs (Xively.com needs a UTC/GMT timestamp for updates, provided by the RFX “virtual RTC” in this project.) (stage 2b)
  • A full web browser user interface to allow monitoring the status of the controller, and adjusting of operating parameters configuration (on/off temperature difference thresholds, automatic vs manual on/off control modes, etc.) (stage 3a)