Go Down

Topic: arduino uno with shield wifi (Read 269 times) previous topic - next topic

hamet


BONJOUR

J'ai 1 capteur analogique 0-5 vdc (alimentation 5vdc) qui se connectera aux bornes analogiques de mon arduino uno.

Je voudrais ajouter à mon projet une conexion wifi pour envoyer les données à un serveur FTP ou à un autre mode.

Quel shield wifi je devrais ajouter (moins cher que le bouclier adruino proposé: adafruit exemple ADA 3653)?

la solution est simple avec le shield wifi arduino?

Cordialement

J-M-L

#1
Jun 12, 2018, 08:51 am Last Edit: Jun 12, 2018, 09:08 am by J-M-L
Partez directement avec un processeur qui embarque le wifi comme un wemos D1 par exemple. Sinon vous pouvez rajouter un esp01 à votre uno pour créer une interface wifi, ce sera dans doute moins cher que le shield wifi arduino si le prix est un soucis. Sinon le shield wifi fait le job

Vous pouvez en lire un peu plus sur le ESP-01 dans un de mes tutos (mais pas exactement ce que vous voulez car là je l'utilise en serveur web, pas client. Mais le principe est assez similaire)


(Attention les Wemos et autres solutions à base d'ESP sont en 3.3V, pas 5V)
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

hamet

Bonjour

merci pour la réponse, j'avais déjà  suivi vos tutoriels mais je bloque.


j'ai un Arduino Uno et un esp8266-01

Avec plusieurs morceau de code j'ai réussi a crée un serveur web avec mon esp8266.

je désire envoyer la valeur d'un capteur analogique 0-5v branché sur ma borne A0 vers un esp8266 par la liaison série.

Le soucis que je rencontre c'est que je n'arrive pas à faire afficher la valeur qui correspond ,à mon capteur analogique sur ma page web.


je vous ai intégré la capture d'écran de l'affichage de ma page web et du moniteur série.

on voit  bien mon Arduino envoyer la valeur 15 mais je ne la reçoit pas sur mon esp et la valeur ne

s'affiche pas sur ma page web , elle affiche une valeur mal interprété.




























J-M-L

#3
Jun 20, 2018, 12:04 am Last Edit: Jun 20, 2018, 12:07 am by J-M-L
Utilisez les balises et indentez le code, c'est illisible..  votre image montre une ERROR...

----

corrigez votre post ci dessus et rajoutez les code tags autour du code:
[code] // votre code ici [/code].

ça doit ressembler à cela:
Code: [Select]
// votre code ici
(faites aussi ctrl-T (PC) or cmd-T (Mac) dans l'IDE avant de copier le code pour qu'il soit indenté correctement)
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

jfs

#4
Jun 20, 2018, 09:18 am Last Edit: Jun 20, 2018, 09:39 am by jfs
Tu as moins d'une heure pour aller faire un tour dans les messages épinglés en haut du forum, bien les lire et remettre tes messages en ordre.... sinon >>>> poubelle.
Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

hamet

#5
Jun 20, 2018, 09:20 am Last Edit: Jun 20, 2018, 09:32 am by hamet
Bonjour désolé je ne connaissais pas les réglés du forum .

j'ai remis l'image de l'affichage de mon moniteur série et de ma page web.


Code: [Select]



#include <SoftwareSerial.h>
#define DEBUG true
#define rxPin 10
#define txPin 11
#include<math.h>
int analogValue;
int pression;
int temerature;
// broche 10 de l'arduino en RX et broche 11 en TX : vous pouvez choisir d'autres broches
// connectez votre ESP8266 en mode croisé RX<=>TX
SoftwareSerial esp8266(10, 11);

void setup()
{
  Serial.begin(9600); // com serie de l' ARDUINO a 9600 bauds
  esp8266.begin(9600); // ESP8266 a 9600 bauds
  sendData("AT+RST\r\n", 2000, DEBUG); // reinitialise le module ESP8266
  sendData("AT+CWMODE=2\r\n", 1000, DEBUG); // configure en TCP
  sendData("AT+CWSAP?\r\n", 2000, DEBUG); // recupere nom et mot de passe de l' ESP
  sendData("AT+CIFSR\r\n", 1000, DEBUG); // recupere l'adresse IP de l' ESP
  sendData("AT+CIPMUX=1\r\n", 1000, DEBUG); // configure en connexion multiple
  sendData("AT+CIPSERVER=1,80\r\n", 1000, DEBUG); // ouvre le serveur sur le port 80
}

void loop()
{
  if (esp8266.available()) // teste si l'ESP envoi un message
  {
    if (esp8266.find("+IPD,")) // avance jusqu'a trouver +IPD
    {
      delay(1000);


      // read the analog input on pin 0:
      int analogValue = analogRead(0);

      // print it out in many formats:
      esp8266.println(pression);         // print as an ASCII-encoded decimal

      int connectionId = esp8266.read() - 48;
      // soustrait 48 parceque la fonction read() retourne la valeur ASCII decimale , zero (0) par exemple vaut 48 en ASCII decimal

      // ci dessous serie de commande qui renvoie du texte sur le port serie (page web)
      String webpage = "<h1>HAMET</h1><h2>PRESSION: bars  ";
      String cipSend = "AT+CIPSEND=";
      cipSend += connectionId;
      cipSend += ",";
      cipSend += webpage.length();
      cipSend += "\r\n";
      sendData(cipSend, 100, DEBUG);
      sendData(webpage, 100, DEBUG);
      float analogV = map (analogValue, 0, 1024, 0, 16);
      webpage = Serial.print(analogV);
      cipSend = "AT+CIPSEND=";
      cipSend += connectionId;
      cipSend += ",";
      cipSend += webpage.length();
      cipSend += "\r,\n";
      sendData(cipSend, 100, DEBUG);
      sendData(webpage, 100, DEBUG);
      String closeCommand = "AT+CIPCLOSE=0";
      closeCommand += connectionId; // fermer la connexion
      closeCommand += "\r,\n";
      sendData(closeCommand, 100, DEBUG);
    }
  }
}

// fonction sendData utilisee pour initialiser l' ESP
String sendData(String command, const int timeout, boolean debug)
{
  String response = "";
  esp8266.print(command); // envoi le caractere a l' esp8266
  long int time = millis();
  while ( (time + timeout) > millis())
  {
    while (esp8266.available())
    {
      char c = esp8266.read(); // lit le caracter suivant
      response += c;
    }
  }
  if (debug)
  {
    Serial.print(response);
  }

  return response;



  // delay 10 milliseconds before the next reading:
  delay(10);
}



Go Up