Archiv der Kategorie: Computer

LED-Lämpchen NEOPIXEL WS2812 am Raspberry und Arduino

Durch einen Artikel angeregt, wollte ich die Technik von im Strang steuerbaren LED-Lämpchen erkunden. Um die Kosten niedrig zu halten entschied ich mich für 10 “nackte” LED-Lämpchen mit integriertem WS2812-Controller. Da war man mit 7 Euro bei Amazon dabei. Ein Netzteil war nicht notwendig, da der Raspberry und der Arduino mit 3 Lämpchen an dem 5V-Ausgang gut zurecht kommen.

dscn0683_aw

Die Logik des WS2812 ist eigentlich ganz einfach. Die Lämpchen entnehmen den beiden Leitungen (GND, 5V) ihren Saft und lauschen auf ein 800KHz-Signal auf dem Daten-Input. Falls sie ein Signal erkennen, interpretieren sie die ersten 3 Bytes für sich als RGB-Wert und geben die restlichen Bytes über den Daten-Output weiter. Hier kann man dann weitere Lämpchen anbauen. Eine Pause im Signalstrom ist der Reset. Das klingt einfach und genial.

Die Beinchen der LED sind lang, lang, kurz, kurz -> D-out, GND, 5V, D-in. Auf die Signalleitung bekommt der Raspberry aber nur 3,3 Volt, scheint aber zu funktionieen.

Für den Raspberry fand ich Warnungen, das könne nicht gutgehen, aber ich fand auch Treiber für diese Anwendung. Diese setzen auf der SPI-Logik des Raspberry Pi auf und modulieren in Echtzeit, soweit das auf einem Unix-System geht. Ich benutzte ein Python-Modul von https://github.com/joosteto/ws2812-spi. Dieses Modul ist selbst komplett in Python und schien mir recht einfach,

Zunächst steuerte ich ein Lämpchen an und konnte somit den Farbverlauf regeln. Danach baute ich auf meinem Mini-Steckbrett 3 Lämpchen zusammen, die ich auch erfolgreich steuern konnte. Damit war mein Interesse zufriedigen gestellt.

dscn0685_aw

Probleme gab es einige: Zum einen war die zeitliche Steuerung sehr ungenau, aber es gab einen Hinweis auf einen Vorwiderstand in der Signalleitung. 100 oder 200 Ohm halfen Wunder. Jetzt bin ich bei einer Fehlerrate von unter einem Prozent bei den Farbeinstellungen. Einmal hatte ich 3 defekte Lämpchen, was natürlich den Versuch auch scheitern lässt. Ohne Messgeräte ist doch alles ein Blindflug. Die Jumper an dem einen Lämpchen habe ich mir von Walter (Danke!) anlöten lassen. Das ist einfacher und schöner als die kleinen Beinchen zu verbiegen.

Auf meinem ARDUINO UNO (… den besitze ich ja auch noch ….) mit der Bibliothek “Adafruit_NeoPixel.h” ließen sich die LEDs unkompliziert und exakt aus einem kleinen Sketch ansteuern. Hier hatte der ARDUINO eindeutig die Nase vorn.

Es ist also doch sinnvoll, einen Arduino Uno und einen Raspberry Pi zu besitzen.

Bildverwaltung auf dem PC

Im Moment benutzen wir den Adobe Photoshop Elements 11 (PSE) und sind mit dem Leistungsumfang in etwa zufrieden. Auch der Umstieg auf den neuen PC mit Windows10 war kein Problem, da in unserer PSE-Datenbank nichts Wichtiges war und wir die Datenbank einfach neu aufgebaut haben. Unsere Bilder sind weiterhin in gut strukturierten Ordnern abgelegt und der PSE dient uns vor allen Dingen dazu, eine chronologische Darstellung über die Ordner hinweg zu erzeugen. Die Personenerkennung haben wir einmal ausprobiert, dann aber nicht weiter verfolgt. Die wäre auch bei einem Neuaufbau des Katalogs verloren gegangen. Die Bearbeitungsfunktionen des Bildeditors sind für uns mehr als ausreichend.

Durch einen Bericht in der “Rheinpfalz” über das “Zoner Photo Studio” wurde mein Interesse an einer programmunabhängigen Katalogisierung von Bildern geweckt. Und dazu gibt es ja die EXIF-, IPTC- und XMP-Felder in den JPG- und TIFF-Dateien. Die meisten hochwertigen Programme lesen diese Daten in ihre Datenbank ein und können dann damit auch halbwegs gut umgehen, Veränderungen an den IPTC-Daten werden meist nur in die Datenbank und nicht direkt in das Bild zurückgeschrieben. Man muss diesen Vorgang zumindest im PSE einzeln anstoßen. Die Beschreibung dieser Funktionen ist meist dürftig, denn die Softwarehersteller wollen ja gerade eine dauerhafte Kundenbindung aufbauen.

PSE zeigt diese Felder an und man kann auch nach einigen dieser Felder (Überschrift und Beschreibung) die Bilder selektieren. Die Stichworte vom PSE können über die Tastenkombination STRG-W in das entsprechende IPTC-Feld geschrieben werden und stehen dann über die eingebaute Stichwortfunktionalität wieder zur Verfügung. Vielleicht sollte ich mir die aktuelle Version 15 vom PSE einmal ansehen.

Das Zoner-Photo-Studio (Version X) habe ich mir testweise installiert, war aber nicht so richtig glücklich. Die Begriffe und die Arbeitsweisen sind doch anders als bei meinem vertrauten PSE.

Für Python gibt es anscheinend ein Modul für diese Feldgruppen EXIF-, IPTC und XMP, aber wie immer (!) für die falsche Python-Version. Das Thema ist noch offen.

 

 

Unsere Computervergangenheit

In der Schule gab es den Rechenschieber, privat hatten wir noch einen “Addiator” (mit Zehnerübertrag), mit dem man auch längere Zahlenfolgen addieren konnte.

Um 1975 hatte ich dann meinen ersten elektronischen Taschenrechner, einen HP-45 mit UPN-Logik. Damit konnte man so ziemlich alles machen. Ungefähr 1980 kam dann ein “Sharp 1211″-Taschenrechner mit ca 2KB Hauptspeicher hinzu. Der hatte ein großes einzeiliges 40 (?)-stelliges Display, eine richtige QWERTY-Tastatur und man konnte ihn mit BASIC programmieren. Man konnte ihn aber auch gut mit einzeiligen Programmen als Taschenrechner missbrauchen.

Angefangen hat die richtige PC-Zeit bei uns in der Familie Mitte 1980 mit einem Noname-PC unter MS-DOS. DOS war ich von meinem Arbeitsplatz her gewohnt und Noname fand ich gut für Privatzwecke geeignet. Der Rechner hatte 640 KB (mehr ging nicht) Hauptspeicher,  eine 5 1/4″ (?) Diskette und eine 20 MB Festplatte. Als Grafikkarte war die monochrome Hercules-Grafikkarte eingesetzt. Als Bildschirm diente ein monochromer (grüner?) 15″-Monitor, der Nadeldrucker war ein MX von Epson. Insgesamt ein System mit allem, was ich mir vorstellen konnte.

Die PC-Hardware wurde größer und schneller, ich blieb bei Noname-Produkten und habe seit einigen Jahren eine Vorliebe für ACER. Das Betriebssystem wuchs kontinuierlich über Windows 3.1 ff. bis zum heutigen Windows 10. Die Grafikkarte verbesserte sich ständig weiter, ab VGA kam Farbe hinzu. Der Bildschirm wuchs auf 17″, wurde farbig, flach und hatte irgendwann den 23”-HD-HDMI-Stand erreicht.

Meine Drucker bekamen mehr Nadeln (24), irgendwann war dann das Endlospapier zu Ende. Ein kleiner Laser von HP war auch mal bei uns beheimatet, und heute tut ein Canon-MF-Tintenstrahler seinen Dienst.

Mitte der 80er hatte ich auch mal einen Apple II und einen ganz frühen Macintosh, aber nur als  Gastspiel. Mit einem ordentlichen Festplatten-PC war man eben gut ausgestattet und Computerspiele interessierten mich nicht.

Der PC wurde immer von mir, meiner Frau und unseren Kindern gemeinsam genutzt. Stand heute (2016) haben wir zusätzlich einen kleinen Laptop und ich habe zum Computer-Spielen meinen Raspberry Pi mit LINUX, der sich die Peripherie mit meinem PC teilen kann. Im Hintergrund lauern allerdings 2 Android-Handys auf ihre Beschäftigung.

Unsere Software war immer spartanisch. Am Anfang gab es Wordstar und Visicalc. Das änderte sich dann später zu Word, Lotus 1-2-3 und schon unter DOS zu MS-Works, wo man eigentlich alles hatte, was privat so notwendig ist. Manchmal bekam man auch Works als Zugabe bei einem neuen PC. Um die Jahrtausendwende wechselten wir dann zu MS-Office. Zwischendurch gab es dann auch mal den MS-Publisher, der allerdings in den privaten Office-Bündeln nicht enthalten war. COBOL als Programmiersprache wurde nie eingesetzt, es gab keine vernünftige PC-Version, aber die verschiedenen dBase-Varianten hatte ich im Zugriff, ebenso wie verschiedene PASCAL/Delphi -Compiler. Das vertraute UCSD-Pascal existierte leider nicht mehr.

Die Verbindung unseres PCs zur Außenwelt startete 1990 mit dem BTX-Dienst (Datex-J) der Post. Dazu bekam man ein Modem (1200/75), das man auch für andere Experimente benutzen konnte. Bei BTX fanden wir nur wenig Nützliches, vielleicht den Fahrplan der Bahn. Die anderen Angebote über eine direkte Anwahl waren sehr bescheiden. Es gab telnet, eine  VT52/VT100-Emulation und FTP zu einzelnen Anbietern.

Durch meine (kostenpflichtige) Mitgliedschaft bei “Compuserve” kam es zum Sprung nach vorn. Dieser Dienst entwickelte sich von einer Plattform für viele EDV-Interessengruppen allmählich in Richtung “offenes” Internet. Irgendwann vor 2000 hatte man eine Email-Adresse (HerbertDressler@compuserve.com) und einen Zugang in das damals noch kleine WWW mit dem Mosaic-Browser. Später benutzten wir dann Email über t-online und gmx.  Allerdings musste man immer noch Knotenrechner kostenpflichtig anrufen, unser nächster war in Karlsruhe. Zwischendurch bezogen wir den Internetzugang von der Rheinpfalz, “RON” hatte einen Zugang in Ludwigshafen und damit im Gebiet der billigeren Ortsgespräche. Die Telefon-Flatrate war damals noch nicht erfunden. Damals konnte das Modem schon bis zu 14.400 KB.

Verbessert hat sich das dann mit dem Umstieg auf ISDN-Telefonie, da war man schon locker bei 56 KB  Leitungsgeschwindigkeit und es gab bald danach auch eine Flatrate für den Zugang zum Internet. Richtig gelöst wurde das Zugangsproblem mit DSL (1 MB) und später unserem Wechsel (2006) zu Kabeldeutschland. Das waren dann schon ordentliche 16 MB Geschwindigkeit. Heute (2020) sind es 200 MB Download  und 50 MB im Upload.

Ab ISDN waren wir mit den Geräten von AVM (Fritz!) sehr zufrieden. AVM konnte und kann wirklich sehr gut mit ISDN umgehen, auch wenn wir keine ISDN-Telefonie mehr haben. Aber zwei gut nutzbare Telefonleitungen mit mehreren Nummern sind schon schön ….

Unsere (private) Handyzeit begann 1998 mit einem Motorola mit einem sichtbaren Antennenstummel, dann kam 2010 ein Nokia C6 mit Symbian und ab 2014 hatten wir dann Smartphones mit Android, damals die Version 4.4.

Seit 2013 betreiben wir eine (diese) Homepage unter WordPress.

RFID-Technik am Raspberry Pi

An meinem Arduino konnte ich mit meinem RFID-Modul (Milfare RC522) die ID von RF-Chips auslesen. Ich musste mich einfach an die Anleitung halten. Und die “Treiber” waren bei meinem Sunfounder-Paket ja dabei. Die anderen Möglichkeiten des Chips blieben verborgen.

 

