USBASP Einschalter
Inhaltsverzeichnis
Allgemeines
Hier wird ein IR-Einschalter auf Grundlage des USBasp beschrieben. (http://www.fischl.de/usbasp/)
Die Kosten sollten sich im Rahmen von unter 10 € bewegen!!!
Die Stromversorgung erfolgt über USB bzw. die Standbyversorgung des USB-Ports.
Der Empfänger ist das Resultat einer Zusammenstellung verschiedener Projekte und Programme.
Forum:
Beschreibung der Funktionen
- Infrarotsignale werden über USB übertragen (HID).
- Dekodierung vollständig im IR-Einschalter (USB-IRMP)
- Komplett quelloffen (open source)
- Anlernbare Einschaltfunktionen (auch für Exoten wie Merlin)
Beschaffung
Der USBasp ist eigentlich ein AVR-Programmer. Er ist weit verbreitet und leicht und güstig beschaffbar. Auf ebay gibt es fertige USBasp für ca. $3,80 (USD) aus China. Dies entspricht ~3 €.
Die weiteren Bauteile können bei Reichelt, Conrad usw. besorgt werden.
Liste:
- USBasp --> ebay.com (nicht ebay.de) und nach USBasp suchen. Der Versand kann bis zu 20 Werktage brauchen.
- IR Detektor (z. B. TSOP1738 für 38 kHz (üblich), TSOP1756 (für MERLIN))
- Optokoppler (z. B. CNY173 / CNY17III) oder wenn 4-Pin-Variante gewünscht z. B. PC 817
- Widerstand 562 Ohm / 0,5 W
- Widerstand 100 Ohm / 0,5 W
- Elko-Kondensator 4,7 uF / 16 V
- Pfostenstecker 10 Pol (siehe USBasp)
- Flachbandkabel
- Streifenrasterplatine (ca. 5 cm x 5 cm)
Schaltung
Schaltplan
Aufbau
Es gibt Verschieden Arten von IR-Detektoren. Oft verwechseln die Verkäufer diese oder kennen den Unterschied nicht (z. B. bei Conrad so geschehen).
Um den TSOPxxxx nicht durch falsche Beschaltung zu zerstören, ist hier Vorsicht angesagt.
TSOP17xx
!!!ACHTUNG!!!
Auf den Bildern ist sowohl der Optokoppler (hier der PC817) falsch herum eingezeichnet als auch die Widerstände vertauscht eingezeichnet worden.
!!!ACHTUNG!!!
Bestückungsseite:
Es sind 4 Schnitte auf der Platine nötig (rot):
TSOP48xx
!!!ACHTUNG!!!
Auf den Bildern ist sowohl der Optokoppler (hier der PC817) falsch herum eingezeichnet als auch die Widerstände vertauscht eingezeichnet worden.
!!!ACHTUNG!!!
Bestückungsseite:
Es sind 4 Schnitte auf der Platine nötig (rot):
Testen
Ob IR Signale ankommen kann anfangs mit dem folgenden Kommando getestet werden
sudo cat /dev/hidraw0
Software
Firmware
Um die Firmware flashen zu können muss Jumper 2 (J2) gesetzt (kurzgeschlossen sein). Da es für den Betrieb nicht schlimm ist wenn dieser dauerhaft gesetzt ist kann er mit einem Tropfen Lötzinn verbunden werden.
In der Firmware muss die Konfiguration der Pins angepasst werden.
configUSBIRRemoteReceiver.h
#define SWITCH_PORT PORTB /* PORTx - register for Switch output */ #define SWITCH_BIT PB4 /* bit where OK1 will be connected */ #define SWITCH_DDR DDRB /* Switch data direction register */
irmpconfig.h
#define IRMP_PORT PORTB #define IRMP_DDR DDRB #define IRMP_PIN PINB #define IRMP_BIT 5
Evtl. noch die betreffenden Protokolle auswählen (z.B. RC5).
usbconfig.h
#define USB_CFG_IOPORTNAME B #define USB_CFG_DMINUS_BIT 0 #define USB_CFG_DPLUS_BIT 1
Download
#Download sudo apt-get install git mkdir ~/irmp cd ~/irmp git clone git://github.com/realglotzi/irmpusb cd ~/irmp/irmpusb/ #Build sudo apt-get install binutils-avr gcc-avr avr-libc make
Flashen
Um zu einem funktionierenden Device zu gelangen genügt es die Basisfirmware (z.B. main.hex
) zu flashen. Der Bootloader ist nicht nötig.
Hierfür kann z.B. der Burn-o-Mat verwendet werden (in Verbindung mit AVR-DUDE).
Ferner müssen noch die FUSES gesetzt werden.
HFUSE=0xc9 LFUSE=0xef
Flashtool installieren (Ubuntu 14.04): sudo apt-get install avr-dude
Testen: sudo avrdude -p atmega8 -c usbasp
Folgende Ausgabe sollte erscheinen:
Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e9307 ... avrdude done. Thank you.
Flashen: avrdude -p atmega8 -c usbasp -u -U flash:w:main.hex -U hfuse:w:0xc9:m -U lfuse:w:0xef:m
Fuses testen: sudo avrdude -p atmega8 -c usbasp
Daemon
Zu finden unter:
oder
Howto:
Das entsprechende Device ist zu wählen:
irmplircd /dev/hidraw0
UDEV
KERNEL=="hidraw*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", RUN+="/bin/mkdir /var/run/lirc", RUN+="/usr/bin/irmplircd /dev/%k", RUN+="/bin/ln -s /var/run/lirc/lircd /dev/lircd"
UPSTART
Wenn irmplircd in /usr/bin/irmplircd
irmplircd.conf
# tty1 - getty # # This service maintains a getty on tty1 from the point the system is # started until it is shut down again. start on starting easyvdr-vdr or simu-start-vdr stop on runlevel [016] env LOGGER="logger -t irmplircd" respawn respawn limit 5 10 script $LOGGER /usr/bin/irmplircd -f `grep -l "USB IR Remote Receiver" /sys/class/hidraw/hidraw*/device/uevent | echo /dev/\`grep -E hidraw[0-9]+ -o\`` exec /usr/bin/irmplircd -f `grep -l "USB IR Remote Receiver" /sys/class/hidraw/hidraw*/device/uevent | echo /dev/\`grep -E hidraw[0-9]+ -o\`` end script
ir_control
Ich habe ein kleines Programm geschrieben mit welchem man diverses Konfigurieren kann. Es soll die Funktionalität nachreichen welche sonst nur über die Windowssoftware des Erbauers möglich währe.
ir_control, 1.0.0 (20.05.2012) control the "USB IR Remote Receiver" (www.mikrocontroller.net/articles/USB_IR_Remote_Receiver). ir_control [-h] | [-V] | [[[-d] | [-p[1|0]] | [-rCOUNT] | [-s] | [-t]] [-i]] -h print this help and exit -V print version and exit -d delete the PowerOn IR code. The next received code becomes the new PowerOn code -p [1|0] set PowerOn (ON=1/OFF=0) -r COUNT set repeat count (default=5) -s status of: PowerOn (ON=1/OFF=0) -i ignore device name. (just checks the vendor:device ID) needs one of the other options.
irmp_exec
Ein weiteres Tool ist irmp_exec
:
Diagnose
Unter Linux meldet sich das Gerät beim Einstecken so (/var/log/syslog
bei Debian-artigen Systemen):
May 17 13:19:16 martin-VirtualBox kernel: [13996.333454] usb 2-2: new full-speed USB device number 3 using ohci-pci May 17 13:19:16 martin-VirtualBox kernel: [13996.837834] usb 2-2: New USB device found, idVendor=16c0, idProduct=27d9 May 17 13:19:16 martin-VirtualBox kernel: [13996.837856] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 May 17 13:19:16 martin-VirtualBox kernel: [13996.837872] usb 2-2: Product: USB IR Remote Receiver May 17 13:19:16 martin-VirtualBox kernel: [13996.837888] usb 2-2: Manufacturer: www.mikrocontroller.net/articles/USB_IR_Remote_Receiver May 17 13:19:16 martin-VirtualBox kernel: [13996.892687] hid-generic 0003:16C0:27D9.0002: hiddev0,hidraw1: USB HID v1.01 Device [www.mikrocontroller.net/articles/USB_IR_Remote_Receiver USB IR Remote Receiver] on usb-0000:00:06.0-2/input0 May 17 13:19:16 martin-VirtualBox mtp-probe: checking bus 2, device 3: "/sys/devices/pci0000:00/0000:00:06.0/usb2/2-2" May 17 13:19:16 martin-VirtualBox mtp-probe: bus: 2, device: 3 was not an MTP device
Einrichtung
Wenn die Fernbedienung noch nicht ein easyVDR bekannt ist: Per SSH einloggen, den Menupunkt Experimental / IRMP-Keymapbuilder eine Keymap erzeugen und im Forum für andere bereitstellen
Tipps
Wenn man im Code der remote.conf
die letzte Ziffer 0 mit einer 1 ersetzt funktioniert auch das gedrückt halten der Taste.
Vom Vorteil bei Up , Down , Left und Right evtl noch bei der Gelben und Grünen Taste..
Power on setzen und abfragen (Easyvdr 2.0)
sudo ir_control -p 1
sudo ir_control -s
Fernbediungunstaste für Power-On neu anlernen (Easyvdr 2.0)
sudo ir_control -d
Anschließend die gewünschte Fernbedienungstaste drücken.
Tipps2
Der direkte Aufruf von Scripten für Nicht-VDR-Tasten klappt auch über /usr/bin/irexec -d /etc/lircrc - z.B.
begin prog = irexec button = KEY_EJECT config = didi-eject end
Links
- USBasp: http://www.fischl.de/usbasp/
- Empfänger: https://www.mikrocontroller.net/articles/USB_IR_Remote_Receiver#Schaltplan_des_USB_IR_Remote_Receiver
- lirc Daemon: http://www.vdr-portal.de/board18-vdr-hardware/board13-fernbedienungen/p1036294-irmplircd-f%C3%BCr-usb-ir-remote-receiver-based-on-irmp/#post1036294
- Zu TSOPs: http://www.easyvdr-forum.de/forum/index.php?topic=11917.msg99356#msg99356