Status LEDs (act/pwr) beim Raspberry Pi 2/3 B+

PWR ACT LED Raspberry Pi2 Pi3 B +Rot und Grün – Der Status vom Raspi

Für einige vielleicht ein alter Hut, für andere evtl. interessant ;-)

Vorweg, getestet habe ich das Vorgehen nur auf dem Raspberry Pi 2 und 3, jeweils die B+ Varianten, OS ist Raspbian Stretch. Mangels Besitz anderer Pi’s, kann ich zu weiteren Boards nichts schreiben.

Beim Start, in der Datei „config.txt“

Wenn man also auf die Idee kommt, dass die rote (pwr) und auch die grüne (act) LED auf dem Raspi mal einen anderen Status anzeigen dürfen und dies direkt beim Start aktiviert werden soll, bieten sich Einträge der Datei config.txt an. Es gibt, wie immer, auch viele weitere Möglichkeiten, hier geht es speziell um eine unkomplizierte Lösung, direkt beim Systemstart. Wer es gerne immer dunkel oder auch flackernd haben möchte, ist damit eigentlich schon fertig. Wenn die LEDs während des Betriebes ihren Modus ändern sollen, wird es ein wenig mehr Aufwand.

Los gehts

Man schnappt  sich also einen Editor und ergänzt in der config.txt folgende Zeilen:

Für die rote LED (pwr):

dtparam=pwr_led_trigger=heartbeat

Sinngleich für die grüne Leuchtdiode (act):

dtparam=act_led_trigger=heartbeat

Ab dem nächsten Neustart blinken beide Dioden in einer Art Herzschlagtakt. Natürlich steht „heartbeat“ hier nur für eine der Möglichkeiten. Mit der Option „none“, bleibt alles duster.

Weitere Optionen finden sich in der Liste unten im Artikel, ich habe NICHT alle getestet!

 

Änderungen erst nach dem Systemstart

Möchte man bestimmte Zustände an unterschiedliche Zeiten binden, z. B. am Tage „heartbeat“ und in der Nacht alles dunkel, empfiehlt es sich, einen Cronjob anzulegen und mit diesem ein zuvor erstelltes Bash-Script aufzurufen.

Ich habe diverse Einträge in der Root-Crontab (sudo crontab -e) angelegt, die wiederrum unterschiedliche Scripte aufrufen:

Beispiel:

Crontab:

0 22 * * * /bin/runledoff.sh

ruft nachfolgendes Schript auf, welches um 22 Uhr die Leuchtdioden abschaltet:

Script:

#!/bin/bash
# System LEDs OFF

echo „none“ >/sys/class/leds/led1/trigger
echo „none“ >/sys/class/leds/led0/trigger

Ich habe der aufzurufenden Datei den Namen „runledoff.sh“ gegeben und sie in /bin/ abgelegt. Gegebenenfalls nicht vergessen, die Datei mit

sudo chmod +x /bin/runledoff.sh

ausführbar zu machen. Wahrscheinlich sollte das Script auch dem User „root“ gehören, dies kann ggf. mit

chown root  /bin/runledoff.sh

erledigt werden. Vielleicht geht es auch mit anderen Besitzern, ich habe es gar nicht erst anders versucht.

Analog dazu können die LEDs mit einer weiteren Datei wieder aktiviert werden. In meinem Fall soll die grüne Diode (act/led0) weiterhin Aktivitäten der SD-Karte, die rote (pwr/led1) den „Heartbeat“ symbolisieren.

Script:

#!/bin/bash
# System LEDs ON

echo „heartbeat“ >/sys/class/leds/led1/trigger
echo „mmc0“ >/sys/class/leds/led0/trigger

Neuen Crontab-Eintrag mit passender Uhrzeit nicht vergessen!

Weitere Optionen/Parameter:

