Transformation d’un rucher en rucher connecté intelligent, communiquant — et open source ! :) —

Transformation d’un rucher en rucher connecté intelligent, communiquant  — et open source ! :) —

Comment transformer simplement les ruches d’un rucher en ruches intelligentes ? Suivez le guide ! 🙂

Le projet complet est assez ambitieux. Il se décompose en 4 parties :

• L’électronique et l’informatique pour gérer 1 (jusqu’à 10) rucher composé de 1 (jusqu’à 15 ruches).
• Fabrication d’une ruche en free/open hardware basé sur le format Dadant mais très fortement inspiré par les ruches slovènes (visite par l’arrière, cadre sur tiroirs, conduite en divisible, grande modularité). Le concept de cette ruche rend beaucoup d’opération simple, elle est bien adaptée à un débutant. Mais comme elle est modulaire, elle permet aussi beaucoup d’opérations complexes comme l’élevage d’essaims, de reines etc…
• Fabrication d’un rucher couvert et fermé d’inspiration slovène pour 10 à 15 ruches (de type Dadant/slovènes ou autre) toujours en free/open hardware. Le rucher protègera les ruches, permettra a l’apiculteur de visiter par tous les temps, et disposera de suffisamment de place intérieur pour stocker et utiliser les éléments d’une petite miellerie.
• Création d’une communauté (Wiki ou autre) pour aider chacun/chacune à utiliser sa/ses ruche(s). Le wiki contiendra l’ensemble des documents, tous les plans du rucher et des ruches, tous les schémas électroniques, guide d’installation et sources. J’aimerais qu’il soit la base d’une méthode accessible de découverte de l’apiculture avec ce type de matériel allant jusqu’à la gestion avancé. Il permettra aussi des échange entres membres. (que faire si ma ruche est faible, état de la production de miel, que pensez-vous du poids de cette ruche etc…)

Pour ce tuto nous nous limiterons à la partie «électronique/informatique » :

Création de l’électronique permettant la surveillance d’un rucher de 1 à 15 ruches. L’ensemble des outils permettant la gestion de 10 ruchers maximum. Il n’est pas exclu de pouvoir passer à 100 ruches et 100 ruchers dans un second temps. L’électronique pourra s’adapter à n’importe quel format de ruche, standard ou non.

L’électronique sera évolutive, les informations remontées par ruchers seront :
• La température extérieure, volume de pluie, humidité, vitesse du vent, bref, une station météo complète.
• Capteur de présence, photo des visiteurs (lutter contre le vol de ruche).
• Niveau des réserves d’eau (abreuvoir par exemple).
• Gestion de l’énergie (panneaux solaire, état de la charge etc…).
• Communication avec Internet, récupération des données des ruches et envoie d’alerte par SMS (ruche faible, problème de réserve, essaimage, vol etc…)
• Évolution future :
o Assistance informatique au comptage des varroas.
o Vidéo d’une planche d’envol en temps réel.
o Comptage des entrée/sortie d’abeilles sur une ruche.
o Gestion simple d’un poulailler : ouverture/fermeture automatique de porte ; détection de ponte ; distributeur automatique de grains.

Et par ruches (de 1 à 15 par rucher dans un premiers temps) :
• Le poids (évolution des réserves/récolte de miel, détection en temps réel de l’essaimage).
• La température intérieur de la ruche, et aussi pour l’hiver, grâce a une matrice de capteur de T°, la position de la grappe d’abeilles dans la ruche.
• Humidité dans la ruche.

L’ensemble des données seront remonté via WIFI ou un petit abonnement GSM/DATA (2€/mois par ex) sur une plateforme en ligne OPENSOURCE/ LIBRE. L’ensemble des développements Hardware/Software seront bien sûr en licence Libre (Apache, MIT, GPL etc.. le choix n’est pas encore fait) et basé sur des logiciels eux même sous ces licences.
Le cout de l’électronique devra être le plus faible possible. Pour l’instant, j’envisage 150€ par rucher et 30€ à 50€ par ruches connectées. Nous verrons à l’usage.

  1. Introduction :



    Commençons par le vocabulaire :

    • RaspBerry Pi : Mini-ordinateur. Fonctionne sous Linux Débian(RASPBIAN) dans cet exemple.

    • InfluxDB : Base de données Temporelle (optimisée pour enregistrer des informations indexées sur le temps.

    • Grafana : Logiciel libre sous licence Apache qui permet la visualisation et la mise en forme de données métriques. Il permet de réaliser des tableaux de bord et des graphiques depuis plusieurs sources dont des bases de données de série temporelle (Time Series Database) comme InfluxDB.

    • Lazarus : avec FreePAscal : Environnement et langage de programmation PASCAL open source. Le code source est compilable sur toutes les plateformes PC, ARM, Linux, Windows etc.....

    • Launchpad : platine type Arduino crée par Texas Instrument. Ici, des Launchpad TIVA C et

    • Energia : Langage de programmation identique à Arduino (Fork), mais pour les Launchpad. le code est identique, seule les affectations de broches peuvent être différentes pour passer sous Arduino.



    Description du fonctionnement global :



    Un Raspberry pi sera présent sur le rucher. Il interrogera les ruches via un programme écris avec Lazarus (déja Fait), Il stockera les données dans une base de données locale Influxdb, et permettra même la consultation via un tableau de bord sous Grafana. L'apiculteur avec son smartphone, son pc ou depuis chez lui pourra consulter les données directement. Le Rapsberry recopiera à intervalle régulier les données sur un serveur présent sur internet (Influxdb + Grafana). Le Raspberry sera connecté à un Arduino qui s'occupe de la station météo classique :

    - humidité et T° (DHT11)

    - vitesse du vent

    - direction du vent

    - taux de précipitation.



    Les ruches se verrons équipées d'une balance (plusieurs proto sont en cours :

    • Utilisation d'une balance pro Mettler-Toledo en RS232 (statut : finis)

    • Utilisation d'un peson + convertisseur A/D 24 bits (en cours) ;

    • Réutilisation d'une Wii balance board (en cours).



    Chaque ruche disposera d'un DHT11 pour l'humidité et la T°. Pour l'hiver, un plateau composé de 9 Dallas DS18B20 pourra être connecté. Cela permettra de suivre la grappe d'abeille dans la ruche grâce au dégagement de T°.

    Un Arduino (dans mon cas, c'est une Launchpad) fera le lien entre la ruche et le raspberry pi.

    Grafana est chargé de gérer le tableau de bord du rucher, avec les courbes de T°/poids/humidité par ruche + la station météo bien sûr.

  2. Etape 1 :



    Télécharger « Raspbian » depuis le site officiel : https://www.raspberrypi.org/downloads/raspbian/



    Si vous voulez retoucher le code du programme Lazarus, prenez la version complète, sinon, la version sans desktop est parfaite. pour l'installation, suivez l'installation guide.
    Cela se limite quasiment à utiliser le bon logiciel pour créer la carte SD. ;-)



    Une fois celle-ci installée, nous allons pouvoir nous connecter sur notre Raspberry. Je vous encourage à changer le mot de passe par défaut, activer le SSH, lui placer une adresse ip fixe.



    Pour l’installation d’InfluxDB et de Grafana, je vous laisse le soin de regarder ce tuto : http://giatro.me/2015/09/30/install-influxdb-and-grafana-on-raspberry-pi.html


  3. Étape 2 : Mesure de poids d'une ruche via une Balance professionnelle Tolledo/Metller.
    Statut ( Proto : Fait ; Tuto : A faire )



    Sur une brocante, j'ai eut la chance d'acheter pour 40€ une balance Tolledo/Metller spider 1S. celle ci est donnée pour supporter 150Kg, ce qui est largement suffisant pour une ruche de production. le poids d'une ruche pouvant varier de 30Kg à 80kg en fonction du miel présent et de la nature de la ruche (bois, plastique etc...).

    Cette balance est entièrement en inox, dispose d'un boitier de commande séparé étanche. La spider 1S est interfaçable en RS232 (par port série).



    La première étape, c'est de pouvoir l'utiliser sous une ruche. La pesée d'une ruche est particulière, car la ruche est en permanence sur la balance. il n'est donc plus possible de faire de remise a 0. idem en cas de coupure de courant. la balance doit retrouver le dernier poids et ne pas rentrer dans une phase d'alignement ce qui produirait une remise a 0 de la pesée ! le réglage de la balance passe par le MASTER MODE. cela permet de régler certain paramètre comme la résolution, l'Autozero et surtout la Sauvegarde automatique. cela permet de garder la dernière valeur de tare.



    Configuration des paramètres de ports série :

    Pour conserver les GPIO du Raspberry PI, j'ai préféré utiliser un convertisseur USB/Série chinois a base de PL2303. Celui ci est reconnu automatiquement

    Pour la configuration de la balance, j'utilise :

    4800 Bauds, 7 Bits, Parité paire, 1 bit de stop et aucun contrôle de flux matériel ou logiciel.



    Dans l’hypothèse ou vous trouvez une balance comme celle si a bas prix, voici le lien vers le manuel en francais : https://www.mt.com/dam/mt_ext_files/Editorial/Generic/4/Spider_1S_scales_Operat_Instructions_0x0000100840b5905240007f14_files/spider_sc_plattfspider1soperatinstrfr.pdf



    Le dialogue avec la balance est assez simple. il suffit d'envoyer un "@" pour rebooter la belle, elle renvoie alors son numéro de série.

    Envoyer un "I' pour demander son identification, elle transmet alors une chaine de caractères ex : 'I4_A_123456789"
    Envoyer un "S' pour provoquer la mesure, elle transmet alors une chaine de caractères ex : 'S_S______63.23_Kg"



    Il suffit de faire un petit programme qui envoie 5 demandes de poids à la balance à 5 secondes d’intervalle, d'en faire une moyenne et de renvoyer cela directement dans Influxdb. Ensuite, ce programme sera appelé toute les 10min. Cela nous permet d'avoir l'évolution du poids dans la journée, et surtout en cas d'essaimage, une perte de 1 a 2kg d'abeille déclenche une alerte. Si l'Apiculteur est assez rapide, il peut avoir une chance de les récupérer !



    Le code en Lazarus sera joint. Il utilise une Bibliothèque 'Synaser' pour la gestion du port série. la récupération du poids passe par une analyse par expression régulière ('[+-]? ( [0-9]*[.])?[0-9]+' ) de la chaine de retour de la balance. ainsi, "S_S______63.23_Kg" deviens automatiquement un float "63.23". Le paramétrage se fait intégralement par le fichier de config "mtsics2db.conf".

    Au fait, pourquoi utiliser "influxdb" ? la réponse est simple, pour créer une nouvelle valeur en base, il suffit d'envoyer une requête http en post (oui, comme un formulaire web)...

    Voici un exemple de poids envoyé à influxdb en ligne de commande :

    curl -i -XPOST 'http://localhost:8086/write?db=MesRuches' --data-binary 'poids,rucher=01,ruche=maruche01 value=63.23'

    donc dans le code Lazarus/PASCAL, cela se traduit simplement par :

    procedure C_MTSICS2DB.INFLUXDB_Ecrit ( POIDS: String);
    Var
    Respo: TStringStream;
    URL: String;
    REQ : String;
    Reponse : String;
    begin

    URL :=concat('http://',INFLUXDB_SERVER,':',inttostr(INFLUXDB_PORT),'/write?db=',INFLUXDB_DB);
    REQ := concat('poids,rucher=',RUCHER_NOM,',ruche=',RUCHE_NOM,' value=',POIDS);

    With TFPHttpClient.Create(Nil) do
    try
    Respo:=TStringStream.Create('');
    FormPost(URL,REQ,Respo);
    Reponse:=Respo.DataString;
    writeln('Reponse serveur :', Reponse);
    Respo.Destroy;
    finally
    Free;
    end;
    end;

  4. Étape 3 : Présentation de la TI Launchpad et de l'environnement de programmation Energia.



    Statut ( Proto : Fait ; Tuto : A faire )



    Vous trouverez les différentes cartes Launchpad sur le site du fabriquant. J'utilise la MSP-EXP430G2 à 10$ et la tm4c123gxl pour 13$ (ARM 32bits à 80Mhz avec 32k de SRAM quand même...)
    Je vous encourage à regarder sur http://energia.nu/pin-maps/guide_tm4c123launchpad
    Et sur http://energia.nu/pin-maps/guide_msp430g2launchpad/ pour la petite en MSP430.



    L'environnement de programmation est le même qu’Arduino, en rouge a la place de bleu.
    Les bibliothèques sont quasi toute portées... Donc, rien de bien nouveau ici. un petit tour dans le "Language Reference" devrait vous rassurer : http://energia.nu/reference/
  5. Étape 4 : Réalisation de la station Météo.



    Statut ( Proto : Fait ; Tuto : A faire )
  6. Étape 5 : Réalisation de l’électronique de la balance à peson maison.



    Statut ( Proto : électronique OK, fabrication de la balance en cours ; Tuto : A faire )
  7. Étape 6 : Modification d'une Wii Board

    Statut ( Proto : en cours ; Tuto : en cours )



    La Wii board est une balance connecté en Bluetooth à la Wii. Cette balance a la particularité d’avoir 4 pesons, un à chaque angles. Cela lui permet de trouver votre poids par simple addition, mais aussi de pouvoir déterminer le centre de gravité. Un certain nombre de jeux ont utilisés cet accessoire, du cours de Yoga à la simulation de surf. On peut en trouver d’occasion dans les 15€.

    Il existe déjà des projets ou les auteurs ont hacker le Bluethooth. Il est donc facile de se connecter directement dessus. Oui, sauf que là c’est trop facile et si on peut minimiser les ondes dans un rucher, ce n’est pas plus mal… du coup, il nous reste la « hard way » ;)

    La platine électronique de la balance est relativement simple. On peut la décomposer en bloc fonctionnel :

    • L’alimentation

    • Le microcontrôleur / bluetooth.

    • 4 convertisseurs Analogique/Numérique 24bit Texas Instruments

    • 4 circuits d’acquisitions (peson, ampli op etc..).



    Donc, en résumant : si je supprime le microcontrôleur/bluetooth, Il me reste 4 DAC (TI ADS 1222 :
    http://www.ti.com/product/ADS1222 ) que nous pouvons directement contrôler avec notre propre Arduino/TI Launchpad.

    La communication avec l’ADS1222 est une communication de type série sur 2 fils. L’implémentation sur un Arduino ne pose pas de réel problème. Une fois la communication établie, un certain nombre de scénarii deviennent possibles :

    1) On conserve la même structure avec les mêmes pesons, et on est capable de trouver le poids et même le centre de gravité de la ruche… Pour le poids, ok, pour le centre de gravité ou l’évolution de celui-ci, pas sûr qu’il y ait un intérêt, mais pourquoi pas tester pour voir.

    2) On change les pesons par des jauges de contrainte industrielle, on adapte un peu la partie analogique de la platine et on se retrouve avec 4 balances donc 4 ruches pour une Wii board !!!

    Pour l’instant, je privilégie le scénario n°1. La difficulté dans celui-ci, c’est de transformer des valeurs numérique sur 24bits en Kg. J’ai encore du débogage sur la communication avec la platine Wii, mais j’ai bientôt bouclé cette partie. C’est la prochaine étape de ce tuto ! =)

    Pour les 4 ruches, nous verrons plus tard.
  8. étape 7 : Réalisation de la matrice de DS18B20. Surveillance de la grappe d'abeille l'hiver.



    Statut ( Proto : Fait ; Tuto : A faire )
  9. Étape 8 : Gestion de l’énergie (panneaux solaire)



    Statut ( Proto : Fait )



    J'utilise un panneau solaire pour charger une batterie de voiture. Le schéma du chargeur et issu du très bon "Power Supply Handbook" de John Fielding édité par l'ARRL (ISBN 190508621-0, 2006, P229). Je vous laisse le schéma en pièce jointe. Je n'ai pas apporté de modification à ce schéma. Pour le réglage, étant dans le nord est de la France, plutôt que d'attendre une grande journée de soleil, j'ai simulé le panneaux solaire avec une alim 0-30v variable.

    Pour obtenir un suivit via Grafana, J'ai juste connecté une entrée Analogique de ma launchpad aux bornes du panneaux solaire et une autre à la batterie (évidemment avec les protections adéquate (la launchpad est en 3v3, mais 5v compliant). Cela me permet d'avoir un état de la charge de la batterie, et un niveau (en volt) représentatif de l'ensoleillement.
  10. Étape 9 : Surveillance de la récupération d'eau de pluie et des abreuvoirs a abeilles.



    Statut ( Proto : Fait ; Tuto : A faire )
