USB-IRMP STM32

Aus EasyVDR Wiki
Wechseln zu: Navigation, Suche

Einleitung

Diese Seite beschreibt die nötigen Schritte für Entwickler bzw. Anwender die auf Basis eines STM32 Mikrokontrollers einen IR-Receiver aufbauen möchten.

Der IR Receiver bietet folgende Features

  • Anschluss per USB an einen PC oder Embedded-System
  • Empfang von IR Signalen
  • Aussenden von IR Signalen
  • Einschalten des PCs

Die STM32 Patche für IRMP sind mittlerweile alle in IRMP aufgenommen worden, so dass jetzt das Einbauen einer neuen IRMP Version nur minimalste Anpassungen erfordert. Diese Funktionen sind von der HW abhängig.


Einsatz im easyVDR

Seit Oktober 2015 ist die Version mit dem "SimpleCircuit" als Standard verfügbar. Mit aktivem SimpleCircuit ist DIO als OpenDrain beschaltet, und im Ruhezustand ist DIO open, da fliesst kein Strom. Mit Einschaltsignal zieht DIO auf Masse, und wenn ein aktiver Motherboard-Einschaltpin angeschlossen ist, wird der auf Low gezogen, und das PC schaltet ein.

STM32-USB-2.jpg
STM32-USB-Simple1.jpg
STM32-USB-Simple2.jpg

Test des Einschaltpins am Mainboard: Man misst, ob der eine Pin an Masse liegt und ob der andere ca. +3,3V oder +5V führt. Dann schließt man beide über ein Multimeter kurz, und misst den Strom. Der beträgt üblicherweise nur wenige mA, und solange es unter 25mA sind, ist der Test bestanden. Wer auf Nummer sicher gehen will nimmt ein hochohmig gestelltes Potentiometer und verringert langsam den Widerstand. Achtung: Wie immer bei Hobbyprojekten ist jeder selbst verantwortlich, keiner der Beteiligten übernimmt eine Haftung für eventuelle Schäden.

PS: Dass der Author hier nichts miss und aufgrund des 220Ohm Schutzwiderstandes einfach ausprobiert wie herum das Kabel zum Power-Anschluss am Mainboard aufgesteckt werden muss spielt keine Rolle.



Ohne SimpleCircuit ist es wie folgt: Im Ruhezustand ist DIO (beinahe) auf Masse, da es PushPull beschaltet ist. Das Einschaltsignal kommt für 500 ms: https://github.com/j1rie/IRMP_STM32/blob/master/STM32F103/src/main.c#L294 Währenddessen ist DIO (beinahe) auf VCC (3,3V).

Details

Zum Entwickeln wurde CooCox benutzt. Eine sehr gute Einführung in das Thema gibt es hier: http://www.olliw.eu/2013/stm32-this-and-that/

Die Firmware kann derzeit

  • sich als HID Device anmelden
  • über USB2 in Fullspeed Daten ein/ausgeben
  • IR empfangen
  • IR senden
  • den PC aus Standby oder Ausgeschaltet über USB aufwecken (+5V auf USB nötig)
  • von der Kommandozeile aus IR senden
  • per definierter Fernbedienungs-Taste IR senden
  • per irmplircd IR Codes an VDR weitergeben
  • per Kommandozeile irgendetwas tun
  • per empfangenem IR Code irgendetwas tun

HW Plattformen

STM32F103

Der STM32F103 ist massenhaft und günstig verfügbar. Eine günstige HW-Plattform lässt sich Möglicherweise auf Basis einen Programmers finden:

Stm32-prog.jpg

Zum flashen dieses Programmers wird ein zweiter Programmer benötigt.


Flashen:

Zum Flashen muss der Boot1 Jumper umgesteckt werden und Reset gedrückt werden.

STM32F103-flashen.jpg


Das Flashen erfolgt beispielsweise so:

sudo ./stm32flash -v -w IR.bin /dev/ttyUSB0
stm32flash 0.3

http://stm32flash.googlecode.com/

Using Parser : Raw BINARY
Serial Config: 57600 8E1
Version : 0x22
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0410 (Medium-density)
- RAM : 20KiB (512b reserved by bootloader)
- Flash : 128KiB (sector size: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB

Wrote and verified address 0x08002e28 (100.00%) Done.

Resetting device... done.

oder so:

dfu-util -a 0 -s 0x8000000 -D /Pfad/IR.bin

Zu checken: In irmpconfig.h ist der Kommentar "use C6 as IR input on STM32", und in den beiden Zeilen darunter kannst du als IRMP_PORT_LETTER und IRMP_BIT_NUMBER statt C6 etwas anderes auswählen.


Pinbelegung:

  • Aufgezählter Listeneintrag
  • IR in vom TSOP an A6
  • Toggle LED an B12 (Wie herum die LED ist, sollte egal sein, soll ja nur toggeln. B12-LED-R-Masse oder B12-LED-R-3,3V. Unter Windows mit Hterm bei 115200, 8n1 bekommt man auf Tastendrücke Nullen und Einsen.)
  • IR Sendediode an B6
  • Einschalter an B7 und über USB
  • Logging an B10

STM32F105

Der STM32F105 hat den Vorteil, dass man keine Hardware zum Flashen braucht. Er kann direkt über USB geflasht werden (dfu-util). Die STM32F105 Firmware ist einfach anpassbar an STM32F107, STM32F2xx und STM32F4xx, da dieselbe USB Library genutzt wird. Die Software stammt von: http://mikrocontroller.bplaced.net/wordpress/?page_id=1516 http://mikrocontroller.bplaced.net/wordpress/?page_id=1940 http://mikrocontroller.bplaced.net/wordpress/?page_id=1993 (IRMP, IRSND, USB_HID für STM32F4) benutzt und an den STM32F105 angepasst.

Pinbelegung:

  • IR in vom TSOP an C6


Compilieren

Unter Ubuntu wird die Toolchain wie folgt installiert:

sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded sudo apt-get update sudo apt-get install gcc-arm-none-eabi

Configuration

Das Configrationsprogramm ist für Linux und Windows verfügbar.

STM32-Config-GUI.png

Dankesworte

Geschrieben wurde die STM32 Software von "jrie" aus dem VDRPortal. Dieses "Produkt basiert auf der Arbeit vieler anderer: ....