This project idea originally came when I realized that I could make a remote temperature sensor node to monitor the greenhouse in my family's garden. The greenhouse would have to be opened in hot weather to prevent the plants from overheating inside, and closed in colder weather to increase the temperature. Around the same time I was dissecting some "broken" solar garden lights and analysing their internal circuits and contemplating adding a microcontroller and sensors to them. I started to think that IR communication could work, and they could aim at an IR receiver in my window facing the garden, but that was a bit of a stretch. Later I decided to buy some cheap nRF24L01+ modules on ebay, and realized that those would work much better for this project.
The main form of the system will be multiple sensor nodes with wireless modules within hacked solar garden lights, one in the greenhouse, and a central hub/base station that will receive and transmit to all the nodes. The base station is the most flexible device design currently, as it may be a Raspberry Pi, BeagleBone, or an embedded system based on an STM32, MSP430, AVR, or other MCU connected to the linux box. The Linux-based computer will serve a web page on the LAN/intranet which will show sensor stats, logged data, and provide an interface for controlling various things such as the greenhouse flap or even a sprinkler.
The system design document:
video:
Currently, the prototype code and sensor node is designed to put the nRF24L01+ and MSP430 mcu into sleep and periodically wake up and gather sensor data, then transmit it to the receiver. I will likely change this later, and have the nodes stay asleep and wait for a signal from the base station to tell them to transmit data, so they need only wake up when the base station needs the data, and not every 100ms or so. The Greenhouse node prototype is using the MSP430's internal temperature sensor and calibration data for pretty accurate measurement, in addition it gathers Relative Humidity values from the frequency output of a 555 timer circuit and HS1101LF relative humidity to capacitance sensor. The timer and it's interrupts used for measuring the frequency are only activated when in use to save power, LPM0 is used between interrupts in the measurement time, and LPM3 when waiting for wakeup by watchdog timer. Right now I am still trying to optimize the low power current usage as much as possible by using the nRF24L01+ sleep modes whenever I can.
picture of breadboarded Greenhouse node prototype, with humidity sensor board connected:
picture of simplified diagram of Greenhouse node:
Here is a screen-shot of the Humidty Sensor circuit schematic (from board docs, but is also in HS1101 datasheet):
When done with all code and testing within this repository:
https://github.com/emdarcher/msp430-nrf24l01-testing/tree/master/sensor_comm
I will add the code to this repository under the MIT Licence:
https://github.com/emdarcher/Garden_automation_and_sensor_network
if I make any CAD for PCBs or schematics (probably done in KiCAD), I will add those files to the repository as well, under an Open Source Hardware Licence of some sort.
For communicating with the nRF24L01+ modules, I am using the amazing msprf24 library by Eric Brundick [spirilis] :
https://github.com/spirilis/msprf24
msprf24 library COPYRIGHT:
https://github.com/spirilis/msprf24/blob/master/COPYRIGHT
Will add more info as needed.
This project involves creating a network of sensors in a garden with possible automation. Sensor data will be logged on an embedded Linux server and displayed on a web page. MSP430 microcontrollers with nRF24L01+ will communicate data wirelessly. Some nodes will have solar panels and rechargeable batteries. https://www.nextemployeeportal.com/