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.








































dimanche 17 février 2019

Peser sa ruche de façon simple et pour une poignée d'euros




Ces tutos sans prétentions vont vous permettre de créer votre (vos) propre balance à mettre sous votre ruche.


On peut toujours y mettre une balance de ménage mais la surface est trop petite, l'affichage est souvent caché et comme la remise à zéro est systématique ça n'a pas d'intérêt.


Je vais vous proposer plusieurs exemples sur la même base de balance, avec une électronique différente.


Le premier sera une balance simple, autonome, à lecture directe.

Les composants sont des produits neufs, compatibles, et achetés sur le marché Chinois pour bénéficier de tarifs très intéressants.

Le corps de la balance est fait de chutes de planches en bois, mais vous pouvez faire autrement.



Liste des courses:


1 kit de 4 cellules de charge de 50 kg chacune, ce qui permettra de charger jusqu'à 200 kg et son amplificateur de niveau HX711 pour moins de 4 €






1 Microcontrôleur compatible Arduino




1 bouton marche/arrêt




1 ecran Oled





1 carte PCB ( en option mais c'est mieux)






1 fer à souder, du fil de récupération sur un vieux câble réseau ,  une rallonge USB (Mâle - Femelle)  et une boite pour y mettre le tout.




La grosse problématique du sujet c'est l'alimentation électrique de ces projets, les ruches étant éloignées des habitations et du voisinage.


Il faut donc utiliser du matériel à faible consommation à alimenter par piles ou batteries ou amener un peu de courant à proximité.



Fabrication de la balance


Prenez une vielle planche de meuble HS et découpez là de façon a faire 2 morceaux de dimension 40cm X 50cm environ ce qui correspond à la dimension d'une ruche DADANT.





Placer y les 4 cellules de charge, pour ma part je lai ai surélevées avec un module que j'ai fait fabriquer en plastique avec une imprimante 3D ( le fichier d'impression STL vous est fourni ) , car il faut que le dessous du centre de ces cellules soient dans le vide pour absorber et résoudre la charge.



Vous pouvez aussi évider la planche pour que ca fasse le job ou surélever avec des cales l'extérieur de la cellule.



      



Préparez la planche du dessus avec des renforts acier afin que ceux ci soient en correspondance avec les cellules de charge






Fixez également 4 bouts de cornière pour éviter le glissement de la plaque du dessus qui doit rester libre , éventuellement rognez les coins pour ça.

Câblage de l'électronique


Repérez comme ci dessus arbitrairement mais méthodiquement les 4 cellules 

UL soit Haut et Gauche
UR Haut et Droite
LL Bas et gauche
LR Bas et droite

Reliez le blanc de UL avec le blanc de UR

Reliez le blanc de LL avec le blanc de LR

Reliez le noir de UL avec le noir de LL

Reliez le noir de UR avec le noir de LR


Les 4 fils rouges vont aller sur le contrôleur HX711, celui ci est repéré:

E+ E- A+ A- B+ B-

B+ ET B- ne serviront pas 

par contre le rouge de UL ira sur E-

UR sur A-

LL sur A+

LR sur E+



Et de l'autre côté on va souder les fils du connecteur qui servira à rejoindre le boitier électronique de commande et de visualisation des données.

Découpez en deux votre câble USB côté court sur la femelle.

Ces câbles étant normalisés et 'droits' c'est a dire fil à fil pin à pin on peux utiliser le code de couleur des fils.

Je vous propose de relier le câble rouge sur VCC ( alimentation)
le câble noir sur GND ( masse )

le câble vert sur DT (data )
le câble blanc sur SK  ( clock ou horloge)


Cette base restera identique pour toutes les options suivantes, et la calibration restera également identique.

Voila votre balance est prête à recevoir 200 Kg et même + .


PRÉCISIONS:

Essayez de raccourcir les fils au maximum, ne faites pas comme sur cette photo où les fils sont  trop longs et enroulés, ça peut jouer sur la dérive du calcul du poids.

INFO: les fils des 4 cellules doivent avoir la même longueur

Pour être utilisée, cette balance devra être calibrée. Rien de sorcier, un petit programme va nous faire ça très bien, mais comme cette balance a pour raison d'être de rester sous la ruche en permanence, nous n'aurons pas le loisir de la recalibrer régulièrement.