DSCN0440_W DSCN0437_W

Die notwendigen Teile (der rote Leser und die beiden Tags) kosten zusammen ungefähr 5 Euro!

Das Auslesen am Raspberry Pi gelang mir nicht auf Anhieb. Hier musste man zunächst einmal das SPI-Protokoll im Betriebssystem aktivieren und danach natürlich noch im Python die richtigen Module und Befehle für den MF RC522 finden. Es gab eben kein perfekt vorgefertigtes Paket.

Eine Lösung schien mir erfolgversprechend, aber ich war anschließend im Python 2.7 und eigentlich wollte ich in das neuere Python 3.x.

Folgende Lösung führte dann zu einem Ergebnis:

Install the SPI-Py library:
 git clone https://github.com/lthiery/SPI-Py
 cd SPI-Py
 sudo python3 setup.py install

Download the pi-rc522 files:
 cd ~
 git clone https://github.com/ondryaso/pi-rc522.git

Im ersten Schritt konnte ich dann mit den mitgelieferten Python-Programmen die UID meiner RFID-Tags auslesen. Im zweiten Schritt konnte ich einen Datenbereich auslesen, da dieser nur mit dem Standardschlüssel FF FF FF FF FF FF geschützt war. Und im dritten Schritt konnte ich dann diese Daten mit dem bekannten Schlüssel dauerhaft verändern.

Beim Auslesen bekam ich dann folgende Daten im Python zu sehen, wobei die die Blöcke S1.0B0 und S1.0B1 von mir vorher verändert wurden.

RFID_Lesen_W

Viele Fragen (vor allem rund um die Authentifizierung) sind noch offen, mir fehlt irgendwie der richtige Zugang.

Ich werde hier noch weiter basteln und probieren …..

Aktuelles aus dem PC-Bereich

Nach der Silver-Surfer-Tagung “Leben in der digitalen Welt” an der Uni Mainz habe ich meine aktuelle PC-Situation in Richtung “Cloud-Computing” neu überprüft, aber ich werde nichts ändern.

Mit dem sparsamen Einsatz der DropBox und den Möglichkeiten des “MediaCenters” bei GMX bin ich ausreichend versorgt. Mir geht es eher um den Fototransfer vom Handy zum PC und um die Möglichkeit, größere Dateien (Bilder) unter Umgehung eines Email-Anhangs anderen Personen zugänglich zu machen. Das klappt mit diesen Programmen.

Eine Datensicherung in der Cloud ist für mich im Moment kein erstrebenswertes Ziel. Ich verwende weiterhin eine USB3-Festplatte, die im Normalfall nicht an den PC angeschlossen ist. Hier bin ich mit der Handhabung einigermaßen vertraut.

Da wir auch etwas über die Google-Suche gesprochen haben, werde ich mich mit der “Findbarkeit” meiner Homepage beschäftigen. Mit dem jetzigen Zustand bin ich halbwegs zufrieden, aber er ist bestimmt noch nicht optimal. Am liebsten würde ich gezielt mit Stichworten arbeiten. Zur Zeit verwende ich dafür den Textinhalt der Homepage, das sind meine gewünschten Stichworte. Vielleicht werde auch noch die Schlagwortfunktion in den WordPress-Beiträgen überarbeiten und aktivieren.

Die PiNoIR-Kamera am RaspberryPi

Die PiNoIR-Kamera ist ein kleines Modul (1″ Kantenlänge) mit einem 20 cm Flachbandkabel zum Anschluß an den speziell hierfür vorgesehenen CSI-Stecker und wird dann dort mit einem Klemm-Mechanismus fest verbunden. Also auch für ungeübte Hände geeignet.

Die Kamera muss in dem “rasp-config”-Menü aktiviert werden.

Das Python-Module “picamera” ist in der aktuellen Auslieferung vorhanden und kann ohne spezielle Vorbereitungen genutzt werden. Die Funktionen muss man sich, wie anscheinend immer in Python, erst etwas mühsam zusammensuchen.

Die Grundfunktionen für “Einzelbilder” und “Videos” sind schnell gefunden und lasssen sich über eine Menge Parameter den eigenen Wünschen anpassen. Die üblichen Formate “jpg” für Bilder und “h264” für Videos sind vorhanden. Die Bildqualität ist gut.

