
Une balance connectée au réseau SigFox
Avertissement : ce document montre un exemple de combinaison de modules d’expérimentation pour réaliser une balance connectée. Les informations nécessaires à la réalisation de cette balance ont été « butinées » sur le web et le fruit d’expérimentations et d’essais. Ce document n’est pas une recette « complète et garantie » mais seulement des éléments pour vous permettre de bien démarrer votre propre réalisation de balance connectée.
La balance décrite équipe aujourd’hui 3 de mes ruches. Je ne fabrique pas de balance dans un but commercial et ne ferai donc pas la vôtre. Bon bricolage !
Pourquoi SigFox ?
Sigfox est une entreprise française qui a été créée en 2009. Elle a créé et exploite un réseau dédié à « l’internet des objets », qui utilise un mode radio UNB (Ultra Narrow Band : bande très étroite) sur des fréquences à licence libre, juste en dessous de la bande GSM. C’est un réseau à faible débit mais bien suffisant pour transmettre les données des sondes de télémétrie équipant nos ruches.
Une des raisons du choix de ce réseau, c’est la couverture très bonne de ce réseau : mon rucher est en zone blanche GSM et je ne pouvais donc pas utiliser le réseau des téléphones mobiles.
D’autre part, le fonctionnement de ces systèmes est très peu énergivore (plusieurs mois sur 2 piles bâtons 1,5V) et je n’ai donc pas besoin de panneau solaire (donc pas de risque de me le faire voler).
L’abonnement pour transmettre une série de mesures toutes les 10 minutes coûte environ 14 euros par an. Le budget est donc raisonnable.
On trouve finalement des modules de type «Arduino» avec le module SigFox installé, comme pour la plupart des systèmes de communications IoT. J’ai choisi le module Arduino MKRFOX 1200, qui comprend une carte d’expérimentation avec le module SigFox ainsi qu’un abonnement au réseau.
Le matériel de pesée
Il s’agit de jauges de contrainte prévues pour une charge maximale de 50kg. Ces 4 jauges sont reliées sur un circuit de conversion analogique-numérique HX711. Le signal de ce convertisseur sera directement connecté sur la plaque d’expérimentation. C’est très simple et il y a peu de matériel à construire.
J’ai juste taillé un cadre en bois pour porter les jauges. Il faut évider le dessous des capteurs avec une mèche à bois afin de permettre à celui-ci de se déformer.
Le cadre est percé pour faire passer les fils. Ici l’évidement sous le capteur n’est pas encore réalisé.
Une fente est faite à la scie sur table sur l’ensemble des éléments du cadre afin de faire passer les fils de connexion.
Si on le souhaite, le support des capteurs peut être ensuite recouvert d’un toit de ruche en tôle pliée qui met le système à l’abri des intempéries. Je ne l’ai pas fait et ce système a passé plus d’une année, hiver pluvieux et venteux compris, juste à l’abri de la ruche sans incident.
Le module MKRFOX1200 est installé dans un boitier en ABS qui le protège des intempéries. Une antenne pour le réseau SigFox sera ensuite ajoutée pour améliorer la qualité de la connexion
Il faut penser à laisser un petit trou en bas du boitier pour l’écoulement éventuel de l’eau de la condensation. Le boitier est ensuite fixé à l’arrière de la ruche et le câble provenant des jauges de contrainte entre dans le boitier par le dessous.
Schéma de câblage :
Programmation :
Il vous sera nécessaire de télécharger la bibliothèque du HX711
https://github.com/olkal/HX711_ADC
La première étape consiste à calibrer la balance. Cela sera réalisé grâce au programme « Calibration » fourni avec les bibliothèques du circuit HX711. Après avoir chargé le programme dans la mémoire de l’Arduino et exécuté le programme, on charge la balance d’une masse dont le poids est connu (en l’occurrence, ma personne, après être monté sur le pèse-personne de ma salle de bain), et on entre le poids connu (donné par le pèse-personne) via l’interface série connectée au circuit Arduino. Le programme calcule ensuite la valeur d’une constante à indiquer dans le programme de pesée.
Il faut calibrer la balance avec un poids proche des mesures qui seront effectuées, ici j’ai utilisé 80 kg. J’aurais aimé un poids autour de 50kg mais mon épouse a refusé de servir de poids étalon.
Il est important d’utiliser un programme de mesure du poids qui n’oblige pas à refaire une tare avant chaque mesure. En effet, le programme général ci-dessous met le système en pause très basse consommation d’énergie après chaque transmission : le système mesure la température sur le circuit MKR FOX1200 (température externe), le poids puis transmet ces données sur le réseau SigFox.
Un « Call back » est effectué par le site ThingSpeak en utilisant leur API.
L’affichage depuis le site ThingSpeak permet d’afficher en temps réel (données mises à jour toutes les 15 minutes) la température extérieure de la ruche et son poids.
ThingSpeak permet également d’afficher des courbes sur des périodes de temps définies et de faire des calculs (variation du poids par jour, par semaine et par mois) grâce au module intégré Matlab.
Pour terminer, vous pouvez également extraire les données pour par exemple les retraiter sur Excel :
On note les variations de température entre le jour et la nuit.
On note sur la courbe du poids qu’on a ajouté une hausse le 13 avril. Le 25 avril on a retiré quelques cadres de miel operculé (chute de 8kg du poids) avant une semaine fraiche (pour éviter que le miel cristallise). Les pics correspondent aux visites : la mesure a eu lieu alors que les hausses étaient enlevées.
Annexes
Le programme principal
Le programme est très simple :
Informations complémentaires
Le réseau SigFox
Couverture du réseau : https://www.sigfox.com/en/coverage
ThingSpeak
Le portail : https://thingspeak.com/
Utilisation de l’API de ThingSpeak : https://www.codeproject.com/Articles/845538/An-Introduction-to-ThingSpeak
Un autre exemple décrivant l’utilisation du module MKRFOX1200 avec ThingSpeak : https://fr.howto-wp.com/74695-Arduino-MKR-Fox-1200-Sigfox-Meteo-Station-88
Activation du module SigFox et utilisation de l’API ThingSpeak
Il faut activer le module SigFox en exécutant le programme de configuration (fourni avec les bibliothèques SigFox) et en se connectant au portail https://backend.sigfox.com/
Après enregistrement, le module doit être visible sous votre compte dans le backend :
Accéder aux données.
J’utilise les services gratuits de ThingSpeak pour afficher la température et le poids de la ruche. Cela se fait via un callback programmé sur le backend du portail SigFox
Merci beaucoup pour cette balance de plus en plus performante.
Pensez-vous dès fois développer une transmission wifi ou ethernet pour cette balance ? En effet mes ruches sont à proximité d’un pont wifi qui relie une caméra de surveillance de mon rucher jusqu’à mon domicile… Merci
Le module Arduino MKR WIFI 1010 est la version WiFi/Bluetooth de l’Arduino MKR FOX 1200. Cependant cela reste une version onéreuse. Avec les modules ESP32 (voir l’article sur la webcam qui filme l’intérieur de la ruche), vous avez une plateforme pour se connecter à votre réseau WiFi pour quelques euros.
A votre disposition, si vous avez des questions.
Merci je vais étudier cela mais plutôt sur l’hiver… Si c’est possible j’essayerais de vous tenir au courant et si vous le voulez bien peut être en discuter avec vous pour profiter de vos lumières.
Bonjour, je commence a étudier votre montage lorsque j’ai un petit moment.
Dans le code source vous incluez une librairie balance.h;
#include // ligne 3
Il s’agit surement d’une librairie personnelle (on ne la trouve pas sur le net… les autres oui):
Avez-vous un lien vers cette librairie?
Vous utilisez une fonction de cette librairie :
Int8_t poids = BalanceMesure () + 6 ; //mesure poids ruche
Pourquoi rajoutez vous 6 à cette valeur (idem sur ligne température du module?
Merci
oui, la bibliothèque balance.h est personnelle, codée à partir des différents exemples du net et adaptée à l’usage que j’en fais (en particulier pour éviter le calcul de la tare à chaque démarrage du module). Je suis en train de la faire évoluer et la mettrai à disposition rapidement sur ce site.
La valeur
tempfloat
(température du module = température externe à la ruche) est additionnée de 6°C car la sonde de température du module Arduino n’est pas étalonnée et nécessite cette correction. En fait, la correction n’est pas exactement linéaire mais dans la plage de température concernant ma région (entre -5°C et 30°C), cette simple correction est suffisante.Pour la mesure du poids de la ruche, j’avais d’abord équipé le support de la ruche d’une structure rigide qui se place entre la balance et le plancher de la ruche. Je n’utilise plus cette structure mais un simple toit tolé qui protège la balance de la pluie et de la neige.
J’ai ajouté cette correction du poids pour conserver un poids comparable avec mes mesures précédentes : les 6kg supplémentaires correspondent au poids de cette structure métallique moins le poids du toit tolé. Dans votre cas, vous n’en avez pas besoin : utiliser directement la valeur
Int8_t poids = BalanceMesure ();
Merci, je comprends beaucoup mieux avec ces explications.
Et comme je débute sur cette technologie… J’avais hésité, en plus je regarde cela quand je suis de nuit et donc pas toujours les yeux en face des trous et les idées très claires!
Super travail en tout cas je m’en inspire ainsi que d’autres réalisations, mais pour le moment je n’ai pas encore reçu tous le matériel d’essai que j’ai commandé… (les douanes mettent plus de 5 semaines pour laisser passer un colis..)
Bonjour,
Ce projet m’intéresse: et merci de le partager.
est ce possible de faire des photos du cadre qui porte les jauges ainsi que l’evidemment en dessous des jauges? Je ne vois pas ou et comment il faut le faire.
Merci
Cordialement
Jean-francois
Bonjour,
oui, je ferai des photos complémentaires en fin de saison.
En ce moment les balances sont sous les ruches qui ont entre 3 et 4 hausses, donc je vais attendre la récolte pour faire les photos.
Merci de votre patience.
[…] à l’article sur ma balance pour ruche connectée via le réseau Sigfox, disponible ici : http://miel.givet.ovh/index.php/2020/05/13/une-balance-connectee-au-reseau-sigfox/ j’ai reçu de nombreuses questions et commentaires. Je vais essayer d’être le plus […]
Attention, il y a un nouvel article avec un programme modifié et simplifié : http://miel.givet.ovh/index.php/2020/08/26/un-nouveau-programme-pour-ma-balance-sigfox/
Bonjour,
Je suis très admiratif de votre travail et j’aimerais beaucoup savoir programmer comme vous. du coup j’ai des question:
Est-il possible de relier plusieurs balance a un Arduino?
Merci beaucoup pour le partage
Oui, on peut ajouter plusieurs balances à un Arduino. le module HX711 communique avec l’Arduino sur 2 ports digitaux ou analogiques. Donc théoriquement on devrait pouvoir connecter 9 balances. Le problème va être la gestion des câbles et leur longeur. Au dela de 4 ruches, par exemple, rassemblées sur une palette, il faut tirer du câble de longeur importante. La solution serait sans doute de modifier le schéma et connecter les balances via une connexion I2C. Ce protocole codant les périphériques sur 7 bits, on pourra ainsi relier toutes les ruches de son rucher, même si on en a plus d’une centaine…
A ce moment la limite viendra de la taille du message Sigfox, qui est limité à 12 octets, soit 12 balances.
Merci beaucoup pour cette réponse. Je vais travailler dessus. 👍🏻
Bonjour merci pour le partage de votre projet. Je suis vraiment débutant en programmation et je me posait la question, si on pouvais connecter plusieurs balance sur un arduino ou si il faut un arduino pour chaque ruche?
Bonjour,
Merci pour toutes vos informations Philippe.
Il me reste cependant plusieurs question :
– Le schéma électronique que vous présenté est une carte Arduino Uno, alors que vous parlez plus haut de la MKR1200. Quelle carte à été utilisé au final ?
Je pose cette question car dans la doc du MKR1200, il y a écrit « contrairement aux autres cartes Arduino, les entrées/sorties fonctionnent sous 3,3 Vcc. L’utilisation de 5 Vcc en entrée ou en sortie n’est pas possible. Une tension supérieure endommagera la carte. »
Merci de votre retour,
Oui, c’est une carte MKR1200 FOX, qui intègre un module Sigfox d’origine.
Comme vous l’avez compris, ce montage s’adresse aux personnes qui ont un peu d’expérience et le cablage doit être « compris » avant d’être recopié. Je n’ai pas trouvé facilement de schéma de carte MKR1200, d’où la raison de cette crate utilisée, mais les ports utilisés sont les mêmes. Mais vous pouvez également utiliser une carte UNO et un module Sigfox séparé si vous le souhaitez.
Par contre l’alimentation 5V est possible sur la carte MKR1200, en utilisant la connexion USB ou VIN. Le fonctionnement est sous 3.3V. Je recommande l’utilisation de la tension 3V pour l’utilisation sur batterie afin de ne pas gaspiller l’énergie inutilement sur le régulateur 3.3V.
Bon montage.