Sommario:

Come Usare un Debugger su ESP32: 11 Passaggi (con Immagini)
Come Usare un Debugger su ESP32: 11 Passaggi (con Immagini)

Video: Come Usare un Debugger su ESP32: 11 Passaggi (con Immagini)

Video: Come Usare un Debugger su ESP32: 11 Passaggi (con Immagini)
Video: Tutorial WLED su ESP32 installazione e configurazione per strisce LED | Tutorial WLED 2024, Dicembre
Anonim
Come utilizzare un debugger su un ESP32
Come utilizzare un debugger su un ESP32

Hai mai desiderato dare un'occhiata al tuo codice per vedere perché si comporta in quel modo? Tradizionalmente nei progetti ESP32, avresti dovuto aggiungere istruzioni di stampa infinite per provare a capire cosa stava succedendo, ma c'è un modo migliore!

Un debugger è un modo per vedere cosa sta succedendo in particolari sezioni del tuo codice e per provare diversi valori di variabile senza ricompilare il tuo codice, di solito questo non è qualcosa a nostra disposizione su progetti incorporati, ma in questa guida ti mostrerò come usarlo su un ESP32.

In questa guida ti mostrerò come configurare l'hardware, configurare il software e mostrare un semplice esempio di utilizzo del debugger.

Forniture

  • ESP-Prog - Questa è la scheda necessaria per il debug

    • Esattamente quella che ho comprato*
    • $5 Più economico, ma non l'ho testato*
  • Un ESP32 che rompe i pin 12, 13, 14, 15

    • Piuma di Adafruit Huzzah32
    • D1 Mini ESP32*
  • [FACOLTATIVO] Debug Scudo che vendo su Tindie

    • Piuma Huzzah32
    • D1 Mini ESP32

* = Link di affiliazione

Passaggio 1: guarda il video

Image
Image

Ho un video su questo argomento se vuoi dargli un'occhiata.

Sul mio canale di solito realizzo video basati su ESP8266 ed ESP32, quindi se sei interessato a quelli, dai un'occhiata!

Fase 2: Hardware - Parti e cablaggio

Hardware - Parti e cablaggio
Hardware - Parti e cablaggio
Hardware - Parti e cablaggio
Hardware - Parti e cablaggio
Hardware - Parti e cablaggio
Hardware - Parti e cablaggio

Per utilizzare il debugger è necessario solo un ESP-Prog e quasi tutte le schede ESP32 (collegamenti a questi in un passaggio precedente)

Programma ESP:

L'ESP-Prog è una scheda progettata da espressif, i creatori dei chip ESP32 ed ESP8266. Si collega ai pin JTAG dell'ESP32 per consentirci di utilizzare il debugger. Può anche essere utilizzato per programmare le schede ESP32, ma non lo tratterò qui.

Scheda ESP32:

Puoi usare praticamente qualsiasi scheda ESP32 per questo una volta che si rompe i pin JTAG, che sono 12, 13, 14 e 15. Ho testato sia una piuma Adafruit Huzzah32 che una scheda D1 Mini 32 ed entrambe hanno funzionato bene.

Si noti che è possibile utilizzare i pin JTAG nel proprio sketch con il debugger, ad esempio il LED integrato della scheda Huzzah32 è sul pin 13, quindi non è possibile utilizzarlo durante il debug.

Cablaggio:

Per collegare l'ESP-Prog all'ESP32, è sufficiente utilizzare la guida al cablaggio come fornita nell'immagine sopra. Controlla con lo schema elettrico della tua scheda ESP32 se non vedi immediatamente i pin appropriati poiché a volte usano uno schema di denominazione diverso.

Scudi di debug:

Questi sono opzionali, ma vendo alcuni shield su Tindie per Huzzah32 e D1 Mini 32 che rendono il collegamento dell'ESP-Prog davvero semplice, rompe i pin appropriati a un connettore IDC che puoi usare un cavo a nastro per collegare direttamente tra lo scudo e l'ESP-Prog

Passaggio 3: Hardware - Configurazione del driver

Hardware - Configurazione driver
Hardware - Configurazione driver
Hardware - Configurazione driver
Hardware - Configurazione driver
Hardware - Configurazione driver
Hardware - Configurazione driver

Per utilizzare il programma ESP per il debug, è necessario installare i driver appropriati. PlatformIO fornisce alcuni passaggi per questo qui, ma seguirò i passaggi di Windows in questa guida.

  1. Scarica e installa i driver FTDI per ESP-Prog da qui, scorri verso destra per scaricare la versione "eseguibile di installazione" per semplificare.
  2. Scarica e installa lo strumento Zadig da qui, questo ci permette di installare un driver generico necessario per il debug.
  3. Con ESP-Prog collegato, apri Zadig
  4. Nell'applicazione Zadig, in "Opzioni", fai clic su "Elenca tutti i dispositivi"
  5. Il menu a discesa in Zadig verrà ora popolato, selezionare l'opzione "Dual RS232-HS (Interface 0)". Assicurati che sia l'interfaccia 0 che hai selezionato!
  6. A destra della freccia verde, dovrebbe essere selezionato "WinUSB", quindi fare clic su "Sostituisci driver"

Al termine, i driver dovrebbero essere configurati per l'uso!

Nota: se si cambia la porta USB che si utilizza per ESP-Prog, potrebbe essere necessario ripetere nuovamente i passaggi 3-6. Se ricevi un errore come mostrato nell'immagine sopra durante il debug, devi ripetere i passaggi.

Passaggio 4: Software: installazione di PlatformIO

Software: installazione di PlatformIO
Software: installazione di PlatformIO
Software: installazione di PlatformIO
Software: installazione di PlatformIO
Software: installazione di PlatformIO
Software: installazione di PlatformIO

PlatformIO è un IDE per lo sviluppo con vari framework embedded, incluso l'ecosistema Arduino. È più complicato da usare rispetto a qualcosa come l'IDE di Arduino, ma è molto potente e ha alcune funzionalità che mancano gravemente all'IDE di Arduino, come il completamento automatico.

È necessario che PlatformIO utilizzi il debugger. Se hai già familiarità con PlatformIO, sentiti libero di saltare avanti un paio di passaggi.

  • Scarica e installa Visual Studio Code (VS Code) dal collegamento fornito sul sito Web PlatformIO.org
  • Apri VS Code e apri il menu delle estensioni, il pulsante è evidenziato nell'immagine sopra
  • Digita "platformio" nella ricerca, selezionalo e fai clic su Installa.

Passaggio 5: software: utilizzo di PlatformIO

Software: utilizzo di PlatformIO
Software: utilizzo di PlatformIO
Software: utilizzo di PlatformIO
Software: utilizzo di PlatformIO
Software: utilizzo di PlatformIO
Software: utilizzo di PlatformIO

L'utilizzo di PlatformIO è leggermente diverso dall'utilizzo dell'IDE Arudino, quindi in questo passaggio tratteremo solo le basi per ottenere un esempio in esecuzione su una scheda.