Die Kameraauflösung reagiert anscheinend auf mehrere Parameter und verändert auch den Bildwinkel. Da muss ich noch etwas probieren und klären. Die Brennweite scheint einem Weitwinkel zu entsprechen.

Das überall beschriebene “preview”-Bild ist bei meiner X11/VNC-Anbindung des RaspberryPi an den PC nicht sichtbar, da das Bild direkt auf den HDMI-Ausgang gelegt wird. Damit kann ich aber leben. Ich bin bei dieser Gelegenheit auf den “tightvncserver” umgestiegen, da dieser eine bessere Bildqualität, eben einen echtes X-Terminal, auf den PC bringt.

Die fertigen Programme “raspistill” und “raspivid” habe ich noch nicht ausprobiert, da ich eigentlich alles über Python erledigen will.

Ich konnte auch Bilder in Python via MIME zu einer Email zusammenbauen und diese dann über “sendmail” versenden.

 

 

Webserver “lighttpd” auf meinem Raspberry

Um meine Elektronikspielwiese üppiger zu gestalten, wollte ich noch einen Webserver auf dem Raspberry Pi installieren.

Ich habe mich an die Empfehlungen im Internet gehalten und den kleineren “lighttpd” genommen, nicht den Apache. Zusätzlich kam noch das PHP5-Paket hinzu. In der “.conf” habe ich dann das cgi-Modul für Python eingerichtet. Das ist alles etwas spartanisch, aber es sollte für meine Ansprüche mehr als reichen. Auf ein ausgewachsenes SQL habe ich verzichtet, bei Bedarf gibt es ja in Python ein SQLite3.

Die default-html-Datei von lighttpd wurde auch beim ersten Aufruf im Explorer angezeigt, mit meiner ersten PHP-Datei hatte ich aber Probleme. Die Datei wurde nicht gefunden (Fehler 404). Das Root-Verzeichnis meiner Installation liegt offensichtlich unter “/var/www/html” und nicht unter “/var/www”. Andere Anwender scheinen auch schon über diese Unstimmigkeit gestolpert zu sein. Die Unix-Rechte der Dateien und Verzeichnisse machen einem etwas Kummer, da der Webserver unter einem anderen Benutzer läuft.

Aber jetzt funktioniert HTML, PHP und Python3. Damit ist mein Ziel “Webserver auf dem Raspberry Pi” zunächst erreicht.

Ein Durchgriff über PHP zur Shell und auf die PiNoIR-Kamera funktionierte auf Anhieb. Ich kann somit ein Bild aktuell über den Browser aufnehmen lassen und anzeigen.

PS: Der Webserver läuft nur im internen LAN, ist also für Fremde von außen nicht sichtbar.

Der Raspberry mit dem Explorerhat Pro

Da ich zu Weihnachten einen “Explorerhat Pro” unter meinen Geschenken fand, musste ich dieses Teil auch unverzüglich ausprobieren. Aufgesteckt, Treiber über Github installiert und los.

DSCN9060_W

Der Explorerhat Pro ist ein kleiner Aufsatz (“Hat”), der von sich aus 8 betriebsfertige Tastschalter und 4 betriebsfertige LED-Lämpchen mitbringt. Die muss man schon einmal nicht mehr stecken und verdrahten.

Dann gibt es noch schön beschriftete Anschlüsse, je vier für den digitalen Input, den analogen Input und den digitalen Output. Das Ganze sogar 5V-fest. Die anderen Anschlüsse habe ich mir noch nicht intensiv angesehen.

Gesteuert wird der Aufsatz über die mitgelieferte Library via Python. Die Dokumentation ist etwas spärlich, aber einen Photoresistor und einen LM35-Temperaturfühler konnte ich problemlos in Betrieb nehmen. Für solche Versuche reicht auch das kleine Steckbrett mit 2*17*5 Kontaktlöchern.

Mein Python-Code: ExplorerHat_LM35.py

