Inhaltsverzeichnis:

Ein von einem Raspberry Pi gesteuertes Atemlicht - Gunook
Ein von einem Raspberry Pi gesteuertes Atemlicht - Gunook

Video: Ein von einem Raspberry Pi gesteuertes Atemlicht - Gunook

Video: Ein von einem Raspberry Pi gesteuertes Atemlicht - Gunook
Video: Smartphone-gesteuertes Kettenfahrzeug; Raspberry Pi; MIT AI2; webgesteuert; MG Jever se4 2024, Juli
Anonim
Ein atmendes Licht, das von einem Raspberry Pi. gesteuert wird
Ein atmendes Licht, das von einem Raspberry Pi. gesteuert wird

Das hier beschriebene "Atemübungslicht" ist ein einfaches und relativ kostengünstiges pulsierendes Licht, das Sie bei Ihren Atemübungen unterstützen und Ihnen helfen kann, einen konstanten Atemrhythmus zu halten. Es kann auch z. B. als beruhigendes Nachtlicht für Kinder. Im aktuellen Stadium ist es eher ein funktionierender Prototyp.

Sie können es auch als kostengünstiges und einfach zu bauendes Beispiel für "Physical Computing" mit einem Raspberry Pi verwenden, z. B. als Lehrprojekt auf Einsteigerniveau zu verwenden, hier hat man analoge (Drehpotentiometer) und digitale Eingänge (Drucktaster) sowie digitalen (LED) und PWM-Ausgang (LED-Ketten), und die Auswirkungen von Änderungen sind direkt sichtbar.

Das Licht durchläuft sich wiederholende Kreise, die aus vier Phasen bestehen: einem Übergang von Grün (oben) zu Rot (unten), einer Nur-Rot-Phase, einem Übergang von Rot zu Grün und einer Nur-Grün-Phase. Die Länge dieser Phasen wird durch Konstanten definiert, die durch Potentiometer verändert werden können. Der Vorgang kann durch Drücken von Drucktasten gestartet, angehalten, fortgesetzt und gestoppt werden. LEDs zeigen die aktuelle Phase an. Es basiert auf dem „Firefly Light“-Beispiel von Pimoroni (siehe hier). Es benötigt ähnlich wie das „Firefly Light“einen Raspberry Pi (Zero), den Pimoroni Explorer pHAT (oder HAT) und zwei IKEA SÄRDAL LED-Lichterketten. Letztere werden an die beiden PMW/Motor-Ports des pHAT angeschlossen. Anstatt ein Glas zu verwenden, habe ich die LEDs in einen IKEA-Bilderrahmen gelegt. Ich habe versucht, das ursprüngliche Python-Skript „Firefly Light“ein wenig zu optimieren, eine optionale Sinusfunktion für die Helligkeits-/Pulsbreitenänderungen implementiert und zwei „Hold“-Phasen zwischen den Dimmphasen eingeführt. Während ich die Parameter veränderte, um ein angenehmeres Lichtmuster zu finden, stellte ich fest, dass das Gerät hilfreich sein kann, um ein sehr klar definiertes, regelmäßiges Atemmuster zu unterstützen. Daher kann dieses „atmende Licht“für einige von euch hilfreich für Meditations- oder Trainingszwecke sein. Da der Explorer pHAT über vier digitale und vier analoge Eingänge verfügt, lassen sich über Schiebe- oder Drehpotentiometer bis zu vier verschiedene Parameter sehr einfach regeln und über Drucktaster Start-/Restart-/Stopp-Funktionen für die Beleuchtung einleiten. Dadurch können Sie das Gerät nutzen und die Parameter auf Ihre Bedürfnisse optimieren, ohne dass ein Monitor an den Pi angeschlossen werden muss.

Darüber hinaus verfügt der Explorer pHAT über vier digitale Ausgänge, die das Hinzufügen von LEDs oder Summern ermöglichen, sowie zwei 5V- und zwei Masseanschlüsse und zwei PWM-Ausgänge für Motoren oder ähnliche Geräte. Bitte stellen Sie sicher, dass Sie die richtigen Widerstände verwenden, um die Spannung für Ihre LEDs zu reduzieren.

Die Python-Bibliothek Explorer pHAT von Pimoroni macht es extrem einfach, all diese I/O-Ports zu steuern.

In dieser Anleitung werden Gerätevarianten mit 0, 2 und 4 Potentiometern und Tasten beschrieben. Wählen Sie diejenige aus, die Ihren Bedürfnissen entspricht.

Um das Gerät autark zu betreiben, kann man entweder ein Netzteil verwenden oder die Kombination aus einem Pimoroni LiPo Shim und einem LiPo Akku, wie beim "Firefly Light" beschrieben.

Aktualisierte Versionen 28. Dez. 2018: Version 'vier Potentiometer und vier Drucktasten' hinzugefügt. Dez. 30: Code für 4-Poti-Version und Fritzing-Bilder hinzugefügt.

Schritt 1: Verwendete / benötigte Materialien

Verwendete / benötigte Materialien
Verwendete / benötigte Materialien
Verwendete / benötigte Materialien
Verwendete / benötigte Materialien
Verwendete / benötigte Materialien
Verwendete / benötigte Materialien

- Raspberry Pi Zero (4,80 GBP bei Pimoroni, UK) und eine Micro-SD-Karte (>= 8 GB) mit Raspian

- Pimoroni Explorer pHAT (10 GBP bei Pimoroni, UK). Optional: ein einreihiger Header, Überbrückungskabel

- IKEA SÄRDAL LED-Kettenlichter mit 12 LEDs (2 x, je 3,99 € bei IKEA Deutschland), oder ähnliche 3-5V LED-Ketten.- IKEA RIBBA Bilderrahmen (13 x 18 cm, 2,49 € bei IKEA Deutschland).

- Ein Stück PU-Schaum (2 x 18 x 13,5 cm), um die LEDs zu halten. Alternativ kann Styropor verwendet werden.

- Ein Stück undurchsichtiger Kunststoff (18 x 13,5 cm), das als Diffusor dient.

- Zwei Blätter farbiges Transparentpapier (je 9 x 13,5 cm). Ich habe Rot und Grün verwendet.

- Ein Stück dünne, sehr lichtundurchlässige Kunststofffolie (18 x 13,5 cm), die als äußerer Schirm dient. Ich habe eine dünne weiße Polycarbonatplatte verwendet. Optional, für die abstimmbare Version:

Zur Einstellung des Rampen-Timings und der Plateaudauer oder alternativ anderer Parameter wie Helligkeit.- 10, 20 oder 50 kOhm Potentiometer (bis zu vier, ich habe zwei 10 kOhm bzw. vier 50 Ohm verwendet).

Als Start-/Stopp-/Pause-/Fortsetzen-Tasten: - Drucktasten (bis zu vier, ich habe vier oder zwei verwendet)

Als Indikatoren für die Phasen des Kreises: - Farbige LEDs und die erforderlichen Widerstände (abhängig von den Eigenschaften der verwendeten LEDs).

  1. ca. 140 Ohm für 5,2 -> 2, 2 V (gelb, orange, rot; einige grüne LEDs),
  2. ca. 100 Ohm für 5,3 -> 3,3 V (teilweise grüne; blaue, weiße LEDs)

- Überbrückungskabel und ein Steckbrett

Optional, für eine batteriebetriebene Version:

  • 5V Micro-USB-Netzteil, oder
  • Pimoroni Zero LiPo Shim und ein LiPo Akku

Schritt 2: Lazout und Montage

Lazout und Montage
Lazout und Montage
Lazout und Montage
Lazout und Montage
Lazout und Montage
Lazout und Montage

