in Costruisci la tua rete domotica con Esp8266 e Raspberry Pi, Progetti, Tutorial

Costruisci la tua rete domotica con Esp8266 e Raspberry Pi – Primi passi con il modulo wifi ESP8266

In questo articolo si prenderà confidenza con il modulo wifi ESP8266-01, il più piccolo della famiglia, analizzandone le caratteristiche hardware.

Come discusso negli articoli precedenti, gli ESP8266 si distinguono per molteplici fattori, quali ad esempio:

  • numero di pin;
  • dimensione;
  • risorse hardware;
  • tipologia di antenna (stampata sul PCB, ceramica, esterna).

Ciò fornisce una vasta scelta in funzione del progetto da realizzare.

Ad oggi il modello più affermato è sicuramente l’ESP01, in quanto permette con le sue dimensioni ridotte di essere posizionato ovunque e fornire servizi di connessione wireless con sufficiente efficienza.

Con esso è possibile realizzare semplici sistemi IoT, o implementare nuove funzioni domotiche con altri dispositivi, abbattendo di molto i costi. Ecco il motivo per cui ci si concentrerà maggiormente sulla sua analisi, anche perché valgono anche per gli altri modelli.

Di seguito le principali specifiche:

  • Dimensioni: 14.3 mm * 24.8 mm * 3.0 mm;
  • Microcontrollore a 32 bit;
  • velocità di clock compatibile di 80 MHz e 160 MHz;
  • 802.11 b/g/n;
  • Stack TCP/IP integrato;
  • Wi-Fi 2.4 GHz con supporto WPA/WPA2.

L’ESP01 dispone di 8 pin con passo 2,54 mm come visibile in foto:

  • PIN 1 = GND, pin di alimentazione;
  • PIN 2 = TX/GPIO1, pin di trasmissione seriale o general purpose 1;
  • PIN 3 = GPIO2, pin general purpose 2;
  • PIN 4 = EN (o CHPD), pin di enable (attivo alto);
  • PIN 5 = GPIO0, pin general purpose 0;
  • PIN 6 = RST, pin di reset (attivo basso);
  • PIN 7 = RX, pin di ricezione;
  • PIN 8 = VCC, pin di alimentazione.

Oltre ai pin TX/RX per la comunicazione, si dispone solo di altri due pin GPIO liberi. Da notare che tutti i pin GPIO accettano il PWM e tra i protocolli di comunicazione supportati vi sono UART e I2C.

Per la disposizione dei pin, l’ESP01 non può essere utilizzato direttamente su una breadboard, in quanto si verrebbero a creare cortocircuiti tra i pin stessi. Una prima soluzione, veloce ma non pulita, consiste nell’utilizzare dei jumper FF (Femmina-Femmina) o MF (Maschio-Femmina) come in figura.

Un altro modo sarebbe saldare direttamente dei cavetti sul modulo, permettendo una connessione fissa e sicura, ma richiede leggermente più tempo e soprattutto un saldatore! Stessa considerazione se si realizzasse una piccola breakout board per adattare i pin dell’ESP01 ad un formato DIP (dual-inline package), consentendo l’utilizzo su breadboard. In commercio ne esistono di già pronte, o comunque solo da saldare i pin, più o meno economiche ma che permettono di avere una lavoro pulito, facile e sicuramente funzionante.

Un aspetto di fondamentale importanza riguarda l’alimentazione e le tensioni di lavoro: l’ESP01 viene alimentato ad una tensione 3.3 V (accetta tra i 3 e i 3.6 V, ma consiglio di non lavorare mai agli estremi). Anche la sua logica lavora a 3.3 V, dunque bisogna prestare attenzione se si vuole collegare a dispositivi di differente voltaggio, come Arduino. Un collegamento diretto dei pin TX/RX tra Arduino ed ESP01 sembrerebbe funzionare in apparenza, ma non state facendo altro che dire addio ai vostri moduli! Anche in questo caso esistono diversi approcci, più o meno accettabili. Il più semplice e immediato, utile solo per qualche test veloce, consiste in un banale partitore di tensione. Infatti, basterà dimensionare un paio di resistenze in modo tale da portare i 5 V di Arduino ai circa 3.3 V del nostro ESP01.

Nell’esempio riportato nell’immagine, sono stati scelti come valori delle resistenze che compongono il partitore 1K e 2K; dalla formula del partitore si avrà dunque:

VRX = VTX * R2 / (R1+R2) = 5 * 2000 / 3000 = 3,33 V

Altri valori di resistenze sono possibili per ottenere in uscita i ricercati 3.3 V, come ad esempio 4.7K e 10K. Sconsiglio questa soluzione per versioni progettuali definitive o a lungo utilizzo, in quanto sarebbe un evidente spreco di energia, andando a richiedere all’Arduino molta più corrente di quanto l’ESP01 non richieda effettivamente. Inoltre, questo approccio implica dei ritardi di risposta di commutazione, corrompendo così i segnali di comunicazione.

Altra soluzione consiste nell’utilizzare dei diodi in serie sulla linea di trasmissione e alimentazione, abbattendo i 5 V con la caduta dei diodi stessi. La scelta dei diodi è arbitraria, con le dovute considerazioni sul tipo di utilizzo che se ne andrà a fare. Modelli come 1N4148 oppure 1N4007 possono andar bene. Anche questa soluzione è però altamente sconsigliata per versioni definitive o a lungo utilizzo, per gli stessi motivi citati sopra per il partitore di tensione.

Nonostante fortemente sconsigliate, tutte queste soluzioni mi sono tornate estremamente utili in fase di test e prototipazione. Tuttavia il miglior modo per permettere un’alimentazione e trasmissione tecnicamente impeccabile consiste nell’utilizzo di un regolatore di tensione e di un convertitore logico bidirezionale.

Il regolatore di tensione sarà utilizzato per un’alimentazione stabile a 3.3 V. Esistono un’infinità di regolatori in commercio che fanno il loro dovere, come LM1117-3.3.

Tra i convertitori logici bidirezionali provati e utilizzati attualmente, non posso non citare il BSS138. Esistono moduli formati da più convertitori, in modo tale da avere più linee da utilizzare.

Un ulteriore metodo, tra i più comodi, consiste nell’utilizzare un convertitore USB-TTL come nella foto seguente basati su chip come FTDI FT232RL oppure CP2102. 

Questi moduli integrano già un regolatore di tensione e permettono un interfaccia sicura per la trasmissione dati con l’USB del pc. Attualmente è la soluzione con cui mi sto trovando meglio.

Concludendo, l’ESP01 richiede alcuni accorgimenti e precauzioni d’utilizzo (come è ovvio aspettarsi da un modulo da pochi euro), qui discussi e affrontati. Sarà ora possibile metter finalmente mano sull’ESP01 e iniziare a progettare!

 

Caricare il firmware NodeMCU ⇒

Scrivi un commento

Commento