
In questo articolo progettuale vedremo come realizzare un prototipo di GamePad e come giocare in modalità wireless mediante comunicazione Bluetooth utilizzando un dispositivo mobile con sistema operativo Android.
Descrizione del progetto
Nella fase di progettazione del circuito GamePad si è preferito impiegare come microcontrollore la scheda di sviluppo ESP32-DevkitC per il basso costo, ottime prestazioni e disponibilità di varie opzioni di comunicazione wireless come Wi-Fi, Bluetooth ed ESP-NOW. L’ESP32 può funzionare con una tensione di alimentazione esterna compresa tra 4 V e 12 V applicata al pin VIN, mentre può fornire una tensione in uscita di 5 V e 3,3 V. La Figura 1 riporta lo schema elettrico del circuito GamePad.

Figura 1: Schema elettrico del GamePad
Il circuito è molto sintetico essendo costituito da un microcontrollore ESP32, quattro pulsanti, quattro resistori e un joystick. Le uscite dei pulsanti e joystick sono collegate ai rispettivi pin digitali d’ingresso dell’ESP32. La pressione dei pulsanti e il movimento del joystick attiva la rispettiva funzione di posizione all’interno di un videogioco. L’alimentazione a 3,3 V del circuito è resa disponibile dal pin 3V3 dell’ESP32, che a sua volta può essere alimentata collegando il suo connettore USB ad un computer, ad un alimentatore esterno a 5 V dotato di connettore USB o collegandolo ad un alimentatore esterno ai pin VIN e GND dell’ESP32.
La scheda di sviluppo ESP32-DevkitC
La scheda ESP32-DevkitC V4 utilizzata in questo progetto integra il modulo ESP-WROOM-32D; in alternativa è possibile usare anche la ESP32-DevkitC V4 con ESP-WROOM-32U (la sola differenza è che il modulo ESP32 WROOM 32D ha l'antenna a bordo, mentre l'ESP32 WROOM 32U ha il connettore U.FL che deve essere collegato ad un'antenna IPEX esterna). Questa scheda ha 38 pin, di cui 28 pin sono GPIO e ogni pin ha più funzionalità che possono essere configurate utilizzando registri specifici. Sono disponibili molti tipi di GPIO utilizzabili come ingresso digitale, uscita digitale, ingresso analogico-uscita-digitale (ADC), ingresso digitale–uscita analogica (DAC), touch capacitivo, porta di comunicazione UART e molte altre funzionalità.
Esistono molte versioni del chip ESP32 disponibili sul mercato. La scheda di sviluppo ESP32-DevkitC V4 della Espressif utilizzata in questo progetto è basata sul modulo ESP-WROOM-32D. Tuttavia, la funzionalità di tutti i pin GPIO è la stessa in tutte le schede di sviluppo ESP32. Per fare chiarezza su come utilizzare i pin GPIO, quale pin GPIO può essere utilizzato come pin di ingresso-uscita digitale, quale pin GPIO può essere utilizzato come pin analogico o digitale, quale pin non dovrebbe essere usato per sicurezza, riteniamo utile esaminare nei dettagli i pin GPIO. Nella Figura 2 e nella Figura 3 è rispettivamente riportato il layout della scheda e la disposizione e la funzione dei pin della scheda ESP32-DevkitC V4. Il colore di ogni pin indica la sua funzione, come descritto nell’elenco sotto l’immagine dei pin della scheda.

Figura 2: La scheda ESP32-DevkitC

Figura 3: Pin della scheda ESP32-DevkitC V4
Il modulo Joystick
Il joystick impiegato in questo progetto utilizza due assi, X e Y, per rappresentare la propria posizione, consentendo il movimento direzionale. L'asse X controlla il movimento da sinistra a destra, mentre l'asse Y controlla il movimento verso l'alto e verso il basso. Gli assi sono spesso implementati tramite potenziometri che convertono il movimento fisico in segnali elettrici. In Figura 4 è mostrato il modulo joystick in cui è riportata la denominazione di ognuno dei cinque pin, che ritroviamo indicati anche nello schema elettrico di Figura 1.

Figura 4: Modulo joystick
Realizzazione pratica
Materiale necessario
Oltre alla scheda di sviluppo ESP32, per realizzare il circuito del GamePad sono necessari un modulo joystick, quattro pulsanti, quattro resistori e alcuni cavetti di collegamento dei componenti, come elencato di seguito:
• N. 1 Scheda di sviluppo ESP32-DevkitC V4
• N. 4 pulsanti da 12 mm, passo 2,54 mm (con tappo rotondo di vari colori)
• N. 4 Resistori 4,7 Kohm ¼ W
• N. 1 Modulo joystick X-Y
• N. 1 Breadboard 830 contatti
• Cavi jumper Dupont
Inserite i pin della scheda ESP32 nei contatti della breadboard disponendola con il connettore USB rivolto verso l’esterno del lato corto della breadboard per consentire un agevole collegamento del cavo USB al suo connettore microUSB. Poi inserite nei contatti i pin dei pulsanti e del joystick disponendo i componenti affiancati. Con dei jumper eseguite i collegamenti dei componenti riferendovi allo schema elettrico del circuito in Figura 1. Completati i collegamenti dovreste aver realizzato il prototipo del GamePad come mostrato in Figura 5.

Figura 5: Prototipo del GamePad
Programmazione della scheda di sviluppo ESP32
Per programmare la scheda di sviluppo ESP32 viene utilizzato l'IDE Arduino. Quindi, scaricate e installate l'ultima versione dell'IDE Arduino dal sito Web ufficiale di Arduino https://www.arduino.cc/en/software/.
Aprite l'IDE, cliccate su Impostazioni > "URL del gestore scheda” e incollate il link del pacchetto ESP32: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json.
Collegate l’ESP32 al computer. Poi andate su Strumenti > "Gestore schede”, nella barra di ricerca digitate "ESP32", quando appare cliccate sulla casella “esp32” e installate l’ultima versione. Sempre nell’IDE, selezionate la scheda ESP32 che utilizzerete cliccando Strumenti > "Scheda: ESP32 Dev Module". Successivamente, selezionate la porta COM a cui è connessa la scheda ESP32 cliccando Strumenti > Porta: “COM xx”.
Librerie BLE GamePad e NIM BLE
Il software del progetto riguardante la comunicazione Bluetooth richiede l’installazione di una libreria molto diffusa chiamata "BLE GamePad" e della libreria accessoria "NIM BLE". Se non l’avete già installata, scaricate il file .ZIP della libreria "BLE GamePad" dal sito https://github.com/lemmingDev/ESP32-BLE-Gamepad; salvate questo file denominato “ESP32-BLE-Gamepad-master.zip” in una cartella e rinominatelo come “ESP32-BLE-Gamepad.zip”. Poi, nell’IDE, andate su Sketch > #Include libreria > Aggiungi libreria da file .ZIP e caricate il file .ZIP che avete salvato e rinominato in precedenza. Per installare la libreria, ora andate su Strumenti > Gestione librerie e nella barra di ricerca digitate “ESP32-BLE-Gamepad”. Una volta trovata cliccate su “installa”; apparirà subito una finestra in cui si chiede di installare anche la libreria "NIM BLE", quindi cliccate su “Install all”, come mostrato nella Figura 6.

Figura 6: Installazione delle librerie BLE
Ora siamo pronti a programmare il codice sorgente nella scheda ESP32. Il codice è correlato alle funzionalità del circuito di Figura 1 in cui sono presenti 4 pulsanti e un modulo joystick. Per testare il circuito viene utilizzata la modalità di gioco "Gamepad Android". Quindi, nel codice sono definiti i pin dell’ESP32 corrispondenti ai pulsanti e al joystick del circuito, che selezionano la rispettiva funzione del GamePad. Qui di seguito viene riportato il codice sorgente del progetto.
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 1820 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
