“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
- 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
#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 !
2 comments
Ciao, tu scrivi:
“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”.
Questo vuol dire che con un alimentatore da 5V posso alimentarlo da quei due pin senza danneggiarlo, piuttosto che inviare l’alimentazione attraverso il connettore USB?
Grazie ciao, bella guida.
Salve Nino,
confermo quanto detto. Se guardi lo schema di una delle board, ad es. la D1 mini (https://www.wemos.cc/en/latest/_static/files/sch_d1_mini_v4.0.0.pdf), vedrai che il bus VBUS, 5v, è connesso al regolatore ME6211C33, che -stando al data sheet- accetta in ingresso fino a 6,5v (https://pdf1.alldatasheet.com/datasheet-pdf/view/1138843/ETC2/ME6211C33/+01_8977XDyD-cPpCYNYlDE+/datasheet.pdf).
Michele