The “BeeMonitor” project

Beekeeping is a time consuming hobby, it’s not so easy as it sounds. Making sure the bees are healthy takes a lot of knowledge and experience.

Adding sensors to a beehive helps the beekeeper to monitor the hive and take action when things are not as expected.

Therefor I decided to make my own “BeeMonitor”. Starting with the electronics, connecting our hives to the internet!

The BeeMonitor with sensors

The technical side:

The BeeMonitor is a “battery powered wireless datalogger”. It’s a compact controller with user-changeable dipswitches, RGB led, buzzer, “plug & play” RJ12 connectors designed for different sensors combinations and is capable to carry 2 different wireless modules, a RFM69W for use in a private network or the RFM95W to connect to an LPWAN IoT network (LoRaWAN) on sub-gigahertz radio bands. Powered by 2 AAA battery’s, operating on 3V the”BeeMonitor” only consumes 35nA in sleep the making the battery’s last for years! Great, isn’t it?

Transmitted messages are received by a gateway, processed and stored in a database. Data can be shown on a website and even in online “live” graphs depending on the needs.

BeeMonitor with custom front

For example, some temperature & humidity data from one of our beehives:

Battery life:

The prototype has been up & running, collecting data for about 2 months now. So far the battery voltage has dropped from 3.17V to 3.12V without any (low power) software optimisation. Even without the battery will keep the BeeMonitor up & running for a very long time, all the way down to 1.9V. That’s when the voltage reaches the minimum operation voltage for some of the hardware.

Power consumption:

Measuring one wake-up cycle (about 2 seconds) gives a clear overview of the power consumption of the hardware. A short description of how things work here (reference: 1 mV = 1 mA):

  • 0 s: External input, interrupt or timer waking up a part of the hardware (50 nA)
  • 250 ms: Power enabled to other hardware (1.8 mA)
  • 320 ms: Microcontroller startup, bootloader (3.5 mA)
  • 1.7 s: Microcontroller running program, reading sensors, processing
  • 1.82 s: Sending message (50 mA)
  • 1.83 s: Waiting for ACK from gateway (18 mA)
  • 1.85 s: Blink green led (4 mA)
  • 2 s: Powerdown (35 nA)

This graph makes clear I need to optimize the bootloader, because it takes 1.38 s! Thats way to long for battery powered hardware.

Future plans:

There are some improvements needed such as an optimized bootloader, optimized software for better battery life, ..

September 2017: The prototype has been upgraded, read more about the plans & upgrades here.

3 comments on “The “BeeMonitor” project

  1. Dear Thomas,

    thanks for mentioning us in your article. We just linked to it at https://community.hiveeyes.org/t/the-beemonitor-project-by-thomas-van-bellegem/486.

    We would be happy to support you in connecting with our backend infrastructure or platform. As everything is based on open source software, you will be free to run the backend on your own machines. However, we could already win more and more beekeepers to send their measurement data to our collaborative platform to share it with each other. You can take a glimpse at https://swarm.hiveeyes.org/grafana/. It’s really fun!

    Are we right in assuming you will operate a gateway in your setup which converges the data received over RFM against an UART interface? Maybe you would find https://hiveeyes.org/docs/beradio/ interesting then. This little piece of Python software will pick it up from the UART interface and forward it to MQTT appropriately.

    We are open to support custom line protocols there (see also https://community.hiveeyes.org/t/decode-jobeemonitor-uart-line-format/435), but there’s also the possibility to submit data using the HTTP protocol (https://hiveeyes.org/docs/system/acquisition/), even directly from the microcontroller level when it’s connected to Ethernet or WiFi somehow.

    If you have any source code to share, we might even be able to provide appropriate protocol adapters.

    Don’t hesitate to get back to us, we are looking forward and already want to invite you to join us at https://community.hiveeyes.org/ for exchanging thoughts and opinions with other like-minded people.

    With kind regards,
    the people of Hiveeyes.

    • Thanks for sharing my project. At the moment I’m busy experimenting with weight cells & converters with some other beekeepers.
      When this feature works as it should there will be a slightly bigger version of the BeeMonitor that combines 2 temperature/humidity sensors with a weight cell. I try to keep the low power features etc.
      Connecting the hardware to Hiveeyes is still my goal. The gateway right now is an arduino based microcontroller with an RFM69 transceiver that uplinks the data trough UART to a Raspberry Pi. A new UART gateway (doesn’t have to be a Raspberry Pi, I’d rather use a cheaper ESP wifi module) that connects to the Hiveeyes backend would be ideal.

  2. Dear Thomas,

    thanks and good luck with everything!

    As said, you and your colleagues are welcome to join us in our community forum, we would be happy and it’s really fun. As we already are a group of enthusiasts with know how from different technical backgrounds, you might enjoy collaborating and sharing ideas on some topics with them. We encourage diversity, so we designed the whole system to be open enough for different flavors of monitoring setups.

    Regarding scale design, we already have collected some material you might find interesting at https://community.hiveeyes.org/c/development/scale-design. Low power is also essential for us.

    Regarding the gateway design, we are running beradio-python (https://hiveeyes.org/docs/beradio/setup.html) on a RaspberryPi doing the UART-to-MQTT convergence, as already mentioned above. See also https://community.hiveeyes.org/t/embedded-radio-to-ip-gateway-avr/314.

    But we are also working on a more lightweight design using an embedded solution to get rid of the Raspberry Pi as a gateway machine, either using an ESP8266 or the LinkIt Smart 7688 Duo, see also:
    https://community.hiveeyes.org/t/embedded-radio-to-ip-gateway-esp/315
    https://community.hiveeyes.org/t/linkit-smart-7688-duo-as-rfm95-to-wifi-beradio-gateway/229

    We did some research on the efficiency of various serialization formats suitable for efficient transmission of multiple measurement values over the air (https://hiveeyes.org/docs/beradio/test/serialization-size.html).

    Coming from that, we designed and implemented a protocol based on Bencode (https://hiveeyes.org/docs/beradio/beradio.html) and also provide a C++ implementation for it (https://hiveeyes.org/docs/arduino/BERadio/README.html). This builds upon the work of Jean-Claude Wippler of JeeLabs fame, see also https://hiveeyes.org/docs/beradio/research/prior-art.html#family-3-8-bit-clean-container.

    However, we recognize there are other options to do the data serialization. To provide a generic interface to different serialization formats, we conceived another C++ library which might be useful to others, see https://hiveeyes.org/docs/arduino/TerkinData/README.html.

    If you can find some time to share the UART line protocol format you are currently using, we will be happy to provide you with an appropriate adapter to submit measurement data to the backend. I will be travelling from 19th of August, so if you like we could manage it before to give you some more playground for the time after you nailed your scale design experiments.

    With kind regards,
    Andreas.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s