Shield WIFI ESP8266

Buongiorno a tutti, ho il seguente problema che da solo non sono riuscito a risolvere.

Ho acquistato la shield WIFI ESP8266 per Arduino uno della Makerfabs per poter comandare Arduino uno da remoto. Ho seguito alla lettera le istruzioni contenute nel file Wiki di cui allego il link (ESP8266 WIFI Shield - Makerfabs Wiki). Ho effettuato il WiFi test utilizzando lo sketch indicato (ESP8266_WiFi_Shield_code) nella sezione Resources del fili wiki. Il test ha avuto esito positivo anche se la risposta che compare sul mio serial monitor contiene caratteri e stringhe assolutamente incomprensibili e quindi non coincide con quella riportata nel file wiki. In particolare non mi restituisce l’IP del dispositivo.

Ho verificato la connessione sia con Hercules setup utilities (che mi restituisce l’IP del dispositivo), sia con Advanced IP Scanner; tramite il primo riesco anche a mandare allo shield i comandi AT ed ottenere le relative risposte.

Per verificare di poter dialogare da remoto con Arduino per mezzo dello shield sono quindi passato ad eseguire il passo successivo denominato “IoT Project”. Ho utilizzato un sensore umidità/temperatura del tutto simile a quello della Makerfabs indicato nel file wiki ed effettuato il collegamento allo shield come nel file. Ho utilizzato lo sketch riportato e mi sono registrato sul sito https://thingspeak.com.

Nello sketch ho riportato all’interno del loop L’Api Key ottenuto con la registrazione.

Ho seguito la verifica dello sketch ottenendo la risposta “ ‘sendData’ was not declared in this scope”.

Lo sketch in questione è del tutto simile (così almeno a me pare) a quello utilizzato per il test di verifica del funzionamento dello Shield: entrambi utilizzano la libreria “SoftwareSerial.h” e l’istruzione “sendData”, ma il secondo non supera la verifica.

Su internet e sui testi a mia disposizione non ho trovato risposte utili alla risoluzione del mio problema; l’unica segnalazione di un problema come il mio portava però alla individuazione dello stesso nella mancanza della parentesi graffa di chiusura del loop.

Allego i miei due sketch (Serial_WIFI_prova e DHT_test_prova) nella speranza che qualcuno mi possa dare utili indicazioni.

Serial_WIFI_prova

*********************
ESP8266 as a TCP Servicer
*********************/
#include<SoftwareSerial.h>

//Create a new softSerial object,rx:5,tx:6
SoftwareSerial softSerial1(5, 6);
#define DEBUG true
#define SSID "HUAWEI_B818_8B08"  // your ssid
#define PASS "xxxxxx" //pass word

void setup()
{
  Serial.begin(115200);
  softSerial1.begin(115200); // your esp's baud rate might be different
   
  sendData("AT+CWMODE=3\r\n",1000,DEBUG); // configure as access point 
  sendData("AT+RST\r\n",2000,DEBUG); // reset module
  sendData("AT+CWJAP=\"HUAWEI_B818_8B08\",\"xxxxxx\"\r\n",5000,DEBUG);
  delay(1000);
  sendData("AT+CIFSR\r\n",1000,DEBUG);// get ip address
  sendData("AT+CIPMUX=1\r\n",1000,DEBUG); // configure for multiple connections
  sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // turn on server on port 80
}
 
void loop()
{  
  if(softSerial1.available()) // check if the esp is sending a message 
  {
    if(softSerial1.find("+IPD,"))
    {
     delay(1000);                   
     int connectionId = softSerial1.read()-48; // subtract 48 because the read() function returns 
                                           // the ASCII decimal value and 0 (the first decimal number) starts at 48
     
     String webpage = "<h1>Hello,This is Makerfabs!</h1>";
 
     String cipSend = "AT+CIPSEND="; 
     cipSend += connectionId;
     cipSend += ",";
     cipSend +=webpage.length();
     cipSend +="\r\n"; 
     
     sendData(cipSend,1000,DEBUG);
     sendData(webpage,1000,DEBUG);
    }
  }
}

DHT_test_prova

#include<SoftwareSerial.h>

#define DHTPIN 2
#define RXPIN 5
#define TXPIN 6

#define BAUDRATE 9600
#define DHTTYPE DHT11

SoftwareSerial mySerial(RXPIN, TXPIN);
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(BAUDRATE);
  mySerial.begin(BAUDRATE);
  dht.begin();

  delay(2000);
  Serial.println("Begin");

  sendData("AT", 3000);
  sendData("AT+GMR", 3000);
  sendData("AT+CWMODE=1", 3000);
  sendData("AT+CWJAP=\"HUAWEI_B818_8B08\",\"5991J2NL0R5\"",3000);
}

void loop() {
  delay(10000);
  String temp = "AT+HTTPCLIENT=2,0,\"http://api.thingspeak.com/updater?api_key=xxxxxxxxxxxxx=";
  int temperature = dht.readTemperature();
  int humidity = dht.readHumidity();
  temp = temp + temperature + "&field2=" + humidity + "\",,,1";
}

Si prega di utilizzare la lingua inglese nella parte inglese del forum. La domanda è stata spostata nella parte italiana del forum.

@elcamm:

:warning:
Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato. Grazie.

@elcamm:

... fosse anche per una sola riga, come richiesto al punto 7 del REGOLAMENTO, il codice va racchiuso tra i tag CODE, per cui, cortesemente edita il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita :pencil2: che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona <code/> nella barra degli strumenti per contrassegnarla come codice. Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmd T su un Mac, sempre all'interno del IDE).

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà sistemato il codice come indicato, nel rispetto del regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farlo al più presto. :wink:

Buongiorno,

essendo un nuovo iscritto, e quindi poco pratico del forum, non avendo ancora ricevuto alcun riscontro al quesito da me posto, vorrei cortesemente sapere se le correzioni apportate alla mia richiesta sono sufficienti affinché la stessa venga presa in carico dal forum stesso.

Grazie infinite

@elcamm:
La richiesta è normalmente visibile ... purtroppo bisogna avere pazienza ed aspettare che qualcuno che abbia un qualche suggerimento per il tuo problema abbia il tempo di rispondere.

Considera che qui TUTTI (inclusi i moderatori) sono volontari che svolgono questa attività nei ritagli di tempo, quindi ... i tempi di risposta non sono garantiti. :confused:

Guglielmo

Grazie, il mio non era un sollecito, volevo solo sapere se la mia richiesta era conforme o meno al regolamento.

Elio

1 Like