Ethical DIY

Progetti hardware & software etici


Menu orizzontale con sottomenu CSS








 


Progetti hardware

Basetta sperimentale per ESP8266

Assemblare la basetta sperimentale

Configurazione e piedinatura di ESP8266

Download dei dati necessari per la realizzazione della basetta sperimentale




Informazioni di base:

- Come installare la IDE di Arduino
- Configurazione della IDE 
- Caricamento dei programmi
- Il problema dei permessi sulle porte seriali con Linux
-Procedura con la basetta sperimentale per ESP01
- Come caricare le librerie necessarie
- Piedinatura di ESP01
- Piedinatura di ESP8266

I sensori/attuatori compatibili con ESP01
I sensori/attuatori compatibili con ESP8266



Programmi generici

Programmi vari
- Test dellabasetta sperimentale
- Creare un web server
    - Hello word
    - Accendi un led!
    - Pagina con login e password
- Ricevere la data e l'ora esatta
    - sul monitor seriale
    - sul display Oled

DHT11/DHT21/DHT22 e RELE'
- Temp. e umidità con un DHT11/21/22
- Temp. e umidità con due DHT11/21/22
- Controllo du un relè con DHT11/21/22


ESP8266 e Bluetooth
- controllo di più led e relè via Bluetooth
- controllo di un led a tre colori
- controllo vocale di più led/relè

Web server e ora esatta
- creare  più web server (3)
- ricevere data e ora esatta (2)

Controllare dei relè via WiFi
- controllo di 1/2/4/5 relè via WiFi (3)

Stazione meteorologica/qualità dell'aria
- staz. meteorologica con BMP280 (3)
- staz. meteorologica con BME280
- staz. meteorol. con OpenWeatherMap
- qualità dell'aria con BME680
- qualità dell'aria con SGP30



Programmi con Telegram

Verificare l'apertura di uno o più porte

Controllo di uno o più relè



Programmi con ThingSpeak

Una stazione meteorologica con BMP680

Monitorare la qualità dell'aria con GSP30



Programmi con il DB Firebase

Gestire alcuni led/relè

Gestire led/relè con Mit App Inventor 2



Programmi con MQTT (Mosquitto)

Inviare /ricevere dati per mezzo di MQTT



Programmi con scheda Bluetooth

Controllo led/relè via terminale

Controllo led/relè con switch

Controllo cromatico di un led

Controllo a mezzo vocale



Programmi con LittleFS





Link utili

Visualizzazione di link utili per ESPxxx






 















ESP8266 - ESP12E
Programmi vari

In questa pagina sono stati inseriti alcuni programmi di carattere vario, utili anche per testare la scheda e le sue potenzialità.
Ecco i programmi presenti in questa pagina:







Test degli switch e dei led integrati nella basetta sperimentale




swled

Abbiamo pensato di inserire nella basetta sperimentale anche un paio di touch-switch (BT1/BT2) e tre led di colori diversi (LED1, LED2, LED3).
Gli switch sulla basetta sono utili per esempio quando si deve attivare un attuatore, come un motore o un relè sia in locale che sulla rete Wi-Fi; i tre led sono sia degli indicatori luminosi a sè, ma sono in grado si simulare perfettamente l'accensione di un attuatore, come ad esempio un relè.
Per aumentare la loro flessibilità, non sono collegati direttamente alle porte di ESP8266, ma confluiscono su uno zoccolo a cinque pin "AUX" (due per gli switch e tre per i led), che possono essere collegati con dei brevi connettori maschio-maschio a qualsiasi porta della nostra scheda.



svledpcb
Il rendering della basetta sperimentale in scala 1:1
Gli switch e i led sono siulla parte sinistra in basso della basetta,
mentre i connettori (presenti sullo zoccolo "AUX") si trova sulla parte destra,
proprio sopra al connettore "DATA" con cui possono interfacciarsi.



In questo programma di test, i led si interfacciano con ESP8266
usando le seguenti porte:

