Arduino Nano mit NeoPixel LEDs seriell steuern (ausschalten)

  • Hi,

    ich habe einen Arduino Nano per USB an einem Raspberry Pi4 angeschlossen. Der Nano steuert eine kleine LED Lichterkette des Typs NeoPixel. Des Weiteren habe ich beim Pi 4 die "WakeUp" Funktion aktiviert. Mein Problem ist nun, dass wenn ich den Pi herunterfahre, der Arduino wegen des aktivierten WakeUp nicht ausschaltet.

    Ich suche nun eine Möglichkeit den Arduino irgendwie auszuschalten, ohne den vorhanden Sketch auf dem Arduino zu überschreiben. Gibt es da eine Möglichkeit?

    Danke und Gruß

    Obelix

    Meine VDRs

    VDR1: ASUS H81-GAMER Gaming | Intel® Core™ i3-4130 | GeForce GT 1030 | yaVDR Ansible | Mystique SaTiX-S2 Dual | GraphTFT mit Elecrow 10,1-Zoll-IPS-Monitor | ACPI Wakeup | Atric IR-Einschalter Rev.5
    VDR2: HP DC7700p | GeForce 610 | easyVDR 2.5 - VDR 2.2.0 | TeVii S464 V2.0 | ST-Link v2 IRMP-STM32 WakeUp

    Test VDR: Fujitsu Esprimo D756 E85+ Intel Core i5-6500 | Intel HD Graphics 530 | easyVDR 5 / yaVDR ansible | ST-Link v2 IRMP-STM32 WakeUp | Cine S2 V6.2

  • Hi,

    ich nutze den Pi4 mit libreelec und suche auch nach einer Möglichkeit ihn vernünftig abzuschalten.

    Nach langem hin und her, habe ich grade einen Remotepi bestellt. Der macht den Pi komplett stromlos.

    Natürlich nur sinnvoll, wenn er auch per Fernbedienung bedient werden soll.

    Gruß Jan

    1:Dell PoweEdge T20; Xeon E3-1225 v3; 32GB RAM; Proxmox 5.4; MLD 5.4 als VDR-Server; 2 x Cine S2;
    2:Intel NUC i3 Passiv; 4GB RAM; 120GB SSD; easyvdr 3.5 als client; Harmony Hub

    2:Intel NUC i5 Passiv; 4GB RAM; 120GB SSD; easyvdr 3.5 als client; Harmony Hub
    3:Raspberry Pi 3B; MLD

  • Ich suche nun eine Möglichkeit den Arduino irgendwie auszuschalten, ohne den vorhanden Sketch auf dem Arduino zu überschreiben. Gibt es da eine Möglichkeit?

    Du könntest den Sketch für den Arduino so modifizieren, dass es extra Steuerbefehle für LEDs an/aus gibt und diese Befehle beim Booten bzw. Shutdown senden.

    Edit: ok, dafür muss man den Sketch überschreiben...

    Meine VDRs

    VDR 1: Point of View Ion-330-1, 2x Sundtek MediaTV Pro (DVB-C), Atric IR-Einschalter Rev.5, Ubuntu 18.04 (yavdr-ansible)
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    VDR 3: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 18.04 (yavdr-ansible), VDR 2.4.1, CIR-Empfänger
    Client 1: Raspberry Pi 2, Arch Linux ARM, VDR 2.3.8
    vdr-epg-daemon auf Cubietruck mit 32 GB SSD, Arch Linux ARM

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich suche nun eine Möglichkeit den Arduino irgendwie auszuschalten, ohne den vorhanden Sketch auf dem Arduino zu überschreiben. Gibt es da eine Möglichkeit?

    ja, siehe hier --> ein weiterer IR Einschalter für den RPI

    stm32 Anschluss weglassen und anstelle vom PI den Arduino anschließen. Die GPIO Pins sind ja beim Power-Off vom PI aus und schalten dann den Arduino ab. Quasi ein Arduino Slave vom RPI.

  • Du könntest den Sketch für den Arduino so modifizieren, dass es extra Steuerbefehle für LEDs an/aus gibt und diese Befehle beim Booten bzw. Shutdown senden.

    Edit: ok, dafür muss man den Sketch überschreiben...

    So stelle ich mir das vor. Modifizieren des Sketches sollte ja kein Problem sein. Ich will nur nicht jedesmal den Code für eine Änderung des Status komplett austauschen. Ich weiß nur nicht wie. Hier mal mein Sketch:

    Teile des Codes habe ich vom Beispiel How to control an LED pixel strip (WS2812B) with an Arduino and the FastLED library übernommen.

    Meine VDRs

    VDR1: ASUS H81-GAMER Gaming | Intel® Core™ i3-4130 | GeForce GT 1030 | yaVDR Ansible | Mystique SaTiX-S2 Dual | GraphTFT mit Elecrow 10,1-Zoll-IPS-Monitor | ACPI Wakeup | Atric IR-Einschalter Rev.5
    VDR2: HP DC7700p | GeForce 610 | easyVDR 2.5 - VDR 2.2.0 | TeVii S464 V2.0 | ST-Link v2 IRMP-STM32 WakeUp

    Test VDR: Fujitsu Esprimo D756 E85+ Intel Core i5-6500 | Intel HD Graphics 530 | easyVDR 5 / yaVDR ansible | ST-Link v2 IRMP-STM32 WakeUp | Cine S2 V6.2

  • ja, siehe hier --> ein weiterer IR Einschalter für den RPI

    stm32 Anschluss weglassen und anstelle vom PI den Arduino anschließen. Die GPIO Pins sind ja beim Power-Off vom PI aus und schalten dann den Arduino ab. Quasi ein Arduino Slave vom RPI.

    Das geht leider nicht. Der STM32 wird ebenfalls benötigt. Also der STM32 und der Arduino Nano befinden sich am Pi. Der STM32 wird für den Lirc und zum einschalten benötigt. Der Nano für den NeoPixel. Die Gesamtkonstruktion werde ich demnächst hier veröffentlichen.

    Meine VDRs

    VDR1: ASUS H81-GAMER Gaming | Intel® Core™ i3-4130 | GeForce GT 1030 | yaVDR Ansible | Mystique SaTiX-S2 Dual | GraphTFT mit Elecrow 10,1-Zoll-IPS-Monitor | ACPI Wakeup | Atric IR-Einschalter Rev.5
    VDR2: HP DC7700p | GeForce 610 | easyVDR 2.5 - VDR 2.2.0 | TeVii S464 V2.0 | ST-Link v2 IRMP-STM32 WakeUp

    Test VDR: Fujitsu Esprimo D756 E85+ Intel Core i5-6500 | Intel HD Graphics 530 | easyVDR 5 / yaVDR ansible | ST-Link v2 IRMP-STM32 WakeUp | Cine S2 V6.2

    Edited 2 times, last by obelix: Rechtschreibung (January 27, 2020 at 7:04 AM).

  • Hi,

    ich nutze den Pi4 mit libreelec und suche auch nach einer Möglichkeit ihn vernünftig abzuschalten.

    Nach langem hin und her, habe ich grade einen Remotepi bestellt. Der macht den Pi komplett stromlos.

    Natürlich nur sinnvoll, wenn er auch per Fernbedienung bedient werden soll.

    Gruß Jan

    Das mache ich damit: Richtiger An-/Ausschalter für den Raspberry Pi. So geht’s Dazu ein STM32 wie im Thread ein weiterer IR Einschalter für den RPI beschrieben.

    Meine VDRs

    VDR1: ASUS H81-GAMER Gaming | Intel® Core™ i3-4130 | GeForce GT 1030 | yaVDR Ansible | Mystique SaTiX-S2 Dual | GraphTFT mit Elecrow 10,1-Zoll-IPS-Monitor | ACPI Wakeup | Atric IR-Einschalter Rev.5
    VDR2: HP DC7700p | GeForce 610 | easyVDR 2.5 - VDR 2.2.0 | TeVii S464 V2.0 | ST-Link v2 IRMP-STM32 WakeUp

    Test VDR: Fujitsu Esprimo D756 E85+ Intel Core i5-6500 | Intel HD Graphics 530 | easyVDR 5 / yaVDR ansible | ST-Link v2 IRMP-STM32 WakeUp | Cine S2 V6.2

  • Hmmmm :/ So richtig Blicke ich es gerade nicht... :whistling: Ich habe den Nano nur am PI, da ich gehofft hatte, den Nano auch darüber steuern zu können. Jo, ich bin bezüglich Arduino blutiger Anfänger :whistling:.

    Neue Idee: ich steuere den Lüfter wie im Thread Raspberry Pi 4B Unterstützung von Uwe vorgeschlagen: Raspberry Pi: Lüfter mit NPN Transistor ein- und ausschalten. Wenn ich den Nano nicht per USB Anschließe, sondern zusätzlich zu den 5 Volt vom Lüfter, dann müsste das doch auch gehen, oder? Man würde über den NPN Transistor neben dem Lüfter auch die LEDs schalten..... :/

    Meine VDRs

    VDR1: ASUS H81-GAMER Gaming | Intel® Core™ i3-4130 | GeForce GT 1030 | yaVDR Ansible | Mystique SaTiX-S2 Dual | GraphTFT mit Elecrow 10,1-Zoll-IPS-Monitor | ACPI Wakeup | Atric IR-Einschalter Rev.5
    VDR2: HP DC7700p | GeForce 610 | easyVDR 2.5 - VDR 2.2.0 | TeVii S464 V2.0 | ST-Link v2 IRMP-STM32 WakeUp

    Test VDR: Fujitsu Esprimo D756 E85+ Intel Core i5-6500 | Intel HD Graphics 530 | easyVDR 5 / yaVDR ansible | ST-Link v2 IRMP-STM32 WakeUp | Cine S2 V6.2

  • Man würde über den NPN Transistor neben dem Lüfter auch die LEDs schalten.....

    mit dem BC 547 wird das leistungsmäßig wohl nicht gehen mit dem Strip. je nach Länge wird der wohl einige 100mA brauchen. Nimm doch zum schalten einen kleinen TTL-FETund gut ist es.

  • mit dem BC 547 wird das leistungsmäßig wohl nicht gehen mit dem Strip. je nach Länge wird der wohl einige 100mA brauchen. Nimm doch zum schalten einen kleinen TTL-FETund gut ist es.

    Verstehe, aber dann bräuchte ich allerdings Unterstützung..... :saint: So tief bin ich da nicht in dem Thema drin....

    Meine VDRs

    VDR1: ASUS H81-GAMER Gaming | Intel® Core™ i3-4130 | GeForce GT 1030 | yaVDR Ansible | Mystique SaTiX-S2 Dual | GraphTFT mit Elecrow 10,1-Zoll-IPS-Monitor | ACPI Wakeup | Atric IR-Einschalter Rev.5
    VDR2: HP DC7700p | GeForce 610 | easyVDR 2.5 - VDR 2.2.0 | TeVii S464 V2.0 | ST-Link v2 IRMP-STM32 WakeUp

    Test VDR: Fujitsu Esprimo D756 E85+ Intel Core i5-6500 | Intel HD Graphics 530 | easyVDR 5 / yaVDR ansible | ST-Link v2 IRMP-STM32 WakeUp | Cine S2 V6.2

  • So stelle ich mir das vor. Modifizieren des Sketches sollte ja kein Problem sein. Ich will nur nicht jedesmal den Code für eine Änderung des Status komplett austauschen. Ich weiß nur nicht wie. Hier mal mein Sketch:

    Teile des Codes habe ich vom Beispiel How to control an LED pixel strip (WS2812B) with an Arduino and the FastLED library übernommen.

    Versuch es mal so - damit solltest du über die serielle Verbindung mit "0" und "1" (also z.B. echo 1 > /dev/ttyACM0 - entweder als root oder als Mitglied in der Gruppe dialout) die LEDs aus- bzw. wieder einschalten können:

    Meine VDRs

    VDR 1: Point of View Ion-330-1, 2x Sundtek MediaTV Pro (DVB-C), Atric IR-Einschalter Rev.5, Ubuntu 18.04 (yavdr-ansible)
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    VDR 3: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 18.04 (yavdr-ansible), VDR 2.4.1, CIR-Empfänger
    Client 1: Raspberry Pi 2, Arch Linux ARM, VDR 2.3.8
    vdr-epg-daemon auf Cubietruck mit 32 GB SSD, Arch Linux ARM

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Versuch es mal so - damit solltest du über die serielle Verbindung mit "0" und "1" (also z.B. echo 1 > /dev/ttyACM0 - entweder als root oder als Mitglied in der Gruppe dialout) die LEDs aus- bzw. wieder einschalten können:

    Bei mir wird für den Arduino das Device /dev/ttyUSB0 angelegt. Wenn ich einen echo Befehl darauf absetze, dann blinkt die rote LED vom Arduino kurz auf aber sonst passiert nichts.

    Meine VDRs

    VDR1: ASUS H81-GAMER Gaming | Intel® Core™ i3-4130 | GeForce GT 1030 | yaVDR Ansible | Mystique SaTiX-S2 Dual | GraphTFT mit Elecrow 10,1-Zoll-IPS-Monitor | ACPI Wakeup | Atric IR-Einschalter Rev.5
    VDR2: HP DC7700p | GeForce 610 | easyVDR 2.5 - VDR 2.2.0 | TeVii S464 V2.0 | ST-Link v2 IRMP-STM32 WakeUp

    Test VDR: Fujitsu Esprimo D756 E85+ Intel Core i5-6500 | Intel HD Graphics 530 | easyVDR 5 / yaVDR ansible | ST-Link v2 IRMP-STM32 WakeUp | Cine S2 V6.2

  • Prinzipiell ist Deine Schaltung Arduino Nano mit NeoPixel LEDs seriell steuern (ausschalten) schon das was Du brauchst. Zwei Dinge stehen dem jedoch entgegen. Zum einen ist der Transistor BC547 zu schwach für größere Lasten und zum zweiten brauchst Du einen High-Side Switch.

    Der BC547 in deiner Lüfter Schaltung ist ein Low-Side Switch, das heißt, er schaltet den Verbraucher (hier Lüfter) nach Masse ab. Den Lüfter stört so was nicht, jedoch solche Dinge wie Arduino mit Massebezug würden so nicht arbeiten können. Hier muss man die 5 Volt abschalten.

    Das macht dann ein High-Side Switch:

    Grundsätzlich ist das die schon von früher gepostete Schaltung. Da ich aber davon ausgehe, das Du nicht mit SMD bauen willst, habe ich hier THT Bauteile genommen, also alles was man aufs Steckbrett oder Lochraster bauen kann.

    Schaltungsbeschreibung:

    Über JP5 Pin2 bekommt die Schaltung das vom RPI Pin 14 Schaltsignal (so wie gewohnt). Bei High Pegel dieses Signales schaltet T1 durch und zieht dabei das Gate von Q1 nach Masse. Q1 ist ein P-Channel Mosfet und der schaltet dann durch.

    JP1 ist der 5Volt Anschluss, der zum Netzteil oder sonstiger Stromversorgung geht. JP2 ist die Masse vom Netzteil. JP3 ist der geschaltete 5Volt Ausgang, JP4 der Masse Ausgang.

    Der Schalttransistor ist ein TTL FET, der schon bei 2-4Volt Ugs leitend wird. Er kann bis zu 74A schalten, jedoch dies nur mit höherer Ugs von 10Volt.

    Bei hier angenommenen 4,5Volt vom T1 sind es aber sicher 10A, die sollten für viele Fälle ausreichen. Wenn man wirklich die 10 Ampere schalten will, sollte man dem Q1 aber ein kleines Kühlblech spendieren (Rdson > 0,02 Ω )

    Den BC 547 hast Du sicher schon oder noch einen über,

    den IRF4905 gibt es eigentlich überall, Reichelt und co, Pollin, Conrad usw. Dort sind aber die Versandkosten unverhältnismäßig hoch, günstiger kommst Du weg, wenn du den beim Chinamann kaufst , bsw 5 Stück hier für 1,26 € --> https://www.ebay.de/itm/5PCS-IRF49…JsAAOSw7p1aqd~4

    man muss dann nur geduldig sein und 3 Wochen warten.

    Die Widerstände sind vom Wert unkritisch, man kann durchaus auch andere Werte nehmen, R2 sollte vielleicht nicht kleiner werden, wegen Schwingneigung und der Charge Kapazität vom Gate Q1

    Hier noch zwei Bilder zum Anschließen des Mosfets:

    ..

  • Danke für die Schaltung und Erklärung. Ich habe das Glück, noch auf einen kleine Elektronikladen "um die Ecke" zugreifen zu können. Dort fahre ich die Tage mal vorbei.

    Meine VDRs

    VDR1: ASUS H81-GAMER Gaming | Intel® Core™ i3-4130 | GeForce GT 1030 | yaVDR Ansible | Mystique SaTiX-S2 Dual | GraphTFT mit Elecrow 10,1-Zoll-IPS-Monitor | ACPI Wakeup | Atric IR-Einschalter Rev.5
    VDR2: HP DC7700p | GeForce 610 | easyVDR 2.5 - VDR 2.2.0 | TeVii S464 V2.0 | ST-Link v2 IRMP-STM32 WakeUp

    Test VDR: Fujitsu Esprimo D756 E85+ Intel Core i5-6500 | Intel HD Graphics 530 | easyVDR 5 / yaVDR ansible | ST-Link v2 IRMP-STM32 WakeUp | Cine S2 V6.2

  • Dort fahre ich die Tage mal vorbei.

    wenn der 4905 nicht vorhanden sein sollte, frage dort mal nach einem P-Channel TTL-Fet mit möglichst geringem Rdson. Es gibt davon jede Menge, irgendwas werden die schon da haben.

  • Ich muss doch über den Chinamann gehen. Der Elektronikladen hat keine Mosfets da. Die Anzahl der Varianten wäre zu groß....

    seahawk1986: Unabhängig von der Argus Schaltung, hast du eine Idee, wieso das mit dem Befehl absetzten über Seriell nicht funktioniert? Ich finde dein Sketch für die Steuerung sehr interessant. Man könnte da LEDs je nach Zustand vom Pi / VDR steuern.

    Ich werde mein Projekt jetzt mal fertig zusammenstellen, bei Thingiverse hochladen und dann hier im Forum posten.... Vielleicht habt ihr ja noch Ideen....

    Meine VDRs

    VDR1: ASUS H81-GAMER Gaming | Intel® Core™ i3-4130 | GeForce GT 1030 | yaVDR Ansible | Mystique SaTiX-S2 Dual | GraphTFT mit Elecrow 10,1-Zoll-IPS-Monitor | ACPI Wakeup | Atric IR-Einschalter Rev.5
    VDR2: HP DC7700p | GeForce 610 | easyVDR 2.5 - VDR 2.2.0 | TeVii S464 V2.0 | ST-Link v2 IRMP-STM32 WakeUp

    Test VDR: Fujitsu Esprimo D756 E85+ Intel Core i5-6500 | Intel HD Graphics 530 | easyVDR 5 / yaVDR ansible | ST-Link v2 IRMP-STM32 WakeUp | Cine S2 V6.2

  • seahawk1986: Unabhängig von der Argus Schaltung, hast du eine Idee, wieso das mit dem Befehl absetzten über Seriell nicht funktioniert? Ich finde dein Sketch für die Steuerung sehr interessant. Man könnte da LEDs je nach Zustand vom Pi / VDR steuern.

    Ich weiß nicht genau, ob die FastLED Bilbiothek da irgendwelche Besonderheiten hinsichtlich der genutzten Pins hat - versuch mal ein Minimalbeispiel, bei dem du nur eine LED schaltest (falls dein Arduino keine onboard auf Pin 13 hat, kannst du auch eine über einen Vorwiderstand mit ca. 220 Ohm an einen anderen Pin hängen):

    Dann öffnest du den seriellen Monitor deiner Arduino-IDE und schickst dem Board jeweils eine 0 oder 1. Im Erfolgsfall solltest du jeweils eine Meldung bekommen. Wenn das klappt, schau mal, ob das mit dem oben gezeigten Shell-Befehl geht - falls nicht, könnte man Screen oder ein kleines Python-Skript mit pyserial nutzen, um die Schnittstelle mit den korrekten Einstellungen zu öffnen.

    Meine VDRs

    VDR 1: Point of View Ion-330-1, 2x Sundtek MediaTV Pro (DVB-C), Atric IR-Einschalter Rev.5, Ubuntu 18.04 (yavdr-ansible)
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    VDR 3: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 18.04 (yavdr-ansible), VDR 2.4.1, CIR-Empfänger
    Client 1: Raspberry Pi 2, Arch Linux ARM, VDR 2.3.8
    vdr-epg-daemon auf Cubietruck mit 32 GB SSD, Arch Linux ARM

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich weiß nicht genau, ob die FastLED Bilbiothek da irgendwelche Besonderheiten hinsichtlich der genutzten Pins hat - versuch mal ein Minimalbeispiel, bei dem du nur eine LED schaltest (falls dein Arduino keine onboard auf Pin 13 hat, kannst du auch eine über einen Vorwiderstand mit ca. 220 Ohm an einen anderen Pin hängen):

    Dann öffnest du den seriellen Monitor deiner Arduino-IDE und schickst dem Board jeweils eine 0 oder 1. Im Erfolgsfall solltest du jeweils eine Meldung bekommen. Wenn das klappt, schau mal, ob das mit dem oben gezeigten Shell-Befehl geht - falls nicht, könnte man Screen oder ein kleines Python-Skript mit pyserial nutzen, um die Schnittstelle mit den korrekten Einstellungen zu öffnen.

    Wenn ich im seriellen Monitor der Arduino-IDE 0 oder 1 sende, dann funktioniert es. Also auch mit dem Sketch weiter oben. Ist nur die Frage, wieso es nicht mit echo in der Konsole geht.....

    Meine VDRs

    VDR1: ASUS H81-GAMER Gaming | Intel® Core™ i3-4130 | GeForce GT 1030 | yaVDR Ansible | Mystique SaTiX-S2 Dual | GraphTFT mit Elecrow 10,1-Zoll-IPS-Monitor | ACPI Wakeup | Atric IR-Einschalter Rev.5
    VDR2: HP DC7700p | GeForce 610 | easyVDR 2.5 - VDR 2.2.0 | TeVii S464 V2.0 | ST-Link v2 IRMP-STM32 WakeUp

    Test VDR: Fujitsu Esprimo D756 E85+ Intel Core i5-6500 | Intel HD Graphics 530 | easyVDR 5 / yaVDR ansible | ST-Link v2 IRMP-STM32 WakeUp | Cine S2 V6.2

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!