Faisabilité d'un projet de surveillance de ruches.

Bonjour,

Je débute avec l'Arduino et ai entamé un projet de surveillance de ruches.

Le but est de mesurer la température et le poids d'une ou plusieurs ruches placées sur un rucher qui est en pleine nature.

Mon idée est de placer sous les ruches un capteur de poids et une sonde de température et de rapatrier ces infos toutes les heures ET dés qu'il y a une chute importante de poids (vol, chute, essaimage) vers une base qui elle, disposerait d'un shield GSM pour envoyer par GPRS les infos sur mon site Web et des SMS en cas d'alarme.

Mon principal problème est la liaison entre les ruches et la "base". Je ne peux pas utiliser du câble pour diverses raisons (distance, risque d'arrachement par des animaux, etc...).
Il reste donc la liaison par radio, mais là se pose le problème de la consommation, tous les systèmes étant alimentés par piles ou batterie.

Je pensais utiliser les modules NRF24L01, mais ceux-ci consomment pas mal en réception et ne manqueraient pas de vider rapidement les piles.

Je pourrais mettre en veille totale le système sur les ruches, ne mesurer que le poids toutes les 5 min et ne transmettre à la base que si nécessaire, à savoir toutes les heures si tout va bien et immédiatement s'il y a un problème. Je pense que ça pourrait tenir la route.

Il en est autrement du côté base, qui elle pour ne rater aucune transmission, devrait rester en réception permanente, et là, les choses se gâteraient rapidement....

J'ai bien pensé mettre en veille le récepteur côté base et ne le réveiller que cycliquement, mais la probabilité qu'il capte les signaux des ruches à ce moment est faible...

Par ailleurs il y a également le problème de la transmission des ruches qui peuvent se produire en même temps et provoquer des collisions...

Ma question est donc de savoir si quelqu'un a déjà géré un problème similaire et quelle solution hard ou soft) pourrait être envisagée ?

J'ai déjà réalisé la partie Web et fait quelques tests des différents capteurs qui sont déjà en ma possession.

Merci de m'avoir lu et j'espère avoir été clair.

Cordialement,

On peut faire une mise en veille avec horloge RTC + alarme sur chaque Arduino qui réveille tout le monde en même temps.

En rajoutant quelques secondes de marge pour tenir compte de l'imprécision, et on resynchronise tout le monde avant de se rendormir.

Voir également du côté du bluetooth 4.0 LTE : y'a pas beaucoup de solutions en "Arduino-like" mais c'est faisable.

Sinon la solution de Christian_R.

Module ESP 8266 maintenant supporté par l'IDE arduino. Et qui consomme peu en veille.

Bonne idée @Christian_R:slight_smile:
Autre point important aussi, les cartes Arduino ne sont pas des carte à basse consommation, c'est à mon avis incompatible avec l'usage envisagé.

Deux options sont possibles:
-Se faire ses propres cartes avec le strict nécessaire seulement (c'est ce que je fais)
-Acheter des "clones" d'Arduino déjà optimisés basse conso (j'ai plus de référence en tête mais ça se trouve).

Pour la synchro temporelle d'Arduinos en plein champ on peut aussi utiliser l'heure transmise par le GPS, mais ça doit coûter un peu plus que des horloges RTC programmabes genre DS3231.

Wow !!

Merci pour toutes ces réponses ! Pour mon 1er post sur ce forum, je suis surpris de la quantité et qualité des réponses...

Pour la carte UNO, je compte effectivement soit faire mes propres cartes ou "hacker" les UNO en supprimant tout ce qui ne sert à rien et en remplaçant le régulateur.

Ok pour la synchro temporelle, c'est une solution.
Encore faut-il que les RTC soient bien réglées.. J'écarte la solution GPS qui serait trop chère...

Je regarde les ESP 8266. Quelle est la portée de ces engins ?

Je ne connais pas le Bluetooth 4.0 LTE, mais si c'est mal géré par l'Arduino, ce n'es peut-être pas l'idéal pour un bleu comme moi...

Je ne sais pas si les solutions en 433 MHZ sont moins gourmandes..

Merci à tous !!

Le GPS a un autre inconvénient, il consomme plus qu'une puce RTC et il faut un temps non négligeable pour capter et recevoir le premier signal gps.

Avec des horloges, un maître donne régulièrement sa propre référence d'heure aux cartes esclaves qui se règlent dessus.

Le 433 MHz semble parfait pour transmettre pas trop loin, on a peu de risque de brouillage en plein champ.
(Sinon utiliser par exemple du 2.4 Ghz avec codage si l'environnement radio est chargé).

Pour la basse conso je te conseille les MSP430 avec Energia comme IDE qui est directement copié d'Arduino. Ca s'utilise exactement pareil. Dans ton cas en plus ça élimine un certain nombre de contrainte :

  • la carte de développement en elle même est basse conso (pas d'élément extérieurs mis à part le micro lui même)
  • en 3.3V : utilisation directe d'une pile lithium, et les nrf24l01 sont en 3.3V donc besoin d'aucune conversion
  • tu peux brancher directement un quartz (fourni avec la carte) qui te permet d'avoir une RTC directement intégrée
  • la gestion de la mise en sommeil est ultra simple comparé aux Arduino : une ligne de commande pour l'endormir et une pour le réveiller ... difficile de faire plus simple pour tomber à moins de 1µA de conso ...

Je reviens sur les solutions proposées.

OK pour les MS430. C'est intéressant, mais vu que je viens d'acheter tout le bazar pour Arduino... J'hésite !

J'ai reçu aujourd'hui la platine RTC à base du DS1307 et je me suis empressé de la mettre en service.

1er constat, ça consomme 1,3 mA !! Pour une application "low power", c'est raté !!
Il va donc me falloir la couper quand je ne l'utiliserais pas... encore des complications en vue !
Si c'est le cas, autant couper TOUT ce qui consomme et qui ne me sert que lorsque je fais une mesure..

2ème constat, il n'y a pas de fonction ALARM qui permettrait de réveiller la bête au moment voulu.

J'ai réfléchi à mon problème de "poll" des ruches.. Ca n'a pas l'air simple à priori... Il y a toutes les chances pour rater des trames..

J'ai regardé les autres solutions radio, toutes consomment à peu près pareil. Les NFR2401 n'ont pas l'air d'avoir bonne réputation, la portée étant plus que limitée...

Je n'ai pas trouvé la consommation en réception de l'ESP8266, seule la consommation en veille est donnée. Je n'ai pas encore regardé comment ça s'utilise.

Patrick,

Tu as combien de ruches et à quelles distances max ?

tk5ep:
...

Le but est de mesurer la température et le poids d'une ou plusieurs ruches placées sur un rucher qui est en pleine nature.

Mon idée est de placer sous les ruches un capteur de poids et une sonde de température et de rapatrier ces infos
...

Bonsoir
Sur un rucher en production , en general il n'y a qu'une ruche equipée pour voir/apprecier l'evolution de la miellée
J'avais il y a déjà pas mal de temps pour un ami apiculteur malheureusement disparu , mis au point un systeme gsm (mais sur base PIC)
qui envoyait une fois par jour par SMS (poids, T° et H° ) , le capteur T et H mis dans une cage à reine , " les ptites bees " (non, ce n'est pas une chanson des Beatles :grin: ) ayant une grosse tendance à cirer les ouvertures du capteur H

J'ai déjà evoqué ça sur le forum , mais le moteur de recherche est un peu "indigent" :sunglasses:

mais pourquoi pas en equiper plusieurs

@tkSep
La DS1307 est peu précise, il vaut mieux une DS3234 ou DS3231 qui ne dérivent typiquement d'environ +/- 1 min par an et qui disposent d'alarmes programmables.
La DS3234 par ex consomme 0.4 mA sous 3.3v et 0.7mA sous 5V.

J'ai une breakout board avec une DS3231 et un accu rechargeable (et aussi une eprom série accessoirement).
Bon ils ont eu la mauvaise idée d'y mettre une led power mais on peut la dessouder. Il doit exiter des breakout boards minimales je suppose.

Tu pourrais avoir une horloge RTC sur toutes les ruches.
Si toutes les heures à l'heure exacte, tu réveilles tes Arduinos, ils vont se réveiller exactement au même moment.
Puis tu les interroges depuis la base un par un.
Ensuite tu leurs transmets l'heure de la base afin que chaque arduino synchronise son horloge RTC locale sur celle de la base, puis chaque arduino reprogramme une alarme pour l'heure qui suit et s'endort (mode power_down).

Ca me semble jouable.

Sur mon projet actuel, qui était au début basse conso mais qui s'avère impossible à faire dans ce cadre (cause horloge de gare SNCF commandée trop gourmande), je programme non pas une alarme mais le signal de sortie du DS3231 pour avoir un signal de 1Hz utilisé pour réveiller l'Arduino via une interruption externe. Entre chaque réveil, l'Arduino est en mode power-down (en fait un ATMega328P en standalone sans quartz externe sur un circuit fait maison).

Voilà pour te donner quelques idées.

Merci pour ces suggestions.

Effectivement, ne surveiller qu'une seule ruche serait plus simple à gérer ! Plus de problèmes de transmission, tout pourrait être en i2C !

Une mesure par jour n'est pas suffisante pour surveiller la miellée et la ruche.

Quitte à faire un projet, autant le faire "universel".. Mais parfois, le mieux est l'ennemi du bien !

Il faut qu'une anomalie (perte de poids subite par ex.) soit transmise immédiatement, ce qui pose un problème supplémentaire car ça ne peut attendre l'heure pleine !

Pour le moment, je n'ai que 6 ruches sur 2 ruchers distincts. Sur un rucher conséquent, la distance peut être de 100m, voire plus. Je n'en suis pas là mais il faut prévoir le cas!

OK pour les autres RTC, je vais regarder ça. Mais 0.7 mA, c'est toujours trop ! Y a t-il une sortie qui permette de réveiller l'Arduino et ce, même si l'alim 5V de la RTC est coupée ?

Existe t-il un ADC pour sonde de poids qui sorte en i2C pour remplacer un HX711 ? A moins que le HX711 ne puisse dialoguer sur quelques mètres de câble ?

Je crois que je vais commencer par la partie "base" et une fois que j'aurais réussi à récupérer les données sur mon site Web et reçu des alertes, je serai déjà content !!

J'attends de recevoir le shield GSM pour faire des tests.

Merci encore à tous,

tk5ep:
...

  • 1 Une mesure par jour n'est pas suffisante pour surveiller la miellée et la ruche.
    ...
    2- Quitte à faire un projet, autant le faire "universel".. Mais parfois, le mieux est l'ennemi du bien !
    ...
    3- Il faut qu'une anomalie (perte de poids subite par ex.) soit transmise immédiatement, ce qui pose un problème supplémentaire car ça ne peut attendre l'heure pleine !

3- oui , ça peut indiquer un vol/destruction , c'est alors une condition "prioritaire "
2- pas universel, mais je suis d'accord :grin:
1- En condition standard :wink: , c'est amplement suffisant , mais avec les technos actuelles (et les couts induits 8) ), ça ne coute "pas plus cher" de contrôler/verifier que les "belles vont bien" toutes les "minutes"

quelle region ?

tk5ep:
OK pour les autres RTC, je vais regarder ça. Mais 0.7 mA, c'est toujours trop ! Y a t-il une sortie qui permette de réveiller l'Arduino et ce, même si l'alim 5V de la RTC est coupée ?

Je te conseille de tourner en 3.3v (l'ATMega fonctionne parfaitement en 3.3v), tu consommeras encore moins.
Tu peux aussi en ralentir la fréquence d'horloge.
Si ta source de tension est supérieure tu peux utiliser un régulateur à faible "quiescent current" comme le MAX16910 par exemple.

Je n'ai pas vu dans la datasheet du DS3231 d'info sur l'état des alarmes en mode VBatt. Je suppose qu'elles sont inhibées mais c'est à vérifier.

@Artouste
Quelle région ? Ajaccio

@patg_
OK pour le 3V3. A étudier !
Il faut que je regarde si les capteurs que j'ai achetés fonctionneront en 3V3. Déjà la platine RTC à base de DS1307, je ne suis pas sûr... Puis les shield GSM et autres.

Je viens de regarder pour mesurer la tension batterie, rien qu'un diviseur de tension à résistances consomme déjà des uA... Quand on commence à faire la course à l'énergie, ça devient vite obsessionnel ! :grin:

Je crois que pour économiser la consommation des capteurs au repos, je vais commander un MOSFET pour les déconnecter de l'alimentation quand il ne servent pas... Reste à voir le temps de réveil.

Merci

Le launchpad G2 coute 9,99$. Je dis ça je dis rien ... T'aurais une RTC, le réveil, une seule alimentation avec le nrf et le fonctionnement en standalone est enfantin, même pas besoin de quartz.

Pour les nrf ça dépend surtout de la partie émission physique : les modules de bases à pas cher avec l'antenne pcb ont en effet une portée pas fantastique (20aine de mètres, tout dépend comment ils sont configurés on peut gratter un peu). Il en existe avec de vraies antennes (déjà ça change considérablement la donne) et il en existe avec amplificateur de puissance (portée annoncée de 1 km).

Sinon tu as les panstamp : http://www.panstamp.com/products/#
Ils ont une board avec atmega328 + cc1101 (radio) et une autre avec un cc430 (SoC msp430 + cc1101)
Les deux sont programmables sous Arduino

Bonjour
Juste une petite idée comme ça : pourquoi ne pas ajouter un petit panneau solaire et une batterie qui pourrait tenir on va dire juste une semaine mais en charge constante grâce au panneau donc quasi illimitée.
A+

@caape
C'est une solution ! Pas la plus discrète ni la moins chère, mais en dernier ressort.... :wink:

Bonjour, où en es tu de ton projet ?

J'ai démarré un projet équivalent mais sur une seule ruche. (arduino mega + GSM shield. Dallas one wire et humidité )

Quel choix as tu fait pour le capteur de masse ? (je galère un poil sur ce point. Jauge de contrainte + amplificateur opérationnel)

Pour l'énergie je fais batterie (4000 mAh, 12V, NiMh) + panneau (3W, 12V) : insuffisant !

J'ai optimisé un poil ma carte Uno Mega : régulateur de tension haut rendement traco en amont pour limiter le problème du rendement du 7805. Après chaque envoi je fais un shutdown.gsm() et un delay(30minutes) pour limiter la consommation de courant.
Si il y a d'autres actions très simples à faire pour limiter la conso je suis preneur ! A ce jour la batterie seule permet de tenir une semaine avec l'antenne bien positionnée.
De toute façon, la connection GSM d'envoi des données pompe 1 Ampère pendant quelques secondes et ça on ne peut rien y faire ! Arriver à 10 mA en ''veille'' serait top pour moi.

Si tu veux des détails, n’hésites pas !