mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Auswerten von Robitronic RS163 IR Transmitter auswerten mit ATmega


Autor: Jürgen S. (jsachs)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Zum Hintergrund:
ich brauche eine Möglichkeit RC Fahrzeuge zu erkenne, die sind recht 
langsam zu dem Zeitpunkt.
NFC fällt aktuell flach, daher kam ich auf die Idee, nen ATtiny zu 
nehmen, und mit 2 Pins eine IR LED zu modulieren, die einfach die ganze 
Zeit einen eindeutigen Code für jedes Fahrzeug sendet.
Unten einen IR Empfängen und an den ATmega zum auswerten.

Ein Kolleg brachte mich auf die Idee, hier gibt es doch die Transmitter 
RS163 von Robitronic. Klein Günstig und machen genau dass.

Deren Empfänger sind zweigeteilt. Einmal ein "Einfacher IRDa Transiver", 
wo nur RX belegt ist, von da aus geht es per Kabel zur Auswertebox.

Die Auswertebox hat USB, die kann ich nicht verwenden.
Zudem läuft das ganze per Batterie, also ist Stromsparen angesagt.

Ich würde das gerne in einen ATmega auswerten, den gibt es schon und der 
erfüllt alle anderen Aufgaben bereits perfekt.

Ich habe hier das Signal vom IrDa Transceiver, vermutlich TFDU4101, auf 
dem Scope und komme nicht ganz dahinter.
Es ist pulse shape codiert, das habe ich hier schon gelesen.

Ich habe einen Transmitter, der den Code "5065" sendet, ob Hex oder Dez 
ist mir noch nicht bekannt.

Ich hänge das Scope Bild mal an.
50ms/Div.

Kann mir da einer dabei helfen ?

Achja, ich will denen nicht das Geschäft streitig machen, im Gegenteil, 
die verkaufen dann halt mehr Transmitter :-)

Danke
Juergen

Autor: Jürgen S. (jsachs)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ok,

etwas weiter bin ich.
Scope setting ist 50us/Div, nicht wie oben geschrieben 50ms, sorry.

Bei Irda bin ich somit bei ungefähr 10us/div.
Laut https://www.vishay.com/docs/82513/physical.pdf Seite 6 sind das 
19,2kBaud.

Die Zahl muss Dezimal sein, die Software lässt keine Hexadezimal 
Eingaben zu.

Ich habe mal im angehängten Bild markiert, was ich Interpretiert habe.
Leider konnte ich Paint nicht dazu bewegen, die Zahlen so aus zu 
richten, wie die bei der Eingabe sind.
Die schwarzen Linien sollen ungefähr einem Bit Abstand entsprechen.

Leider habe ich aktuell nur einen Transmitter um meine Theorie zu 
prüfen.
Somit wäre die Übertragung.
Die Übertragene Zahl ist 5065 Dez oder 13C9 hex
Startbit , 8 Datenbit, Even Parity (0, C9, 0)
Startbit , 8 Datenbit, Even Parity (0, 13, 1)
Startbit , 8 Datenbit, Even Parity (0, 0, 0)
Startbit , 8 Datenbit, Even Parity (0, DF, 1)
Und somit müssten meine Prüfsummen stimmen.

Liege ich da richtig ?

Juergen