none – No trigger/Aus
kbd-scrolllock – Keyboard scroll lock
kbd-numlock – Keyboard num lock
kbd-capslock – Keyboard caps lock
kbd-kanalock – Keyboard kana lock
kbd-shiftlock – Keyboard shift
kbd-altgrlock – Keyboard altgr
kbd-ctrllock  – Keyboard ctrl
kbd-altlock – Keyboard alt
kbd-shiftllock – Keyboard left shift
kbd-shiftrlock – Keyboard right shift
kbd-ctrlllock – Keyboard left ctrl
kbd-ctrlrlock – Keyboard right ctrl
timer – Flash at 1 second intervals
oneshot – Flash only once
heartbeat – Flash like a heartbeat (1-0-1-00000)
backlight – Always on
gpio – Flash when a certain GPIO is high
cpu0 – Flash on cpu0 usage
cpu1 –  Flash on cpu1 usage
cpu2 – Flash on cpu2 usage
cpu3 – Flash on cpu3 usage
default-on – Always on
[input] – Default state
panic – Flash on kernel panic
mmc0 – Flash on mmc0 (primary SD Card interface) activity
mmc1 – Flash on mmc1 (secondary SD Card interface) activity
rfkill0 – Flash on wifi activity
rfkill1 – Flash on bluetooth activity

Wie oben erwähnt, ist nicht alles persönlich getestet. Bei einigen Parametern weiß ich auch nicht sicher, was sie genau anzeigen bzw., ob es auf jedem Pi funktioniert oder ob dies so schnell geschieht, dass man nichts unterscheiden kann (rfkill z. B.). Wenn ich weitere Einsatzmöglichkeiten oder Details herausfinde, wird diese Liste ergänzt.

 

 

Eine kleine Vorschau auf das, was zu erwarten ist oder: Mach was mit dem Raspberry Pi und Python!

Python Programmierung Raspberry PiStillstand, bitte nicht!

Ich weiß nicht, wie es anderen geht, aber ich habe bei einigen Dingen irgendwann einen Punkt erreicht, an dem es irgendwie nicht mehr vorangeht. Aktuell ist dies auch der Status, beim Raspberry Pi.

Ich habe vom WordPress-Server bis zur eigenen Cloud, alles durchgetestet. Das Einrichten und ansprechen einzelner Hardwareports, stellt auch keine Hürde mehr dar. Sicherlich kommen immer wieder Situationen auf, in denen recherchiert werden muss, das anfängliche ‚Pionierfeeling‘, ist allerdings verschwunden.

Was mich schon zu Beginn, nicht nur beim Pi, immer gestört hat, ist das Nutzen von Ideen aus zweiter Hand. Egal was man macht, irgendwie setzt man oft auf das auf, was andere schon ins Leben gerufen haben.

Als ich vor 15 Jahren mit der PIC-Programmierung begonnen habe, ging es mir nicht anders, ich wollte Eigenständiges hervorbringen, selber von A-Z alle Möglichkeiten offen haben. Genau dieses Bedürfnis, hat sich jetzt bei mir auch mit dem Raspi eingestellt.

Es ist wunderbar, was diese kleine Maschine leisten kann, wenn man denn in der Lage ist, selber die Funktionen zu programmieren und damit zu realisieren, die man sich wünscht. Für klassische Computeranwendungen gibt es leistungsfähigere Geräte, der Pi hat seine Stärken eher in der recht offenen Auslegung. Nur muss man sich eben die Grundlagen programmieren, diese auch zu nutzen. Oft ist allerdings dieses „Wie beginnen?“, eine (r)echte Hürde. Welche Sprache, was ist sinnvoll und, vor allem, wie komme ich wirklich an alle Informationen, die ich brauche?

Manchmal hilft einem da auch der Zufall.

mitp-verlag-logoNun, was soll ich sagen?

Seit heute halte ich ein nagelneues Exemplar „Raspberry Pi programmieren mit Python, von Michael Weigend ISBN: 9783958459120“ in den Händen. Freundlicherweise hat man mir die Lektüre kostenlos zur Verfügung gestellt. Das Buch wird mir, nach dem ersten Eindruck und Durchblättern, meine Ziele deutlich näher bringen. Damit dürften auch die Weichen für die Programmiersprache gestellt sein, in der meine weiteren Himbeerprojekte umgesetzt werden sollen. Vielleicht kommt auch noch Java mit ins Rennen, das wird sich aber noch zeigen. Jedenfalls ist so nun die Entscheidung gefallen, wie es hier im Blog, und auch beim Pi an sich, in den nächsten Wochen weitergeht.

Natürlich kann es sein, dass ich das Buch nicht mag, Python doch nichts für mich ist oder ich mich schlicht blöde anstelle. Ihr könnt die Artikel dann einfach ignorieren und ich kann mir, vor lauter Peinlichkeit, eine Papiertüte über den Kopf ziehen. Aller Wahrscheinlichkeit und dem ersten Blick ins Buch nach, dürfte es so extrem aber nicht werden. Das hoffe ich wenigstens…

Zusammenfassend werde ich also ab demnächst, hier sowohl mit meinen Ergüssen zum Erlernen einer Programmiersprache, wie auch mit meiner ganz persönlichen Meinung zum Buch, in Erscheinung treten.

Mit ziemlicher Sicherheit, wird auch die Hardware stärker in den Vordergrund treten, schließlich muss die Software, die bei so etwas entsteht, ja irgendwie eine Funktion erfüllen. Ich habe da einige Ideen im Kopf, zunächst muss aber mal klar sein, ob meine Fähigkeiten nicht schon beim Einschalten einer Leuchtdiode an ihre Grenzen stoßen ;-)

Eins noch!

Erfahrungsgemäß erhalte ich nach dem Veröffentlichen dieses Beitrages hier wieder Nachrichten mit Hinweisen auf Dutzende Webseiten, die sich mit dem Thema befassen. Es wird auch bemerkt werden, dass man all Dieses online erlernen kann und irgendeine SEO-, Fach- oder Expertenperson bietet mir an, genau jetzt den passenden Content zu Python oder Casinos zu liefern.

Nun, das weiß ich alles selber! Ich bin aber ein Mensch, der beim Lernen ein Buch in der Hand halten will, nein muss! Wo am Ende zahlreiche Haftnotizen und Anmerkungen stehen, Seiten mit Kommentaren gefüllt und Seiten verknickt sind, weil ich mit dem Schinken eingeschlafen bin. Beim Rest? Nein, danke!

 

 

Mehr zum Pi

 

Eigene Raspberry Pi Gartenbewässerung mit Webseite bauen – tutorials-raspberrypi.de

Es wird sommerlich

Wer zu seinen elektronischen Ambitionen auch gerne im Garten werkelt und obendrein noch ein Freund vom Raspberry Pi ist, sollte sich den verlinkten Artikel ansehen.

Es ist kein ‚mal eben schnell‘ Projekt, lässt sich aber bestimmt auch als Anregung für viele andere, ähnlich nutzbare, Projekte nutzen.

Pi IIDer Raspberry Pi ist großartig, um im Bereich der Hausautomatisierung eingesetzt zu werden. Dazu gehört auch das Bewässern des eigenen (Gemüse-)Gartens. Mittels verschiedener Sensoren und Pumpen kann die Bewässerung gesteuert werden. Mit Hilfe eines kleinen Skripts können wir außerdem viele Anpassungen vornehmen. In diesem Tutorial geht es um die Erstellung einer Raspberry Pi Gartenbewässerung inkl. […]

Quelle: Eigene Raspberry Pi Gartenbewässerung mit Webseite bauen

 

 

Mehr zum Pi

 

Gesammelte Downloads PICkit 2

Ich weiß leider nicht, wie lange die Seite bei „Microchip“ online und aktuell bleibt, jedenfalls hinterlege ich hier den Link, der zu den gesammelten Dowloads für den PICkit-2 Programmer führt.

 

 

 

Eher wieder ein Merker für mich, denke aber, auch andere werden schon gelegentlich nach ähnlichem suchen ;-)

 

 

 

 

 

 

 

Kleine LED-Spielerei mit RGB-Leuchtdioden

Kleine Elektronikübung am Rande ;-)

 

Das Video unten ist eigentlich eher eine Katastrophe, weder sind die Farben gut getroffen, noch ist beim realen Aufbau ein Flackern zu sehen, besser will es die Kamera auch mit Tricks nicht darstellen… Ich denke aber, um die Arbeitsweise zu illustrieren reicht’s doch. Ursprünglich wollte ich noch nicht einmal einen Blogbeitrag aus dem Ganzen machen, irgendwie ist’s aber nun doch einer geworden :-)

 

Man nehme:

1 x PIC 12F675

1 x RGB LED (OK, ich hab 3 parallel, mit jeweils eigenem Vorwiderstand)

Passende Vorwiderstände für die LED

Ein bisschen elektronischen Kleinkram und irgendeinen durchsichtigen Staubfänger aus dem Haushalt :mrgreen:

Falls jemand den Nachbau startet:

Die Leuchtdioden kommen an die Ports GPIO4, GPIO1 und GPIO0. Welche Farbe an welchen Port ist egal, es kommen alle gleichberechtigt zum Zuge, nur der Farbverlauf ändert sich natürlich.

Hier der .hex-File als .zip Datei (12f675). Config NICHT enthalten, muss beim Brennen festgelegt werden. Interner RC/No Clock, alles andere OFF.

Habe meinem Fall hier die unten an 3. Stelle beworbenen RGB-LED genutzt, Vorwiderstand 220 Ohm für Grün und Blau, 180 Ohm für Rot. Jeweils eine einzelne Leuchtdiode pro Farbe geht auch, andere Farben nach Geschmack, ist ja nur eine kleine Spielerei mit Licht und Farbe.

Da nur 3 Leuchtdioden (bei Beachtung des Gesamtstromes geht natürlich mehr, dazu findet sich auch an anderen stellen im Blog etwas!) angesteuert werden, habe ich keine große Dokumentation erstellt. Einfach Controller im Standardaufbau mit Pullup von 10k an Pin 4 und die Leuchtdioden über jeweils einen Vorwiderstand vom Output-Pin gegen Masse verbauen, Aktiv = High. 100nF Stützkondensator für den PIC nicht vergessen, versorgt wird mit 5V. Bei voller Ansteuerung aller LED sind unter 80mA in meinem Aufbau zu erwarten, das schafft so ziemlich jedes alte Netzteil, stabilisiert sollte es allerdings sein. Progammtechnisch stellt der Ablauf eine ständig wechselnde PWM dar, so wird nur sehr selten der maximale Strom erreicht.

Wie gesagt, kleine Spielerei am Rande, eigentlich wollte ich nur sehen, was die RGB-LED, mit denen ich vollauf zufrieden bin, so leisten. Nachbau wie immer auf eigene Verantwortung ;-)

 

 

 

 

Der PIC 12F675 Teil 5 – PIE1 Register

PIC © 12F675 Mit den Einstellungen vom ‚PIE1‘-Register werden weitere Funktionen (bzw. Unterfunktionen) der Interruptmöglichkeiten des Controllers eingestellt.

Man muss beachten, dass die generelle Funktion der Interrupts in ‚INTCON‚ eingeschaltet werden muss, sonst geht nix :-) Also dort Bit 7 und ggf. Bit 6 auf „1“ setzen.

 

 

Bit 7:

1 = Interrupt bei Ende eines EEPROM-Schreibvorganges aktiv.

0 = Interrupt bei Ende EEPROM schreiben inaktiv.

Bit 6:

1 = Interrupt bei Ende eines A/D-Wandler Vorganges

0 = Kein Interrupt nach A/D Wandlung.

Bit 5:

Nicht genutzt, zu lesen als „0“

Bit 4:

Nicht genutzt, zu lesen als „0“.

Bit 3:

1 = Interrupt durch Comparator ein.

0 = Interrupt durch Comparator aus.

Bit 2:

Nicht genutzt, zu lesen als „0“.

Bit 1:

Nicht genutzt, zu lesen als „0“.

Bit 0:

1 = Interrupt durch Timer 1 möglich.

0 = Interrupt durch Timer 1 inaktiv.

 
 

Der PIC 12F675 Teil 4 – INTCON Register

PIC © 12F675 Das INTCON Register beinhaltet die Settings zu den Interruptfunktionen des 12F675.

Herstellerseitig wird empfohlen, die betreffenden Bits vor der Benutzung über die Software zurückzusetzen, um eine sichere Funktionen zu gewähren.

INTCON liegt in Bank0.

 

 

Bit 7:

0 = Alle Interrupts deaktiviert.

1 = Alle aktiviert.

Es ist zu beachten, dass die Interrupts auch ggf. noch in den betreffenden/weiteren Registern aktiviert werden müssen.

Bit 6:

0 = Alle Interrupts deaktiviert, die intern vom PIC ausgelöst werden können.

1 = Alle Interrupts aktiviert, die intern vom PIC ausgelöst werden können.

Es ist zu beachten, dass auch die Interrupts auch ggf. noch in den betreffenden/weiteren Registern aktiviert werden müssen. Insbsondere Register PIE1 spielt hier eine große Rolle!

Bit 5:

0 = Timer0 Interrupt abgeschaltet

1 = Timer0 Interrupt aktiv

Bit 4:

0 = GP2 Interrupt abgeschaltet

1 = GP2 Interrupt aktiv

Bit 3:

0 = GPIO Interrupt abgeschaltet

1 = GPIO Interrupt aktiv

Dies bezieht sich nicht nur auf einen einzelnen Pin wie bei Bit 4, ein Pegelwechsel an einem Pin des gesamten GPIO-Ports kann einen Interrupt auslösen. Beim 12F675 kann dies jeder Pin des Ports sein.

Bit 2:

1 = Timer0 hat in Register TMR0 einen Überlauf ausgelöst

0 = Timer0 hat keinen Überlauf ausgelöst.

Man kann also auslesen, ob der Timer durchgezählt hat. Wichtig: Das Bit wird NICHT vom Controller zurückgesetzt, das muss im Programm geschehen (bcf INTCON,2).

Bit 1:

1 = Interrupt an GP2 wurde ausgelöst

0 = Kein Interrupt an GP2 ausgelöst.

Auch hier muss das Bit manuell zurück gesetzt werden, z. B. mit „bcf INTOCON,1“.

Bit 0:

0 = Kein Pegelwechsel an GPIO

1 = Pegelwechsel hat an einem Pin von GPIO stattgefunden.

Auch hier muss das Bit im Programm gelöscht werden.

 

 

Der PIC 12F675 Teil 3 – OPTION Register

PIC © 12F675 Weiter geht es mit der Beschreibung der PIC12F675. Ich kann übrigens nicht versprechen, dass die Blogbeiträge alle zeitnah und direkt nacheinander erscheinen, also nutze ich mal aus, dass heute gerade Zeit übrig ist :-)
 

 

OK, das nächste Register:

OPTION_REG:

In diesem Register werden Einstellungen zum Timer, dem Watchdog und auch möglichen Pull-Up Funktionen festgesetzt. OPTION liegt in Bank 1!

Bit 7:

0 = Pull Up’s aktiv

1 = Pull Up’s deaktiviert.

Pull-Up Widerstände dienen dazu, einen definierten Pegel an einen Port-Pin zu legen. Ist ein Pin beispielsweise als digitaler Eingang definiert, muss er einen festen Pegel aufweisen, ‚L‘ oder ‚H‘. Der Pull-Up Widerstand ist so in der Lage, einen festen ‚High‘-Pegel zu erzeugen, bis aus der Schaltung eine Änderung eintritt, welche einen sicheren ‚Low‘-Pegel liefert. So ist sichergestellt, dass kein undefinierter Zustand eintreten kann. Ich persönlich realisiere aber solche Lösungen immer mit externen Widerständen, so kann ich den Widerstandswert selber bestimmen.

Bit 6:

1 = Interrupt bei steigender Flanke an Pin GP2

0 = Interrupt bei fallender Flanke an Pin GP2

Interrupts dienen dazu, das laufende Programm bei auftreten einer bestimmten Situation zu unterbrechen und eine Aktion auszuführen. Der PIC hat mehrer Möglichkeiten dies zu vollziehen, in diesem Fall durch eine Pegeländerung an Pin GP2

Bit 5:

Hier wird festgelegt, aus welcher Quelle der Timer0 seinen Takt bezieht. Dies kann entweder durch ein externes Signal an GP2 geschehen oder durch einen internen Taktgeber. Auf die Timer komme ich auch noch gesondert zu sprechen.

1 = Takt an GP2

0 = Interner Takt

Bit 4:

Auslösen des nächsten Timerschrittes, wenn Takt an GP2 anliegend.

1 = Pegelwechsel von ‚H‘ nach ‚L‘

0 = Pegelwechsel von ‚L‘ nach ‚H‘

Bit 3:

Festlegen, ob der Vorteiler dem Timer0 oder dem Watchdog zugeordnet ist, siehe auch Beschreibung Bit 0-2

Bit 0,1,2:

Der PIC arbeitet mit einem Arbeitstakt von einigen Hz bis zu etlichen Mhz. Der Vorteiler kann eingesetzt werden, um die Zählgeschwindigkeit zu reduzieren. Je nach Einsatz, kann der Muttertakt bis zum Verhältnis 1:256 (1:128 beim Watchdog) geteilt werden. Hier muss wieder mal das Datenblatt her, wenn man die Funktionen detailliert betrachten möchte. Setzt man die Bits 0,1,2 auf 111, arbeitet in diesem Falle der Timer0 mit einem Teilungsverhältnis von 1:256, bei 000 auf 1:2.