Story
Introduction
In France there is about 1 million beehives.
The objective is to monitor the gain/loss in beehive weight for:
- bee health,
- honey production,
- swarming bees
- winter provision control
- diseases
- pesticides influence
- beehive stealing,...
Mindmap
Acquisition system
- Weight measurement: deformation gauge glued to an aluminium bar mounted in flexion. Half bridge wired for avoiding temperature variaiton. Measurement sensitivity is about 10g. Signal numerization done using HX711 module (analog to digital converter 24bits)
- Temperature measurement: 2 sensors: one insid the beehive, the other outside. Measurement using OneWire DS18S20 (±0.5°C accuracy, range is from -10°C to +85°C) One can monitor the bee brood presence or not.
Remarks: Bee weight is between 60 to 80 mg, so 1g = 14 bees approximately. The average honey consumption during winter (in center of France) is from 12 to 15 kg.
Prerequisites
- the box must be waterproof, because it will be outside during all day and night for a long time period.
- the electrical power supply is a key parameter, it has to be autonomous for a long time period (one year), among solutions we can have solar panel or sufficient battery power (and optimized consumption).
- the data transfer to end-user, must be wireless and accessible in non internet connected regions, low cost and allow data transfer at regular interval (for example every 2 hours)
Possible additional measurements
- GPS position of beehive,
- Sun light
- Rain
Global costs,
- Estimated to about 100€
http://stephane.gouttebroze.free.fr/gruche/gruche.html
Recording examples:
Internal and external temperature can be monitored,
Example herefater show bee brood temperature (around 35°C) as constant even if external temperature is varying.
Additional measurement is beehive internal humidity using DHT22 sensor.
All the datas have to be sent to network using Sigfox facility for example.
Schematics
Code example. (see files for additional versions)
//*******************************************
//
// Systme eruche installe au Joug
//
// S.GOUTTEBROZE (c) 01.2017
//*******************************************
#include "HX711.h"
#include <OneWire.h>
#include <DHT.h>;
//Constants
#define DHTPIN 4 // what pin we're connected to = D2
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE); //// Initialize DHT sensor for normal 16mhz Arduino
// DS18S20 Temperature chip i/o
OneWire ds(2); // on pin 4
//Variables
int chk,cpt;
float hum; //Stores humidity value
float temp; //Stores temperature value
// the setup function runs once when you press reset or power the board
unsigned long Weight = 0;
unsigned long AverageWeight = 0;
unsigned long AverageWeightot = 0;
unsigned long AverageWeightold = 0;
int ini(0);
int Clock = 7; //3 on board
int Dout = 6; //2 on board
float poidsD(0);
float Tc_100_A,Tc_100_B;
byte i;
byte type_s;
byte present = 0;
byte data[12];
byte addr[8];
char *msg ;
void lire_scaleD() {
//Serial.println("Lire D...");
// wait for the chip to become ready
while (digitalRead(Dout) == HIGH);
AverageWeight = 0;
for (char j = 0; j<100; j++)
{
Weight =0;
// pulse the clock pin 24 times to read the data
for (char i = 0; i<24; i++)
{
digitalWrite(Clock, HIGH);
delayMicroseconds(2);
Weight = Weight <<1;
if (digitalRead(Dout)==HIGH) Weight++;
digitalWrite(Clock, LOW);
}
// set the channel and the gain factor (A 128) for the next reading using the clock pin (one pulse)
digitalWrite(Clock, HIGH);
Weight = Weight ^ 0x800000;
digitalWrite(Clock, LOW);
AverageWeight += Weight;
delayMicroseconds(60);
}
AverageWeight = AverageWeight/100;
//Serial.print("PoidsDnew=");
//Serial.println(AverageWeight);
}
void setup() {
Serial.begin(9600);
//intialize HX711 "Module 4" SCALE D
pinMode(Clock, OUTPUT); // initialize digital pin 4 as an output.(clock)
digitalWrite(Clock,...
Read more »
Thank you