Egy infravevő, egy arduino és egy sor értetlenkedés

Van egy ilyenem, egy Arduino Nano-m és egy Windózos számítógépem. Eddig a pi-re volt dugva az infravevő, de mióta megvettem a desktopomat már a pi-t nem használom.

Gondoltam tök jó volna infravevőt átintegrálni a számítógéphez. Ehhez persze a szakirodalom *egy része* megtalálható az interneten.

Azért mondom, hogy egy része, mert részletesen le van írva, hogy hülyegyerek, milyen alkatrészeket vegyél, meg hova kösd, de az nincs leírva, hogy ha szeretnéd mondjuk COM porton keresztül már HEX kódot tud a PC-mnek pofázni az arduino akkor, amikor megnyomom a távirányítót azt hogy a halálba kell winlirc-el megetetni.
Mert hogy gyanum szerint a lirc natívan, raw adatokkal szeretne dolgozni, én meg már a COM7-es porton az arduino felől kész billentyűkódokat küldök és nem látom módját hogyan tudna ezzel együttműködni.
Ekkor gondoltam az első mókolásra, hogy küldjünk konzolon raw adatokat. Aha. Az IRremote könyvtárhoz nincs egy épkézláb dokumentáció. A fejlesztéshez használt programja az arduinonak meg csak arra jó, hogy billentyűkombinációkkal egyből le tudjam fordítani a kódot, egyébként olyan, mintha csak egy gedit-ben írnám a kódot, semmi kódkiegészítés, vagy hibaellenőrzés, minden csak fordításkor kerül ki.

Nos, aztán találtam olyan tanácsot is neten, hogy USB HID eszközként képes futni az arduino, includeoljam be a Keyboard.h-t és switch-case szerkezetben megadom, hogy milyen billentyűt emuláljon távirányító leütéskor - és lényegében ez lenne nekem a legtökéletesebb út a győzelemhez.

Természetesen ez is egy gigantikus zátonyra futott. Írja ám a compiler, hogy nem létezik a Keyboard.h, ellenőrizzem, újra lehúzom a lib-t, verziót cserélek, már az ino fájl mellé húzom be a könyvtárat, mikor kiderül, hogy nem nem létezik a keyboard.h hanem a nano usb vezérlője nem támogatja az USB HID szabványt és ez a funkció soha nem is fog működni.

Szóval most dühöngés van. "Kész" a működő termék, csak össze kéne hangolni, de hogyanyavajába. Valaki nem futott már bele ilyenbe?

[UPDATE]

Működőképes verzió Arduino nano + infravevő + random távirányítóval windowson alaposan letesztelve itt: https://github.com/szabbenjamin/ArduinoIRKodiRemote

Hozzászólások

Ha muszáj lenne ezeket a vasakat működésre bírni, akkor én egy kis illesztőprogramt írnék rá, ami olvassa a COM portot és ha jön adat, akkor kiváltja a billentyű leütéseket: http://stackoverflow.com/questions/13551710/a-program-to-simulate-keybo…

Persze valójában ez egy eléggé bonyolult megoldás, amiben sokmindent újraimplementálsz, amit már egyszer megcsinált valaki más valahol máshol, úgyhogy én is inkább vennék céleszközt.

Az Arduinoból meg csinálnék valami távirányítós játékot. Nekem például egy sólámpám van: https://github.com/rizsi/Arduino-IR-decoder

Gondolom valamilyen CH340G alapu nanod van, ez egy USB-UART atalakito, ennek megfeleloen latszik a PC felol. Ha valamilyen hardware-es USB-t tudo Arduinot hasznalnal (az osszes Atmega32U4 alapu, pl. micro, leonardo), akkor menne az USB HID mod. Igaz, a micro kb. a nano duplajaba kerul ($2 helyett $4.5).

Egyebkent az arduino peldak kozt talalsz is olyat (KeyboardSerial), ami a Micro soros portjan olvassa az adatot, es USB-s billentyuzetkent kuldi tovabb, ennyire egyszeru:


#include "Keyboard.h"

void setup() {
  // open the serial port:
  Serial.begin(9600);
  // initialize control over the keyboard:
  Keyboard.begin();
}

void loop() {
  // check for incoming serial data:
  if (Serial.available() > 0) {
    // read incoming serial data:
    char inChar = Serial.read();
    // Type the next ASCII value from what you received:
    Keyboard.write(inChar + 1);
  }
}

ui: jo lenne mar megoldani, hogy a code block ugy mukodjon, ahogy a form irja..

--
"Ne kúrd el mégegyszer a karakterkészletet, mert akkor ez a file is conflictolni fog a merge serveren és ez azért eléggé bosszantó!"

Feladtam a küzelmet.
Rendeltem ebay-ről usb távirányítót. 1000 Ft volt csak, remélem mégsem lesz annyira sz.r :D

[UPDATE]
Úgy tűnik részlegesen sikerült megoldanom a problémát, írtam rá egy c# alkalmazást, ami konzolról fogad üzenetet és képes beírni annak megfelelően valamit egy meghatározott alkalmazásba.

Ha lesz időm folytatni a projektet 1-2 napon belül felrakom a kódot valahova. :)

---------------------------------------
Devmeme - fejlesztői pillanatok