Forum: Mikrocontroller und Digitale Elektronik Fragen zur IR-Informationsübertragung


von Ernst H. (Firma: Laboratorium_S1) (ernst_haft)


Lesenswert?

Hallo liebes Forum,
ich plane mittels gepulstem Infrarot auf einer Frequenz von 38kH (quasi 
Fernbedienungs-Frequenz) einseitig Informationen zu übermitteln.
Bei der Recherche sind mir jedoch einige Fragen gekommen, die hier 
hoffentlich beantwortet werden können:

Wie wichtig ist die Wellenlänge? Müssen Sender und Empfänger die selbe 
Wellenlänge aufweisen (z.B. 940nm)?

Die Frequenz bleibt unverändert. Folglich werden Nachrichten mithilfe 
des "Duty-Zyklus" übertragen. Regelt dieser jedoch nur die Helligkeit 
der IR-LED?

Die übertragenen Nachricht soll programmiert mit Python >>Startbit. 
Info. Stoppbit<< enthalten. Welche Module sollte ich für Raspberry Pi 
dazu nutzen?

Könnt ihr mir diese Fragen zumindest näherungsweise beantworten? Und 
verzeiht, ich bin auf diesem Gebiet eher Amateur, als Profi, jedoch zu 
lernen bereit.

Vielen Dank vorab.
Hochachtungsvoll,
euer Ernst

von Falk B. (falk)


Lesenswert?

Ernst H. schrieb:
> Hallo liebes Forum,
> ich plane mittels gepulstem Infrarot auf einer Frequenz von 38kH (quasi
> Fernbedienungs-Frequenz) einseitig Informationen zu übermitteln.
> Bei der Recherche sind mir jedoch einige Fragen gekommen, die hier
> hoffentlich beantwortet werden können:
>
> Wie wichtig ist die Wellenlänge? Müssen Sender und Empfänger die selbe
> Wellenlänge aufweisen (z.B. 940nm)?

Naja, grob. 10-20nm Abweichung machen nix, 100nm je nach Spektralkurve 
der Photodiode bzw. des Tageslichtfilters schon.

> Die Frequenz bleibt unverändert.

Das ist die Trägerfrequenz.

> Folglich werden Nachrichten mithilfe
> des "Duty-Zyklus" übertragen.

Der Träger wird digital moduliert, sprich, ON-OFF.

> Die übertragenen Nachricht soll programmiert mit Python >>Startbit.
> Info. Stoppbit<< enthalten.

Orientiere dich da mal lieber an bestehenden IR-Codes, das ist deutlich 
einfacher und funktioniert.

https://www.mikrocontroller.net/articles/IRMP

> Welche Module sollte ich für Raspberry Pi
> dazu nutzen?

Vermutlich geht jedes beliebige IO-Pin. Kann sein, daß der UART Vorteile 
hat.

> Könnt ihr mir diese Fragen zumindest näherungsweise beantworten? Und
> verzeiht, ich bin auf diesem Gebiet eher Amateur, als Profi, jedoch zu
> lernen bereit.

Was soll der Quark? Niemand muss sich für eine vernünftig formulierte 
Frage entschuldigen oder schämen, egal auf welchem Niveau.

> Vielen Dank vorab.
> Hochachtungsvoll,
> euer Ernst

Auch diese Zeilen sind im Internet unüblich bis überflüssig.

von Stefan F. (Gast)


Lesenswert?

Ernst H. schrieb:
> Die übertragenen Nachricht soll programmiert mit Python >>Startbit.
> Info. Stoppbit<< enthalten. Welche Module sollte ich für Raspberry Pi
> dazu nutzen?

Beachte, dass die üblichen IR Empfänger eine gewisse zeit brauchen, um 
sich auf das Signal einzupendeln. Deswegen sendet man vor der 
eigentlichen Datenübertragung ein einleitendes Dummy Signal.

Da drahtlose Kommunikation relativ fehlerbehaftet ist, würde ich die 
Nutzdaten mit Prüfsummen versehen und mehrfach übertragen. Dann kann der 
Empfänger Fehlerhafte Pakete erkennen und verwerfen.

von Schlaumaier (Gast)


Lesenswert?

In meiner frühen Handy-Zeit hatte ich ein Nokia-Handy und ein PDA.

Ich konnte mit den PDA über die IR-Schnittstelle des Handys surfen. 
Sogar Online-Spiele (Wie Inselkampf = ein Browsergame der ersten Zeit) 
machen.

Ich denke den TO geht es nicht um eine Fernbedienung. Sondern eine 
Seriellen Schnittstelle via IR.

Die einzige Frage die der TO sich da stellen muss ist. Ob er (falls 
vorhanden) ein fertiges Protokoll nimmt oder selbst eins schreibt.

So lange 2 das gleiche reden, ist es eigentlich egal wie er es macht.

von Sebastian (Gast)


Lesenswert?

Um RS232 zu übertragen (direkt, und nicht ein spezielles Format für 
Fernbedienungen), braucht man eine Modulationsfrequenz, die deutlich 
höher als die Datenrate liegt. Der Empfänger muß dann natürlich dazu 
passen. Es gab mal 455 kHz für Fernsteuernwendungen mit hoher Datenrate, 
wenn ich mich richtig erinnere.

Eventuell wäre IRDA ja ein Ansatz. Allerdings haben nur wenige 
Controller einen IRDA-fähigen UART, da das Signal etwas anders aussehen 
muß als für normales RS232.

von Wolfgang (Gast)


Lesenswert?

Ernst H. schrieb:
> Wie wichtig ist die Wellenlänge? Müssen Sender und Empfänger die selbe
> Wellenlänge aufweisen (z.B. 940nm)?