Réalisé par
Posté le
Univers
Écoconception
Temps de fabrication
1 mois
Niveau de difficulté
Avancé
Matériel(s)
1
Raspberry Pi 3 model B
2
un kit Arduino
1
1 kit de 20 DS18B20 par ruche a suivre l'hiver (ruche en vie, position de la grappe)
2
DHT11 (humidité et T° de la ruche et du rucher)
1
un peson + AD24bits, une balance intelligente ou une Wii Board
1
une ou plusieur ruche ! les valeurs données sont pour une. :-)
1
1 Panneau solaire 12/18v 40w environ
1
1 batterie 12v voiture ou onduleur.
1
LM741 + quelques composants.

6 commentaires

  1. fab9 said on avril 8, 2018

    Comment avez vous fait pour la base de donnée ?

  2. f4dtr said on avril 9, 2018

    Bonjour fab9,

    Merci de vous intéresser à mon projet.
    Mais pourriez vous préciser ce qui vous intéresse ?
    Pour la base de donnée, j’utilise InfluxDb. Maintenant, qu’est ce que vous voulez savoir : l’installation ? la configuration ou l’utilisation de celle ci par mon programme ?
    Ou même d’autres choses ?

    Merci !
    JY 🙂

  3. Bonjour,
    Et bravo pour ce projet, très intéressant et très documenté –
    Je compte faire un essai sur une ruche, avec un balance board WII, mais souhaite éviter de refaire un travail si vous l’avez déjà fait, donc, j’ai une question :
    Avez-vous avancé sur la conversion des données 24bits en kg ?
    D’avance, merci,
    Alnath

  4. f4dtr said on mai 15, 2018

    Bonjour Alnath, désolé du délais de réponse.
    Mais entre mon taf, mes autres obligations et mes Zaza 😉 il me manque un petit peut de temps.

    Bon, concernant la Wiiboard, j’ai bien avancé. je commence à communiquer sérieusement avec l’ADC.
    Encore 1 ou 2 weekend, et je pourrais publier le code Arduino en V0.1.
    Le projet commence à avoir suffisamment d’éléments pour que J’envisage enfin la création du wiki.
    Celui ci contiendra toutes mes infos (tuto d’install, codes Lazarus, Arduino/Energia, schéma, plan SketchUp du futur rucher etc.

    A bientôt !
    JY

  5. alnath said on mai 17, 2018

    Bonjour f4dtr,
    merci de la réponse, et bon courage – Je viendrai voir l’avancement régulièrement.

    Bonne journée,
    JF

  6. adrienlc2 said on novembre 19, 2018

    Bonjour, serait-il possible d’avoir plus détails pour la réalisation de la matrice de capteurs DS18B20 ?
    Merci d’avance et beau projet ! 🙂

Vous devez être connecté pour laisser un commentaire.