HenHouse: contrôleur de poulailler solaire intelligent

Bonjour à tous,

je vous présente mon nouveau projet: HenHouse: contrôleur de poulailler solaire intelligent

Ce contrôleur de poulailler a les caractéristiques suivantes:

  • Fonctionne sur une carte Adafruit Feather 32u4 (ATmega32u4) équipée d'un module radio LoRa
  • La trappe d'entrée de style guillotine est motorisée. Deux contacts Reed détectent les positions d'ouverture / fermeture de la porte
  • Boutons pour forcer manuellement l'ouverture / la fermeture de la trappe
  • La trappe s'ouvre / se ferme automatiquement au lever et au coucher du soleil (fonction d'un seuil de lumière ambiante)
  • Mesure les températures individuelles dans 4 nichoirs (le but est de détecter quand un nouvel œuf a été pondu. A valider...) + calcule une moyenne
  • Fonctionne sur une batterie lithium-ion 3.7V 4400mAh et un panneau solaire 6V, 1W
  • Va en DeepSleep jusqu'à ce que les boutons UP / DOWN soient enfoncés
  • Broadcast toutes les X minutes les mesures du système (températures, niveau de lumière ambiante, position de la porte, niveau de la batterie et état de charge), qui sont alors reçues par le système domotique au format JSON via le broker MQTT

Loïc

P_1.jpg

P_1.jpg

Quelques images en plus

Bonsoir, Super sympa ce projet. Je cherche à mettre en place du Lorawan, Est ce que la portée est bonne et est ce que ca passe facilement dans la maison ? Qu'utilises tu en récepteur ? Question sur ton schéma, en A1 je vois que tu as mis un pont diviseur, ca va consommer de la batterie non ? Par ailleurs n'y a t il pas un pb de masse pour la mesure de la tension de la batterie ? Bonne continuation.

Merci @letoc

L'avantage du Lora c'est justement la portée et la faible consommation. Pas de magie, le compromis c'est la très faible bande passante, mais suffisante pour remonter quelques octets toutes les X minutes. Portée de 1-2km en ville, et 10-30km en campagne... Donc oui ça passe dans la maison :)

Mes infos remontent via le réseau gratuit TTN, donc elles remontent via le premier gateway qu'elles trouvent à proximité. Dans mon cas aucun, donc j'en ai mis un sous mon toit

Pont diviseur: oui mais de 2x 100k, donc conso continue de 17µA...

Masse: elle est commune entre tous les éléments, donc ça marche

Bonjour

Réalisation très intéressante et c'est probablement la première sur ce forum à utiliser le réseau LoRaWAN collaboratif TTN ('The Things Networks")

Un détail : le plan de câblage montre une puce radio RFM69 (non LoRa) et non RFM9x (LoRa)

Tout se simplifie quand on a la chance d'avoir dans les parages une passerelle TTN pré-existante.... malheureusement en France il y en a encore très peu (environ 300) et ça n'évolue pas vite...très loin de couvrir le territoire. On est souvent amenés à installer une passerelle TTN perso (complète ou simplifiée) pour faire remonter les infos.

Une passerelle TTN simplifiée peut être réalisée pour une dizaine d'euros , par exemple ici dans le message #3 : https://forum.arduino.cc/index.php?topic=612818.0 C'est une passerelle unidirectionnelle et mono canal.

Bonjour LouLou,

Très beau projet. Votre panneau solaire vient-il de chez Adafruit? Je suppose qu'il est sur le toit. Est-il étanche? Peut-on le mettre directement sur le toit?

Merci

Merci @al1fch pour la coquille (j’ai corrigé sur le Git) ainsi que pour les articles sur TTN et la passerelle low-cost.

A noter qu’il est également possible il me semble de réaliser son propre réseau LoRa sans passer par TTN, pour ceux qui ne sont pas fans du cloud.

@to0n7: sur le Git tu as le lien vers le panneau solaire qui vient effectivement de chez Adafruit. Ils se fournissent ici.
Et oui il est étanche et sur le toit.

A noter qu'il est également possible il me semble de réaliser son propre réseau LoRa sans passer par TTN, pour ceux qui ne sont pas fans du cloud.

Oui, on peut faire du LoRa 'point à point' (sans réseau) ou faire son réseau LoRaWAN privé

Le 'cloud' offre des possibilités intéressantes de transfert de données (publication et traitement)
ThingSpeak pour ce qui me concerne avec la possibilité offerte récement par le réseau LPWAN TTN
TTN vers TSk.png

TTN vers TSk.png

Effectivement le cloud permet de faire un prétraitement et de prendre en compte quel port a été utilisé pour envoyer les données et ainsi de les traiter différemment. Ci-dessous le code pour “décoder” la trame que le poulailler envoie à TTN. De mon coté j’utilise le broker MQTT hébergé par TTN pour récupérer les données du poulailler

