A network of low power sensor nodes in the garden, and possibly some automation as well.

Similar projects worth following
This is a project to create a small network of sensors in the garden, and possibly some automation. The sensor data will be logged on an embedded Linux server (probably a Raspberry Pi or BeagleBone) and displayed on a web page. One such application for use is within a greenhouse, which may need to monitored in case it gets too hot for the plants, then venting of air could be automated, or the web page could alert the gardener. The nodes will consist of various sensors (temp, Humidity, soil moisture, etc.) attached to MSP430 microcontrollers which communicate using nRF24L01+ 2.4GHz tranceivers. Some will have Solar panels and rechargable batteries and others may have just a 3V button cell, but will last long by using the low power capabilies of the MSP430 and nRF24L01+.

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:


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:

I will add the code to this repository under the MIT Licence:

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] :

msprf24 library COPYRIGHT:

Will add more info as needed.

  • 1 × msp430g2452 Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 1 × HS1101LF Electronic Components / Misc. Electronic Components
  • 1 × TS555 Clock and Timer ICs / Timer ICs
  • 2 × nRF24L01+ module
  • 1 × msp430g2553 Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers

View all 8 components

  • Status of project

    emdarcher01/07/2015 at 22:28 0 comments

    So as you may have noticed, I have not updated this project for a while (and my code is far from complete or full featured). As a quarterfinalist in the Hackaday Prize, I was working hard on it to try and make it to the semi-finals, but I didn't. I still want to finish this project at some point, but it is not my top priority at the moment. I mainly worked on it during the summer, but now I have school, so I have less time for my electronics projects, and whatever time I get for electronics I am usually working on my more recent or self-educational projects. If you want to see my other awesome embedded systems, electronics, Microcontrollers, and computer projects, just check them out through my profile, or here .

    Some of my continuing projects:

    using_8085_processor_for_something : Project to try to figure out and do something with an Intel P8085 processor that I salvaged. Building a minimal 8-bit computer.

    chibios-tinkering : tinkering around with ChibiOS/RT mostly on STM32

    lpc800_adventures : Adventures learning and messing with NXP's LPC800 Series ARM Cortex-M0+ Microcontrollers using open-source tools.

    Moppy_AVR : Port of SammyIAm's Moppy (Musical Floppy) Arduino code to AVR C for select AVR MCUs. Will be compatible with the Moppy Java client.

    sound_chip_AVR : Using fast PWM capabilities of some AVR MCUs to make sounds using DDS.

    Mostly finished/stagnant projects:

    GameOfLife_ht1632c_display_AVR : displaying Conway's Game of Life on a ht1632c-based 32x8 LED matrix using an AVR ATtiny26 mcu

    And some projects that I haven't yet built or prototyped any hardware for yet, but am brainstorming/planning:

    GPS_device-logger_STM32 : Making a simple(ish) GPS device and logger using an STM32 MCU and Delorme gps2058 module.

    MY_SONIC_SCREWDRIVER : Making my own custom Sonic Screwdriver device, similar to the tool used by The Doctor.

  • Made a YouTube video explaining the system structure!

    emdarcher08/20/2014 at 05:39 0 comments

    Here is the video link:

  • Made System and node diagrams!

    emdarcher08/19/2014 at 23:56 0 comments

    Here is the draft diagram of the full system that will hopefully exist:

    And here is an very simplified block diagram of what the Greenhouse sensor node will be:

  • Made working frequency to Relative Humidity code!

    emdarcher08/18/2014 at 00:30 0 comments

    I have been working on using some humidity sensor boards that I have as part of the node. The sensor boards contain a HS1101 relative humidity sensor (variable capacitance) connected in a circuit with a 555 timer which outputs a frequency based on the value. It is the same 555 timer circuit found in the HS1101LF datasheet on page 3. Originally I planned on doing the calculations by converting the equations for use with fixed-point math for speed, but instead decided to use a lookup table of values because I was lazy, and I think that may be actually faster than doing the calculations in software. Here is a picture of the prototype connected to the humidity sensor board.

    Here is the output of values I am receiving from the wireless node. The serial output is from a Launchpad running my little testing RX energia sketch which parses the incoming data from the node.

    code can be found in my other github repo here:

  • Basic prototype of node working!

    emdarcher08/12/2014 at 20:03 0 comments

    A few days ago I got a small node running on an MSP430G2452 mcu, sending it's internal temperature sensor data of the air via a nRF24L01+ module. The temperature measurements are using the internal ROM calibration data for better accuracy.

    The code can be found here:

    The reciever is a MSP430 launchpad with MSP430G2553 running an Energia sketch that parses the temperature value from the packet and prints the results over UART to the computer via an FT232BL USB to serial converter ic breakout.

View all 5 project logs

Enjoy this project?



Toby Jackson wrote 04/03/2015 at 20:45 point


I'm working on a similar setup, with RF and MSP's, and I'm wondering how you'd approach waking up the MSP from the base station?

I'd like to create some LED boxes with a base station to control the MSP node but can't work out how to keep the MSP in ultra-low power but still trigger a wakeup from the base.


  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates