ESP8266
Parlando di sistemi embedded, che si può cercare di più minimale del piccolissimo ESP-01?
O, per avere un po' più di IO, un bel ESP-12?
Il chip ESP8266 sta letteralmente rivoluzionando l'IoT, permettendo la realizzazione di sistemi potenti ma di dimensioni e costo (meno di 2€!) estremamente contenuti.
ESP-01 offre un sistema molto semplice per interfacciare qualsiasi micro, tramite una seriale a livello TTL ed una serie di comandi AT. Ma, a differenza di altri prodotti "analoghi" (seppur di prezzo neanche lontanamente paragonabile), permette anche di eliminare completamente il micro esterno riprogrammando il micro onboard che è comunque molto più potente di un ATMega328!
All'inizio fu NodeMCU. Poi, man mano che veniva documentato il chip, nascevano altri progetti sempre più semplici (per l'utente), fino ad arrivare all'uso dell'IDE di Arduino! Abbinato ad un convertitore usb-ESP01 dedicato è una pacchia!
Pare esserci pure un True(?) Random Number Generator, che può risultare utilissimo in molte situazioni. Usarlo dall'IDE di Arduino è semplicissimo (se si conosce il C, almeno):
volatile int *rand=(int*)0x3FF20E44; int x1=*rand; int x2=*rand;
genererà valori sempre diversi per x1 ed x2 (da qualche parte però ho letto che prima di attivare il WiFi la sequenza è sempre la stessa, probabilmente usa il "rumore" ricevuto come sorgente di entropia)!
C'è anche un watchdog che interviene se per errore il programma rimane in un loop senza chiamare yield() o delay() troppo a lungo. Ci ho sbattuto il naso con l'ultimo test vector (quello veramente lungo) di SHA256.
L'unica cosa a cui prestare attenzione, se con ESP-01 si vogliono usare anche le linee RXD e TXD come GPIO (per averne 4 invece dei soli GPIO0 e GPIO2), è di evitare l'uso di RXD come out se si utilizza l'adattatore di AprilBrother, poiché terminata la programmazione viene immediatamente avviata l'esecuzione dello sketch, che genererebbe un corto tra la TX dell'adattatore e la RXD dell'ESP. Probabilmente non si brucia subito, ma perché rischiare?