Go Down

Topic: Module ESP8266 (ESP-12E) (Read 332 times) previous topic - next topic

Domodom

Bonjour la communauté.

J'ai commandé un module ESP8266, pour l'ajouter à mon Arduino.
Actuellement mon Arduino gère la trappe de mon poulailler.
J'ai un capteur de Lumière qui permet d'ouvrir et fermer la trappe.

Avec le module, je souhaite recevoir un retour sur pc ou tel de l'état de la trappe, également la possibilité de commander la trappe via une interface web.

J'ai vu beaucoup de tuto, qui permet de commander les GPIO du module ESP8266, via une interface web, mais je n'ai pas trouvé d'informations pour commander les GPIO du arduino.
Je me doute, que je dois passer par le RX et TX...

Une piste pour m'aiguiller.... svp

Zlika

#1
May 01, 2019, 09:01 am Last Edit: May 01, 2019, 09:02 am by Zlika
Bonjour,

Comme tu l'as deviné, le plus simple et d'échanger les informations par les lignes série des deux cartes.

Néanmoins, l'esp est un μcontroleur qui fonctionne avec une tension d'alimentation de 3,3V et Ce sera évidemment la même tension sur ses entrées/sorties.

Comme tu n'as pas précisé le type de carte arduino que tu utilises, je ne peux pas te confirmer la compatibilité entre elles.
Juste pour information, le modèle UNO fonctionne avec une tension de 5V.
Si ça coince, forcez. Si ça casse, ça devait probablement être réparé, de toute façon.

al1fch

#2
May 01, 2019, 09:10 am Last Edit: May 01, 2019, 09:11 am by al1fch
Bonjour

en complément :

Sur la carte Arduino (modèle ?) et le module ESP8266 (modèle ?) les signaux TX  et Tx matériels seront peut être utilisés pour l'interface USB , il faudra alors créer un port série virtuel pour ajouter une paire TX/RX libre

Domodom

Bonjour, merci pour vos réponses, pour être plus précis dans le matériel :

- Arduino Uno
- NodeMCU Lua Lolin V3 Module ESP8266 (ESP-12E)

Concernant l'alimentation, ce n'est pas un problème, j'utilise une veille alim de pc.

Leptro

Bonjour,
L'autre étape, et c'est le mieux, c'est de porter le code Arduino sur l' ESP.

L'esp peux faire les taches que fait déjà la Uno.

Bonne bidouille.

Zlika

#5
May 01, 2019, 09:38 am Last Edit: May 01, 2019, 09:39 am by Zlika
Vu la carte esp que tu as, il serait préférable de prendre le problème par l'autre bout.

La carte nodeMCU peut piloter ton projet à elle seule. La carte Uno n'est pas nécessaire.

Il y aura toujours le problème de la tension pour contrôler tes modules périphériques mais tu peux le corriger avec une petite carte de ce  type.

Il te suffira d'intégrer la partie WiFi dans ton code.

As-tu un schéma de ton montage actuel ?
Si ça coince, forcez. Si ça casse, ça devait probablement être réparé, de toute façon.

hbachetti

Pourquoi ne pas tout faire avec l'ESP12E ?
Le code écrit pour la UNO peut très bien se compiler sur l'ESP8266.
Tu gagneras certainement du temps par rapport à la solution que tu envisages.

+1 avec Leptro et Zlika
 
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

al1fch

#7
May 01, 2019, 09:42 am Last Edit: May 01, 2019, 09:49 am by al1fch
SI tu restes sur le schéma carte Arduino + NodeMCU

  • Sur ces deux cartes les signaux TX et RX sont accaparés  par l'interface USB donc indisponibles pour la liaison entre les deux. (donc SofwareSerial aux deux bouts)
  • La sortie SofwareSerial TX (0/ 5V) de l'Arduino devra être abaissée à 0/3,3V pour l'entrée SofwareSerial  RX de la carte NodeMCU pour garantir sa longévité


Mais tout confier à la carte NodeMCU (sauf impératif particulier) me parait également préférable  !!
Quelle est la 'valeur ajoutée' de la carte Arduino?  à mettre en parallèle avec les complications de cette 'attelage' ?

La carte NodeMCU peut être avantageusement vue comme une 'carte ArduinoWiFi' à elle seule !!



bidouilleelec

#8
May 01, 2019, 09:48 am Last Edit: May 01, 2019, 09:49 am by bidouilleelec
Bonjour Domodom

Il ne faut pas amener du 5V sur la broche Rx ou autre
de l'ESP.
Ça fumera à court  , moyen ou long terme.

