Come creare un client HTTP con ESP32 e Arduino IDE

esp32 arduino http

Utilizzare una board ESP32 per andare in rete come client su protocollo http e https prevede di poter configurare la scheda con Arduino IDE.

Spesso i nostri lettori ci chiedono come funziona la board ESP32. A tal proposito, abbiamo pubblicato recentemente un video in cui mettiamo a confronto le caratteristiche di un ESP32 e di un Arduino. Tuttavia iniziare a lavorare con tale scheda da zero richiede un minimo di preconfigurazione. Oggi ci occuperemo proprio di questo.

Configuriamo Arduino IDE

Per prima cosa occorre fare in modo che il codice compilato sia leggibile dal processore Expressif anziché l’Atmega328, sfruttandone i 2 MB di Flash, i 520 kb di SRAM e la velocità di elaborazione (sino a 240 MHz contro i 16 MHz di Arduino). Apriamo Arduino IDE ed operiamo come segue.

Selezioniamo File/Impostazioni, e nella casella “URL aggiuntive per il gestore schede” inseriamo la stringa

HTTP ESP32

Andiamo quindi in Strumenti/Gestione scheda, inseriamo nella casella di ricerca ESP32, e installiamo il software.

ESP32 configurazione Arduino IDE

Infine, dal menu Strumenti/Schda/ESP32 Arduino selezionare il modello di ESP32 in nostro possesso. Aprendo il menù degli esempi troveremo il raccoglitore con tutti i listati per ESP32.

Andare su Internet con ESP32

A questo punto, carichiamo l’esempio HTTPClient/BasicHTTPClient e analizziamolo:

Le righe dalla 8 alla 15 caricano (gli header del)le librerie necessarie; viene quindi definito l’oggetto wifiMulti, che si occuperà di gestire la comunicazione wireless.

Le righe tra la 19 e la 48 prevedono l’inserimento di un certificato digitale rilasciato da opportuna Certification Authority, per poter viaggiare in HTTPS su canale cifrato. Nel nostro programma base non lo useremo, ma la riga di codice necessaria, seppur commentata, esiste.

Nel setup inizializziamo la seriale (52-56), attendiamo un timeout (58-62), e tentiamo il collegamento alla rete (64). Ovviamente i valori di SSID e PASSWORD vanno sosituiti con quelli della rete alla quale ci si vuole connettere.

Il loop è decisamente semplice: si attendono 5 secondi se non c’è connessione. Quando la connessione risulta attiva, si crea l’oggetto http (il nostro client). La riga 76 contiene l’indirizzo HTTPS, la riga 77 quello di un server in connessione HTTP (quello che useremo in questo esempio). NOTA: la stringa tra apici nell’http.begin deve contenere un indirizzo valido al quale è in ascolto una pagina in grado di rispondere ad una richiesta GET. Non tratteremo in questo articolo il formato necessario.

HTTP GET

 

Se otterremo un codice positivo (riga 84) stamperemo l’header. Se il codice corrisponde alla costante HTTP_CODE_OK allora copiremo nella stringa “payload” il contenuto della risposta alla nostra GET. Se invece avremo un codice di errore, scriveremo un messaggio sul Serial Monitor.

Considerazioni finali

Se il nostro server dispone dei servizi opportunamente progettati per rispondere a chiamate GET (o POST) del client ESP32 (è possibile inviare diversi parametri alla volta), inserire i dati riscontrati dal microcoltrollore in un database per una successiva elaborazione grafica sarà una passeggiata. ESP32 potrà porsi in modalità sleep in attesa di un segnale di wake up, quindi registrare il segnale, elaborarlo, inviarlo via rete wireles al server e rimettersi a “dormire”… allungando notevolmente la vita delle batterie.

Niente male, vero?

 

Join our groups on Telegram…

… and don’t forget our social channels!

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

4 Comments

  1. Luciano Veneziano | | Reply

    Mi dispiace, ma il listato sopra non funziona. Ho provato con il mio ESP32 senza riuscirci.

  2. Luigi_Morelli | | Reply

    Cosa significa “non funziona”?

    Di seguito la lista dei possibili problemi che un utente potrebbe riscontrare. Facci sapere dove si blocca il programma, e cercheremo di aiutarti.
    (Tieni presente che la programmazione di un client server per il networking non è il modo più banale per avvicinarsi a ESP32…)

    – Non compila
    – Compila ma non viene trasferito su ESP32
    – Dà un errore al lancio (nel caso, occorre numero e codice di errore)
    – Arriva al setup() ma si blocca in wait
    – Passa il setup() ma non riconosce SSID e PASSWD
    – Non scrive lo stato sul serial monitor
    – Si collega ma non risponde alla GET
    – RIsponde “GET Failed” sul serial monitor

  3. Mario | | Reply

    Adattato per la mia applicazione,funziona perfettamente. Grazie!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.