Gen

GROWDUINO [Zone de partage]

Recommended Posts

Gen
Posted (edited)

Questions - Modifications - Code perso etc.. C'est ici que cela se passe

 

Toujours dans l'esprit OPEN SOURCE du projet, posez ici vos questions, vos codes perso, vos modifs, vos montages etc.. Afin de tout regrouper au même endroit, et d'en faire le partage avec la communauté.

 

gallery_616177_4758_35961.jpg

 

Lien vers le JDB : https://www.cannaweed.com/topic/206023-gdw5-growduino-shield-pour-mega2560-lcd-4x20-en-open-source-termine/

 

 

 

 

 

 

Version 2.04 du 12 Octobre 2017

 

Téléchargement MiniGrowDuino_V2.04.zip

Edited by Gen
  • Like 6

Share this post


Link to post
Share on other sites
Gen
Posted (edited)

Comment charger le programme dans l'arduino + Explications paramétrage

du logiciel Mini-GrowDuino

 

Prérequis :

Avant de commencer, vous devez avoir l'application arduino 1.8.4 installée sur votre PC

https://www.arduino.cc/en/main/software

 

Avant installation, effacez toutes les librairies de l'ancien projet, car elles n'ont plus rien à voir avec les nouvelles versions

 

Dans l'archive vous trouverez les fichiers ainsi que les librairies nécessaires à l'installation du logiciel

 

Elle se compose comme suit :

 

Les répertoires GDW2 et librairies sont à copier et à mettre dans votre répertoire de développement

 

... User/Arduino/GDW2

... User/Arduino/libraries

 

GDW2 contient les fichiers d'application GDW2.ino et un fichier Functions.h

Vous y trouverez également un sous répertoire clearMem, ce dossier contient un utilitaire pour remettre l'EEPROM à zéro.

Vous devez utiliser ce programme si vous aviez installé une version antérieure à la 2.01.

il suffit de compiler, charger et ensuite vous ouvrez le moniteur série de votre IDE arduino pour voir le processus.

 

libraries contient les librairies utilisées par le projet à l'exception des librairies fournies d'office par l'iDE arduino, à savoir :

 

Wire version 1.0.0

SoftwareSerial version inconnue

LIquidCrystal_I2C V1.1.2

 

Wire étant d'office installé dans votre IDE, je vous ai mis à disposition les librairies

LIquidCrystal_I2C

SoftwareSerial

au cas où vous ne les trouveriez pas via votre gestionnaire de librairies. Elles se situent dans la racine de l'archive, et placez les dans le sous répertoire libraries de votre application de développement arduino

.... /arduino-1.8.4/libraries/

 

une fois les fichier installés et uploadés, le programme détectera automatique que c'est son premier lancement et mettra toutes les variables aux valeurs par défaut.

 

 

DESCRIPTION DU MENU

 

 

 

 

   [MENU OPTIONS]  
  *TIMER JOURNALIER*
    -TIMER 1  
    -TIMER 2  
    -DELAIS ALLUMAGE
  *TEMPO CYCLIQUE
    -CYCLIQUE 1
    -CYCLIQUE 2
  *ENVIRONNEMENT*
    -MODE DE TRAVAIL
    -TEMPERATURE
    -HUMIDITE    
    -HYSTERESIS   
  *REGLAGE MOTEUR*
    -EXTRACTEUR   
    -INTRACTEUR    
    -PARAMETRAGE  
    -ECHANTILLONAGE
    -DELAIS CO2     
  *RELAIS*          
    -CONFIGURATION
    -ACTIVATION     
  *HARWARE*        
    -HORLOGE       
    -CODE SECURITE
    -SCREEN SAVER
    -CO2          
    -Ph   

 

 

 

 

 

CAPTURES DES FENETRES

 

 

 

 

FENETRE PRINCIPALE 1 (Touche A )

 

EcranA.jpg

 

FENETRE PRINCIPALE 2 (Touche B )

 

EcranB.jpg

 

FENETRE PRINCIPALE 3 (Touche C )

 

EcranC.jpg

 

    -TIMER 1 

 

Timer1.jpg

 

   

    -TIMER 2  

 

Timer2.jpg

 

    -DELAIS ALLUMAGE

 

Delais_Timer.jpg

 

    -CYCLIQUE 1

 

Cyclic1.jpg

   

     -CYCLIQUE 2

 

Cyclic2.jpg

    -MODE DE TRAVAIL

 

Mode_Travail.jpg

   

       -TEMPERATURE

 

Reglage_Temp.jpg

   

     -HUMIDITE    

 

Reglage_Humidite.jpg

  

    -HYSTERESIS   

 

Hysteresis.jpg

 

    -EXTRACTEUR   

 