Cordialement,
bidouillelec

Domodom

Merci pour vos réponse.

Effectivement, l'arduino n'est plus utile avec le module ESP-12E.
Ma trappe étant fonctionnelle depuis des années, je pensai juste rajouter le module.


Je vais donc retirer l'Arduino du projet.

Je pose le code ici ce qui permet de comprendre le schéma qui est relativement simple.

Ps: Le module RTC_DS3231 est devenu inutile, auparavant je commandé la trappe selon une plage horaire, que j'ai donc remplacé par un capteur de luminosité.


Code: [Select]
#include <Wire.h>
#include "RTClib.h"

RTC_DS3231 rtc;

/*Declaration Moteur */
#define MoteurPin1  8
#define MoteurPin2  9
#define MoteurPinActive  10

/*Declaration du bouton */
#define BoutonPin 12

/*Declaration de la photorésistance */
#define PhotoResistancePin A0
#define PhotoResistance analogRead(PhotoResistancePin)            // mesure de luminosité
#define Seuil_Luminosite_Nuit  900                                          // seuil nuit
#define Seuil_Luminosite_Jour  450                                          // seuil jour

/* Declaration des fin de course */
#define Fin_C_Haut 4
#define Fin_C_Bas 2
#define CapteurHautOn  !digitalRead(Fin_C_Haut)
#define CapteurBasOn !digitalRead(Fin_C_Bas)
#define Bouton_Ext !digitalRead(BoutonPin)

int Etat_Trappe = -1; // Etat de la porte 0=Ouverte 1=fermée -1 en mouvement (indéterminé)

unsigned long TempsMaxMoteur = 100;


void Fermeture() {
    long TempsMoteur = 0;
    while (!CapteurBasOn) {
  digitalWrite(MoteurPin1, 1);
  digitalWrite(MoteurPin2, 0);
  analogWrite(MoteurPinActive, 255);
  }
  stop();
}

void Ouverture() {
    long TempsMoteur = 0;
    while (!CapteurHautOn) {
  digitalWrite(MoteurPin1, 0);
  digitalWrite(MoteurPin2, 1);
  analogWrite(MoteurPinActive, 255);
  }
  stop ();
  delay (500);
  F_Ouverture();
  delay (500);
}

void F_Ouverture() {
  digitalWrite(MoteurPin1, 0);
  digitalWrite(MoteurPin2, 1);
  analogWrite(MoteurPinActive, 255);
  delay (800);
  stop ();
}

void stop () {
  analogWrite(MoteurPinActive, 0);
  Detect_Etat_Trappe();
}

void Detect_Etat_Trappe()
{
  Etat_Trappe =-1;

  if (CapteurHautOn == 1)
  {
    Etat_Trappe = 0;
  }

  if (CapteurBasOn == 1)
  {
    Etat_Trappe = 1;
  }
}

void setup() {

  Serial.begin(9600);

  // initialisation des broches E/S
  pinMode(PhotoResistancePin, INPUT);
  pinMode(Bouton_Ext, INPUT_PULLUP);
  pinMode(Fin_C_Haut, INPUT_PULLUP);
  pinMode(Fin_C_Bas, INPUT_PULLUP);
  pinMode(MoteurPinActive, OUTPUT);
  pinMode(MoteurPin1, OUTPUT);
  pinMode(MoteurPin2, OUTPUT);
  analogWrite(MoteurPinActive, 0);

    delay(3000);
  if (!rtc.begin()) {
    while (1);
  }
  if (rtc.lostPower()) {
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
//  rtc.adjust(DateTime(2018, 2, 3, 16, 25, 0));
}

void loop() {

  DateTime now = rtc.now();

 int  ValHeure = now.hour();
 int  ValMinute = now.minute();

      Serial.println(PhotoResistance);
//    Serial.print(now.hour(), DEC);
//    Serial.print(':');
//    Serial.print(now.minute(), DEC);
      delay (2000);

/* ------------------------------------------------------------------------------------------*/
/*          Ouverture ou Fermeture selon position du fin de course et PhotoResistance        */
/* ------------------------------------------------------------------------------------------*/

    if ((PhotoResistance > Seuil_Luminosite_Nuit) && (CapteurHautOn == 1)) {
    Detect_Etat_Trappe ();
    Fermeture ();
    delay (500);
  }
   if ((PhotoResistance <= Seuil_Luminosite_Jour) && (CapteurBasOn == 1)) {
    Detect_Etat_Trappe ();
    Ouverture ();
    delay (500);
   }
  stop();
}

Go Up