# Appunti sui moduli ESP8266-12F
<abstract>
Appunti vari sui miei esperimenti con i moduli ESP8266-12F
</abstract>
Per le prove ho usato un modulo AZ-Delivery D1 mini con NodeMCU ESP8266-12F, 100% compatibile con Wemos D1 mini Wifi
acquistato su Amazon Prime a circa 5 euro l'uno:
* [AZ-Delivery D1 mini su amazon.it](https://www.amazon.it/gp/product/B0754N794H/ref=ppx_yo_dt_b_asin_title_o04_s00?ie=UTF8&psc=1)
<img src="./d1mini.jpg" width="320px">
Per le prove conil sensore di umidità, temperatura e pressione ho usato un modulo AZ-Delivery GY-BME280
acquistabile su Amazon a circa 6 euro:
* [AZ-Delivery GY-BME280 su amazon.it](https://www.amazon.it/gp/product/B07FS95JXT/ref=ppx_yo_dt_b_asin_title_o04_s00?ie=UTF8&psc=1)
<img src="./bmp280.jpg" width="180px">
Pinout
<img src="./d1-mini-pinout.png" width="640px">
## Installazione ambiente di sviluppo Arduino (su Windows 10)
Scaricare l'IDE Arduino da questo link:
* [Download the Arduino IDE](https://www.arduino.cc/en/Main/Software) Provato con la versione 1.8.11
Dal menu <b>File->Impostazioni</b> inserire nel campo <b>URL aggiuntive per il gestore schede</b> la seguente URL:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Installare la scheda <b>esp8266</b> dal menu <b>Strumenti->Scheda->Gestore schede</b>
### Installazione libreria MQTT
Scaricare lo zip del repository GitHub di questa libreria:
* <https://github.com/Imroy/pubsubclient>
Quindi installare la libreria nell'IDE Arduino dal menu <b>Sketch->#Include Libreria->Aggiungere Libreria da file ZIP</b>
### Installazione libreria BME280
Dal menu <b>Sketch->Gestione librerie</b> installa la libreria <b>Adafruit BME280 Library</b>
### Collegamento su USB
Inserire la scheda D1 mini alla porta USB del PC
Dal menu <b>Strumenti->Scheda</b> seleziona:
Wemos D1 R1
Dal menu <b>Strumenti->Porta</b> selezionare la porta seriale su USB assegnata al D1 mini. E' possibile vedere l'assegnazione
dal <b>Pannello di controllo di Windows->Dispositivi->Bluetooth e altri dispositivi</b>.
Con questa configurazione dovrebbe essere possibile compilare e trasferire sul D1 mini un programma Arduino.
## Applicazione temosensore WiFi
Collegare i moduli AZ-Delivery D1 mini e AZ-Delivery GY-BME280 in questo modo
| D1 mini | GY-BME280 |
|---------|-----------|
| D1 | SCL |
| D2 | SDA |
| G | GND |
| 3V3 | VIN |
Scaricare questo sorgente:
* [termosensor.ino](./termosensor.ino)
Settare le credenziali di accesso alla propria WiFi combiando queste righe di codice:
//----WIFI CONFIG ----
#define WIFI_SSID "acmetest" //your Wifi SSID
#define WIFI_PASSWD "acmetest" //your wifi password
Settare l'IP del server MQTT sulla propria rete ed il topic in cui scrivere i valori rilevati:
//----MQTT CONFIG ----
#define MQTT_SERVER "192.168.4.31"
#define MQTT_UNAME ""
#define MQTT_PASSW ""
#define MQTT_BROKER_PORT 1883 //MQTT BROKER listening port
#define MQTT_CLIENT_ID "S1"
#define MQTT_TOPIC "S1"
#define MQTT_TOPIC_T "S1/T"
# Display LCD 16x2 I2C
<img src="./lcd.jpg" width="340px">
Pinout LCD WO1602I-TFH-AT# (pin 1 a sinistra guardando il display con i pin in basso)
1 5V
2 NC
3 NC
4 5V
5 GND
6 SDA ----> D2 con 10K verso 3V3
7 SCL ----> D1 con 10K verso 3V3
8 RST ----> 3V3
K GND
A 3V3
* [lcd.ino](./lcd.ino)
* [Libreria per Arduino](https://forum.arduino.cc/index.php?topic=145424.0)
* [Datasheet](https://www.acmesystems.it/download/datasheets/LCD-1.pdf)
Pins
WeMos Arduino Use
D0 16 Red Led
D1 5
D2 4
D3 0 Blue button
D4 2
D5 14
D6 12
D7 13
D8 15
TX 1
RX 3
* [Pin numbering for WeMos D1 Mini](https://chewett.co.uk/blog/1066/pin-numbering-for-wemos-d1-mini-esp8266/)
## HC-SR04
<img src="./wemos-and-hcsr04_bb.png" width="320px">
#define echoPin D7 // Echo Pin
#define trigPin D6 // Trigger Pin
long duration, distance; // Duration used to calculate distance
void setup()
{
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
/* The following trigPin/echoPin cycle is used to determine the
distance of the nearest object by bouncing soundwaves off of it. */
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
//Calculate the distance (in cm) based on the speed of sound.
distance = duration/58.2;
Serial.println(distance);
//Delay 50ms before next reading.
delay(50);
}
* <http://www.esp8266learning.com/wemos-mini-hc-sr04-ultrasonic-sensor.php>
## Links
* <http://www.esp8266learning.com/wemos-mini-hc-sr04-ultrasonic-sensor.php>
* [Datasheet modulo ESP-12F](https://docs.ai-thinker.com/_media/esp8266/docs/esp-12f_product_specification_en.pdf)
* [Datasheet Bosch BME280](https://www.bosch-sensortec.com/products/environmental-sensors/humidity-sensors-bme280/)
* [Esempio MQTT](https://mancusoa74.blogspot.com/2017/02/mqtt-basic-per-esp8266.html)
* [Libreria per BME280](https://randomnerdtutorials.com/esp8266-bme280-arduino-ide/)
* <https://github.com/Imroy/pubsubclient>
* @article='ESP8266'
* @article='ESP32'
2018 Ⓒ TanzoLab