Forum: Mikrocontroller und Digitale Elektronik Bluetooth zu Infrarot


von Tobi (Gast)


Lesenswert?

Hallo,

gibt es eine Möglichkeit einen Bluetoothempfänger zu bauen der die 
Siganle in Infrarot umwandelt?

Oder gibt es sowas käuflich schon zu erwerben.

Oder kann ich mir soetwas selber bauen, wenn ja kann mir jemand ein paar 
Tipps zum einlesen geben.

Gruß und Danke

von hans (Gast)


Lesenswert?

was soll das denn werden?

eine art bluetooth fernseher steuerung?

sowas ist möglich..
wenn das universell auf hci ebene gemacht werden soll ist es nicht mal 
eben getan...

wenn es nur den fernseher steuern soll ist es einfach..

von Tobi (Gast)


Lesenswert?

Habe ganz vergessen zu sagen was ich mir vorgestellt habe.

Ich würde gern per HTC (Android) mein TV steuern, die Hifi-Anlage etc.

wäre soetwas zu schaffen oder geht so etwas einfach nicht?

von hans (Gast)


Lesenswert?

nimm ein btm-222 modul arbeite dich da rein.. nicht schwer..

auf android kommt man auch in den HCI layer des bluetooth protokoll 
stacks..
da gibts bestimmt auch rfcomm usw..

dann sendest du mit deinem android handy einfach über rfcomm (virtuelle 
bluetooth rs232 schnittstelle) befehle an einen mikrocontroller der 
hinter deinem btm-222 modul sitzt..

der interpretiert und sendet die befehle per infrarot (rc-5) weiter an 
den fernseher..


eine kleine application muss/solltest du dir für dein android handy 
schreiben.

von Silvan K. (silvan) Benutzerseite


Lesenswert?

hans schrieb:
> eine kleine application muss/solltest du dir für dein android handy
> schreiben.

... und für den Mikrocontroller.

von Tobi (Gast)


Lesenswert?

hmm..ok das scheint für dich ganz einfach zu sein :).

und es hört sich fast so an als ob Du das auch schon versucht hast.

Hast Du vielleicht ein paar links wo ich mich in dieses Thema weiter 
einlesen kann.

von hans (Gast)


Lesenswert?


von Tobi (Gast)


Lesenswert?

vielen dank dann werde ich erstmal lesen.

ich denke der hier kann auch sehr interessant sein

http://www.robotfreak.de/blog/mikrocontroller/preiswerte-bluetooth-anbindung/44

von Peter Z. (hangloose)


Lesenswert?

Hallo Tobi,

ich hatte mal etwas ähnliches gebaut. Hat auch sehr gut funktioniert...
War allerdings für ein Windows Mobile 6.5 Phone HTC Touch pro 2.
Hardware war grob folgende:
Mikrocontroller: ATMega328
EEprom 24lc512 zum speichern der Infrarot Signale
Bluetoothmodul BTM222
Infrarot Sende Diode Tsal 6200
Infrarot Empfänger TSOP1736

Habe die Infrarot Befehle von verschiedenen Fernbedienungen 
aufgezeichnet und im EEprom abgespeichert. Je nach Funktion welche am 
Handy betätigt wurde,
wird dementsprechend ein Befehl aus dem EEprom ausgelesen und per 
Infrarot übertragen. Mann kann auch Makros programmieren, so das mehrere 
gelernte Befehle hintereinander abgespielt werden.
Bei meinem Handy hatte ich die Möglichkeit die Beschleunigungssensoren 
auszulesen und diese als Funktionen zum Beispiel für Umschalten der 
Kanäle zu verwenden. Hand nach rechts gedreht Kanal aufwärts, Hand nach 
links gedreht Kanal runter ;-)

von Tobi (Gast)


Lesenswert?

Hi Peter dank für deine Antwort,

hast Du da vielleicht noch mehr Infos für mich.
Schalplan, Programmierung oder sonst irgendwelche
Links wo Du dich zu diesem Thema schlau gemacht hast.

Gruß

von Peter Z. (hangloose)


Lesenswert?

Ich würde das Projekt in einzelne Teile splitten und dann dazu einfach 
googeln. So hab ich es zumindest gemacht.
Das ganze ist auf einer Lochraster Platine aufgebaut.
Es gibt da keinen Schaltplan zu.
Fang halt einfach mal an und stell dann konkrete Fragen wenn ein Problem 
auftritt bei dem Du dann nicht weiterkommst.

von Tobi (Gast)


Lesenswert?

OK werde ich so machen.

Da ich ja kein Profi auf dem Gebiet bin, bitte nicht gleich schlagen 
wenn ich etwas komische Fragen stellen sollte.

Hier die erste Verständnissfrage:

sehe ich das richtig

BT Handy -----> BT 222 -> Uart Atmega --> ATmega intern ---> IR Sender 
---> TV On

klar müssen dann die Befehle der FB erst gespeichert werden.

Gibt es einen ATmega der genug EEprom hat damit ich mir das EEprom 
24lc512 sparen kann oder hat das noch andere Vorteile.

Gruß

von Peter Z. (hangloose)


Lesenswert?

Ja so ist die Reihenfolge...

Kommt darauf an wieviel Befehle Du speichern willst.
Und wieviel speicher Du für einen Befehl brauchst.
Zum testen kannst Du es natürlich weg lassen und die
paar Befehle auf das interne EEprom speichern.

von Tobi (Gast)


Angehängte Dateien:

Lesenswert?

Wie würde mann denn die IR-Sender Diode an den z.B. Atmega32 
anschließen. Kann mir jemand zufällig in Schaltpaln geben, stehe gerade 
irgendwie auf dem Schlauch.

Oder wäre das so wie im Anhang? Dann würde OC2A an den Atmega kommen?



Gruß

von Tobi (Gast)


Lesenswert?

Wenn das die Schaltung für den IR-Sender sein sollte dann würde ich 
gerne noch wissn, ob ich auch einen BC 338 -16/25/40 verwenden kann weil 
die habe ich noch.

Danke und Gruß

von Tobi (Gast)


Lesenswert?

Hat jemand eine Idee bzw. einen Tipp für mich.

Danke

von Peter Z. (Gast)


Lesenswert?

Du kannst auch den BC338 verwenden. Ist ja auch ein NPN.
Schaltung passt auch. Eventuell kannst Du sogar den 33 Ohm Widerstand 
noch kleiner machen. Ist aber zum testen erstmal egal.

von Tobi (Gast)


Lesenswert?

ok Danke.

Hast Du vielleicht noch ein Test Programm für nen Atmega32 damit ich die 
Diode überhaupt zum "Leuchten" bringen kann? Oder wo könnte ich sotwas 
bekommen

von Tobi (Gast)


Lesenswert?

OMG wenn Dummheit weh tun würde.

Teste seit gestern, deshalb meine "dummen" Fragen aber wenn eins von 
meinen Krokoklemm Kabeln nicht funzt dann kann es nix werden.

So IR Diode "Leuchtet" schon mal

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Tobi schrieb:
> ok Danke.
>
> Hast Du vielleicht noch ein Test Programm für nen Atmega32 damit ich die
> Diode überhaupt zum "Leuchten" bringen kann? Oder wo könnte ich sotwas
> bekommen

Probiere vielleicht einmal IRSND zum Senden, das Gegenstück zu IRMP 
(Software-Decoder für Empfänger). IRMP "versteht" ca. 20 IR-Protokolle. 
Bis auf RC6 (nicht zu verwechseln mit RC5) kann IRSND diese Protokolle 
auch alle wieder über eine IR-LED aussenden.

Link zu IRMP:

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

Link zu IRSND (2. Teil im obigen Artikel):

http://www.mikrocontroller.net/articles/IRMP#IRSND_-_Infrarot-Multiprotokoll-Encoder

Du könntest dann mit IRMP die Codes Deiner FB auslesen (kostet 4 Bytes 
pro Taste) und diese dann mittels IRSND wieder verschicken, um Dein TV 
zu steuern.

Die Sache mit einfacher RC5-Codierung kannst Du wahrscheinlich 
vergessen, da sich heutzutage die allerwenigsten TVs mit RC5 begnügen. 
Da gibt es noch dutzende anderer Protokolle auf dem Markt. Mit IRMP hast 
Du die Chance, diese zu entschlüsseln und mittels IRSND auch wieder zu 
senden.

Zum obigen Artikel gibt es auch noch den entsprechenden Thread in der 
Codesammlung:

Beitrag "IRMP - Infrared Multi Protocol Decoder"

Wenn IRSND läuft, brauchst Du "nur" noch eine Routine schreiben, die das 
zu sendende Kommando über Bluetooth entgegennimmt und anschließend über 
IRSND wieder versendet.

Gruß,

Frank

von Tobi (Gast)


Lesenswert?

Hallo Frank,

Danke. Deine Links waren bei mir alle schon rosa zum Glück, habe Sie 
auch schon gefunden und Teils gelesen.(Alles kommt noch)

Habe auf meinen 32er die IRSND gespielt. Wenn ich den Code aufspiele und 
erst mit nem Summer teste dann sendet er auch alle paar sekunden was.

Ich bin gerade dabei herrauszufinden wo ich in dem Code finde was er 
dort sendet und wie ich es ändern kann.

Gruß

von Tobi (Gast)


Lesenswert?

Hallo,

wie kann ich mit IRSND einen Befehl z.B. TV On senden (Samsung)?

Muss ich dazu erst den Befehl von meiner FB einlesen?
Oder habe ich die Datei übersehen, in der dieser Code steht?

Gruß und Dank

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Tobi schrieb:

> wie kann ich mit IRSND einen Befehl z.B. TV On senden (Samsung)?
> Muss ich dazu erst den Befehl von meiner FB einlesen?

Ja, Du musst zunächst mit IRMP den Befehl der Samsung einlesen. Du 
bekommst dann 3 Werte zurück:

  protocol
  address
  command

Anwendungsbeispiele findest Du im IRMP-Artikel.

Mit den erhaltenen 3 Werten kannst Du dann IRSND füttern. Du könntest 
dann zum Beispiel alle benötigten Tasten mit ihren 3 uint8_t-Werten im 
EEPROM speichern.

> Oder habe ich die Datei übersehen, in der dieser Code steht?

Nein, hast Du nicht.

Gruß,

Frank

von Tobi (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe mir jetzt eine kleine Schaltung mit dem TSOP1738 aufgebaut 
(kein Display vorhanden noch nicht )und habe versucht die ON Taste 
einzulesen. Ich habe gedacht das ich die 3 Werte dann angezeigt bekomme 
über Uart habe ich nicht bekommen.

Habe dann #define IRMP_LOGGING   1 gesetzt dann habe ich folgendes 
bekommen siehe Anhang.

Mache ich das so richtig?

Aber wie bekomme ich mit dem Code im Anhang die Werte protocol, address 
und
  command?

Hoffe ich stelle mich nicht zu böld an.

Gruß

von Michael H. (michael_h45)


Lesenswert?

Oder (ganz anderer Ansatz):
Beitrag "Transistorverstärker + Ir-LED"

von To B. (tobi666)


Lesenswert?

So endlich angemeldet :)

Danke für den neuen Ansatz, aber ich würde es gerne erstmal hiermit 
versuchen.

Gruß

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Tobi schrieb:
> Ich habe mir jetzt eine kleine Schaltung mit dem TSOP1738 aufgebaut
> (kein Display vorhanden noch nicht )und habe versucht die ON Taste
> einzulesen. Ich habe gedacht das ich die 3 Werte dann angezeigt bekomme
> über Uart habe ich nicht bekommen.

Das Programm gibt gar nichts aus, Du musst das selbst machen - z.B. in 
main.c, welches ja nur ein Anwendungsbeispiel ist. Dort wird der Code 
zwar ausgelesen, aber nichts mit ihm gemacht, siehe Kommentar in main.c. 
Das musst Du dann selbst mit Leben füllen.

> Habe dann #define IRMP_LOGGING   1 gesetzt dann habe ich folgendes
> bekommen siehe Anhang.

Perfekt. IRMP erkennt SAMSUNG32 mit:

p = 10, a = 0x0707, c = 0xfd02, f = 0x01

d.h.

Protocol = 10 (SAMSUNG32)
Address  = 0x0707
Command  = 0xfd02

> Mache ich das so richtig?


Ja, absolut richtig. Du solltest aber:

  - IRMP_LOGGING abschalten
  - In main.c die UART nach Deinem Geschmack selbst initialisieren
  - Die Werte in main.c selbst ausgeben.

Siehe main() in main.c (die zweite Variante gaaaanz unten für den gcc!):
1
    if (irmp_get_data (&irmp_data))
2
    {
3
        // ir signal decoded, do something here...
4
        // irmp_data.protocol is the protocol, see irmp.h
5
        // irmp_data.address is the address/manufacturer code of ir sender
6
        // irmp_data.command is the command code
7
    }
8
  }

Du musst also nur den if-Block füllen (Werte auf UART, LCD oder sonstwo 
ausgeben). Vorher UART selbst initialisieren, da Du ja IRMP_LOGGING dann 
wieder auf 0 stellen solltest.

Gruß,

Frank

von To B. (tobi666)


Lesenswert?

Danke Frank,

ich versuche gerade mit meinen begrenzten Programmierkenntnissen deine 
Tipps umzusetzen. Was für mich nicht so wirklich einfach ist :).

Werde mal weiter versuchen mich reinzufuchsen. Falls noch Codeschnipzel 
vorhanden sind stehe ich dem natürlich immer offen gegenüber.

Danke und Gruß

von To B. (tobi666)


Angehängte Dateien:

Lesenswert?

Ok das scheint doch ein wenig zu schwer für mich zu sein. Die Tipps von 
Frank direkt umzusetzen.

Also ich habe ein Problem die UArt für meinen Atmega32 zu initialisieren 
und die Werte dann  per Uart ausgeben zu lassen.

Wie kann ich das machen bzw. hat jemand ein paar Tipps für mich.

Ich befinde mich noch in den anfängen der Programmierung und stelle 
deshalb ab und zu mal ein paar "komische" Fragen.

Meine main.c siehe Anhang.

Danke und Gruß

von To B. (tobi666)


Angehängte Dateien:

Lesenswert?

Konnte die Datei leider nicht an meinen Post anfügen deshalb ein neuer.

Anbei natürlich der Versuch der Init. Falls das richtig sein sollte weiß 
ich leider nicht wie ich dann weiter machen soll. Bin für jeden guten 
Tipp Dankbar.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

To Bi schrieb:
> Anbei natürlich der Versuch der Init.

Wo wird Dein irmp_uart_init () aufgerufen? Wo ist Deine 
UART-Sendefunktion?

Was soll das:
1
   if (irmp_get_data (&irmp_data))
2
    {
3
        // ir signal decoded, do something here...
4
        irmp_data.protocol = 10;
5
        irmp_data.address = 0x0707;
6
        irmp_data.command = 0xfd02;

irmp_get_data() liest die daten vom IR-Empfänger und schreibt sie in
irmp_data.protocol, irmp_data.address, irmp_data.command.

Was soll Dein Setzen der Werte hier bringen? Etwa über IRSND senden?

Sag erst, was Du hier machen willst:

   a) IR-Daten empfangen, über UART senden
   b) über UART empfangen, über IR senden

Für a) brauchst Du IRMP, für b) brauchst Du IRSND. Eigentlich wolltest 
Du doch nur die Power-Taste über IR senden? protocol, address, command 
habe ich Dir geliefert.

Ich glaube, dass das Verständnis bei Dir noch nicht da ist. Wie sieht es 
mit Programmieren in C aus?

Gruß,

Frank

von To B. (tobi666)


Lesenswert?

Hallo,

Frank M. schrieb:
>
> Ich glaube, dass das Verständnis bei Dir noch nicht da ist. Wie sieht es
> mit Programmieren in C aus?
>

Ja so ist es, mir fehlt leider ein wenig Paxis in C wie auch in 
Mikrocontrollern. Aber ich versuche mich da immer und immer mehr rein zu 
denken und lesen. Aus diesem Grund kommen auch meine "komischen Fragen".


> Sag erst, was Du hier machen willst:
>
>    a) IR-Daten empfangen, über UART senden
>    b) über UART empfangen, über IR senden
>

Was ich auch nicht verstanden habe ist, wie ich das in dem Prog machen 
kann das ich die Taste z.B. On einlesen kann und dann später wieder 
ausgeben kann.
Bis jetzt weiß ich welchen Code meine FB hat.

Aber vielleicht hast Du einen Tipp für mich damit ich C insbesondere 
dein Prog besser verstehen kann.

Gruß und Dank

von Thorsten E. (thorsteneisbein)


Lesenswert?

Wie weit bist Du mit dem Projekt derzeit? Ich habe ebenfalls ein 
Interesse an einer solchen Lösung, eventuell auch einer etwas weiter 
gehenden:

Ich habe einen Wohnzimmer-PC mit Ubuntu/MythTV. Läuft alles super, aber 
auch der Fernseher und der Verstärker wollen ein/ausgeschaltet bzw. die 
Lautstärke geregelt werden. Alle bisherigen Universalfernbedienungen 
fliegen bei mir früher oder später in die Tonne, weil die eben nicht das 
so machen, wie ich will. Und auch den PC über IR (was derzeit klappt) zu 
steuern ist eher doof. Lieber wäre mir eine direkte Steuerung über 
LAN/WLAN.

MythTV lässt sich bereits prima von Android aus steuern (per WLAN und 
App, per WLAN und Browser von allen Smartphones aus). Der Verstärker 
aber eben nicht. Da wäre also eine WLAN/BT Lösung ideal. Am Besten noch 
eine App, die MythTV direkt per WLAN steuert und eine Box per BT (oder 
eben per WLAN).

Ich habe nun mit einem Freund zusammen mit ethersex (ethersex.de) 
gewerkelt. Ein Modul bei denen ist IRMP. IRMP lässt sich dort zum 
Empfangen und Senden verwenden. Wird ein Signal empfangen, kann so eine 
Art Event (Quasi der Code, der Empfangen wurde) per RS232 (und dann z.B. 
weiter per BT), per LAN, per I2C oder was auch immer versendet werden. 
Das Ganze geht auch umgekehrt: Ich sende per LAN, per (BT->) RS232 einen 
Code (IR Protokoll + Code) und die IR Diode sendet. Ich kann an der 
Hardware und der Beschreibung für Nachbauten arbeiten (ideal ist das 
Pollin NetIO für 20€, günstiger geht es kaum), ebenso an Anpassungen für 
Ethersex.

Toll wäre, wenn sich jemand findet, der auf der Android oder auch IPhone 
Seite an einer App arbeiten kann. Ich kann das nicht und derzeit habe 
ich auch keine Zeit dafür. Bei Ethersex könnte man das auch über eine 
Webseite und LAN machen, dann entfällt auch das BT Modul.

Die Lösung hätte den Charme, dass sie später sehr einfach erweiterbar 
ist. Man kann (und sollte) aber erstmal klein anfangen und sich auf das 
Senden/Empfangen von IR Codes beschränken, LAN (und über Adapter auf 
WLAN und dann Android) und RS232 (und über BT Modul auf Android).

Finden sich für die Idee noch Mitstreiter?

von Michael H. (michael_h45)


Lesenswert?

Thorsten Eisbein schrieb:
> Toll wäre, wenn sich jemand findet, der auf der Android oder auch IPhone
> Seite an einer App arbeiten kann. Ich kann das nicht und derzeit habe
Daran habe ich so meine Zweifel...
> ich auch keine Zeit dafür. Bei Ethersex könnte man das auch über eine
> Webseite und LAN machen, dann entfällt auch das BT Modul.
hol dir doch einfach ein Terminal-Programm und erstell dir einen 
einfachen, hart codierten Befehl für deinen Zweck.
Schickst du ein 'A', wird angeschaltet, schickst du ein 'U', wird 
ausgeschaltet.
Da ist es dann auch egal, ob Bluetooth oder TCP genutzt wird.

Apps für Android zu schreiben ist übrigens wirklich keine Kunst.
Grundlagen in C reichen, um die Java-Beispiele von android zu verstehen. 
Dann gibt es bei android selbst eine developer-Sektioon, die einen 
wirklich an der Hand nimmt und ein hervorragendes Framework zur 
Verfügung stellt.
Eine Woche höchstens und du bist fertig...

von Thorsten E. (thorsteneisbein)


Lesenswert?

Dass eine App zu bauen nicht besonders schwer ist, ist mir klar. 
Trotzdem fehlt mir dafür die Zeit. Ich habe einen Freund bereits für das 
Projekt gewinnen können, der wird mitmachen und die Android Entwicklung 
übernehmen.

Eine Webseite auf Ethersex zu erstellen wäre auch eher ein Umweg und 
nicht die endgültige Lösung.

Ziel ist es etwas zu schaffen, was am Ende wirklich gut funktioniert. 
Und dafür mache ich am Ende auch eine Platine (2 oder 4 lagig, sehr 
klein), die alles beinhaltet, was man braucht. Da soll dann sowohl BT 
als auch LAN als Übertragungsweg funktionieren. Dann hat man bei der App 
die Wahl, ob man WLAN (dann braucht man einen WLAN Router) oder BT zur 
Steuerung verwenden will. In einem zweiten Schritt soll dann auch noch 
die MythTV Steuerung in die App mit rein. Per BT würde die kleine Box 
die Befehle auf LAN Umsetzen und an den PC schicken, per WLAN geht das 
dann auch direkt. Andere VDRs sind später auch denkbar, aber ich möchte 
lieber klein anfangen...

Ich werde mit ihm nächste Woche über ein Konzept reden und das dann 
vorstellen. Wenn dann jemand Lust hat mitzumachen: Gerne. Am Ende wird 
auf jeden Fall das Projekt auf eine Webseite zum Nachbauen gestellt.

@Tobi: Das ist ja Dein Thread hier. Wenn Du das lieber hast, stelle ich 
das (mein) Projekt in einem separaten Thread vor. Ich möchte den Dir 
nicht "klauen".

von Tobi (Gast)


Lesenswert?

Du kannst gerne diesen Thread benutzen.
Ich bin wegen Zeitmangels und da ich für den Anfang wohl ein zu großes 
Projekt wollte nicht wirklich weitergekommen. Aber ich bin sehr auf Eure 
Lösung gespannt.

Gruß

Tobi

von Tobias M. (j4cky)


Lesenswert?

Genau so ein Projekt suche ich,
Leider bin ich auch eher Anfänger.

überlege auch schon seit längerem (habs immer vergessen bis ich wieder 
im Internet war) was man braucht und wie man das macht.

ich persönlich würde dafür dann ein internet Tablet mit android 
einsetzen 7" oder 10" , dann machen die dinger auf dem wohnzimmertisch 
nämlich richtig Sinn. bei den günstigen ist leider kein Bluetooth 
integriert was wieder für w-lan sprechen würde.

ich denke aber das bluetooth einfacher zu realisieren wäre?

ich werde auf jedenfall dsa Projekt weiter verfolgen, und in den Ferien 
(Technikerschule zum Elektrotechniker) in 8 Tagen werde ich das ganze 
mal angreifen, das ich zumindest mal den IR teil für mich löse.

von Christian S. (chris-st)


Lesenswert?


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.