ESP32 (7) – menuconfig

luca 23/01/2017 2

Come abbiamo visto nei precedenti tutorials, la configurazione di diversi aspetti del framework esp-idf avviene tramite un menu di configurazione:

esp32-menu01

esp32-menu00

E’ possibile utilizzare lo stesso menu per configurare opzioni/parametri relativi al programama che stiamo sviluppando: nel tutorial di oggi vedremo come fare!

Kconfig

Il menu di configurazione del framework viene configurato tramite alcuni files di testo. La sintassi di questi files è mutuata dalla configurazione del kernel Linux e prende il nome di kconfig language.

Per poter aggiungere opzioni relative al nostro programma, è necessario creare un file chiamato Kconfig.projbuild nella stessa cartella che contiene  il sorgente del programma:

esp32-menu00b

Il contenuto di questo file è raggruppato all’interno delle voci:

menu "Nome menu"
[...]
endmenu

che indicano il nome della voce di menu principale sotto la quale saranno ragruppati tutti i parametri che andremo a definire all’interno. Se ad esempio scriviamo

menu "Custom configuration"

avremo:

esp32-menu02

I parametri di configurazione più semplici hanno la seguente struttura:

config <nomeparametro>
  <tipo parametro> <prompt>
  range min max
  default <valore di default>
  help
    <spiegazione>

Il tipo parametro può assumere i seguenti valori:

  • string, per parametri di tipo testo
  • int, per parametri a valori interi
  • hex, per parametri espressi in esadecimale
  • bool, per parametri di tipo binario

Se ad esempio vogliamo configurare la porta TCP sulla quale è in ascolto un server, la definizione del relativo parametro può essere:

config TcpPort
  int "Server TCP port"
  range 1 65535
  default 80
  help
    Enter the TCP port the server is listening on

E’ inoltre possibile realizzare voci di menu a scelta multipla:

choice
  config <choice_1>
    bool <prompt>
  config <choice_2>
    bool <prompt>
  ...
  default <default choice>

Una volta configurati i diversi parametri, i loro valori sono salvati nel file sdkconfig all’interno della cartella principale del progetto:

esp32-menu04

Il nome delle costanti corrispondenti ai diversi parametri è CONFIG_<nome parametro>. Riprendendo l’esempio sopra, la costante relativa alla porta TCP da utilizzare nel nostro programma avrà nome CONFIG_TcpPort.

Nel mio repository Github trovate un esempio completo. Il file Kconfig.projbuild definisce alcuni parametri per illustrare i diversi tipi possibili:

esp32-menu03

Una volta configurati, i parametri vengono scritti nel file sdkconfig:

esp32-menu05

ed eseguendo il programma, visualizzati anche via seriale:

esp32-menu06

Conclusioni

La possibilità di estendere l’uso del menu di configurazione del framework a parametri custom del nostro programma consente di configurare tutti gli aspetti di un progetto in maniera comoda e unificata. Nell’esempio precedente i parametri relativi alla rete wifi (SSID e password) erano hardcoded all’interno del sorgente del programma: una scelta migliore è ora esternalizzare tali parametri inserendoli proprio nel menu di configurazione… provate!

2 Comments »

  1. Susanna 04/09/2018 at 10:31 - Reply

    Salve!
    Innanzitutto complimenti per il tutorial!

    Il menu di configurazione del mio esp32 non presenta la voce “custom configuration”.
    Si presenta come la prima foto che compare in questa pagina.

    Come mai?

    Mi servirebbe proprio una funzionalità per assegnare dei parametri non hardcoded e non so come fare.

    • luca 08/09/2018 at 09:30 - Reply

      Ciao Susanna, hai creato il file Kconfig.projbuild con i parametri che vuoi configurare tramite menuconfig? Verifica che sia nel path corretto…

Leave A Response »

Questo sito usa i cookie per poterti offrire una migliore esperienza di navigazione maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi