“Niente quanto il gioco esige attenzione, intelligenza, resistenza nervosa.”

Roger Caillois

Il mondo dell’IoT (Internet of Things) è sempre più presente nelle nostre vite e variegato. Dai primi dispositivi wearable agli smartwatch, ci siamo progressivamente abituati all’idea di essere sempre perennemente connessi in Rete che, ormai, non riusciamo a concepire qualcosa che non lo sia. Io stesso, lo ammetto, certe volte guardo con disprezzo il frigorifero A++, acquistato neanche due anni fa, in quell’angolo della cucina, pensando a come mai non posso controllarne o monitorizzarne il funzionamento via Internet: costa costava al produttore di realizzare una interfaccia che si connettesse con l’onnipresente ADSL casalinga ?

Ormai sono infatti disponibili dispositivi sempre più piccoli e sempre più potenti, come ad esempio i moduli ESP8266 prodotti dalla cinese Espressif: questi piccoli chip, in varie configurazioni e della dimensione di meno di 1cm quadrato, incorporano un potente ecosistema WiFi IEEE 802.11 b/g/n, stack TCP/IP con già incorporata l’autenticazione WEP/WPA(2). Le librerie fornite con l’SDK, utilizzabile comodamente anche con Arduino, comprendono esempi di server o client Web, Telnet, etc etc etc…

L’aspetto però davvero interessante di questi moduli sono i 16 piedini a disposizione degli sviluppatori, che soddisfano gran parte delle esigenze di noi “smanettoni amatoriali”. La disposizione dei piedini ed altre piccole caratteristiche, come ad esempio l’ingresso ADC, dipendono dal produttore della scheda “madre” che ospita il chip ESP8266.

WeMos D1 mini

Vediamo adesso la WeMos D1 mini, una board compatta ed economica (meno di 3€ cadauna su Aliexpress), di cui il pinout:

Se escludiamo i piedini per l’alimentazione, abbiamo 8 linee di I/O digitale ed una ingresso analogico ADC (0-3,3V, già con il divisore resistivo 220KOhm-100KOhm). L’alimentazione della scheda può essere presa dal connettore mini-USB (un qualsiasi alimentatore per smartphone assolve agevolmente al compito) oppure attraverso i piedini 5V e GND.

Cosa possiamo realizzare con queste piccole (ma potenti) board dipende dalla nostra fantasia. Personalmente le sto utilizzando per creare un sistema di controllo casalingo per la temperatura e l’umidità nelle varie stanze della casa: utilizzando un sensore come il BME280 prodotto dalla Bosch o il più economico DHT22/AM2302 (entrambi disponibili a pochi euro, su Aliexpress: BME280 – AM2302) ed un sistema di alimentazione attraverso batterie al litio 18650 (ed un DC-DC converter), con Arduino ho scritto un semplice software che si connette via REST ad un server remoto ed invia i dati ambientali per una successiva elaborazione (progetto iHot).

Specifiche tecniche ESP8266EX

Rimanendo sulla scheda D1 mini, due parole sul “cuore”, il chip ESP8266EX:

Espressif’s ESP8266EX delivers highly integrated Wi-Fi SoC solution to meet users’ continuous demands for efficient power usage, compact design and reliable performance in the Internet of Things industry. With the complete and self-contained Wi-Fi networking capabilities, ESP8266EX can perform either as a standalone application or as the slave to a host MCU. When ESP8266EX hosts the application, it promptly boots up from the flash. The integrated high- speed cache helps to increase the system performance and optimize the system memory. Also, ESP8266EX can be applied to any microcontroller design as a Wi-Fi adaptor through SPI / SDIO or I2C / UART interfaces. ESP8266EX integrates antenna switches, RF balun, power amplifier, low noise receive amplifier, filters and power management modules. The compact design minimizes the PCB size and requires minimal external circuitries

mentre per il supporto Wi-Fi le specifiche tecniche sono: 802.11 b/g/n support

2 x Wi-Fi interface, supports infrastructure BSS Station mode / P2P mode / SoftAP mode support

Hardware accelerators for CCMP (CBC-MAC, counter mode), TKIP (MIC, RC4), WAPI (SMS4), WEP (RC4), CRC

Supports MIMO 1×1 and 2×1, STBC, and 0.4μs guard interval

WMM

Installazione IDE e SDK

istruzioni di installazione, su GitHub: Per sviluppare il software possiamo usare Arduino (o PlatformIO , un altro ecosistema di sviluppo sistemi embedded), includendo le librerie SDK disponibili, insieme alle, su GitHub: https://github.com/esp8266/Arduino

Dopo aver scaricato ed installato l’ IDE Arduino , dalla schermata “Impostazioni” si aggiunge l’URL “http://arduino.esp8266.com/stable/package_esp8266com_index.json” nel campo “URL aggiuntive per il Gestore schede:”

e poi, da “Strumenti” -> “Scheda XXX” -> “Gestore schede” si cerca e si installa ESP8266:

A questo punto, in “Strumenti” troviamo un elenco di schede con il chip ESP8266 tra cui la nostra WeMos D1 mini:

Per iniziare, provate a connettervi ad una rete WiFi usando questo semplice codice:

#include <ESP8266WiFi.h> // Setup WiFi connection const char* ssid = ""; //SSID const char* password = ""; // Password void connectToWifi() { WiFi.begin(ssid, password); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(250); } Serial.println(""); Serial.println("WiFi connected"); } void setup() { Serial.begin(115200); delay(10); connectToWifi(); } void loop() { while(WiFi.status() != WL_CONNECTED) { connectToWifi(); } }

A questo punto non vi rimane che iniziare a programmare !

Conclusioni

Rispetto al ben più blasonato Raspberry PI o alle schede Arduino, il grosso vantaggio delle board basate su ESP8266 è il costo estremamente contenuto e le potenzialità di connessione che già incorporano on-board, senza onerosi moduli aggiuntivi. Con pochi euro è possibile avere dei dispositivi poco più grandi di una moneta da 2€ che si connettono alla nostra rete WiFi !

Ammetto che me ne sono velocemente innamorato, tanto da averne acquistati svariati tipi di cui vi parlerò nelle prossime puntate (tra cui ESP32, che incorpora anche il supporto Bluetooth e due uscite DAC…).