Toetsenbord

Ik beschrijf hier hoe je (oude) PS/2 toetsenborden en USB toetsenborden kunt gebruiken om de Arduino te besturen (dus los van een computer). Het werkt zelfs met een draadloos USB toetsenbord.
Verderop laat ik ook zien hoe je een M5STACK toetsenbord kunt gebruiken met een Arduino, zonder dat je daarvoor de M5STACk esp32 processor nodig hebt.

PS/2 toetsenbord

Als je nog een oud PS/2 toetsenbord hebt liggen: gooi het niet weg, want je kunt dit nog goed gebruiken als toetsenbord voor je Arduino. Een toepassing is bijvoorbeeld dat een winaaar van een Arduino spel zijn naam kan invoeren in de scorelijst.
Schema (je kijkt in de plug)
Het werkt heel eenvoudig: sluit vier van de pinnen van de PS/2 plug aan volgens het schema. Gebruik een geschikte bibliotheek zoals PS2Keyboard.zip. De bibliotheek bevat een testprogramma. Bekijk hiermee welke toetsen goed worden weergegeven. Ik heb dit alles getest met twee geheel verschillende toetsenborden. Bij beide kon ik de meeste toetsen gewoon lezen, inclusief toetsen die met Shift ingedrukt werken. Met USB toetsenborden met een verloopplug van USB naar PS2 lukt het niet.
PS/2 plug naar Arduino
Als je de PS/2 plug heel wilt houden dan kun je het best een PS/2 connector kopen, maar het gaat ook (met enige moeite) met gewone jumperkabeltjes. Ik moest om dit voor elkaar te krijgen wel de isolatie van de connector van een van de kabeltjes afhalen. Sluit klok aan op pin 3 en data op pin 4 van de Arduino.
Voorbeeld uitvoer van het testprogramma
  Klik om mijn versie van de test sketch te zien  

USB toetsenbord

Om op een makkelijke manier een USB toetsenbord (draadloos of gewoon) te kunnen gebruiken heb je extra hardware nodig. Ik testte een duinopek USB host shield. Dergelijke shields kosten tussen de 5 en 10 euro. Dit shield is alleen bruikbaar met de Arduino Uno, Leonardo en Mega. Ik heb een andere module besteld die ook op andere Arduino's kan werken -- later meer daarover. Het USB protocol is vrij ingewikkeld en daarom ontkom je er niet aan om een bibliotheek te gebruiken. De meest gebruikte bibliotheek is USB_Host_Shield_2.0. Met het programma USBHIDBootKbdAndMouse.ino dat bij deze bibliotheek zit kun je het toetsenbord testen. Bij mijn draadloos Windows toetsenbord werden alle toetsen perfect herkend. Om er een bruikbaar programma van te maken moet je wel een en ander aan dit programma veranderen.

M5STACK Toetsenbord (CardKB Mini Keyboard)

M5Het M5STACK toetsenbordje
Dit een volledig QWERTY toetsenbord ter grootte van een creditcard. Eigenlijk is dit toetsenbord bedoeld voor de prijzige MSSTACK module, maar omdat hij communiceert via I²C is hij ook te gebruiken bij een Arduino. Ik heb geen bibliotheek gevonden, dus heb ik zelf een testprogramma gemaakt, dat bij mij goed werkt. Het laat alleen zien welke toets je hebt ingedrukt. Als je een ingewikkelder toepassing maakt waarbij de gebruiker af en toe iets moet invoeren, dan zul je veel moeten aanpassen. Mail me eventueel voor hulp daarbij.
De gebruikte connector dient vier draden te hebben, van beneden naar boven:
  1. geel (SCL) gaat naar pin A5 van de Arduino Uno
  2. wit (SDA) gaat naar pin A4 van de Arduino Uno
  3. rood (VCC) 3,3 volt (!)
  4. zwart (GND)
Bij mij waren wit en geel echter omgewisseld, dus vertrouw niet alleen op de kleur. Het I²C adres is 0x5F. In het stekkertje kun je met enige moeite vier mannelijk dupontdraadjes prikken. Ik moet zeggen dat het toetsenbordje goed werkt. Als je op de functieknop (fn) drukt dan krijgt elke toets daarna een aparte code. Hiermee kun je elke toets een eigen functionaliteit geven. Hoofd- en kleine letters werken als verwacht en er is ook nog een Sym knop, waarmee diverse toetsen een ander symbool weergeven. Bijvoorbeeld, Sym gevolgd door K geeft het vraagteken. In het voorbeeldprogramma hieronder worden de meeste niet-printbare symbolen vervangen door een tekst. Als dat niet kan dan moet het programma een getal weergeven (de ASCII code).

  Klik om de sketch te zien