Extracteur.jpg

   

     -INTRACTEUR    

 

Intracteur.jpg

   

     -PARAMETRAGE  

 

Pilotage_Moteurs.jpg

   

     -ECHANTILLONAGE

 

Echantillonage_Moteurs.jpg

      
    -CONFIGURATION RELAIS

 

Niveau_Travail_Relais.jpg

   

     -ACTIVATION RELAIS    

 

Activation_Relais.jpg
       
    -HORLOGE     

 

Horloge.jpg

 
    -CODE SECURITE

 

Code_Securite.jpg

   

     -SCREEN SAVER

 

Screen_Saver.jpg

   

      -CO2          

 

Reglage_CO2.jpg

 

 

 

 

 

NOUVEAUTES DE LA VERSION 2

 

La page de garde a été remplacée par 3 choix (non interruptifs) de pages

- l'ancienne avec ajout du temps écoulé de  cro/flo/séchage (Touche A )

- Une page de données Min/Max de la t° et de l'humidité (Touche B )

  la réinitialisation des données se fait en appuyant une seconde fois sur la touche B

-Une page de témoin de fonctionnement des relais et affichage des vitesses moteurs (Touche C )

 

AVERTISSEMENT : Je rappelle que l'entrée dans le setup est interruptif, donc veillez bien à en sortir après vos modifications pour que les process puissent reprendre leurs cours.

 

Le menu setup a été remodelé en menu déroulant avec une profondeur de 1, plus de cascades de fenêtres les unes à la suite des autres.. la saisie se fait directement dans la page, et une indication de sauvegarde vous préviendra.

 

Le menu setup est accessible depuis n'importe quelle page principale (A - B - C ), comme pour l'ancienne version, la touche * sert à rentrer ou sortir du menu ou des pages de menu

Pour rentrer dans l'option choisie du menu setup, appuyez sur la touche #

En sortie du setup, vous revenez à la page principale précédemment sélectionnée.

 

Le menu setup peut être protégé par un code d'accès

configuré à 000000 part défaut, ce qui est égal à son inactivation.

 

La dernière position dans la liste du menu setup reste en mémoire, ainsi plus besoin de tout redescendre à chaque fois pour accéder à l'option souhaitée

 

les touches de navigation dans le menu setup sont :

 

A : monter d'une ligne

B : retour en haut de liste

C : déplacement en bas de liste

D : descendre d'une ligne

 

Timer 1 est le Timer principal, celui alloué à l'éclairage

Timer 1 et Timer 2 gèrent les passages de jours

Vous pouvez définir pour ceux-ci les horaires de croissance et de floraison

Une nouvelle option a été ajoutée : délais d'allumage  pour Timer 1 et Timmer 2

Cela prévient la remise en route des lampes en cas de coupure de courant ou de reset.

la durée peut en être déterminée. En appuyant sur n'importe quelle touche hormis * de votre clavier, les lampes s'allumeront à votre demande avant la fin du délais d'attente.

 

 

Cyclic1 et Cyclic2 gèrent les périodes en fonction du jour ou de la nuit.

Leurs temps d'activité varient en fonction des données introduite dans Timer 1

 

Le mode de travail est passé de 2 à 3 choix, le mode séchage a été rajouté.

Celui-ci coupera tous les relais à l'exception de la commande moteur qui sera réglée sur la vitesse 1

de votre extracteur.

A chaque modification de mode de travail, le compteur de jours écoulés sera remis à zéro.

 

Concernant les pages températures et humidité, celle-ci n'ont pas changé, hormis la saisie en direct.

les températures min max sont paramétrables pour le jour et la nuit ainsi que pour la cro et la flo

Un contrôle est effectué au moment de la validation de la saisie par rapport aux hystéresis introduits.

En cas de non concordance , un message d'erreur vous informera.

Il est important de savoir que les moteurs seront calibrés sur le médian des plages de températures introduites

 

L'hystérésis lors de sa saisie contrôlera également son seuil par rapport aux t° et Hr introduites précédemment.

 

Extracteur et Intracteur se configurent comme précédemment, l'option niveau de fonctionnement (HI ou LO) a été ajoutée.

le temps de basculement des relais est fixé par défaut à 500ms.

C'est également là que vous pourrez définir la vitesse minimum de fonctionnement des moteurs.

 

Le paramétrage vous permet plusieurs choix de fonctionnement pour vos moteurs

 

A = mode automatique basé sur la température

0 = désactivation du moteur

1 à n = réglage constant de la vitesse (mode manuel)

 

Cette page vous permet également de définir l'offset de vitesse entre votre Extracteur et votre intracteur ( de -2 à  + 2 )