//TTN decoder function:
function Decoder(bytes, port) {
  var decoded = {};
 
  if(port == 3)
  {
  // Decode bytes to int
    var tmInt = (bytes[0] << 8) | bytes[1];
    var S1Int = (bytes[2] << 8) | bytes[3];
    var S2Int = (bytes[4] << 8) | bytes[5];
    var S3Int = (bytes[6] << 8) | bytes[7];  
    var S4Int = (bytes[8] << 8) | bytes[9]; 
    var LumInt = (bytes[10] << 8) | bytes[11];
    var BattInt = (bytes[12] << 8) | bytes[13];
    var DigInt = (bytes[14] << 8) | bytes[15];
         
    // Decode int to float
    decoded.Mtemp = tmInt / 100;
    decoded.S1temp = S1Int / 100;
    decoded.S2temp = S2Int / 100;
    decoded.S3temp = S3Int / 100;
    decoded.S4temp = S4Int / 100;
    decoded.lum = LumInt / 100;
    decoded.bat = BattInt / 100;
    // Decode digital inputs
    // writeBitmap(false, digitalRead(INTERLCK), digitalRead(SwDOWN), digitalRead(SwUP), digitalRead(STAT2), digitalRead(STAT1), ButtonUPPressed, ButtonDWNPressed);
    decoded.ButtonDown = (DigInt & 1) === 0?0:1;
    decoded.ButtonUp = (DigInt & 2) === 0?0:1;
    decoded.Charging = (DigInt & 4) === 0?0:1;
    decoded.DoneCharging = (DigInt & 8) === 0?0:1;
    decoded.DoorSwUp = (DigInt & 16) === 0?0:1;
    decoded.DoorSwDn = (DigInt & 32) === 0?0:1;
    decoded.DoorIntck = (DigInt & 64) === 0?0:1;
    return decoded;
  }
  else
  if(port == 4)
  {
    // Decode bytes to int
    var DoorWPos = (bytes[0] << 8) | bytes[1];
    var DoorAPos = (bytes[2] << 8) | bytes[3];
 
    // Decode digital inputs
    decoded.ButtonDown = (DigInt & 1) === 0?0:1;
    decoded.ButtonUp = (DigInt & 2) === 0?0:1;
    decoded.DoorSwUp = (DigInt & 16) === 0?0:1;
    decoded.DoorSwDn = (DigInt & 32) === 0?0:1;
    decoded.DoorIntck = (DigInt & 64) === 0?0:1;
    return decoded;
  }

Le poulailler connecté est en vogue ...

Bravo pour la réalisation.

Je me demandais quelle était la consommation du montage. Je vois un TB6612, que je n'ai pas encore essayé. Il possède une broche de shutdown, que tu utilises d'ailleurs. D'où la question ...

De mémoire la conso est de:

  • 1mA en sommeil
  • environ 20mA éveillé
  • 100mA avec moteur, 2x par jour pendant 60sec
  • 150mA en émission radio (pendant 50msec), toutes les X minutes

Donc ça exclue tout fonctionnement sur pile mais ça à l'air de bien tourner avec le panneau solaire de 1W

OK merci.

Bonjour à tous,

Retour d'expérience après deux mois d'utilisation.

Le montage a fonctionné sans faille, j'en suis très content. La seule difficulté rencontrée tient plus aux poules qu'au montage. En effet ces dernières sont pour certaines des couche-tard et ne veulent pas rentrer avant la nuit-noire. Même en variant le ratio du pont diviseur je n'ai pas réussi avoir une mesure assez fine autour de la nuit-noire afin d'actionner la porte plus tard. J'ai donc légèrement modifié/simplifié le montage et je mesure maintenant la luminosité via la tension en sortie du panneau solaire. La mesure est plus fine, le signal plus propre en faible luminosité et le montage plus simple. Bingo.

J'ai également ajouté un petit buzzer qui beep lorsque la porte est actionnée afin d'alerter les poules qu'il est l'heure de se coucher :)

J'ajoute que la batterie de 4400mAh est probablement surdimensionnée et qu'une capacité 50% plus faible suffirait probablement

J'ai mis à jour le projet sur GitHub

Personnellement j'ai expérimenté les fonctions de calcul de lever et coucher du soleil sun_rise() et sun_set() de la librairie C. Cela marche très bien et l'on peut fermer et ouvrir éventuellement avec de l'avance ou du retard. Seule contrainte : il faut disposer de l'heure.

J'ai également ajouté un petit buzzer qui beep lorsque la porte est actionnée afin d'alerter les poules qu'il est l'heure de se coucher :)

Bonne idée.

J'ajoute que la batterie de 4400mAh est probablement surdimensionnée et qu'une capacité 50% plus faible suffirait probablement

Plus que probable.

Les poules ont compris le coup du buzzer ou c'est plutôt gadjet ?

BrUnO14200: Les poules ont compris le coup du buzzer ou c'est plutôt gadjet ?

Je ne saurais dire si c'est le buzzer ou le décalage de l'heure de fermeture de la porte de 20mins plus tard (possible via la mesure de la luminosité par la voltage du panneau solaire au lieu de la photo-résistance) mais je constate qu'elles ne se retrouvent plus bloquées dehors :)