Dazu guckst du im Datenblatt von Sender und Empfänger das emittierte 
Spektrum bzw. die Empfindlichkeitskurve an. Für die Übertragung ist nur 
derjenige Energieanteil des Senders wirkungsvoll, der beim Empfänger 
durch das Filter kommt. Jeder Energieverlust auf dem Übertragungsweg 
reduziert die Reichweite. Ein Faktor 4 in der Leistung bedeutet einen 
Faktor 2 in der Reichweite.

von Forennutzer (Gast)


Lesenswert?

Hallo

Falk B. schrieb:
> Was soll der Quark? Niemand muss sich für eine vernünftig formulierte
> Frage entschuldigen oder schämen, egal auf welchem Niveau.

Der "Quark" ist leider dank der bekannten und zu einen Gutteil 
angemeldeten Forenstörenfriede (die schämen sich nicht mal...) und 
hochmotivierten Korinthenkackern  leider notwendig.
Ich selbst habe teilweise schon deutlich heftiger Einschränkungen (dann 
aber nicht so auf freundlich und direkt mit einer Erklärung und 
Entschuldigung) gemacht - weil man den Störenfrieden die dummen 
Kommentare und Frechheiten zumindest etwas erschweren kann, bzw. diese 
sich dann selbst bloßstellen.

Sorry das ich mit den Thema jetzt komme - aber dein, Falk, durchaus 
vernünftiger und zustimmungsfähiger Anspruch ist leider hier im Forum 
viel zu oft nicht gegeben und lebbar und die vom TO gegebenen 
Einschränkungen und "Entschuldigungen" sind in etwa leider notwendig um 
gerade die dummen und frechen "Antworten" besonders bei den 
interessantesten Themen einigermaßen im Vorhinein auszubremsen.

Ernst H. schrieb:
> Vielen Dank vorab.
> Hochachtungsvoll,
> euer Ernst

Ernst das ist wirklich ein wenig übertrieben- ein "Hallo" "Guten Tag" 
oder ähnliches reicht aus , ich habe auch kein Problem wenn gar kein 
Gruß oder ähnliches zu lesen ist, davon geht nämlich auch die Welt nicht 
unter - ist in diesen forum auch kein so großes Thema, kenne aber 
(durchaus aktiv) ein anderes Forum wo man ähnliche "Nerds" (Ist für mich 
-meist- ein Ehrentitel) wie hier antreffen kann, wo sich garantiert 
jemand meldet und gemeckert weil der ach so böse TO direkt ohne ein 
Hallo (besser aber mehr...)zur Sache gekommen ist ...

von c-hater (Gast)


Lesenswert?

Ernst H. schrieb:

> Die Frequenz bleibt unverändert. Folglich werden Nachrichten mithilfe
> des "Duty-Zyklus" übertragen.

Folglich? Quatsch!

Das wäre allenfalls eine Möglichkeit. Allerdings wird genau diese von 
den allermeisten IR-Standards nicht benutzt.

von Schlaumaier (Gast)


Lesenswert?

Sebastian schrieb:
> Eventuell wäre IRDA ja ein Ansatz.

Genau daran habe ich gedacht. Ist mir nur nicht eingefallen. !!

Genau SO hieß glaub ich die Schnittstelle auf den Kopfseite meines 
Nokia. ;)

Und dann kann der TO eine relativ brauchbare Speed bekommen.

von W.S. (Gast)


Lesenswert?

Ernst H. schrieb:
> ich plane mittels gepulstem Infrarot auf einer Frequenz von 38kH (quasi
> Fernbedienungs-Frequenz) einseitig Informationen zu übermitteln.

Also die Frequenz ist nicht wirklich kritisch. Aber die Amplitude ist es 
schon - und zwar kurzzeitig so im Bereich bis 10 ms. Der Grund liegt 
darin, daß die üblichen IR-Empfänger eine Amplitudenregelung haben, so 
daß unterschiedliche Einfallswinkel usw. ausgeregelt werden. Die Folge 
davon ist, daß das Informationstelegramm sinnvoll gewählte Codes zur 
Informationsübertragung haben sollte. Also nix mit gepulstem Infrarot 
bzw. Ein- Aus- Codierung.

Lies ganz einfach mal die Beschreibungen der üblichen Fernbedienungsmodi 
und mache deine Übertragungen dazu passend. IRDA ist eine andere Nummer.

W.S.

von Hannes (Gast)


Lesenswert?

Hallo Ernst,

das Stichwort "IrDA" ist ja schon gefallen. Schau Dich mal auf 
https://de.wikipedia.org/wiki/Infrared_Data_Association um.

Zunächst mal interesant ist die Intetion hinter IrDA:
"In der Infrared Data Association (IrDA)[1] haben sich 1993 circa 50 
Unternehmen zusammengeschlossen. [...] IrDA spezifiziert Standards für 
die optische drahtlose Punkt-zu-Punkt Datenübertragung mittels 
infrarotem Licht (850 – 900 nm)."

Das könnte für dich passen - von daher darf man dann auch ruhig bei der 
IrDA spickeln.

Was dich zunächst mal interessiert ist die IrPHY. Einfach mal rein 
schauen. Das eckt sich zumeist mit dem von dir Gesagten. Was aber neu 
für dich sein dürfte, ist die Kanalcodierung (schreckliches Wort). 
Dahinter steckt, dass man nicht so einfach 0 (aus) und 1 (ein) 
übertragen kann/soll, sondern Verfahren (Codierungen) verwendet wie RZI, 
4PPM, NRZI, ... - und natürlich mit Prüfsummen arbeitet.

