Blueprintf: un monitor seriale Bluetooth per il debug

Un modo per effettuare il debugging di progetti basati sui microcontrollori è quello di mandare messaggi attraverso la porta seriale UART. Poi, un'interfaccia UART-USB può trasferire il messaggio ad un Pc per visualizzarlo. Ora, per rendere tutto il processo più rapido e comodo, è possibile realizzare un dispositivo portatile, di dimensioni ridotte, per visualizzare i dati seriali senza bisogno di un Pc; quest'ultimo può infatti essere sostituito da un telefono cellulare o da un tablet, con i relativi vantaggi. Primo, non sempre si ha a disposizione immediata un Pc, soprattutto quando si lascia la scrivania per lavorare sul campo. Secondo, l'interfaccia UART - USB a volte resta in attesa, soprattutto se ci sono dei bug presenti nel SUT (System Under Test).

Ricetrasmettitore seriale Bluetooth HC-05

HC-05 Bluetoothe Serial Transceiver

I ricetrasmettitori Bluetooth, come HC-05, si trovano a poco prezzo su eBay; sarebbe molto semplice collegarne uno ad un sistema integrato, ma ciò non permetterebbe di compiere tutte le operazioni. Ad esempio non è possibile cambiare il baud rate che si usa per "ascoltare" il SUT. Il baud rate dell'HC-05 può essere modificato solo dal microcontrollore a cui è collegato, e richiede un processo complicato (toggle del pin, invio del comando, reset dell'HC-05, che interrompe qualsiasi connessione Bluetooth stabilita). Il tipico SUT non è configurato per controllare un HC-05. Inoltre non si può eseguire l'auto-detect del baud rate e visualizzarlo, sia perché ci sono bug che possono essere determinati da un baud rate errato, sia perché può essere utile ricordare il baud rate che sta utilizzando il SUT. Infine, non è possibile vedere se i dati provengono dal SUT. Se non vengono emessi messaggi di debugging da un sistema integrato, è difficile capire se il problema deriva dall’unità trasmittente, o da quella ricevente, oppure se il SUT non invia alcun dato. Questo progetto nasce quindi dall’esigenza di includere in un unico dispositivo un HC-05, un microcontrollore (un microchip PIC32), uno schermo Led, una batteria ed un tasto.

Poiché la funzione C, comunemente utilizzata per stampare i messaggi di debug, è “printf”, e poiché è presente una connessione Bluetooth, è stato scelto il nome Blueprintf per il progetto.

Relativamente al Bluetooth vi suggerisco di leggere questo articolo: Bluetooth la guida definitiva

Il collegamento di Blueprintf

Blueprintf viene collegato al SUT tramite due fili:

Blueprintf

Massa e UART Receive (Rx) (collegato al Transmit (Tx) UART del SUT). Come opzione, per inviare dati da un tablet al SUT, è possibile collegare UART Tx di Blueprintf a UART Rx del SUT. Blueprintf ha la sua batteria da 9V, quindi non deve essere collegato all’alimentazione del SUT e può essere dotato di un vero interruttore on/off. Quando Blueprintf è acceso, visualizza il baud rate per il quale è settato e che ricorda dall’ultima volta. Sono presenti quattro cifre, quindi baud rate bassi come 1200 0 9600 vengono visualizzati così come sono, mentre per velocità maggiori, come 19200 o 115200, si utilizza un formato ridotto, come 19.2 0 115.2. Il display si spegne dopo tre secondi; premendo il tasto una volta viene rivisualizzato il corrente baud rate, mentre premendolo di nuovo avanza secondo le velocità comunemente utilizzate (1200, 2400, 4800, 9600, ecc.).

Le funzioni del tasto di Blueprintf

Una delle opzioni offerte dal tasto è “Auto”; quando viene utilizzata, Blueprintf attende che i dati arrivino dal SUT, trova l’impulso più corto e da esso calcola il baud rate. L’UART del PIC32 è dotato di una funzione di autodeterminazione del baud rate, ma richiede che i dati in ingresso siano ASCII ‘U’ (01010101 in binario). La funzione di autodeterminazione del nostro dispositivo non prevede questo requisito, ma richiede che, da qualche parte nella serie di dati, si presenti un modello 010 o 101. Una volta auto identificato il baud rate, viene visualizzato sul display. Per quanto riguarda il telefono/tablet, si possono utilizzare sia BlueTerm+ che SENA BTerm, entrambi disponibili su Google Play Store per i dispositivi Android. Tuttavia, anche altre app Bluetooth dovrebbero funzionare, incluse quelle iOS dell’Apple Store. Le applicazioni seriali Bluetooth possono sia inviare che ricevere, quindi il messaggio digitato sulla tastiera viene inviato attraverso Blueprintf al SUT. Tutto ciò permette di inviare comandi ad un microcontrollore (supponendo che sia progettato per accettarli).

Microchip per Blueprintf

Poiché nel progetto si stava utilizzando un PIC32, si è deciso di provare il nuovo framework Harmony di Microchip, che si è dimostrato molto buono. Tuttavia il framework è stato criticato aspramente sul forum Microchip a causa di, presunti, numerosi bug o carenze. Dopo la prova, la versione beta e la versione 1.00 non si sono affatto dimostrate all’altezza, mentre la 1.01 mostra una buona usabilità. Ci sono moduli ancora segnati come beta, ci sono ancora dei bug e ci sarebbero delle funzioni da aggiungere; tuttavia l’architettura è buona e rende semplice l’utilizzo delle periferiche e dei timer.
Per esempio, Harmony fornisce un servizio timer che permette di richiedere callback periodici o unici per differenti archi di tempo.
In questo modo è possibile eliminare i delay loop dal codice e far lavorare tutto in maniera asincrona. Inoltre, siccome è molto semplice da configurare, si può utilizzare la periferica Input Capture del PIC32 per il codice di auto baud. Con il click sulla checkbox, Harmony permette di aggiungere un sistema operativo RTOS al progetto, a cui poi va ad integrarsi automaticamente. Harmony offre le code di messaggi e una consolle di comando, elementi anch’essi aggiungibili ad un progetto con pochi click.

È possibile scaricare il codice sorgente, gli schemi e il progetto della scheda qui. Il codice sorgente utilizza MPLABX e Harmony Microchip. L’hardware è stato progettato nella versione free di DipTrace.

Article courtesy of GalacticStudios

ALLEGATO

blueprintf

5 Commenti

  1. StefanoDS StefanoDS 13 aprile 2015
  2. StefanoDS StefanoDS 13 aprile 2015
  3. StefanoDS StefanoDS 13 aprile 2015
  4. maxvarese 13 aprile 2015

Scrivi un commento

Send this to a friend