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

  • Auch wenn man noch nicht viel davon sieht, bin ich dabei Ole's Verbesserungen bei mir einzubauen. Das Resultat wird ein viel flexiblerer Umgang mit Makros sein. Man hat dann (im Rahmen der Größe des Eeproms) beliebig viele Makros mit beliebiger Tiefe und beliebig viele Wakeups.
    Leider komme ich dadurch nicht dazu, mich näher mit dem Roten zu beschäftigen. Das kommt aber noch.

  • Für den F105 sind die neue Makro Implementierung von olebowle sowie dazu passende Konfigurations Programme im github. Was den F103 betrifft, kämpfe ich noch mit einem hartnäckigem Bug. Sobald der behoben ist, kann ich den F103 nach ziehen.

  • Der F103 ist nun auch auf die neue Makro Implementierung und das neue Protokoll umgestellt.
    Bei so großen Änderungen ist es schwierig, den Bug zu finden, wenn plötzlich etwas nicht mehr geht. Ich verstehe auch noch nicht wirklich, was die eigentliche Ursache ist.
    Es funktioniert aber alles wieder. Das hat viel Zeit gekostet :(

  • Ich bin jetzt endlich dazu gekommen, den Roten zu testen. Wie schon befürchtet, stört der PullUp an SWIM, dagegen kommt der TSOP (active low) nicht an. Wenn ich CLK und SWIM vertausche, geht der IR Empfang, aber die LED toggelt nicht mehr so schön. Man hat also die Wahl, den PullUp zu entfernen, oder dass die LED statt An-Aus nur Helligkeitsschwankungen macht. Oder wer IR Senden oder Einschalten nicht braucht, nimmt für die LED den entsprechenden Pin.


    Der Blaue funktioniert mit und ohne Remap. Er hat an SWIM einen PullDown (manchmal hat es auch Vorteile, wenn der Hersteller schlampt :) ), der stört nicht.


    Der USB-HID Fehler ist beim Neukompilieren aber wieder da :(
    Irgendeiner der Commits die olebowles Änderungen eingebaut haben, muss etwas kaputt gemacht haben, und das liegt wohl kaum an seinen Änderungen, sondern vermutlich habe ich einen Fehler eingebaut.
    Hoffentlich finde ich den bald mal.


    Grün eingerahmt der PullUp des Roten.

  • Vorerst sollte man in config.h folgendes haben:
    //#define ST_Link
    //#define WAKEUP_RESET
    ST_Link ist für die ST_Link-LEDs, da ist noch ein Fehler drin,
    WAKEUP_RESET ist für die ST_Links noch nicht fertig.


    #define BlueLink_Remap ist für die Platine mit dem Blauen nötig, sonst aus,
    main.c (ca. Zeile 340): "delay_ms(5000);" muss raus, das geht nicht!


    Leider habe ich gerade nicht viel Zeit.
    Sobald sich das ändert, kommen einige Bugfixe.

  • #define ST_Link_LEDs ist wieder möglich, die problematischen Funktionen sind auskommentiert.
    Die eigentliche Ursache ist mir immer noch unklar.
    #WAKEUP_RESET ist für die ST-Links experimentell, sprich ungetestet.
    Es sollte alles wieder gehen, hab aber nicht genug Zeit für gründlichere Tests.
    Jetzt ist erst mal Weihnachten angesagt ;)

  • Danke. mit den Änderungsvorschlägen von gestern wird nach dem Flashen ein HID-Device erkannt. Auch (mindestens) IR Empfang klappt damit.


    Ein Frage noch zum Power-Switch (Ihr nennt das wohl "Wakeup"): Wird da automatisch der erste empfangene Code auch angelernt ?


    Was ja klappen sollte (nicht getestet von mir):
    -Wakeup Pin konfigurieren und verbinden
    -über stm32IRconfig ?



    ed: Und beim "remappten blauen" hatte ich keinerlei Probleme bei mehrmaligen Flashen...

  • > Wird da automatisch der erste empfangene Code auch angelernt ?
    Nein, lies mal ab Post #53.
    Könnte ich aber einbauen.
    Aber stm32IRconfig ist so einfach, probiers mal aus.
    Sonst gibt es auch irctl von olebowle.


    Hast du mit Reset auf Masse ziehen geflasht?
    Der Trick ist, ganz kurz nach Absetzen des flash Befehls die Masse Verbindung wieder los zu lassen.

  • Zitat

    Könnte ich aber einbauen.


    Würde ich super finden. Analog zu MReimers Meinung. Weil ich die Beiträge oben gelesen hatte habe ich gehofft dass es dieses Feature gibt.
    Wer mit dem Code nicht zufrieden ist kann ja noch immer das Tool nutzen.


    Mit dem Tool bin ich nicht so doll zurechtgekommen.
    A) Wenn man das Tool ohne weitere Angaben startet wäre ein Info zur Syntax super (also dass man das Device anzugeben hat)
    B) Dass man Wakeup unter "Program EPROM" findet war mir nicht sofort klar, Wenn man in dem Punkt Wakeup ist, dann wäre natürlich genial wenn man dort direkt die Taste anlernen könnte. Ich habs tatsächlich geschafft mich beim Abschreiben zu vertippen weil ich es mal spont ohne SSH Session diekt in der virtuellen Maschine versucht habe.



    Zum Flashen: Habe jetzt mal einige blaue und einen roten geflasht.
    -Das klappt nur dann sinnvoll bei mir wenn man den Ausleseschutz entfernt (Optionbytes); das habe ich unter Windows mit dem STM32 ST Link Utility gemacht. (Wie man das unter Linux tut hab ich noch nicht gesehen)
    -Dann wird in Virtualbox der Programmer nicht durchgereicht (Das fertige HID Device schon!). Daher flashe ich direkt auf einem Linux-Sytem.
    -Direkt die Firmware zu flashen ohne vorher den Flash erase ist wohl keine gute Idee (einmal vergessen); dann muss man wieder den Reset-Pin beim nächsten Flashen auf GND legen.
    -Wenn ich zuerst Flash-Erase machen und dann flashe kann ich auch bei der Remappten blauen Version ohne Reset-PIN mehrmals flashen!


    Fazit: Respekt vor dem in recht kurzen ´Zeit genialen Status ! Schön dass es ein modernes Open-Sources Projekt zum Thema gibt welches massiv weiterentwickelt wird. Denke auf dieser Plattform wird noch einiges möglich werden.


    Wer am Thema aktiv entwickelt kann von mir kostenlose Platinen haben.


    Für die anderen gibts diese gegen etwas Cash im Verkaufen Board.
    (Dieser Thread wird von mir gelegentlich noch etwas schicker gemacht...)

  • Geht denn der Bootloader für "Flashen via USB" (maple) auch auf diesen kleinen Platinen oder nur auf der großen?


    Ich werde später mal ein paar der roten Platinen zum "rumspielen" bestellen. Braucht dann ja auch noch einige Zeit bis das Zeug aus China da ist.


    Von mir auch nochmal die Bitte, doch bitte zum einen den ersten empfangenen Code für "Einschalten" zu lernen als auch dieses Anlernen durch einen "Reset-Pin" rückgängig zu machen um ohne Software den "Einschaltcode" lernen zu können.


    Mein VDR und auch der eines Bekannten steht etwas entfernt vom PC und via Smartphone einen SSH-Client zu bedienen ist nicht so der Bringer. Wesentlich einfacher ist für mich einen Pin kurz auf Ground oder VCC zu ziehen und danach die Fernbedienungs-Taste zu drücken.


    Nachtrag: Ist das die richtige Platine? http://www.ebay.de/itm/161535339141
    Geht sowas auch: http://www.ebay.de/itm/151493918560

  • Nachtrag: Ist das die richtige Platine? http://www.ebay.de/itm/161535339141
    Geht sowas auch: http://www.ebay.de/itm/151493918560



    Der erste sieht so aus wie mein roter und meiner funktioniert. (Der zweite rote ist teurer und vermutlich hat damit niemand Erfahrung)
    Nachteil des Roten: Man muss zwei Drähte anlöten zum Flashen. Das finde ich sehr hässlich.


    Der Blaue ohne Modifikation (2-3 Pins einlöten) läuft ja nur mit Remapping. Ich konnte auch den remappten Blauen auch ohne Reset mehrmals ohne Probleme flashen. Somit der blaue (ohne HW-Modifikation) mein ganz klarer Favorit. Ist nur ein par mm größer.


    Platinen gibt es für die ersten technisch begabten gerne von mir kostenlos. (+Versand auf eure Kosten!)


    Auch habe ich noch ca 4 oder 5 der blauen Programmer übrig, könnte also auch ein paar geprüfte Komplet-Sets zusammenstellen, gegen Kohle...
    (allerdings mit etwas Wartezeit wegen anderen Themen)

  • Zum Bootloader bin ich noch nicht gekommen, vom Platz her ist das aber überhaupt kein Problem, egal auf welcher Platine.


    Das mit dem Reset Pin ist bereits eingebaut, aber so richtig nur für die Entwickler Boards.
    Bei den roten ST-Links sind nur 4 Pins nutzbar, und die sind schon für IR Empfang, Toggle LED, IR Sende LED und Einschalter vergeben. Die Frage wäre also, ob es einen Konsens gibt, auf was man am ehesten verzichtet.
    IR Empfang und Einschalter sind ja wohl in jedem Fall gewünscht, muss also die Toggle LED oder die IR Sende LED dran glauben?


    Für die Roten empfehle ich den Ebay Verkäufer e_goto, der ist billig und ich habe gute Erfahrungen gemacht.
    Der erste Link sieht richtig aus, der zweite ist anders, eventuell hat man da einen Pin mehr, aber ich kenne den Schaltplan nicht.


    Auf dem Blauen hat man 6 nutzbare Pins (von denen aber nur 4 auf Martins Platine landen).
    Wenn man will, kann man bei den Roten auch die beiden Programmier Eingänge nutzen.
    So oder so sind die beiden zusätzlichen Pins aber mit Löten verbunden (außer wenn man einen davon zum Resetten nimmt).


    Also lieber die zusätzlichen Pins benutzen, oder auf Toggle LED bzw IR Sende LED verzichten?


    Ich bitte um eure Meinungen.


    PS Nachdem ich das Alles aufgeschrieben habe, denke ich, einen der Zusätzlichen zu nehmen, wäre das Beste.
    Auch weil dann die Platinen unverändert bleiben können.
    Trotzdem möchte ich gerne wissen, was ihr denkt.

  • Zum Bootloader bin ich noch nicht gekommen, vom Platz her ist das aber überhaupt kein Problem, egal auf welcher Platine.
    Also lieber die zusätzlichen Pins benutzen, oder auf Toggle LED bzw IR Sende LED verzichten?


    PS Nachdem ich das Alles aufgeschrieben habe, denke ich, einen der Zusätzlichen zu nehmen, wäre das Beste.



    Sehe ich auch so. Resetten tut man höchsten ein paar Mal und wenn man es per Tool kann dann reicht die Alternative: "mal eine Sekunde eine Drahtbrücke dranhalten"...
    ((Ich werde sicher nicht den VDR aufschrauben um den Einschaltcode zu ändern...))


    PS: Platinen ändern ist kein Ding. Aber warum sollte man ohne Zwang* eine gekauft Hardware verändern. Daher finde ich am besten die oben angedachten Alternativen...




    *Ein Grund zum herumlöten an den Proggern sehe ich doch noch: man kann im Gegensatz zu einer Stecklösung ca. einen cm Höhe sparen für eine Sandwich Lösung... Aber das macht besonders Sinn wenn man mal per USB / Bootloader flashen könnte...

  • Ich würde auch vorschlagen lieber einen neuen Pin zu nutzen, den man ggf. nachbestücken muss. Das ist überhaupt kein Problem. Da kann man auch mal schnell eine Steckbrücke draufstecken.


    Zumindest für mich ist Löten überhaupt kein Problem. Ich habe damals auch den Full-TS-Mod hinbekommen. Eben mal ein Stück Stiftleiste nachbestücken ist doch Kinderkram ;)



    Für die Roten empfehle ich den Ebay Verkäufer e_goto, der ist billig und ich habe gute Erfahrungen gemacht.


    Entweder ich suche falsch oder dieser Anbieter hat aktuell keine im Angebot.
    http://www.ebay.de/usr/e_goto