Das meiste wurde ja schon gesagt. Trotzdem will ich dich dazu animieren, 
nicht irgendwas, sondern einen der Unterstandards zu implementieren, 
z.B. SIR.

Du tust dich einfacher, kannst aufkommende Fragen präziser formulieren, 
bei Antworten Dummgelaber von echten Tipps viel einfacher 
unterscheiden...

just my 2ct

von Olaf (Gast)


Lesenswert?

> Eventuell wäre IRDA ja ein Ansatz. Allerdings haben nur wenige
> Controller einen IRDA-fähigen UART, da das Signal etwas anders aussehen
> muß als für normales RS232.

Das stimmt nicht. Zu meinem eigenen erstaunen haben eine ganze Menge 
Controller IRDA. Das muss noch jemand in grossen Umfang einsetzen. (z.B 
STM32F051, STM32F103, STM32G071, STM32L151, usw...)

Es gibt auch noch neue Transciever: TFBS4711

Olaf

von Wolfgang (Gast)


Lesenswert?

Abhängig davon, welche Datenmengen übertragen werden sollen, kann man 
für einfache Steuerkommandos auch bei dem weit verbreiteten RC-5 etwas 
abgucken.

von Erich (Gast)


Lesenswert?


von Ernst H. (Firma: Laboratorium_S1) (ernst_haft)


Lesenswert?

Hallo liebe Forenmitglieder und hilfsbereite Antwortende,

vielen Dank für die vielen Rückmeldungen. Viele Beiträge haben mir mehr 
geholfen, als ich zunächst erhofft hatte. Jedoch haben manche Beiträge 
bei mir auch neue Fragen aufgeworfen.

Hannes schrieb:
> Was dich zunächst mal interessiert ist die IrPHY.

Diese hat jedoch (so habe ich das verstanden) eine Reichweite von ca. 1 
Meter. Das ist aber etwas zu wenig für mich. Ich glaube ich brauche 
ungefähr 2 Meter.
Welches Protokoll sollte ich dafür verwenden?

Falk B. schrieb:
> Naja, grob. 10-20nm Abweichung machen nix, 100nm je nach Spektralkurve
> der Photodiode bzw. des Tageslichtfilters schon.

Würde es mit 100nm Abweichung in der Wellenlänge noch zu IrPhy passen?

Viele Grüße an alle.
Euer Ernst.

von Hmmm (Gast)


Lesenswert?

Ernst H. schrieb:
> Ich glaube ich brauche ungefähr 2 Meter.
> Welches Protokoll sollte ich dafür verwenden?

Um was für Datenmengen geht es denn?

von Wolfgang (Gast)


Lesenswert?

c-hater schrieb:
> Das wäre allenfalls eine Möglichkeit. Allerdings wird genau diese von
> den allermeisten IR-Standards nicht benutzt.

Das hat auch seinen Grund, weil für eine vernünftige Funktion der AGC 
sich das mittlere Verhältnis von Ein- zu Auszeit nicht ändern darf.

von Wolfgang (Gast)


Lesenswert?

Ernst H. schrieb:
> Würde es mit 100nm Abweichung in der Wellenlänge noch zu IrPhy passen?

Liest du auch?

Wolfgang schrieb:
> Dazu guckst du im Datenblatt von ...

Oder hier:
https://www.itwissen.info/IrPHY-IrDA-physical-layer.html

von Falk B. (falk)


Lesenswert?

Ernst H. schrieb:
> Diese hat jedoch (so habe ich das verstanden) eine Reichweite von ca. 1
> Meter. Das ist aber etwas zu wenig für mich. Ich glaube ich brauche
> ungefähr 2 Meter.
> Welches Protokoll sollte ich dafür verwenden?

Dazu musst du erstmal sagen, welche Art von Daten du übertragen willst? 
Ein paar Steuerbefehle wie eine Fernbedienung oder größere Datenmengen? 
Wenn Daten, wieviele und wie schnell?

von A. S. (Gast)


Lesenswert?

Ernst H. schrieb:
> Diese hat jedoch (so habe ich das verstanden) eine Reichweite von ca. 1
> Meter. Das ist aber etwas zu wenig für mich. Ich glaube ich brauche
> ungefähr 2 Meter.
> Welches Protokoll sollte ich dafür verwenden?

Die Reichweite ist eine Frage der Sendeleistung, auch 10m sind möglich.

Irda ist halt aufwändiger, arbeitet mit kurzen Impulsen (<=2us) und 
braucht entsprechende Umsetzer für uarts.

Daher (nochmals)

Wieviel Daten? Wie schnell?

Notfalls geht codieren/dekodieren auch mit einem Tiny und einfachen 
IR-Dioden.

von c-hater (Gast)


Lesenswert?

Olaf schrieb:

> Zu meinem eigenen erstaunen haben eine ganze Menge
> Controller IRDA.

So ist es.

> (z.B
> STM32F051, STM32F103, STM32G071, STM32L151, usw...)

Und auch alle AVR XMega (sowie deren Erben in Gestalt der neueren Tinys 
und Megas sowie AVRxxxDy).

Und vermutlich noch eine ganze Menge mehr in anderen Controllerfamilien.

Aber Vorsicht: Das, was hier geliefert wird, ist nicht wirklich IRDA, 
sondern nur eine kleiner Teil davon. Bei den AVR-Teilen nennt sich das 
"IRCOM". Vermutlich mal wieder ein Kunstbegriff zur Vermeidung von 
Lizenzkosten, ähnlich wie TWI vs. I2C usw.

