Le projet Open-Ruche consiste en la réalisation d’un prototype d’acquisition de données dans le cadre de la conduite d’une ruche. Il s’agit d’un projet d’élève ingénieur d’année 4 dans le domaine des systèmes embarqués se déroulant sur le premier semestre de l’année scolaire 2020-2021. De plus, ce projet s’inscrit dans le challenge Electro-Apicole organisé par le SNA, FNGTA et “Demain la Terre”.
Le système à réaliser doit être autonome, sans gêne et fonctionner en temps réel à l’aide des capteurs. Après l’acquisition des données, le système doit les transmettre via un réseau sans fil LPWAN vers un serveur distant afin de les visualiser sur l’interface web Ubidots.
A partir de ce système, les apiculteurs peuvent observer l’évolution du comportement au sein de la ruche. Ils peuvent connaître la température à l’extérieur et à l’intérieur de la ruche, la masse de la ruche, l’humidité extérieure, la vitesse et l’orientation du vent.
The Open-Ruche project consists in the realization of a prototype of data acquisition within the framework of the management of a hive. This is a 4-year engineering student project in the field of embedded systems taking place in the first semester of the 2020-2021 school year. In addition, this project is part of the Electro-Beekeeping challenge organized by SNA, FNGTA and “Demain la Terre”.
The system to be produced must be autonomous, unimpeded and operate in real time using the sensors. After data acquisition, the system must transmit it via an LPWAN wireless network to a remote server in order to view it on the Ubidots web interface.
From this system, beekeepers can observe changes in behavior within the hive. They can know the temperature outside and inside the hive, the mass of the hive, the humidity outside, the speed and direction of the wind.Fonction
Avant de commencer à coder, on a dû définir un protocole de transmission. En effet, le message sigfox est limité à 12 octets, il faut donc bien organiser les données pour l’envoie:
- capteurs de température: 4 x 1 octet;
- La capteur DHT: 2 octet (1 octet pour la température, et l’autre pour l’humidité)
- La masse: 3 octets (2 octets pour la masse mesurée, 1 octet pour la variation de masse)
- Le vent: 11 bits ( 1 octet pour la vitesse de vent, 3 bits pour la direction de vent)
- Le batterie: 1 octet
- L’alert: un flag sur 5 bits
Before starting to code, we had to define a transmission protocol. Indeed, the sigfox message is limited to 12 bytes, so you have to organize the data well for sending:
- temperature sensors: 4 x 1 byte;
- DHT sensor: 2 byte (1 byte for temperature, the other for humidity.)
- The mass: 3 bytes (2 bytes for the measured mass, 1 byte for the variation in mass)
- Wind: 11 bits (1 byte for wind speed, 3 bits for wind direction)
- The battery: 1 byte
-The alert: a 5-bit flag
Ensuite, on a cherché des librairies qui permettent d’initialiser et de lire les différents capteurs utilisés. Au final, 3 librairies sont utilisées : DS1820, DHT et HX711 (les 3 sont incluses dans le dépôt github) Pour l'anémomètre, nous avons réussi à l’initialiser et lire ses valeurs sans librairies.
A présent nous pouvons déclarer et initialiser une variable pour chaque capteur.
Au terme de cette initialisation, un message sigfox est envoyé pour signaler que le système est en marche.
Pour la suite, le système doit faire des lectures des capteurs toutes les 10 minutes et les envoyer via Sigfox, mais il doit aussi être capable de détecter un événement critique comme la masse à 0 kg ou une température trop basse à l’intérieur de la ruche.
Pour réaliser cela, il faut créer deux interruptions :
- Une interruption readSensors qui sera exécutée toute les dix minutes
- Une interruption checkAlerts qui sera exécutée toute les minutes
Dans la boucle while principal, il suffit d’appeler ThisThread::sleep_for, mbed se chargera de mettre le microcontrôleur en deepsleep pour optimiser la consommation.
Then, we looked for libraries that allow you to initialize and read the different sensors used. In the end, 3 libraries are used: DS1820, DHT and HX711 (the 3 are included in the github repository) For the anemometer, we succeeded in initializing it and reading its values without libraries.
Now we can declare and initialize a variable for each sensor.
At the end of this initialization, a sigfox message is sent to indicate that the system is running.
Thereafter, the system must take readings from the sensors every 10 minutes and send them via Sigfox, but it must also be able to detect a critical event such as the mass at 0 kg or a temperature too low inside the hive.
To achieve this, two interrupts are needed to be created:
- A readSensors interrupt that will be executed every ten minutes
- A checkAlerts interrupt that will be executed every minute
In the main while loop, you can just call ThisThread::sleep_for, mbed will take care of putting the microcontroller in deepsleep to optimize power consumption.Prototype
Le prototype a beaucoup évolué entre le premier et la version finale.
Le premier prototype était simplement composé du microcontrôleur, du module Wisol+antenne, et d’un ou deux capteurs de température DHT11. Il nous a permis de tester le fonctionnement global (initialisation, lecture, envoie message Sigfox, visualisation web Ubidots).
Une fois cette étape validée, il suffit de rajouter les capteurs un par un, en vérifiant à chaque fois l’envoie et la réception des données.
Après maintes itérations, nous avons réussi à intégrer tous les capteurs prévus.
A l'issue de cette phase de prototypage, un schéma électrique du prototype a été réalisé afin de préparer l’étape de conception du PCB.
The first prototype was simply composed of the microcontroller, the Wisol module + antenna, and one or two DHT11 temperature sensors. It allowed us to test the overall operation (initialization, reading, sending Sigfox message, Ubidots web visualization).
Once this step has been validated, all you have to do is add the sensors one by one, checking each time the data is sent and received.
After many iterations, we managed to integrate all the planned sensors.
At the end of this prototyping phase, an electrical diagram of the prototype was produced in order to prepare the PCB design stage
Avant de réaliser le schéma PCB, on doit réaliser d’abord un schéma électronique. Dans ce schéma, on crée les composants qu’on va utiliser dans le système, puis on relie ces composants avec le microcontrôleur selon le montage de labdec.
Before making the PCB diagram, we must first make an electronic diagram. In this diagram, we create the components that we will use in the system, then we connect these components with the microcontroller according to the labdec assembly.
Au lieu de souder directement les capteurs au PCB, on utilise des connecteurs Grove pour faciliter la connexion et la maintenance de capteurs et des autres composantes. Au côté gauche de nucléo, on connecte le capteur de poids, le capteur d’humidité, et les capteurs de température. Au-dessus de nucléo, on a mis un connecteur pour la carte WISOL à relier l’antenne transmission Sigfox. En dessous de nucléo, ce sont les connecteurs de l'anémomètre et de la girouette. Du côté droit, ce sont des structures qui permettent de convertir la tension de source, soit la batterie, soit le panneau solaire, soit USB de lipo, à la tension d’alimentation de la carte (3, 3V ou 5V). Le composant LP2980 est un régulateur qui permet de maintenir sa tension de sortie à 3.3 V, et la mettre à l’entrée de la carte. Cela fonctionne lors de la connexion entre ce régulateur et USB de Lipo.
De plus, en bas à droite de nucléo, il y a des ponts diviseurs, qui permettent de changer la tension d’entrée de Batterie et de Panneau solaire à 3.3 V. Cette tension est l’une des tensions d’alimentations de la carte nucleo.
Après, on a mis à jour le PCB depuis le schéma électronique, et on relie les composants sans les croiser.
Instead of soldering sensors directly to the PCB, Grove connectors are used to facilitate connection and maintenance of sensors and other components. On the left side of the core, we connect the weight sensor, the humidity sensor, and the temperature sensors. Above the core, we put a connector for the WISOL card to connect the Sigfox transmission antenna. Below the nucleus, these are the connectors for the anemometer and the wind vane. On the right side, these are structures that convert the source voltage, either the battery, solar panel, or USB lipo, to the board's supply voltage (3.3V or 5V). The LP2980 component is a regulator that allows it to maintain its output voltage at 3.3 V, and put it at the input of the card. It works when connecting between this regulator and USB of Lipo.
In addition, at the bottom right of the nucleus, there are dividing bridges, which allow to change the input voltage of Battery and Solar panel to 3.3 V. This voltage is one of the supply voltages of the board. nucleo.
Then, we updated the PCB from the electronic diagram, and we connected the components without crossing them.
Une fois que le PCB est réalisé et les composants sont reliés sur le PCB, on commence à démarrer notre prototype par le bouton ON. Pour savoir si la transmission des messages a bien fonctionné, on peut observer dans l’interface Sigfox et vérifier qu’on a bien reçu un message.
Once the PCB is made and the components are connected to the PCB, we start our prototype with the ON button. To find out if the message transmission has worked well, you can observe in the Sigfox interface and check that you have received a message.
En plus, on observe aussi dans l'interface Ubidots toutes les données qu’on a obtenues dans le message reçu par Sigfox. Dans cette interface, on peut voir l’humidité et la température extérieur, la capacité de batterie, l’heure actuelle, les températures captés par les sondes à l’intérieur de la ruche, la vitesse et la direction du vent, l’évolution de la masse et la variation de la masse.
In addition, we also observe in the Ubidots interface all the data that we obtained in the message received by Sigfox. In this interface, you can see the humidity and the outside temperature, the battery capacity, the current time, the temperatures captured by the probes inside the hive, the speed and direction of the wind, the evolution of mass and the variation of mass.
Comments
Please log in or sign up to comment.