Montieren Sie den Explorer pHAT wie vom Hersteller beschrieben. Ich habe eine einreihige Buchsenleiste für den vereinfachten Anschluss von Überbrückungskabeln an die I/O-Ports des pHAT hinzugefügt. Richten Sie Ihren Pi ein und installieren Sie die Pimoroni-Bibliothek für den Explorer HAT/pHAT, wie von Pimoroni beschrieben. Schalten Sie den Pi aus und befestigen Sie den pHAT am Pi. Entfernen Sie die Akkus von den LED-Ketten, indem Sie die Drähte durchschneiden und das Ende der Drähte verzinnen. Schneiden Sie zwei 2x männliche Starthilfekabel in der Mitte ab, verzinnen Sie die Enden der Drähte. Löten Sie die Überbrückungskabel an die LED-Ketten und isolieren Sie die Lötstellen entweder mit Klebeband oder Schrumpfschlauch. Prüfen Sie vor dem Löten, welche der Drähte mit Plus- oder Masseanschlüssen verbunden werden müssen und markieren Sie diese entsprechend. Ich habe Überbrückungsdrähte mit verschiedenen Farben verwendet. Schneiden Sie den Schaumstoff zu, um die LEDs, den Diffusor und die Bildschirmfolien auf die entsprechende Größe zu halten. Markieren Sie auf der LED-Halteplatte die Positionen, an denen die LEDs platziert werden sollen, und stanzen Sie 3-5 mm Löcher in den Schaumstoff. Setzen Sie dann die 24 LEDs an den angegebenen Positionen ein. Legen Sie die farbigen Papiere und Diffusorplatten auf die LED-Platte (siehe Bilder), und platzieren Sie den Rahmen über der Packung. Fixieren Sie die Schaumstoffschichten im Rahmen, z. B. mit Klebeband. Schließen Sie die LED-Streifenkabel an die „Motor“-Anschlüsse des Explorer pHAT an. Platzieren Sie bei der abstimmbaren Version Potentiometer, Taster, Kontroll-LEDs (und/oder Summer) und Widerstände auf dem Steckbrett und verbinden Sie diese mit den entsprechenden Anschlüssen am Explorer pHAT.

Starten Sie Ihren Pi und installieren Sie die erforderlichen Bibliotheken, wie auf der Pimoroni-Website beschrieben, und führen Sie dann das bereitgestellte Python 3-Skript aus. Wenn eine der LED-Ketten nicht funktioniert, ist sie möglicherweise in der falschen Richtung angeschlossen. Dann können Sie entweder die Plus-/Minus-Anschlüsse am pHAT ändern oder eine Änderung im Programm, z. B. ändern Sie „eh.motor.one.backwards()“in „ … forwards()“.

Im Anhang finden Sie Skripte mit festen Einstellungen, die Sie innerhalb des Programms ändern können und ein Beispiel, in dem Sie einige der Einstellungen mit Potentiometern ändern und den Lichtzyklus über Drucktasten starten und stoppen können. Es sollte nicht allzu schwierig sein, die Skripte an das eigene Layout des „Atemlichts“anzupassen.

Schritt 3: Die Python-Skripte

Die Python-Bibliothek von Pimoroni für den Explorer HAT/pHAT macht es extrem einfach, die an die I/O-Ports der HATs angeschlossenen Komponenten zu adressieren. Zwei Beispiele: "eh.two.motor.backwards(80)" treibt das am PWM/Motor-Port 2 angeschlossene Gerät mit 80% maximaler Intensität in Rückwärtsrichtung an, "eh.output.three.flash()" macht eine LED zugeschaltet um Port Nummer drei auszugeben, blinkt, bis es gestoppt wird.py", wo alle vier Parametereinstellungen im Programm geändert werden müssen. Außerdem eine Version namens "Atemlicht var lin cosin.py", bei der die Länge der beiden Dimmphasen über zwei Potentiometer eingestellt werden kann und die aufwendigste Version "Atemlicht var lin cosin3.py" für die vier Potentiometer & Taster-Version. Die Programme sind in Python 3 geschrieben.

In allen Fällen kann der Zyklusvorgang über zwei Drucktasten ausgelöst und gestoppt werden, bei der Vier-Tasten-Version können Sie den Vorgang auch unterbrechen und neu starten. Zusätzlich können an die digitalen Ausgänge vier (farbige) LEDs angeschlossen werden, die die jeweiligen Phasen anzeigen. Ein Zyklus des Gerätes besteht aus vier Phasen:

- die "Inhale"-Phase, in der die oberen LEDs niedrig gedimmt werden und die unteren LEDs die Intensität erhöhen

- die "Atem anhalten"-Phase, in der die oberen LEDs ausgeschaltet und die unteren LEDs auf Maximum eingestellt sind

- die "Ausatmungsphase", in der die unteren LEDs niedrig gedimmt werden und die oberen LEDs die Intensität erhöhen

- die Phase "ausgeatmet bleiben", in der die unteren LEDs ausgeschaltet sind und die oberen LEDs maximal leuchten.

Die Länge aller vier Phasen wird durch einen individuellen numerischen Parameter definiert, der entweder im Programm fest vorgegeben und/oder über ein Potentiometer eingestellt werden kann.

