Ethical DIY

Progetti hardware & software etici


Menu orizzontale con sottomenu CSS








 

Progetti hardware
Basetta sperimentale per ESP01

Dati costruttivi della basetta sperimentale

Download dei file necessari per la realizzazione della basetta sperimentale



Informazioni di base

Come installate la IDE di Arduino

Configurazione di ESP01

Caricamento dei programmi

Le librerie necessarie



Programmi vari

Creare un Web server

Temperatura e umidità con
DHT11/DHT/21/DHT22


Controllo di 1/2 relè via WiFi

DHT11/DHT21/DHT22 + 1 relè

Una stazione meteorologica con BMP280

Ricevere la data e l'ora esatta

Una stazione meteorologica con OpenWeatherMap

Monitorare la qualità dell'aria con BMP680



Programmi con Telegram

Verifica l'apertura di uno/due vani

Controllo di due relè



Programmi con ThingSpeak




 
Programmi con in Db Firebase




Programmi con Mosquitto (MQTT)







ESP01 si trasforma in
un perfetto orologio


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 ESP01 (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 ESP01. Tuttavia in questo caso è necessario un ulteriore modulo, il quale però può nel tempo non essere del tutto preciso;


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è ESP01 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: l'ora esatta con un server NTP



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è ESP01 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.

Ecco una breve spiegazione, dei dati che si riceveranno, per quanto siano piuttosto intuitivi:

Epoch time: è un calcolo convenzionale dei secondi trascorsi dal 01/01/1970 al momento in cui si verifica la misura del tempo
Formatted time: restituisce l'ora attuale nel formato hh:mm:ss
Week day: il giorno della settimana
Curent date: la data odierna nel formato dd/mm/yyyy
Oltre all'ora e alla data formattata, si ricevono anche i singoli dati relativi a ore, minuti, secondi, ecc.

Nota: per vedere i dati sul monitor seriale, ricordarsi di impostare il baud rate a 115200 bps.



Il secondo progetto: visualizzazione dell'ora e data su di un display OLED


ora

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à.

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