Jump to content

Datenübertragung mit Infarot?


pluto
 Share

Recommended Posts

Hallo

 

Schon seit längerer Zeit habe ich eine Idee und wollte wissen, ob meine Vermutungen richtig sind.

Ich möchte eine eigene Datenübertragung per Infrarot entwickeln. Ich dachte mir, mit einem Analog in und einem Analog Out müsste es doch gehen oder?

 

Details:

Ich schließe eine oder mehrere Infrarot LED'S an einem Analog Out und eine oder mehrere Infrarot Foto-Dioden an einem Analog In.

 

Nun findet eine Datenübertragung statt: Ein Signal wird gesendet und die Gegenseite misst die Zeit, wie lange es gesendet wird und legt das in einem Buffer ab. z.b. einem 2D Array. nun Muss nur noch ein Zeichen Codiert werden in einem Bestimmten Code z.b. könnte der Code aus Vier Signalen bestehen.

Wurde ein Zeichen komplett übertragen kommt ein TimeOut und der Array wird um eine Spalte Erweitert.

kommt ein noch längeres TimeOut ist die Übertragung zu Ende und das Array kann ausgewertet werden.

Das könnte dann so aussehen:

Zeile 1: Lang Kurz Lang Lang könnte für A stehen

Zeile 2: Kurz Lang Kur Kurz könnte für ein B stehen

und soweiter

Diese Code-Tabelle könnte Automatisch Generiert werden einmal für 256 Zeichen.

 

Ich hoffe ihr könnt mir folgen. Die Genannten Bauteile wollte ich zwei mal "bestellen". Damit eine zwei Wege Kommunikation stattfinden kann. ist die Entfernung zu Groß, könnte eine Art Repeter das Signal verstärken. Aus kosten Gründen, würde ich den ganz einfach halten: Einfach die Infrarot LED an eine Infrarot Diode anschließen. Vermutlich reicht der Strom der Empfangen wird nicht aus, daher müsste noch eine Strom Quelle dazwischen geschaltet werden. Solange die Diode etwas Empfängt, soll die LED senden. Zur Kontrolle, ob was Gesendet und Empfangen wird, könnte eine Normale LED noch hin zu kommen.

 

Das ganze ist im Moment nur so eine "Grobe" Idee, aber könnte doch Funktionieren oder? Die Frage ist auch, wie weit ich ohne Signal Verstärkung komme und wie weit mit.

 

Lustig wäre jetzt natürlich, wenn der Normale Netzwerk Verkehr umgeleitet werden könnte auf diese neue Verbindungs-Möglichkeit. Aber ich denke, dass wird zu schwer werden.

 

Link to comment
Share on other sites

Du möchtest sowas (in der Art) selber bauen?

 

http://www.golem.de/1108/85405.html

 

Ich nehme schon an das es gehen würde, wie währs wenn du einfach die Morsetabelle nimmst, dann musst du nichts selber schreiben oder generieren lassen..

 

Ich nehme an du willst damit zwischen 2 Computern kommunizieren, und keine Brick/lets ansprechen?

 

Ich finds eine coole Idee, nur wie schnell willst du die schalten, innerhalb von Millisekunden oder willst du immer ein paar Sekunden warten?

Und was ist wenn z.B. etwas dazwischen kommt was die kommunikation stört (ein blatt oder sonstiges, vllt. geht auch mal jemand dazwischen) wie willst du das handhaben?

Wie willst du dem andren Computer sagen das er es "nochmal" senden soll, und was ist wenn es ein paar Sekunden dauert bis die "Störung behoben" ist?

Wie willst du dem Computer sagen "bei welchem Zeichen er wieder anfangen soll"? Oder machst dus dann wie bei schlechten Downloadmanagern die einfach den gesamten Download nochmal anfangen?

 

Also, wie gesagt ich glaube schon das es funktioniert, ich glaube aber das es sehr viel Arbeit für dich werden wird, auch wenn du damit "nur" Text übertragen willst.

 

Grüße Flo

 

Link to comment
Share on other sites

Hardwareseitig habe ich keine Ahnung, ich vermute aber wenn man die Übertragungsrate gering genug auslegt sollte alles möglich sein :D

 

Was ich auf jeden Fall vorsehen wüde wäre eine Prüfsumme, zur Kontrolle der korrekten Datenübertragung. Da Pluto bisher nur von einem Analog Out und einem Analog In gesprochen hat, vermute ich, dass er nur in eine Richtung senden kann.