Allerdings ist das genau die Submenge des Standards, die für das 
Vorhaben des TO relevant wäre. Und da auch fertige Transceiver dafür 
nach wie vor für kleines Geld problemlos kaufbar sind, ist das durchaus 
immer noch attraktiv für eine solche Anwendung.

von Ernst H. (Firma: Laboratorium_S1) (ernst_haft)


Angehängte Dateien:

Lesenswert?

Falk B. schrieb:
> Dazu musst du erstmal sagen, welche Art von Daten du übertragen willst?
> Ein paar Steuerbefehle wie eine Fernbedienung oder größere Datenmengen?
> Wenn Daten, wieviele und wie schnell?
Hmmm schrieb:
> Um was für Datenmengen geht es denn?

Konkret will ich über Infrarot Daten von einem Raspberry Pi (4B) zu 
einem (später mehreren) Raspberry Pi Pico(s) (mit RP2040 Chip) senden.
Der Pico empfängt dabei Daten, die ein paar an ihm angeschlossene LEDs 
leuchten lassen.
Vermutlich sind die Datensätze nicht allzu groß, da nur gesendet wird, 
wenn sich der Zustand der LEDs ändert (von an zu aus, von Blinken zu 
Dauerleuchten, ...)
Zur tatsächlichen Größe der Daten kann ich noch nicht viel sagen.

Wenn ich anfange zu senden, soll binnen 1 Sekunde der Zustand der LEDs 
verändert werden.
Mehr kann ich zur Geschwindigkeit noch nicht sagen.
Tut mir leid.

von Wolfgang (Gast)


Lesenswert?

Ernst H. schrieb:
> Vermutlich sind die Datensätze nicht allzu groß, da nur gesendet wird,
> wenn sich der Zustand der LEDs ändert (von an zu aus, von Blinken zu
> Dauerleuchten, ...)

Wie groß die Datensätze dabei sind, hängt davon ab, um wie viele LED es 
sich handelt und mit welcher Frequenz sich der Zustand der LEDs 
(maximal) ändert. Irgendetwas musst du doch über dein Vorhaben wissen?

von Falk B. (falk)


Lesenswert?

Ernst H. schrieb:

>00-my_plan.png
>1,8 MB

AUA! Siehe Bildformate.

> Konkret will ich über Infrarot Daten von einem Raspberry Pi (4B) zu
> einem (später mehreren) Raspberry Pi Pico(s) (mit RP2040 Chip) senden.
> Der Pico empfängt dabei Daten, die ein paar an ihm angeschlossene LEDs
> leuchten lassen.

Warum nicht Bluetooth oder WLAN? Das haben die schon.

> Vermutlich sind die Datensätze nicht allzu groß, da nur gesendet wird,
> wenn sich der Zustand der LEDs ändert (von an zu aus, von Blinken zu
> Dauerleuchten, ...)

Wenn die Datensätze in den Picos vorhanden sind, brauchst du nur 
START/STOP und eine Nummer, so wie es Fernbedienungen machen.

> Wenn ich anfange zu senden, soll binnen 1 Sekunde der Zustand der LEDs
> verändert werden.

Langsam.

Nimm einen der gängigen Fernbedienungscodes, da kannst du sämtliche 
Hard- und Software vom IRMP nutzen. Oder Funk, siehe oben.

von Ernst H. (Firma: Laboratorium_S1) (ernst_haft)


Lesenswert?

Falk B. schrieb:
> Wenn die Datensätze in den Picos vorhanden sind, brauchst du nur
> START/STOP und eine Nummer, so wie es Fernbedienungen machen.

So ist es. Es sind gewisse Funktionen auf dem Pico gespeichert, die mit 
IR-Signalen aufgerufen werden.

Falk B. schrieb:
> Nimm einen der gängigen Fernbedienungscodes, da kannst du sämtliche
> Hard- und Software vom IRMP nutzen. Oder Funk, siehe oben.

Welche Kriterien soll ich nehmen, um den Code zu wählen?
Vielen Dank und beste Grüße,
euer Ernst

von Falk B. (falk)


Lesenswert?

Ernst H. schrieb:
> Welche Kriterien soll ich nehmen, um den Code zu wählen?

Den, der am einfachsten ist und deine Anforderungen erfüllt.

https://www.mikrocontroller.net/articles/IRMP#Unterst%C3%BCtzte_IR-Protokolle

RC5 oder NEC, das sind die verbreitesten. Meine Glotze von 2013 nutzt 
RC5.

von Wolfgang (Gast)


Lesenswert?

Ernst H. schrieb:
> Welche Kriterien soll ich nehmen, um den Code zu wählen?

Er soll andere Geräte in der Umgebung, die ebenfalls über IR 
fernsteuerbar sind, nicht stören.

von c-hater (Gast)


Lesenswert?

Ernst H. schrieb:

> Konkret will ich über Infrarot Daten von einem Raspberry Pi (4B)

Schlecht. Der kann von Hause aus erstmal kein IRDA(IRCOM). Es ist aber 
nicht allzu schwer, es ihm beizubringen. Zumindest nicht schwerer, als 
ihm irgendwelche (für die Anwendung eigentlich eher suboptimalen) 
FB-Protokolle beizubringen.

> zu einem (später mehreren) Raspberry Pi Pico(s) (mit RP2040 Chip) senden.

Der Pico kann zwar von Hause aus auch weder IRDA noch irgendwelche 
FB-Protokolle, ist aber dank seiner PIOs wirklich sehr leicht dazu zu 
befähigen. Man muss sich hier nicht mit den mangelnden 
Echtzeitfähigkeiten eines Linux-OS rumschlagen und hat Hardware, die 
relativ universell schnelles Bitgeklimpere in Echzeit abhandeln kann, 
egal mit welchem unsinnigen Scheiß der werte Benutzer gerade die 
MCU-Cores sinnlos auslastet...

Also ich würde den Empfänger für ziemlich unkritisch halten. Das ist 
wichtig, denn es ist grundsätzlich viel schwieriger, einen Empfänger zu 
programmieren als einen Sender.

von Gerald K. (geku)


Lesenswert?


von Forist (Gast)


Lesenswert?

Gerald K. schrieb:
> 
https://www.google.com/url?sa=t&source=web&rct=j&url=https://www.ti.com/lit/pdf/slaa202&ved=2ahUKEwjY7aak7J_1AhUOS_EDHRhrDZoQFnoECA4QAQ&usg=AOvVaw0LSzeIVlxsWnsu2duDofrq

Was geht es Alphabet Inc. an, wer sich hier im Forum für die IrDA 
Application Note SLAA202B von TI mit dem MPS430 interessiert.
Es würde völlig reichen, wenn du den Link auf die Ablage bei TI postest:
https://www.ti.com/lit/an/slaa202b/slaa202b.pdf

von Hannes (Gast)


Lesenswert?

Ernst H. schrieb:
> Hannes schrieb:
>> Was dich zunächst mal interessiert ist die IrPHY.
>
> Diese hat jedoch (so habe ich das verstanden) eine Reichweite von ca. 1
> Meter. Das ist aber etwas zu wenig für mich. Ich glaube ich brauche
> ungefähr 2 Meter.
> Welches Protokoll sollte ich dafür verwenden?

Wenn da steht "1 m" - dann ist das so. IrDA will nicht in die Weite 
übertragen, sondern schnell und viel. Im Extremfall wählt man dann als 
Codierer Giga-IR mit 512 Mbit/s bzw. 1 Gbit/s.

Der Grund für die begrenzte Reichweite: Du willst nicht mit einem Sender 
(z.B. Computer) womöglich 24/7 Daten ballern (z.B. an einen Drucker) - 
und damit einen Übertragungskanal monopolisieren und IR für dich und 
deine Nachbarn unbenutzbar machen. (vgl. Antwort von Wolfgang)

Ernst H. schrieb:
> Konkret will ich über Infrarot Daten von einem Raspberry Pi (4B) zu
> einem (später mehreren) Raspberry Pi Pico(s) (mit RP2040 Chip) senden.
> Der Pico empfängt dabei Daten, die ein paar an ihm angeschlossene LEDs
> leuchten lassen.
> Vermutlich sind die Datensätze nicht allzu groß, da nur gesendet wird,
> wenn sich der Zustand der LEDs ändert (von an zu aus, von Blinken zu
> Dauerleuchten, ...)

Das allerdings klingt leicht anders als in deinem Eingangspost...

Da du sogar schon Chips, Module, Anzahl der Stop-Bits, 
Programmiersprache ausgewählt hast, würde ich das "dann einfach so 
machen".
Ist es das, was Du hören willst?

just my 2ct
-Hannes

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Da weder für den Pi noch für den Pico IRMP verfügbar ist und der Pi 
sowieso nicht echtzeitfähig ist, um ein zeitstabiles Signal über 
Bit-Banging zu generieren, bieten sich zwei Lösungen über UART an:

1. Zwei AVRs mit Sender: IRSND und Empfänger: IRMP dazwischen:
1
Pi4 UART -> AVR-UART -> IR-Diode ----> IR-Empfänger -> AVR-UART -> Pico-UART
Für diesen Fall empfehle ich das NEC-Protokoll, das liefert eine 
ausreichende Sicherung. Falsch empfangene IR-Frames werden von IRMP 
automatisch verworfen.

Die folgende Lösung ist noch einfacher, da sie wie eine transparente 
UART-Verbindung arbeitet und keine besondere Software benötigt:

2. Das UART-Ausgangssignal vom PI mit NE555 auf 38kHz modulieren, einen 
38kHz-TSOP direkt an UART vom Pico:
1
Pi4 -> UART -> NE555 -> IR-Diode -> TSOP-IR-Empfänger -> UART Pico

Hier muss die Sicherung der Datenintegrität jedoch selber eingebaut 
werden.

Zu beachten: Die Übertragungsrate richtet sich nach der 
Modulationsfrequenz,

von Wolfgang (Gast)


Lesenswert?

Frank M. schrieb:
> Hier muss die Sicherung der Datenintegrität jedoch selber eingebaut
> werden.

Nicht nur die. Damit die AGC des TSOP nicht rumeiert, ist es ratsam, 
einen Code zu wählen, der ähnliche Eigenschaften wie der Manchester-Code 
besitzt (stabiles High/Low-Verhältnis in den Daten)

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Wolfgang schrieb:
> Nicht nur die. Damit die AGC des TSOP nicht rumeiert, ist es ratsam,
> einen Code zu wählen, der ähnliche Eigenschaften wie der Manchester-Code
> besitzt (stabiles High/Low-Verhältnis in den Daten)

Hier könnte man einen Hammingcode 8/4 wählen. Dann sind es ebenso viele 
1en wie 0en in einem Byte. Als Nebeneffekt hat man noch die zusätzliche 
Datensicherheit. Das reduziert natürlich auch die 
Netto-Datenübertragungsrate.

von Ernst H. (Firma: Laboratorium_S1) (ernst_haft)


Lesenswert?

