Nei seguenti esempi utilizzeremo l’ esp8266 NODEMCU, ma se voi utilizzate un chip diverso ricordatevi di controllare la mappatura dei pin dell’ esp8266,
dato che sono differenti da quelli dell’arduino. [Mappatura dei pin]
Il motivo per cui il LED è connesso al pin D7 del NodeMCU esp8266 è il sopra citato: la mappatura del NodeMCU esp8266 è differente da quella dell’arduino quindi il pin D7 corrisponde al pin 13 dell’arduino.
La lettera D segnala i pin del NodeMCU esp8266, mentre GPIO segnala i pin dell’arduino (vedi sopra).
Codice da inserire in Arduino IDE:
void setup() {
// dichiariamo il pin 13 come pin di output
pinMode(13, OUTPUT);
}
// la funzione loop si ripeterà all’infinito una volta concluso il primo ciclo
void loop() {
digitalWrite(13, HIGH); // accende il led (HIGH indica il passaggio di corrente)
delay(1000); // ritardo manualmente impostato (in millisecondi)
digitalWrite(13, LOW); // spegne il led (LOW indica l’assenza di corrente)
delay(1000); // vedi delay precedente
}
Rappresentazione del circuito:
#include
const char* ssid = “Nome della rete Wifi”;
const char* password = “Password della rete wifi”;
int ledPin = 13; // GPIO13 -> D7 su arduino
WiFiServer server(80);
void setup() {
Serial.begin(115200); //inizializza il monitor seriale
delay(10); //che si attiva con la “lente” in alto a dx
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
// Connetti alla rete Wifi
Serial.print(“Connettendo alla rete “);
Serial.println(ssid);
WiFi.begin(ssid, password); // credenziali per connettersi
while (WiFi.status() != WL_CONNECTED) {
Serial.print(“.”);
}
Serial.println(“”);
Serial.println(“WiFi connected”);
// Inizializza il server
server.begin();
Serial.println(“Server inizializzato”);
//Stampa l’indirizzo IP
Serial.print(“stampa l’URL a cui connettersi “);
Serial.print(“http://”);
Serial.print(WiFi.localIP());
Serial.println(“/”);
}
void loop() {
// controlla se c’è un client (dispositivo che vuole connettersi)
WiFiClient client = server.available();
if (!client) {
return;
}
//Stampa solo se il client esiste ed è disponibile
Serial.println(“nuovo client”);
while(!client.available()){
delay(1);
}
// legge la prima riga di richiesta
String request = client.readStringUntil(‘\r’);
Serial.println(request);
client.flush();
// controlla la richiesta
int value = LOW;
if (request.indexOf(“/LED=ON”) != -1) {
digitalWrite(ledPin, HIGH);
value = HIGH;
}
if (request.indexOf(“/LED=OFF”) != -1) {
digitalWrite(ledPin, LOW);
value = LOW;
}
// accende o spegne il led dipendendo dalla richiesta
//digitalWrite(ledPin, value);
// Ritorna una risposta
client.println(“HTTP/1.1 200 OK”);
client.println(“Content-Type: text/html”);
client.println(“”); //serve per separare
client.println(“”);
client.println(“”);
client.print(“Il LED è: “);
if(value == HIGH) {
client.print(“On”);
} else {
client.print(“Off”);
}
client.println(“
”);
delay(1);
Serial.println(“Client disonnected”);
Serial.println(“”);
}
Controllare il monitor seriale per l’URL a cui connettersi per avere la pagina web con i bottoni per controllare il LED.