LED1 --> GPIO4
LED2  --> GPIO5
LED3 --> GPIO14
BT1  --> GPIO13
BT2  --> GPIO12

Come si può vedere dall'immagine si è semplicemente ponticellato il connettore corrispondente del led o dello switch inserite su "AUX" con una delle potre di ESP8266 presenti sul connettore "universale" DATA.

aux



Il programma è assolutamente banale, ma permette di verificare se tutto funziona regolarmente dopo l'assemblaggio dei componenti sulla basetta.
Appena si alimenta l'ESP8266 presente sulla basetta, il led "Led4" dovrebbe accendersi: è semplicemente quello che segnala che c'è tensione sul circuito, ed esso rimarrà sempre acceso fino a quando si alimenta il microcontroller.
Dopo aver inserito i ponticelli tra "AUX" e "DATA", anche "Led2" dovrebbe essere acceso. Se si preme "BT1", si accenderanno contemporaneamente "Led1" e "Led3" e si spegneranno appena si allontanerà il dito dalla superficie  sensibile dello switch. Viceversa, se si avvicina il dito a "BT2", "Led2" si spegnerà e si riaccenderà quando si allontanerà il dito.
Naturalmente si può scrivere qualcosa di più creativo...

Clicca qui per visualizzare il programma

Clicca qui per scaricare il programma in formato ".zip"














Creare un web server




La creazione di un webserver è il primo passo per scambiare informazioni da e per la nostra scheda ESP8266 e la propria rete WiFi o Internet.
Questo programma semplicemente crea un server web, a cui il nostro router attribuisce un indirizzo IP del tipo 192.168.1.xxx. Quando il server sarà stato caricato, si potrà collegarsi ad esso aprendo un qualsiasi browser da pc, smartphone o tablet e leggere le informazioni o inviare dei comandi, in base a come sarà stato impostato il programma. Nel primo caso, scriverà semplicemente un breve messaggio sulla pagina web; nel secondo un pulsante presente sulla pagina web accende/spegne un led presente sulla basetta sperimentale.
Questi sketch forniscono delle basi su cui poi creare un progetto personalizzato. Anche in queste pagine si trovano vari programmi che usano un web server.



Il primo esempio: "hello world"



Questo breve programma avvia un server web, verifica la correttezza del collegamento e mostra una breve frase sul nostro browser.
E' necessario inserire SSID e password.

addr




Aprendo il monitor seriale, si visualizza l'indirizzo che il router attribuisce alla nostra scheda.


Ed ecco la scritta che appare sul nostro browser:


hello



Clicca qui per visualizzare il programma.

Clicca qui per scaricare il programma in foirmato ".zip".

I programmi sono stati presi e leggermente modificati dal sito:
https://tttapa.github.io/ESP8266/Chap10%20-%20Simple%20Web%20Server.html
ringraziamo i curatori per gli utili esempi.













Il secondo esempio: accendi e spegni un led!



Come per il primo programma, è necessario inserire la SSID (= il nome esatto della propria rete) e la password di connessione alla rete WiFi. Avviato il programma, aprire il monitor seriale, verificare se il web server si è connesso e prendere nota dell'indirizzo IP che è stato assegnato alla nostra periferica. Abitualmente il DHCP attribuisce sempre lo stesso indirizzo a una determinata periferica.
In questo programma, il pulsante "Toggle LED" accende/spegne alternativamente il leda bordo della ESP8266.


toggle
La videata del programma
per la gestione di un led



Ma al di là di questa semplice configurazione, abbiamo pensato di andare un po' oltre... La porta che gestisce il led intenno di ESP8266 è GPIO2. Ma a questa porta è connesso anche uno zoccolo, DG2, che possiamo usare per gestire una qualche periferica: in questo caso abbiamo collegato un relè KY-019 e per esagerare, uno dei led presenti sulla nostra basetta: LED3 è stato connesso attraverso un ponticello tra "AUX" e DATA, anch'esso alla porta GPIO2.
ky019
Un relè KY-019



ledre

Lo schema elettrico relativo al progetto per il web server.
Sia il relè che il led (attraverso una resistenza da 220 ohm) sono collegati al piedino GPIO2 del nostro ESP8266.



web2
Il rendering della basetta sperimentale in formato reale.
Il relè è connesso sullo zoccolo DG2.
Il led "LED3" è connesso alla porta GPIO2 (tra "AUX" e "DATA".



Il led onboard su ESP8266 funziona con logica inversa: si accende quando laporta GPIO2 è a livello logico "LOW" e si spegne quando viene portata a "HIGH". Mentre iil relè KY-019 e il led "LED3" si accendono quando la porta è in stato logico "HIGH" e si spengono quando è "LOW".
Perciò quando si preme il tasto "Toggle LED" si spegne il led onboard e si accendono il relè e LED; premendo ancora una volta il pulsante la situazione si inverte, e così via...

Clicca qui
per visualizzare il programma.

Clicca qui
per scaricare il programma in foirmato ".zip".

Nota: se si intende collegare il relè per comandare una periferica connessa alla rete elettrica, verificare di avere le conoscenze adatte oppure di rivolgersi a un professionista qualificato.

I programmi sono stati presi e leggermente modificati dal sito:
https://tttapa.github.io/ESP8266/Chap10%20-%20Simple%20Web%20Server.html
ringraziamo i curatori per gli utili esempi.













Terzo esempio: Inserire una pagina con richiesta di  utente e password in un web server



In questo terzo e ultimo programma sulla creazione di un web server, con la creazione di una pagina web che richiede utente e password per poter accedere al suo contenuto.



Come nei due programmi precedenti, è necessario inserire la SSID della propria rete WiFi e la password.
Lanciato il programma, verificare sul monitor seriale l'indirizzo IP della scheda.
Aprire il browser e inserire l'indirizzo IP. Apparirà una schermata simile a quella che appare nel riquadro di destra.
Come suggerito, il login e la password di default sono rispettivamente "John Doe" e "password123", che va modificata, intervenendo nello sketch, in base alle proprie preferenze.
Nel caso di errore, apparirà il messaggio opportuno; altrimenti si entrera nella pagina attuale, piuttosto vuota...

login



Clicca qui per visualizzare il programma

Clicca qui per scaricare il programma in formato ".zip"

Le istruzioni dettagliate, anche per questo progetto, possono essere reperite a questo link esterno:
https://tttapa.github.io/ESP8266/Chap10%20-%20Simple%20Web%20Server.html
ringraziamo i curatori per gli utili esempi.














Ricevere la data e l'ora esatta




L'ora esatta sembra un problema banale, ma a volte è necessario ottenerla in modo molto preciso, per esempio per sincronizzare due eventi, o alcuni apparecchi che devono lavorare in sincronia.




clock
Come appare l'orario
sul display OLED
Ci sono due modi per ottenere l'ora con ESP8266 (che al suo interno non possiede un modulo orologio):

1 - collegarlo con un modulo RTC, quale un DS-1307, che lavorando con protocollo I2C è compatibile con il nostro ESP8266. Tuttavia in questo caso è necessario un ulteriore modulo, il quale però può nel tempo non essere del tutto preciso, oppure potrebbe scaricarsoi la batteria di tampone che mantiene il calcolo anche quando ESP8266 è spento;


2 - collegarsi a un server NPT, che fornisce l'ora esatta a tutta una serie di apparati che si collegano alla rete, quali server, cellulari, ecc. In questo caso, non avremo bisogno di ulteriori moduli, ma dovremo essere collegati a Internet a mezzo WiFi, cosa alquanto semplice, poichè ESP8266 ha questa funzione nativa.

ds1307
DS-1307




I progetti con un server NTC

In questa pagina, vorremmo preentare due progetti, con la stessa base:
nel primo, il nostro ESP01 si collega a un server NTP, e la data, l'ora e il giorno della settimana verrà visualizzato sul monitor seriale. In questo modo, lo sketch può essere integrato in uno più complesso, in cui per esempio è necessario sapere l'ora esatta in cui succede un determinato evento;
nel secondo, l'ora, ecc. viene visualizzata su di un display OLED, trasformando il nostro ESP01 in un perfetto orologio digitale.



Il primo progetto: visualizzazione di data e ora sul monitor seriale



Per prima cosa, sarà necessario installare le librerie necessarie, nel caso non fossero ancora presenti nella cartella di Arduino.  Esse sono:
ESP8266WiFi.h
NTPClient.h
WiFiUdp.h
  Se non fosseroro già presenti nell'archivio delle librerie, la prima opzione sarà di tentare di scaricarle per mezzo della IDE di Arduino (Sketch/Include library/Manage libraries).
N.b.: provare sempre a scaricare le librerie dalla IDE di Arduino, in quanto avrai sempre accesso alle ultime versioni e solo in caso negativo utilizzare quelle inserite in questa pagina.

Clicca qui per  visualizzare il programma

Clicca qui per scaricare scaricare il file
in formato ".zip".

Dopo il caricamento e l'attesa di qualche secondo necessario affinchè ESP8266 si agganci alla rete Wi-Fi, sul monitor seriale apparirà qualcosa di simile alla videata che appare sul lato destro

Nota: ricordati di inserire nello sketch il nome e la password della tua rete WiFi.






NTC

Ecco come appaiono i dati sul serial monitor.







ssid









Il secondo progetto: visualizzazione di data e ora su di un dispaly Oled




clock
Come appare l'orario
sul display OLED

Il secondo programma presentato in questa pagina ricalca fedelmente il precedente; solamente sono state inserite alcune righe del programma per potersi interfacciare con un display OLED SSD1306 128x64 dot, che mostra la data, il giorno della settimana e l'ora esatta, e si aggiorna ogni secondo.
In questo modo si può creare un orologio digitale molto preciso in uno spazio veramente esiguo.
Oltre alle librerie necessarie per il primo programma, sono necessarie anche le seguenti, per poter gestire il display OLED:
Wire.h;
Adafruit_SSD1306;
Adafruit_GFX;
Inoltre si è utilizzato un diverso font di caratteri, che troverete nella libreria Adafruit_GFX modificata per l'occasione. Se invece si usa la libreria scaricata dalla IDE di Arduino, sarà necessario integrare, inserendo manualmente il font di caratteri nella cartella "Fonts" della libreria "Adafruit_GFX, naturalmente dopo averlo scompattato:
FreeSerif9pt7b.h

Se si usa la basetta sperimentale, illustrata nella pagina relativa, il dislay OLED andrà inserto nel connettore I2C3, rispettando la polarità.



clock_1306

Lo schema elettrico  per il collegamento deldispaly Oled alla scheda ESP8266



rtc 1306
La basetta sperimentale con il display Oled in formato reale.
Attenzione a inserire il displayrispettando la corretta piedinatura.






Clicca qui per visualizzare il programma

Clicca qui per  scaricare scaricare il file in formato ".zip".

Se si desiderano informazioni più dettagliate sui programmi presentati in questa pagina, aprire questo link (esterno al nostro sito):
https://randomnerdtutorials.com/esp8266-nodemcu-date-time-ntp-client-server-arduino/
Ai curatori di "Randomnerdtutorials" va tutta la mia gratitudine per la quantità, varietà  e sopratutto per la qualità dei progetti offerti.
Il primo programma di questa pagina è stato integralmente copiato da quello presentato sul loro sito e  poi leggermente modificato per adattarlo alla nostra lingua; l'integrazione del display oled nel progetto invece é (quasi del tutto) originale.  :-D







Per contatti: info@ethicaldiy.org