Frank M. schrieb:
> 2. Das UART-Ausgangssignal vom PI mit NE555 auf 38kHz modulieren, einen
> 38kHz-TSOP direkt an UART vom Pico:Pi4 -> UART -> NE555 -> IR-Diode ->
> TSOP-IR-Empfänger -> UART Pico

UART ist, soweit ich das verstanden habe, bereits im RP2040 und im 
Raspberry Pi 4B integriert.
Muss ich hardwaretechnisch noch irgendetwas außer IR-Sendediode und 
-Empfänger ergänzen?

von Wolfgang (Gast)


Lesenswert?

Ernst H. schrieb:
> Muss ich hardwaretechnisch noch irgendetwas außer IR-Sendediode und
> -Empfänger ergänzen?

Für die IR-Diode wirst du wahrscheinlich einen Treiber einsetzen wollen 
- kommt auf die gewünschte Reichweite an.

von Ernst H. (Firma: Laboratorium_S1) (ernst_haft)


Lesenswert?

Wolfgang schrieb:
> Für die IR-Diode wirst du wahrscheinlich einen Treiber einsetzen wollen
> - kommt auf die gewünschte Reichweite an.

Das wäre dann aber bereits ein Software-"Problem", oder?

von Wolfgang (Gast)


Lesenswert?

Ernst H. schrieb:
> Das wäre dann aber bereits ein Software-"Problem", oder?

Nein, ein Stromproblem.
Dein Python-Controller kann nur einige Milliampere am IO-Pin liefern, 
deine IR-LED möchtest du vielleicht mit deutlich mehr betreiben - kommt 
auf die gewünschte Reichweite an.

von Ernst H. (Firma: Laboratorium_S1) (ernst_haft)


Lesenswert?

Wolfgang schrieb:
> Nein, ein Stromproblem.
> Dein Python-Controller kann nur einige Milliampere am IO-Pin liefern,
> deine IR-LED möchtest du vielleicht mit deutlich mehr betreiben - kommt
> auf die gewünschte Reichweite an.

Löse ich das mithilfe eines Erweiterungsboards für das Raspberry Pi oder 
sollte ich lieber auf einen externen Stromkreis (mit Optokopplern, 
Transistoren, etc. ...) bauen?

von Falk B. (falk)


Lesenswert?

Ernst H. schrieb:
> Löse ich das mithilfe eines Erweiterungsboards für das Raspberry Pi oder
> sollte ich lieber auf einen externen Stromkreis (mit Optokopplern,
> Transistoren, etc. ...) bauen?

Ein einfacher Transistor + Basiswiderstand reicht.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Ernst H. schrieb:
> Muss ich hardwaretechnisch noch irgendetwas außer IR-Sendediode und
> -Empfänger ergänzen?

Einen Transistor (plus Widerstände), siehe auch erstes Bild im Artikel 
IRSND.

Du musst aber noch das UART-Signal modulieren. Dafür reicht ein NE555 
aus. Google einfach mal nach "IR modulieren NE555".

von Uwe K. (ukhl)


Lesenswert?

Ernst H. schrieb:
> Frank M. schrieb:
>> 2. Das UART-Ausgangssignal vom PI mit NE555 auf 38kHz modulieren, einen
>> 38kHz-TSOP direkt an UART vom Pico:Pi4 -> UART -> NE555 -> IR-Diode ->
>> TSOP-IR-Empfänger -> UART Pico
>
> UART ist, soweit ich das verstanden habe, bereits im RP2040 und im
> Raspberry Pi 4B integriert.
> Muss ich hardwaretechnisch noch irgendetwas außer IR-Sendediode und
> -Empfänger ergänzen?

Ich würde auch diese zweite Lösung empfehlen. Die Reichweite ist mit 
rund 5m gut und es ist sehr zuverlässig.

IRSND und IREM halte ich für die Aufgabe als Overkill.
Und Irda (IRCOM) ist zwar schneller, aber sehr störanfällig bei sehr 
geringer Reichweite.

Manchester ist für die Anwendung unpassend. Es ist kein Ton- oder 
Magnetträger.

Hamming Code ist Overkill. Darüber unterhalten wir uns, wenn es zu 
Fehlübertragungen kommt, was sehr unwahrscheinlich ist.

Einfach UART raus und wieder rein. Wie eine direkte Verbindung.

Der TSOP benötigt keine weiteren Komponenten.

Die IR Diode natürlich einen Vorwiederstand. Und die Erzeugung der 
Trägerfrequenz (meist 38kHz, ist beim TSOP spezifiziert). Diese kann, 
wie vorgeschlagen, mit einem NE555 erzeugt werden. Alternativ ist auch 
ein kleiner Controller möglich. Dieser übernimmt die Erzeugung der 
Trägerfrequenz und reicht meistens auch um die LED zu treiben (kein 
Transistor nötig). Z.B. ein ATtiny13A kann diese Aufgabe hervorragend 
übernehmen. Ich programmiere dir einen, wenn Du willst.

WICHTIG:
Das UART Sende-Signal muss invertiert werden, da der Ruhepegel "High" 
ist. Auch das kann der ATtiny beim Senden übernehmen. Idealerweise kann 
es auch der Controller machen, das ist mit der Standard UART nicht immer 
möglich.

2400 Baud ist damit kein Problem. Das scheint heutzutage sehr langsam, 
ist aber für die Aufgabe schnell genug. Es können rund 240 Byte pro 
Sekunde gesendet werden. Um 10 LEDs zu steuern, wird man sicher nicht 
mehr als 10 Byte (80 Bit) benötigen. Das ist in rund 40 ms erledigt. 
Fernbedienungen sind nicht schneller.

Ein passendes Protokoll musst Du dir selbst ausdenken. Aber das ist 
Software.

