mercoledì 25 gennaio 2023

Modulo ESP8266 WiFi per Arduino: come collegarlo ed utilizarlo

Il modulo ESP8266 WiFi è un'opzione molto conveniente per aggiungere connessione WiFi ad un progetto basato su Arduino.

Con la sua semplicità di utilizzo e la sua versatilità, questo modulo può essere utilizzato in molti progetti diversi, dalle semplici di controllo remoto fino a progetti più complessi come i sistemi di domotica.

Per collegare il modulo ESP8266 WiFi ad una scheda Arduino, è sufficiente utilizzare i pin di alimentazione, GND, RX e TX.

Una volta collegato, è possibile utilizzare una serie di librerie per comunicare con esso attraverso il codice, come ad esempio la libreria ESP8266WiFi.

Il modulo ESP8266 WiFi può essere utilizzato in diversi progetti di automazione domestica, come ad esempio un sistema di controllo remoto per accendere e spegnere luci o dispositivi elettronici, un sistema di allarme casa connesso, un sistema di monitoraggio della temperatura e dell'umidità, o anche un robot controllato a distanza tramite WiFi.

In generale, il modulo ESP8266 WiFi è un'ottima scelta per aggiungere connessione WiFi ad un progetto basato su Arduino. La sua semplicità di utilizzo e la sua versatilità lo rendono adatto a molti diversi, rendendolo un'opzione ideale per molti progetti di automazione domestica, sistemi di controllo remoto progetti e sistemi di monitoraggio.

Ecco un esempio di codice per utilizzare il modulo ESP8266 WiFi con una scheda Arduino:

#include <ESP8266WiFi.h> const char* ssid = "NomeReteWiFi"; const char* password = "password"; void setup() { //inizializziamo la comunicazione seriale Serial.begin(115200); // Iniziamo la connessione alla rete WiFi specificata WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connessione in corso..."); } //stampiamo l'indirizzo IP assegnato dal router Serial.print("Indirizzo IP: "); Serial.println(WiFi.localIP()); } void loop() { // il tuo codice qui }


In questo esempio, il codice include la libreria ESP8266WiFi e specifica il nome della rete WiFi e la password per la connessione.

Nella funzione setup(), la scheda Arduino inizia la connessione alla rete WiFi specificata e, una volta collegata, stampa l'indirizzo IP assegnato dal router.

Nella funzione loop() è possibile inserire ulteriore codice per utilizzare il modulo ESP8266 WiFi in base alle esigenze del progetto.

In questo esempio ho utilizzato la funzione di stampa seriale per stampare l'indirizzo IP, ma ovviamente puoi utilizzare la comunicazione seriale per scambiare dati tra Arduino e altri dispositivi o anche scambiare dati con un server web.

martedì 24 gennaio 2023

COME COLLEGARE CORRETTAMENTE UN PULSANTE AD ARDUINO: METODI E PRECAUZIONI


Collegare un pulsante ad Arduino è un'operazione fondamentale per la creazione di progetti interattivi. Ci sono diverse tecniche per collegare un pulsante ad Arduino, e in questo articolo vedremo i tre metodi più comuni, insieme alle loro specifiche e alle possibili conseguenze di un collegamento errato:






Metodo a pull-up: questo metodo utilizza la resistenza interna di Arduino chiamata "pull-up" per collegare il pulsante.
Il pin del pulsante è collegato alla massa e al pin di ingresso di Arduino tramite una resistenza pull-up.

Quando il pulsante non viene premuto, il pin di ingresso è alto e quando viene premuto, il pin diventa basso.
Questo metodo è utile per evitare falsi trigger dovuti a fluttuazioni della tensione sulla linea di ingresso.







Metodo a pull-down: simile al metodo a pull-up, ma in questo caso il pin del pulsante è collegato alla tensione di alimentazione e al pin di ingresso tramite una resistenza pull-down.
Quando il pulsante non viene premuto, il pin di ingresso è basso e quando viene premuto, il pin diventa alto.
Questo metodo è utile in caso di interferenze elettromagnetiche sulla linea di ingresso.








Metodo a transistor: in questo metodo, si utilizza un transistor come per collegare il pulsante al pin di ingresso di Arduino. Quando il pulsante viene premuto, il transistor si attiva e collega il pin di ingresso alla massa, generando un segnale di ingresso basso. Questo metodo è utile per gestire carichi maggiori o per aumentare la distanza tra il pulsante e Arduino.

In generale, il metodo a pull-up è il più semplice e utilizzato per la maggior parte dei progetti. Tuttavia, a seconda delle esigenze specifiche del progetto, potrebbe essere necessario utilizzare uno dei metodi a pull-down oa transistor.

Sfortunatamente, un collegamento errato può causare danni irreversibili ad Arduino. In particolare, una connessione inversa tra il pin di ingresso e la massa può causare la sovratensione del pin e la distruzione del chip. Inoltre, una resistenza pull-up o pull-down di valore errato può causare problemi di stabilità del sistema.

Per evitare questi problemi, è importante seguire attentamente le istruzioni del progetto e verificare il collegamento con un tester prima di alimentare il dispositivo. Inoltre, è consigliabile utilizzare componenti di qualità e rispettare le specifiche del datasheet del chip.

Micro-pulsante 

In conclusione, collegare un pulsante ad Arduino è un'operazione fondamentale per la creazione di progetti interattivi. Esistono diverse tecniche per collegare un pulsante ad Arduino, tra cui il metodo a pull-up, il metodo a pull-down e il metodo a transistor. Ognuno di questi metodi ha le sue specifiche e utilizzi. È importante seguire attentamente le istruzioni del progetto e verificare il collegamento con un tester prima di alimentare il dispositivo per evitare danni irreversibili ad Arduino. Utilizzare componenti di qualità e rispettare le specifiche del datasheet del chip sono essenziali per avere un collegamento sicuro.

lunedì 16 gennaio 2023

LEGGIAMO LA FREQUENZA DI UN TELECOMANDO PER CANCELLI AUTOMATICI CON ARDUINO

Costruire un circuito in grado di ricevere un segnale a 433 MHz generato da un comune telecomando per cancelli automatici è un compito abbastanza semplice che può essere realizzato utilizzando una scheda Arduino e alcuni componenti elettronici di base.
In questo articolo, vedremo come utilizzare il LED integrato su Arduino per visualizzare i valori letti dal ricevitore RF a 433 MHz e come utilizzare la porta seriale per visualizzare i dati ricevuti.
Per iniziare, avrete bisogno di una scheda Arduino, un ricevitore RF a 433 MHz e un cavo USB per collegare la scheda Arduino al computer.
Il ricevitore RF a 433 MHz è un componente elettronico che consente di ricevere i segnali trasmessi dal telecomando. Questo componente è disponibile in diversi formati, ma per questo progetto utilizzeremo un modello dotato di porta seriale.
Il primo passo è quello di collegare il ricevitore RF a 433 MHz alla scheda Arduino. Il ricevitore avrà tre pin: VCC, GND e DATA. Il pin VCC va collegato alla alimentazione della scheda Arduino, il GND va collegato al GND della scheda Arduino e il pin DATA va collegato al pin RX (ricezione) della scheda Arduino.
Il secondo passo è quello di scrivere il codice per il progetto. In questo esempio, utilizzeremo il LED integrato su Arduino per visualizzare i valori letti dal ricevitore RF a 433 MHz.
Nel codice, utilizzeremo la libreria "VirtualWire" per gestire la comunicazione con il ricevitore RF. Utilizzeremo anche la libreria "Serial" per comunicare con la porta seriale del computer.
Nel codice, impostiamo la velocità della seriale a 9600 baud e la usiamo per stampare i valori ricevuti dal ricevitore RF. Utilizziamo poi la funzione "vw_set_rx_pin" per impostare il pin RX della scheda Arduino come pin di ricezione del segnale RF e la funzione "vw_setup" per impostare la velocità di trasmissione del segnale RF.
Infine, utilizziamo la funzione "vw_rx_start" per avviare la ricezione del segnale RF e la funzione "vw_wait_rx" per attendere la ricezione di un pacchetto.
Quando un pacchetto viene ricevuto, accendiamo il LED integrato su Arduino e stampiamo i valori ricevuti sulla porta seriale.
Una volta che il codice è stato scritto, è possibile caricarlo sulla scheda Arduino utilizzando l'ambiente di sviluppo integrato (IDE) Arduino.
Una volta caricato il codice, il circuito è pronto per essere utilizzato. Quando si premere il tasto del telecomando, il LED integrato su Arduino si accenderà e sulla porta seriale verranno visualizzati i valori ricevuti dal ricevitore RF a 433 MHz.
Costruire un circuito in grado di ricevere un segnale a 433 MHz generato da un comune telecomando per cancelli automatici è un compito abbastanza semplice che può essere realizzato utilizzando una scheda Arduino e alcuni componenti elettronici di base.
Utilizzando il LED integrato su Arduino e la porta seriale, è possibile visualizzare i valori ricevuti dal ricevitore RF a 433 MHz in modo semplice e intuitivo.

