PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit Infrarotschnittstelle von Asuro fernseher bedienen?



theodrin
19.05.2006, 08:47
Hallo!

Ich hab vorher erfahren, dass es leider nicht möglich ist, dass man die Infrarotschnittstelle nicht als IrDA nutzen kann, aber es müsste doch möglich sein, mit der Schnittstelle den Fernseher zu steuern. Oder mit der Fernbedienung den Computer zu steuern. Hab schon viel gelesen, ob man den Asuro mit der Fernbedienung bedienen kann, aber das hab ich auch irgendwie nicht kappiert. Ich wollte jetzt mal fragen ob es möglich ist, mit dem Computer über die Infrarotschnittstelle den Fernseher zu bedienen. Das hört sich noch möglich an. Bitte um Ratschläge!

mfg theodrin

Arexx-Henk
19.05.2006, 10:32
Ha ha....gute Frage

Leider geht dass nicht.

Mit Flash.exe oder Hyperterminal kann mann Zeichen wie 'A' oder '3' durch die Infrarotschnittstelle ausstrahlen.
Die Schnittstelle ist durch die Schnittstelle hardware so konfiguriert dass die in prizip nur 10 bit (1 startbit, 8 datenbit und 1 stopbit) pro Zeichen ausstrahlt mit eine tragefrequenz von 36KHz. .
Da kann mann nur wenig andern, z.B. nur wahlen zwischen 1 oder 2 stopbit (2 stopbit macht 11 bits zusammen)
Dass ist eine verabredung oder Protokol. Da gibt es verschiedene Protokolle fur verschiedene Hersteller von Fernbedienungen. Mal 12 bit, mahl 14 bit, langere bits, kurtzere bits, andere tragefrequenz usw.

Da musste mann ein universales programmierbares Infrarotschnittstelle benutzen. Ich weis nicht ob so etwas existiert.

Mann konnte die Asuro so programmieren dass er von hyperterminal empfangene zeichen umsetzt nach richtige fur deinen Fernseher bestimmter Kode und nach deinem Fernseher ausstrahlt.
Damit kannst Du vom Hyperterminal, durch Asuro, dein Fernseher bedienen.... ;-)

Gruss

Henk

theodrin
19.05.2006, 11:40
Hallo Henk!

Erst mal danke für deine Antwort, auch wenns nicht das ist was ich mir erhofft habe. Das mit dem Asuro hab ich noch nicht ganz verstanden. Die Ir-Diode auf dem Asuro kann ich als Fernbedienung verwenden? Der kann richtige Zeichen für den Fernseher senden? Oder hab ich das falsch verstanden. Denn dann wärs einen versuch wert. Stellt euch das mal vor. Mein Asuro fährt ins Fersehzimmer, wo wer fernseht und auf einmal schaltet er einen einen anderen Sender ein, oder sonst was. Wär das nicht ein Spaß. Da würden mal alle dumm gucken und sich fragen, wer da umgeschaltet hat. Aber das ist nur so eine Scherz-Idee. Ich hab mir schon was besorgt, wo drinsteht was der Fernseher empfangen kann und verwerten kann. Das wär nicht das Problem gewesen. Aber hab ich jetzt richtig verstanden? Der Asuro kann an den Fernseher verwertbare Daten senden?

mfg Norbert

stochri
19.05.2006, 11:42
Leider geht dass nicht.

Da bin ich anderer Meinung. Man muss nicht unbedingt die UART benutzen. Es ist möglich, das Fernsteurungsprotokoll "von Hand" zu Programmieren.

Beim ATTINY13 habe ich mal einen Fernsteuerempfänger programmiert und zwar ohne UART.

Gruss,
stochri

theodrin
19.05.2006, 11:54
Hallo Storchi!

Ich hab jetzt nicht ganz verstanden, was du damit sagen wolltest. Aber ich glaub du wolltest sagen, dass es nicht möglich ist was ich versuchen wollte, oder?

mfg theodrin

pebisoft
19.05.2006, 14:20
warum so umständlich, schließt einfach eine irdiode-sendediode an einem freien pin und proggst dann das rc5-protokoll selber, ohne verstärkung geht es ca 40cm mit transitor dazwischen bis zu 3m.
in winavr-c gibt es schöne beispiele dafür.

Arexx-Henk
19.05.2006, 15:55
Hallo,

Storchi hat gesagt:

Man muss nicht unbedingt die UART benutzen.

Ich denke da ist ein missverstandnis.
Das Wort USART habe ich nicht benutzt.
Weil die Infrarot Diode an Asuro mit dem Asuro-Usart verbunden ist braucht mann nicht die Asuro-Usart zu verwenden. Dass geht namentlich auch nicht weil die Usart nur RS232 Protokolle generieren kann.
Mann kann jedoch die pin woran die Asuro infrarot sendediode verbunden ist auch einfach als normaler Port ansteurn. Damit kann man jeden Protokoll simulieren.

@theodrin
Ich bin ja vielleicht nicht ganz deutlich.
Schreib ein Program fur Asuro. Der Asuro soll Daten von Hyperterminal empfangen mittels den Asuro-Usart. Und Asuro sollte dann die empfange Data umsetzen nach Fernseher code und NICHT mittels die Asuro-Usart, aber DOCH mittels die Asuro Usart-pin (als normahler Port angesteurt) zum Fernseher schicken.

Vielleicht soll ich dies noch als erklarung dazu sagen: Die Usart in Asuro befindet sich irgenwo innen drin in die Atmega8L microcontroller. Die ausgang vom (internen) Usart kann mittels software mit die externen pin (PD1) verbunden werden woran die Asuro infrarot-sende diode verbunden ist. Mann kann aber mittels den software die vebindung zwischen die internen usart-ausgang und die pin (PD1) woran die sendediode verbunden ist unterbrechen und die externen pin (PD1) woran die sendediode verbunden ist 'handmassig' mittels die software ansteurn.

Und wie pebisoft sagt

proggst dann das rc5-protokoll selber, ohne verstärkung geht es ca 40cm mit transitor dazwischen bis zu 3m.
in winavr-c gibt es schöne beispiele dafür.

Da wird davon ausgegangen dass @theodrin's fernseher mit das (einder der meist benutzten) RC5 Protokoll arbeitet.

@pebisoft
kannst Du mir ein Tip geben wo die Beipiel zu finden sind?, mochte auch mal ein bischen da rundschauen.

Gruss

Henk

stochri
19.05.2006, 15:58
warum so umständlich, schließt einfach eine irdiode-sendediode

Genau, und damit es nicht so umständlich ist, läst Du die Sendediode da wo sie ist und sendest das rc5 Protkoll einfach über den TxD Pin, indem Du die UART nicht benutzt, sondern den Pin "von Hand" ansteuerst.

Arexx-Henk
19.05.2006, 16:02
@theodrin

Da bin ich nog was vergessen.
Nemen wir an dass z.B. die computer Taste 'A' die ZDF wahlen soll.

Das Asuro Program sollte so aussehen. Wenn Du z.B. die Taste 'A' in hyperterminal druckst, dann wird Asuro die 'A' empfangen und Asuro muss dann die richtigen zubehorende Kode zum Fernseher ausstrahlen fur das Kanal wo die ZDF sich befindet.

Du kannst auch die 6 Asuro Tasten benutzen um das Fernsehgerat zu bedienen....

Henk

theodrin
19.05.2006, 16:04
Hallo Leute!

Hab jetzt leider nicht mehr nachgeschaut, aber jetzt kenn ich mich glaub ich aus. Das kann ich mal ausprobieren. Aber heute weiß ich nicht mehr. Wenn ichs hab schreib ich euch, obs so funktioniert hat.
thx mal fürs erste!

mfg theodrin

pebisoft
20.05.2006, 10:43
die irdiode geht bei mir vom pinb0 (kann beliebig sein) über
einen 100ohm widerstand an +5volt.
ist ein testaufbau und kann jederzeit verbessert werden.
damit kann ich meinen fernseher steuern.
..avr16/8 mhz...habe ich genommen.



#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <string.h>
#include <stdint.h>

#define IR_LED_PORT PORTB
#define IR_LED_PIN PB0
#define IR_LED_DDR DDRB

#define IR_LED_ON IR_LED_PORT |= (1<<IR_LED_PIN)
#define IR_LED_OFF IR_LED_PORT &= ~(1<<IR_LED_PIN)

//89ms pause
void ms_89(void)
{
uint32_t zaehler;

for (zaehler=0; zaehler<118666; zaehler++)
asm volatile("nop");
}

void halbbit_high(void)
{
uint8_t i,zaehler;

//890us Impuls mit 36kHz senden
//Bei 28us Periodendauer ergibt das 32 Impulse
for(i=0; i<32; i++)
{
IR_LED_ON;
for (zaehler=0; zaehler<18; zaehler++)
asm volatile("nop");
IR_LED_OFF;
for (zaehler=0; zaehler<18; zaehler++)
asm volatile("nop");
}
}

void halbbit_low(void)
{
uint16_t zaehler;

//890us Pause
for (zaehler=0; zaehler<1186; zaehler++)
asm volatile("nop");
}

//Eine 0 oder 1 senden
void Send_Bit(uint8_t code)
{
if (code==0)
{
halbbit_high();
halbbit_low();
}
else
{
halbbit_low();
halbbit_high();
}
}


void send_code(uint8_t toggle, uint8_t address, uint8_t command)
{
uint8_t mask,i;

Send_Bit(1); //Erstes Startbit=1
Send_Bit(1); //Zweites Startbit=1

//Togglebit
if(toggle==0)
{
Send_Bit(0);
}
else
{
Send_Bit(1);
}

//5 Bit Addresscode
mask=0x10; //Beginn bei MSB

for(i=0; i<5; i++)
{
if(address&mask) //Send 1
{
Send_Bit(1);
}
else //Send 0
{
Send_Bit(0);
}

mask>>=1; //Nächstes Bit
}


//6 Bit Kommandocode
mask=0x20; //Beginn bei MSB

for(i=0; i<6; i++)
{
if(command&mask) //Send 1
{
Send_Bit(1);
}
else //Send 0
{
Send_Bit(0);
}
mask>>=1; //Nächstes Bit
}

//Übertragung komplett
PORTB=0; //IR-LED abschalten
ms_89(); // warte 89ms
}


int main(void)
{
IR_LED_DDR|=(1<<IR_LED_PIN);

uint8_t command,i;
command=32;

for (i = 14; i < command; i++)
{
send_code(1,7,i); // toggle, addresse, commando
}
}

theodrin
20.05.2006, 11:12
Hallo!

Also erstmal danke für das Programm. Habs mir gleich geholt und ausprobiert. Leider hab ich feststellen müssen, dass ich in meinem winavr nirgends die stint.h existiert, geschweige denn eine stint.c. Ich wollt fragen ob ich da eine neue winavr brauch, und ob der Code überhaupt für den Asuro geeignet ist. Also ich bräuchte irgendwoher die stindt-Dateien. Dann hat das für mich so ausgesehen, als ob du da nacheinander Tasten durchprobiert hättest? Hab ich da recht?

mfg theodrin

izaseba
20.05.2006, 11:48
Versuchmal inttypes.h

theodrin
20.05.2006, 12:05
Hallo izaseba!

Danke, der Tip war wirklich Welt. Hat ohne Probleme funktioniert. Jetzt probier ich gleich mal das Programm aus.

mfg theodrin

theodrin
20.05.2006, 12:14
Hallo Leute!

Ich hab das Programm jetz ausprobiert, aber es hat sich leider überhaupt nichts getan. Da einzig sichtbare, war das die Diode am Asuro geblinkt hat. Aber am Fernseher hat sich nichts getan. Er arbeitet ganz sicher mit dem RC5 Code. Was hätt sich da eigentlich tun sollen? Kannst du mir da helfen?

mfg theodrin

izaseba
20.05.2006, 12:30
Kannst du mir da helfen?

Wer ich ? 8-[
Was sendest Du an Deinen Fernseher?
Jedes Gerät hat eigene Gerätekennung usw.
Kennst Du sie ?
Weißt Du woauf er reagiert ?

Sonst kann ich Dir nicht helfen, vielleicht der Pebi ;-)

Gruß Sebastian

theodrin
20.05.2006, 14:43
Hallo!

Ich orientier mich am Code vom Pebisoft.

Ich versteh nicht ganz was er mit "Experimental" versteht. Den Code sendet er nämlich nach RC5-Code an den Fernseher. Das versteh ich nicht. Wär da nicht TV1 gescheiter? Oder doch nicht. Dann die Kommandozeichen die er sendet, versteh ich auch nicht. Da sendet er von "Voreinstellung" über "Lautstärke +/-" über "Helligkeit +/-" so einiges an den Fernseher. Soweit ich das verstanden habe. Ich hoffe pebisoft kann mir das noch mal erklären oder vielleicht du, oder wer anderer.

mfg theodrin

waste
20.05.2006, 17:28
@theodrin

schau mal hier: https://www.roboternetz.de/phpBB2/viewtopic.php?t=14416
Vielleicht hilft das weiter.

Waste

pebisoft
21.05.2006, 11:55
for (i = 14; i < command; i++)
{
send_code(1,7,i); // toggle, addresse, commando
}

dies ist eine demoschleife. ich wollte ausprobieren ob ich den rc5code richtig sende (code wurde mit tsop 1736 am anderen avr-8 empfangen).

du musst jetzt die daten "adresse,command" von deinem fernseher einsetzen, natürlich nicht in meiner for-scheife, sondern als nur einem datensatz.

pebisoft
21.05.2006, 12:03
Also erstmal danke für das Programm. Habs mir gleich geholt und ausprobiert. Leider hab ich feststellen müssen, dass ich in meinem winavr nirgends die stint.h ...

nimm winavr-c von 02.2005 oder sogar von 01.2006.
ganz normal installieren und es läuft einwandfrei du kannst dann auch die programme von " www.mikrocontroller.net/forum/list-2-1.html " nehmen. dort steht auch meins drin.

die beim asuro beigepackte winavr-c ist veraltet und passt leider nur für den asuro. wenn du weiterhin bei winavr-c bleiben möchtest und das winavr-c verstehen möchtest und mit anderen darüber sprechen möchtest, nimm die von mir vorgeschlagenen, sonst kommt keine vernünftige beratung und unterhaltung mit den winavr-c-usern zustande.
ist leider so.

theodrin
21.05.2006, 17:44
Hallo!

Ich bin gerade erst wieder jetzt online gegangen. Hab mich gefreut über die wirklich guten Antworten. Jetzt kenn ich mich richtig aus und werd dann das Programm ausprobieren, mit Werten die bei mir passen. Heute wirds aber schwierig. Muss schon wieder lernen. Aber ich glaub so funktioniert das. Bin guter Hoffnung.
Also dann bis morgen!

theodrin

theodrin
21.05.2006, 18:44
Hallo!

Hab jetzt doch noch mal was machen müssen. Wenn es einem grade freut, dann macht man es halt.
Hab noch schnell die Pinbelegungen verändert, aber es hat immer noch nicht funktioniert. Zumindest sendet die Ir-Diode was. Aber ich wollt fragen was ich da eingeben muss in die for-Schleife zum Schluss. Mein Fernseher funktioniert sicher mit RC5-Code. Hab jetzt Toggle-Bit auf ein, Gerät auf 0 (für TV1) und die Kommandozahl ist bei mir 16 für "Lauter". Muss ich da noch was verändern? Es sollte doch so gehen, oder?

mfg theodrin

theodrin
23.05.2006, 18:33
Hallo!

Ich hab heute dein Programm von deinem vorgeschlagenen Thread genau betrachtet und ausprobiert. Ich muss sagen, dass ich immer mehr über dich staune. Nach deinem tollen, wenn nicht perfekten geradeausfahrprogramm jetzt auch noch das. Also ich hab mir das Fernbedienprogramm angeschaut, und auch den Hex-Code am Anfang. Also als Beispiel 0x3010. Ich weiß was die 10 zum Schluss bedeutet(Die Kommandosache), aber wieso die 30 am Anfang. Ist das das Ansprechen für die Geräte(Also TV1, TV2, ...) oder was ganz anderes?

theodrin

theodrin
23.05.2006, 19:01
Hallo Leute!

Nach dem Programm von Waste, das funktioniert(Man muss aber die SendeDiode vom Asuro auf den Empfänger vom Fernseher richten) Dann funktioniert das ganze auf 3 (sagenhafte, unerwartete) Meter. Richtet man dagegen die Diode auf ca. 45° gegen den Empfänger funktioniert es nur mehr so halbwegs.

Aber jetzt habe ich Lunte gerochen. Ich wollte euch jetzt fragen ob es nicht möglich ist mit einer Fernbedienung z.B: Winamp zu steuern. Ich weiß schon dass es gehen müsste(WinLirc), wenn über die Schnittstelle die richtigen Daten kommen. Es kommen auch Daten an(wie man in Hyperterminal sieht), wenn man die Fernbedienung drückt. Vielleicht nicht dir richtigen, aber man könnte die doch irgendwie konvertieren. Die Zeichen die kommen sind doch immer die gleichen, oder. Dann nehm ich einfach einen Vergleichsparameter her, den ich vom Hyperterminal weiß und dann schau ich einfach ob das ankommt. Das wandle ich dann in die richtigen Daten um und schick es an Winamp und mit WinLirc müsste das doch gehen, oder ist das ein Wunsch?

theodrin

izaseba
23.05.2006, 19:10
Hallo,
Mit Lirc (wohl ohne Win am Anfang) geht es super.
Habe mir selber damit einen IR-Empfänger gebaut.
Man kann damit so ziemlich jedes Programm steuern, Wenn es Spaß macht sogar den Mauseiger.

Gruß Sebastian

23.05.2006, 19:26
Hallo izaseba!

Ich hab schon davon gehört, und jetzt auch noch deine tolle Aussage. Da bekomm ich so richtig gusto. Braucht man dazu aber unbedingt einen extrigen IR-Empfänger oder geht das auch mit der Schnittstelle vom Asuro? Ich meine wenn man einen extrigen braucht, wäre es mehr als eine Überlegung für mich mir sowas zu bauen. Wird ja nicht so schwierig sein! *ggg* Aber wenn ich schon eine IR-Schnittstelle hab(vom Asuro) würd ich es zumindest mal mit der versuchen, wenn es irgendwie möglich ist. Kennst du vielleicht jemanden, der das schon mal probiert hat oder hast du eine sonstige tolle Lösung für mich.

mfg theodrin

izaseba
23.05.2006, 19:51
kennst Du schon diese (http://www.lirc.org/receivers.html)Seite ?

Da ist ein Schaltplan von der Schaltung, einfacher geht wohl nicht mehr.
Ich denke schon, daß man die Asuro IR-Schnittstelle benutzen könnte,
vielleicht würde ein von diesen (http://www.lirc.org/html/configure.html#multiple) Treibern passen.

Gruß Sebastian

waste
23.05.2006, 20:16
Also ich hab mir das Fernbedienprogramm angeschaut, und auch den Hex-Code am Anfang. Also als Beispiel 0x3010. Ich weiß was die 10 zum Schluss bedeutet(Die Kommandosache), aber wieso die 30 am Anfang. Ist das das Ansprechen für die Geräte(Also TV1, TV2, ...) oder was ganz anderes?

theodrin
Eine Beschreibung des RC5-Code ist in der Wiki zu finden, da werden die einzelnen Bits erklärt.
https://www.roboternetz.de/wissen/index.php/RC5-Code

Waste

Ronny10
23.05.2006, 22:05
Das Programm von Pebisoft kann so, wie er es dir zur Verfügung gestellt hat, nicht funktionieren, da der 36KHz Generator fehlt, also ein Programmteil das das 36KHz Trägersignal für die IR-Datenübertragung erzeugt! So schaltest du die IR-LED nur ein und aus, erzeugst aber kein Trägersignal für den IR-Epfänger auf der Gegenseite (TV). Wenn du mit dem Asuro RC5Code senden willst, musst du auf jeden Fall die IR-Diode an PD1 (TXD) verwenden und du musst in deinem Programm sicherstellen das der Timer2 richtig initialisiert ist. Der Timer2 erzeugt beim ASURO das 36KHz Trägersignal!

TCCR2 = (1 << WGM21) | (1 << COM20) | (1 << CS20);
OCR2 = 0x6E; // 36kHz @8MHz

siehe init() in der asuro.c


Gruß, Peter

theodrin
24.05.2006, 18:04
Hallo Leute!

an izaseba:

Das mit den Treibern versteh ich noch nicht so ganz. Ich hab mal auf die Seite von dir geschaut und versucht mich da durchzuchecken, hab aber nicht allzu viel begriffen. Ich weiß ja nicht ob dich du da auskennst, aber da würde ich noch dringend Hilfe benötigen.

An waste:

Den Code und Sachen über den RC5-Code hab ich mir schon angesehen, sonst hätte ich ja nie gewusst, dass ich für CH+ 20 an die letzten Stellen setzen muss (bei 0x3020). Das war mir schon klar, aber ich weiß nicht was die 30 davor bedeutet.

An Ronny10:

Ich weiß noch nicht ganz genau warum das Programm funktioniert, aber bei mir funzt es. Ich hab nur bei den Voreinstellungen, beim hex-Code für die Kommandos. Die haben nicht ganz gestimmt. Jetzt kann ich die Lautstärke und die CH+ u.CH- fernbedienen. Irgendwie muss es also doch richtig sein.

mfg theodrin

waste
24.05.2006, 21:32
Den Code und Sachen über den RC5-Code hab ich mir schon angesehen, sonst hätte ich ja nie gewusst, dass ich für CH+ 20 an die letzten Stellen setzen muss (bei 0x3020). Das war mir schon klar, aber ich weiß nicht was die 30 davor bedeutet.

Die ersten 2 Bits sind die Startbits, die sind bei älteren Anlagen immer 1. Das entspricht der 3 von 0x3020. Danach kommt das Flip-Bit. Es wechselt mit jedem Tastendruck zwischen 0 und 1. Damit lässt sich unterscheiden, ob eine Taste dauerhaft gedrückt wird oder die gleiche Taste mehrfach gedrückt wurde. Bei Dauerdruck wird das gleiche Signal immer wiederholt.
Die Bits an der Stelle 4...8 sind die 5 Adressbits. Damit kann man verschiedene Geräte adressieren, z.b. 0 = TV.
Die restlichen Bits an der Stelle 9...14 sind die 6 Kommandobits. Die kennst ja schon.

Waste

theodrin
24.05.2006, 22:38
Hallo waste!

Das war eine super tolle Erklärung. Danke dafür. Ich frage immer nach, weil ich auch gerne verstehen würde, wie das ganze funktioniert. Will mich nämlich auch mal besser mit dem Thema auskennen wollen. Ich schau eh oft im Internet nach, aber manchmal findet man eben nicht alles. Das sind solche Foren ein sehr gutes Mittel sich auszutauschen.
Danke noch mal!

mfg theodrin