Automatische data entry – getypt als een keyboard met HID interface

29 maart 2022

Het handmatig invoeren van verzamelde data kost vaak extra tijd kost, introduceert de mogelijkheid van nieuwe fouten en beperkt de schaalbaarheid van verzamelen en analyseren van data. Met de introductie van het USB HID (Human Interface Device) protocol is een mogelijkheid ontstaan waarmee data automatische ingevoerd kan worden, alsof het ‘live’ door een persoon ingetypt wordt. Voor een recent project heb ik de HID interface ingezet om een gewicht van een industriële weegschaal te meten en automatisch in te voeren in een Google Forms invulformulier.

Om een HID data entry device te ontwikkelen is het automatisch verzamelen van data nodig. Dit kan met schakelaars, sensoren, seriële poorten, barcode readers, gewichtsmeters of als output van bijvoorbeeld een TinyML processor. De data wordt verzameld, op de juiste wijze voorzien van hoofdletters, kleine letters, een ‘enter’ en eventuele ESC codes. Vervolgens wordt de data als een tektstring door de processor naar een USB poort gestuurd. Zo’n processor is bijvoorbeeld een Raspberry Pico of een Adafruit Qt Py (18x22mm). Het programmeren vindt plaats Python of C++.

Voor het automatisch intypen van data kan een formulier gebruikt worden, maar kan ook direct in een office applicatie als Excel of Word. Wanneer de cursor op de juiste positie staat wordt het HID device aangestuurd en wordt de data ingetypt, waarbij de computer geen onderscheid kan maken of dit geautomatiseerd of handmatig  door een persoon gebeurd. Voor het automatiseren van data entry is dit een mooie, praktische toepassing, waarmee verzamelde data automatisch toegevoegd kan worden voor dataverrijking.

Toepassingen zijn: het automatisch invoeren van gemeten gewicht, gescande barcodes, temperatuur, luchtvochtigheid, feedback smiley buttons, deuropeners, bewegings scanners. Creatieve toepassingen zijn bijvoorbeeld een random gedichten generator welke een gedicht uittypt wanneer je de processor in de USB poort steekt. Mogelijkheden te over.