ESP8266 – IoT low cost

ESP-01

Se stai cercando un modo per realizzare un progetto di domotica e non sai come connettere il tuo dispositivo ad internet, in questo articolo troverai una soluzione a basso costo.

Oggi parliamo dell’ ESP8266 un microcontrollore programmabile in una modalità molto simile a quella di Arduino, costituito da un SoC (System on Chip) dalle dimensioni molto piccole soli 5*5 mm e la scheda che lo contiene presenta anche un’antenna WiFi.

Esistono diversi moduli che utilizzano ESP8266 ognuno dei quali si differenzia per le seguenti caratteristiche:

  • dimensioni del modulo;
  • memoria flash, esterna al chip e varia da 512 KByte fino a 4MByte;
  • numero di pin;
  • antenna WiFi stampata su scheda o su apposito connettore a cui collegare un’antenna

famiglia esp

Ogni modulo è identificato da una sigla di questo tipo ESP-XX dove XX è un valore che varia per il momento da 1 a 13, il più diffuso è il modello ESP-01 che vedremo più in dettaglio in questo articolo.

ESP-01 Pinout

Per iniziare partiamo subito dal pinout, come si legge in figura bisogna assolutamente alimentare l’ESP-01 con 3,3V alimentazioni superiori porterebbero al danneggiamento della scheda, inoltre non è possibile alimentare il modulo utilizzando i 3,3V di Arduino in quanto quando si utilizza il WiFi la corrente assorbita dall’ESP-01 potrebbe rendere instabile il funzionamento di Arduino, per questo si raccomanda di utilizzare un’alimentazione separata.

esp01 pinout

Oltre all’alimentazione di 3,3V anche tutti gli altri pin funzionano a 3,3V per questo motivo non si possono collegare direttamente ad Arduino ma occorre utilizzare dei traslatori di livello come quello mostrato nella figura seguente.

traslatore di livello

Configurazione IDE Arduino

Prima di poter programmare il modulo ESP-01 bisogna far riconoscere la scheda all’IDE di Arduino, per far questo seguiamo i seguenti passaggi:

  1. Apriamo l’IDE di Arduino e selezioniamo “Impostazioni“.
    ESP01_step1
  2.  Nella schermata che si apre aggiungiamo al campo “URL aggiuntive per il Gestore di schede” il seguente indirizzo http://arduino.esp8266.com/stable/package_esp8266com_index.json e clicchiamo OK.ESP01_step2
  3. Andare in “Strumenti”->”Scheda”->”Gestore Schede”, nel filtro di ricerca scrivere wemos 

    ESP01_step4

  4. Infine cliccare sul risultato “esp8266” e poi installa 
  5. Terminata l’installazione bisogna selezionare in “Strumenti”->”Scheda” il modulo appena installato “Generic ESP8266 ModuleESP01_step5

Programmatore per ESP-01

Ora che abbiamo installato correttamente la scheda possiamo passare a programmare il modulo ESP8266, per far questo utilizzeremo il seguente programmatore seriale, che potete trovare nei vari store online.

programmatore ESP01

Prima di collegare l’ESP01 bisogna fare una piccola modifica al programmatore in quanto per far entrare il modulo in modalità di programmazione si deve portare il pin Io0 (IO Zero) a massa, per far questa potete semplicemente utilizzare un jumper da collegare sotto la scheda (come visibile nella figura sotto) in modo tale da rimuoverlo nel caso vorreste testare il programma appena caricato.

programmatore ESP01 - modifica

Per programmare il nostro modulo con il classico esempio blink non ci resta che connettere il programmatore con il modulo ESP01 alla presa USB del PC, assicurarci di avere scelto nell’IDE la scheda “General ESP8266 Module” e la porta corretta.

Programmatore + ESP01

Il codice blink di esempio è il seguente.

/*
 ESP8266 Blink by Simon Peter
 Blink the blue LED on the ESP-01 module
 This example code is in the public domain
 
 The blue LED on the ESP-01 module is connected to GPIO1 
 (which is also the TXD pin; so we cannot use Serial.print() at the same time)
 
 Note that this sketch uses LED_BUILTIN to find the pin with the internal LED
*/

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);     // Initialize the LED_BUILTIN pin as an output
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, LOW);   // Turn the LED on (Note that LOW is the voltage level
                                    // but actually the LED is on; this is because 
                                    // it is active low on the ESP-01)
  delay(1000);                      // Wait for a second
  digitalWrite(LED_BUILTIN, HIGH);  // Turn the LED off by making the voltage HIGH
  delay(2000);                      // Wait for two seconds (to demonstrate the active low LED)
}