Ein fünfter Parameter definiert die maximale Intensität. Hier können Sie die maximale Helligkeit der LEDs einstellen, was praktisch sein kann, wenn Sie es als Nachtlicht verwenden möchten. Außerdem kann es Ihnen helfen, den Dimmprozess zu verbessern, da ich den Eindruck habe, dass es schwer ist, einen Unterschied zwischen 80 und 100 % Intensität zu sehen.

Ich habe eine optionale (Co-)Sinus-Funktion zum Erhöhen/Verringern der Helligkeit hinzugefügt, da sie eine glattere Verbindung zwischen den Phasen ergibt. Probieren Sie gerne andere Funktionen aus. Z. B. Sie können die Unterbrechungen beseitigen und zwei verschiedene (komplexe) Sinusfunktionen für beide LED-Ketten verwenden und Frequenz und Amplitude über Potentiometer einstellen.

# Die "atmende" Lampe: Version mit zwei Tasten und zwei Potentiometern

# eine Modifikation des Firefly-Beispiels für den Pimoroni Explorer pHAT # hier: Sinoid-Erhöhung/Abnahme von Motor-/PWM-Werten # für Linearfunktion Unmute Linear- und Mute-Cosinus-Funktion # Diese Version "var" liest analoge Eingänge, überschreibt vordefinierte Einstellungen # liest digitaler Eingang, Schaltflächen zum Starten und Stoppen """ zum Starten beim Einschalten des Pi können Sie verwenden Cron: Cron ist ein Unix-Programm, das verwendet wird, um Jobs zu planen, und es verfügt über eine praktische @reboot-Funktion, mit der Sie ein Skript ausführen können wenn Ihr Pi bootet. Öffnen Sie ein Terminal und geben Sie crontab -e ein, um Ihre crontab zu bearbeiten. Scrollen Sie bis zum Ende der Datei, über alle Zeilen hinweg, die mit # beginnen, und fügen Sie die folgende Zeile hinzu (vorausgesetzt, Ihr Code ist bei /home/pi/firefly.py): @reboot sudo python /home/pi/filename.py & Schließen und speichern Sie Ihre Crontab (wenn Sie Nano verwenden, drücken Sie Strg-x, y und die Eingabetaste, um zu beenden und zu speichern). """ Importzeit Explorerhat als eh importieren mathematische Konstantenwerte importieren #sinus xmax = 316 step = 5 # step width, zB 315/5 ergibt 63 Schritte/Zyklus start_button = 0 # dies definiert den Zustand eines an Eingang Nr. 1 angeschlossenen Tasters stop_button = 0 # dies definiert den Zustand eines an Eingang Nr. 3 angeschlossenen Tasters pause_1 = 0.02 # setzt die Länge der Pausen innerhalb von Schritten in der "Einatem"-Phase, dadurch Rampenrate und Dauer pause_2 = 0,04 # setzt "Ausatmen"-Rampenrate pause_3 = 1,5 # Pause zwischen Ein- und Ausatemphase (einatmen) pause_4 = 1,2 # Pause am Ende der Ausatmung Phase (ausgeatmet bleiben) max_intens = 0.9 # maximale Intensität/Helligkeit max_intens_100= 100*max_intens # gleich in % # Kann den "Atmungs"-Eindruck von LEDs optimieren und Flackern reduzieren. l_cosin= # Liste mit Cosinus-abgeleiteten Werten (100 >= x >=0) l_lin= # Liste mit linearen Werten (100 >= x >=0) # Cosinus-Funktionsliste für i im Bereich (0, 316.) generieren, 3): # 315 ist nahe bei Pi*100, 105 Schritte # print (i) n_cosin = [(((math.cos (i/100))+1)/2)*100] #generate value # print (n_cosin) l_cosin = l_cosin + n_cosin #add value to list # print (l_cosin) # lineare Liste für i im Bereich (100, -1, -1) generieren: # von 100 auf null herunterzählen n_lin= l_lin=l_lin + n_lin # print (l_lin) # zeigt eine Bohrliste print () print ("""Um die Lichtzyklen zu starten, drücken Sie die Taste "Start" (Input One)""") print () print ("""Zum Stoppen) das Licht, drücken und halten Sie die "Stop"-Taste (Input Three)""") print () # warten Sie, bis die Start-Taste gedrückt wird, während (start_button==0): start_button=eh.input.one.read() # read Taste Nummer eins eh.output.one.blink() # blinken LED Nummer eins time.sleep(0.5) # zweimal pro Sekunde lesen #laufen leuchtet während (stop_button==0): # Analogeingänge EINS und ZWEI lesen, Einstellungen definieren set_1 =eh.an alog.one.read() # definiert Rot-> grüne Rampenrate pause_1=set_1*0.02 # Werte liegen zwischen 0 und 0,13 Sek./Schrittdruck ("set_1:", set_1, " -> pause _1:", pause_1) set_2=eh.analog.two.read() # definiert grün -> rot Rampenrate pause_2=set_2*0.02 # Werte liegen zwischen 0 und 0,13 Sek./Schrittdruck ("set_2:", set_2, " -> Pause _2: ", pause_2) # "inhalation" phase eh.output.one.on() # kann eine LED oder einen Piepser ''' für x im Bereich ansteuern (len(l_lin)): fx=max_intens*l_lin [x] # lineare Kurve eh.motor.one.backwards(fx) eh.motor.two.backwards(max_intens_100-fx) time.sleep(pause_1) eh.output.one.off() ''' für x im Bereich (len(l_cosin)): fx=max_intens*l_cosin [x] # lineare Kurve eh.motor.one.backwards(fx) eh.motor.two.backwards(max_intens_100-fx) time.sleep(pause_1) eh.output.one.off() # check ob Stop Button gedrückt ist stop_button=eh.input.three.read() # "Atem anhalten" Pause am Ende der Inhalationsphase eh.output.two.on() # LED zwei einschalten eh.motor.one.rückwärts(0) eh.motor.zwei.rückwärts(max_intens_100) time.sleep(pause_3) eh.output.two.off() #check ob Stop Button gedrückt ist stop_button=eh.input.three.read() # "Ausatmen" Phase eh.output.three.on() # LED drei ''' für x im Bereich einschalten (len(l_lin)): fx=max_intens*l_lin [x] # lineare Kurve eh.motor.one.backwards(max_intens_100-fx) eh.motor.two.backwards(fx) time.sleep(pause_2) ''' für x im Bereich (len(l_cosin)): fx=max_intens*l_cosin [x] # lineare Kurve eh.motor.one.backwards(max_intens_100-fx) eh.motor.two. rückwärts(fx) time.sleep(pause_2) eh.output.three.off() #check ob Stop Button gedrückt ist stop_button=eh.input.three.read() # Pause zwischen "Ausatmen" und "Einatmen" Phasen eh. output.four.on() eh.motor.one.backwards(max_intens_100) eh.motor.two.backwards(0) time.sleep(pause_4) eh.output.four.off() #check ob Stop Button gedrückt ist stop_button =eh.input.three.read() # Shutdown, Ausschalten aller Ausgangsports eh.motor.one.stop() eh.motor.two.stop() eh.output.one.off() eh.output.two.off() eh.output.three.off() eh.output.four.off() print () drucken ("Tschüss")

Wenn Sie die Leuchte als Stand-alone-Gerät verwenden möchten, z. B. als Schlaf- oder Aufwachlicht, können Sie dem Pi eine mobile Stromquelle hinzufügen und das Programm nach dem Booten starten lassen und mit "Cron" zu bestimmten Zeiten ein- oder ausschalten. Die Verwendung von "Cron" wurde an anderer Stelle ausführlich beschrieben.

Schritt 4: Videobeispiele

In diesem Schritt finden Sie eine Reihe von Videos, die das Licht unter normalen (dh alle Werte > 0, #1) und extremen Bedingungen zeigen, da alle Werte auf Null gesetzt sind (#2), nur Rampen (#3 ), und kein Rampen (#5 ).;

Schritt 5: Einige Anmerkungen

Bitte entschuldigen Sie alle falschen Begriffe, Tippfehler und Fehler. Ich bin weder englischer Muttersprachler, noch verfüge ich über fundierte Kenntnisse in Elektrik, Elektronik oder Programmierung. Was eigentlich bedeutet, dass ich versuche, ein Englisch instructable über Dinge zu schreiben, bei denen ich kaum die richtigen Begriffe in meiner eigenen Sprache kenne. Daher sind alle Hinweise, Korrekturen oder Verbesserungsvorschläge willkommen. H

Empfohlen: