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";
}