Viker

CannaWeedeur
  • Compteur de contenus

    379
  • Inscription

  • Dernière visite

Messages posté(e)s par Viker

  1. Yop,

     

    @JH63, j'ai , en principe, corrigé le problème de passage des vitesses des autotransfos avec l'implémentation de la valeur d'hystérésis (par défaut elle est à 2).

    Le correctif porte sur la librairie SPEEDCALC. Il faut avec cette nouvelle librairie remplacer celle contenue dans le précédent post dans RBORD/lib.

    Prendre le fichier pdf le renommer en .zip puis décompresser.

     

    Edit: correction de la Librairie SPEEDCALC

     

    ++

    Viker

     

     

    SPEEDCALC.pdf

    • Thanks 1
  2. Yop,

    @gtiturbo, le circuit imprimé bleu était le prototype?

    Et là c'est la version finale? Tu nous as fait une redboard gtiturbo. Y'a du skill. Bravo.

     

    @JH63, il faut que je revois le passage des vitesses sur les autotransfos car cela ne fonctionne pas correctement depuis que j''ai implémenté l'hystérésis.

    Mais je pense avoir trouvé la cause.

     

    ++

    Viker

  3. Yop,

    @JH63, je verrais pour attribuer io5 et 23 en sortie chauffage mais pas de suite.

    Sinon l'ensemble des correctifs et fonctions supplémentaires fonctionnent bien?

     

    ++

    Viker

  4. Yop,

    en mettant 0 à pwm et 2 pour les autotransfo avec un overtemp à 1. Si je chauffe la sonde extérieur et qu'elle dépasse la température sonde intérieure alors pwm se met à 0 et autotransfo à 2. Si je chauffe la sonde intérieure et qu'elle dépasse sonde extérieure alors pwm et autotransfo change de valeur.

     

    Sinon l'arrosage déconnait mais j'ai modifié un petit paramètre et cela fonctionne. Il n'y a aucun rapport entre la ventilation et l'arrosage.

     

    Dans la foulée j'ai changé le programme pour que l'hystérésis de la température soit pris en compte pour les changements de vitesse des ventilateurs sur autotransfo. De plus, l'hystérésis pour le taux d'humidité n'est plus fixé dans le programme main.cpp mais il est chargé à partir de la sauvegarde sur l'eeprom.

     

    Le fichier joint comporte tous les changements, c'est le dossier complet RBORD. Il faut renommé le .pdf en .zip puis décompresser.

     

    Rappel de toutes les modifications et correctifs que j'ai amenés:

    - correctif de la librairie CALCPWM, elle retourne maintenant la valeur minPWM

    - correctif de la librairie LED2CHAN, elle retourne maintenant un PWM suivant le graph affiché : 0->pwm 0, 100->pwm 255 et non l'inverse.

    - utilisation de la variable loop_time afin de définir le temp minimum du programme

    - correctif par déplacement dans le programme de l'affichage du LCD afin de ne pas rentrer en conflit avec les sondes AM2320 + retour aux valeurs initiales de délais de consultation des sondes et vitesse moteur et ledchan.

    - mise à jours du serveur web avec ajout du nb de jours depuis allumage, temp extérieure, vitesse moteur, temp min, temp max, humidité min et max.

    - correctif de la librairie SPEEDCALC, elle retourne maintenant la bonne valeurs minSpeed

    - mise à jour de la librairie SPEEDCALC, prenant en compte l'hystérésis pour les moteurs. La valeur de l'hystérésis provient de la sauvegarde eeprom.

    - mise à jour du programme main.cpp afin d'enlever la valeur fixe de l'hystérésis humidité. Celle-ci est maintenant prise de la sauvegarde eeprom.

    - correctif de la librairie WATERING un bug empêchait de faire fonctionner l'arrosage. (Edit: le deuxième bug initialement signalé n'en était pas un. La durée d'arrosage est bien en seconde et le temps d'arrêt est bien en minutes et non les deux en secondes. Réupload du RBORD.pdf)

     

    Sauf omission de ma part voici l'ensemble des modifs et corrections. Ouf, c'est du taff.

     

    ++

    Viker

     

    RBORD.pdf

  5. Yop,

    @JH63, sans injection CO2 activé j'ai bien les autotransfo et pwm qui se mettent à la vitesse min fixée. Soit parce que la température sonde est proche de la valeur basse du réglage température environnement, soit que la température extérieure est plus élevée que la température sonde.

    Si j'active l'injection CO2 alors je retrouve le même comportement sauf pendant l'interruption de ventilation ou autotransfo et pwm passent à 0. Ensuite le refresh des valeurs sur nextion font que le pwm ne passent tout de suite à 0 sur l'écran.

     

    Et oui dommage pour le lcd même si 12 jours de fonctionnement sans bug. Mais l'essentiel c'est qu'il n'y a aucune erreur sonde depuis 13 jours et bientôt 14.

     

    edit: en regardant le code il se peut qu'il y ait un problème sur la valeur moteur retournée, non détectable si la valeur est fixée à 1 pour les autotransfo dans vitesse min. Faire la correction qui suit:

    Changer dans SPEEDCALC.cpp la ligne 24:

     

    remplacer:

    return 1;

     

    par:

    return (uint8_t)_minSpeed;

     

     

     

    ++

    Viker

    • Thanks 1
  6. Yop,

     

    @JH63, non vraiment le pwm et les autotransfo vont à la vitesse min fixée. (attention j'ai désactivé l'injection CO2 et donc le passage à 0 pour pwm et autotransfo)

     

    Sinon 12 jours sans perte du lcd et sans erreurs sondes. Mais au 13ème jour perte du lcd (pas trop grave) mais surtout toujours aucune erreurs sondes et ça c'est vraiment bien.

     

    ++

    Viker

  7. Yop,

     

    @gtiturbo, pas mal l'astuce mais je ne vais pas essayé pour l'instant. Je le garde sous le coude et je fais via usb.

     

    @JH63, non je n'ai plus de passage en dessous de la vitesse min fixée. As-tu bien fais les changement de code comme indiqué précédemment?

    Si les 4 vitesses se sont mis en marche en même temps c'est que tu as un soucis sur l'i2c. Ton changement récent sur tes câbles a créé ce nouveau problème i2c.

    Revérifie la continuité sur tes câbles avant tout nouveau branchement.

    Et oui il faut absolument protéger les autotransfo avec un fusible sur le primaire.

     

    ++

    Viker

    • Thanks 1
  8. Yop,

     

    ensuite il y aurait moyen par le menu sur le Nextion de couper le serveur de données sondes puis de lancer le serveur upload et une fois l'opération d'upload terminé, reboot sur le serveur de données.

     

    ++

    Viker

  9. Yop @gtiturbo,

     

    la redboard a déja un serveur web qui renseigne sur les données des sondes, etc.

    Du coup, est-il possible de faire coexister deux serveurs web différents avec deux adresses ip.

    Ce n'est peut être pas impossible mais j'ai un doute.

     

    ++

    Viker

  10. Yop @JH63,

     

    J'ai jeté un regard sur le programme. Si tu as bien modifié la librairie CALCPWM tel que je l'ai indiqué ici,  alors le pwm ne descend pas en dessous de la vitesse mini fixée dans le menu ventilateur. Par contre quelque soit la valeur min du pwm, lors d'un dégazage CO2 le pwm comme les auto-transfo se coupe complètement si tu as mis un temps d'intéruption dans le menu CO2.

     

    ++

    Viker

  11. Yop @JH63,

     

    combien de temps as-tu attendu entre le moment ou tu constates le passage à 0 pour les autotransfo et l'entrée dans les paramètres? Et si tu attends plus longtemps est-ce que le pwm passe aussi à 0?

    De mon côté j'ai bien les deux qui passent à 0. (mon motor_delay est à 10000)

     

    Sinon cela fait 8 jours au compteur et je n'ai aucune erreur sonde.

     

    ++

    Viker

  12. Yop,

    @JH63 j'ai eu un peu la même panique lorsque plus rien ne fonctionnait en mettant à jours la plateforme espressif 32 dans vs code. 😛

     

    Il y a 21 heures, JH63 a dit:

    Yop @Viker,

    Ta pwm c rafraîchit lors d un dégazage, perso elle reste à 255, pas de passage à 0, après c peut être q de l affichage je sais pas si le variateur passerait à 0 je ne m en sert pas je suis sur autotransformateurs.

    Nickel pour le Lcd, il fait sa routine puis s eteint.😉

    ++

     

     

    J'ai testé la fonction CO2 lors d'un dégazage le pwm ainsi que les sorties autotransfo passe à zéro. Par contre il faut être en mode floraison pour avoir le dégazage et pour que les sortie autotransfo et pwm passent à zéro il faut spécifier un temps d'interruption ventilation dans les paramètres réglages CO2.

     

    Sinon aucun problème de sonde depuis 5 jours. Les petites modifs de codes fonctionnent bien. D'ailleurs je suis repassé sur les valeurs d'origine.

    loop_time1000, sensor_delay 5000, led_delay 15000, motor_delay 10000.

     

    Mise à jours des fonctions supplémentaires ou manquantes à implémenter dans la REDBoard.

     

    ++

    Viker

  13. Yop @JH63

    As-tu bien inséré le code au bon endroit sans toucher à quoi que ce soit d'autre?

     

      displayText(&tIP,addressIP);
      LCD.clear();

      LCD.noBacklight();
    }

     

    si oui alors en principe pas de soucis.

     

    Sur VS code espressif 32 doit être en 3.5.0 sinon ça bug.

     

    ++

    Viker

     

  14. Yop @JH63,

     

    pas de problème sur le pwm de mon côté mais je n'ai pas essayé avec le CO2 activé.

     

    @gtiturbo avec les am2320 le buffer n'est pas forcément la solution. Depuis mon changement de câbles sondes je n'ai presque plus eu d'erreurs. Et avec les petits changements de code je n'en ai actuellement plus. (5 jours sans erreurs)

    Je continue les tests et si des erreurs réapparaissent alors je regarde le sda et slc à l'oscilloscope pour voir la gueule du signal. Si il est tout dégueu alors le buffer est envisageable à base de P82B715 comme pour la sonde sht35 sur les growduino/genesys.

     

    ++

    Viker

    • Thanks 1
  15. Salut @gtiturbo super boulot ton contrôleur. 👍

    Ce serait bien de commenter chaque photos histoire d'en savoir plus.

    Bienvenue sur le redboard entraide.

    Ton aide sera appréciée.

     

    @JH63 la greenboard et le growduino ont cette option, c'est pourquoi il me semble évident qu'elle soit sur la redboard.

    Par contre je suis loin d'être pro en programmation, je suis même un newbie et du coup m'attaquer au programme de Gen n'est pas facile d'autant que maintenant il faut jongler avec les pointeurs, les différentes librairies.

    Donc ma contribution est ce qu'elle est et ce que j'ai pu amener comme correctifs et petites options supplémentaires.

    Mais de la à faire tous les points que j'ai relevés...

     

    ++

    Viker

    • Like 1
    • Thanks 1
  16. Yop,

     

    Dans le sujet Programme RED Board et installation, je faisais part à Gen de modifications possibles:

     

    - possibilité de rendre programmable les sorties dessicateur et brumisateur afin que l'on puisse choisir si celles-ci sont utilisées en tant que tel ou les dédier au chauffage/climatisation.

     

    En d'autre termes, liés ces sorties au taux d'humidité ou à la température et de les rendre actives si au dessus ou si en dessous d'une valeur seuil choisie dans le menu paramètre.

    - un mode de protection (éventuellement programmable) qui si une sonde ne réagit pas alors induit un comportement de sécurité et un message d'erreur pour l'utilisateur.

    Exemple: si sonde A ne réponds pas alors signaler le problème sur le nextion et la page web. Couper chauffage, clim, brumisation et dessiccation. Mettre la vitesse moteur à 2 ou 3. Garder le cycle jour/nuit des lampes.

    - afin d'augmenter la fiabilité des sondes am2320 coupures des autres communications i2c (lcd, l'horloge, les iO expanders de type MCP, le générateur de signal PWM PCA9685, ...) lors de la consultation des sondes AM2320.

     

    En fouillant plus le programme et en comparaison du programme du growduino V3 il pourrait y avoir des ajouts supplémentaires car cela était bien utile sur le growduino V3:

     

    - il n'y a plus de possibilité d'avoir une différence de vitesse entre l'intracteur et l'extracteur. Fonction fort utile pour soit mettre en dépression la salle ou tout simplement ajuster les différence entre un intracteur et un extracteur de modèles différents en soufflant pas les même quantité d'air pour la même vitesse.

     

    - possibilité de modifier l'hystérésis de l'humidité et de la température par l'interface Nextion.

    Actuellement, l'hystérésis de l'humidité est de 5% non modifiable.

    L'hystérésis de la température n'est pas mondifiable et n'est pas non plus implémentée dans la modification de la vitesse des moteurs (pas d'hystérésis pour la température).

     

    - actuellement l'écran lcd et ainsi que la page web avec mes ajouts donne le nombres de jours de fonctionnement de la redboard. C'est bien car en cas de coupure de courant nous avons le compteur qui repart de 0. C'est donc un bon indicateur.

    Par contre il n'y a plus, gardé en mémoire lors d'une coupure courant, le nombre de jours indiquant le temps écoulé depuis le début d'un mode de culture (cro ou flo). Fonction que je trouve indispensable.

     

    - un mode de culture séchage en plus de croissance et floraison. Ce mode ayant un profil de gestion des températures et humidités sur 15 jours et au dela sur valeurs fixes.

     

    - une veille sur la luminosité de nextion et du lcd. En touchant le nextion les deux s'allument.

     

    - la gestion CO2 n'est fait qu'en mode cyclique. Plus de mode continue avec valeurs seuils min max co2 ppm ni de mode combiné. Pas d'injection de CO2 en mode Croissance. On ne peut rentrer que des valeurs en minutes, je pense que des valeurs en secondes seraient plus adapté.

     

    - disparition aussi de l'enchainement automatique des cycles croissance et flo avec un nombres de jours définis.

     

    Je pense qu'avec tous ces ajouts on arriverait à une RED Board exploitant son potentiel.

     

    ++

     

    Viker

    • Like 1
  17. Yop,

     

    non pas de soucis pour la carte car par cette action tu empêches juste d'envoyer des données au lcd à chaque boucle du programme.

    Cela ne change pas fondamentalement le comportement de l'esp32 comme par exemple transformer une entrée en sortie ou réciproquement.

    Donc aucun risque.

     

    ++

    Viker

  18. Yop,

     

    @JH63, pour effectivement ne pas exécuter une instruction il suffit de la mettre en commentaire avec // devant.

    Je ne pense pas qu'il soit utile de supprimer l'affichage du lcd dès le début au moment du boot car tu as toutes les indications d'initialisation.

    Par contre dans le void loop() il est possible de ne plus rafraichir et donc d'envoyer de données au lcd.

    Pour cela il suffit de mettre en commentaire l'antépénultième ligne du programme comme ceci:

     

    // lcdDisplayInfo(addressIP,now.unixtime(),delta,AM2320_A_error_counter,AM2320_B_error_counter);

     

    testes et fait ton retour pour voir si cela change.

     

    ++

    Viker

  19. Yop,

     

    petit ajout au serveur web de la redboard.

    Dorénavant vous aurez en plus de ce qui était affiché:

    - nb de jours

    - température sonde extérieure

    - vitesse moteur

    - temp min

    - temp max

    - humi min

    - humi max

     

    à partir de la ligne 719 ajoutez en insérant ce qui est en bleu:

     

    client.println("<!DOCTYPE html><html>");
    client.println("<html lang=\"fr\">");
    client.println("<head>");
    client.println("<title>Server Red Board</title>");
    client.println("<meta name=\"viewport\" content=\"width-device-width, initial-scale=1\" charset=\"UTF-8\" />");
    client.println("<link rel='stylesheet' href='https://www.w3schools.com/w3css/4/w3.css'>");
    client.println("</head>");
    client.println("<body class=\"w3-animated-opacity w3-blue-gray\">");
    client.println("<div class=\"w3-card w3-red w3-padding-small w3-center\">");
    client.println("<h1>RED BOARD WEB SERVER</h1>");
    client.println("</div>");
    client.println("<table class=\"w3-table w3-bordered w3-card-4 w3-centered w3-large w3-section\">");
    client.println("<tr><th class='w3-light-blue'>MESURES</th><th class='w3-light-blue'>SALLE A</th><th class='w3-light-blue'>SALLE B</th></tr> ");
    client.println("<tr><td>NB JOURS</td><td colspan=2>");
    client.println(((now.unixtime() - lastStart)/86400));
    client.println("<tr><td>TEMP. EXT. °C</td><td colspan=2>");
    client.println(String(temperature_EXT));
    client.println("<tr><td>VITESSE MOTEUR</td><td>");
    client.println(String(speed_A));
    client.println("</td><td>");
    client.println(String(speed_B));

    client.println("<tr><td>TEMPERATURE °C</td><td>");
    client.println(String(temperature_A));
    client.println("</td><td>");
    client.println(String(temperature_B));
    client.println("<tr><td>TEMP. MIN. °C</td><td>");
    client.println(String(BALISE_A->getTmin()));
    client.println("</td><td>");
    client.println(String(BALISE_B->getTmin()));
    client.println("<tr><td>TEMP. MAX. °C</td><td>");
    client.println(String(BALISE_A->getTmax()));
    client.println("</td><td>");
    client.println(String(BALISE_B->getTmax()));

    client.println("</td></tr><tr><td>HUMIDITE %</td><td>");
    client.println(String(humidity_A));
    client.println("</td><td>");
    client.println(String(humidity_B));
    client.println("<tr><td>HUMID. MIN. %</td><td>");
    client.println(String(BALISE_A->getHmin()));
    client.println("</td><td>");
    client.println(String(BALISE_B->getHmin()));
    client.println("<tr><td>HUMID. MAX. %</td><td>");
    client.println(String(BALISE_A->getHmax()));
    client.println("</td><td>");
    client.println(String(BALISE_B->getHmax()));

    client.println("</td></tr><tr><td>CO2 PPM</td><td>");
    client.println(String(PPMCO2_A));
    client.println("</td><td>");
    client.println(String(PPMCO2_B));
    client.println("</td></tr><tr><td>ERREUR SONDE</td><td>");
    client.println(String(AM2320_A_error_counter));
    client.println("</td><td>");
    client.println(String(AM2320_B_error_counter));
    client.println("</td></tr></table></div>");
    client.println("</body></html>");

     

    ++

    Viker

     

    • Like 1
  20. Yop,

     

    le hard reset est utile à la première programmation, il n'est pas utile ensuite à moins d'avoir une programmation très différente changeant l'utilisation de la mémoire eeprom.

     

    ++

    Viker