Angolo del Geek: Arduino + Temperatura + WiFi ESP8266 + Thingspeak

Qualche esperimento con Arduino Uno e la scheda Wifi ESP8266 da 5 euro.
Ho scaricato la libreria per ESP8266 , ho collegato la scheda Wifi stando accorto di mettere i due PIN VCC e CH_PD al 3.3V della scheda arduino (altrimenti seguite questi schemi di collegamento se avete solo il +5v), ho collegato un sensore di temperatura (quello incluso nello starterkit Arduino oppure uno da 2 euro. 3 Pin di cui il centrale è analogico e l’ho collegato all’entrata A0 dell’Arduino Uno.
Poi mi sono fatto account gratuito su thingspeak e ho generato la API Key da inserire nel codice di Arduino.


#include < stdlib.h>
#include < SoftwareSerial.h>
#define SSID "" // inserire qui SSID
#define PASS "" // inserire qui Password WiFi
#define IP "184.106.153.149" // thingspeak.com
#define HOST_PORT (80)
const int sensorPin= A0;
//const float baselineTemp = 25.5; // per test
#include "ESP8266.h"
SoftwareSerial monitor(3,2); // RX, TX
ESP8266 wifi(monitor);
void setup()
{
Serial.begin(9600);

Serial.println(wifi.getVersion().c_str());

if (wifi.createTCP(IP, HOST_PORT)) {
Serial.print("create tcp ok\r\n");
delay(2000);

} else {
Serial.print("create tcp err\r\n");
delay(10000);
setup();
}
}

void loop(){

int sensorVal=analogRead(sensorPin);
float voltage = (sensorVal/1024.0)*5.0;
float temperature = (voltage - .5)*100;
httpRequest(String(temperature));
delay(5*60000); //aggiornamento ogni 2 minuti

}

void httpRequest(String tenmpF) {
wifi.releaseTCP();
uint8_t buffer[128] = {0};
if (wifi.createTCP(IP, HOST_PORT)) {

String prova="GET /update?key=&field1="+tenmpF+" HTTP/1.1\r\nHost: 184.106.153.149\r\nConnection: close\r\n\r\n";

int str_len = prova.length() + 1;

// Preparo il character array (buffer)
char hello[str_len];
prova.toCharArray(hello, str_len);
Serial.print(hello);

wifi.send((const uint8_t*)hello, strlen(hello));

uint32_t len = wifi.recv(buffer, sizeof(buffer), 10000);
Serial.print((char)buffer[4]);

}
else {
Serial.println("connection failed");
Serial.println("disconnecting.");
Serial.print("release tcp err\r\n");
wifi.releaseTCP();
}
}

Ecco il risultato aggiornato ogni 2 minuti (finchè non lo toglierò 🙂 :

Potrebbero interessarti anche...

16 Risposte

  1. Martin ha detto:

    Credo che nel codice manchino diverse parti. Ad esempio i primi “include” sono privi della classe inoltre la variabile wifi non usa mai in nome della rete e la password per connettersi al router. Potrebbe ripostare il testo corretto. Sto ricercando di riprodurre quanto da lei fatto ma non riesco a far compilare il codice.

    Grazie in anticipo.

  2. Massimo ha detto:

    Salve , ma il sensore di Temperatura , quale utilizzare ? Non lo vedo descritto nel TUTORIAL .

    Grazie. 🙂

  3. Arrigo ha detto:

    Sto iniziando ad usare l’ESP12 e ho provato a compilare lo sketch ma mi dice che non trova stdlib.h e SofwareSerial.h
    Sto usando arduino 1.6.5
    cosa sto sbagliando? grazie

  4. Arrigo ha detto:

    continuando a controllare ho trovato che entrambi gli include hanno uno spazio davanti, va tolto, ora però mi da errore con ESP8266.h

  5. Claudio ha detto:

    Ciao ma l’ESP quale firmware deve avere e come deve essere programmato?

  6. matteo ha detto:

    non va da questo errore:
    xxx.ino:22:21: error: no matching function for call to ‘ESP8266::ESP8266(SoftwareSerial&)’

  7. giovanni marletta ha detto:

    no matching function for call to ‘ESP8266::ESP8266(SoftwareSerial&)’
    nella libreria non sembra esserci la funzione “monitor”
    ???

    uso IDE 1.6.8
    a te funziona ?

  8. Stefano Cominini ha detto:

    Dove posso trovare la libreria stdlib.h? Non riesco a trovarla da nessuna parte.

  9. Vincenzo ha detto:

    ciao Piersoft,
    non so se può interessarti però su ebay c’è un nuovo prodotto per comunicare in modo facile tra arduino e blynk (app per pilotare il vostro hardware da smartphone e tablet) con librerie per arduino,
    se interessa basta scrivere su ebay:

    arduino 5 minuti

    se puoi mi fa piacere sapere se può essere una buona idea.

Rispondi