Einziger Nachteil: Bei aufgestecktem Explorerhat sind die anderen Anschlüsse auf dem Raspberry nicht erreichbar. Man muss also je nach Versuch das Gesamtsystem umbauen.

 

Neuer PC mit Windows 10

Nachdem unser alter PC nach fast 6 Jahren erste und ernste technische Probleme hatte, wurde es Zeit, sich nach einem neuen PC umzusehen. Die Wahl fiel erneut auf einen Acer, diesmal auf den kompakten Aspire XC-705 mit einem i3-4170-Prozessor und integrierter HD-4400-Grafik.

Ich entschied mich für einen grundlegenden Neuaufbau mit Windows 10, danach wollte ich die Daten vom alten auf den neuen PC übertragen. Bei so einem Vorgehen kann man sich auch von Programmen trennen, die man nicht mehr braucht oder nicht mehr benutzt. Oder manche Programme auf eine neuere Version updaten.

Die Arbeitsschritte haben gut und flott funktioniert. Emails zu übertragen ist immer etwas zeitaufwendig, und der Photoshop Elements 11 will nicht so richtig mit Windows Live Mail 2012 zusammenarbeiten. Vielleicht findet sich hier noch eine Lösung …

Ich habe mich gegen das neueste Office entschieden und bleibe bei Office 2007. Das wird uns sicherlich noch lange gute Dienste tun. Das vorhandene OneNote 2007 habe ich nicht übertragen, dafür habe ich meine Notizbücher manuell in Worddokumente aufgelöst. Vielleicht setzen wir mal das OneNote von Windows 10 ein. Das verbesserte Snipping-Tool (es kann jetzt drucken) und die Kurznotizen werden wir sicherlich nutzen.

An einer Stelle muss ich noch einiges lernen: Die Start-Prozeduren von Windows 10 bringen neue Begriffe mit sich und der BIOS-Setup bzw. der Eingriff in die Bootfolge ist auch nicht mehr der alte. Auf alle Fälle konnte ich nach mehreren Versuchen von einer Acronis-CD booten und einen vollen Backup des neuen Systems auf die ebenfalls neue ‘WD 2,5″ 1TB USB3’ Festplatte schreiben.

Der alte PC steht noch auf dem Schreibtisch und die Festplatte ist noch nicht gelöscht.

Erste Experimente mit dem Raspberry

Da nach der ersten Lieferung doch noch Wünsche offen waren, wurde in der Zwischenzeit noch ein transparentes Gehäuse und ein USB-WLAN-Stick dazugekauft. Beides passt und ist auch in Gebrauch. Passend zum WLAN-Stick ist auch ein Akkubetrieb des Raspberrys über einen externen Handy-Akku möglich.

Als Alternative zu Bildschirm, Tastatur und Maus habe ich die Softwarelösung über “x11.vnc” installiert. Der Raspberry bootet dann nackt und ich lasse mir anschließend den Bildschirm auf den PC spiegeln. Und das Programm gibt dann Tastatur und Maus an den Raspberry weiter. So habe ich einen sehr aufgeräumten Arbeitsplatz.

Von meinen Zubehörteilen des Arduino kann ich jetzt die LED-Lämpchen, die Taster und auch den PIR-Bewegungsmelder vom Raspberrry aus betreiben. Der PIR-Bewegungsmelder hatte glücklicherweise ein Ausgangssignal von 3,3 Volt wie es für den Raspberry notwendig ist. Dieser Umstieg von 5,0 auf 3,3 Volt war mir nicht richtig bewusst, man sollte ihn aber beachten.

Programmiert habe ich diese einfachen Schaltungen mit Python 3 und dem RPi.GPIO-Modul, welches schon bei dem NOOBS-System dabei war. Durch diese Lösung konnte ich auch Bewegungsdaten auf der SD-Karte aufzeichnen.

Die nächsten Bauelemente stehen auch schon fest: der RF-Link-Sender für die Funksteckdose,  der RF-ID-Leser und ein A/D-Wandler für die einfachen Sensoren mit einem analogen Ausgang. Ich suche aber noch nach einer guten Programmieranleitung. Für den Arduino wurden Anleitungen und Bibliotheken immer griffbereit angeboten, die auf dem Controller laufende Software war eben sehr einheitlich.