IRMP auf STM32 - ein USB IR Empfänger/Sender/Einschalter mit Wakeup-Timer

  • Ich bin jetzt zwar nicht unbedingt Elektronik-Laie und habe schonmal mit Teensy gearbeitet und Attiny-Chips selber programmiert.


    Dennoch vermisse ich noch irgendwo eine kleine Anleitung der Form "Kauf bei ebay $ARTIKEL, schließe den TSOP an $PINS1 an, Taster kommt an $PINS2, Powerbutton-Ausgang ist an $PINS3 und programmiere Software mit $PROGRAMM in die Platine"

  • Feedback Teil 1 von mir:


    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


    Dann ein make im Verzeichniss:


    Build vom 103er läuft durch:


    Der 105er (interessiert mich derzeit eher weniger) läuft nicht durch:



    Die Binaries sind sicherlich unterschiedlich je nachdem ob man CoCox nutzt oder eine bestimmte GCC-ARRm Version unter Linux...
    Ob das Auswirkungen haben könnte weiss ich nicht. Aber trotzdem die Frage an "jrie": Kannst Du ins Github auch gleich die Binaries legen ?

  • jrie Kannst du mir bitte eine Hardware, die du für brauchbar hältst, empfehlen? Ich hätte gerne so eine kleine Platine und wenn möglich würde ich gerne direkt über USB programmieren.


    An einer (ggf. bebilderten) Anleitung würde ich mich dann mal versuchen. Ich habe zwar schon einen IR-Empfänger, aber die Idee, dass hier eine Open-Source-Lösung geschaffen wird, reizt mich.

  • Ich bin zwar nicht JRIE, aber wenn Du dieses Teil kaufst... :
    (Gerne auch bei ebay, nur finde ich das spontan nicht)
    http://www.aliexpress.com/stor…er/524881_1446941850.html
    ...dann kannst Du wenn gewünscht mal diese Platine draufstecken (falls die auch spontan funktionieren nach der Lieferung):
    [IMG:https://raw.githubusercontent.com/ranseyer/STM32-IRMP-Hardware/master/1_Small_ST-Link/STl-Link-V10-final-top.jpg]
    https://github.com/ranseyer/ST…ee/master/1_Small_ST-Link
    (Viele Bauteile sind optional)


    Die Platine sollte auch auf den roten ST-Link in diesem Thread passen (2,54mm Abstand zwischen den Pin-Reihen). Aber beim roten müssen ggf. noch Widerstände entfernt werden.
    Somit würde ich eher den blauen von LC-Tech verwenden. (Und von LC-Tech hab ich im anderen Projekt schon massenweise die AVR Programmer verbaut: USB-Einschalter und IR-Receiver Projekt)


    Platinen habe ich reichlich bestellt. Falls diese funktionieren gebe ich auch welche ab. (mit und ohne Bestückung)

  • Irgendwas haut mit der Toolchain unter Linux noch nicht hin. Zunächst mal bekomm ich teilweise beim Flashen:



    Also funktioniert das Linkerskript noch nicht ganz wie es sollte, was ja u.a. für das Alignment zuständig ist. Desweiteren/Dementsprechend funktioniert das von mir erstellte Binary einfach nicht. Ich bekomme immer Fehlermeldungen beim Anstecken:


    Mit den Binaries von jrie, die vermutlich unter Windows mit coocox gebaut wurden, gibt es keine Fehlermeldungen beim Anstecken. Gibt es hier einen Linker-Skript Spezialisten?
    BTW: Ich beziehe mich hier auf STM32F103.

  • M-Reimer :
    Hast du das
    https://github.com/j1rie/IRMP_…master/IRMP_auf_STM32.pdf
    und das
    https://www.mikrocontroller.ne…schalter_mit_Wakeup-Timer
    schon angeschaut?
    Das noch detaillierter auszuarbeiten, braucht noch etwas mehr Zeit.
    Ich baue gerne alles, was noch fehlt, ins mikrocontroller.net Wiki ein.
    Da dort, soweit ich weiß, jeder Schreibrechte hat, kannst du das aber auch.


    Der Rote ist von hier:
    http://www.ebay.de/itm/370887065223
    Der ist noch etwas kleiner, aber eventuell müssen ein paar Widerstände entfernt werden.
    Der Blaue steht in Post #18. Da Martin die Platine dafür macht, empfehle ich den.
    Der ist von mir zufriedenstellend getestet worden.
    Der Haken am Blauen ist, dass das Firmware Update erfordert, hinten auf dem Board eine Stelle auf Masse zu ziehen (siehe Bild im Forum), und zwar im richtigen Moment (Post #46). Nicht beim ersten Mal, aber jedes weiter Mal.
    Für die Platine ist das aber einfacher.

  • Beim Linker Script kann ich gerade nicht helfen, da das Netzteil von meinem Linux PC abgeraucht ist.
    Allerdings habe ich mit olebowle's Makefile aus Post #49 erfolgreich auf openSuse gebaut, und das Binary lief auch richtig.

  • Ganz direkt über USB programmieren geht nur mit dem F105 u.ä.
    Bei dem F103 hat man die Wahl zwischen USB2seriell und USB-ST-Link.
    Das einfachste ist, gleich zwei Blaue zu kaufen. Dann wird der eine mit dem anderen programmiert.


    Man könnte auch einen entsprechenden Bootloader flashen, dann kann man ab dem zweiten Mal über USB flashen.
    Mit zwei Blauen ist es aber so sehr praktisch, dass ich das von meiner Todo Liste genommen habe.

  • Wenn man zwei Blaue nimmt, muss man bei einem zwei Pins ein löten oder zwei Kabel anlöten.
    Wenn man das nicht will, ist es besser einen Roten und einen Blauen zu nehmen.
    Das Beste wäre es zwei Blaue zu nehmen und bei beiden je zwei zusätzliche Pins ein zu löten. Damit spart man sich den Aufwand beim erneuten Flashen. Wobei dann wieder die Platine nicht passt.
    Die "optimale" Lösung gibt es also nicht, sondern es hängt von den jeweiligen Präferenzen ab.


    Ich glaube eine genaue Bauanleitung ist eine gute Idee.
    Wenn ich meinen zweiten Blauen habe, und dazu komme, kümmere ich mich mal darum.


    Wahrscheinlich hat aber jeder andere Vorlieben, und die zu Jedem passende Anleitung wird es nicht werden.

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von jrie ()

  • Da ich bei Aliexpress nichts bestellen kann würde es wohl die rote Platine werden. Was sind da genau für Umbauten nötig? Kann ich auch zwei rote Platinen verbinden um die eine mit der anderen zu programmieren? Was hat es mit dem Reset auf sich, von dem du geschrieben hast? Hast du mal die Platinen verglichen? Kann man die rote eventuell so umrüsten, dass sie auch ohne "Reset" geflasht werden kann?

  • Da ich bei Aliexpress nichts bestellen kann würde es wohl die rote Platine werden. Was sind da genau für Umbauten nötig?

    Das muss ich erst noch heraus bekommen ;)


    Kann ich auch zwei rote Platinen verbinden um die eine mit der anderen zu programmieren?

    Ja. Zwei von den 4 kleinen "Löchern" müssen verbunden werden (Post #18 ).


    Was hat es mit dem Reset auf sich, von dem du geschrieben hast? Hast du mal die Platinen verglichen? Kann man die rote eventuell so umrüsten, dass sie auch ohne "Reset" geflasht werden kann?

    Der Reset ist zum Flashen nötig. Eine genauere Beschreibung als in Post #46 wird es dann (hoffentlich) in der Bauanleitung geben. Ohne Reset geht es leider nicht, da die Programmiereingänge für andere Funktionen umkonfiguriert werden. Sobald man einmal eine entsprechende Firmware geflasht hat, scheint das nötig zu sein. Beim Roten war es aber auch ohne das nötig, ich weiß noch nicht wieso. Das Zeitfenster ist relativ kurz, und meistens brauche ich mehrere Versuche, bis es endlich klappt. Mehrmals musste ich sogar unterschiedliche Software benutzen. Ich habe es noch nicht systematisch untersucht. Deswegen schrieb ich, dass es etwas "stressig" ist.
    Aber Martin war das lieber, als die Platine komplizierter zu machen. Wenn man die Platine nicht benutzt, würde ich davon abraten, es sei denn, man schlägt sich gerne mit Kniffligem herum.
    Zwei Blaue oder ein Roter und ein Blauer ohne Platine wäre einfacher.
    Mit den Entwickler-Boards hat man diese Probleme nicht, aber die sind halt deutlich größer.


    Sobald ich den zweiten Blauen habe, und ich den Roten nicht mehr zum Programmieren brauche, kann ich ihn "opfern", d.h. so modifizieren wie nötig. Wenn ich dann mehr weiß, gibt es die Infos hier.


    Du stellst gute Fragen :) Das bringt mich dazu, es genauer darzustellen ;)