Ansonsten würde ich villt sogar mit Quittierung arbeiten. Beispiel: Ich sende immer Pakete von x Byte, diese x Byte sind auch per Prüfsumme gesichert. Wenn ich das korrekt empfangen habe, sende ich eine Bestätigung an den Sender zurück, dass er weitermachen kann. Ich würde mich da vermutlich bei TCP inspirieren lassen und schauen was für meine Anwendung sinnvoll wäre...

Link to comment
Share on other sites

Du möchtest sowas (in der Art) selber bauen?

Im Prinzip ja, nur halt mit Infrarot und nicht so schnell

 

Ich nehme schon an das es gehen würde, wie währs wenn du einfach die Morsetabelle nimmst, dann musst du nichts selber schreiben oder generieren lassen..

Könnte ich machen. Mal sehen... Wäre wohl am Sinnvollsten

 

Ich nehme an du willst damit zwischen 2 Computern kommunizieren, und keine Brick/lets ansprechen?

Genau. Die Daten kommen über ein Brick rein und werden über ein Brick gesendet.

 

Ich finds eine coole Idee, nur wie schnell willst du die schalten, innerhalb von Millisekunden oder willst du immer ein paar Sekunden warten?

Ich hoffe, dass ich im Millisekunden Arbeiten kann oder noch schneller.

 

Und was ist wenn z.B. etwas dazwischen kommt was die kommunikation stört (ein blatt oder sonstiges, vllt. geht auch mal jemand dazwischen) wie willst du das handhaben?

Gar nicht... Ich baue es so auf, dass da nichts zwischen kommt.

 

Wie willst du dem andren Computer sagen das er es "nochmal" senden soll, und was ist wenn es ein paar Sekunden dauert bis die "Störung behoben" ist?

Das ist die Frage. Vielleicht sollte erst die Länge übermittelt werden und wenn was nicht ankommt, kann man die Länge/Größe von den was übertragen wurde vergleichen und dann wird es so lange gesendet bis es angekommen ist... Wäre das einfachste oder?

 

Wie willst du dem Computer sagen "bei welchem Zeichen er wieder anfangen soll"? Oder machst dus dann wie bei schlechten Downloadmanagern die einfach den gesamten Download nochmal anfangen?

Ich habe mir beide Wege überlegt. Bei jedem Zeichen wäre es wohl zu Aufwendig oder?

 

Also, wie gesagt ich glaube schon das es funktioniert, ich glaube aber das es sehr viel Arbeit für dich werden wird, auch wenn du damit "nur" Text übertragen willst.

Meine Sorge war, dass ich auch die Richtigen Bau-Teile bestelle und das die Infrarot LED und Diode zusammen passen. Ich habe kein Technisches Hintergrund Wissen oder kaum.

 

Was ich auf jeden Fall vorsehen wüde wäre eine Prüfsumme, zur Kontrolle der korrekten Datenübertragung. Da Pluto bisher nur von einem Analog Out und einem Analog In gesprochen hat, vermute ich, dass er nur in eine Richtung senden kann.

Nein, ich sprach von einer zwei Wege Kommunikation. ich brauche ja die Teile nur zwei mal zu bestellen.

 

Wenn ich das korrekt empfangen habe, sende ich eine Bestätigung an den Sender zurück, dass er weitermachen kann. Ich würde mich da vermutlich bei TCP inspirieren lassen und schauen was für meine Anwendung sinnvoll wäre...

Ne Sinnvolle Idee.. Ich werde mir dazu mal Gedanken machen. Bin jetzt nicht so begabt was Datenübertragung angeht. Das ist das Erste Projekt in dieser Richtung.

 

Es ist ein interessantes Projekt, ABER .... ich sehe es eher als Softwareprojekt, als Hardwareprojekt.

Genau. Ich sehe es auch als Softwareprojekt. Hätte ich genügend Technisches Hintergrund wissen, wäre es anders.

 

Ich, zögere noch die Bauelemnte zu bestellen, da ich mir noch nicht 100% Sicher bin das es wirklich klappt und das meine Gedanken, richtig sind. Aber eure Antworten klingen schon mal recht gut.

 

 

Link to comment
Share on other sites

@pluto: Nur eine Verständnisfrage habe ich noch. Ich muss dazu sagen, ich kenne mich mit IR-Dioden nicht so aus. Ich ging davon aus, dass diese Dinger mehr oder minder immer mit voller Power senden, jedoch die Lichtfrequenz variiert. Das würde aber bedeuten, dass Du ein IO4-Bricklet auf jeder Seite nehmen kannst. Das dürfte auch günstiger sein. Und Du hast im Prinzip 2 Kanäle zum Senden und 2 zum Empfangen. Oder habe ich da einen Denkfehler?

Link to comment
Share on other sites

Nur eine Verständnisfrage habe ich noch. Ich muss dazu sagen, ich kenne mich mit IR-Dioden nicht so aus. Ich ging davon aus, dass diese Dinger mehr oder minder immer mit voller Power senden, jedoch die Lichtfrequenz variiert.

Ich denke, sobald genügend Strom fließt ist die Infrarot LED an und dann müsste eine Entsprechende IR Diode auch was Empfangen.

 

Das würde aber bedeuten, dass Du ein IO4-Bricklet auf jeder Seite nehmen kannst. Das dürfte auch günstiger sein. Und Du hast im Prinzip 2 Kanäle zum Senden und 2 zum Empfangen. Oder habe ich da einen Denkfehler?

nun ja, ich möchte gerne das beide Seiten Senden und Empfangen können. Kann ich mit so einem IO4 Bricklet gleichzeitig Strom/Spannung Messen und Strom Fließen lassen? Soviel dass es für die Infrarot LED ausreicht?

Link to comment
Share on other sites

Mal so in den Raum geworfen.

Warum nimmst du nicht eine RS485 Extension für jede Seite.

Aber statt die Leitungen zu verbinden modifizierst du die Verbindung in dem du jeweils eine Sendediode und eine Empfängerdiode an die jeweilige Leitung anschaltest. Natürlich mit entsprechendem Treiber dazwischen für den Strom.

Dann brauchst du dich nicht einmal um das Protokoll zu kümmern.

Link to comment
Share on other sites

@ArcaneDraconum

Hast du so ein brick gemeint: https://shop.tinkerforge.com/bricklets/io16-bricklet.html

und kann ich damit Strom Messen und Konfiguieren? Wenn ich es richtig sehe ja, stimmt das?

 

@FlyingDoc

Weil beim "RS485 Extension" ist doch ein Kabel da zwischen, sehe ich das richtig? Oder meinst du, Kabel abmachen und einfach die IR-LED und IR-DIODEN anschließen?

Wenn du das meinst: Ich kenne mich auf Hardware Seite kaum aus... und mir ging es darum, selbst was zu Entwickeln. was ich umsetzten kann.

Link to comment
Share on other sites

@ArcaneDraconum

Hast du so ein brick gemeint: https://shop.tinkerforge.com/bricklets/io16-bricklet.html

und kann ich damit Strom Messen und Konfiguieren? Wenn ich es richtig sehe ja, stimmt das?

 

Ja, aber ich denke für deinen Fall reicht der "kleine":

https://shop.tinkerforge.com/bricklets/io4-bricklet.html

 

@FlyingDoc

Weil beim "RS485 Extension" ist doch ein Kabel da zwischen, sehe ich das richtig? Oder meinst du, Kabel abmachen und einfach die IR-LED und IR-DIODEN anschließen?

Wenn du das meinst: Ich kenne mich auf Hardware Seite kaum aus... und mir ging es darum, selbst was zu Entwickeln. was ich umsetzten kann.

 

Nun, ich habe auch wenig Ahnung, aber ich glaube kaum das du das Kabel einfach nur abmachen brauchst und ein "licht" bzw. IR dazwischen kleben musst.

Ist ja auch viel rechnerei etc. dabei, oder soll er sich sein eigenes "bricklet" bauen, welches die sachen dann erstmal zur rs485 weiterleitet, nur damit die das dann verarbeitet? Dann würde ich mir lieber gleich anschauen wie es dort im Code gemacht wurde, ist schneller, warscheinlich leichter und man lernt gleich was dazu :-)

 

Zu dem mit der Checksum etc.:

Die Idee mit dem übertragen "wieviele" das sind ist garnicht schlecht, aber wenn das nicht ankommt, und du andere "zahlen" sendest, dann tritt wieder ein fehler auf, oder?