Pour naviguer dans les plages appuyez sur C pour sélectionner cette option et ensuite naviguez entre les choix à l'aide des touches A et D

 

L'échantillonnage permet de définir intervalle entre chaque analyse de la t° de votre environnement et commandera le changement éventuel de vitesse à vos moteurs

C'est la vitesse de l'extracteur qui pilote la vitesse de l'intracteur, en tenant comptes des vitesses minimums et de l'offset éventuel.

Le temps par défaut est de 10 secondes, pour les grands espaces vous pourrez en augmenter la valeur si nécessaire, car l'inertie thermique est plus grande

la méthode de calcul tient compte de l'erreur de t° entre le médian de la température introduite en fonction du cycle cro /flo ainsi que jour nuit.

si l'erreur augmente, les vitesses en feront de même jusqu'à ce que le médian soit atteint.

 

Délais CO2 n'est pas disponible sur cette version, elle le sera avec le module complémentaire de gestion. idem pour pH et EC

 

Relais configuration : vous pouvez maintenant définir sans rentrer dans le code, le mode de travail de vos relais (état haut ou état bas). peu importe le réglage interne, cela n'affectera pas l'affichage de la page C

 

Relais activation, c'est ici que vous pouvez déconnecter des sorties, idem, peu importe le mode de fonctionnement, les classes gèrent ce mode afin que le courant soit coupé en sortie

 

Quand des relais sont coupés, ceux ci n'apparaissent plus sur la Page C, idem pour les moteurs

 

Horloge vous sert à régler la date et l'heure, des tests de saisies de données ont été mis en place afin de palier toutes erreurs de calculs

 

Code de sécurité, comme dit plus haut, est défini par défaut à 000000

Si vous le modifiez, à la prochaine tentative d'entrée dans le setup, un code vous sera demandé.

Si vous perdez ce code.. vous serez obligé d'utiliser le petit logiciel de remise à zéro de la mémoire EEPROM et de réinstaller le logiciel MiniGrowDuino. les données anciennement introduites seront perdues.

 

Screen Saver, cet utilitaire en cas d'activation éteindra l'écran après le temps déterminé

la durée est définie par défaut à 000 secondes (désactivé)

Sinon au bout de ce laps de temps l'écran se mettra en veille.

Pour réactiver l'écran, appuyez sur n'importe quelle touche de votre clavier hormis *

Le Screen Saver n'est actif qu'en dehors du mode setup afin de vous permettre de travailler à l'aise.

SI vous avez activé cette fonction, elle vous servira également d'indication de non sortie du setup si vous ne voyez pas l'écran s'éteindre après un certain temps.

 

L'option CO2 vous permettra d'activer ou de désactiver la lecture de votre sonde

l'option B de cette page ne sera utilisable qu'avec le module complémentaire.

idem pour pH et EC

 

Au niveau de la programmation, j'ai mis l'accent sur la programmation orientée objets

toutes les variables sont principalement encapsulées dans les classes et les classes procèdent elles-mêmes à l'enregistrement des données dans l'EEPROM à chaque modification de paramètre

 

Voila chers amis.. Je pense que cette fois le programme est plus que complet, et croyez moi, je me suis bien cassé le c** pour cette version.

J'ai essayé dans la mesure du possible de le faire de manière explicite et didactique afin de vous faciliter la tâche, j'ai usé avec parcimonie de pointeurs dans des cas très simples.

Pour les néophytes en programmation, ne modifiez les classes que si nécessaire en sachant ce que vous faites, car en orienté objet, tout dépend de tout.

 

En contre partie, Il serait gentil de votre part de penser à me faire un retour rapide de vos remarques ,afin que je puisse faire les corrections éventuelles dans le classes du programme , et qui me seront également utiles pour la finalisation du proto. Merci d'avance

 

Voila, amusez-vous bien et bon bricolage à tous

et fuck aux appareils commerciaux qui coutent un avion !

 

Cordialement

GEN

Edited by phyldafghan
  • Like 5

Share this post


Link to post
Share on other sites
Gen
Posted (edited)

Comment brancher les accessoires ?

 

DHT22

gallery_616177_4758_881.png

 

 

DHT22 Pin 1 => Connecteur DHT  5V

DHT22 Pin 2 => Connecteur DHT  Data

DHT22 Pin 3 => non utilisée

DHT22 Pin 4 => Connecteur DHT  GND

 

MH-Z14

 

gallery_616177_4758_53087.jpg

TXD  => Connecteur MHZ  T

RXD => Connecteur MHZ  R

VCC => Connecteur MHZ  5V

GND => Connecteur MHZ  GND

 

 

PLATINES RELAIS

 

gallery_616177_4758_148456.jpg

 

Rien de plus simple, prenez un câble Dupont de 10 fils et branchez les séquentiellement en partant du GND de part et d'autre et continuez ainsi jusqu'au VCC

 

ECRAN LCD

 

gallery_616177_4758_16329.jpg

 

 

Connectez GND, VCC, SDA, SCL respectivement sur un des pinheaders du bus I2c

Le potentiomètre bleu sert à régler l'intensité du rétro-éclairage.

Le jumper à gauche sert a activer ou désactiver le retro-éclairage, vous pouvez le remplacer par un interrupteur si vous le désirez

 

BRANCHEMENT DU KEYPAD

 

gallery_616177_4758_10695.png

 

 

RACCORDEMENT DE L'ALIMENTATION

 

Cas 1  avec une alimentation stabilisée 5VDC

le + sur la pin 5V du pin header en bas à droite de votre shield

le - sur une des 2 pins GND du pin header en bas à droite de votre shield

 

Cas 2 avec une alimentation de 9 à 12v

Utilisez simplement la prise d'alimentation de votre arduino

 

OU

le + sur la pin Vin du pin header en bas à droite de votre shield

le - sur une des 2 pins GND du pin header en bas à droite de votre shield

 

RACCORDEMENT DU BOUTON RESET

 

Il est toujours intéressant de pouvoir faire un reset de la platine sans pour autant devoir tout démonter

Pour se faire, munissez-vous d'un bouton poussoir à contact temporaire (càd qu'il est en circuit fermé tant que j'appuie dessus)

 

branchez une des bornes du bouton poussoir sur le GND du pinheader en bas à droite

et l'autre sur le reset (RST)

 

 

N-Joy !

++

GEN

Edited by Gen
  • Like 2

Share this post


Link to post
Share on other sites
Gen
Posted (edited)

Pourquoi utiliser un relais SSR  ?

 

gallery_616177_4758_76368.jpg

 

 

 

 

Je conseille vivement l'utilisation d'un relais SSR pour les ballasts HPS

A force d'utilisation, avec le coup d'arc entre les 2 pôles du relais mécanique, ils peuvent rester collés.

Ce genre de problème n'arrive pas avec un relais SSR

 

Comment le brancher ?

 

 

gallery_616177_4758_14923.jpg

 

Noir     = GND

Rouge = 5V

vous pouvez repiquer vos fil + et - sur un des pinheader I2C par exemple..

 

 

Avertissement : cet élément chauffe considérablement avec de grosses intensités

Si vous dépassez les 2000W je vous conseille d'y ajouter un refroidisseur

 

gallery_616177_4758_1654.jpg

 

gallery_616177_4758_13631.jpg

 

Voila les amis, vous avez toutes les informations pour tirer le meilleur profit de votre Shield Mini-GrowDuino.

 

A VOUS DE JOUER !

 

++

GEN

Edited by Gen
  • Like 6

Share this post


Link to post
Share on other sites
Viker

Bonjour,

 

Excellent tutoriel clair et détaillé pour la mise en place du miniGrowduino. Toujours au top Gen!

 

Voici ma petite contribution.

 

Pour mon écran lcd j'ai eu un module i2C qui avait pour adresse Hexa 0x3F

Si vous avez le même veillez à bien en définir l'adresse Hexa dans le code du programme

