« Suivi des ruches » : différence entre les versions

De Kernel Fablab Lannion
mAucun résumé des modifications
 
(73 versions intermédiaires par 4 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[Fichier:Bzzz-logo fond blanc.jpg|thumb|Logo projet Bzzz]]
[[Fichier:Bzzz-logo fond blanc.jpg|thumb|Logo projet Bzzz]]


= Présentation =
= Présentation =
Le projet Bzzz (Bee Zen Cube) est un projet de suivi de ruches pour une apiculture vraiment Zen ( pour l'apiculteur et pour ses abeilles ^^), il a pour but de proposer gratuitement à tout apiculteur amateur un peu bricoleur les plans d'un kit de supervision de son rucher (mono-ruche voir évoluer vers le multi-ruche). Le projet Bzzz souhaite suivre l'évolution de la santé de la ruche à distance c'est à dire, la prise de poids, son bien-être interne (température) et l'alerte en cas d'essaimage. Évitant ainsi de multiples déplacement de l'apiculteur.
 
Le projet Bzzz (Bee Zen Cube) est un projet de suivi de ruches pour une apiculture plus anticipative, il a pour but de proposer gratuitement à tout apiculteur amateur les plans d'un kit de supervision de son rucher (châssis de mesure autonome, et si le prix des émetteurs LoRa reste élevé réaliser une station d'émission qui centraliserait plusieurs châssis secondaires). Le projet Bzzz suit l'évolution de la santé de la ruche à distance, principalement par la mesure des variations de poids, la température locale et donner l'alerte en cas d'essaimage ou surtout, de la préparation de l'essaimage. On fait tout cela pour éviter de multiples déplacements de l'apiculteur.


Le projet Bzzz est un projet [http://fr.wikipedia.org/wiki/Open_source Open-source] et [http://en.wikipedia.org/wiki/Open-source_hardware Open-hardware]
Le projet Bzzz est un projet [http://fr.wikipedia.org/wiki/Open_source Open-source] et [http://en.wikipedia.org/wiki/Open-source_hardware Open-hardware]


Le projet est né suite à la demande d'un apiculteur amateur de pouvoir superviser (surveillance avec divers capteurs) sa ruche avec une solution innovante et abordable. La présentation de l'idée de départ:[[Fichier:Projet Bzzz.pdf|thumb|Presentation V0]]
Ce projet fédère plusieurs bénévoles au sein du fablab et est suivi par les médias locaux ainsi que par des apiculteurs d'autres régions (volontaire pour prototypage notamment). Plusieurs apiculteurs ont aussi fait le déplacement au sein du FabLab de Lannion pour venir découvrir ce projet et se porter volontaire pour une période de béta-test dés que la solution sera pleinement fonctionnelle.<br />
<br /><br />
 
[[File:RucheIcono.jpg|center|800px|Schématisation du fonctionnement du projet Bzzz]]
<br />
<br /><br />
 
Après avoir définit le besoin, un cahier des charges a été définit pour cette supervision d'un rucher monoruche (v1.0 du projet):<br />
= Participants =
- Une seule et unique ruche supervisée<br />
<div class="toccolours mw-collapsible mw-collapsed">
- Supervision de la masse, la température interne, la luminosité extérieur<br />
<div class="mw-collapsible-content">
- Autonomie électrique du système (pas de branchement électrique filaire nécéssaire)<br />
* Bernard Arzur
- Envoi par SMS des données de manière périodique<br />
* Frédéric Carré
- Système d'affichage des données (portail en ligne)<br />
* David Blaisonneau
- Système d'alerte avec seuil définit (configurable via le portail)<br />
* Thierry Houdouin
<br />
* Jérôme Labidurie
* Tangi Lavanant
* François-Xavier Potel
* Morgan Richomme
</div>
</div>
= Chassis / Capteurs =
 
Porteur: Bernard
 
== Module Chassis ==
===Demi-Chassis (abandonné)===
* Une seule jauge de contrainte (50 kg) par capteur/demi-chassis(diminution du prix)
* On accède au paramètre de variation du poids
* La valeur absolue du poids de la ruche n'est pas connue
* On peut voir le shield W6Labs associé à un Arduino UNO et un HX711.
[[File:DemiRuche.jpeg|400px]]
[[Fichier:DSCF1946.jpg|400px]]
 
===2 Demi-Chassis (abandonné) ===
*Le support associé est remplacé par un 2éme demi-chassis
* Le poids exact est connu par la somme des 2 valeurs issues des 2 capteurs
* Le coût est un peu plus élevé
 
 
 
===Chassis autonome===


Ce projet fédère plusieurs bénévoles au sein du fablab et est suivi par les médias locaux ainsi que par des apiculteurs d'autres régions (volontaire pour prototypage notamment). Plusieurs apiculteurs ont aussi faits le déplacement au sein du fablab de Lannion pour venir découvrir ce projet et se porter volontaire pour une période de béta-test dés que la solution sera pleinement fonctionnelle:<br />
Cette solution, simple, a été rendue possible par la forte baisse du prix des composants (LoRa, jauges, ...) et aussi par la réduction drastique de la consommation du Lopy4 en mode veille (=> abandon de l'Arduino associé à une carte économiseur).
- [http://www.letelegramme.fr/local/cotes-d-armor/lannion-paimpol/ville/fablab-les-abeilles-font-le-buzz-a-la-ruche-13-11-2013-2300993.php Le télégramme de novembre 2013]<br />
* Quatre jauges de contrainte par châssis.
- [http://www.dailymotion.com/video/x16yp5y_lannion-le-projet-bzzz-a-son-prototype Explication du dispositif au Télégramme en novembre 2013 disponible en vidéo]] (une présentation improvisé pour l'occasion)<br /><br />
* On accède aux paramètres de poids dans l'absolu, de la variation du poids, et aussi du centre de gravité (placement de l'essaim dans la ruche et des cadres remplis).
* La valeur absolue du poids de la ruche est connue, mais il ne faut pas oublier la variation due à l'humidité du bois (peut monter à 15% du poids du bois de la ruche) et la correction nécessaire pour compenser les écarts thermiques. Comme on mesure des microvolts, le moindre effet de couple thermo-électrique est largement amplifié : éviter soudures, connectiques...


Les évolutions possibles sont notées dans la partie [[Suivi_des_ruches#Todo_liste|ToDoList]] (amélioration, bug à corriger, ajout de capteurs, multi-ruche, etc...).<br /><br />
<big>Cahier des Charges :</big>
Les recherches effectuées n'ont montrées aucune contre indication par rapport aux brevets déjà existants. <br />


= Planning  =
-système autonome pendant une année entière
Avril/Mai 2013: Définition du cahier des charges, choix de la méthode de supervision (capteur, portail, ...), test des solutions en labo <br />
Juin 2013: Premier prototype fonctionnel et mise en place en condition réel pour première conclusion de fonctionnement.<br />
Juillet 2013: Evolutions/améliorations suite aux tests en condition réels.<br />
Aout 2013: Deuxième essai en condition réel et évolution possible. Etudes pour résoudre les différents problèmes rencontrés. <br />
Novembre 2013: Recherche de béta testeurs et de budget pour pouvoir finaliser le projet. Plusieurs béta-testeurs se sont manifestés (participation de leur part pour l'achat du matériel). <br />
Décembre 2013: Etude sur l'autonomie, prototypage avec des puces basse consommation (hors ruches). <br />
Janvier 2014: Todo: Mise à jour de la documentation, Test d'autonomie sur puce Atmel. <br />
Février 2014: Todo: Test du prototype et Contacter les béta-testeurs qui se sont manifestés. <br />
Mars 2014: Todo: A définir (mise en place des béta-tests). <br />
...


= Détails technique côté rucher =
-l'ensemble des composants doit fonctionner entre -30°C et +70°C
Détails fonctionnels de la supervision et la mise en oeuvre sur le terrain sont décrites dans cette partie (les choix techniques possibles ont été discutés dans la partie [[Discussion:Suivi_des_ruches|discussion]] du projet)


== Supervision pour un rucher monoruche ==
-une mesure toutes les 10 minutes, y compris pendant la nuit (éviter le vol de ruche), soit ~50 000 mesures/an
[[File:Bzzz_monoruche.svg|600px|center]]


Le système actuellement développé est un prototype qui nécéssite d'être optimisé (en consommation et en coût) dans des versions futures, les informations présentes dans cette partie présente le prototype pour superviser un rucher monoruche. Ce prototype est nommé Step-1.01 (prototype éligible à béta-test).
-précision souhaitée : 10 grammes (100 abeilles) pour une masse maximum de 100 kg


Le système monoruche est composé des élèments suivant:
-compatibilité avec la norme LoRa (durées et fréquences d'émission)
- Une ruche (tous type de ruche)
- Un support de ruche (supporte la ruche et le système de supervision)
- Un lot de sachet type "pompote" (supporte la ruche et se compresse en fonction du poids)
- Des tuyaux silicone et un raccord en T de section


- Page supervision d'une ruche (système du capteur, de la pesé et l'installation de la ruche)
-coût inférieur à 100 €


- Une seule ruche (explication de la communication vers le serveur) + lien vers les deux cas (couverture wifi ou non)
-pas de câbles ni fils visibles


== Supervision pour un rucher multiruche (une fois que la version monoruche sera validée) ==
-hauteur maximum 30 mm
- Etude de cout et mise en oeuvre à faire
- Page supervision d'une ruche (système de capteur), identique au mono ruche
- n ruche esclave + mise en oeuvre du réseau courte portée emetteur vers le maitre
- 1 ruche maitre + mise en oeuvre du réseau courte portée récepteur + lien vers les deux cas (couverture wifi ou non)


== Rucher à portée d'un réseau Wi-Fi ==
-gestion simple
- Etude de cout et mise en oeuvre à faire


== Rucher sous couverture GSM ==
= Mesure du poids =
- Etude de cout et mise en oeuvre à faire


*Il est connu à 10 grammes près, sur une plage de  0 à 100 kg, avec des jauges de 20 kg. Si on vise au-delà de 80 kg (4*20kg), il existe des jauges de 50 kg beaucoup plus coûteuses et forcément un peu moins précises.
*Mesuré par une jauge de contrainte résistive connectée en un pont de Wheatstone [https://fr.wikipedia.org/wiki/Jauge_de_d%C3%A9formation]
*Numérisation de la mesure (0-10mV) par un module HX711 (convertisseur analogique/numérique à 24 bits de précision)
*Le module HX711 est connecté au plus près de la jauge, pour éviter les interférences électromagnétiques et les effets thermiques (thermo-couple). Les effets thermiques sur la résistance de mesure sont en principe compensés par l'utilisation d'une autre résistance montée en orthogonal sur la jauge.
*Le module HX711 est connecté au module d'émission IoT, qui peut donc en recevoir plusieurs. Avec Lopy, il a été impossible d'utiliser un canal de données commun (DOUT), alors qu'avec Arduino, cela fonctionne. Comme on dispose d'assez d'entrées/sorties, la question se résout facilement : chaque HX prend une entrée (DOUT) et une sortie (SCK).


== Description et détails à réécrire ==
= Arrachage / Vol =
Alarme au bout de 10 minutes maximum, sur variation de poids brutale


On utilise 2 sachets de Pompote remplis d'eau placé sous le support pour mesurer les variations de poids de la ruche.
Alarme instantanée sur capteur de contact, optionnel


La pression est transmise depuis le support jusqu'au capteur en utilisant un liquide pour
= Châssis autonome (Mesure et Émission) =
éviter les variations de température et de pression atmosphérique.


Le liquide doit être de l'eau sucrée pour éviter le gel et l'évaporation.
==Boitier==


On utilise un capteur MPX 5100 (0 a 1 Bar) [http://www.freescale.com/files/sensors/doc/data_sheet/MPX5100.pdf]
L'idée, au départ, était d'avoir un boîtier avec émetteur RF qui collecte plusieurs balances sans émetteur, voire sans batterie, vu le prix élevé des composants à ce moment...


=====Test: Utilisation de Pompote=====
*Il doit être étanche, résistant car il restera à l'extérieur plusieurs années.
*Il doit donc être de catégorie IP64 au moins. Nous avons choisi IP65 pour une meilleure fiabilité à long terme.
*Ce boîtier contiendra :
** L'alimentation électrique (batterie lithium + carte économiseur)
** Arduino + carte Lora
** Antenne


:La tension en sortie du capteur + montage semble stable.
*Nous avons donc choisi un boîtier "Raccordement Fibre Optique" qui permet d'ajouter facilement des entrées-sorties -> abandon, on ne veut plus de fils/cables autour de la ruche, pour des raisons de sécurité et de fiabilité.
:
:Avancement 12/06/2013: Test sur une chaine de bout en bout avec la pompote solution: <br />
:[[File:20130612_200534.jpg|400px]]<br />
:Résultat visible dans [http://projects.emerginov.org/Bzzz/ site de test]    (''login'' test ''mdp'' <rien> ), joli bois


'''<big>TODO : montage elec en sortie + Fct de transfer tension/kg</big>'''
==Alimentation solution Arduino==
* Batterie de 4 éléments de 2800mAh
* La carte économiseur (basée sur 3 relais basse consommation Reed et un Ampli-Op LM324)  permet de diviser la consommation par 100 :
** 1 mA en consommation moyenne > 6 mois d'autonomie prévue
** 0.6mA au repos
** 120mA en émission (qq secondes toutes les 10 min)
Cependant, l'autonomie obtenue est insuffisante et la carte économiseur revient cher (>20€).


==Alimentation solution Lopy==


=== La boîte (Plans et réalisation proto) ===
Solution retenue : 3 Batteries de 3000mAh


Une photo d'un proto presque complet (monoruche sans zigbee) => Ruche / Capteur Masse / Capteur Température / Capteur Lumière / Panneau solaire.
La carte Lopy4 (pas toutes les versions, malheureusement!) dispose d'une mise en veille profonde : elle coupe l'alimentation du processeur principal, et la consommation chute à une valeur très faible, entre 20 µA et 200µA. Cette consommation varie à la hausse si on utilise la carte Expansion Board pour connecter le Lopy4.
[[File:20130704_004325_l.jpg|400px]]
On essaiera de s'affranchir de cette carte, à cause de son prix (~20€), de sa conso (due entre autre autres au pont diviseur pour mesurer la tension batterie) et des limitations du chargeur de batterie (500 mA max).
<br / >
On la remplace par un circuit de charge, un pont diviseur de haute impédance et on soude directement le Lopy sur le circuit imprimé.
Mise en place de ce proto en condition réel (mesure tous les 15min le jour, toutes les 2h la nuit.
=== Energie ===
@david.blaisonneau, @cedricbou


==== Limitation de la consommation d'énergie ====
Pour se maintenir en veille, les HX711 ont besoin d'être polarisés en tension sur la broche SCK, il faut monter des résistances de pull-up d'environ 1 MOhm entre SCK et +3.3V. Sinon, chaque HX711 pourrait rajouter 8 mA à la consommation de veille.
Sur l'arduino, la librairie 'Narcoleptic' (modifiée pour prendre en compte de longues durées) est utilisée pour endormir l'arduino pendant une durée configurable.
Coté shield, le shield GSM choisi [http://www.seeedstudio.com/wiki/GPRS_Shield_V2.0] permet d'allumer/éteindre la puce GSM via un soft-switch, cela limite donc la consommation au strict nécéssaire.


==== Alimentation ====
L'alimentation par le Solar shield testé [http://www.seeedstudio.com/wiki/Solar_Charger_Shield_v2.0b] + Batterie Lipo 3.7V n'est pas assez puissante, d'autres tests dans des configurations différentes sont à faire.
Un test de durée de batterie est en cours avec une pile 9v et une période d'envoi de SMS toutes les 15 minutes.


=== Communication entre les ruches ===
** 10 000 heures(~une année) au repos représentent donc, pour 100µA ->  1000 mAh
@laurent, @guillaume.remy


Filaire ou ZigBee. Pour l'instant ZigBee est retenu.
** Lorsque Lopy4 se réveille, il doit recompiler son code : ça prend entre 2,5 s (70 lignes) et 3.5 s (250 lignes) selon la complexité du programme et l'appel aux différentes bibliothèques. Puis il effectue la mesure de poids et envoie le paquet LoRa.  


Le prototypage se fait sur deux Arduino Uno munis de shields ZigBee, l'un simulant une ruche et l'autre le collecteur du rucher. Nous sommes parvenus à faire communiquer la ruche avec le collecteur du rucher par l'intermédiaire du ZigBee. La prochaine étape consiste émuler un capteur qui envoi des données à l'Arduino, afin d'évaluer la consommation en énergie de chaque ruche.
La durée de transmission LoRa est minimisée en configuration RAW : on transmet le paquet en clair vers un récepteur calé sur la même fréquence. Le type de trame est le suivant : "labeld4212dbzz3d284d452d406d233d", soit 32 à 40 octets, label permet d'identifier que c'est notre trame, d est le délimiteur avec le champ suivant qui est la tension batterie, bzz3 est le nom de la ruche tel qu'on l'a défini sur TTN par exemple, puis les quatre poids en grammes. La somme des 4 donne le poids total et sa position en 2D.


Photo avancement au 22/04/2013:<br/>
On peut transmettre en APB vers une GateWay de TTN par exemple. On envoie d'abord plusieurs champs que TTN aura calculé au préalable : un champ de 8 octets pour l'identité d'émetteur, un champ de 32 octets pour l'application et un champ de 32 octets pour l'identité du réseau. Et puis, on envoie notre trame sans le champ label, qui est remplacé par les champs TTN. On devine que ce deuxième mode APB sera un peu plus lent et plus gourmand en énergie et bande passante(70 octets de plus) et pas forcément compatible avec les critères LoRa.
[[File:20130423_133322.jpg|400px]][[File:20130423_1332031.jpg|400px]] <br/>
<br/>


Module Xbee utilisé:<br/>
Le mode OTAA n'a pas été considéré, il nécessite régulièrement un échange bidirectionnel avec la GateWay de TTN pour maintenir notre émetteur sur le réseau TTN, entraînant une surconsommation d'énergie.
Module ZigBee Xbee série S2.
Modules mis à jour pour une version firmware type ZB, par le logiciel XCTU. <br/>
<br/>
TODO:<br/>
Desactiver l'émission de Data_Request du Xbee, par une commande API venant de l'Arduino pour mise en sommeil profonde du XBee. <br/>
Estimer la consommation du module XBee End_device (Slave) accompagné de son Arduino. <br/>
Définir la pile/batterie à utiliser sur l'ensemble Arduino/Xbee Slave. <br/>
Etablir une gestion de sommeil de l'Arduino par Timer, de manière à se réveiller toutes les 15 mns. <br/>
Fusionner le soft Arduino Master (GSM / Xbee) pour tester la chaîne complète. <br/> 
<br/>
Fait:<br/>
Mesure d'une entrée brute de l'ADC "Arduino Xbee Slave" envoyée, reçu et affichée sur la sortie "Arduino Xbee Master".<br/>
Reprogrammation du firmware XBee Router livré usine, en firmware End_Device (adapté Low Power). <br/>
Mise en sommeil du XBee commandé par une IO de l'Arduino. <br/>


Le courant absorbé varie durant le cycle entre 40 mA (compilation), 140 mA (mesure) et 200 mA (envoi paquet LoRa), avec une moyenne à 120 mA pour un cycle de 14s. Pour 5 s, l'intensité moyenne devrait être plus basse (à vérifier), puisque le % du à la compilation est plus grand.


=== Communication entre le rucher et internet ===
[[:File:integration_intensite_lopy_pour_un_cycle.jpg]]
''@laurent, @guillaume.remy''


WiFi : Si le rucher est à proximité d'une maison
Si on veut faire 50 000 mesures, elles vont durer 50 000 *(3.5s + 1.5s) / 3600 = 70 heures, soit 8300 mAh avec une consommation de 120 mA.


GSM : Envoi de SMS, couverture nationale


Réseau dédié M2M bas débit : http://www.sigfox.com/ couvre apparemment la France métropolitaine
** il faudra donc (1000 + 8300) = ~9000mAh, soit 3 batteries de 3000 mAh.
On ne tient pas compte de l'auto-décharge, qui est faible avec les batteries Lithium.


La taille utile du message est de 12 octets. On peut émettre 140 messages/jour maximum
==Arduino Lora==
<br />
<br />
''@david @nicolas''<br />
Aperçu du code arduino pour une unique ruche (capteur et envoi de SMS): [[:File:Bzzz_Proto_v0.2.txt]] <br />


=== Liste du matériel ===
<table border="0" cellspacing="0" cellpadding="0" class="ta1"><tr class="ro1"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.258cm; " class="ce6"> </td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.531cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.531cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.258cm; " class="ce6"> </td></tr><tr class="ro1"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.258cm; " class="ce6"> </td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.531cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.531cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.258cm; " class="ce6"> </td></tr><tr class="ro1"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.258cm; " class="Default"><p>PU</p></td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.531cm; " class="ce6"><p>Montage GSM</p></td><td xmlns="" style="text-align:left;width:2.531cm; " class="ce9"><p>Montage Eth</p></td><td xmlns="" style="text-align:left;width:2.258cm; " class="ce6"> </td></tr><tr class="ro2"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"><p>Capteur de pression</p></td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"><p>Conrad</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>39,95 €</p></td><td xmlns="" style="text-align:left;width:14.896cm; " class="ce7"><p><span xmlns="http://www.w3.org/1999/xhtml" class="T1"><a href="http://www.conrad.fr/ce/fr/product/183890/Capteur-de-pression-differentielle-MPX-5100-DP">http://www.conrad.fr/ce/fr/product/183890/Capteur-de-pression-differentielle-MPX-5100-DP</a></span></p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>79,90 €</p></td></tr><tr class="ro2"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"><p>Carte GPRS</p></td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"><p>Snootlab</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>56,09 €</p></td><td xmlns="" style="text-align:left;width:14.896cm; " class="ce7"><p><span xmlns="http://www.w3.org/1999/xhtml" class="T1"><a href="http://snootlab.com/seeedstudio/419-gprs-shield-v20.html">http://snootlab.com/seeedstudio/419-gprs-shield-v20.html</a></span></p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>0</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>56,09 €</p></td></tr><tr class="ro2"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"><p>Arduino Uno</p></td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"><p>Snootlab</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>19,50 €</p></td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"><p><a xmlns="http://www.w3.org/1999/xhtml" href="http://snootlab.com/arduino/142-arduino-uno-rev3.html">http://snootlab.com/arduino/142-arduino-uno-rev3.html</a></p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>39,00 €</p></td></tr><tr class="ro2"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"><p>Temperature sensor with steel head</p></td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"><p>Seeedstudio</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>1,20 €</p></td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"><p><a xmlns="http://www.w3.org/1999/xhtml" href="http://www.seeedstudio.com/depot/Temperature-sensor-with-steel-head-p-78.html?cPath=25_27">http://www.seeedstudio.com/depot/Temperature-sensor-with-steel-head-p-78.html?cPath=25_27</a></p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>2,40 €</p></td></tr><tr class="ro2"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"><p>Ethernet shield Rev 3 POE Ready</p></td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"><p>Snootlab</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>33,11 €</p></td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"><p><a xmlns="http://www.w3.org/1999/xhtml" href="http://snootlab.com/arduino/163-ethernet-shield-r3.html">http://snootlab.com/arduino/163-ethernet-shield-r3.html</a></p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>0</p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>33,11 €</p></td></tr><tr class="ro2"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"><p>LiPo Rider Pro</p></td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"><p>Seeedstudio</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>10,82 €</p></td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"><p><a xmlns="http://www.w3.org/1999/xhtml" href="http://www.seeedstudio.com/depot/lipo-rider-pro-p-992.html?cPath=1_75">http://www.seeedstudio.com/depot/lipo-rider-pro-p-992.html?cPath=1_75</a></p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>0</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>10,82 €</p></td></tr><tr class="ro2"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"><p>Lipo 2000mAh</p></td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"><p>Snootlab</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>16,00 €</p></td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"><p><a xmlns="http://www.w3.org/1999/xhtml" href="http://snootlab.com/sparkfun/317-batterie-polymere-lithium-ion-37v-2000mah.html">http://snootlab.com/sparkfun/317-batterie-polymere-lithium-ion-37v-2000mah.html</a></p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>0</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>16,00 €</p></td></tr><tr class="ro2"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"><p>Photoresistance 4mm</p></td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"><p>Snootlab</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>2,51 €</p></td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"><p><a xmlns="http://www.w3.org/1999/xhtml" href="http://snootlab.com/composants/97-photoresistance.html">http://snootlab.com/composants/97-photoresistance.html</a></p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>5,02 €</p></td></tr><tr class="ro2"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"><p>Barrette sécable 16 pts pack de 5</p></td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"><p>Snootlab</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>1,81 €</p></td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"><p><a xmlns="http://www.w3.org/1999/xhtml" href="http://snootlab.com/connecteurs/306-barrette-secable-16-pts-5-pack.html">http://snootlab.com/connecteurs/306-barrette-secable-16-pts-5-pack.html</a></p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>0</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>1,81 €</p></td></tr><tr class="ro2"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"><p>Connecteur USB Mâle type A à souder</p></td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"><p>Snootlab</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>1,10 €</p></td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"><p><a xmlns="http://www.w3.org/1999/xhtml" href="http://snootlab.com/adafruit/532-connecteur-usb-male-type-a-a-souder-fr.html">http://snootlab.com/adafruit/532-connecteur-usb-male-type-a-a-souder-fr.html</a></p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>0</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>1,10 €</p></td></tr><tr class="ro2"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"><p>Câble USB noir 1 m type B</p></td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"><p>Snootlab</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>2,90 €</p></td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"><p><a xmlns="http://www.w3.org/1999/xhtml" href="http://snootlab.com/cables/136-cable-usb-noir-1m-type-b.html">http://snootlab.com/cables/136-cable-usb-noir-1m-type-b.html</a></p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>0</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>2,90 €</p></td></tr><tr class="ro2"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"><p>Alimentation 9V 2A</p></td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"><p>Snootlab</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>15,55 €</p></td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"><p><a xmlns="http://www.w3.org/1999/xhtml" href="http://snootlab.com/alimentations/359-alimentation-9v-2a.html">http://snootlab.com/alimentations/359-alimentation-9v-2a.html</a></p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>0</p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="Default"><p>1</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce6"><p>15,55 €</p></td></tr><tr class="ro1"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.258cm; " class="ce6"> </td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.531cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.531cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.258cm; " class="ce6"> </td></tr><tr class="ro1"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.258cm; " class="ce6"> </td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"> </td><td xmlns="" style="text-align:right; width:2.531cm; " class="ce8"><p>151,88 €</p></td><td xmlns="" style="text-align:right; width:2.531cm; " class="ce8"><p>111,82 €</p></td><td xmlns="" style="text-align:right; width:2.258cm; " class="ce10"><p>263,70 €</p></td></tr><tr class="ro1"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.258cm; " class="ce6"> </td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.531cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.531cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.258cm; " class="ce6"> </td></tr><tr class="ro1"><td xmlns="" style="text-align:left;width:6.726cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.314cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.258cm; " class="ce6"> </td><td xmlns="" style="text-align:left;width:14.896cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.531cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.531cm; " class="Default"> </td><td xmlns="" style="text-align:left;width:2.258cm; " class="ce6"> </td></tr></table>


= Détails techniques côtés serveur de données =
== Serveur Collecte et Affichage Smartphone ==
@colvert, @benoitb


=== Nano spec ===
Actuellement il y a 3 pistes:
Le but du serveur est de
* LoRa + Arduino : abandon, prix shield >> et conso >>
* déclarer des ruchers
* LoRa + Lopy : retenue
* déclarer des ruches dans des ruchers
* LoRa + ESP32 : à creuser, retenue pour Projet Macareux qui est très similaire
* collecter des données de ruches
* afficher les graphs de données par ruche
* générer une alerte en acs de delta entre 2 mesures pour une ruche donnée


==== Data model ====
=== Lora + Arduino ===
le petit modèle objet peut être décrit comme suit
[[File:Bzz SQL model.png|400px]]


Le serveur est développé en jquery model histoire d'être visualisable indiféremment sur PC, tablette ou smartphone.
*Le module HX711 émet un signal numérique sur la broche DOUT (data out) lorsqu'il est piloté par la broche SCK.
* Il est connecté sur les broches I/O de l’Arduino
* On peut mettre 4 HX711 sur l’Arduino en l'état actuel, à voir si on peut multiplexer les capteurs sur 2 broches. Pas utile en fait, il y a assez de broches sur Arduino ou Lopy.
* Le module LoRa (shield W6Labs, Rennes)[https://froggyfactory.com/shop.php#shop : carte pour Arduino], utilise les pins 10-11-12-13


==== Fichiers ====
=== LoRa mDot ===
l'arborescence fichier simplifiée peut être vue comme suit:
[[File:Bzzz spec.png|400px]]


'''Nommage des ruches'''
Piste abandonnée : MTDOT-868-X1P-SMA-1 - http://www.multitech.com/models/94557138LF


chaque ruche est identifié par le numéro de téléphone du shield GSM (à terme ça sera l'identifiant de rucher)
== Conformité à LoRa ==


On se base désormais sur le système [http://projects.emerginov.org/sensonet/ sensonet] pour la gestion du réseau de capteur.
La norme LoRa impose deux critères : temps d'occupation global de l'espace aérien (airtime de 30 secondes par jour pour TTN) et temps d'occupation d'une sous-bande de 1%. Voir par exemple : https://forum.thethingsnetwork.org/t/limitations-data-rate-packet-size-30-seconds-day-fair-access-policy-nodes-per-gateway/1300
le projet Bzzz s'est donc "abonné" aux données du réseau Bzzz et a indiqué une classe de callback (bzzzsensonet.php) qui est invoquée à chaque fois qu'un SMS relatif à Bzzz est reçu via sensonet.
L'utilisationd e sensonet permet de bénéficier de toutes la logique de ce réseau de capteurs, de son API, de ses pages de visualisation et de son application android.


La fonction de callback permet de monter en base les données collectées par Sensonet, un peu à la manière de l'ancienne gestion (cf plus bas)
Trame LoRa : il y a  13 octets pour l'encapsulation WAN  (qui peut monter à 23 o en cas de join request,
voire jusqu'à 28 o ), mais il ne faut pas oublier les 10,25 temps symboles du préambule de la couche physique (en SF8 ça fait 10 o), avec en plus 5 o optionnels pour header et CRC, soit minimum de 23 octets pouvant aller à 43 o.
cf : https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5038744/


'''Librairies'''
Avec le calculateur joint [[:File:LoRa(WAN) airtime calculator.ods]] , en SF8, on trouve que la ruche peut émettre 323 mesures de 2 octets par jour, 224 mesures de 20 o et 182 à 30 octets, compatible avec un cycle de 10 minutes (24*6=144).
* jquery mobile
Les durées d'émission, en SF8, iraient de 92 ms à 164 ms pour une payload (charge utile) de 2 à 30 o.
* [http://leafletjs.com/ leaflet]: carto [http://openstreetmap.fr/ openstreetmap] pour la localisation d'un rucher (adLocalisation.php)
* [http://www.jqplot.com/ jqplot]: pour grapher les résultats des sondes (stats.php)


=== captures d'écran ===
En bref, jusqu'à 30 octets, on peut presque négliger l'importance de la payload....


==== l'accueil ====
== Fiabilité ==
[[Fichier:Bzzz0.png]]


test/ <pas de mot de passe>
La fiabilité recouvre plusieurs aspects :
* fiabilité physique des composants (en particulier de la batterie, qui pourrait vieillir assez vite)
* fiabilité logicielle : on a vu que l'on faisait 50 000 mesures par an, soit 50 000 fois la compilation. Sur les premières versions de Lopy4, au bout de 500-2000 mesures, celui "plante" une fois pendant la compilation, reste dans un état intermédiaire (le chien de garde qui "tourne" sur le logiciel actif est alors inopérant) et vide la batterie en quelques jours. La dernière version semble mieux se comporter...
* fiabilité des mesures : il ne s'agit pas de lancer des alarmes à tort et à travers, à tout moment, à cause d'une mauvaise mesure. La programmation des HX711 a due être revue pour obtenir une bien meilleure fiabilité.
Il y a quelques fois des mesures hors norme, mais on peut les rejeter en les opposant aux valeurs des trois autres capteurs. Si trois capteurs sont stables et que le quatrième s'égare, on déclare la mesure fausse et on attend un cycle.


==== le menu principal  (tous les ruchers) ====
== Web ==
[[Fichier:Bzzz1.png]]
==== visualisation d'un rucher ====
[[Fichier:Bzzz2.png]]
==== configuration du rucher ====
[[Fichier:Bzzz4.png]]
==== options d'alertes du rucher ====
[[Fichier:Bzzz3.png]]


Porteur: David


=== Todo liste ===
=== Principe ===


==== A faire: ====
* L'utilisateur ajoute une ruche > un module > N capteurs
* codage des cas pas droits (TODO dans le code qui vérifie si le rucheid n'est pas valide, si le rucherid est le bon .. pour le moment je fais confiance au gars qui tape
* L'utilisateur configure chaque capteur si besoin (tare, échelle)
* commentaire code
* L'utilisateur configure le seuil de déclenchement des alertes
* gérer le système d'alerting (partiel)
* Le site web recoit les données brutes des capteurs via la passerelle et les transforme en données utile si besoin
* Mettre à jour le wiki avec explication du fonctionnement (faire une partie monoruche et une partie multiruche)
* Le site web graph les données
* Mettre une conclusion sur les réflexions sur les capteurs
* Le site web alerte l'utilisateur si un seuil est franchi.
* Mettre le protocole du premier essai en condition + les conclusions de cet essai
* Plein d'autres choses encore


==== en option ====
=== Taches ===
* ajout d'un tag admin/user dans la base (pour l'instant un user qui peut voir tous les ruchers et donc toutes les ruches)
* IVR (kiosque vocale de consultation et/ou appelle le responsable du rucher en cas d'alerte en plus du SMS)
* des stats annuels / mensuels / comparatives ruche
* gestion du filtre pour l'affichage des ruches (sinon si y a 20 ruches dans un rucher la page va être un peu longue...)
* bouton pour export CSV des données d'un rucher ou d'une ruche


==== Fait: ====
Fait:
* intégration avec [http://projects.emerginov.org/sensonet/ sensonet] (appli de gestion de réseau de capteurs développée par Benoît H.)
* base Web2Py
* suppression des fichiers qui servent à rien
* Site de base avec authentification
* mise en place du système de session (pour l'instant la page de login ne sert à rien (login:test mdp:<rien>) mais on peut attaquer directement les pages subséquentes
* Modèle de données
* display des courbes à finir (pas de display si pas de valeurs, affichage des N derniers points....)
* API Rest
* addRuche à finir
* intégration de carto (pour le moment je rentre longitude/lattitude via des champs, je pense le faire via l'intégration d'une carto, faut que je regarde comment on fait ça en jquery mobile)
* fonction edit_rucher (modifier descriptif / localisation / propriétaire)
* choix pour l'utilisateur du mode d'alerte (SMS, mail, appel) - partiellement fait
* afficher la carte sans avoir à recharger la page cf. explications de Benoît B. ci-dessous
* comprendre pourquoi la carte et les graphs ne se chargent pas avec la page (besoin de reforcer le chargement de la page) => Benoit:"
Le « pourquoi cela ne marche pas ».
C'est assez simple.
Avec JQuery Mobile (JQM par la suite), toute l'application est
constituée de « cartes ». À chaque fois qu'un contenu (une « carte »)
est ouverte (lien, bouton etc.), JQM intercepte la requête, fait une
requête AJAX sur l'URL correspondante, génère et insère le DOM de la page reçue
en réponse et l'affiche. Donc seul ce qui est contenu entre les balises
<body> et </body> est pris en compte. De ce fait, tu n'as aucune chance qu'un
script ou une CSS spécifié dans la partie <head /> soit pris en compte.
Par contre, avec un service suffisamment REST, un « reload » de la page
la charge bien complétement, comme une nouvelle application JQM, avec le
résultat attendu, mais c'est un peu dommage.
Cependant il est possible de +/- contourner ce principe, en indiquant à
JQM (attribut data-ajax="false" dan sles balises <a ...>) que le document
joint est indépendant. Mais de mon point de vue, c'est assez improductif
de procéder de la sorte.
L'autre solution, c'est simplement de penser l'application comme une
seule page, et d'aller systématiquement chercher les contenus dynamiques
en AJAX. De mon expérience, ce n'est pas un problème et permet même une
meilleure séparation de la logique métier (coté serveur) et de l'affichage.


=== Pour contribuer ===
TODO:
2 url pour commencer sur Emerginov (faut avoir un compte de dev)
* Restreindre l'accès à une partie de l'API -> NOK
* http://www.emerginov.org/main_authen/selfcare.php
* Ajouter la fonction de déclaration de la tare -> se fait dans le fichier config.py associé à chaque Lopy
* http://developers.emerginov.org/
* Ajouter la fonction de transformation de donnée brute en donnée normée -> NOK. Est ce utile? Les données sont envoyées en grammes.
* Grapher les données des capteurs -> OK en local (cf fichier joint), NOK sur TTN + ATTM
* Ajouter les fonctions web d'ajout/suppression/modification de ruches/capteurs/modules -> NOK


== Relation avec Beewatch ==
@cedricbou


= Liste des composants =
lien :
http://letmeknow.fr/blog/2015/10/27/tutomodulelora/


-MPX 5100 : http://www.conrad.fr/ce/fr/product/183890/Capteur-de-pression-differentielle-MPX-5100-DP
==Liste du matériel-Coût==


- 2 sachets de Pompote
L'ensemble des composants doit fonctionner entre -30° C et +70°


- 50 cm de tuyau pour le circuit hydraulique
===Configuration Point à point===
voir le fichier pour les composants
[[:File:composants_balance_ruche_bzzz.odt]]
et un devis estimatif sur:
[[:File:septembre_2019__ruche.ods]]


* Récepteur Arduino/Lora : 50€ qui peut servir pour x émetteurs à portée (c'est un Lopy connecté à un PC ou configuré en GateWay)
* Pas de coûts d'utilisation des réseaux Lora
Total : environ 90 € TTC pour un chassis autonome
== Liens Web ==
Logiciels pour Lopy et Arduino : https://github.com/bernardarzur/bzzz
Arduino : choisir tx_rx_v_3_simplifiée.ino
Lopy: choisir boot.py (RX comme récepteur point à point)ou boot_sans_wifi.py (TX comme émetteur) selon que l'on est en mode local ou distant, main.py (correspond à version_v_18), config.py (correspond à version_v_18) et HX711.py
Présentation du projet Bzz en juin 2019  [[:File:bzz_2019.odp]]
Présentation du projet Bzz en 2018 [[:File:BZZZ_2.pptx]]
Balance connectées pour ruches : http://itsap.asso.fr/outils/balances-automatiques/
http://makerspace56.org/wiki/asso-wiki/projets/la-ruche-connectee/capteurs-et-composants/
https://www.thethingsnetwork.org/forum/t/the-beehive-topic/25599/37
https://makerslab.em-lyon.com/makers-beehive.html


= Communication autour du projet =  
= Communication autour du projet =  
La présentation de l'idée de départ:[[Fichier:Projet Bzzz.pdf|thumb|Presentation V0]]


[http://fablab-lannion.org/2013/06/le-fablab-selectionne-pour-les-carrefours-des-possibles-avec-bzzz/ Bzz au carrefour des possibles]
[http://fablab-lannion.org/2013/06/le-fablab-selectionne-pour-les-carrefours-des-possibles-avec-bzzz/ Bzz au carrefour des possibles]
Ligne 284 : Ligne 260 :
[http://fing.org/?Les-10-projets-du-CDP-Bretagne Les 10 projets Juin 2013]
[http://fing.org/?Les-10-projets-du-CDP-Bretagne Les 10 projets Juin 2013]


[http://www.letelegramme.fr/local/cotes-d-armor/lannion-paimpol/ville/fablab-les-abeilles-font-le-buzz-a-la-ruche-13-11-2013-2300993.php Le télégramme de novembre 2013]
[http://www.dailymotion.com/video/x16yp5y_lannion-le-projet-bzzz-a-son-prototype Explication du dispositif au Télégramme en novembre 2013 disponible en vidéo]
<div class="mw-collapsible-content">
= Liens utiles =
= Liens utiles =


Ligne 291 : Ligne 271 :


[https://svn.emerginov.org/listing.php?repname=Bzzz code serveur]
[https://svn.emerginov.org/listing.php?repname=Bzzz code serveur]
[https://github.com/bernardarzur/bzzz]
== Photos ==
<gallery>
DSCF1946.jpg|Ruche demi-châssis supervisée (Rucher Orange-Lannion)
DSCF1949.jpg|Boîtier Étanche
DSCF1948.jpg|Boîtier Étanche
DSCF1957.JPG|Boîtier Étanche
DSCF1956.JPG|Ruche demi-châssis supervisée
DSCF1955.JPG|Ruche demi-châssis supervisée
DSCF1954.JPG|Ruche demi-châssis supervisée
Attention_au_merle_DSCF2228.JPG|Pèse-ruche autonome Arduino
</gallery>


[[Category:Projet]]
[[Category:Projet]]
[[Category:LoRa]]

Version actuelle datée du 19 septembre 2020 à 08:49

Logo projet Bzzz


Présentation

Le projet Bzzz (Bee Zen Cube) est un projet de suivi de ruches pour une apiculture plus anticipative, il a pour but de proposer gratuitement à tout apiculteur amateur les plans d'un kit de supervision de son rucher (châssis de mesure autonome, et si le prix des émetteurs LoRa reste élevé réaliser une station d'émission qui centraliserait plusieurs châssis secondaires). Le projet Bzzz suit l'évolution de la santé de la ruche à distance, principalement par la mesure des variations de poids, la température locale et donner l'alerte en cas d'essaimage ou surtout, de la préparation de l'essaimage. On fait tout cela pour éviter de multiples déplacements de l'apiculteur.

Le projet Bzzz est un projet Open-source et Open-hardware

Ce projet fédère plusieurs bénévoles au sein du fablab et est suivi par les médias locaux ainsi que par des apiculteurs d'autres régions (volontaire pour prototypage notamment). Plusieurs apiculteurs ont aussi fait le déplacement au sein du FabLab de Lannion pour venir découvrir ce projet et se porter volontaire pour une période de béta-test dés que la solution sera pleinement fonctionnelle.


Participants

  • Bernard Arzur
  • Frédéric Carré
  • David Blaisonneau
  • Thierry Houdouin
  • Jérôme Labidurie
  • Tangi Lavanant
  • François-Xavier Potel
  • Morgan Richomme

Chassis / Capteurs

Porteur: Bernard

Module Chassis

Demi-Chassis (abandonné)

  • Une seule jauge de contrainte (50 kg) par capteur/demi-chassis(diminution du prix)
  • On accède au paramètre de variation du poids
  • La valeur absolue du poids de la ruche n'est pas connue
  • On peut voir le shield W6Labs associé à un Arduino UNO et un HX711.

DemiRuche.jpeg DSCF1946.jpg

2 Demi-Chassis (abandonné)

  • Le support associé est remplacé par un 2éme demi-chassis
  • Le poids exact est connu par la somme des 2 valeurs issues des 2 capteurs
  • Le coût est un peu plus élevé


Chassis autonome

Cette solution, simple, a été rendue possible par la forte baisse du prix des composants (LoRa, jauges, ...) et aussi par la réduction drastique de la consommation du Lopy4 en mode veille (=> abandon de l'Arduino associé à une carte économiseur).

  • Quatre jauges de contrainte par châssis.
  • On accède aux paramètres de poids dans l'absolu, de la variation du poids, et aussi du centre de gravité (placement de l'essaim dans la ruche et des cadres remplis).
  • La valeur absolue du poids de la ruche est connue, mais il ne faut pas oublier la variation due à l'humidité du bois (peut monter à 15% du poids du bois de la ruche) et la correction nécessaire pour compenser les écarts thermiques. Comme on mesure des microvolts, le moindre effet de couple thermo-électrique est largement amplifié : éviter soudures, connectiques...

Cahier des Charges :

-système autonome pendant une année entière

-l'ensemble des composants doit fonctionner entre -30°C et +70°C

-une mesure toutes les 10 minutes, y compris pendant la nuit (éviter le vol de ruche), soit ~50 000 mesures/an

-précision souhaitée : 10 grammes (100 abeilles) pour une masse maximum de 100 kg

-compatibilité avec la norme LoRa (durées et fréquences d'émission)

-coût inférieur à 100 €

-pas de câbles ni fils visibles

-hauteur maximum 30 mm

-gestion simple

Mesure du poids

  • Il est connu à 10 grammes près, sur une plage de 0 à 100 kg, avec des jauges de 20 kg. Si on vise au-delà de 80 kg (4*20kg), il existe des jauges de 50 kg beaucoup plus coûteuses et forcément un peu moins précises.
  • Mesuré par une jauge de contrainte résistive connectée en un pont de Wheatstone [1]
  • Numérisation de la mesure (0-10mV) par un module HX711 (convertisseur analogique/numérique à 24 bits de précision)
  • Le module HX711 est connecté au plus près de la jauge, pour éviter les interférences électromagnétiques et les effets thermiques (thermo-couple). Les effets thermiques sur la résistance de mesure sont en principe compensés par l'utilisation d'une autre résistance montée en orthogonal sur la jauge.
  • Le module HX711 est connecté au module d'émission IoT, qui peut donc en recevoir plusieurs. Avec Lopy, il a été impossible d'utiliser un canal de données commun (DOUT), alors qu'avec Arduino, cela fonctionne. Comme on dispose d'assez d'entrées/sorties, la question se résout facilement : chaque HX prend une entrée (DOUT) et une sortie (SCK).

Arrachage / Vol

Alarme au bout de 10 minutes maximum, sur variation de poids brutale

Alarme instantanée sur capteur de contact, optionnel

Châssis autonome (Mesure et Émission)

Boitier

L'idée, au départ, était d'avoir un boîtier avec émetteur RF qui collecte plusieurs balances sans émetteur, voire sans batterie, vu le prix élevé des composants à ce moment...

  • Il doit être étanche, résistant car il restera à l'extérieur plusieurs années.
  • Il doit donc être de catégorie IP64 au moins. Nous avons choisi IP65 pour une meilleure fiabilité à long terme.
  • Ce boîtier contiendra :
    • L'alimentation électrique (batterie lithium + carte économiseur)
    • Arduino + carte Lora
    • Antenne
  • Nous avons donc choisi un boîtier "Raccordement Fibre Optique" qui permet d'ajouter facilement des entrées-sorties -> abandon, on ne veut plus de fils/cables autour de la ruche, pour des raisons de sécurité et de fiabilité.

Alimentation solution Arduino

  • Batterie de 4 éléments de 2800mAh
  • La carte économiseur (basée sur 3 relais basse consommation Reed et un Ampli-Op LM324) permet de diviser la consommation par 100 :
    • 1 mA en consommation moyenne > 6 mois d'autonomie prévue
    • 0.6mA au repos
    • 120mA en émission (qq secondes toutes les 10 min)

Cependant, l'autonomie obtenue est insuffisante et la carte économiseur revient cher (>20€).

Alimentation solution Lopy

Solution retenue : 3 Batteries de 3000mAh

La carte Lopy4 (pas toutes les versions, malheureusement!) dispose d'une mise en veille profonde : elle coupe l'alimentation du processeur principal, et la consommation chute à une valeur très faible, entre 20 µA et 200µA. Cette consommation varie à la hausse si on utilise la carte Expansion Board pour connecter le Lopy4. On essaiera de s'affranchir de cette carte, à cause de son prix (~20€), de sa conso (due entre autre autres au pont diviseur pour mesurer la tension batterie) et des limitations du chargeur de batterie (500 mA max). On la remplace par un circuit de charge, un pont diviseur de haute impédance et on soude directement le Lopy sur le circuit imprimé.

Pour se maintenir en veille, les HX711 ont besoin d'être polarisés en tension sur la broche SCK, il faut monter des résistances de pull-up d'environ 1 MOhm entre SCK et +3.3V. Sinon, chaque HX711 pourrait rajouter 8 mA à la consommation de veille.


    • 10 000 heures(~une année) au repos représentent donc, pour 100µA -> 1000 mAh
    • Lorsque Lopy4 se réveille, il doit recompiler son code : ça prend entre 2,5 s (70 lignes) et 3.5 s (250 lignes) selon la complexité du programme et l'appel aux différentes bibliothèques. Puis il effectue la mesure de poids et envoie le paquet LoRa.

La durée de transmission LoRa est minimisée en configuration RAW : on transmet le paquet en clair vers un récepteur calé sur la même fréquence. Le type de trame est le suivant : "labeld4212dbzz3d284d452d406d233d", soit 32 à 40 octets, label permet d'identifier que c'est notre trame, d est le délimiteur avec le champ suivant qui est la tension batterie, bzz3 est le nom de la ruche tel qu'on l'a défini sur TTN par exemple, puis les quatre poids en grammes. La somme des 4 donne le poids total et sa position en 2D.

On peut transmettre en APB vers une GateWay de TTN par exemple. On envoie d'abord plusieurs champs que TTN aura calculé au préalable : un champ de 8 octets pour l'identité d'émetteur, un champ de 32 octets pour l'application et un champ de 32 octets pour l'identité du réseau. Et puis, on envoie notre trame sans le champ label, qui est remplacé par les champs TTN. On devine que ce deuxième mode APB sera un peu plus lent et plus gourmand en énergie et bande passante(70 octets de plus) et pas forcément compatible avec les critères LoRa.

Le mode OTAA n'a pas été considéré, il nécessite régulièrement un échange bidirectionnel avec la GateWay de TTN pour maintenir notre émetteur sur le réseau TTN, entraînant une surconsommation d'énergie.

Le courant absorbé varie durant le cycle entre 40 mA (compilation), 140 mA (mesure) et 200 mA (envoi paquet LoRa), avec une moyenne à 120 mA pour un cycle de 14s. Pour 5 s, l'intensité moyenne devrait être plus basse (à vérifier), puisque le % du à la compilation est plus grand.

File:integration_intensite_lopy_pour_un_cycle.jpg

Si on veut faire 50 000 mesures, elles vont durer 50 000 *(3.5s + 1.5s) / 3600 = 70 heures, soit 8300 mAh avec une consommation de 120 mA.


    • il faudra donc (1000 + 8300) = ~9000mAh, soit 3 batteries de 3000 mAh.

On ne tient pas compte de l'auto-décharge, qui est faible avec les batteries Lithium.

Arduino Lora

Actuellement il y a 3 pistes:

  • LoRa + Arduino : abandon, prix shield >> et conso >>
  • LoRa + Lopy : retenue
  • LoRa + ESP32 : à creuser, retenue pour Projet Macareux qui est très similaire

Lora + Arduino

  • Le module HX711 émet un signal numérique sur la broche DOUT (data out) lorsqu'il est piloté par la broche SCK.
  • Il est connecté sur les broches I/O de l’Arduino
  • On peut mettre 4 HX711 sur l’Arduino en l'état actuel, à voir si on peut multiplexer les capteurs sur 2 broches. Pas utile en fait, il y a assez de broches sur Arduino ou Lopy.
  • Le module LoRa (shield W6Labs, Rennes): carte pour Arduino, utilise les pins 10-11-12-13

LoRa mDot

Piste abandonnée : MTDOT-868-X1P-SMA-1 - http://www.multitech.com/models/94557138LF

Conformité à LoRa

La norme LoRa impose deux critères : temps d'occupation global de l'espace aérien (airtime de 30 secondes par jour pour TTN) et temps d'occupation d'une sous-bande de 1%. Voir par exemple : https://forum.thethingsnetwork.org/t/limitations-data-rate-packet-size-30-seconds-day-fair-access-policy-nodes-per-gateway/1300

Trame LoRa : il y a 13 octets pour l'encapsulation WAN (qui peut monter à 23 o en cas de join request, voire jusqu'à 28 o ), mais il ne faut pas oublier les 10,25 temps symboles du préambule de la couche physique (en SF8 ça fait 10 o), avec en plus 5 o optionnels pour header et CRC, soit minimum de 23 octets pouvant aller à 43 o. cf : https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5038744/

Avec le calculateur joint File:LoRa(WAN) airtime calculator.ods , en SF8, on trouve que la ruche peut émettre 323 mesures de 2 octets par jour, 224 mesures de 20 o et 182 à 30 octets, compatible avec un cycle de 10 minutes (24*6=144). Les durées d'émission, en SF8, iraient de 92 ms à 164 ms pour une payload (charge utile) de 2 à 30 o.

En bref, jusqu'à 30 octets, on peut presque négliger l'importance de la payload....

Fiabilité

La fiabilité recouvre plusieurs aspects :

  • fiabilité physique des composants (en particulier de la batterie, qui pourrait vieillir assez vite)
  • fiabilité logicielle : on a vu que l'on faisait 50 000 mesures par an, soit 50 000 fois la compilation. Sur les premières versions de Lopy4, au bout de 500-2000 mesures, celui "plante" une fois pendant la compilation, reste dans un état intermédiaire (le chien de garde qui "tourne" sur le logiciel actif est alors inopérant) et vide la batterie en quelques jours. La dernière version semble mieux se comporter...
  • fiabilité des mesures : il ne s'agit pas de lancer des alarmes à tort et à travers, à tout moment, à cause d'une mauvaise mesure. La programmation des HX711 a due être revue pour obtenir une bien meilleure fiabilité.

Il y a quelques fois des mesures hors norme, mais on peut les rejeter en les opposant aux valeurs des trois autres capteurs. Si trois capteurs sont stables et que le quatrième s'égare, on déclare la mesure fausse et on attend un cycle.

Web

Porteur: David

Principe

  • L'utilisateur ajoute une ruche > un module > N capteurs
  • L'utilisateur configure chaque capteur si besoin (tare, échelle)
  • L'utilisateur configure le seuil de déclenchement des alertes
  • Le site web recoit les données brutes des capteurs via la passerelle et les transforme en données utile si besoin
  • Le site web graph les données
  • Le site web alerte l'utilisateur si un seuil est franchi.

Taches

Fait:

  • base Web2Py
  • Site de base avec authentification
  • Modèle de données
  • API Rest

TODO:

  • Restreindre l'accès à une partie de l'API -> NOK
  • Ajouter la fonction de déclaration de la tare -> se fait dans le fichier config.py associé à chaque Lopy
  • Ajouter la fonction de transformation de donnée brute en donnée normée -> NOK. Est ce utile? Les données sont envoyées en grammes.
  • Grapher les données des capteurs -> OK en local (cf fichier joint), NOK sur TTN + ATTM
  • Ajouter les fonctions web d'ajout/suppression/modification de ruches/capteurs/modules -> NOK


lien : http://letmeknow.fr/blog/2015/10/27/tutomodulelora/

Liste du matériel-Coût

L'ensemble des composants doit fonctionner entre -30° C et +70°

Configuration Point à point

voir le fichier pour les composants

File:composants_balance_ruche_bzzz.odt

et un devis estimatif sur: File:septembre_2019__ruche.ods

  • Récepteur Arduino/Lora : 50€ qui peut servir pour x émetteurs à portée (c'est un Lopy connecté à un PC ou configuré en GateWay)
  • Pas de coûts d'utilisation des réseaux Lora

Total : environ 90 € TTC pour un chassis autonome

Liens Web

Logiciels pour Lopy et Arduino : https://github.com/bernardarzur/bzzz

Arduino : choisir tx_rx_v_3_simplifiée.ino

Lopy: choisir boot.py (RX comme récepteur point à point)ou boot_sans_wifi.py (TX comme émetteur) selon que l'on est en mode local ou distant, main.py (correspond à version_v_18), config.py (correspond à version_v_18) et HX711.py

Présentation du projet Bzz en juin 2019 File:bzz_2019.odp

Présentation du projet Bzz en 2018 File:BZZZ_2.pptx

Balance connectées pour ruches : http://itsap.asso.fr/outils/balances-automatiques/

http://makerspace56.org/wiki/asso-wiki/projets/la-ruche-connectee/capteurs-et-composants/

https://www.thethingsnetwork.org/forum/t/the-beehive-topic/25599/37

https://makerslab.em-lyon.com/makers-beehive.html

Communication autour du projet

La présentation de l'idée de départ:Fichier:Projet Bzzz.pdf

Bzz au carrefour des possibles

Une petite vidéo de présentation du projet Bzzz au carrefour des possibles Video Vimeo

Les 10 projets Juin 2013

Le télégramme de novembre 2013 Explication du dispositif au Télégramme en novembre 2013 disponible en vidéo

Liens utiles

site de test (login test mdp <rien> )

Code

code serveur [2]


Photos