: Bearbeitet durch User
von Ernst H. (Firma: Laboratorium_S1) (ernst_haft)


Lesenswert?

Uwe K. schrieb:
> Dieser übernimmt die Erzeugung der
> Trägerfrequenz und reicht meistens auch um die LED zu treiben (kein
> Transistor nötig). Z.B. ein ATtiny13A kann diese Aufgabe hervorragend
> übernehmen.

Welchen ich an das Raspberry Pi 4B anschließe?
Benötige ich dazu für den ATtiny13A noch weitere externe Komponenten, 
die ich zwischen ihn und den Rpi schalte?


Uwe K. schrieb:
> Ich programmiere dir einen, wenn Du willst.

Das wäre wirklich sehr nett. Wenn es für dich keine weiteren Mühen 
bereitet, würde ich das Angebot gerne annehmen.

Vielen Dank, der Beitrag #6937491 von Uwe K. war wirklich sehr 
hilfreich.

von Uwe K. (ukhl)


Lesenswert?

Ernst H. schrieb:

> Benötige ich dazu für den ATtiny13A noch weitere externe Komponenten,
> die ich zwischen ihn und den Rpi schalte?

Eigentlich nicht.
Schließe ihn am 3.3V und GND an.
Die LED braucht natürlich einen Vorwiderstand.
Ein 10k Widerstand von RESET an Vcc. Kann man zur Not auch weglassen.
Ein 100nF Kondensator zwischen Vcc und GND schadet nicht. Wird auch ohne 
gehen, aber sonst gibts im Forum Ärger ;-)

Der Raspberry liefert nur 50mA an 3.3V. Versuche erstmal, ob es reicht.
Sonst lassen wir uns was einfallen. Am Controller ändert sich nichts.

>> Ich programmiere dir einen, wenn Du willst.
> Das wäre wirklich sehr nett. Wenn es für dich keine weiteren Mühen
> bereitet, würde ich das Angebot gerne annehmen.

Ein wenig Mühe macht es schon. Ist aber keine große Sache.
Welche Bauform brauchst Du? DIP oder SMD EIAJ ?

von Ernst H. (Firma: Laboratorium_S1) (ernst_haft)


Lesenswert?

Uwe K. schrieb:
> Ein wenig Mühe macht es schon. Ist aber keine große Sache.
> Welche Bauform brauchst Du? DIP oder SMD EIAJ ?

Momentan keine, da ich ihn noch nicht bestellt habe.
Ich werde mich aber für DIP entscheiden, da ich mit SMD-Controllern 
keine guten Erfahrungen gemacht habe.
Würde als Alternative zum attiny 13 A auch der ATTINY13 20PU gehen?
Denn ersterer ist beim Händler meines Vertrauens momentan nicht 
verfügbar.

Vielen Dank noch einmal,
dein/euer Ernst

von Cartman (Gast)


Lesenswert?

> wenn es zu
> Fehlübertragungen kommt, was sehr unwahrscheinlich ist.
> Einfach UART raus und wieder rein. Wie eine direkte Verbindung

Da muss man schon jede Menge Optimismus haben, um das zu glauben
und zu schreiben. IR-Codes sind nicht umsonst so gestrickt, dass
laengere 0- bzw. 1-Phasen nicht auftreten koennen.
Ein simples asynchrones Signal mit 2400 Baud wird die ALC des
Empfaenger schoen an der Nase herumfuehren.

Einfaches Gegenrezept: Aus jedem (8 Bit-)Zeichen zwei
8 Bit "Symbole" kodieren, Die Kodierung kann z.B. dem
Manchestercode entsprechen.

Hat dieser ATTiny13 eigentlich einen HW-UART

von Wolfgang (Gast)


Lesenswert?

Uwe K. schrieb:
> Manchester ist für die Anwendung unpassend. Es ist kein Ton- oder
> Magnetträger.

Was hat das mit Ton- oder Magnetträger zu tun?
Es geht um einen konstanten mittleren Signalpegel für die AGC des 
IR-Empfängers.

von Uwe K. (ukhl)


Lesenswert?

Ernst H. schrieb:
> Uwe K. schrieb:
>> Ein wenig Mühe macht es schon. Ist aber keine große Sache.
>
> Momentan keine, da ich ihn noch nicht bestellt habe.

;-)

> Würde als Alternative zum attiny 13 A auch der ATTINY13 20PU gehen?

Der ohne A ist die alte Version und normalerweise teurer, geht aber 
auch.
Ein ATtiny25/45/85 ist die bessere Alternative und meist günstiger.

von Stefan F. (Gast)


Lesenswert?

Uwe K. schrieb:
> Ein ATtiny25/45/85 ist die bessere Alternative und meist günstiger.

Beeile dich, die sind fast ausverkauft.

von Uwe K. (ukhl)


Lesenswert?

Cartman schrieb:
>> wenn es zu
>> Fehlübertragungen kommt, was sehr unwahrscheinlich ist.
>> Einfach UART raus und wieder rein. Wie eine direkte Verbindung
>
> Da muss man schon jede Menge Optimismus haben, um das zu glauben
> und zu schreiben. IR-Codes sind nicht umsonst so gestrickt, dass
> laengere 0- bzw. 1-Phasen nicht auftreten koennen.
> Ein simples asynchrones Signal mit 2400 Baud wird die ALC des
> Empfaenger schoen an der Nase herumfuehren.

Nö. Der ALC bezieht sich auf die Trägerfrequenz. Der braucht ein paar 
Schwingungen, um ein Signal zu erkennen. Ich habe gerade eine 
Dauersignal auf den TSOP gegeben (mit Trägerfrequenz). Das Signal bleibt 
dauerhaft über mehrere Sekunden an. Also kein Thema.

