Schlagwort-Archiv: Fernbedienung

Sharp MZ 700 – MZ-SD2CMT

Bisher habe ich immer ein altes Android Smartphone genutzt, dazu musste ich aber immer die Dateien in WAV umwandeln und dann mit einem Player die Daten abspielen. Klappt leider nur bei mehreren Versuchen, weil mal die Lautstärke zu laut oder zu leise ist , Player stürzt bei manchen wav dateien ab, …

Jetzt habe ich auf github das Projekt MZ-SD2CMT gefunden und habe dies gleich mal nachgebaut und bin begeistert.
MZ-SD2CMT kann MZF/MZT/M12/LEP oder WAV von SD-Karte am Sharp MZ-700 wiedergeben. Auch die anderen Probleme sind damit weg, wie Lautstärke, Player, ….

Hier die Bauanleitung + Code:
https://github.com/SHARPENTIERS/MZ-SD2CMT

Die Tasten waren mir aber nichts, darum habe ich einen Infrarot-Empfänger hinzugefügt (man kann z.B. VS1838B nehmen). Nun lässt sich das Ganze mit Fernbedienung steuern. Die Tasten funktionieren ganz normal.

Angeschlossen wurde der Infrarot-Empfänger so:

Infrarot-Empfänger VS1838B | Arduino
5V -> 5V
GND -> GND
Signal/Data -> PIN 49

Ich habe bereits Kontakt mit dem Entwickler aufgenommen, sodass dies vielleicht ein Teil vom Projekt wird.
Auf jeden Fall muss das erweiterte Sketch von mir auf das Arduino geladen werden.
Dazu muss aber noch zusätzlich die Library „IRremote“ in der Bibliotheksverwaltung hinzugefügt werden.
Diese kann mit dem Suchbegriff „IRremote“ gefunden und installiert werden.

Sobald das neue Sketch auf dem Arduino läuft, kann man im Serial Monitor von (Arduino IDE) sich die IR-Codes anschauen.
Man nimmt dazu einfach seine gewünschte IR Fernbedienung und drückt die Tasten, die man verwenden möchte.
Es ist egal welche Fernbedienung man nimmt, es kann eine alte Radio/Fernsehr,Videorecorder/DVD -,… Fernbedienung sein.

Bei mir ist das z.B.
Links – CH-
Rechts – CH+
Select – >|| (play)
up – > Forward
down – < replay

Beim Drücken der Fernbedienung wird eine Zahl angezeigt (Fernbedienungscodes), die man sich notieren muss und im Sketch angeben muss.
z.B.:

#define IR_right_code -7651 //CH+ key
#define IR_left_code -23971 //CH-
#define IR_up_code 8925 //preview key (<<) #define IR_down_code 765 //forwards key (>>)
#define IR_select_code -15811 //play key (>||)

Hier noch der Anschluss vom Arduino zum Sharp 700:


MZ-SD2CMT-master

LIRC neue Fernbedienung anlernen

Damit eine Fernbiedienung mit LIRC funktioniert, muss man Sie erst anlernen. Es sei denn, es gibt schon eine fertige Konfiguration.
Ich habe 2 Universal- Fernbedienungen, aber hier keine fertige Konfiguration. Das ist allerdings kein Problem, das Anlernen ist ganz einfach. Außer die Fernbedienung wird nicht erkannt und im RAW Format gespeichert. Diese würde ich bei Seite legen, da RAW nicht so genau ist. Zum Anlernen der Fernbedienung darf der Dienst LIRC nicht laufen. So kann man den Dienst anhalten:

/etc/init.d/lirc stop

Zum Konfigurieren der Tasten muss man die verfügbaren Namen kennen, diese Liste habe ich in den Editor kopiert.

irrecord –list-namespace

Hier habe ich mir meine benötigten Tasten rausgesucht.

Das sind meine Tasten:
KEY_0
KEY_1
KEY_2
KEY_3
KEY_4
KEY_5
KEY_6
KEY_7
KEY_8
KEY_9
KEY_PAUSE
KEY_PLAY
KEY_POWER
KEY_NEXT
KEY_PREVIOUS
KEY_STOP
KEY_VCR
KEY_CHANNELDOWN
KEY_CHANNELUP
KEY_VOLUMEDOWN
KEY_VOLUMEUP
KEY_RECORD
KEY_MUTE
KEY_E
KEY_F
KEY_G
KEY_H
KEY_MENU
KEY_SETUP
KEY_A
KEY_UP
KEY_DOWN
KEY_RIGHT
KEY_LEFT
KEY_OK
KEY_LAST
KEY_102ND

Jetzt muss „irrecord“ ausgeführt werden. Hier wird der gedrückten Taste ein Name hinterlegt.

irrecord -d /dev/lirc0 /root/lircd.conf

Am Anfang kommt ein Hinweistext, hier kann man mit Return bestätigen.
Jetzt soll man nach Eingabe von Return unterschiedliche Tasten drücken. Pro Taste wird ein Punkt am Bildschirm ausgegeben werden.
Das Ganze macht man so lange, bis der Assistent etwas Neues erwarten.
Jetzt verlangt der Assistent immer einen Namen, z.B. KEY_0. Nach Eingabe soll die Taste 0 gedrückt werden.
Das Ganze macht man bis man keine Tasten mehr hat oder man bricht vorher hab. Das Ganze macht man mit der Taste Return.

Jetzt muss die Konfigurations-datei am richtigen Ort abgelegt werden:
cp /root/lircd.conf /etc/lirc/lircd.conf

Nachdem am Anfang der Dienst gestoppt wurde, sollte man jetzt LIRC wieder starten:

/etc/init.d/lirc start

Jetzt kann man seine Aufnahme testen:

irw

Nach Eingabe des Befehls sollte man auf die Fernbedienung drücken. Als Ergebnis sieht man seine programmierten Tasten:

0000000000000002 00 KEY_1 /root/lircd.conf
0000000000000004 00 KEY_2 /root/lircd.conf
0000000000000005 00 KEY_3 /root/lircd.conf
0000000000000008 00 KEY_6 /root/lircd.conf
0000000000000007 00 KEY_5 /root/lircd.conf
0000000000000006 00 KEY_4 /root/lircd.conf
0000000000000009 00 KEY_7 /root/lircd.conf
000000000000000a 00 KEY_8 /root/lircd.conf
000000000000000b 00 KEY_9 /root/lircd.conf
0000000000000009 00 KEY_7 /root/lircd.conf
000000000000000a 00 KEY_8 /root/lircd.conf
000000000000000b 00 KEY_9 /root/lircd.conf
0000000000000006 00 KEY_4 /root/lircd.conf
0000000000000007 00 KEY_5 /root/lircd.conf
0000000000000008 00 KEY_6 /root/lircd.conf
0000000000000008 01 KEY_6 /root/lircd.conf
0000000000000008 00 KEY_6 /root/lircd.conf
0000000000000008 00 KEY_6 /root/lircd.conf
0000000000000008 00 KEY_6 /root/lircd.conf

Falls etwas nicht funktioniert, sollte der lirc Treiber kontrolliert werden:
lsmod
modprobe lirc_dev
dmesg

Sollte hier kein fehler vorliegen, sollte man die Konfiguration (irrecord) prüfen:

/etc/init.d/ stop
mode2 -d /dev/lirc0

Jetzt auf der Fernbedienung rumdrücken und es sollte etwas am Bildschirm erscheinen. Damit kann man sehen, ob der IR-Empfänger überhaupt was empfangen kann. Sollte auch das funktionieren, muss man die hardware.conf überprüfen:

sudo nano /etc/lirc/hardware.conf

Die Zeile DEVICE sollte so aussehen:
DEVICE=/dev/lirc0

Ist auch das richtig, wurde vielleicht die lirc.conf nicht ins richtige Verzeichnis erstellt.
Am Besten überprüfen, ob die lircd.conf vorhanden ist.


cp -v /root/lircd.conf /etc/lirc/lircd.conf
chown root:root /etc/lirc/lircd.conf

LIRC jetzt wieder starten:
/etc/init.d/lirc start

Jetzt wieder irw ausführen und an der Fernbedienung drücken. Sollte da nichts erscheinen und vorher kein Fehler aufgetaucht sein, ist die Aufzeichnung der Tasten nicht in Ordnung. Es muss die Fernbedienung neu angelegt werden.

irrecord -d /dev/lirc0 /root/lircd.conf

Bei dem Befehl irw, werden nur angelernte Tasten ausgegeben!

Raspberry Pi mit IR Remote

Ich habe noch eine alte Universal Fernbedienung (TCM 64745) und einen TSOP34136 Infared Receiver (datasheet). TSOP38238 und TSOP4838 sollten auch funktionieren, sind aber nicht von mir getestet. TSOP38238 wird auch in eBay angeboten, aber etwas teuer ; ). Hier erstmal der Schaltplan:

Raspberry_IR

1 = OUT, 2 = GND, 3 = VS

Um via GPIO Ports eine einzelne Infrarot Empfänger Diode anzusprechen, benötigt man noch LIRC. Bei Raspbian muss das noch eingerichtet werden, bei OpenELEC ist LIRC von Haus aus eingerichtet.


sudo apt-get install lirc liblircclient-dev

Damit das Modul beim Neustart automatisch geladen wird, muss /etc/modules bearbeitet werden.

sudo nano /etc/modules

Fügt folgende Zeilen am Ende der Datei ein:

lirc_dev
lirc_rpi gpio_in_pin=18

Jetzt die Config /etc/lirc/hardware.conf bearbeiten, so sollte das Ergebnis aussehen:

# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS="--uinput"

# Don't start lircmd even if there seems to be a good config file
# START_LIRCMD=false

# Don't start irexec, even if a good config file seems to exist.
# START_IREXEC=false

# Try to load appropriate kernel modules
LOAD_MODULES=true

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="default"
# usually /dev/lirc0 is the correct setting for systems using udev
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""

Jetzt sollte das System neugestartet werden.

sudo shutdown -r now

Ob alles geklappt hat, kann man wie folgt testen:


/etc/init.d/lirc stop
mode2 -d /dev/lirc0

Nach Eingabe einfach auf die Fernbedienung drücken. Ich habe auch 2 verschiedne Windows Media Center Edition (MCE) Fernbedienungen getestet, die haben bei mir nur schlecht bis garnicht funktioniert. Am besten ging es mit den normalen Fernbedienungen.