Sostituire tastiera a matrice 8x8 con tastiera USB

Buongiorno cari appassionati, mi si è presentato un problema, ma ho le idee troppo intrecciate per venirne a capo. Ho una macchina CNC che monta una vecchia tastiera querty + tastierino num con una matrice 8x8. Vorrei sostituirla con una normale tastiera USB. Premesso che devo ancora scoprire le corrispondenze dei vari tasti sulla matrice, e che non ho la necessità di leggere piu di un tasto alla volta , vorrei lasciare "libera " la scelta della corrispondenza tramite il software. Ora ammesso di montare una semplice interfaccia host su arduino, dovrei leggere i codici ASCII della tastiera e trasformarli chiudendo in uscita due delle 8 uscite che userei per simulare i vecchi tasti della matrice, corrispondente al tasto premuto. Avete qualche dritta in merito? Perchè più ci panso, più mi sto confondendo le idee. Grazie a tutti.

La vedo dura

In buona sostanza tu vuoi usare arduino per emulare
una tastiera PS2 e
un tastierino a matrice comandando il tutto con quello che
leggi in ingresso da una tastiera USB

Fase uno: si puo fare
Fase 2 Diventa più difficile: perche dovresti tenere le masse in comune tra Arduino e macchinario, ma questo ti impedirebbe di usare una matrice multiplata. Da qui discende che dovrai usare degli opto isolatori
Fase 3: la vedo molto dura: molti ci hanno provato a leggere una astiera USB, ma pochi dicono di esserci riusciti. Se poi li vai a vedere questi pochi scopri che hanno usato una tastiera dual-standard: USB-PS2 collegandola PS2

Spiega meglio il tuo problema che forse ci sono alternative

Per quanto riguarda la matrice potresti usare una vecchia matrice a divisione di spazio telefonica ad esempio una M093 12x8 della SGS oggi costruita anche da altri costruttori come Mitel che fa la MT8816 pin2pin compatibile con m093 o mt8809
Queste crosspoint switches permettono anche la chiusura multipla di qualsiasi combinazione di switches

Per la tastiera è ancora possibile trovare facilmente una PS2 come ti è già stato detto che è molto più usabile di una USB

Se si usano microcontrollori del secolo scorso sono d'accordo.
Se invece si sceglie l'hardware adatto, dotato di controller USB integrato, è quasi banale.

Con un ESP32-S3 Devkit ad esempio, hai già la seconda porta USB integrata nella board e c'è veramente poco da fare (si trovano anche con la type-C).
Si potrebbe eventualmente usare anche una tastiera wireless BLE.

In teoria lo potrebbe fare anche il microcontrollore usato con Arduino Uno R4, ma ovviamente la cosa non è stata prevista a livello hardware (e figuriamoci software).

Ah
Su questo sono d'accordo anch'io

Ma tu sai esattamente cosa sta usando lui?

Inoltre da una rapida ricerca non ho trovato esempi funzionanti? Anzi molte richieste di aiuto, quelle si

Se hai esempi funzionanti da citate citati

E in futuro prima di criticare la mia risposta pensa al fatto che io ho risposto volentieri e per primo

Ti invito a farlo tu la prossima volta

Al messaggio privato, ti rispondo in privato perché non mi sembra il caso di inquinare un post con questioni che sono fuori luogo.

Librerie e sketch di esempio:

Alcuni video:

Per quanto riguarda la scelta dell'hardware è evidente che @bschiera è ancora nella fase di selezione: quindi invece di avventurarsi in cose strane, shield varie e compagnia bella, quale momento migliore per consigliare una soluzione collaudata e con ampio supporto online?

Carissimi, vi ringrazio per l'attenzione, volevo precisare alcune cose, non ho ancora deciso quale hardware usare, per cui pretendo per il più semplice in todo. Provo a illustrare meglio la situazione. Una vecchia scheda basata su Z80, comanda un asse a controllo numerico, il tutto si interfaccia con l'operatore tramite una tastiera QWERTY(molto snella)+ tastierino numerico+altri 6 tasti funzione. Il tutto ha più di 20 anni, e la tastiera a matrice inizia a difettare. la stessa è collegata con 16 poli, di cui 8 con diodi sulla mainboard della CNC, per cui presumo che usi una matrice 8x8 (in totale sono presenti 57 tasti).Voglio praticamente staccare il connettore della vecchia tastiera e collegare il mio circuito che dovrebbe quindi Emulare la vecchia matrice, come tastiera a monte del mio circuito pensavo ad una normalissima tastiera USB, o PS2 come da voi consigliato. Considerate anche che verrà usata esclusivamente premendo un solo tasto per volta. Giusto per rendervi meglio partecipi a quello che ho davanti al momento. Intanto vi ringrazio per i consigli, darò un occhiata ailink che mi avete segnalato, vediamo se si riuscirà a venirne fuori. Grazie.

E' gia' piu' chiaro, e mi intriga

non dovrebbe essere difficile da fare, ma devi specificare l'hardware che vuoi usare lato arduino

prima operazione certamente capire come si comporta la tastiera rispetto agli 8 + 8 poli

se la puoi staccare devi metterti a battere tutte le possibili connessioni

oppure collegarla all'arduino, per farlo fare a lui

Su una piegatubi di 30/35 anni con pannello operatore fatto con tastiera in membrana ormai andata ho disegnato un PCB con tasti i meccanici da 5x5mm e un distanziale forato e sagomato riapplicando sopra la stessa tastiera in membrana oramai inattiva, andrà avanti altri 30 anni
Nota: Z80 anche là, era molto usato a quel tempo, specialmente su DRO e piccoli controlli di automazione

Ciao @bschiera, come procede il progetto?

Al momento sto lavorando con un ESP32-S3 ed ho bisogno di leggere alcuni file da una USB flash drive (usando la modalità USB host MSC - Mass Storage Class).
Purtroppo sulla ESP32-S3-DevKitC-1 in mio possesso, le due porte micro-USB disponibili non condividono i 5V e quindi mi sono dovuto preparare un adattatore micro-USB <-> USB A femmina.

Nel frattempo mi è tornata in mente questa discussione ed ho voluto provare anche ad attaccare una tastiera per provare la modalità HID.

Ho provato prima l'esempio incluso nel framework ESP-IDF e funziona alla grande (non mi aspettavo nulla di meno) e successivamente ho anche provato questa libreria Arduino e ti posso confermare che funziona senza alcun problema.

Sperando che possa essere utile, allego lo sketch di prova che sostanzialmente è l'esempio incluso dove ho aggiunto una funzione per fare il parsing del messaggio HID (molto basico e solo con layout tastiera US) stampando sulla seriale i caratteri ricevuti.

EspUsbHostKeybord.zip (2.6 KB)

Salve a tutti, purtroppo per priorità di salute, ho dovuto mettere in stdby il progetto. Spero di riprendere a breve. Grazie a tutti.