Barcode reader – parte 2

Update 20 Giu 2022: All parts together and translated into English
https://hackaday.io/project/185787-hid-bluetooth-phone-qr-barcode-reader

Ecco la seconda parte del progetto Barcode reader. Qui vi presento una piccola App per provare il funzionamento della scheda hardware con il micro ATmega88 che ho descritto nella parte 1. Per sviluppare questa App ho usato il tool B4A della Anywhere software. Si tratta di un ambiente di sviluppo completo che in unione allo SDK Android permette di scrivere le App per Android (e non solo!) con grande facilità. Il tempo di apprendimento di questo “Basic per Android” (B4A) è veramente breve, anche grazie a un magnifico forum dove è possibile chiedere aiuto in caso di difficoltà. Consiglio a tutti di installarlo per rendersi conto di quanto sia facile sviluppare le proprie App e quanto sia utile avere in tasca un computer così potente come è uno smartphone. Non serve solo per andare sui “social”…

Scaricare e installare tutto l’ambiente richiede davvero poco tempo, al massimo una ventina di minuti. Potete partire da questo link e seguire passo passo le istruzioni, eseguendo il download di quanto richiesto. Quando iniziai a usare questo strumento (nel 2011) era a pagamento. Ora è COMPLETAMENTE gratuito!

Per scrivere questa App sono partito da un esempio, che potete trovare a questo link. Ho fatto le mie prove e le mie modifiche e sono arrivato a generare l’App che vi presento. Questa App non è pubblicata sul “market”, ma potete scaricare BTserSend.zip dalla pagina Barcode reader – downloads.

Ecco come si presenta l’App:

A sinistra vediamo la schermata iniziale, in cui ci viene richiesto di dare l’autorizzazione per proseguire. Il Bluetooth ne ha bisogno per poter comunicare. Successivamente, avremo il pannello di controllo con 4 elementi. Il pulsante “Connetti” avvia il Bluetooth e fa una ricerca per un dispositivo che abbia i caratteri “HC-06” nel proprio nome. Se lo trova, viene eseguito un tentativo di connessione sulla seriale. Attenzione! Questa App utilizza il protocollo standard Bluetooth, quindi se prendiamo un modulo BLE, tipo lo HC-10 e con i comandi AT proviamo a cambiargli il nome in HC-06, l’App riuscirà a vederlo e tenterà il collegamento, ma ci sarà un errore perché il protocollo BLE è completamente diverso. Per alcuni esempi di App che usano tale protocollo, date un’occhiata agli altri articoli su questo sito. Ok, usando quindi un HC-06 tipo “seriale passthrough”, se il tentativo di connessione ha successo, vedremo nella sottostante finestra dei messaggi la scritta “Seriale ok” e il tasto “Invia”, precedentemente grigio, si colorerà di verde (e il pulsante diventerà attivo). Nella finestra di edit a destra del pulsante “Invia”, sarà possibile inserire la coppia di caratteri esadecimali che si vogliono trasmettere al circuito con il modulo HC-06. Si possono usare minuscole o maiuscole e separare i campi con spazi, ma i soli caratteri consentiti sono i numeri da [0] a [9] e le lettere da [A] a [F]. Se si usano altri caratteri si vedrà un breve messaggio di errore. Una volta scritta la coppia di numeri esadecimali, si può premere “Invia” e il codice verrà trasmesso. Se il nostro circuito è collegato a una porta usb del nostro computer, a ogni trasmissione corrisponderà un carattere ricevuto come se fosse stato digitato sulla tastiera (consiglio di aprire un notepad per fare le prove). Vi ricordo che se il primo byte è FF, viene trasmesso un carattere con il tasto shift premuto, mentre se si inizia con FE il tasto shift non è premuto. Al momento ho lasciato la libertà di inserire qualsiasi valore per i due bytes (può essere utile per altri progetti), ma nella App finale (il Barcode reader vero e proprio) ci saranno solo coppie FFxx o FExx. Per gli scancode relativi ai vari tasti, si può consultare la tabella relativa ai tasti premuti in questo documento PDF (capitolo 10). Una versione ridotta, con i soli tasti che verranno utilizzati nel progetto, è visibile in questa figura:

Altre pagine interessanti sull’argomento:
https://wiki.osdev.org/USB_Human_Interface_Devices
https://www.win.tue.nl/~aeb/linux/kbd/scancodes-10.html