(ligne 46 => #define I2C_LCD_ADDRESS     0x3F)

Sur mon module le potentiomètre bleu sert à régler le contraste du lcd.

Le jumper à gauche servant à activer ou désactiver le retro-éclairage peut être remplacé:

- par un potentiomètre d'1 KOhm pour faire varier l'intensité du rétro éclairage ou une résistance de 220 Ohm afin d'avoir une valeur d'éclairage fixe.

- par un interrupteur si vous désirez le couper manuellement.

il est possible de mettre potentiomètre ou résistance plus un interrupteur.

 

Moi j'ai opté pour une résistance fixe et une temporisation dans le programme qui coupe le rétroéclairage au bout d'un certain temps modifiable dans les constantes du début de programme.

 

Pour le module MHZ,  j'ai soudé sur celui-ci 4 pin sur les connections 19, 18, 17 et 16 afin de le brancher avec des cables dupont me permettant d'avoir une longueur de câble plus longue que le câble fourni avec le module.

Pin 19  => Connecteur MHZ  T

Pin 18 => Connecteur MHZ  R

Pin 17 => Connecteur MHZ  5V

Pin 16 => Connecteur MHZ  GND

 

J'ai une question pour Gen. Pourquoi branches-tu le SSR 25A sur le platine relais. N'est-il pas possible de le brancher directement entre une pin timer et gnd?

Share this post


Link to post
Share on other sites
Gen
Posted (edited)

Salut.

 

Content de voir que l'on commence à participer :-)

 

Des tofs !!! Des tofs !!!

 

Alors pour répondre à ta question , 2 raisons :

 

1- Cela fait une séparation supplémentaire entre le circuit et le 220V à plusieurs Ampères

2- La commande des relais est inversée..donc si j'envoie du 0V au relais, ... j'aurai en réponse un gros doigt.

Sans compter les allumages intempestifs lors des reboot

 

j'aurai également pu mettre false lors de l'instanciation de la classe dailyTimer, mais tous ne travaillent pas avec du HPS, certains utilisent de l'envirolite ou de la led, et de fait un SSR n'est pas nécessaire

 

++

GEN

Edited by Gen

Share this post


Link to post
Share on other sites
Viker

Salut,

 

Bon quand j'aurais fini le projet, il y aura des tofs mais là toujours pas.

Surtout que je rencontre des merdes avec mon intracteur qui refuse de fonctionner avec le régulateur de vitesse.

(j'ai fait un post sur le sujet)

 

Bon sinon en récap si je veux utiliser le ssr directement sur les sortie timer il faut que je mette false sur la classe dailyTimer et du coup seul les temp up down et hum up et down resteront en inversés ainsi que les moteurs?

 

++

Viker

Share this post


Link to post
Share on other sites
Gen
Posted (edited)

yop.

 

tu as le lien de ton post à misères que je puisse jeter une bille ? (edit : j'ai trouvé)

 

concernant ton code tu remplaceras cette ligne

DailyTimer             TIMER_1(TIMER1_PIN    , invertedRelay );    
par

DailyTimer             TIMER_1(TIMER1_PIN    , false );    

 

Fait quand même un test de rebot et de mise en route pour voir si ça se passe bien

 

++

GEN
 

Edited by Gen

Share this post


Link to post
Share on other sites
Viker

yop.

 

tu as le lien de ton post à misères que je puisse jeter une bille ? (edit : j'ai trouvé)

 

concernant ton code tu remplaceras cette ligne

DailyTimer             TIMER_1(TIMER1_PIN    , invertedRelay );    

par

DailyTimer             TIMER_1(TIMER1_PIN    , false );    

 

Fait quand même un test de rebot et de mise en route pour voir si ça se passe bien

 

++

GEN

 

Arf oui pardon

le post est dans ton : GDW #2 Régulateur de vitesse universel pour moteur synchrone/asynchrone

 

Bon sinon je ferais les test pour le SSR du timer et je ferais un retour.

Mais là du coup mon problème est surtout sur les moteurs. A moins d'avoir une correction de la platine régulatrice,

je crois que je vais me retrouver à avoir le régulateur pour l'extra et un simple relais pour l'intra soit 2 vitesses (on et off)

Du coup, le problème sera que la platine régulatrice pour l'Extra sera en non inversée et que l'intra sera en inversé.

C'est la merde!

Mais du coup je pensais que je pouvais ajouter (ma platine régulatrice étant branchée en i2c et non plus en directe avec comme adresse par exemple 0x21)

#define MOTOR_ADDRESS       0x21 // pour l'extra

#define MOTOR_ADDRESS2       0x20 // pour l'intra

puis

MotorDriver         MOTOR_DRIVER(MOTOR_ADDRESS,false); // pour l'extra

MotorDriver         MOTOR_DRIVER2(MOTOR_ADDRESS,invertedRelay); // pour l'intra

 

et ensuite modifier dans void runMotors

tous les appels à l'intra comme ceci les appels à l'extra restant identiques

 

if(motorList[0].activated){MOTOR_DRIVER2.setSpeed(INTRA,motorList[1].minSpeed + extra_intra_delta);} else {MOTOR_DRIVER.setSpeed(INTRA,0);}

 

Penses-tu que la solution est la bonne?

 

++

Viker

Share this post


Link to post
Share on other sites
Gen

Salut vik..

 

2 sec stp, je branche mon décodeur cérébral :P

 

Arf oui pardon

le post est dans ton : GDW #2 Régulateur de vitesse universel pour moteur synchrone/asynchrone

 

Bon sinon je ferais les test pour le SSR du timer et je ferais un retour.

 

oki

 

 

Mais là du coup mon problème est surtout sur les moteurs. A moins d'avoir une correction de la platine régulatrice,

je crois que je vais me retrouver à avoir le régulateur pour l'extra et un simple relais pour l'intra soit 2 vitesses (on et off)

Du coup, le problème sera que la platine régulatrice pour l'Extra sera en non inversée et que l'intra sera en inversé.

C'est la merde!

 

pourquoi ?

- primo, l'inversion de traitement de commande c'est toi qui la définit

- secondo les classes pour piloter les moteurs via regul ou via auto-transfo ne sont pas les mêmes

 

Mais du coup je pensais que je pouvais ajouter (ma platine régulatrice étant branchée en i2c et non plus en directe avec comme adresse par exemple 0x21)

 

oui c'est 'toutafet'  possible par contre le code ci-dessous ne peut etre juste car comme cité plus haut, c'est pas les mêmes classes 'driver' de moteur.

 

 

 

#define MOTOR_ADDRESS       0x21 // pour l'extra

#define MOTOR_ADDRESS2       0x20 // pour l'intra

puis

MotorDriver         MOTOR_DRIVER(MOTOR_ADDRESS,false); // pour l'extra

MotorDriver         MOTOR_DRIVER2(MOTOR_ADDRESS,invertedRelay); // pour l'intra

 

et ensuite modifier dans void runMotors

tous les appels à l'intra comme ceci les appels à l'extra restant identiques

 

if(motorList[0].activated){MOTOR_DRIVER2.setSpeed(INTRA,motorList[1].minSpeed + extra_intra_delta);} else {MOTOR_DRIVER.setSpeed(INTRA,0);}

 

Penses-tu que la solution est la bonne?

 

++

Viker

 

 

++

GEN

Share this post


Link to post
Share on other sites
Viker
Posted (edited)

Ah c'est parce que j'ai oublié un 2 comme cela ça fonctionne ou je suis encore à coté de la plaque?

 

#define MOTOR_ADDRESS       0x21 // pour l'extra

#define MOTOR_ADDRESS2       0x20 // pour l'intra

puis

MotorDriver         MOTOR_DRIVER(MOTOR_ADDRESS,false); // pour l'extra

MotorDriver         MOTOR_DRIVER_2(MOTOR_ADDRESS2,invertedRelay); // pour l'intra

 

et ensuite modifier dans void runMotors

tous les appels à l'intra comme ceci les appels à l'extra restant identiques

 

if(motorList[0].activated){MOTOR_DRIVER_2.setSpeed(INTRA,motorList[1].minSpeed + extra_intra_delta);} else {MOTOR_DRIVER_2.setSpeed(INTRA,0);}

 

++

Viker

Edited by Viker

Share this post


Link to post
Share on other sites
Gen

Quand tu veux pas comprendre, tu veux pas comprendre !

 

Ce ne sont pas les mêmes classes !!

 

tu as une classe pour le regulateur (MCP23008) et une pour les commandes moteurs via relais (MCP23017)

le code n'est pas le même.

 

Cappichi amigo ;-) ?

 

++

GEN

Share this post


Link to post
Share on other sites
Viker

Quand tu veux pas comprendre, tu veux pas comprendre !

 

Ce ne sont pas les mêmes classes !!

 

tu as une classe pour le regulateur (MCP23008) et une pour les commandes moteurs via relais (MCP23017)

le code n'est pas le même.

 

Cappichi amigo ;-) ?

 

++

GEN

 

Ah bah moi aussi je n'avais pas branché mon décodeur :roll:

Maintenant c'est limpide. Mais du coup aurais-tu la bibliothèque pour le MCP23008 stp?

 

++

Viker

Share this post


Link to post
Share on other sites
Gen

re: of course !

 

Téléchargement : I2C_Motor.zip

 

++

GEN

 

 

 

 

 

 

Share this post


Link to post
Share on other sites
Viker

Merci Gen.

 

Bon j'étudierais ça après le week-end.

 

++

Viker

Share this post


Link to post
Share on other sites
Gen
Posted (edited)

Salut.

 

Wouaw ! Ca partage sec ici je vois :ph34r:

 

En attendant l'arrivée de mes platines EC, j'ai commencé le schéma du contrôleur autonome. Cela devrait donner un truc dans ce genre :

 

gallery_1_47_73373.png

 

Il ne nécessite plus d'arduino,

horloge interne intégrée

protection d'inversion de polarité sur l'alim

protection opto-électronique sur chaque voie

permet l'utilisation de tous types de relais (de 5v à 40v) donc aucune limite de puissance

possibilité d'utiliser des platine relais pour arduino

gestion sur 5 vitesses de l'extra et/ou de l'intra

commande par clavier

affichage LCD 4x20

Dimension +/- 7,5cm x 15cm

indication CO2

2 temporisateurs journaliers

2 temporisateurs cycliques

1 gestion t° Up

1 gestion t° Down

1 gestion humidité Up

1 gestion humidité Down

 

Ce modèle est fait spécialement pour les gens qui ne touchent ni à l'électronique, ni à l'informatique.

Pour les bricoleurs-arduinoteurs, eux se dirigeront vers le shield mini-Growduino

(je pense en terminer l'étude d'ici 3 jours)

 

++

GEN

Edited by Gen
  • Like 3

Share this post


Link to post
Share on other sites
Gen

re:

 

Voici le projet terminé :-)

gallery_1_84_88985.png

 

 

Je viens d'envoyer la platine en production pour test

++

GEN

  • Like 2

Share this post


Link to post
Share on other sites
Viker

Bonjour,

 

Très belle platine all in one.

 

Bon sinon j'ai bientôt terminé mon minigrowduino mais j'ai un petit problème dans la finalisation:

J'ai des relais SSR Fotek, sans doute des clones chinois, qui sont là pour switcher les lampes ils sont eux même activé par des petit relais ssr. Quand le petit relais ssr devient passant alors le Fotek s'allume et devient passant. Là c'est ok.

Par contre quand le petit relais ssr devient non passant alors le Fotek reste allumé :/

J'ai essayé de mettre un transistor 2N2222 dont la gate est contrôlé par le petit ssr via un résistance de 2.2 kOhm mais j'ai le même résultat. Ce n'est qu'en coupant le lien entre le petit ssr et la gate du transistor que le Fotek se coupe.

Je sèche là. Une idée?

 

Sinon je suis près du but et donc de la photo illustratrice.

 

++

 

Viker

Share this post


Link to post
Share on other sites
Gen

yop.

 

oui, commande en direct ton SSR

et tu mettras le + du relais fotek en direct sur le +5V de la platine et le moins du relais sur la sortie du minigrowduino dedié à la lampe

 

Ainsi quand la sortie de l'arduino sera HIGH le relais se retrouvera avec deux + a ses bornes et ne s'enclenchera pas

et quand l'arduino est LOW, la sortie arduino shunt sur la masse et le courant pourra passer pour alimenter ton relais

 

:-)

 

N-joy!!

 

++

GEN

Share this post


Link to post
Share on other sites
Viker
Posted (edited)

Yop.

 

Merci Gen. J'ai fait la modif mais en mettant le - du relais Fotek en direct sur le GND de la platine et le + sur la sortie du miniGrowduino dédié à la lampe car mon allumage était prévu en HIGH et non LOW. Mais le résultat est là et cela fonctionne à merveille.

Sinon au final je suis parti sur des transformateur et non la platine régulatrice de vitesse car au final cela ne fonctionnait pas avec mon intracteur même avec les modifs. (En fait il faut que je refasse un autre design du pcb sans le soft start)

 

Alors voilà comme promis les toffs.

 

Voici tout d'abords la vue d'ensemble.

Avec 10 prises (8 sur les cotés et deux déportées)

Elles correspondent aux lampes, Extracteur, Intracteur, les 2 cyclics, chauffage, clim, déshumidificateur et brumisateur.

 

L'ensemble est protégés par des fusibles en haut et en bas du boitier.

En bas du boitier j'ai la sortie de la sonde température/humidité et une autre sortie pour faire évoluer le proto.

 

En façade on retrouve le LCD, le clavier, le bouton reset et la sonde CO2

 

MiniGrowduino 01

 
Voici le vue interne.
A gauche l'arrière de la façade avec le miniGrowduino, l'arduino mega, le LCD et la sonde CO2
A droite les transformateurs, les relais SSR Fotek pour les lampes, les rampes de relais empilées pour l'extracteur, l'intracteur et autres sorties.
 

MiniGrowduino 02

 

Voici maintenant l'écran de contrôle avec les différents paramètres.

N'ayant pas l'usage d'une sonde EC et pH les valeurs sont à zéro.

 

En haut à gauche il y a un # près du ON. Il s'agit de la sécurité lors de l'allumage des lampes en cas de coupure de courant. Les lampes passeront réellement sur ON au bout de 20 min ou en pressant la touche #.

 

Le rétro-éclairage se coupe automatiquement au bout de 1 min.

 

MiniGrowduino 03

 

Voici le menu quand on presse sur la touche *

Le menu Cyclic est inchangé

 

MiniGrowduino 04

 
Dans le menu Time/Date j'ai ajouté en plus de la gestion des lampes la possibilité de changer la date et l'heure.

 

MiniGrowduino 05

MiniGrowduino 06

 

Dans le menu Environnement

 

MiniGrowduino 07

 

J'ai ajouté un mode SECHAGE dans le mode de culture en plus de croissance et de floraison.

Il permet, comme son nom l'indique, de sécher. Les extrateur et intracteur sont alors régulés selon le taux d'hygrométrie et non selon la température. Les lampes sont également désactivées.

Le taux d'humidité du mode séchage utilise les valeurs programmées dans le mode croissance de jour.

 

MiniGrowduino 08

 
J'ai également ajouté la possibilité de changer l'hystérésis de la température et de l'humidité.
 

MiniGrowduino 07

MiniGrowduino 09

 
A partir du menu principale on peux modifier les paramètres des Extracteur et Intracteur
 

MiniGrowduino 04

 
Dans le menu Extracteur/Intracteur j'ai ajouté la possibilité de modifier le temps avant que les moteurs ne répondent aux consignes afin de ne pas changer de régime constamment. Ici c'est réglé sur 5 secondes ce qui est court mais très bien pour un test.
 

MiniGrowduino 10

 
Maintenant en entrant dans l'un des menus moteurs comme ici le menu Extracteur.
J'ai ajouté la possibilité de réglé la vitesse max, la vitesse min et le delta entre l'extracteur et l'intracteur en positif ou négatif créant ainsi une dépression ou une surpression.
 

MiniGrowduino 11

 
Voici le sous menu permettant de sélectionner Vmax, Vmin ou Delta. (Delta n'est réglable qu'avec l'extracteur)
 

MiniGrowduino 12

 
Ici je modifie Vmax de l'extracteur avec les lignes du dessous indiquant les limites possibles du changement.
En effet Vmax ne peux dépasser le nombre de vitesse de l'intracteur et Vmax est forcément supérieur à Vmin.
 

MiniGrowduino 13

 

Voici donc la fin de la description de mon miniGrowduino et de mes ajouts et modifs.

Encore un grand merci à toi Gen.

 

++

Viker

Edited by Viker
  • Like 4

Share this post


Link to post
Share on other sites
Gen

yop.

 

Joli montage.. Bravo ;-)

 

++

GEN

Share this post


Link to post
Share on other sites
Gen
Posted (edited)

Salut.

 

Voici un exemple de montage Mini-GrowDuino réalisé par mes soins.

C'est la version de base sans pH et EC

 

Vue complète

 

399381681.jpg

 

Détails de l'affichage

274474892.jpg

 

Vue du câblage intérieur

589394703.jpg

 

Le boîtier déporté contenant les capteurs T°, humidité, CO2 et son voyant de fonctionnement

809410694.jpg

 

Vue latérale

240510815.jpg

 

Vue du dessus

979086316.jpg

 

 

Spécifications :

 

Boîtier étanche IP65

Prises étanches IP65

Relais SSR pour la lampe

Relais SSR pour la commande de l'auto-transformateur

Capteurs déportés 5m

Indicateur de consommation

 

Voila de quoi vous donner des idées de montage

 

Bon bricolage

++

GEN

Edited by Gen
  • Like 5

Share this post


Link to post
Share on other sites
Gen

Mise à jour disponible sur le premier post de ce fil de discussion

 

Version 1.35

 

++

GEN

  • Like 1

Share this post


Link to post
Share on other sites
Viker
Posted (edited)

Salut,

 

Très belle réalisation!

Clairement cette taille de boitier est mieux pour pouvoir faire le miniGrowduino. (Le mien étant devenu presque trop juste pour les transfo alors que j'avais initialement prévu des cartes de contrôle des ventilateurs)

 

Suite à une demande en MP je vais partager mon code.

C'est une version basée sur la version 1.34 de GEN

Les modifs sont les suivantes:

- possibilité de changer l'heure et la date

- un mode séchage en plus du mode cro et flo qui pilote l'intra et l'extra en fonction du taux d'humidité et non de la température et coupe la lampe 1. (le réglage du taux d'humidité voulu se fait avec le menu humidité, en mode croissance de jour)

- possibilité de changer l'hystérésis pour la température et l'humidité.

- réglage de vitesse min/max et Delta pour les intra et extra.

- réglage du temps de réponse avant un changement de vitesse des intra et extra.

- un mode de protection de la lampe 1 (20min) lors d'une coupure de courant indiqué par # à côté du ON de la lampe et débrayable à l'appui de la touche #.

 

J'ai fait un ajout dans la librairie Daily Timer afin de faire fonctionner le mode de protection des lampes.

 

Attention dans le code l'ordre de mapping des touches du clavier sont différentes de celles de Gen et j'utilise un écran LCD dont l'adresse n'est pas conventionnelle 0x3F au lieu de 0x27

 

Soyez indulgent avec ma programmation je ne suis pas un expert. Njoy!

 

 

++

Viker

MiniGrowduinoV1_34modViker.zip

Edited by Viker
  • Like 1

Share this post


Link to post
Share on other sites
Gen

yop.

 

J'ai regardé ton code.. n'utilises pas la commande millis() c'est à proscrire car il arrive toujours un moment où elle sera en overfload. cette commande est à utiliser sur des programmes à cycles cours

utilises plutôt la commande unixtime()

 

++

GEN

Share this post


Link to post
Share on other sites