Hallo Forum,
ich habe gerade einen IR-Empfänger für einen PC zusammengelötet, der
sich noch im Bau befindet. Für den Empfänger habe ich die offizielle
LIRC-Anleitung benutzt: http://www.lirc.org/receivers.html
Weil ich möchte, dass es beim IR-Empfang auch eine optische Rückmeldung
gibt, habe ich den Empfänger gemäß diesen Bauplans erweitert (ist extra
für den LIRC-Bauplan gedacht):
http://how-to.wikia.com/wiki/How_to_build_a_LIRC_receiver_with_an_LED_indicator
Jetzt ist alles fertig und ich frage mich, ob die zweite Schaltung nicht
einen Fehler enthält: Der Hex-Inverter ist direkt mit der DCD-Leitung
vom Serial-Port verbunden. PC-Serial verwendet doch überall 10V! Bevor
ich meinen Empfänger also anschließe, würde ich gerne wissen ob mir der
(5V)-Hex-Inverter nicht durchbrennt. Eine 10V-Version des Bauteil ist
mir nicht bekannt.
Peter K. schrieb:> Der Hex-Inverter ist direkt mit der DCD-Leitung> vom Serial-Port verbunden.
DCD ist ein Eingang und kein Ausgang. Da darf keine hohe Spannung
anliegen - jedenfalls nicht vom PC aus.
Achso.
...Ich versteh' die Schaltung nicht: R1 ist ja ein Pull-Up. Wenn der
IR-Empfänger..jetzt 0en und 1en sendet...als 0 und +5V...dann bekommt
DCD wegen dem Pullup (liegt übrigens an der 10V-Leitung) doch niemals
0V. DCD wird doch nie mit GND verbunden....oder?
Ich habe einfach einen normalen TSOP genommen (Ca 1 Euro) Dazu einen
günstigen Arduino (15 Euro).
Die IR-Empfänger-SW gibt es frei im Netz. Das ganze kann dann an jeden
PC über USB angeschlossen werden.
Ich bin also bei 16 Euro und 2 Stunden SW-Arbeit.
Das Ding läuft seit mehreren Jahren 24/7.
Eine optische Rückmeldung würde da über eine LED an einem GPIO gehen. Ca
20 Minuten Aufwand.
Ich habe die Schaltung auch mal vor langer langer Zeit verwendet.
Wird DCD auf Logisch 0 gesetzt, liegt da ungefähr +10V an.
(Bei einer Logischen 1 sind es -10V)
Die 5V Versorgunsspannung bekommst du über den 7805. Mit dem kannst du
auch den Hex-Inverter mit 5V versorgen.
Das RTS-Signal wird dann über die PC-Software gepollt. Eine UART-Signal
gibt es nicht.
Daher funktioniert das bei neueren PC meist nicht mehr, da die eventuell
noch vorhandene RS232-Schnittstelle über ein USB-Baustein realisiert
wurde, da moderne PC-Chipsätze keine native RS232-Controller mehr haben.
Aber USB-UART-Controller unterstützen Polling und Bit-Banging nur
eingeschränkt. Weil es eigentlich nicht vorgesehen ist.
Ähm...die RTS-Leitung dient ausschließlich der Stromversorgung. Das ist
in der Schaltung der Plus-Pol. Da wird nichts gepollt.
Laut der verlinkten Lirc-Anleitung werden auf der DCD-Leitung logisch 0
und 1 mit den Spannungen 0V und 5V realisiert. Das verstößt tatsächlich
gegen den RS232-Standard, weil eigentlich -3/+3V vorgesehen sind. In den
meisten Fällen soll es aber trotzdem funktionieren.
Ich werde das einfach ausprobieren. Die Aussage von Jim fand ich im
Internet bestätigt: DCD soll gar keine 10V bekommen. Daher wird die
Schaltung schon irgendwie funktionieren...
Au Mann, Lirc ist ja 'ne Katastrophe!
Ich bin hier wirklich am verzweifeln: Bei den ganzen Bauanleitungen
steht nirgends wie man denn das Lirc zum selbstgebauten Receiver denn
nun konfiguriert!
Zu allem Überfluss haben die seit Version 0.9.3 (oder so) die ganzen
Konfig-Dateien geändert. Im Internet ist kaum was dazu zu finden.
Einzige halbwegs brauchbare Quelle für (das alte!) Lirc:
http://www.vdr-wiki.de/wiki/index.php/LIRC
Die Lirc-Webseite ist totaler Müll.
Benutze das aktuellste Debian und da ist Lirc 0.9.4 drin. Ich glaube das
hat einen Fehler weil lirc-setup einfach abstürzt (irgendwelche
Fehlermeldungen mit Python-Quelltext).
Wollte 0.9.10 von Hand kompilieren. Das hat sogar geklappt. Doch das
installiert die ganzen Libs in die falschen Verzeichnisse. Hab da alles
möglich probiert mit "LD_LIBRARY_PATH" und "LD_RUN_PATH" und am Ende
sogar mit Softlinks von Hand. Die Geschichte endete mit einem
Lirc-Service, der nicht starten will, weil er "maskiert" sei.
Jetzt bin ich wieder zurück auf Lirc 0.9.4 aus den Debian-Paketen und
weiß nicht, wie man die serielle Schnittstelle angesprochen kriegt.
Es wird ein /dev/lirc0 angelegt, mode2 registriert aber nichts. Als
Treiber habe ich devinput in der Config-Datei angegeben.
Außerdem wird am Ende der Config-Datei folgendes vor dem Lirc-Start
ausgeführt:
setserial /dev/ttyS0 uart none; modprobe lirc_serial
lirc_serial existiert bei mir, allerdings nicht serial_ir. Angeblich
würde das im neuen Lirc den Treiber lirc_serial ersetzen, wie hier
behauptet:
https://www.vdr-portal.de/forum/index.php?thread/131832-ubuntu-18-04-lirc-serial/
Bei mir stimmt's nicht: serial_ir existiert im neuesten Debian und Lirc
0.94 nicht. Ich bekomme keine Fehlermeldungen, gar nichts.
/sys/class/rc/rc0/ wird nicht erzeugt.
Lirc-Daemon läuft ganz normal und lässt sich auch starten, stoppen
restarten.
[ 4.464530] input: lircd-uinput as /devices/virtual/input/input15
3
[ 489.838181] lirc_dev: IR Remote Control driver registered, major 247
4
[ 489.841912] lirc_serial: module is from the staging directory, the quality is unknown, you have been warned.
5
[ 490.796076] lirc_serial lirc_serial.0: auto-detected active high receiver
6
[ 490.796432] lirc_serial lirc_serial.0: lirc_dev: driver lirc_serial registered at minor = 0
Mein IR-Empfaenger wird also erkannt: Als Active-High-Receiver!
Leider liefert mode2 immernoch keine Ausgabe.
Um bis hierhin zu kommen habe ich:
1
dpkg-reconfigure lirc
eingegeben und im Menue haendisch / manuell gewaehlt.
Anschliessend habe ich die Datei
1
/var/lib/setserial/autoserial.conf
veraendert und dort COM2 richtig konfiguriert:
1
/dev/ttyS1 uart none port 0x02f8 irq 3
Adresse und irq habe ich dafuer im bios nachgeguckt und ausserdem mit
der Ausgabe von
1
setserial /dev/ttyS1
verglichen (stimmte ueberein).
Dann habe ich noch die Datei
1
/var/lib/setserial/autoserial.conf
angepasst:
1
#
2
###AUTOSAVE###
3
###PORT STATE GENERATED USING AUTOSAVE-ONCE###
4
###AUTOSAVE-ONCE###
5
###AUTOSAVE-ONCE###
6
###AUTOSAVE###
7
#
8
# If you want to configure this file by hand, use
9
# dpkg-reconfigure setserial
10
# and change the configuration mode of the file to MANUAL. If you do not do this, this file may be overwritten automatically the next time you upgrade the
Was davon jetzt zur Erkennung meines IR-Empfaengers gefuehrt hat, kann
ich leider nicht sagen. Sowohl Debian als auch Lirc haben ihre
Konfigurationen geaendert, sodass jede Anleitung im Netz ein anderes
Vorgehen beschreibt.
Meine /etc/lirc/lirc_options.conf:
1
cat ./lirc_options.conf
2
# These are the default options to lircd, if installed as
3
# /etc/lirc/lirc_options.conf. See the lircd(8) and lircmd(8)
4
# manpages for info on the different options.
5
#
6
# Some tools including mode2 and irw uses values such as
7
# driver, device, plugindir and loglevel as fallback values
Leider funktioniert nichts automatisch: Ich muss an der Konsole
folgendes Eintippen, damit /dev/lirc0 erzeugt wird und mode2 gestartet
werden kann:
1
modprobe lirc-serial
2
systemctl restart lircd
Weiss jemand, wie es von hier aus weitergeht? Gerne wuerde ich Input im
mode2 sehen. Auch der fehlende Autostart geht mir auf die Nerven. Ich
nutze das neueste Debian 9 (Stretch) und Lirc 0.9.4.c.
C.K. schrieb:> Das RTS-Signal wird dann über die PC-Software gepollt.
Bist du sicher, dass beim deinem PC die RTS-Leitung ein Eingang ist?
Bei jedem anderen PC ist das ein Ausgang.
https://de.wikipedia.org/wiki/RS-232#Verkabelung_und_Stecker
Es macht auch ausgesprochen wenig Sinn, eine über eine Diode an den
Spannungsregler angeschlossene Leitung zu pollen.
Wirf mal einen Blick in die Software, bevor du solche Gerüchte in die
Welt setzt :-(
Habe jetzt auf Lirc 0.10.1 upgedatet, indem ich in den apt-quellen
(/etc/apt/sources.list) "stretch" durch "testing" ersetzt und
1
apt-get update
ausgefuehrt habe. Danach lirc 10 installiert und die sources.list
wieder zurueck-geaendert auf "stretch".
Am Verhalten von Lirc hat sich dadurch nichts geandert. Jedoch bekomme
ich beim Booten nun folgende Meldung:
1
[ 2.528280] systemd[1]: lircd-setup.service: Cannot add dependency job, ignoring: Unit lircd-setup.service is masked.
2
[ 2.528476] systemd[1]: lircd-setup.service: Cannot add dependency job, ignoring: Unit lircd-setup.service is masked.
3
[ 4.382574] input: lircd-uinput as /devices/virtual/input/input15
Der manuelle Aufruf von lircd mit
1
modprobe lirc_serial
2
systemctl restart lircd
funktioniert aber immernoch:
1
[ 342.696769] lirc_dev: IR Remote Control driver registered, major 247
2
[ 342.699322] lirc_serial: module is from the staging directory, the quality is unknown, you have been warned.
3
[ 343.660075] lirc_serial lirc_serial.0: auto-detected active high receiver
4
[ 343.660335] lirc_serial lirc_serial.0: lirc_dev: driver lirc_serial registered at minor = 0
Peter K. schrieb:> ich habe gerade einen IR-Empfänger für einen PC zusammengelötet
vielleicht willst du dich hier mal einlesen?
http://pofahl.de/irdeo/
Das Teil hatte ich erfolgreich für den PC nachgebaut
@Joachim B: Vielen Dank. Das sieht ziemlich cool aus und ist sicher ein
schoenes Projekt. Die Platine ist sehr aufgeraeumt und durch den
eingebauten Sender auch noch multifunktional. Das Problem ist nur, ich
baue hier gerade einen HTPC und da muss alles so klein wie moeglich
sein. Ausserdem will ich ja jetzt wissen, ob mein eigener Empfaenger nun
funktioniert oder nicht.
@Wolfgang:
Nein, bin ich nicht.
Ich kann nur sagen, dass es ein altes ITX-Mainboard von Asus ist, das
zwei serielle Schnittstellen und eine parallele hat. Dabei ist COM2
intern (Pin-Header) und COM1 ganz normal extern. Der Parallel-Port ist
ganz normal extern.
Peter K. schrieb:> Ich kann nur sagen, dass es ein altes ITX-Mainboard von Asus ist, das> zwei serielle Schnittstellen und eine prarallele hat.
Dann verbinde doch mal ein Terminalprogramm (z.B. HTerm) mit der
Schnittstelle und guck dir an, ob du RTS steuern und über DCD zurück
lesen kannst (mit Brücke RTS-DCD).
Bei einer seriellen Schnittstelle auf dem Mainboard ist die Chance
ziemlich groß, dass das funktioniert. Anders sähe das evtl. bei
sparsamen USB-Seriell-Wandlern aus.
Peter K. schrieb:> @Joachim B: Vielen Dank. Das sieht ziemlich cool aus und ist sicher ein> schoenes Projekt. Die Platine ist sehr aufgeraeumt und durch den> eingebauten Sender auch noch multifunktional. Das Problem ist nur, ich> baue hier gerade einen HTPC und da muss alles so klein wie moeglich> sein.
ich habe es auf einer Lochrasterplatine in eine Streicholzschachtel
gebaut, ist doch klein und passt in ein HTPC Gehäuse.
Wolfgang schrieb:> Dann verbinde doch mal ein Terminalprogramm (z.B. HTerm) mit der> Schnittstelle und guck dir an, ob du RTS steuern und über DCD zurück> lesen kannst (mit Brücke RTS-DCD).
Tja, dazu muesste ich wissen, wie das geht.
@ Joachim B: Toll! Ich kauf jetzt aber nicht die ganzen Teile und mach
ein neues Projekt auf. Ich habe ja auch einen Receiver gebaut...und den
wuerde ich gerne benutzen.
Ich habe mal gemessen: an der RTS-Leitung liegen -11V, obwohl doch da
+11V drangehoeren! Alle Leitungen der Bauteile und auch DCD haben 0,07V.
Der Receiver bekommt also seine 5V gar nicht. Wieso auch? Der
Spannungsregler kriegt ja die 11V verkehrtrum.
Jetzt frag ich mich, welcher Software-Teil die Pins denn richtig
schalten sollte, so dass RTS konstant +11V liefert und DCD gepollt wird.
Sollte das das Debian machen oder Lirc? mode2 liefert ja die
Sensoreingaben VOR dem Lirc. Lirc muss fuer mode2 also nicht laufen.
Dass mit dem Kondensator verstehe ich nicht: Da ist doch einer in der
Schaltung, hinter dem Spannungsregler.
Antwort gefunden: http://lirc.org/receivers.html>The power for the circuit comes from the RTS line of the serial port. D1 protects
the circuit from the negative voltage that is usually on the RTS pin. The LIRC
driver will change the serial port settings on initialization so that the circuit
will get the necessary positive voltage.
Ich habe also ein Lirc-Problem.
Peter K. schrieb:> Ich habe mal gemessen: an der RTS-Leitung liegen -11V, obwohl doch da> +11V drangehoeren!
Läuft denn die zugehörige Software auf dem PC?
Ja klar, Lirc. Moeglicherweise habe ich es nicht richtig konfiguriert.
Das ist ja mein Problem: Die 0.9.x-er Versionen sind kaputtprogrammiert.
Bei einigen von ihnen geht Seriel angeblich nicht, bei anderen geht
lirc-setup nicht, bei allen werden neue Config-Dateien verwendet.
Nirgendwo gibt es aktuelle Anleitungen. Wirklich schlimm!
Kurze Rueckmeldung: Ich hab's an's Laufen gekriegt. Der Linux-Kernel hat
einen Fehler, der Lirc an der seriellen Verbindung hindert. Welche
Versionen genau betroffen sind kann ich nicht sagen. Mit 4.10 wurden
Probleme gemeldet. Ich hatte 4.09 drauf. Angeblich soll es ab 4.17
wieder gehen.
Meine Version ist jetzt 4.19. Damit laeuft's auf jeden Fall.
AUSSERDEM habe ich den Empfaenger direkt an 5V vom Netzteil
angeschlossen UND auch GND an GND vom Netzteil! Mit dem Serial-Port ist
also nur noch DCD verbunden.
Am GND vom Serial Port hatte ich knapp 3V gegen Masse gemessen. Sobald
der Empfaenger am echten GND vom Mainboard lag, erwachte der Empfaenger
zum Leben.
Wichtig auch: Im Debian muss eine Datei /etc/modprobe.d/serial_ir.conf
angelegt werden:
1
# Config f COM2 (/dev/ttyS1):
2
options serial_ir irq=3 io=0x2f8
Dann muss nur noch die Datei /etc/lirc/lirc_options.conf
angepasst werden:
driver auf default und der Aufruf von setserial sind wichtig. Hier die
ganze Datei:
1
/home/minimpc# cat /etc/lirc/lirc_options.conf
2
# These are the default options to lircd, if installed as
3
# /etc/lirc/lirc_options.conf. See the lircd(8) and lircmd(8)
4
# manpages for info on the different options.
5
#
6
# Some tools including mode2 and irw uses values such as
7
# driver, device, plugindir and loglevel as fallback values
Bei mir ist der Serial-Port COM2. Wenn das einer nachmachen will und
COM1 benutzt:
In vielen Faellen ist COM1 bei /dev/ttyS0, hat die Adresse 0x03f8 (oder
0x3f8) und IRQ4. Die eben erwaehnten Dateien muessen entsprechen
angepasst werden.