Programme RED Board et Installation


Recommended Posts

Bonjour à tous,
Non je ne suis pas mort, je ne suis pas parti avec la caisse, et je n'ai pas été enlevé par des extra-terrestres. 🤣
J'ai juste décidé de prendre du recul de me mettre en autarcie complète et de me consacrer à 100% sur l'écriture du programme.
Cela représente jusqu'à maintenant 265 Heures de travail (graphisme, programmation des codes du Nextion, écriture du code C++) à raison de 8 à 10hr/jours WE compris.
Pourquoi cela a pris autant de temps, car la première version du programme, était trop gourmande en ressources écran, ce qui faisait qu'il était quasi impossible que l'écran réagisse aux ordres, un cycle complet d'une boucle prenait 3750 mS, De fait j'ai remodelé complètement l'aspect graphique, et rendu le code plus efficient. L'écran réagit maintenant correctement aux injonctions tactiles.

 

FICHIERS A TELECHARGER


CODE SOURCE POUR l'ESP32 (63Mb): RBORD.pdf
(téléchargez le, renommez le .pdf en .zip et décompactez le, l'explication d'installation sera décrite plus bas )

 

CODE IHM Nextion (7,2Mb) : RBV1IHM.pdf
Code source pour ceux qui veulent faire des modifications (optionnel) téléchargez le pdf, renommez le en .rar et décompactez

 

CODE TFT Nextion (3,3Mb): RBV1TFT.pdf

Fichier compilé pour programmation de l'écran, téléchargez le .pdf, renommez le en .zip et décompactez.

 

INSTALLATION CODE SOURCE + 24 librairies

Le code est complet et les librairies y sont inclues. Le fichier principal main.cpp est complètement documenté (plus de 2500 lignes)
L'interface de développement utilisé est Platformio sous VS Code.
Commencez par installer VS Code (version existante pour Linus et Windows)

Vous le trouverez sous ce lien : https://code.visualstudio.com/#alt-downloads
Choisissez la version en fonction de votre système d'exploitation.

 

Vidéo explicative de comment installer VS Code et platformio

 

 

Quand platformio est installé, cliquez dans la barre de menu latérale gauche sur la tête de l'alien. Ce qui ouvrira un menu.
Allez dans QUICK ACCESS ->PIO HOME->Open.

La page Welcome to PlatformIO s'affichera
Cliquez sur le bouton Open Project et pointez sur l'endroit où vous avez décompacté le projet et cliquez sur le bouton où il est écrit OPEN RBOARD.
Voila le programme est ouvert et est prêt à être envoyé vers la Red Board.

Reliez votre PC via un câble usb au port USB de la carte Red Board.

 

Procédure de programmation de l'ESP32 de la carte RED BOARD
Ii faut mettre la carte RedBoard en mode réception de programme, pour ce faire, appuyer ou court-circuitez la sortie RESET de la carte RB en maintenant le circuit fermé (restez appuyé)
Tout en maintenant le circuit reset fermé ou le bouton enfoncé, appuyez sur le bouton PROG en maintenant la pression sur celui-ci sans la relâcher, et relâchez la pression du bouton reset ou ouvrez le circuit reset.
A ce stade votre doigts est toujours en train d'appuyer sur le bouton prog, maintenez cette pression et cliquez dans platformio sur l'option Upload..

La procédure de chargement s'affichera sur votre écran.
Quand le programme est chargé, relâchez la pression sur le bouton prog et faite un reset...

Si cela ne fonctionne pas du premier coup, recommencez l'opération tout au début.

 

Procédure de programmation de l'écran
Mettez l'écran hors tension
Copiez le fichier TFT sur une micro SD Card de 32Mb Max et introduisez la dans son support derrière l'écran, remettez l'écran sous tension, le programme se chargera tout seul.
quand c'est terminé, retirer la carte.

Si ce n'est pas déjà fait, reliez votre écran via le câble JST 4voies à la RED BOARD et faite un reset, de la Red Board, voila c'est terminé.

 

Installation Matérielle

LCD 4x20

Avant de mettre votre carte sous tension 220V, il faut réaliser tous les branchements de sondes et d'accessoires.

Brancher votre écran LCD 4X20 au connecteur LCD sur la carte (Ne vous trompez pas d'emplacement !!)  Pour ce faire utilisez le câble JST4 fourni.
il n'y a pas moyen de se tromper de sens sur la carte, mais du coté LCD il faudra suivre ce sens :

LCD4X20.JPG.14d949f3eac223f87839d2549878d34d.JPG

 

Veillez à ce que les détrompeurs (que j'ai mis en noir) soient face à vous.

 

ECRAN NEXTION

Utilisez le câble JST 4 voies pour connecter carte Red Board et écran Nextion, il n'y a pas moyen de se tromper de sens

 

SONDES AM2320

Cette partie est certainement la plus importante, alors appliquez scrupuleusement les indications suivantes

Les sondes AM2320 fonctionnent sur le bus I2c, qui est bus de données composé de 2 signaux distincts
le SDA signal d'information
le SCL signal d'horloge
Il est impératif que du coté sondes les connections soient propres, c'est à dire soudées correctement et isolée par de la gaine thermo-rétractable.
Les connecteurs de type Dupont ou autres systèmes peu fiables sont à proscrire, n'utilisez rien entre le câble et les pins de la sonde (morceau de pcb, raccord raccords rapides électriques etc).
Chaque sonde n'ayant qu'une seule adresse, il est impossible de les mettre sur le même bus de données, c'est pour cela que la sonde A est sur le bus principal, qui comprend :
l'horloge, les iO expanders de type MCP, le générateur de signal PWM PCA9685.. une erreur de lecture entraînera le dysfonctionnement global de tout ce qui est placé sur le même bus.
la sonde B, est, branché sur le second bus de données de l'ESP32.
Ce signal étant d'une vitesse de 100Kb/s, il est important d'utiliser un câble blindé dédié à la transmission de données, je préconise un câble USB dans vous couperez les extrémités.
Pas besoin de rajouter des résistances PULL-UP, elles sont déjà intégrées au circuit.
Fiche technique de la sonde : https://cdn-shop.adafruit.com/product-files/3721/AM2320.pdf

Le constructeur spécifie que la distance maximum ne peut excéder 20 mètres, pour ma part je me suis toujours contenté de 5 mètres sans aucun soucis, si vous désirez utiliser  des câbles plus long, faites des tests préalablement.

Au niveau software, J'ai essayé de nombreuses librairies pour faire fonctionner correctement cette sonde, et j'ai finalement trouvé une librairie qui me donnait entière satisfaction, c'est celle utilisée dans ce projet.

 

Définition des pins coté sonde

 

AM2320pinout.JPG.268a1354ebfa48f7bb33f26ac702c0fd.JPG

 

Définition des pins coté circuit

RB_AM2320_PIN.JPG.230772b5b8b1a3ab7309f434896de744.JPG

 

En cours

 



 

 

 

 

Edited by Gen
  • Like 6
  • Thanks 3
Link to post
Share on other sites

Yop,

 

hier soir j'ai installé le programme dans la redboard (au passage programmation toujours aussi propre et documentée, bravo).

Le seul petit soucis a été de spécifier le chemin des librairies mais ensuite impeccable tout a roulé sans problèmes en ayant supprimé le dossier .vscode

Idem pour le nextion pas de problème d'installation.

 

Premier allumage avec toutes les initialisations sur le lcd -> RAS

Je vais alors dans les paramètres pour changer l'heure -> RAS

Je vais dans les paramètres Wifi -> connexion RAS

Puis je change les valeurs de déclenchement de cycle de lumière ou par défaut tout est à zéro. J'entre des valeurs -> RAS

Idem pour les températures et l'humidité mais là dans certaine case j'ai des valeurs par défaut de 0 pour min et de de quelque chose comme 71000 (je n'ai plus le chiffre exact en tête) pour les valeurs max. Je change et sauve -> RAS.

 

Puis je vais dans arrosage et là je change l'heure de début en mode journalier qui par défaut est le même nombre de 71*** et en appuyant sur sauvegarde -> Plantage 😕

qui fait que la redboard reboot en boucle.

 

Du coup j'ai décidé d'effacer l'eeprom pour voir si cela permettait d'arrêter le bootloop.

 

Pour effacer l'eeprom j'ai ajouté ceci dans main.ccp se trouvant dans le dossier src :

 

#define RESET_EEPROM true

juste avant

#define EEPROM_MAXSIZE      3000

 

et ensuite dans le void (setup) juste après

EEPROM.begin(EEPROM_MAXSIZE);

 

j'ai mis:

 

if ( RESET_EEPROM) {

    for (int i =0; i < EEPROM_MAXSIZE; i++) {

         EEPROM.write (i, 0);

    }

   EEPROM.commit();

   delay(500);

}

 

Du coup, plus de boot loop :)

Donc réupload du programme en mettant false à la place de true sur:

#define RESET_EEPROM false.

afin de ne pas effacer l'eeprom à chaque reboot.

 

Et hop setup de la redboard et en premier les relais arrosages qui s'allumaient et s'éteignaient en permanence suite au reset d'eeprom car valeur 0 dans tous les champs.

Du coup, je vais pour changer les valeurs et au moment de l'enregistrement. Boot loop :(

 

Donc il doit y avoir un problème au niveau de la gestion mémoire pour cette fonction.

En espérant faire avancer le shmilblick

 

edit: Afin d'éviter ce bootloop, juste après avoir chargé le programme une première fois, en tout premier lieu dans les paramètres de réglages allez dans le menu wifi  et dans le champs ssid écrivez RESET puis sauvegardez. La redboard reboot avec tous les paramètres par défaut et évitera des valeurs aberrantes risquant le bug et le bootloop.

 

++

Viker

Edited by Viker
  • Thanks 1
Link to post
Share on other sites

Yop Viker,

 

Merci de ces retours n étant pas aussi agile q toi, j n ai que récupérer les dossier et installer les logitiels sur le pc pour le moment, j v attendre pour basculer la prog.

 

++

Yop Gen,

Je t avais demandé d allouer une sortie pour un relais chauffage sur les I/O de dispo, avec toute cette prog y as tu pensé si oui peux tu indiquer laquelle est elle.

 

Merci

++

  • Thanks 1
Link to post
Share on other sites

Yop,

 

en fouillant dans le programme main.ccp j'ai trouvé qu'en écrivant RESET dans le champs ssid des paramètres wifi puis sauvegarder, cela permet de charger les valeurs par défaut dans l'eeprom.

En faisant cela il n'y aura pas de valeurs aberrantes pour les différents paramètres. Et donc sans valeurs aberrantes, plus de bootloop.

 

En conséquence après installation du programme selon la procédure de Gen, il faut impérativement faire un RESET avant tout autre changement.

 

++

Viker

 

ps: j'attends l'easter egg quand on tapera Gen dans le ssid 😛

Edited by Viker
  • Thanks 1
Link to post
Share on other sites

Yop,

 

les platines moteurs ne commutent pas et pourtant il semblerait qu'elles soient correctement branchées selon les schémas et je trouve bien une tension de 4.9V sur l'entrée de la platine. Par contre je trouve 1.8v entre gnd et les sorties.

ça ressemble à un bug qu'il y avait eu sur la partie moteur du growduino.

@Gen as-tu une idée?

 

edit: en débranchant toutes mes sondes je retrouve la commutation des platines moteurs. Pourtant je n'avais pas d'erreurs dans la lectures des sondes.

Qu'en penser? Mes câbles de sondes sont soit trop longs soit pas assez blindés. Je vais tester avec un câble plus court. Grrrr

 

Note importante, en faisant les tests à un moment donné les platines moteurs se sont misent à commuter plusieurs relais en même temps. Résultats deux fusibles grillés. Sans fusibles j'aurais eu deux auto-transfo grillés. Je ne saurais que trop vous conseiller de protéger vos auto-transfo avec des fusibles en amont de ceux-ci (protection du primaire).

 

edit2: j'avais 5m de câble pour chaque sonde, je viens de passer à 2,5m pour les sondes AM2320 ainsi que MHZ19 et maintenant cela passe nickel. Plus de problème sur les platines moteurs. Pour la sonde DS18B20, je lui laisse sa longueur vu qu'elle n'est pas sur le bus i2c.

 

 

++

Viker

 

Edited by Viker
  • Like 1
Link to post
Share on other sites

Yop !
 

Il y a 6 heures, Viker a dit:

en débranchant toutes mes sondes je retrouve la commutation des platines moteurs.


Pareil sur un Growduino V5, au bout de 3m de RJ45 blindé. Je pensais que ça venait du câble pas adapté. Seule la sonde AM2320 pose ce problème, la MH-Z19c fonctionne sans broncher.

++

Link to post
Share on other sites

Yop,

 

@Wilfred En fait avec la routine de test présente sur la redboard, avant de mettre le programme actuel, les 2 sondes AM2320 ainsi que les deux sondes MHZ19 donnaient de parfaites valeurs malgré leur 5m de câbles.

C'est pourquoi, au début, je pensais qu'il y avait un soucis dans le programme ou plus exactement dans la librairie adafruit.

Ne trouvant pas d'erreurs je me suis rabattu sur tout ce qui était sur le bus i2c. Et en virant toutes mes sondes j'ai eu le retour de fonctionnalité parfaite des platines moteurs.

Maintenant, mes sondes ont 2,5m de câble et je pense que c'est un grand max car je peux encore perdre l'affichage sur le lcd.

 

++

Viker

Edited by Viker
  • Like 2
Link to post
Share on other sites

Yop Viker,

Que veux tu dire part 

Le seul petit soucis a été de spécifier le chemin des librairies mais ensuite impeccable tout a roulé sans problèmes en ayant supprimé le dossier .vscode

Pour le moment j ai téléchargé le prog open red board sous platfirmio, comme indiqué par Gen ensuite je dois supprimer le dossier vs.code?

après si j ai saisi avant de basculer la prog on cherche le menu ssid pour écrire reset,

puis on bascule et on reset après téléchargement.

 

Merci pour c info car je suis pas du tout de la partie niveau prog, un screen shoot si possible pour l écriture du reset.

 

++

 

Link to post
Share on other sites

Yop JH63,

 

Dans l'archive que tu as décompressé, il y a un dossier RBORD dans ce dossier il y a d'autres dossiers dont .vscode. Ce dossier tu peux l'effacer car il est généré par Visual Studio Code (VSC) quant tu ouvrira RBORD comme Gen l'indique.

 

Le 23/01/2022 à 14:10, Gen a dit:

Quand platformio est installé, cliquez dans la barre de menu latérale gauche sur la tête de l'alien. Ce qui ouvrira un menu.
Allez dans QUICK ACCESS ->PIO HOME->Open.

La page Welcome to PlatformIO s'affichera
Cliquez sur le bouton Open Project et pointez sur l'endroit où vous avez décompacté le projet et cliquez sur le bouton où il est écrit OPEN RBOARD.
Voila le programme est ouvert et est prêt à être envoyé vers la Red Board.

 

 

Quand au RESET, il se fait sur la redboard une fois le programme installé selon la procédure indiqué par Gen.

Pour faire le reset, sur le nextion, il faut cliquer sur l'icône réglage qui ouvre le menu réglages.

Dans ce menu il y a un bouton wifi de couleur verte, qui une fois cliqué ouvre une pop up Wifi avec deux champs: SSID et PSW.

Il faut mettre RESET en majuscule dans le champs SSID puis appuyé sur l'icône enregistrement.

La redboard va loader les valeurs par défaut et rebooter.

 

Ta redboard est prête à l'emploi.

 

++

Viker

Edited by Viker
  • Like 1
  • Thanks 1
Link to post
Share on other sites

Yop Wilfred,

 

sur la platine moteur il y a deux bornes d'entrée (in) où arrive le courant du secteur. Le fusible se met entre le secteur et une des bornes in.

Mes auto-transfo on une capacité max de 1.5A, j'utilise donc un fusible de calibre 1.5A à fusion rapide (fusible transparent en verre et non opaque en céramique)

 

Le fusible est dans un porte fusible qui se fixe sur rail din c'est très pratique et facile à installer.

Voici ici une photo pour illustrer. Au centre du boitier j'ai un rail din qui porte de gauche à droite un bornier de terre, un disjoncteur, un compteur électrique/watt mètre, les portes fusibles sur chaque phase de chaque sorties salle A, les borniers neutre, les portes fusibles salle B et enfin deux borniers de terre.

 

++

Viker

Edited by Viker
  • Thanks 2
Link to post
Share on other sites

Yop !

Merci bien pour les explications claires et détaillées.
 

il y a 48 minutes, Viker a dit:

Le fusible se met entre le secteur et une des bornes in.


Peu importe de l'installer sur le neutre ou la phase ?
 

Révélation

 

il y a 48 minutes, Viker a dit:

les portes fusibles sur chaque phase de chaque sorties salle A

 

 

 

La pĥoto de ton montage est dans mes raccourcis. Je LOVE ce genre de tech-pr0n.

++

Edited by Wilfred
  • Thanks 1
Link to post
Share on other sites
  • 2 weeks later...

Yop,

 

@JH63 fais-tu bien la procédure de Gen:

 

Le 23/01/2022 à 14:10, Gen a dit:

Procédure de programmation de l'ESP32 de la carte RED BOARD

Ii faut mettre la carte RedBoard en mode réception de programme, pour ce faire, appuyer ou court-circuitez la sortie RESET de la carte RB en maintenant le circuit fermé (restez appuyé)
Tout en maintenant le circuit reset fermé ou le bouton enfoncé, appuyez sur le bouton PROG en maintenant la pression sur celui-ci sans la relâcher, et relâchez la pression du bouton reset ou ouvrez le circuit reset.
A ce stade votre doigts est toujours en train d'appuyer sur le bouton prog, maintenez cette pression et cliquez dans platformio sur l'option Upload..

 

 

Si oui est-ce le bon port com? Vérifies dans l'onglet PIO Home et le menu Devices, il va dédecter la redboard et peut être autre chose connecté à ton ordi. Auquel cas pointe sur la redboard.

 

Si c'est bien la redboard sur le COM5 alors essaies un câbles usb plus court de bonne qualité.

 

++

Viker

  • Like 1
Link to post
Share on other sites

Yop,  

Merci pour c retour, la procédure était bien appliquée,

C été bien la com 5, par contre c mon Bp reset qui faisait défaut, bonne galère.

Maintenant c démarré mais mon écran reste sur "red board" même apres un reset, je vais reprendre mes scotchlock, c la ou j ai eu mon souci pour le Bp, c peut être pour cela que j ai pas d accès au menu??

Link to post
Share on other sites

Yop,

 

@JH63

As-tu branché le lcd en plus du nextion?

Si oui, est-ce que le lcd affiche quelque chose?

Celui-ci devrait afficher la séquence d’initialisation puis affichage l'adresse ip de la redboard, le nombres de jours, les temps de process et err.sondes.

Si c'est ok pour ça alors la redboard est bien fonctionnelle.

 

Je penche alors pour un problème de connexion i2c entre le nextion et la redboard. Les deux ne communiquent pas ensemble du coup le nextion n'affiche que la page d'intro.

Coupes ton alim, enlèves toutes tes sondes et rebranche l'alim. Le nextion vas-t-il au delà de la page d'accueil?

Si oui c'est une bonne chose et auquel cas revois la longueur de tes câbles de sondes à la baisse ou/et leur blindage. (Avec 2.5m de câble blindés pour mes sondes j'ai encore des problèmes sur le bus ic2 en symptômes j'ai mon lcd qui au bout d'un moment affiche quelques caractères bizarres en plus des informations habituelles ou encore n'affiche plus rien. J'ai aussi une sonde qui me fait des erreurs).

 

++

Viker

  • Like 1
Link to post
Share on other sites

Yop Viker,

Merci pour c retours finalement j avais déjà anticipé à réduire à 2m à la place de 5 mes sondes suite aux différents échanges, câble info cat 6, ensuite tu as raison en rallongeant mes fils j ai inversé rx tx du Nextion, petit reglage du lcd qui affichait rien du fait d une luminosité trop forte.

C bon système OP, merci pour tout,

finalement j ai perdu un temps fou le fait de ne pas avoir contrôlé la continuité du Bp jusqu'à la board, trop sur de mon câblage je pensais plus sur le fait de ma liaison pc-board finalement c été l impulsion reset qui manqué.

@Viker fallait le trouver l histoire du reset  dans le menu wifi.

@GEN beau travail, content de t avoir fait confiance.

+++

  • Like 1
  • Thanks 1
Link to post
Share on other sites
Guest
This topic is now closed to further replies.