Ecco il codice per il progetto di ricezione di un segnale a 433 MHz utilizzando una scheda Arduino e il LED integrato:

#include <VirtualWire.h> #include <Serial.h> int ledPin = 13; // LED integrato su Arduino void setup() { pinMode(ledPin, OUTPUT); // Impostiamo il pin del LED come pin di output Serial.begin(9600); // Impostiamo la velocità della seriale a 9600 baud vw_set_rx_pin(11); // Impostiamo il pin RX della scheda Arduino come pin di ricezione del segnale RF vw_setup(2000); // Impostiamo la velocità di trasmissione del segnale RF a 2000 baud vw_rx_start(); // Avviamo la ricezione del segnale RF } void loop() { uint8_t buf[VW_MAX_MESSAGE_LEN]; // Creiamo un buffer per memorizzare i dati ricevuti uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_wait_rx(3000)) { // Attendiamo la ricezione di un pacchetto per un massimo di 3 secondi if (vw_get_message(buf, &buflen)) { // Se un pacchetto viene ricevuto, lo leggiamo digitalWrite(ledPin, HIGH); // Accendiamo il LED integrato su Arduino Serial.print("Valori ricevuti: "); // Stampiamo un messaggio sulla porta seriale for (int i = 0; i < buflen; i++) { // Stampiamo i valori ricevuti sulla porta seriale Serial.print(buf[i], HEX); Serial.print(" "); } Serial.println(); digitalWrite(ledPin, LOW); // Spegniamo il LED integrato su Arduino } } }




domenica 15 gennaio 2023

SENSORE DI TEMPERATURA E UMIDITA' DHT11 E DHT22

Il DHT11 e DHT22 sono sensori di temperatura e umidità relativa che possono essere utilizzati per misurare queste condizioni ambientali.

Entrambi i sensori sono progettati per essere facili da utilizzare con Arduino e altre schede microcontrollore, ma ci sono alcune differenze tra i due.

Il DHT11 è un sensore economico e facile da utilizzare, ideale per progetti di base o per l'uso in ambienti con temperature e umidità relativa stabili. Ha un'accuratezza inferiore rispetto al DHT22, ma è più economico e consuma meno energia.




Il DHT22, noto anche come AM2302, è un sensore più preciso e versatile rispetto al DHT11. Ha una maggiore gamma di misura per la temperatura e l'umidità relativa, e una maggiore accuratezza. Inoltre, è in grado di funzionare in una gamma più ampia di temperature e umidità relativa.




Per collegare il sensore DHT11 o DHT22 ad Arduino, è necessario utilizzare i pin di alimentazione, di dati e di GND. Il pin di alimentazione va collegato alla alimentazione (3-5V), il pin di dati va collegato ad un pin digitale dell'Arduino e il pin GND va collegato al GND dell'Arduino.


In particolare per il DHT11, essendo un sensore a bassa potenza, non richiede resistenze di pull-up sulla linea dati, mentre per il DHT22 è necessaria una resistenza di pull-up da 10kOhm tra la linea dati e la alimentazione.

Ecco un esempio di come collegare il sensore DHT11:

  • Pin 1 (Vcc) al 3-5V di Arduino
  • Pin 2 (Data) ad un pin digitale di Arduino (esempio: 2)
  • Pin 3 (NC) non utilizzato
  • Pin 4 (GND) al GND di Arduino

Ecco un esempio di come collegare il sensore DHT22:

  • Pin 1 (Vcc) al 3-5V di Arduino
  • Pin 2 (Data) ad un pin digitale di Arduino (esempio: 2) e una resistenza di pull-up da 10kOhm tra questo pin e la alimentazione
  • Pin 3 (NC) non utilizzato
  • Pin 4 (GND) al GND di Arduino

In entrambi i casi è importante rispettare la polarità delle connessioni per evitare danni al sensore o alla scheda Arduino.

Per leggere i valori di temperatura e umidità dal sensore, è possibile utilizzare una libreria come la DHT sensor library, che semplifica la comunicazione tra l'Arduino e il sensore. Una volta che i valori sono stati letti, è possibile utilizzare un display LCD I2C per visualizzarli.
Ecco un esempio di codice per misurare la temperatura e l'umidità con un sensore DHT11 e visualizzare i valori su un display LCD 16x2 I2C:
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h> #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.begin(); lcd.backlight(); dht.begin(); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temp: "); lcd.print(t); lcd.print(" C"); lcd.setCursor(0, 1); lcd.print("Hum: "); lcd.print(h); lcd.print(" %"); delay(2000); }

In questo esempio, si utilizza la libreria DHT per leggere i valori di temperatura e umidità dal sensore DHT11 e la libreria LiquidCrystal_I2C per la comunicazione con il display LCD. Il codice imposta la connessione con il display LCD, legge i valori di temperatura e umidità dal sensore DHT11 e li visualizza sulla prima e seconda riga del display LCD.

In generale, il DHT11 e DHT22 sono entrambi sensori affidabili e facili da utilizzare per misurare la temperatura e l'umidità relativa.

La scelta tra i due dipende dalle esigenze specifiche del progetto e dall'accuratezza richiesta. Utilizzando questi sensori in combinazione con un display LCD, è possibile creare progetti interessanti come un sistema di monitoraggio dell'ambiente, un sistema di controllo dell'irrigazione o un sistema di allarme per umidità eccessiva.

E PER MISURARE IL PUNTO DI RUGIADA?

Il punto di rugiada è la temperatura alla quale l'aria diventa satura di umidità, cioè quando la pressione della vapore acqueo nell'aria è uguale alla pressione del vapore acqueo alla temperatura di rugiada.
Il punto di rugiada è importante perché a temperature inferiori, l'acqua condensa sulla superficie fredda, formando rugiada o condensa, questo può essere un problema in alcune situazioni, come ad esempio nei sistemi di raffreddamento.
Per calcolare il punto di rugiada è possibile utilizzare una formula nota come "formula di Magnus-Tetens" o "formula di Magnus".
Questa formula utilizza la pressione atmosferica, la temperatura e l'umidità relativa per calcolare la pressione del vapore acqueo nell'aria.
La formula di Magnus-Tetens è:
Td = (243.04*(log(rh/100) + ((17.625T)/(243.04 + T)))/(17.625 - log(rh/100) - ((17.625T)/(243.04 + T)))
Dove:
Td = punto di rugiada in gradi Celsius
T = temperatura in gradi Celsius
rh = umidità relativa in percentuale
Per utilizzare questa formula è necessario avere i valori di temperatura e umidità relativa, che possono essere letti dal sensore DHT11 o DHT22, e la pressione atmosferica. In caso non fosse disponibile la pressione atmosferica si può utilizzare una pressione standard di 1013hPa.
Una volta che si ha il punto di rugiada, si può utilizzare questo valore per prendere decisioni sulle condizioni ambientali, come ad esempio accendere un sistema di riscaldamento o di deumidificazione, o per evitare condensa in apparecchiature delicate.
Ecco un esempio di codice per visualizzare il punto di rugiada su un display LCD 16x2 I2C utilizzando i valori di temperatura e umidità relativa letti dal sensore DHT11 o DHT22:

#include <DHT.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.begin(); lcd.backlight(); dht.begin(); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); // Calcolare il punto di rugiada utilizzando la formula di Magnus-Tetens double Td = (243.04*(log(h/100) + ((17.625*t)/(243.04 + t))))/(17.625 - log(h/100) - ((17.625*t)/(243.04 + t))); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Temp: "); lcd.print(t); lcd.print(" C"); lcd.setCursor(0, 1); lcd.print("Dew point: "); lcd.print(Td); lcd.print(" C"); delay(2000); }

In questo esempio, si utilizzano le librerie DHT e LiquidCrystal_I2C per leggere i valori di temperatura e umidità dal sensore DHT11 o DHT22 e per comunicare con il display LCD.
Inoltre, si utilizzano la formula di Magnus-Tetens per calcolare il punto di rugiada utilizzando i valori di temperatura e umidità relativa. Il codice visualizza i valori di temperatura e punto di rugiada sulla prima e seconda riga del display LCD.
Si noti che l'espressione utilizzata per calcolare il punto di rugiada è valida solo per pressioni atmosferiche standard. In caso la pressione atmosferica non sia costante, occorre utilizzare una formula più complessa che tiene conto della pressione atmosferica rilevata.