Welk toetsenbord aansluiten op Arduino.

Bij TI LaunchPad geleverde hardware.
Gebruikers-avatar
Berichten: 35
Geregistreerd: 13 Okt 2016, 21:17

Welk toetsenbord aansluiten op Arduino.

Berichtdoor PA9CW » 28 Jul 2019, 20:30

Graag zou ik willen weten wat de beste keuze is om een keyboard met een Arduino te gebruiken.

Mijn project is in grote lijnen het volgende. Op een toetsenbord wordt een call, bv PA9CW, ingetoetst en die wordt dan in morse uitgezonden. Vervolgens wordt de call met datum en tijd opgeslagen op een SD kaart.

SD module moet ik nog bestellen, Arduino's heb ik genoeg en tijd module heb ik ook.

Maar welk toetsenbord zou ik kunnen gebruiken:
- draadloos keyboard,
- PS/2 keyboard of
- USB keyboard.
Ik zie wel een lib voor PS/2 keyboards maar niet voor de andere keyboards.
En hier zie ik een USB shield. Zou ik die kunnen gebruiken voor de USB keyboards?
Kortom; wie kan me in de goede richting helpen, om de juiste en makkelijkste keuze te maken?
Alvast bedankt voor de moeite.

Advertisement

Berichten: 2900
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Welk toetsenbord aansluiten op Arduino.

Berichtdoor shooter » 30 Jul 2019, 22:26

ik zou gaan voor een draadloos keyboard met aan de andere kant dus een usb stekkertje.
dan heb je wel een processor nodig die ook usb als ontvanger kent.
probeer eens onderstaande link is dit wat je bedoelt?
https://www.instructables.com/id/Connect-Arduino-UNO-to-USB-Keyboard/
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 35
Geregistreerd: 13 Okt 2016, 21:17

Re: Welk toetsenbord aansluiten op Arduino.

Berichtdoor PA9CW » 30 Jul 2019, 23:30

Shooter, bedankt voor de reactie. Deze site had ik ook gevonden. Ik heb gisteren de spullen besteld.
Dus als het binnen is ga ik ermee aan de slag.

Nog ff geduld.

Gebruikers-avatar
Berichten: 35
Geregistreerd: 13 Okt 2016, 21:17

Re: Welk toetsenbord aansluiten op Arduino.

Berichtdoor PA9CW » 31 Jul 2019, 20:25

De SD module is vandaag binnen gekomen. Daar ga ik de komende dagen mee aan de slag. De andere spullen komen waarschijnlijk morgen.

Gebruikers-avatar
Berichten: 35
Geregistreerd: 13 Okt 2016, 21:17

Re: Welk toetsenbord aansluiten op Arduino.

Berichtdoor PA9CW » 02 Aug 2019, 20:34

Gisteren de SD module ontvangen. Paar uurtjes mee bezig geweest om wat data te schrijven en te lezen. Maar er kwam weinig leesbaars uit.
Toen maar eerst de DS3231 (RTC) aangesloten met de juiste code erin. Alles werkte vrij snel, en ik kan de tijd en datum nu uitlezen.

Toen realiseerde ik me ineens dat ik nog een TFT screen van Arduino had liggen. Daar kan je een micro SD kaart in doen. Zo gezegd zo gedaan. Ik heb na een middagje voor elkaar dat ik de datum en tijd kan wegschrijven in een log.csv bestand. Een testrun van een aantal minuten, het kaartje vervolgens in de computer en ik kan de data mooi uitlezen op de computer. Ik zie in het bestand om de 5 seconden de datum en tijd. Dus dat gaat prima. Tot zover na een dagje hobbyen....

Nu nog het keyboard aan de praat krijgen. En morse kunnen uitzenden.

Gebruikers-avatar
Berichten: 35
Geregistreerd: 13 Okt 2016, 21:17

Re: Welk toetsenbord aansluiten op Arduino.

Berichtdoor PA9CW » 05 Aug 2019, 15:05

De afgelopen dagen bezig geweest met diversen pogingen om een USB keyboard te kunnen uitlezen.
Eerst m.b.v. een verloop, zoals hier staat, van USB naar PS/2. En de PS2 lib van Github gebruikt. Maar geen van de voorbeelden lukte.
Daarna deze geprobeerd, maar dat gaf ook geen resultaat.

Dus nu toch maar een USB Shield besteld bij de winkel die hier ook reclame maakt ;) . Daar is ook een lib op Github voor. Dus dat zou moieten lukken.

Berichten: 2900
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Welk toetsenbord aansluiten op Arduino.

Berichtdoor shooter » 06 Aug 2019, 15:27

en welke arduino gebruik je dan, want een UNO kan dat niet door de max328
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 35
Geregistreerd: 13 Okt 2016, 21:17

Re: Welk toetsenbord aansluiten op Arduino.

Berichtdoor PA9CW » 07 Okt 2019, 20:18

Na een "kleine" pauze weer verder gegaan met dit project.
Het toetsenbord i.c.m. met de USB host en Arduino uno, werkt. Met onderstaande code krijg ik keurig de toets te zien die ik indruk. Maar de code is eigenlijk net iets te moeilijk voor mij om deze in mijn project te gebruiken. Want wat ik namelijk zou willen is :
1. code kijkt welke toets er wordt ingedrukt. ( a t/m z, 0 t/m 9, F1 t/m F12, ENTER en / ) Andere toetsen worden niet gebruikt.
2. variable (bv) TOETS wordt dan dat character wat ingedrukt is.
3. variabele TOETS gebruik ik dan verder in mijn project om er een CALL( roepnaam ) van te maken.
4. CALL wordt via morse uitgezonden op een DIG pin.
5. CALL en datum/tijd/frequentie wordt vastgelegd in SD kaart.

Alleen met punt 1 en 2 zou ik graag wat hulp willen hebben. Wie kan me daar mee helpen ? Alvast bedankt.
Code: Alles selecteren
#include <hidboot.h>
#include <usbhub.h>
 
// Satisfy the IDE, which needs to see the include statment in the ino too.
#ifdef dobogusinclude
#include <spi4teensy3.h>
#endif
#include <SPI.h>
 
class KbdRptParser : public KeyboardReportParser
{
    void PrintKey(uint8_t mod, uint8_t key);
 
  protected:
    void OnControlKeysChanged(uint8_t before, uint8_t after);
 
    void OnKeyDown    (uint8_t mod, uint8_t key);
    void OnKeyUp    (uint8_t mod, uint8_t key);
    void OnKeyPressed(uint8_t key);
};
 
void KbdRptParser::PrintKey(uint8_t m, uint8_t key)
{
  MODIFIERKEYS mod;
  *((uint8_t*)&mod) = m;
  Serial.print((mod.bmLeftCtrl   == 1) ? "C" : " ");
  Serial.print((mod.bmLeftShift  == 1) ? "S" : " ");
  Serial.print((mod.bmLeftAlt    == 1) ? "A" : " ");
  Serial.print((mod.bmLeftGUI    == 1) ? "G" : " ");
 
  Serial.print(" >");
  PrintHex<uint8_t>(key, 0x80);
  Serial.print("< ");
 
  Serial.print((mod.bmRightCtrl   == 1) ? "C" : " ");
  Serial.print((mod.bmRightShift  == 1) ? "S" : " ");
  Serial.print((mod.bmRightAlt    == 1) ? "A" : " ");
  Serial.println((mod.bmRightGUI    == 1) ? "G" : " ");
};
 
void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key)
{
  Serial.print("DN ");
  PrintKey(mod, key);
  uint8_t c = OemToAscii(mod, key);
 
  if (c)
    OnKeyPressed(c);
}
 
void KbdRptParser::OnControlKeysChanged(uint8_t before, uint8_t after) {
 
  MODIFIERKEYS beforeMod;
  *((uint8_t*)&beforeMod) = before;
 
  MODIFIERKEYS afterMod;
  *((uint8_t*)&afterMod) = after;
 
  if (beforeMod.bmLeftCtrl != afterMod.bmLeftCtrl) {
    Serial.println("LeftCtrl changed");
  }
  if (beforeMod.bmLeftShift != afterMod.bmLeftShift) {
    Serial.println("LeftShift changed");
  }
  if (beforeMod.bmLeftAlt != afterMod.bmLeftAlt) {
    Serial.println("LeftAlt changed");
  }
  if (beforeMod.bmLeftGUI != afterMod.bmLeftGUI) {
    Serial.println("LeftGUI changed");
  }
 
  if (beforeMod.bmRightCtrl != afterMod.bmRightCtrl) {
    Serial.println("RightCtrl changed");
  }
  if (beforeMod.bmRightShift != afterMod.bmRightShift) {
    Serial.println("RightShift changed");
  }
  if (beforeMod.bmRightAlt != afterMod.bmRightAlt) {
    Serial.println("RightAlt changed");
  }
  if (beforeMod.bmRightGUI != afterMod.bmRightGUI) {
    Serial.println("RightGUI changed");
  }
 
}
 
void KbdRptParser::OnKeyUp(uint8_t mod, uint8_t key)
{
  Serial.print("UP ");
  PrintKey(mod, key);
}
 
void KbdRptParser::OnKeyPressed(uint8_t key)
{
  Serial.print("ASCII: ");
  Serial.println((char)key);
};
 
USB     Usb;
//USBHub     Hub(&Usb);
HIDBoot<USB_HID_PROTOCOL_KEYBOARD>    HidKeyboard(&Usb);
 
KbdRptParser Prs;
 
void setup()
{
  Serial.begin( 115200 );
#if !defined(__MIPSEL__)
  while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
#endif
  Serial.println("Start");
 
  if (Usb.Init() == -1)
    Serial.println("OSC did not start.");
 
  delay( 200 );
 
  HidKeyboard.SetReportParser(0, &Prs);
}
 
void loop()
{
  Usb.Task();
}

Terug naar Hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast