dimanche 22 décembre 2019

3 - ÉCONOMISER L'ENERGIE

L'alimentation de notre module Lora se fait par le connecteur d'entrée LipO-LI-iON fourni




Les tests et les commentaires des forums sont unanimes, on peut utiliser la fonction DeepSleep de l'esp32 pour le mettre en veille , et dans tous les cas il faut une méthode de réveil et éviter de les mettre dans le coma difficilement réversible.

La meilleure performance en veille (serait) une consommation de 12 milli Ampères ce qui est très insuffisant pour ces Esp.

Je vous propose un montage un peu tiré par les cheveux mais qui fonctionne parfaitement.
Autre option, le solaire, il existe des montages simples à réaliser.

On va utiliser un autre modèle d'Arduino comme commande de relais d'alimentation de l'Esp, un ATTINY 45 ou 85 qui se programme comme un Arduino mais qui consomme en veille sur une alimentation de 3.3 V par plus de 7 micro Ampères et réveillé par un timer interne .




Le transistor 2N2222A en mode bloqué supporte jusqu'à 900 mA ce qui est largement suffisant dans notre cas.

************Modifcations au 01/05/2020*****************

Api_d nous propose une alternative en  changeant de transistor, ce qui est fort appréciable pour une puissance supérieure, en effet le montage que je vous propose ne fonctionnera pas avec une carte plus gourmande en énergie.



Pour plus de souplesse j'ai testé un système avec un transistor à effet de champ à grille isolée plus couramment nommé MOSFET modèle courant P16NF06 . Le schéma est un peu différent mais s'il est un peu plus cher , ll peut passer beaucoup plus de puissance. Alimenter des relais , des Esp plus gourmands en Wifi etc ...
Le code attiny ne change pas.





La résistance R1 limite le courant de sortie du attiny < 20 mA

La résistance R2 décharge le condensateur interne du Mosfet à la veille du attiny et coupe le circuit externe.


************FIN    Modifcations au 01/05/2020*****************

A vous d'améliorer ce montage, les batteries 18650 restent fragiles quand leur tension descend en dessous de 3 v (elles existent aussi en mode protégé) , rechargez les au moins avant 6 mois ou vous pouvez modifier le codes pour y mettre un témoin de charge batterie en entrée analogique, ou mettre une Zener pour bloquer le courant en dessous d'une certaine valeur, ou utiliser une carte BMS etc ...

Le Attiny consomme vraiment très peu , sa batterie peut tenir plus d'un an .

Je suis preneur des améliorations.




cablage et programmation d'un AtTiny






Installation de la carte ATTINY



Installation de la bibliothèque tinysnore ( deep sleep )





Choix de la carte et du programmateur , mettez bien la clock à 8Mhz
et choisissez votre modèle d'Attiny, la différence entre le at45 et le at85 c'est la taille de la mémoire 



Première programmation du microcontrôleur ATtiny : si la puce est programmée pour la première fois, allez dans Outils et faites « Graver la séquence d’initialisation ». Ceci n’est pas à refaire pour une reprogrammation de la puce.


Chargez le code "sleepy_blink_at45_20sU-30mnL.ino"  , branchez votre programmateur, vérifiez le port com et téléversez.

Vous pouvez au préalable modifier ce code pour faire des tests 

20sU correspond à 20 sec en fonctionnement
30mnL correspond à 30 mn en veille

Sachant que le sketch pour l'Esp, on envoie les valeurs de charge toutes les 7 sec (paramétrable), temps de démarrage du module compris on recevra toutes les 30 mn 2 valeurs séparées de 7 sec 

 digitalWrite(led, HIGH);
  delay(20000); // 20 seconds, using full power
  digitalWrite(led, LOW);
  snore(1780000); // Deep sleeps for 30 mn 



Vous pouvez utiliser ce module: https://fr.aliexpress.com/item/32647690484.html
très performant en wifi sur lequel vous installez EspEasy et des sondes de températures et autres sans programmation et compatibles avec la VM présentée dans ce tuto -->mqtt

Source principale à l'origine de ce projet: https://projetsdiy.fr un grand Merci !

Et bien que le sujet soit différent, une excellentissime source de développement Arduino, je cite : https://www.locoduino.org

Et bien sûr le forum Arduino Francophone.






Voilà c'est fini pour ce projet, amis apiculteurs, mes respects .















samedi 21 décembre 2019

2- AFFICHAGE LoRaWan ou Wifi

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


Afin d'éviter une installation complexe de la base de donnée et du moteur graphique qui sont en langue anglaise, je vous propose d'installer une machine virtuelle qui est déjà paramétrée pour un usage domestique.


Elle dispose de 


MQTT - NODE-RED - INFLUXDB - GRAFANA

Cette machine peut être propulsée par des moteurs gratuits différents:

Hyper-V de Microsoft ( disponible sur Windows 10 nativement en version PRO)
VMWare Workstation Player  ( Windows Linux Mac)
VirtualBox  ( Windows Linux Mac)


Cette machine tourne sous Linux mais ne soyez pas effrayés, le système est prêt, les quelques commandes qui pourront être nécessaires seront décrites en détail.

Pourquoi une MV sous Linux:

C'est très fiable, très stable, très économe en ressources ( pas d'interface graphique) et gratuit.
C'est mobile et indépendant de votre système d'exploitation.



Installation d'Hyper-V




Installation VMWare



Installation VirtualBox

https://fr.wikihow.com/installer-VirtualBox

version 6.1


Le mieux sous Windows serait d'utiliser Hyper-V , mais pour le plus grand nombre d'utilisateurs, nous allons regarder comment utiliser la VM sous VirtualBox (en français).




Au premier démarrage de la VM il faut connaitre l'adresse ip qui lui a été affectée par le dhcp de votre box.

L’idéal serait d'aller sur la console d'administration de votre box, et d'ajouter cette machine en adresse statique afin qu'elle soit fixée.

Comme montre cette vidéo, connectez vous sur la console:

utilisateur: superadmin
mdp: superadmin

! c'est en QWERTY donc il faudra taper superqd,in

et  ip -4 qddr

Nous n'auront plus besoin ensuite d'aller sur la console, on utilisera Putty et les sessions seront en Azerty

Et comme tout est prêt vous pouvez vous y connecter avec votre navigateur à l'adresse que vous avez récupéré.

ex:

Node-Red http://192.168.1.27:1880

Grafana  http://192.168.1.27:3000 utilisateurs :  admin pass: admin  ou superadmin pass: superadmin

C'est important que l'adresse IP soit fixée dans votre bail DHCP car votre VM recevra les messages MQTT donc ce sera cette IP qu'il faudra indiquer dans vos sketchs Arduino

J'ai volontairement laissé des données dans la BDD influxDB afin d'avoir un aperçu de la chose. je vous indiquerai les commandes pour vider les bases.


lien téléchargement VM ICI

Ca pèse 5 Go

Créez un dossier sur votre disque dur ex: c:\VM , posez y l'installeur de VirtualBox et la VM téléchargée

Installez et testez.



Modifications à effectuer sur Node-red



il faut adapter votre ou vos topics en entrée à cette configuration




Remplacer esp003/balance3  par votre valeur qui par défaut dans le sketch etait: #define Probe01_topic "balance/poids" donc balance/poids







Si vous envoyez des données vers MQTT de cette VM vous devriez voir ces valeurs arriver dans Grafana



Guide utilisation sommaire de Grafana


Ce sera plus facile à montrer avec une petite vidéo

Accès en http://votreip:3000

Si vous vous connectez en admin admin , une nouveau mot de passe vous sera demandé.






Bien évidemment votre PC ne devra pas se mettre en veille et la VM toujours en fonction.
Pour de meilleures performance en fonction de votre PC vous pouvez affecter 1 coeur de plus à votre VM ( quand elle est arrêtée, paramètres système ...)


Téléchargez Putty: ici

Supprimer les données que j'ai laissées:

ouvrir putty et se connecter sur votre ip
puis passer ces commandes :






Votre Grafana est prêt à afficher vos données.

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.
...........





vendredi 22 février 2019