Autor: Jürgen S. (jsachs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein nächster Versuch wäre jetzt, einen I/O Pin nehmen und das Signal 
scannen.

Als Testumgebung ein STK200 board mit einem ATmega16, hab ich halt 
gerade da.

Ein Timer, der ca alle 11us feuert. (Timing mal an 
https://www.vishay.com/docs/82513/physical.pdf, Seite 6 angelehnt)
In main (es ist ja nur ein Test) scanne ich den I/O Pin, der am RX des 
Empfängers hängt.
Time läuft im CTC Mode

bekomme ich einen "Low" (Startbit) setze ich den Timer auf null.
bei einem Low, Timer zurück setzen, und eine "0" als Ergebnis schieben.

Feuert der Timer, eine "1" als Ergebnis schieben.

Nach 11 mal schieben habe ich ein Byte.

Bin mal gespannt ob der ATmega das packt.

Das Ergebnis soll zu debug zwecken erst mal per RS232 raus, später als 
SPI slave.
Dann kann ich das mit dem bestehenden ATmega noch auslesen, da ich hier 
schon einen ISP master am laufen habe, der Zyklisch für neue IDs scannen 
kann.

Es ist hier im übrigen Tatsächlich so, dass der Transmitter ohne 
Handshake oder overhead die ganze Zeit seine Information sendet. 
Zwischen jedem Paket gibt es eine kurze Pause.
Der Receiver Empfängt die Pakete und gibt die 1:1 weiter.

Diese Empfangenen Pakete sieht man auf meinen Scanns und das Will ich 
auslesen.

Ich habe mehrere Links zu einem IRDA Tiny Stack gefunden, die laufen 
aber alle ins leere.

Jemand schon mal IRDA RX in Software gemacht ?

Gruss
Juergen

Autor: Frank M. (ukw) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jürgen S. schrieb:
> Ich habe einen Transmitter, der den Code "5065" sendet, ob Hex oder Dez
> ist mir noch nicht bekannt.

Sind das diese Transmitter ("Transponder") von 
http://www.dirtchampdesign.com ? Allerdings arbeiten diese mit 115200 
Bd.

Dafür gibt es eine Lösung, die auf einem ATTiny25 läuft.

: Bearbeitet durch Moderator
Autor: JSachs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sind die transmitter 
http://cs-shop.de/Robitronic-Personal-Transponder

Ob es gleiche/kompatibel sind, weiß ich nicht.

Mit meinen 19200 Baud liege ich glaube ich eh nicht richtig.
Ich habe ca 10us pro Bit.

Jürgen

Autor: Frank M. (ukw) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
JSachs schrieb:
> Das sind die transmitter
> http://cs-shop.de/Robitronic-Personal-Transponder

Danke für den Link. Die sehen schön klein aus.

Habe ich das richtig verstanden: Du suchst jetzt einen Empfänger, der 
diese Transponder dekodiert?

> Mit meinen 19200 Baud liege ich glaube ich eh nicht richtig.
> Ich habe ca 10us pro Bit.

IRDA läuft mit 115200 Bd. Da wäre ein Bit 8,6µs breit, wenn ich mich 
nicht verrechnet habe.

Ich hatte damals die DirtChamp-Dinger per BruteForce geknackt, um das 
Signal dann für einen Bekannten mit einem ATTiny nachzubilden. Die 
Original-Transponder wurden nämlich nicht mehr angeboten.

Ich kann Dir anbieten, mit einem preisgünstigen STM32 ein Programm zu 
entwickeln, welches die Dinger eindeutig identifiziert, damit Du dann 
die Rundenzeiten messen kannst. In diesem Falle melde Dich per PN.

Autor: Jürgen S. (jsachs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht zur Aufgabe:
Ich habe eine Waage gebaut, die das Gewicht von RC- Fahrzeugen, 
Hauptsächlich im Maßstab 1:14 misst.

Diese kann das Gewicht Optional an eine Android APP per Bluetooth 
übertragen.
Hier findet jede Menge Interaktion statt.

Ziel ist die Erfassung der "Transportleistungen" pro Fahrzeug.
Unter anderem mit folgenden Daten:
- Fahrzeug + Fahrer
- Leergewicht
- Ladungsgewicht
- Material Transportiert

Ein früher status ist hier in einem Demo Video zu sehen.
Youtube-Video "Waage 2.0 - Erster Praxis Test am 19.12.2016"

Dazu muss man aktuell, bei gekoppelter Waage am Tablett noch 
Transportiertes Material und Fahrzeug auswählen.

Die Auswahl des Fahrzeugs wollen wir jetzt noch Automatisieren.

Nach einiger Recherche viel NFC aus.
Da kam mir die Idee, einen kleinen IR Sender zu bauen, der in jedem 
Fahrzeug sitzt und eine Eindeutige ID Richtung Boden sendet.

In die Waage kommt im Einfahrt bereich ein Empfänger, der dieses Signal 
Empfängt.
Die Fahrzeuge sind, wie bereits erwähnt, recht langsam und somit sollte 
IR und Übertragungsstörungen relativ egal sein.

Nun, diese Sender von Robitronic sind klein und auf ebay billig zu 
haben.
Kann ich nun diese verwenden ohne deren Software und PC Interface, etc. 
habe ich schon 50% erschlagen.

Ich habe einen Transmitter (Ich bekomme noch 2 Stück zum Testen) und 
einen Empfänger.
Der Empfänger hat eigentlich nur einen IRDA Tranceiver, wobei die 
Transmit Seite nicht genutzt wird.
Die Receive Seite gibt somit einfach den RAW Datenstrom des Transmitters 
im Fahrzeug aus.

Dieses Signal will ich nun Auswerten und an meine APP senden. Darin 
geschieht der Rest.

Sobald ich die ID Ausgewertet habe, ist der Rest ein Kinderspiel.

Leider habe ich an meinem ATmega328p, der auf dem Funkmodul sitzt, nur 
noch die ISP Schnittstelle übrig.
Diese bedient zwar schon ein Display, aber zwischendurch einen Prozessor 
ab zu fragen, der mir die ID liefert, ist ja kein Problem.

Da ich hier einen eh einen kleinen Prozessor bräuchte, würde ich mir 
irgend welche IRDA Chips, die schwer zu bekommen sind, gerne sparen und 
alles in Software machen.

So, und jetzt bin ich wieder bei dem Grund dieses Threads.
Ich habe die RAW IRDA Daten von dem Tranceiver Chip, siehe auch Oszi 
Bilder, und will die nun auswerten.
Da der Prozessor außer der Auswertung nichts machen muss und auf SPI 
reagieren, sollte das doch machbar sein.

Ich hoffe es ist jetzt etwas klarer.

Gruss
Juergen

Autor: Frank M. (ukw) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jürgen S. schrieb:
> Da ich hier einen eh einen kleinen Prozessor bräuchte, würde ich mir
> irgend welche IRDA Chips, die schwer zu bekommen sind, gerne sparen und
> alles in Software machen.

IRDA-Transceiver sind nicht so schwer zu bekommen und sind ihr Geld 
wert. Eine Reichweite von 5 Metern sind da überhaupt kein Problem.

Bei Deinen niedrigen Geschwindigkeiten würde ich jedoch auf IRDA (und 
damit auch auf die von Dir präferierten Transpondermodule) verzichten 
und stattdessen IRMP und IRSND (<--- einfach draufklicken) 
verwenden. Mit einem ATTiny45 und einer simplen IR-LED, Transistor und 
Widerstand kostet Dich dann ein Transponder weniger als 5 EUR, der 
stationäre Empfänger mit einem TSOP hält sich ebenso in diesem Rahmen.

Die Software ist stabil und einfach einsetzbar. Einfach das 
NEC-Protokoll verwenden und einen festen (eindeutigen) Code pro 
Tansponder per IRSND raussenden und mit dem Empfänger und IRMP 
wieder empfangen.

Der Code, um beide Software-Bibliotheken zu bedienen, sind dann nur noch 
2-3 Zeilen Code.

Autor: Jürgen S. (jsachs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das war mein Plan.

Aber hier spielen viele Faktoren mit rein.
Bauteil Mäßig gebe ich dir recht.
Versorgung aus dem BEC des Fahrzeugs (+5V)
ATtiny + LED, Vorwiderstand, Pufferkondensator, und eine Leiterplatte.
Ein kleiner Programm, Ein Pin moduliert die 38kHz und ist mit der Anode 
der IR LED verbunden, ein zweiter Bin mit der Kathode und gibt die Daten 
aus. Einfach zu Programmieren. Timer CTC für die Träger Frequenz und am 
IO Pin nur noch Roh Daten Raus takten.
Unten einen IR Empfänger, bekomme die Rohdaten und TaDa.

Aber:
Dann muss ich einige "Produzieren" und auch "Verkaufen", auf Lager 
halten.
Von der Waage gibt es aktuell schon 2 Stück und es sind mehr gefragt und 
ich mach das nur aus Spaß und non Profit.

Kann ich die Fertigen Teile nehmen habe ich keinen Aufwand in der 
Produktion und Vermarktung etc etc etc der Transmitter.

Nochmal um es klar zu machen, ich nutze den IRDA Tranceiver für den 
Datenempfang.
Aber ich will keinen Chip verwenden, der mir das IRDA Protokoll (siehe 
https://www.vishay.com/docs/82513/physical.pdf Seite 6) wieder auf 
normales RS232 wandelt.

Gruss
Juergen

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.