Votre balance de ménage se calibre et se met à Zéro des que vous allez vous en servir, quel que soit la température de la pièce dans laquelle vous vous trouvez.

Or dans notre cas il y aura des conditions extérieures différentes dans les saisons, ce qui va perturber l'affichage du poids et on observera des légères variations qu'on ne pourra pas réguler par le programme.

De plus en cas de remplacement des piles, on ne veut pas que le compteur se mette à 0 donc pas de calibration au démarrage du module.

Ne vous attendez pas à avoir une précision au gramme mais on peux prétendre à une précision de quelques dizaines de grammes au maximum une centaine.



Fabrication du boitier de contrôle


Pour la programmation du contrôleur on va avoir besoin d'un ordinateur

Sous Windows ça fonctionne 


On va commencer par l'électronique:

Ce module fonctionne également en wifi et bluetooth et pourra ultérieurement être interrogé à distance avec un téléphone portable à condition de modifier son programme.

Dans notre exemple ces fonctionnalités seront désactivées.

Schéma de câblage





ViN: entrée alimentation ou +  de 5 à *9 V MAXI

GND: masse générale ou -

3V3 : alimentation pour les modules externes, ils supportent de 3 à 5V mais 3.3V sont suffisants


2ème partie du câble USB


D7: branchement du fil vert (DATA) de l'autre bout du câble usb coupé

D8: branchement du fil blanc (CK) de l'autre bout du câble usb coupé
+ rouge sur 3.3V et noir sur GND


Ecran Oled


D1: SCL

D2: SDA
VCC rouge sur 3.3V et noir sur GND


Alimentation

Le module est équipé d'une entrée MiniUsb qu'on va utiliser pour programmer et tester le montage.

En autonomie, 4 piles alcalines montées en série délivreront les 4 * 1.5V soit 6 V nécessaires ou 1 pile de 9 V pour un volume reduit.


Si vous étes proche d'une source 220 V , un adaptateur chargeur de téléphone portable peut faire l'affaire, sortie 5 V branché sur le MiniUsb.






Le programme


Il va falloir télécharger et installer Arduino IDE, ce programme installé sera en Français bien que le téléchargement et l'installation se fasse en Anglais


allez sur cette page: https://www.arduino.cc/en/Main/Software#


puis sélectionnez Windows ou le système que vous utilisez.






et ensuite

Juste télécharger mais vous pouvez aussi faire une donation et télécharger.
L'exécutable se télécharge sur votre pc ( environ 100 Mo ) puis il faut l'exécuter.

Acceptez les options par défaut next next ... et close.



Démarrer le programme, vous arrivez sur ceci:




C'est le squelette d'un nouveau programme, mais auparavant il va falloir quelques paramétrages pour reconnaitre notre module.


Ouvrez le menu Fichiers , puis Préférences


A cet endroit il faut rajouter cette ligne puis faire OK




ceci:



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


Puis aller dans le menu Outils, puis Type de carte , et en haut de ce menu cliquez "gestionnaire de cartes"







Dans le champ texte à droite de Tout, tapez : esp8266

Recherchez esp8266 by ESP8266 Community et cliquez sur installer ( version 2.5.0 ou supérieure)

(dans cet exemple la carte est déjà installée mais c'est le principe)

puis fermer.



Maintenant on va installer la bibliothèque pour l'amplificateur de la balance, le module HX711.

il faut aller dans le menu Outils puis "Gestionnaire de bibliothèques"

Idem que précédemment:





Dans le champ texte on tape hx711

et on installe HX711_ADC version 1.1.3 ou supérieure.

puis fermer.

De la même manière on va installer la bibliothèque de l'écran Oled



Dans le champ texte on tape oled

On recherche Adafruit SSD1306 version 1.29 ou supèrieure


En prévision tant qu'on y est on va installer la bibliothèque Pubsubclient



Tapez Pubsubclient et descendez un peu avec ascenseur pour trouver celle-ci 

installez ..

puis fermer.

Le paramétrage est enfin terminé . 

Branchement du module et téléversement du code




Branchez le câble USB mâle dans l'USB femelle de la balance.

NE BRANCHEZ PAS DE PILE , l'alimentation se fait via votre PC et le mini USB

Ouvrez Arduino et allez sur le menu Outils, Type de carte: et sélectionnez une carte qui porte le nom de:

LOLIN(WEMOS) D1 mini pro ( la liste peut être longue )

Dans ce même menu regardez les ports qui sont actuellement visibles





Connectez un cable MiniUsb USB à votre PC ( ici câble violet )

Votre PC doit reconnaitre le périphérique et lui affecter un port COM

Si ça n'est pas le cas il faut installer le pilote du port série de ces modules.

je vous le fournit dans le package à télécharger:

CH341SER.exe : exécutez le , redémarrer votre PC et rebrancher le MiniUsb.

Retournez dans le menu Outils, Port: et sélectionnez celui qui est nouveau qui n'apparaissait pas avant.

Toujours dans le menu Outils, sélectionnez: Moniteur série, puis en bas à droite dans la fenêtre

sélectionnez une vitesse de 9600 bauds





Celle ci doit être identique à la vitesse qu'on a paramétré dans le programme.

Voilà on est prêts pour le calibrage, on va téléverser le programme de calibrage dans le module.

Allez dans le menu, Fichier, Ouvrir et ouvrez le fichier:

 "calibration-balance-9600-d7d8.ino" que j'ai mis dans le package.

Répondez oui au message pour le mettre dans votre bibliothèque.

Allez dans le menu Outils, moniteur série, la fenêtre du moniteur s'ouvre.

Ne mettez aucune charge sur la balance et préparez une masse connue de quelques Kilos ou +

Mettez les 2 fenêtres côte à côte et cliquez sur la flèche de téléversement.

le programme se vérifie et envoie les données. A la fin le message "téléversement terminé" doit apparaitre et le moniteur série a démarré.








Si le moniteur n'a pas démarré ou que vous avez loupé le démarrage, mais que le téléversement s'est bien passé vous pouvez appuyer sur le bouton Reset (marqué RST) du module et ça repart.


Sinon recommencez la manip, vérifiez votre câblage.

Ensuite mettez votre masse sur la balance et indiquez le total de celle ci dans le moniteur série ( zone entourée verte) puis entrée ou cliquez sur Envoyer


A la question si vous voulez mettre la valeur dans l'EEprom, indiquez n, vous pourrez faire plusieurs tests pour avoir un facteur de calibration moyen.


Dans ce cas j'ai déposé une charge de 3 Kg et indiqué 3.0.






Pour vérifier si c'est correct , pesez vous sur une balance commerciale et sur votre propre balance.

Ajustez le facteur de calibration.

Notez la valeur de calibration , on l'indiquera dans notre futur programme.

Maintenant il nous reste à obtenir la valeur de la tare.



Téléversement du programme intermédiaire



le programme intermédiaire c'est en fait une copie du programme définitif dans lequel il faudra modifier la valeur de la tare pour avoir un Zéro fictif au démarrage de la balance.


On va remplacer le programme de calibration, faites Fichier , ouvrir, puis choisissez:

"HX711-autonome_WEMOS8266_D7D8_oled128-64_tare-0.ino"


Rechercher la ligne à modifier dans le programme et remplacer la valeur 21520.0 par votre propre facteur de calibration.


Enlevez toute charge de la balance,

Menu Fichier, puis enregistrer et téléverser comme précédemment.


Vous devriez voir quelque chose qui ressemble à ça:



Voici votre tare fictive: 399.99 

Ouvrez le fichier:

"HX711-autonome_WEMOS8266_D7D8_oled128-64_tare-400.ino"

Recherchez la valeur de la tare , remplacer (valeur arrondie) 400 par votre propre tare

ET 

comme c'est un nouveau fichier remplacer également la valeur 21520.0 par votre propre valeur 



Menu Fichier , enregistrer et téléversez ....

Vous aurez le message " calcul en cours " "patientez" si la valeur du Zéro fictif est inférieur à 0 de quelques grammes.

Mettez une charge ! 


Mettez le tout dans une boite , branchez votre pile, branchez la prise USB à la balance et testez.


Liens vers les fichiers:  ICI

Marchand: Aliexpress.com

Vos commentaires seront les bienvenus.