Keyboard besturen met Spraakmodule

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 4
Geregistreerd: 31 Okt 2019, 18:21

Keyboard besturen met Spraakmodule

Berichtdoor LaurensV » 31 Okt 2019, 18:32

Beste allemaal,

Ik ben HBO-student Gezondheidszorg Technologie en voor mijn 3e jaars stage doe ik onderzoek naar 'Game Accessibility'. Ik onderzoek of het mogelijk is om games (Tetris) te besturen door middel van een 'draagbare' CUI (conversational user interface - spraakbesturing). Uiteindelijk moet een persoon met een meervoudige beperking (amputaties of verlamming) op elke PC Tetris kunnen spelen. Het is een experiment dus vandaar even de simpele game Tetris.

Het komt er op neer dat ik wanneer ik 'Links' zeg het object in Tetris 1 hokje naar links gaat (de KEY_LEFT_ARROW zou geactiveerd moeten worden - 0xD8). Ik heb zelf al geëxperimenteerd met LED'jes aan en uit te zetten door middel van spraak (Geeetech Voice Recognition Module). Dit is mij inmiddels gelukt. Ik weet ook dat je door middel van buttons hexadecimale waarde naar je PC/laptop kunt sturen waardoor je als het ware kunt typen in een tekstverwerker. Hiervoor kun je Keyboard.write gebruiken.

Wat ik dus probeer uit te vogelen is;

- Door middel van spraak je toetsenbord kunnen gebruiken
- Dit door middel van de Geeetech Voice Recognition Module

Tijdens mijn opleiding heb ik kennis gemaakt met Arduino en ik vind het daarom ook erg leuk om er mee aan de slag te gaan. Ik heb er redelijk verstand van maar ik ben geen Arduino PRO. Vandaar mijn rondvraag of iemand tips heeft of suggesties hoe ik dit het beste kan doen.

Met vriendelijke groet,

Laurens Verkamman

https://www.youtube.com/watch?v=SHIcliL4O14 - video over het Keyboard.write principe
https://www.youtube.com/watch?v=Ur1tzMDP97g - video over de Geeetech Voice Recognition Module

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Keyboard besturen met Spraakmodule

Berichtdoor Koepel » 31 Okt 2019, 21:15

Hallo, en welkom op dit forum.

Vertel gerust dat je de vraag ook elders hebt gesteld: https://gathering.tweakers.net/forum/list_messages/1954132.

Link naar Geeetech Voice Recognition Module: https://www.geeetech.com/wiki/index.php/Arduino_Voice_Recognition_Module.

Je kunt eenvoudig beginnen, dan kun je altijd nog upgraden naar iets meer ingewikkelder.
Dus mijn voorstel is om te beginnen met een ATmega32U4 microcontroller, dat is het Arduino Leonardo board, of de Micro of de Pro Micro.
Die heeft ook een vrije seriële poort op pin 0 en 1, dus die kun je mooi voor de module gebruiken.
Met de Keyboard library kun je toetsen versturen: https://www.arduino.cc/reference/en/language/functions/usb/keyboard/.
Hier staat een lijst van de toetsen: https://github.com/arduino-libraries/Keyboard/blob/master/src/Keyboard.h.

Het is voor mij een tijdje geleden, maar ik dacht dat je gewoon de "KEY_LEFT_ARROW" kon versturen.
Dus in de loop() hou je in de gaten of er iets van de module binnenkomt, en dan verstuur je die toets. Probeer om de loop() snel te laten werken, met zo weinig mogelijk delay, en geen lange while-statements en zo.

Je hoeft dus niet te kijken naar de codes die een normaal toetsenbord verstuurt. Als het goed is dan zorgt de Keyboard library dat de juiste codes worden verstuurd naar de computer.

Als je later meer wilt, koop dan geen Arduino Due. Die heeft teveel problemen.
Als je ook nog de media-toetsen wilt (start, pauze, volgende), dan is er nog deze library: https://github.com/NicoHood/HID. Die is echter vele malen ingewikkelder, dus dat gaat heel wat tijd kosten om dat te begrijpen.

Berichten: 4
Geregistreerd: 31 Okt 2019, 18:21

Re: Keyboard besturen met Spraakmodule

Berichtdoor LaurensV » 04 Nov 2019, 02:08

Dank voor je bericht! Is het wel mogelijk om de Geeetech VR module te gebruiken op de Leonardo icm de Keyboard library?

Ik dacht dat ze beide over de seriële poorten gingen maar dat kan ik fout hebben.

De VR module(op de Arduino UNO) en het toetsenbord (Arduino Leonardo) heb ik werkend gekregen.

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Keyboard besturen met Spraakmodule

Berichtdoor Koepel » 04 Nov 2019, 10:53

De ATmega32U4 microcontroller heeft een USB CDC device in zich. De twee datasignalen van de USB kabel zijn rechtstreeks verbonden met die microcontroller.
Een USB CDC device is een term voor hardware die kan communiceren over USB en ingesteld kan worden als verschillende USB apparaten.
Het uploaden van een sketch en de seriële monitor gaan via dat USB CDC device.
Ik hoop dat je de seriële monitor gaat gebruiken, want dan weet je wat er gebeurt.
Bij een Arduino Leonardo is de seriële poort op pin 0 en 1 helemaal vrij, daar mag je mee doen wat je wilt.
Dus de Leonardo is perfect voor dit.

Kijk regelmatig in de online referentie, daar staat heel veel.
Voor de seriële poort: https://www.arduino.cc/reference/en/language/functions/communication/serial/
Dus de seriële monitor via het USB CDC device heet: Serial (ik gebruik "SerialUSB", dat mag ook).
De seriële poort op pin 0 en 1 heet: Serial1

Voor de spraakmodule is het dus: Serial1.begin(9600), Serial1.available(), Serial1.write(.. enzovoorts.

De Keyboard en Mouse library maken ook gebruik van het USB CDC device. Dat kan allemaal tegelijkertijd.

Je hebt misschien gemerkt dat de Leonardo soms raar reageert op de USB bus. Soms verspringt de seriële poort op de PC, soms valt die seriële poort even weg. Dat komt omdat dan het USB CDC device even anders ingesteld wordt.

Berichten: 4
Geregistreerd: 31 Okt 2019, 18:21

Re: Keyboard besturen met Spraakmodule

Berichtdoor LaurensV » 05 Nov 2019, 13:01

Ik weet dat de VR zich in Waiting mode verkeerd op het moment dat ik hem correct heb aangesloten en de code gebruik die wordt voorgeschreven. Daar ligt de fout denk ik niet.

Waiting mode:

In waiting mode, D2 (ORANGE) is off, and D1 (RED) is on for 80ms every other 200ms, fast flashing. In this mode, it doesn’t recognize
voice command, only waiting for serial commands.

Recognition stage:

In identification stage, D2 (ORANGE) is off, and D1 (RED) is on for 100ms every other 1500ms, slow flashing. In this stage, this module
is processing received voice signal, and if matching, it will send the result immediately via serial port.

De VR krijgt dus naar mijn idee geen seriele data binnen. In mijn opzicht doe ik niks anders dan de vorige keer, toen hij het wel deed.
Wanneer ik AccesPort gebruik gaat hij wel in recognition stage en herkent hij de commands die ik heb ingesproken...

Berichten: 4
Geregistreerd: 31 Okt 2019, 18:21

Re: Keyboard besturen met Spraakmodule

Berichtdoor LaurensV » 05 Nov 2019, 15:21

Ik zie het al. Ik heb je verkeerd begrepen. Alle serials aangepast naar Serial1 en hij doet het :D

Dank voor je hulp!

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten