ESP8266 WIFI Kit8 OLED

Qualche articolo fa vi avevo parlato del microcontrollore programmabile ESP8266 e della sua estrema versatilità nei progetti di domotica e IoT, oggi vi voglio mostrare una versione differente che combina non solo un’antenna WiFi ma anche un piccolo display OLED da 0.96 pollici.
Cosa da non sottovalutare in questo modulo è la presenza di un connettore micro-USB, utile sia nella fase di programmazione che come fonte di alimentazione, e una porta per collegare una batteria a litio da 3.7 V in modo da usarlo in maniera stand-alone.

Pinout

Prima di farvi vedere come utilizzare l’IDE di Arduino per programmarlo, vi voglio mostrare il funzionamento dei vari pin del modulo, in particolare i pin indicati dalla freccia rossa sono quelli che permettono di comandare il display montato sulla scheda.

Configurazione IDE Arduino

Per prima cosa dovete verificare che tra le vostre schede sia presente la NodeMCU o tutta la famiglia ESP8266, in caso contrario vi rimando al mio vecchio articolo dove spiego come aggiungere queste schede.
Ora che avete installato le schede, selezionate la NodeMCU v.1.0 e scegliete la porta COM dove avete collegato il modulo.
In figura potete vedere le varie impostazioni da settare sulla scheda.

Sketch WiFi Scan

Il codice qui di seguito vuole essere solo un semplice esempio per mostrare come utilizzare il display montato sulla scheda.
Per eseguire e compilare questo codice dovete prima installare la libreria per U8g2 necessaria per poter controllare il display.
Per installarla andate in Sketch->#include libreria->Gestione librerie e cercate U8g2 e cliccate su installa.

#include "ESP8266WiFi.h"
#include <U8g2lib.h>
 
U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 5, /* data=*/ 4, /* reset=*/ 16);
 
void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);
 
  Serial.println("Setup done");
  u8g2.begin();
}
 
void loop() {
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_5x8_tr);
   
  writeText("scan start",0,1);
   
  int n = WiFi.scanNetworks();
  writeText("scan done",50,1);
  delay(2000);
   
  if (n == 0)
    writeText("no networks found",0,1);
  else
  {
    writeText(String(n),0,1); 
    writeText(" networks found          ",8,1);
    for (int i = 0; i < n; ++i) {
      writeText(String(i+1),0,2+i);
      writeText(": ", 5,2+i);
      writeText(String(WiFi.SSID(i)), 7,2+i);
      delay(10);
    }
  }
  Serial.println("");
 
  delay(5000);
}
 
void writeText( String text, byte pos, byte line ) {
  Serial.println(text);
  char c[text.length()+5];
  text.toCharArray(c, text.length()+5);
  u8g2.drawStr(pos,(line*8),c);
  u8g2.sendBuffer();
  delay(100);  
}

Non mi soffermo su tutto il codice solamente sulle righe più importanti:

  • riga 1-2: Inclusione delle librerie per il modulo WiFi e il display
  • riga 4: Impostazione del tipo di driver con cui controllare il display OLED, in questo caso SSD1306 in modalità I2C sui pin 5 sck, pin 4 per i dati e 16 per il reset
  • riga 13: Inizializzazione della comunicazione verso il display
  • riga 17-18: Pulizia del display (17) e impostazione del font da usare (18)

Spero che questa piccola guida su come iniziare ad utilizzare questo modulo ESP8266 WIFI Kit8 OLED vi sia piaciuta, a presto per nuovi progetti 😉