Apertura di un esempio:

  1. Fare clic sul pulsante Home sulla barra degli strumenti di PlatformIO (come mostrato nell'immagine)
  2. Fare clic sul pulsante "Esempi di progetto"
  3. Seleziona l'esempio "Arduino-blink" nella sezione Espressif 32

Questo aprirà un progetto di lampeggio di esempio. Il layout di un PlatformIO è piuttosto diverso rispetto a un progetto Arduino, quindi esaminiamo le basi.

Dov'è il codice?

Il codice per il tuo progetto verrà memorizzato nella cartella "src", per l'esempio di blink vedrai un file "blink.cpp", questo file è lo stesso del tuo file sketch (.ino) in un progetto Arduino.

Come configuro la mia scheda?

Le configurazioni per il tuo progetto sono conservate all'interno di un file "platformio.ini" nel tuo progetto. Questa è in realtà una delle cose che preferisco di PlatformIO rispetto all'IDE Arduino, non ha mai avuto senso per me che le impostazioni della scheda non fossero legate agli schizzi.

L'esempio.ini contiene definizioni per più schede diverse, ma per semplificare le cose eliminiamo le due definizioni in basso.

Dove imposto la mia porta COM?

PlatformIO proverà automaticamente a trovare la porta COM corretta da utilizzare, quindi puoi effettivamente farla franca senza impostare nulla per questo. Ma se disponi di più porte COM, che utilizzerai quando utilizzi il debugger, penso che abbia senso impostare quella specifica di cui hai bisogno. Puoi vedere i diversi dispositivi che hai facendo clic sulla sezione "Dispositivi" nella scheda Home e puoi impostare quale sia il tuo ESP32 in "platformio.ini" aggiungendo una configurazione "upload_port".

Come carico il mio codice?

Fare clic sul pulsante Carica (l'icona è una freccia che punta a destra) e dovrebbe compilare e caricare il codice. Ora dovresti avere un LED lampeggiante sulla tua scheda.

Passaggio 6: debug: potenziale buccia di banana

Debug: potenziale buccia di banana!
Debug: potenziale buccia di banana!
Debug: potenziale buccia di banana!
Debug: potenziale buccia di banana!
Debug: potenziale buccia di banana!
Debug: potenziale buccia di banana!

Questo è qualcosa che mi ha sorpreso mentre lo stavo preparando e spero che verrà risolto quando lo proverai, ma ho pensato che fosse importante andarsene da qui.

Al momento della creazione di questa guida, l'ultima versione di PlatformIO è la 4.3.0 e presenta un bug relativo alla possibilità di eseguire il debug. Per fortuna possiamo aggiornare abbastanza facilmente all'ultima versione di sviluppo che risolve il problema.

Verificare nella Home page la versione del core PlatformIO, se è "4.3.0", eseguire i seguenti passaggi.

  1. Sulla barra degli strumenti di PlatformIO, fai clic sull'icona del terminale
  2. Nel terminale digita: pio upgrade --dev
  3. Il codice RestartVS e PlatfromIO dovrebbero essere aggiornati

Passaggio 7: debug: configurazione

Debug: Configurazione
Debug: Configurazione

Abbiamo bisogno di modificare il file "PlatofrmIO.ini" per abilitare il debug, dobbiamo solo aggiungere due cose.

debug_tool = esp-prog

Questo imposta lo strumento di debug che stiamo utilizzando.

debug_init_break = tbreak setup

Questo è un trucco che abbiamo imparato dal video di Andress Spiess sul debug su ESP32. Dice al debugger di fermarsi nel setup della nostra applicazione.

Passaggio 8: debug: avvio del debug

Debug: avvio del debug
Debug: avvio del debug
Debug: avvio del debug
Debug: avvio del debug
Debug: avvio del debug
Debug: avvio del debug
Debug: avvio del debug
Debug: avvio del debug

Prima di addentrarci, apporteremo una piccola modifica allo schizzo che renderà più semplice dimostrare cosa puoi fare con il debug.

  1. Crea una nuova variabile, "int delayTime = 1000;" al di fuori di qualsiasi metodo, questo lo renderà una variabile globale.
  2. Sostituisci il numero all'interno delle chiamate di ritardo nel ciclo con questa nuova variabile: delay(delayTime);

Carica il codice sulla scheda ancora una volta, quindi per avviare il debug, nella barra degli strumenti, fai clic su "Esegui" quindi su "Avvia debug"

Vedrai le cose muoversi nella finestra del terminale, ma anche quando ciò indica che è stato eseguito correttamente, se fai clic su "Console di debug" vedrai che funziona ancora, ci vorranno alcuni secondi per terminare.

Se tutto è andato come previsto, vedrai il debugger fermarsi all'inizio dell'installazione.

Passaggio 9: debug: utilizzo di base

Debug: utilizzo di base
Debug: utilizzo di base
Debug: utilizzo di base
Debug: utilizzo di base
Debug: utilizzo di base
Debug: utilizzo di base
Debug: utilizzo di base
Debug: utilizzo di base

Copriamo alcune delle nozioni di base su cosa puoi fare con il debugger

Creazione di punti di interruzione:

Un punto di interruzione è un punto del codice in cui si desidera che il debugger si fermi. Per creare un punto di interruzione, fare clic a sinistra del numero di riga. Come demo, aggiungi breakpoint alla prima riga nel metodo loop.

Navigazione punto di interruzione:

Per spostarti tra i punti di interruzione o passare alla riga di codice successiva, puoi utilizzare gli strumenti che appariranno nella parte superiore dello schermo. Premi il pulsante "continua" (sembra un pulsante di riproduzione) per spostare il punto di interruzione appena creato all'interno del loop.

Orologi variabili:

Gli orologi variabili consentono di monitorare il valore delle variabili quando il debugger viene arrestato in corrispondenza di un punto di interruzione. Per aggiungere un nuovo orologio variabile puoi fare clic sull'icona +, quindi digitare semplicemente il nome della variabile. Come demo, digita la variabile che abbiamo aggiunto nel passaggio precedente "delayTime"

Visualizzatore variabile:

Puoi anche vedere tutte le variabili e i loro valori disponibili nel punto di interruzione corrente. Per dimostrarlo, se guardi nella sezione "Globale" dovresti trovare la variabile "delayTime".

Modifica del valore delle variabili:

Puoi anche modificare i valori delle variabili e avrà effetto immediato sul comportamento dei tuoi codici. Per dimostrarlo, fai clic sulla variabile delayTime nella sezione Visualizzatore variabili e modifica il valore in "100". Per mostrare questo funzionamento, disabilitare il punto di interruzione all'interno del ciclo facendo nuovamente clic a sinistra del numero di riga. Premere il pulsante Continua sulla barra di navigazione del punto di interruzione. Il LED sul tuo ESP32 dovrebbe ora lampeggiare molto più velocemente di prima.

Passaggio 10: risoluzione dei problemi

Risoluzione dei problemi
Risoluzione dei problemi

Durante i miei test ho scoperto che alcune volte non riuscivo a caricare su ESP32 mentre era connesso al programma ESP, e non riuscivo a capire un motivo per cui ciò accadeva, perché la maggior parte delle volte potevo caricare senza alcun problema. Ho scoperto che potevo semplicemente disconnettere ESP32 e ESP-Prog, caricare il codice su ESP32 e poi riconnetterli e avrebbe funzionato bene.

Fase 11: Conclusione

Penso che questo sia uno strumento davvero interessante da aggiungere alla cassetta degli attrezzi per aiutare a capire cosa sta succedendo all'interno del tuo progetto.

Mi piacerebbe sapere se lo trovi utile!. Per favore fammelo sapere nei commenti qui sotto, o unisciti a me e a un gruppo di altri creatori sul mio server Discord, dove possiamo discutere di questo argomento o di qualsiasi altro creatore correlato che hai, le persone sono davvero utili lì, quindi è un ottimo posto dove appendere fuori.

Vorrei anche ringraziare enormemente i miei sponsor Github che aiutano a supportare quello che faccio, lo apprezzo davvero. Se non lo sai, Github sta abbinando le sponsorizzazioni per il primo anno, quindi se fai una sponsorizzazione la abbineranno al 100% per i prossimi mesi. Grazie per aver letto!

Consigliato: