IR-LCD

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Universeller Infrarot Decoder und Sender mit LCD Anzeige

von Frank Klee

Das ist ein kleines Projekt das auf der IRMP und IRSND Software von Frank Mayer basiert. Es dient als kleines Testgerät, um Infrarotfernsteuerungen zu untersuchen. Das Projekt wurde ursprünglich von Klaus Leidinger entwickelt und ist von mir um die Möglichkeit, IR-Telegramme zu senden erweitert worden. Ein vorhandenes IR-LCD nach Klaus Leidinger kann an die neue Version angepasst werden. Wie beschreibe ich weiter unten.

IR-LCD.jpg

Man kann mit dem Gerät nicht nur Infrarotcodes anzeigen lassen. Ich habe z.B. für meinen Receiver einen Code (durch ausprobieren) entdeckt und ihn dann in eine programmierbare Fernbedienung programmiert.

Hardware

Die Schaltung ist sehr einfach aufgebaut und besteht eigentlich nur aus einem Mikrocontroler mit LC-Display, einem IR-Empfängermodul und einer IR-Senderdiode mit Treiber. Der Aufbau erfolgt auf einer einseitigen Platine und benötigt nur 7 Brücken. Die Platine ist also für Selberätzer gut zu verwenden. Aufgrund der teilweise engen Leiterbahnführung ist etwas Umsicht beim löten angesagt.

Ir-lcd-v2Schaltplan.png
Das Layout ist einseitig und enthält sieben Brücken. Daher ist die Platine sicher auch für Selbstätzer geeignet, Der Programmierstecker K1 ist optional. Lässt man ihn weg entfallen drei Brücken. An den Steckverbinder K2 wird ein USB <-> TTL Wandlerkabel angeschlossen. Ich nutze dafür eines, das die Fa. Reichelt für den Raspberry Pi für wenig Geld anbietet. Dieses kabel sorgt auch für die Stromversorgung, entweder über den PC oder im Standalone-Betrieb über ein USB-Netzteil.
Der Kondensator C12 stammt aus dem Originalschaltplan von Klaus Leidinger. Bei mir hat er zu Schwierigkeiten geführt und ich habe ihn ersatzlos gestrichen.

Software

Basis ist die IRMP und IRSND Software von Frank Mayer, bei der ich nur den Teil zur Anzeige der Daten auf dem LCD und dem seriellen Port bzw. die Befehlsauswertung der Befehle vom seriellen Port bzw. die Befehlseingabe per Drehimpulsgeber dazu gebaut habe. Ich verwende dabei die LCD- und UART-Library von Peter Fleury. Vielen Dank an dieser Stelle. Originaldateien siehe in den Links. Die Encoder-Library habe ich geschrieben, nachdem ich diese Dinger fast in jedem Projekt einsetze. Wer einen anderen Encoder einsetzen möchte muss eventuell die encoder.h entsprechend anpassen. Hat man einen Two-Step oder Single-Step Encoder erwischt, muss die Auskommentierung der entsprechenden defines gelöscht oder gesetzt werden.
Das Programm basiert auf der IRMP-Version vom 07.05.2015 und IRSND-Version vom 26.01.2015. Die serielle Schnittstelle arbeitet mit 38400 Baud, 8N1. Zur Kommunikation kann ein einfaches Terminalprogramm genutzt werden. Da es ziemlich mühselig ist, die Befehle Zeichen für Zeichen in die Tastatur zu tippen, habe ich ein kleine VB6-Programm geschrieben, das die Kommunikation übernimmt.
Ich nutze AVR-Studio 6.2 zur Entwicklung meiner Software. Die entsprechenden Projektdateien findet ihr im Download.

Bootloader

Um die Software bei eventuellen Änderungen bequem auf den Mega328 laden zu können habe ich ihm einen Bootloader spendiert. Um den Bootloader zu aktivieren muß der Taster während des Powerup gedrückt gehalten werden. Die Parameter des Bootloaders sind: 38400 Baud, Protokoll avr109.
Im Download die an den Mega328 angepasste Version. Zur Programmierung nutze ich Avr-Osp II von Mike Henning, den ich in AVR-Studio eingebunden habe. Es kann natürlich auch jede andere Software verwendet werden, die das AVR109-Protokoll unterstützt.

Fusebits einstellen

Wenn der Bootloader benutzt wird, müssen die Fusebits entsprechend eingestellt sein:

FusesBootloader.png


Ohne Bootloader sieht es so aus:

Fuses.png

Bei anderen Programmern dementsprechend... anders

IR-Tester

Das Programm IR-Tester ist eigentlich selbsterklärend. Zur Sicherheit habe ich aber noch eine kleine Hilfedatei geschrieben. Das Programm scannt automatisch die ersten 16 COM-Ports, ob sich daran IR-LCD befindet. Der Port wird gespeichert, so dass beim nächsten mal nicht mehr gescannt werden muss. Man kann den Port aber auch manuell auswählen. In einem Fenster werden daraufhin alle empfangenen, decodierten Frames und auch die gesendeten Befehle angezeigt. Durch klicken auf einen Frame kann man diesen auch wieder senden oder vorher verändern.

Änderungen an IR-LCD von Klaus Leidinger

Wer bereits einen IR-LCD gebaut hat möchte diesen natürlich weiter benutzen. Das ist ohne weiteres Möglich, es sind nur ein paar kleine Änderungen erforderlich. Das Programm ist größer als 16k und passt deshalb nicht mehr in einen ATmega168. Dieser muss gegen einen ATmega328 getauscht werden. Um Eingaben tätigen zu können war eine entsprechende Eingabeeinheit erforderlich. Der verwendete Drehimpulsgeber kann einfach nachgerüstet werden mit dem Nachteil, dass das vorhandene Gehäuse dann zu klein ist. Will man auf den Standalone-Betrieb verzichten kann der Drehimpulsgeber auch weggelassen werden. Alle anderen Änderungen beruhen darauf, dass ich auf den V24-Wandler verzichtet und statt dessen einen USB <-> TTL Wandler mit Spannungsversorgung benutzt habe. Dadurch war der Spannungsversorgungsteil ebenfalls überflüssig.

Downloads

Hardware:

Target Datei: Datei:Ir-lcd-v2.T3001
Schaltplan als PDF: Datei:Ir-lcd-v2 Schaltplan.pdf
Schaltplan und Layout nur zur privaten Verwendung. Gewerbliche Nutzung nur mit meiner Zustimmung.

Software:

Bootloader passend für IR-LCD: Datei:Bootloaderm328.zip
IR-LCD Software V2.0: Datei:Ir-lcd-v2.zip
IR-Tester: Datei:Irtester-setup.zip

Links

Beschreibung IRMP (Frank Mayer) :

Diskussionsforum zu IRMP/IRSND auf microcontroller.net :

Bootloader:

LCD Library von Peter Fleury (original):

aktuelle Target Layout Software (kostenlose Demo):

Danksagung

Neben allen anderen, die an der Erstellung der Librarys für dieses Projekt mitgewirkt haben, möchte ich mich bei Klaus Leidinger bedanken, der mich zu diesem Wiki-Artikel ermuntert hat.