Pilotare ESP32 con i Comandi AT

ESP32 AT Command

L'ESP32 è il nuovo modulino prodotto da Espressif ed erede dell'ESP8266. Economico, studiato per l'IOT e dunque ricco di connettività (WiFi e BLE ), sta conquistando il mondo hobbistico e professionale. Purtroppo doversi studiare una nuova architettura non sempre è fattibile a causa di tempi ed effort.  A tal proposito, Espressif viene incontro alle esigenze dei vari sviluppatori offrendo una soluzione "black box" già compilata.  

Introduzione

La maggior parte degli articoli disponibili sul web propongono soluzioni in cui si utilizza direttamente la CPU dual core Xtensa disponibile a bordo dell'ESP32. Si tratta appunto di un uControllore dual core molto prestante, paragonabile indicativamente ad un ARM Cortex M7 come prestazioni. L’utilizzo diretto di una architettura così complessa richiede però tempo e dedizione: è necessario studiarsi le varie API disponibili nell’SDK Espressif, capire i limiti e le potenzialità offerte dall'ambiente preconfigurato e dall'RTOS ed infine individuare ed integrare eventuali moduli forniti dalla community.

Per risolvere questo possibile limite alla completa diffusione del modulo nel mercato, Espressif ha implementato una libreria che, mediante l’invio di comandi AT su UART (vedi Figura 1), consente il controllo esterno dell’ESP32 con un qualunque uControllore o uProcessore. Questa opzione amplia rapidamente la connettività su prodotti già esistenti e permette di sfruttare le proprie competenze su altri uController ed utilizzare dunque l'ESP32 come un modulo slave che invia informazioni tramite wifi o bluetooth. Un ulteriore vantaggio risiede nel fatto che il compilato coi comandi AT è mantenuto e corretto dalla stessa community di sviluppatori Espressif: ciò garantisce una affidabilità sicuramente superiore a quanto ottenibile da soli o con poche risorse a disposizione.

Connessione UART uController ed ESP32

Figura 1: Esempio stilizzato di connessione UART tra uController ed ESP32

I comandi AT Hayes, dove AT è abbreviazione di ATTENTION, sono comandi nati nei modem fonici. Molti moduli radio, wireless e bluetooth, disponibili attualmente in commercio, possono venire pilotati esternamente in modalità "black box" da una sequenza di comandi AT compatibile. Integrare connettività, dunque, risulta estremamente semplice: è sufficiente inviare tramite UART un array di byte equivalente alla codifica ASCII del comando AT. Solitamente una breve sequenza di comandi consente di configurare e rendere funzionante il modulo. Al termine di questa configurazione, il modulo ESP32 diventa equivalente ad un gateway Wifi e/o Bluetooth e la seriale UART diventa il canale di invio e ricezione dei dati col mondo esterno.

Configurare l’ESP32 per i comandi AT

L’ESP32 non viene distribuita nativamente col codice per la gestione dei comandi AT a bordo. E’ necessario caricare in flash un apposito binario mantenuto direttamente da Espressif e facilmente scaricabile da Github. La gestione di tale binario da parte della ditta produttrice ne garantisce un certo livello in affidabilità e in robustezza del compilato a disposizione.

Di seguito vedremo come configurare rapidamente l’SDK su Windows e come caricare il binario in un modulino dotato di convertitore TTL-USB (un esempio di modulo plug&play è ESPertino).

  1. Cercate sul web: ESP-IDF Programming Guide
  2. Andate nella sezione: Setup Toolchain (Windows)
  3. De-zip l’archivio scaricato
  4. Avviate: mingw32.exe
  5. Nel tutorial standard non viene spiegata l’assenza di una libreria nell’SDK. La sua mancanza impedisce il corretto caricamente del binario. Digitate dunque il segue comando nel terminale: pip install pyyaml xlrd
  6. Digitate sul terminale: mkdir esp
  7. Digitate sul terminale: git clone --recursive https://github.com/espressif/esp32-at.git
  8. Aspettate che avvenga la copia del repository sul vostro pc
  9. Digitate: cd esp32-at
  10. Collegate il modulino ESP32 al PC
  11. Digitate sul terminale: make menuconfig
  12. Selezionate: serial flasher config
  13. Modificate "Default serial port" in base alla COM dedicata da Windows (vedi Figura 2)
  14. Salvate la configurazione ed uscite
  15. Digitate sul terminale: make flash
  16. Aspettate il termine della compilazione e del caricamento del binario nella memoria dell'ESP32
Esempio di porta COM3 su Windows 10

Figura 2: Esempio di porta COM su Windows 10

Il modulo ESP32 è pronto infine a ricevere comandi AT sulla UART1 (GPIO16 RXD, GPIO17 TXD, GPIO14 RTS, GPIO15 CTS). Ovviamente è possibile utilizzare in alternativa le altre due porte UART a disposizione (0 o 2) ma bisogna prestare attenzione alla seriale zero poiché viene utilizzata dall'SDK anche per log e debug e dunque è sfruttata da messaggi non inerenti ai soli comandi AT.

Conclusione e Spunti

Espressif ha redatto un Documento (.pdf) molto dettagliato dove vengono presentati tutti i comandi AT implementati. Allo stato attuale l'unico reale punto negativo riscontrato nella lista dei comandi è la mancanza del supporto al Bluetooth Classic (v2.1): sono previsti solamente comandi AT per la gestione del Wifi e del BLE. E' possibile comunque implementare ulteriori comandi, ma si perde la robustezza del codice fornito, testato e mantenuto dalla community.

Come nota finale è utile sottolineare l'interessante capitolo 9 del pdf precedentemente citato: "AT Commands Examples". In questa appendice della documentazione vengono utilizzati in cascata alcuni comandi per realizzare semplici progetti. Sono un ottimo punto di partenza poiché ricalcano alcune delle principali applicazioni realizzabili  col modulo e possono comunque fungere da linea guida per stabilire quali comandi ed in che ordine inviarli per configurare correttamente il dispositivo.

 

 

5 Commenti

  1. Andrea Salvatori IU6FZL Andrea Salvatori IU6FZL 5 agosto 2018
  2. spips77 spips77 3 settembre 2018

Scrivi un commento

EOS-Academy

Ricevi GRATIS le pillole di Elettronica

Ricevi via EMAIL 10 articoli tecnici di approfondimento sulle ultime tecnologie