Aber fürs erste würde es wohl reichen :)

 

In welcher Sprache willst du das ganze Programmieren? Python? Java? C?

 

Wie ich schon sagte ich finds ne super Idee und fänds schön immer mal was über das Projekt zu hören!

 

Gruß Flo

Link to comment
Share on other sites

@Flo: In der Tat habe ich das kleine IO4 gemeint. Strom messen geht damit aber nicht. Im Prinzip ist das ein DigitalOut, oder Digital in. Eben jeder der 4 Anschlüsse frei wählbar.

Ich bin davon ausgegangen, dass man zum Senden einen festen Pegel verwendet, bzw. den einmal mit Potetiometer, oder so einstellt. Eine Treiberstufe wirst Du bestimmt brauchen, auch beim AnalogOut. Dies stellt ja nur verschiedene Spannungen zu Verfügung, aber nur wenig Strom.

Auf der Empfängerseite sitzt ja normalerweise ein Phototransistor, der empängt etwas und schaltet durch, oder auch nicht. Also würde auch hier ein digitaler Eingang reichen. Somit kommst Du mit dem IO-4 super zurecht. Und hast dann auf beiden Seiten noch 2 Ports übrig. Z.B. für StatusLEDs, oder Schalter/Taster.

Ich denke auf jeden Fall, dass Du mit den IO4 Bricklets flexibler und vor allem günstiger fährst 2x IO = €13, AnalogIn + AnalogOut = €14 (für eine Richtung senden, ansonsten €28).

Link to comment
Share on other sites

In der Tat habe ich das kleine IO4 gemeint. Strom messen geht damit aber nicht. Im Prinzip ist das ein DigitalOut, oder Digital in. Eben jeder der 4 Anschlüsse frei wählbar.

Ach so. Ja, es gibt eine Sogenannte Grundspannung, und alles was darüber kommt bei der Diode ist das Signal. Aber ob das Ausreicht, damit ein Event beim 1O4 Ausgelöst wird?

 

Zu den Fehlern:

Ich dachte mir heute: Ich sende einmal die Länge/Größe und einmal zwei mal die Checksumme.

Wurde beide male das richtige Empfangen,bekommt der Sender eine Entsprechende Antwort, sonst wieder zwei mal. So lange, bis es richtig ist oder der User Abbricht.

Wenn die Übertragung Fertig ist, wird die Checksumme und die Länge verglichen von dem was Empfangen,  wurde Stimmt beides überein, OK. wenn nicht, komplett erneut senden. So lange, bis es OK ist oder der User abbricht.

 

Ich denke am Anfang, sollte das ausreichen oder?

 

Ich möchte das mit Lazarus/FPC machen.

 

 

Wenn ich das Projekt in die tat umsetzte, weiß ich noch nicht.... Aber ich bin fest Entschlossen es zu Versuchen...

 

Ob ich den IO4 oder IO16 Nehme weiß ich noch nicht. Ich möchte ja auch, mehre IR-LED und IR-Dioden anschließen um die Übertragungs Rate erhöhen zu können.

 

PS: Ich halte ein Vortrag über tinkerforge, DBUS und Lazarus/FPC in Berlin am Kommenden Wochende.

Da stelle ich verschiedene Prototypen und Experimente vor.

 

Link to comment
Share on other sites

Ich dachte mir heute: Ich sende einmal die Länge/Größe und einmal zwei mal die Checksumme.

Wurde beide male das richtige Empfangen,bekommt der Sender eine Entsprechende Antwort, sonst wieder zwei mal. So lange, bis es richtig ist oder der User Abbricht.

Wenn die Übertragung Fertig ist, wird die Checksumme und die Länge verglichen von dem was Empfangen,  wurde Stimmt beides überein, OK. wenn nicht, komplett erneut senden. So lange, bis es OK ist oder der User abbricht.

Nun ich würde ein paar Tests machen. Wenn Du feststellst, dass des öfteren Fehler auftreten, würde ich nur kurze Häppchen übertragen, dann muss nicht so viel doppelt übertragen werden.

Link to comment
Share on other sites

Jop... du wirst auch experimentieren müssen wie lange du leuchten willst und wie lange nciht, also wie groß deine Pulse sind.

Da du ja alles in Software (und ncihtmal als Betriebssystem-Treiber) realisierst, könnte ich mir vorstellen, dass du sehr konservativ sein musst. Das findest du aber dann heraus, wenn du den ersten Code hast und schaust wie hoch die Fehlerrate wird.

Link to comment
Share on other sites

Das Denke ich auch. Ich spiele auch mit den Gedanken, es nicht nur mit IR zu versuchen, vielleicht gib es sogar Funk-Möglichkeiten z.b. über Bluetooth? Das hätte gegenüber IR deutliche Vorteile.... es kommt halt durch Wände und kommt weiter. Aber ich weiß nicht, ob man es einfach mit Tinkerforge steuern kann und es ob es überhaupt sowas gibt.

 

Das ganze ist im Moment nichts weiter als eine Idee... Aber ich denke, nach Berlin, werde ich mich damit genauer befassen. Wird bestimmt Spannend werden.

Link to comment
Share on other sites

  • 2 weeks later...

Darf ich mal kurz daran erinnern, dass du gerade das Rad zum zweiten Mal erfinden möchtest. Die Grundlagen existieren seit der Zeit der Akustikkoppler und wurden auch verwendet, um Daten auf Cassettenrecorder zu speichern.

 

1.) nicht morsen, sondern ganz einfach ASCII übertragen.

 

2.) nicht lang/kurz übertragen, sondern Serielle Datenübertragung

 

3.) Zur Sicherheit ein Paritätsbit mitschicken und von der Gegenseite quittieren lassen

 

4.) Zur Technik der Datenübertragung siehe XModem. Protokolle, die die Pakete vergrößern, je weniger Fehler gemeldet werden, werden dort auch erwähnt.

 

Link to comment
Share on other sites

Danke für die Infos, werde ich mir anschauen. Ich weiß, dass ich das rad ein Zweites Mal erfinde. Aber es geht mir darum, ob es so geht wie ich es mir vorstelle.

 

Es geht mir um die Sache selbst, nicht darum, ob es ein Nutzen hat. Wenn du es so siehst, darf man auch nicht mehr Programmieren. Weil alles was man Programmiert wurde bestimmt schon einmal Programmiert.

Link to comment
Share on other sites

Hm wenn du eine andere Idee hast, die vielleicht nicht anspruchsvoll genug ist, würde ich dir vielleicht empfehlen, dich mal genauer mit TCP/IP auseinanderzusetzen. Das wurde ja bereits erwähnt.

 

Es geht dabei um nen kleinen, feinen Packen von Sachen, über die du dich im Vorfeld mal informieren könntest:

 

ISO/OSI-Sieben-Schichten-Modell, TCP-Pakete, CRC32, CSMA/CD, Hardware- und Software-Layer, Kollisionen, Netzwerktreiber, Ethernet, Paketgröße, MTU

 

Der absolute Overkill wäre dann natürlich eine Re-Implementation etwaiger WLAN 802.x-Standards:

802.11 a

802.11 b

802.11 e

802.11 g

802.11 n

 

Und natürlich etwaige Sicherheitsstandards, nicht, dass ein Schnüffler seine IR-Diode oder gar ein Nachtsichtgerät auf deine ungesicherte Verbindung richtet:

 

WPA

WPA2

 

Weitere Stichworte für WLAN:

CSMA/CA, Wireless LAN, WiMAX, WiFi, Funknetzwerk

 

Just my two cents..

Pascal

Link to comment
Share on other sites

Danke für die weiteren Stichpunkte. Aber soweit wollte ich nicht gehen. Worüber ich schon nach gedacht habe ist die Sicherheit, z.b. die Verbindungs zu verschlüsseln. Ich denke aber, dass wäre schon zu übertrieben, da die Reichweite sehr beschränkt sein wird, anders als bei WLAN und CO.

 

Bis jetzt habe ich noch keine Alternativen Bau Teile zu IR LED und IR DIODEN gefunden. Ich dachte ja daran z.b. bluetooth zu verwenden. Jedoch muss das Bauteil sobald es Strom bekommt Senden und wenn esk ein Strom bekommt aufhören...

Link to comment
Share on other sites

Nimm doch mal zwei Frontscheinwerfer mit LED von nem Audi R8  ;D

 

In den einen packst du statt der LED eben eine Fotodiode. So, und nun platzierst du die schön gegenüber und hast perfekt anmutende Parabolspiegel.

Das sollte für mindestens einige zig-Meter reichen.;D

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...