jeudi 12 décembre 2019

1-COMMUNICATION Utiliser le réseau longue portée LoRaWan pour récupérer ses données


*************************************************
DEBUTANTS:

Cet exercice fait référence à l'exercice précédent sur ce lien:



*************************************************

Si votre ruche n'est pas accessible via le WiFi, voici comment récupérer son poids et l'afficher sur votre ordinateur.

cet article comportera 3 parties:

1-communication LoRa vers Wifi Mqtt NodeRed

2-formatage des données par NodeRed et envoi dans InfluxDb puis affichage dans Grafana

3-optimisation de l’énergie



Ce qui devrait ressembler à peu près à ça:




Le principe est le même que dans l'article précédent, mais nous allons utiliser une "passerelle"  LoRaWan ----->  WiFi autonome

Vous devriez avoir réalisé la partie informatique de l'exercice précédent car nous utiliserons le MQTT et le NodeRed , nous replacerons l'esp WiFi par l'esp LoRa sinon,

Bonne nouvelle: je vous ai préparé une machine virtuelle toute prête à l'emploi qui contient la totalité des applications nécessaires:

MQTT - NODE-RED - INFLUXDB - GRAFANA

environ 5 Go à télécharger: fichier vhd sous linux debian 8

Nous n'avons besoin d'aucun abonnement , on fonctionne en HadHoc
La passerelle supporterai jusqu'à 253 balances 

Côté balance nous mettons un boitier LoRa qui transmet vers la passerelle LoRa , qui retransmets en Wifi sur votre réseau vers la passerelle MQTT.

les Esp32 Lora ont une portée théorique de 2 km à 10 km en mode sans obstacle mais à tester en fonction des antennes fournies et de la puissance indiquée dans le code.

Voici donc la liste des courses en 868 MHZ :



1 TTGO pour la passerelle avec écran OLED c'est mieux




Vous pouvez utiliser un TTGO Lora sans écran pour mettre côté balance



Si vous n'avez pas d'énergie à proximité de vos ruches il sera nécessaire d'alimenter par batteries, et pour ne pas être esclave de la recharge je vous proposerai en fin d'article un montage électronique qui vous permettra d'utiliser 3 batteries type 18650 et un attiny 25 ou 45 pour servir de relais de mise en route de votre boitier Lora/balance afin d'obtenir une valeur chaque demi-heure pour une durée de batteries de 6 mois.


A prévoir:


 1 seul suffira en 2n2222A pour relais alimentation



Pour programmer le ATTINY 45  

Pour économiser l'énergie , ne consomme que 7 micro ampères en veille

Essayez de trouver un 45 si possible , un 85 fera l'affaire.


1 bloc de 1 pour attiny et 
1 bloc de 2 pour l'Esp 


Indispensable pour la programmation ATTINY


Prévoyez 3 batteries et un chargeur. Les batteries avec protection sont un peu plus grandes que les sans protections, ce qui fait un peu forcer dans les boitiers support des 18650. Prenez des sans protection si vous voulez.


Ces liens sont donnés à titre indicatif, vous pouvez vous fournir au moins cher mais les Esp32 en TTGo sont recommandés par rapport au code optimisé pour eux.

Le transport des batteries en Li-ion est toujours très long du fait qu'elles sont acheminées avec précaution . Patience.

****

Lien vers les fichiers de code ino :  ICI


****

Câblage du module sans écran balance




ATTENTION

AVANT DE METTRE EN SERVICE LES MODULES LORA IL FAUT BRANCHER L'ANTENNE SINON CA POURRAIT ENDOMMAGER LE COMPOSANT

les modules supportent une alimentation de 3.3 v à 7 v, si on alimente la balance en 5 v il vaut mieux alimenter le boitier en 5v minimum soit par l'usb ou le câble fourni 

le montage consomme en émission environ 130 mA en pic



PROGRAMMATION DES MODULES


Il va être nécessaire d'installer de nouvelles bibliothèques et de nouvelles cartes.
il faut dans un premier temps ouvrir notre logiciel Arduino, puis aller dans préférence et ajouter les liens vers les cartes:

celle-ci doit être déjà présente mais pas nécessaire dans ce projet:

https://arduino.esp8266.com/stable/package_esp8266com_index.json

il faudra rajouter celles-ci:

https://dl.espressif.com/dl/package_esp32_index.json
https://docs.heltec.cn/download/package_heltec_esp32_index.json
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json



Ensuite il faut aller dans le menu "outils" type de carte "xxxxxx" gestionnaire de cartes ( la mise à jour peut être longue )
Dans le champ de recherche tapez "esp32" et installez ces 2 types de cartes



Allez dans le menu "croquis" inclure une bibliothèque , gérer les bibliothèques

tapez Heltec et installez la bibliothèque Heltec ESP32


Il faut vérifier que la bibliothèque PubsubClient soit installée sinon à faire avant le téléversement :


Programmation de la passerelle:


Chargez : passerelle-heltec_lora_32_1.09_ANON.ino

Modifiez les champs nécessaires à votre configuration et sauvegardez

wifi, port mqtt, topics etc

Dans le menu choisissez: WiFi Lora 32


et vérifiez le port sur lequel elle est branchée.

les autres options restent par défaut

le moniteur série sera paramétré sur 115200

Vous pouvez vérifier et téléverser votre code, la passerelle est prête.





Utilisez de préférence Putty sur com"X" pour visualiser les logs et l'IP connectée plutôt que le moniteur série.





Programmation d'un module balance:



Chargez : LoRaSenderhx711_idAA-newheltec_LORA_prod.ino

Changez les paramètres de:

nom du boitier : par defaut 0xaa  qui doit correspondre a un des noms que va accepter votre passerelle.

Facteur de calibration 

et tare de la balance.

Enregistrez, vérifiez et téléversez.




Chargez la balance ou injectez de la valeur



Données reçues et transférées :







prochain article: installation de la machine virtuelle pour recevoir, enregister et afficher vos données.
...........





25 commentaires:

  1. Bien à toi,
    Là, tu vas loin,
    Les 2 à 10 km, à voir en fonction du bazar de Fresnel.
    Par contre, le système devrait être très économe au niveau de la consommation si mise en sommeil profond.
    Comme je patauge là-dedans, je ne peux pas t'en dire plus.
    Les accus peuvent être récupéré dans une vielle batterie d'ordinateur portable, il y en a toujours un ou deux qui ont été épargnés dans le lot.
    Cordialement,

    RépondreSupprimer
  2. Bonsoir a tous
    Pour la bibliotheque ajouter celle-ci qui est d'actualité et fonction!

    https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series/releases/download/0.0.5/package_heltec_esp32_index.json

    RépondreSupprimer
  3. Bonjour Jean Claude , merci beaucoup pour ces précisions.
    Amicalement, Gilles.

    RépondreSupprimer
  4. Bonjour Gilles,
    Un grand merci a toi pour tout ce partage, je ne suis ni électronicien,ni programmeur,ni apiculteur,mais avec ton blog et les conseils de Api D, j'ai presque réussi à réaliser une balance pour ruche connectée. Je suis en attente de mes TTGO esp32 pour finaliser. J'ai pour le moment fabriqué un boîtier qui permet de le brancher d'une ruche a l'autre pour faire les relevés de poids. Ça fonctionne en wifi mais les ruches sont trop éloignées de la box. C'est pourquoi je m'attaque au système Lora.Dans tous les cas je donnerai des nouvelles de mon avancement dans cette réalisation.
    PS: je suis de la région de Saint Dié des Vosges😉
    Encore merci pour ce partage👍
    Amicalement, Jean Claude

    RépondreSupprimer
  5. Bonsoir a tous,
    Quelques nouvelles de mes essais. Je ne sait si quelqu'un passe encore sur ce blog, mais bon...
    Reçu donc esp et fait des premiers essais, de portée, c'est pas des foudres de distance, mais ça couvre quelques centaines de mètres, bien suffisant dans mon cas.
    Branché ce soir a la balance, mais aucune données...
    En regardant l'attribution des ports branchés a la balance, le GPIO15 est sur SCL de la balance, mais est déjà attribué a SCL Oled, donc j'ai changé cette attribution par le port GPIO13 et... ça fonctionne!

    RépondreSupprimer
  6. Bonjour Jean-Claude. Oui il y a eu 101 vues cette semaine et 324 ce dernier mois. Merci à tous.
    En effet la distance va dépendre de la puissance des antennes aussi bien sur la passerelle que sur les équipements et de la qualité du matériel. j'avais fait des tests sur 600 m ça marchais bien, l'avantage c'est que ça consomme très peu.
    Content que ça te conviennes. Amicalement, Gilles.

    RépondreSupprimer
  7. Bonjour Gilles,
    heureux de me rendre compte que tu visites toujours ton blog. J'avais une demande, comme je le dis a mes premières visites, je ne suis ni apiculteur, ni programmeur...
    Pour l'apiculture ça n'est pas grave, puisque c'est pour un ami apiculteur que je me suis intéressé a ton projet. Mais cet apiculteur aimerait avoir des mesures de température dans ses ruches,tout du moins celle de l’intérieur de la ruche, sur ta machine virtuelle tu as 2 sondes 18B20 mais dans tes croquis je n'ai aucune de ces sondes. Si ça ne te pose pas de problème pourrais-tu diffuser les croquis Arduino avec 1 sondes DS18B20 ça serait sympa. Je te remercie a l'avance.
    Amicalement, Jean Claude.

    RépondreSupprimer
    Réponses
    1. Bonjour Jean-Claude, j'ai mis le code dans le lien de téléchargement des fichiers pour la balance Wifi article de février tout en bas et nom: LED-mqtt-node-double-ds18x20-5110-nonbloq-azure-debian.ino .
      Ca tourne avec un esp8266 et avec 2 particularités : un affichage sur un écran LCD 5110 Nokia et un code non bloquant : une led rouge s'allume s'il n'y a pas de comm avec le MQTT et 2 sondes 18B20 étanches. Tu peux lire les températures sur l'écran même sans connexion ou récupérer les datas sur Grafana dans la VM si connectée.
      le code est commenté avec le pinout de la carte .
      Par contre si tu ne veux qu'une sonde tu peux aller voir ici par exemple: https://www.carnetdumaker.net/articles/mesurer-une-temperature-avec-un-capteur-1-wire-ds18b20-et-une-carte-arduino-genuino/
      Le code de récupération de l'adresse des sondes est également disponible sur ce site.
      Bon courage et à bientôt.
      Gilles

      Supprimer
  8. Bonjour Gilles, super sympa de répondre ! Je viens de compulser le code, mais tu parles de esp8266...du coup plus rien à voir avec le TTGO Lora. Tu nous as tellement habitué à du travail très premaché que me voici de nouveau dans des recherches. Bon pour le moment,la température ne sera pas trop mes priorités. Ça peut toujours être ajouté par la suite. Pour une ruche ou 2 le wifi passe,je mettrai sur un 8266 pour ces deux ruches, après je verrai.
    Encore un grand merci Gilles pour ton soutient. Jean Claude

    RépondreSupprimer
    Réponses
    1. Après coup, je me rend compte que ça n'est pas nécessaire de créer une usine a gaz. Une lecture en direct de la température est largement suffisant. Ton système est simple et me convient parfaitement.

      Supprimer
    2. Bonjour Jean-Claude, heureux que ça puisse te convenir.

      Supprimer
  9. Bonjour Gilles, bonjour a tous,
    Je reviens suite à un "soucis". Depuis le début je n'ai pu brancher la balance au GPIO15, j'ai trouvé la solution en changeant sur le 13. En attendant mon matériel, j'ai essayé d'adapter le code pour pour y brancher une sonde 18B20, j'ai réussi, ça fonctionne mais impossible d'utiliser le fameux GPio15, ça fonctionne sur le 13 également mais pas le 15. Je précise que c'est un TTGO sans écran. En regardant le code je vois "Heltec.begin(true /*DisplayEnable Enable*/" ne faudrait il pas mettre en "false" pour annuler l'utilisation du port 15? Je dis peut être une connerie!?
    Si tu peux Gilles éclairer ma lanterne !!
    Merci d'avance
    Jean Claude

    RépondreSupprimer
  10. Bon, après essai, j'ai mis en "false", j'ai de nouveau une lecture sur le gpio15 et 13 sur le moniteur série Arduino, mais la sonde et la balance ensemble donnent une lecture incohérente du poids, ça démarre avec la valeur de la tare en augmentant sans raison!?

    RépondreSupprimer
  11. Bonjour Jean-Claude, désolé mais je ne sais pas .

    RépondreSupprimer
  12. Bonjour Gilles
    Pas de soucis!On ne peut pas tout savoir;-))je suis toujours en recherche pour communiquer en lora et par la passerelle avec un TTGO dédié a cette fonction. Je cherche,je cherche,mais je trouverai! c'est très long, mais ça me permet de comprendre comment tout ça fonctionne.
    J'ai fait une balance dont je suis assez fière, j'ai même fabriquer 5 PCB avec la gestion de la veille pour environs 5euros chez JLCPCB (si ça fonctionne, j'aurai dispo quelques PCB de trop), la balance est une petite structure en tube inox de 40mm avec un boitier et des supports en PLA.
    Je garde contact ici pour les nouvelles
    Jean Claude

    RépondreSupprimer
    Réponses
    1. Bonjour Jean-Claude,
      J'ai aussi eu un problème pour raccorder mes sondes de température sur le MKR Fox. J'avais un autre programmes dans mes "archives" et avec lui cela a fonctionné. C'est celui de la page Sigfox et qui doit fonctionner avec n'importe quelle entrée numérique si elle est définie ("5"). Pour une sonde il faut surement supprimer tout ce qui a trait à "temp2". Ce code utilise des bibliothèques spécifiques.
      Es tu déjà arrivé sur "Grafana"? Cela a été dur? Je suis un peu apiculteur, mais ni électronicien, ni programmeur non plus.
      Apicalement,

      Supprimer
  13. Bonjour Api,
    Pas de comparaison, tu es comme je vois très avancé dans tes projets, pour ma part je n'en suis encore qu'au début,vu que je maitrisais a peu prés le longue portée lora, j'ai pensé mettre au moins une sonde de température sur le même ESP lora, le problème viens que je ne touche pas une bille en programmation, et donc je fait des essais en aveugle avec des bouts de codes sans trop savoir pour certains bouts quelles utilités et quelles fonctions elles ont.
    Mon ami apiculteur est déjà satisfait de ses pesées, c'est ce qui compte. Pour le reste c'est pour le "plaisir" de la recherche .Pour le moment les pesées en Lora sont simulées chez moi pour valider avant d'installer le tout chez mon ami. Je sais qu'avec Grafana ça ne sera pas un problème, j'y avait installé des DHT22 en attendant mes 18B20, mais c'est ce code qui me fait soucis.Je ne perds pas espoir de réussir un jour!

    RépondreSupprimer
    Réponses
    1. La page Sigfox c'est ça
      https://u.pcloud.link/publink/show?code=kZcDUIXZ1vKGJKnSdnhl6ezwHeEVUfyYJiMy
      Revoie le code connected_hive_code
      Donc, Grafana c'est facile?
      @+

      Supprimer
  14. Merci Api!
    Je compulse rapidement!
    Oui Grafana avec la machine virtuelle, tu peut décortiquer ce qui existe sur celle de Gilles et tu reproduis la tienne avec tes propres paramètres.
    En fait, j'ai transformé le .vhd de la machine virtuelle en .img, j'ai installé mon .img sur le disque dur d'un vieil ordi, démarré l'ordi sur ce DD et là j'ai une machine totalement dédiée a nos données de ruche.
    Après tu installes une machine virtuelle sur ton ordinateur usuel, tu te retrouves avec deux machines une virtuelle et une ou tu peut faire tes tâtonnements sur NodeRed ou Grafana .
    Bonne soirée

    RépondreSupprimer
  15. Bonjour a tous
    Quelques nouvelles assez satisfaisantes, suite à mes investigations pour inclure deux sondes 18b20 au système de la balance, mon fils m'a donné un coup de main pour faire cette programmation, je peux donc maintenant avoir sur un seul TTGO Lora la lecture du poids, et 2 sondes, avec visu sur Grafana. Le seul inconnu pour le moment est la durée des batteries.

    RépondreSupprimer
  16. Bonjour a tous,
    Suite a mon dernier message, l'inconnu durée batterie est maintenant connu.
    Elles ont tenu avec 5 mois de froid.
    Très satisfait du résultat, encore merci pour ce beau partage et les aides des visiteurs ;-))

    RépondreSupprimer
  17. Bonjour Gilles, je vous remercie pour votre tutoriel qui est vraiment très intéressant, je me pose une question concernant le LoRa entre l'ESP32 et le serveur, quel type de passerelle LoRa avez-vous utilisé ? Avez-vous fabriquez vous même cette passerelle ?
    Merci d'avance pour votre réponse

    RépondreSupprimer
    Réponses
    1. Bonjour Mathieu, oui la passerelle est autonome, c'est le Lora avec écran. Elle récupère les infos du lora sans écran connecté au hx711 et renvoie les infos en wifi..
      Le code des 2 lora est fourni.
      Merci de votre intérêt pour la chose. Gilles

      Supprimer
  18. En fait, l'ESP sans écran est branché sur la balance, lis les infos de poids et les distribue dans la fréquence lora. La passerelle Lora (ESP avec écran) réceptionne les infos et les communique en wifi au serveur.

    RépondreSupprimer