> Hat dieser ATTiny13 eigentlich einen HW-UART

Hat er nicht und braucht er nicht. Er dient als reiner Signalwandler. 
Ein Software NE555 sozusagen. Auch kein Thema.

von Uwe K. (ukhl)


Lesenswert?

Wolfgang schrieb:
> Uwe K. schrieb:
>> Manchester ist für die Anwendung unpassend. Es ist kein Ton- oder
>> Magnetträger.
>
> Was hat das mit Ton- oder Magnetträger zu tun?
> Es geht um einen konstanten mittleren Signalpegel für die AGC des
> IR-Empfängers.

Das IR Signal ist keine Dauersignal. Nur der aktive Impuls hat eine 
Trägerfrequenz, um Störeinflüsse zu minimieren. Das Signal kann auch 
mehrere Sekunden dauern. Das ist dem TSOP egal.

von Cartman (Gast)


Lesenswert?

> Der braucht ein paar Schwingungen

und die ALC ist in einer Pause wieder voll aufgeregelt.
Das duerfte eine asynchrones Telegramm gut verhackstuecken.

Da der Aufwand des "Umkodierens" eine reine Erweiterung der
Software ist, ohne das es mehr Hardware braucht, waere mir
das ohne Umkodierung zu unzuverlaessig.
Die ALC eines IRDA-Receivers hat da sicher andere Zeitkonstanten
um solche Pausen sicher zu verarbeiten.

Auch das ein Portpin des Controllers die LED direkt treiben soll,
halte ich fuer eher fragwuerdig.
In einer "richtigen" Fernbedienung sitzt da ein Schalttransistor.
Und ich habe schon Vorwiderstaende von nir 1 Ohm vor der IR-LED
gesehen. Bei solchen Fernbedienungen ist dann auch noch ein
Elko von 1000 uF um die Spannung waehrend der Uebertragung zu
stuetzen. Solche Fernbedienungen haben dadurch auch eine
vorzuegliche Reichweite. Von nichts kommt eben nichts.

von Stefan F. (Gast)


Lesenswert?

Vergesst nicht, dass nicht nur einen TSOP Empfänger gibt. Die haben 
unterschiedliche Eigenschaften. Es gibt mindestens einen ohne ALC, das 
weiß ich deswegen, weil ich mal einen verwendet habe und das so 
brauchte.

Cartman schrieb:
> Bei solchen Fernbedienungen ist dann auch noch ein
> Elko von 1000 uF um die Spannung waehrend der Uebertragung zu
> stuetzen.

Diesen nach zu rüsten ist eine simple Methode, die Reichweite von 
außergewöhnlich schwachen Fernbedienungen zu verbessern. Ich hatte 
damals 100µF verwendet.
1
      +----[===]---|<|----+-------o Batt +
2
      |                   |
3
    |/                    |
4
----|                    === 
5
    |\>                   |
6
      |                   |
7
      +-------------------+
8
      |
9
      |
10
      o
11
   GND (Batt -)

von Uwe K. (ukhl)


Lesenswert?

Cartman schrieb:
>> Der braucht ein paar Schwingungen
>
> und die ALC ist in einer Pause wieder voll aufgeregelt.
> Das duerfte eine asynchrones Telegramm gut verhackstuecken.

Ein Test mit einem TSOP31238 konnten deine Bedenken nicht bestätigen.
Sowohl 2400 als auch 300 Baud zeigte keine Probleme auch bei kritischen 
Zeichen wie OxFF oder Ox00.

> Auch das ein Portpin des Controllers die LED direkt treiben soll,
> halte ich fuer eher fragwuerdig.

Das Treiben mit dem Controller ist nicht optimal. Kann aber durchaus 
ausreichend sein.
Es spricht nichts gegen einen zusätzlichen Schalttransistor, um die 
Reichweite zu erhöhen.

von Cartman (Gast)


Lesenswert?

> kritischen Zeichen wie OxFF oder Ox00.

Das sind beide gerade keine kritischen Zeichen.
Eher 0x01, 0x02, 0x04, 9x05, 0x08, 0x09,
0x81, 0x82, 0x84, 0x85 ... und deren Einerkomplemente.

Auch wenn der Remoteempfaenger in einem Probeaufbau damit
zureckt kommt, halte ich es trotzdem fuer Pfusch.
Ein HW-UART, der das Signal ueberabtastet, wierde bei
"verschobenen" Flanken innerhalb des Telegramms, das Zeichen
als fehlerhaft markieren.

Aber, ich muss das Ding ja nachher nicht benutzen.
Mir ists also egal.

von Uwe K. (ukhl)


Lesenswert?

Es ist ja nicht so, das ich die Hinweise ignoriere.

Ich habe zum Thema gefunden, dass die TSDP Empfänger darauf 
spezialisiert sind:
https://www.vishay.com/doc?82666

Leider sind die D Empfänger nicht so gebäuchlich.
Trotzdem interessant, dass die Idee nicht neu ist und von der Industrie 
aufgenommen wurde.

von Wolfgang (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Vergesst nicht, dass nicht nur einen TSOP Empfänger gibt. Die haben
> unterschiedliche Eigenschaften. Es gibt mindestens einen ohne ALC, das
> weiß ich deswegen, weil ich mal einen verwendet habe und das so
> brauchte.

Und wie soll der heißen?

Die "TSOP Empfänger" ohne ALC sind für Lichtschranken, laufen unter "for 
Light Barrier Systems" und hören meist auf den Vornamen "TSSP"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.