Peser sa ruche et envoyer les données en WiFi sur son ordinateur

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

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



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





Si votre ruche est à proximité WiFI d'une BOX internet, voici comment récupérer son poids et l'afficher sur votre ordinateur.

Principe:





Et pour avoir quelque chose qui ressemble à ceci:





On va utiliser le même matériel que dans l'article précédent, on va ajouter quelques programmes à notre ordinateur et modifier le code installé précédemment.

La tare et le facteur de calibration restent inchangés.


Il nous faut installer Mosquitto et Node-Red

-------------------------------------------------------------------------------------
Pour ceux qui veulent aller plus vite, une machine virtuelle est disponible ici

puis continuez dans cet article à la fin de l'installation manuelle
-------------------------------------------------------------------------------------

Installation manuelle



1- Installer mosquitto

commencez par télécharger la version qui correspond à votre système d'exploitation en 32 ou 64 bits à cette adresse:

https://mosquitto.org/download/


c'est léger comme produit mais allez donc voir ici à quoi ça sert:

Mosquitto

Exécutez le et laissez coché l'option "service" comme ça on le démarre avec Windows. 


Ensuite allez dans le menu démarrer puis exécuter
tapez la commande: services.msc et OK




Repérez la ligne Mosquitto Broker et cliquez droit , propriétés

vérifiez qu'il est en automatique et cliquez sur démarrer.

Fermez les fenêtres et c'est ok pour ça.


On utilisera Mosquitto par défaut , sans accès par mot de passe, sur le port TCP 1883.

2- Installer Node.js

Télécharger la version qui vous convient en 32 ou 64 ici :

https://nodejs.org/fr/

en principe on vous propose la version LTS dans la bonne version de votre Windows.

Installez.   next  next .. finish


Verifier que node est bien installé, ouvrez une invite de commande (admin)
ou simplement PowerShell et tapez les commandes 

npm -v

puis node -v

ca doit vous répondre à peu pres ça:



PS C:\Users\"votrenom"> npm -v
6.4.1
PS C:\Users\"votrenom"> node -v

v10.15.1





Ensuite il faut installer node-red, l'application graphique.

toujours dans PowerShell ( c'est mieux ) ou en invite de commande tapez:

PS C:\Users\"votrenom"> install -g --unsafe-perm node-red   puis entrée.




Laisser faire, oubliez les Warn , et c'est fait.

repérez bien "votrenom"

Maintenant on va lancer node-red au démarrage de Windows dans le planificateur de tâches.


Ouvrez le "Panneau de configuration" puis "Outils d’administration"

Cliquez "Planificateur de tâches"


Créer une nouvelle tâche




Mettez y un nom et les options comme ci dessous





Suivez les flèches



Onglet suivant, 

Mettez ceci en remplacant votre nom de profil utilisateur:





C:\Users\<votrenom>\AppData\Roaming\npm\node-red.cmd

ex:

C:\Users\gle\AppData\Roaming\npm\node-red.cmd

puis ok

passez l'onglet ' conditions' et allez sur 'Paramétres'

laissez les options par défaut et cliquez OK

une fenêtre s'ouvre , entrez votre mot de passe et cliquez OK


Dans la liste des tâches, recherchez celle que vous avez créée et cliquez bouton droit : démarrer

Sinon redémarrer votre PC.


testons si c'est ok:

Ouvrez votre navigateur internet, et suivez cette adresse:

http://127.0.0.1:1880

Si vous ne voyez pas ça c'est raté




Bien , maintenant on reste sur node-red et il nous faut installer le Dashboard pour les Camemberts et les graphs.

Ouvrir le menu ( barres en haut à droite) puis cliquez Manage palette



Allez sur l'onglet Install, dans le champ texte de recherche , tapez: dashboard

Recherchez et utilisez l'ascenseur pour trouver "node-red-dashboard" version 2.12.2 ou supérieure.

Cliquez install à droite, attendez que le statut installed soit affiché puis cliquez : close. 





En récompense de vos efforts on va pouvoir tester si tout fonctionne .

Je vous expliquerai en details comment gérer les flux et comment les afficher correctement dans dashboard plus loin.

Node-red va nous permettre d'importer des flux tout prêts.

Je vous ai laissé un fichier "balance-maison.txt"

Ouvrez le avec notepad.exe puis sélectionnez le tout et faites Copier.





ensuite allez dans le menu ( en haut et à droite ) puis cliquez :
import ->  clipboard

une fenêtre s'ouvre et vous faites coller puis import en bas à droite.

les nodes sont collés à votre souris déplacez et cliquez pour les déposer au centre de votre fenêtre.
















Le bouton deploy est rouge , cliquez deploy vous valider la configuration.   


Pour tester la configuration on utilise 2 flux

Par le flux de gauche on va injecter des données aléatoires, des valeurs de 1 à 100 vers le topic Mqtt que j'ai nommé balance/poids

Par le flux de droite on va simplement s'abonner au topic balance/poids et récupérer les données qu'on va afficher simultanément:

1- dans la fenêtre de debug
2- dans un compteur
3- dans un graph



Ensuite on supprimera le flux de gauche pour récupérer les données envoyées par notre balance par Mqtt embarqué dans notre module ESP8266 WiFi  vers le topic balance/poids.





aller sur le bouton Dashboard et cliquez sur ce bouton ( affichage graphique ) ou allez sur:


Admirez ! ...

ARRET de l'injection Tests

Quand vous en avez marre vous pouvez arrêter l'injection en supprimant le lien entre le node "injection test" et "nombre aléatoire" sélectionnez le lien sur le graphique puis appuyer sur suppr du clavier et cliquez  DEPLOY !

Avant d'injecter de nouvelles valeurs il est préférable de vider le graph

allez sur node-red, cliquez sur le node "Graphique"
repérez la ligne Type:  Line Chart
remplacer par Bar Chart

cliquez Done et Deploy

retournez sur le node "Graphique" et remettez en Line Chart
et dans la ligne du dessous mettez 1 weeks (1 semaine pour commencer)
ne surchargez pas trop le nombre de points à afficher au départ.

puis DONE et DEPLOY

le graph doit être vide de données injectées et prêt a recevoir 1 semaine glissante du poids de votre balance.


------------------------------------------------------------------------------------
fin installation manuelle
------------------------------------------------------------------------------------


Programmation du module Esp8266 WEMOS



Comme la fois précédente vous démarrez l'IDE Arduino et vous ouvrez :

"MQTT-balance-poids-Wemos-Wifi.ino"


Attention, il faut vérifier que la bibliothèque PubsubCilent soit installée sinon à faire avant le téléversement ( merci Pascal ) :






Vous aurez à modifier DANS CE PROGRAMME:

1-votre SSID wifi ( de votre box)
2-le mot de passe Wifi
3-l'adresse IP du PC sur lequel tourne MOSQUITTO ( votre PC)
4-votre facteur de calibration
5-votre tare fictive

enregistrez vos modifications et cliquez sur l'icône V pour vérifier la cohérence avant de téléverser.

Vous aurez à modifier sur votre PC

- le pare-feu ou votre antivirus s'il fait pare-feu

Soit vous désactivez le pare-feu ou vous ouvrez en entrée le port TCP 1883
c'est la porte d'entrée des données envoyées par le module de la balance.

Les paramétres Arduino n'ont pas dû changer, verifier dans Outils que vous êtes restés sur LOLIN(WEMOS)D1 mini pro et le port com.

Branchez le module à l'USB, téléversez.


chargez et déchargez votre balance, visualisez les données qui arrivent sur le debug et dans le graph.





Éloignez votre balance, mettez éventuellement un répéteur Wifi si le signal est insuffisant et alimentez en permanence avec un adaptateur secteur-miniusb 5V (un ancien chargeur téléphone portable par exemple)

Félicitations !


Lien vers les nouveaux fichiers: ICI


le lien vers les autres fichiers est en fin de l'article précédent.


Prochain article à venir: 

Récupérer les données dans une base de données InfluxDB via LoraWan privé en longue distance ( 2 - 10 km) en ultra faible consommation d’énergie et affichage des graphiques avec Grafana.