Saturday, 7 January 2012

ProBee Based Home ZigBee Network - Part 1

In this blog series I will be showing you how to create a ZigBee based home network for monitoring room temperature using Sena's ProBee Modules and OpenEneryMonitor's emoncms for recording and displaying the temperature data.
Specifically, I'll be using the ZE20S modules with chip antenna for the sensor nodes and a ProBee-ZU10 usb dongle that will act as the network co-ordinator and feed temperature data into the monitoring computer.
The following are assumptions on the readers knowledge/ability:
  • Basic understanding of ZigBee networks, for more info please see here and here.
  • Basic breadboard skills.
  • Access to a Linux based server for running the emoncms software.

ProBee ZigBee Modules
The main thing I like about these ProBee modules is that they are cheaper than the corresponding XBee modules, and pretty much provide the same functionality (the ProBee modules actually have more digital and analog I/O pins that the XBee).
The cheapest ZigBee compliant ProBee module (ZE20SSC-00 with chip antenna) costs about US$17. The cheapest ZigBee compliant XBee module (Series 2 XBee ZB with chip antenna) retails for around US$25! Interestingly both modules have an underlying Ember ZigBee chip with EmberZNetEmber’s ZigBee compliant embedded mesh networking software.

Sena's ProBee Modules
System Overview
The following diagram outlines the components of the system:
Overview of Network Components
ZigBee Temperature Sensor End Devices - Each end node will comprise of a ProBee ZE20S module, with temperature sensor, power supply circuit and batteries. As these nodes are battery powered, they will be configured to enter battery saving sleep mode and wake up periodically to report the temperature reading.
ZigBee Router - This will route the messages containing the temperature readings from the end devices to the ZigBee coordinator. The router is optional and only necessary if you don't have enough range between your end devices and Coordinator. It will consist of a ZE20S module and power supply. The router must remain powered on all of the time and as such will be mains powered.
ZigBee Coordinator - This will receive our temperature readings from the End Nodes in the network and display/store the measurements using the emoncms software. It will comprise of a ProBee USB dongle and, in my case, a Beagleboard. A PC or MAC could easily be used instead of the Beagleboard, as long as it runs emoncms.

Building The System
The following entries cover the steps that are required to complete our system:


  1. Nice project - looking forward to part 2-4.

  2. When I first got started with XBee I took lot of time and hard work for getting the right information to help me on my working projects. I put my project on hold and spent a few months simply trying to understand XBee specifically using it with arduino. This post is a good source for understanding xbee examples with your Xbee tutorial. You post gave lots of information regarding Xbee.

  3. Hi Donal,
    I had spend a lot time searching related topics on internet but this it”s the best. For my school project I use 1 ProBee ZE10 as SED, where I get 4 analog inputs, 1 ProBee ZU10 as coordinator. I use for view data Hyperterminal and also Labview for more options. My issue it”s:I get 3 values equals in hexa=2EE0 and 4„th value variable(from a bolometer, aprox=180 mV). Please teach me how I should set the devices to get this values in a raw data or what I need to do for a real values, real on GPIO ports I have the values:180mV;2,42V;2,77V;3,17V. Thank you!

  4. Hi Marlus,
    Please have a look at the 'Decoding The Temperature' section on this page:

    The values that are returned in the message from the ZE10 sensors are 'ADC values', these are the values outputted directly from the ADC on the ZE10 and must be converted into a voltage value before you can convert them to an actual engineering value such as temperature. The section details how you carry out this conversion. To get the voltage at the analog input pin use this formula: 'mV = AdcValue * 0.1'.
    Given that your 3 values are 0x2EE0, this gives a voltage of 1.2mVolts, which doesn't compare to your real voltages (I presume you measured these with a multi-meter?)

    Check your ProBee configuration (is the ProBee reading the correct pins?) and the circuit (do you have your sensors connected to the correct pins?)

    Please let me know if you resolve the issue or not.. :-)


  5. Hi Donal,
    This issue still exist! I checked all conexions in my board, the values on Analog pins are in parameters, the conexions are OK on analog inputs, the settings for Analog inputs are like in related documentation(GPIO=5), the only problem are the values over 2V on analog input are readed by coordinator =2EE0. On your LM35 max value are 2V, so you have not a problem. I want to say on my aquisition board from sensors the values set for my photovoltaic panel are working between 2V and 3.1V.
    Please help me to solve this problem with read via Probee the good values, in my point it's a software mistake.
    Thank you! Marius

    1. Hi Donal, finnaly it's working, the problem for my Probee device it's the input voltage on analog port, the maximum value readed it's 800 mV, so I added in my schematic one voltage divider with 2 resistor(2,2k&6,8k)to have this scale. Now I can read very good the 4 values on my PC but I want to say I'm not satisfied of Probee devices.

    2. Hi Marius,
      Excellent, glad to hear you solved it. I'll update the blog post based on your findings!