Sketch fascicolo ESP8266 La Scheda e le Applicazioni



ERRATA CORRIGE (valida solo per la prima edizione – dalla seconda edizione, ottobre 2016, queste imprecisioni sono state corrette)
fascicolo ESP8266 – La scheda e le applicazioni

Nello schema a pag. 44 mancano le resistenze in serie ai LED (opzionali) collegati alle uscite 4 e 11 dell’integrato CD4093. Inserire in serie a ciascun Led una resistenza da 330 ohm, od omettere del tutto la presenza dei Led.

Tra lo schema di pag 16 e la disposizione dei componenti di pag 18 non c’è corrispondenza nella numerazione delle resistenze e dei condensatori. La semplicità del circuito e il fatto che le tre resistenze intorno alla schedina abbiano tutte lo stesso valore (solo quelle dell’alimentatore differiscono) non dovrebbe dare adito a dubbi, ma per completezza ecco la corrispondenza tra i due schemi:
pag 18 R2 pag 16 R3
pag 18 R3 pag 16 R5
pag 18 R1 pag 16 R4
pag 18 R4 pag 16 R1
pag 18 R5 pag 16 R2

pag.18 C1 pag 16 C2
pag.18 C2 pag 16 C1
NOTE ALLA IV EDIZIONE:
– da circa metà del 2017 il servizio DDNS descritto a pagina 63 del libro ha smesso di funzionare.
– da luglio 2017 la società di Massimo Banzi ha acquisito tutti i marchi Arduino. (qui il comunicato ufficiale: https://blog.arduino.cc/2017/07/28/a-new-era-for-arduino-begins-today/). Non ha quindi più senso parlare di Genuino (la versione Arduino che era nata per i mercati fuori dagli USA), ma nuovamente si tornerà a parlare solamente di Arduino.

Nella IV edizione del libro, settembre 2017, sono state fatte anche queste correzioni, indicando un nuovo servizio DDNS funzionante (no-ip.com) ed eliminando i riferimenti a “Genuino”.

ERRATA CORRIGE PAG.34

Nello schema di pagina 34 il transistor darlington BC527 è stato disegnato capovolto: per ovvi motivi è il terminale C che va collegato a massa, mentre E (quello con la freccetta) è collegato verso il relé. Ci scusiamo della svista grafica.



 

//—————————————–
//fascicolo ESP8266 – Sandit Libri
//Progetto attiva e disattiva uscita
//sketch pag 48 e seguenti
//—————————————–

#include <ESP8266WiFi.h>

const char* ssid = “ssid”; // Nome della rete (ssid)
const char* password = “passw”; // Password della rete

int ledPin = 2; // GPIO2
WiFiServer server(86); //imposta la porta dopo l’indirizzo IP

void setup() {
Serial.begin(9600);
delay(10);

pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);

// Connessione alla rete WiFi
Serial.println();
Serial.println();
Serial.print(“Connesso a “);
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}
Serial.println(“”);
Serial.println(“WiFi connesso”);

// Avvia il server
server.begin();
Serial.println(“Server avviato”);

// Visualizza l’indirizzo IP
Serial.print(“Usa questo URL per connetterti: “);
Serial.print(“http://”);
Serial.print(WiFi.localIP());
Serial.println(“/”);

}

void loop() {
// Controlla se il client è connesso
WiFiClient client = server.available();
if (!client) {
return;
}

// Attendi fino a che il client non invia dei dati
Serial.println(“nuovo client”);
while(!client.available()){
delay(1);
}

// Leggi la prima linea della richiesta
String request = client.readStringUntil(‘\r’);
Serial.println(request);
client.flush();

// Verifica la richiesta
int value;
if (request.indexOf(“/LED=ON”) != -1) {
digitalWrite(ledPin, HIGH);
value = HIGH;
} else if(request.indexOf(“/LED=OFF”) != -1){
digitalWrite(ledPin, LOW);
value = LOW;
}

// Restituisci la risposta
client.println(“HTTP/1.1 200 OK”);
client.println(“Content-Type: text/html”);
client.println(“”); // da non dimenticare
client.println(“”);
client.println(“”);

client.print(“Il pin 2 e’: “);

if(value == HIGH) {
client.print(“On”);
} else {
client.print(“Off”);
}
client.println(”

“);
client.println(“Un clic su ON attiva il pin 2
“);
client.println(”
“);
client.println(“Un clic su OFF disattiva il pin 2
“);
client.println(“”);

delay(1);
Serial.println(“Client disconnesso”);
Serial.println(“”);

}

//——————————————-//

//—————————————–
//fascicolo ESP8266 – Sandit Libri
//Progetto temperatura e umidità
//sketch pag 54 e seguenti
//—————————————–

#include <ESP8266WiFi.h>
#include <DHT11.h>

const char* ssid = “ssid”; // Nome della rete (ssid)
const char* password = “passw”; // Password della rete

int pin = 2;

WiFiServer server(80); //qui si può impostare la porta
DHT11 dht11(pin);

double Fahrenheit(double celsius) {
return ((double)(9 / 5) * celsius) + 32;
}

double Kelvin(double celsius) {
return celsius + 273.15;
}

void setup() {
Serial.begin(9600);
delay(10);
Serial.println();

// Connessione al WiFi
WiFi.mode(WIFI_STA);
Serial.println();
Serial.println();
Serial.print(“Connesso a: “);
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}
Serial.println(“”);
Serial.println(“WiFi ok!”);

// Fai partire il server
server.begin();
Serial.println(“Server avviato”);

// Scrivi l’indirizzo IP
Serial.println(WiFi.localIP());
}

void loop() {
int err;
float temp, humi;
if ((err = dht11.read(humi, temp)) == 0)
{
Serial.print(“temperatura:”);
Serial.print(temp);
Serial.print(” umidità:”);
Serial.print(humi);
Serial.println();
}
else
{
Serial.println();
Serial.print(“Errore N. :”);
Serial.print(err);
Serial.println();
}
WiFiClient client = server.available();
client.println(“HTTP/1.1 200 OK”);
client.println(“Content-Type: text/html”);
client.println(“Connection: close”); // la connessione viene chiusa dopo la risposta
client.println(“Refresh: 5”); // rinfresca la pagina dopo 5 secondi
client.println();
client.println(“”);
client.println(“”); client.println(“\n”);
client.println(“ESP8266 e sensore DHT11”);
client.println(“\n”);
client.println(”

ESP8266 e sensore DHT11

“);
client.println(”

Umidità / Temperatura

“);
client.println(”

");
client.print("Umidità (%)       : ");
client.println((float)humi, 2);
client.print("Temperatura (°C)  : ");
client.println((float)temp, 2);
client.print("Temperatura (°F)  : ");
client.println(Fahrenheit(temp), 2);
client.print("Temperatura (°K)  : ");
client.println(Kelvin(temp), 2);
client.println("

“);
client.print(”

\n”);
delay(DHT11_RETRY_DELAY); //ritardo per nuova lettura
}

 

//——————————————-//