IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Communication wifi entre deux modules ESP8266 programmés par IDE Arduino


Sujet :

Arduino

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 139
    Par défaut Communication wifi entre deux modules ESP8266 programmés par IDE Arduino
    Bonjour,

    J'ai tenté de résoudre le problème suivant :

    Sur un module ESP8266 je détecte l'ouverture ou la fermeture sur deux contacts et j'envoie le résultat sur le réseau WIFI.
    Sur le second module je lis le message envoyé du premier module et j'affiche par diode l'état des contacts (ouvert ou fermé).

    J'ai programmé les deux ESP8266 en m'inspirant d'exemples et le résultat n'est pas toujours conforme.

    Je pense que mes programmes ne sont pas au top et je vous les proposes à votre analyse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    #include <ESP8266WiFi.h>
     
    int pinGPIO16 = 16; //To control LED wifi connecte
    int pinGPIO05 = 5; //la porte 1 est fermée
    int pinGPIO04 = 4; //la porte 2 est fermée
     
    IPAddress ip(192 , 168 , 1 ,30);
    IPAddress gateway(192 , 168 , 1 , 1);
    IPAddress subnet(255 , 255 , 255 , 0);
     
    WiFiServer server (80);
     
    void setup()
     
    {
     
      Serial.begin(115200);
      Serial.println();
     
     
      WiFi.config(ip,gateway,subnet);
      WiFi.begin("Livebox-b", "xxxxx");
     
      Serial.print("Connecting");
      while (WiFi.status() != WL_CONNECTED)
      {
        delay(500);
        Serial.print(".");
      }
      Serial.println();
     
      Serial.print("Connected, IP address: ");
      Serial.println(WiFi.localIP());
      pinMode(pinGPIO16, OUTPUT);
      pinMode(pinGPIO05, OUTPUT); 
      pinMode(pinGPIO04, OUTPUT);
      digitalWrite(pinGPIO16, HIGH);
      digitalWrite(pinGPIO05, LOW);
      digitalWrite(pinGPIO04, LOW);
      server.begin();
      Serial.println("Serveur demarrer !");
     
    }
     
     
     
     
    void loop()
    {
     
    WiFiClient client = server.available();
     
     
      if (client)
      {
        if (client.connected())
        {
           String request = client.readStringUntil('\r');
           Serial.println(request); 
           int porte1 = request[7];
           int porte2 = request[15];
           Serial.println(porte1);
           Serial.println(porte2);
           if (porte1 ==48)
           {
              digitalWrite(pinGPIO05, HIGH);
              Serial.println("05 high");
           }
           else
           {
              digitalWrite(pinGPIO05, LOW);
              Serial.println("05 low");
           }
           if (porte2 ==48)
           {
              digitalWrite(pinGPIO04, HIGH);
           }
           else
           {
              digitalWrite(pinGPIO04, LOW);
           }
     
           client.flush();
        }
     
     
      else
      {
        digitalWrite(pinGPIO04, LOW);
        digitalWrite(pinGPIO05, LOW);
        Serial.println("client non connecté");
      }
      }
     
        client.stop();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    #include <ESP8266WiFi.h>
    int pinGPIO16 = 16; //To control LED wifi connecte
    int pinGPIO14 = 14; //To contact porte 
    int pinGPIO12 = 12; //To contact porte 2
    int pinGPIO5 = 5; //La porte 1 est fermée
    int pinGPIO4 = 4; //La porte 2 est fermée
    int val1 = 0;
    int val2 = 0;
    String chaine;
    WiFiClient client;
    IPAddress ip(192 , 168 , 1 , 31);
    IPAddress server(192 , 168 , 1 ,30);
    IPAddress gateway(192 , 168 , 1 , 1);
    IPAddress subnet(255 , 255 , 255 , 0);
     
     
    void setup()
     
    {  
      Serial.begin(115200);
      Serial.println();
     
      WiFi.config(ip,gateway,subnet);
      WiFi.begin("Livebox-b", "xxxxx");
     
      Serial.print("Connecting");
      while (WiFi.status() != WL_CONNECTED)
      {
        delay(500);
        Serial.print(".");
      }
      Serial.println();
     
      Serial.print("Connected, IP address: ");
      Serial.println(WiFi.localIP());
      pinMode(pinGPIO16, OUTPUT);
      pinMode(pinGPIO5, OUTPUT);
      pinMode(pinGPIO4, OUTPUT);
      pinMode(pinGPIO14, INPUT); 
      pinMode(pinGPIO12, INPUT); 
     
      digitalWrite(pinGPIO16, HIGH);
      digitalWrite(pinGPIO5, LOW); 
      digitalWrite(pinGPIO4, LOW); 
     
    }
     
     
    void testporte1()
    {
      pinMode(pinGPIO14, INPUT); 
      val1 = digitalRead(pinGPIO14);
     
      if (val1 == 1)
      {
      Serial.print("porte 1 ouverte : ");
      Serial.println(val1);
      digitalWrite(pinGPIO5, LOW);   
      }
      if (val1 == 0)
      {
      Serial.print("porte 1 fermée : ");
      Serial.println(val1);
      digitalWrite(pinGPIO5, HIGH); 
      }
    }
    void testporte2()
    {
     
      pinMode(pinGPIO12, INPUT); 
      val2 = digitalRead(pinGPIO12);
     
      if (val2 == 1)
      {
      Serial.print("porte 2 ouverte : ");
      Serial.println(val2);
      digitalWrite(pinGPIO4, LOW);   
      }
      if (val2 == 0)
      {
      Serial.print("porte 2 fermée : ");
      Serial.println(val2);
      digitalWrite(pinGPIO4, HIGH); 
      }
    }
    void cnxserveur()
    {
      client.connect(server,80);
     
      if (client.connect(server, 80)) 
      {
        Serial.println("connected");
        chaine = "porte1 ";
        chaine += val1;
        chaine += "porte2 "; 
        chaine += val2;
        chaine += "\r";
        client.println(chaine);
        client.println();
      } 
      else
      {
        Serial.println("connection failed");
      }
    }
    void loop()
    {
      delay(2000);
      testporte1();
     
      testporte2();
     
      cnxserveur();
    }
    Je vous remercie par avance de m'apporter votre aide.

    Cordialement
    Fichiers attachés Fichiers attachés
    • Type de fichier : odt p1.odt (15,0 Ko, 82 affichages)
    • Type de fichier : odt p2.odt (15,5 Ko, 51 affichages)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Communication entre deux langages de programmation différents.
    Par Filadelphila dans le forum Protocoles
    Réponses: 11
    Dernier message: 14/11/2019, 17h01
  2. Réponses: 3
    Dernier message: 06/02/2019, 09h13
  3. [Radiocommunication] [ESP8266] Communication directe entre deux modules
    Par al1_24 dans le forum Embarqué
    Réponses: 2
    Dernier message: 25/01/2018, 18h35
  4. Réponses: 14
    Dernier message: 25/11/2007, 18h32
  5. Réponses: 2
    Dernier message: 30/08/2006, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo