Windows, Timer, Rasperry, Echtzeit und das Problem mit der Genauigkeit

Die ersten Gehversuche mit Visual Studio 2015, zusammen mit dem Rapsberry Pi 2 und Windows 10 IoT Core haben Spaß gemacht. Doch offensichtlich bin ich jetzt an die erste Grenze gestoßen – den Timer.

Windows ist eben kein Echzeitbetriebssystem. Aktuell versuche ich herauszufinden, wie ich 40 Mikrosekunden unter Windows mit .net möglichst genau timen soll – und das möglichst genau.

Das benötige ich für die Initialisierung meines Temperatursensors DHT22.

 

 

Windows 10 IoT Core auf dem Raspberry Pi installieren

Seit ein paar Tagen ist Windows 10 IoT Core für den Raspberry verfügbar. Wir zeigen Ihnen wie man es installiert – ein erstes kleines Tutorial.

Eine kleine Warnung vorab: Wer einen vollwertigen Rechner mit Desktop, Startmenü und Co. erwartet, braucht nicht weiterlesen 🙂 Das Windows 10 für den Raspberry lässt sich nur per Web, FTP oder Powershell administrieren. Ein direktes Arbeiten ist auf dem System nicht vorgesehen, er soll vielmehr nur ein embedded Ausführungsystem sein.

IMG_5087

Von außen sieht man ihm gar nicht an, dass da ein Windows rödelt.

Was benötige ich?

Installation

Zunächst benötigt man das Windows_IoT_Core_RPI2_BUILD.zip File. Darin enthalten ist das Windows Image, ein Readme, eine Lizenzdatei und ein Entwicklertool (später mehr).

zip

Für die Installation benötigen wir zunächst nur die Datei Flash.ffu – doch wie bekommt man die auf den Raspberry bzw. auf die SD-Karte. Mit dem Win32DiskImager wie mir Linux (siehe Grundinstallation mit Linux) klappt es nicht.

Vielmehr wird das Tool dism.exe benötigt.

Nun hat man zwei Optionen:

  • Entweder man verwendet Windows 10, weil Windows 10 schon mit SD-Karten umgehen kann (gibt es nur als Preview-Version)
  • Oder man verwendet einen Windows 8.1. Rechner und installiert das Windows Assessment and Deployment Kit (ADK).

Wir haben uns für die Windows 8.1. Variante entschieden. Es reicht folgende Option zu installieren:

sdk

Das entsprechende Tool findet sich dann im Programmverzeichnis unter Windows\Kits\10\Assessment and Deployment Kit\Deployment Tools\x86\Dism\

dism muss wie folgt aufgerufen werden: dism.exe /Apply-Image /ImageFile:flash.ffu /ApplyDrive:\\.\PhysicalDriveN /SkipPlatformCheck

Es muss also zunächst ermittelt werden, wie das Laufwerk heißt: PhysicalDrive{Nr}.

Dies kann in der Admin-Kommandozeile mit diskpart erledigt werden:

diskpart
list disk
exit

disk

In unserem Fall ist es der Datenträger 2 also PhysicalDrive3. Hier sollte man in jedem Fall gut aufpassen. Danach kann man dism.exe ausführen und das Image wird auf die SD-Karte geschrieben.

Der erste Bootvorgang

Wir stecken die SD-Karte in den Raspberry, schließen einen HDMI-Monitor und das Netzwerkkabel an und nach einer kurzen Einrichtung und einem Reboot (wir sehen öfters das Windows Logo) begrüßt uns eine Statusoberfläche:

IMG_5086

Dort erfahren wir zumindest die IP, die der Raspberry vom Router bekommen hat.

Das war’s auch schon, kein Startmenü – nichts. Man kann zwar mit der Maus arbeiten, aber mehr als Geräteeinstellungen ansehen, Herunterfahren und Zeitzone einstllen ist erstmal nicht.

Verwaltung über HTTP, FTP oder Powershell

Der Raspberry ist über folgende Wege administrierbar (wenn auch noch alles ohne Sicherheitsschutz, das kommt aber sicher noch):

  • Eine sehr mächtige Weboberfläche über HTTP
  • Über FTP kann man auf das Dateisystem zugreifen
  • Über Powershell kann man Remote Verwaltungsaufgaben vornehmen

Die Weboberfläche

Öffnet man die Raspberry IP Adresse im Browser erwartet uns eine relativ mächtige Weboberfläche. Beispielhaft hier ein paar davon:

Im Networking bereich kann man sich die IP anzeigen. Leider kann der Raspberry mit Win10 aktuell noch nicht mit WLAN-Adaptern umgehen (auch wenn es schon sichtbar ist, daher ist der Raspi ersteinmal an das Kabel gebunden)

web1

Ein Performance-Monitor zeigt die aktuelle Auslastung:

web2

Interessant ist der Apps-Bereich. Hier kann man eigene Universal Apps hochladen und starten.

web3

Ein Remote-Start von Anwendungen sozusagen.

 

Das war einmal der erste Einblick. Als nächstes werden wir uns natürlich mit der Entwicklung beschäftigen.

Vorabversion von Windows 10 für den Raspberry Pi verfügbar

Auf der Entwicklerkonferenz Build wurde die erste Vorabversion von Windows 10 für den Raspberry Pi 2 veröffentlicht. Nach einer Anmeldung kann Windows 10 auf dem Raspberry getestet werden: http://ms-iot.github.io/content/GetStarted.htm

Windows 10 IoT Core wird sehr schlank sein, davon gehen wir aus. Die finale Version wird noch diesen Sommer erwartet.

Nicht zuletzt für meinen Vortrag auf der #dwx15 wird es in Kürze einen ausführlichen Test geben.

Kleiner Home Mailserver mit AXIGEN und Raspberry (Proof of Concept)

Da wir auch das Mailserverprodukt AXIGEN vertreiben und weiterentwickeln, bietet sich eine Kombination mit dem Raspberry an. Ziel soll es sein, einen kleinen Mailserver für zu Hause unter Linux einzurichten.

Diese Anleitung / Beitrag ist für erfahrene Benutzer gedacht.

AXIGEN Mailserver + Raspberry PI = Raspigen

RASPIGEN2

Sie können Ihren RASPIGEN auch bei uns erwerben, wenn sie ihn nicht selbst installieren möchten. Kontaktieren Sie uns: info@huestel-gmbh.de

Dieser soll von unserem Provider (im Beispiel gmx.de) die Mails über POP3 abholen und auf unserem Mailserver abglegen. Es wird keine öffentliche IP oder Portfreigabe benötigt.

Da es aktuell keine ARM-Version von AXIGEN gibt, muss ein Umweg gegangen werden. Von daher ist es erstmal als proof of concept zu verstehen und nicht unbedingt für den Produktiveinsatz geeignet. Aber wir wollen auf unseren AXIGEN ja nicht verzichten.

Da AXIGEN auch sehr ressourcenschonend ist und wir nur eine handvoll Mailboxen hosten möchten, ist das kein Problem. Performancetechnisch sollten wir uns jedoch keine Höchstleistungen erwarten. Sie können diese Anleitung (bis auf ExaGear) auch für jeden anderen Linux-Server verwenden, zum Beispiel für Ihren vServer.

Voraussetzungen:

Installation des AXIGEN Mailservers:

  • Verbinden Sie sich über SSH auf den Raspberry
  • Zunächst muss das Eltechs ExaGear Desktop Paket heruntergeladen werden (dieses erhalten Sie nach Ihrem Kauf vom Hersteller)
    • Danach muss der Lizenzschlüssel in’s Installationsverzeichnis kopiert werden
    • Installation mittels sudo ./install-exagear.sh starten
    • Das aktuelle Installationspaket hat scheinbar ein Verzeichnis nicht angelegt:
      • Daher muss noch ein sudo mkdir /etc/resolvconf aufgerufen werden
      • Mit dem Befehl sudo exagear wechseln wir in die x86 32 Bit shell
      • shell
      • Dies erkennt man am neuen Shell-Bezeichner: root@raspberrypi@x86
  • Im ersten Schritt müssen wir das AXIGEN-Installationspaket für Debian herunterladen:
    • wget https://www.axigen.com/usr/files/axigen-8.2.0/axigen-8.2.0.i386.deb.run
      • wget
  • Danach starten wir die Installation:
    •  axigen
  • Nach der Bestätigung der Lizenz startet die Installation, es wird das emulierte Ubuntu 12.04 erkannt:
    • axigen3
  • Die Installation wird mit der Option 1 gestartet
    • axigeninstall
  • Wenn die Installation fertig ist starten wir wie angegeben den Einrichtungswizard: /opt/axigen/bin/axigen-cfg-wizard
  • Zunächst vergeben wir das Admin-Passwort:
    • axigenadmin
  • Als primäre Domain geben wir die Domain unseres Freemail-Anbieters an, in unserem Fall gmx.de
    • domain
  • Die Alias Konfiguration übernehmen wir
    • alias
  • Den Webadmin belassen wir auf Port 9000
    • webadmin
  • Den SMTP-Dienst belassen wir ebenfalls auf Port 25
    • smtp
  • Wir möchten die Dienste POP3, IMAP und Webmail nutzen
    • services
  • POP3 belassen wir auf Port 110
    • pop3
  • IMAP auf Port 143
    • imap
  • Das Webmail auf Port 80 (ggf. auf Port 8000) ändern, wenn schon ein Webserver wie z.B. der Apache auf Port 80 läuft:
    • wm
  • Das Relaying über localhost / 127.0.0.1 erlauben wir:
    • relaying
  • Der Sendmail-Wrapper sollte auch installiert werden:
    • sendmail
  • AXIGEN wird nun eingerichtet:
    • install
  • Sobald der Wizard beendet ist, können wir AXIGEN starten: /etc/init.d/axigen start
    • START

Konfiguration des AXIGEN – Mailservers:

  • Über den Browser können wir nun uns auf die Webadmin-Oberfläche von AXIGEN verbinden. Die Adresse lautet http://<Ihre Raspi IP>:9000 z.B. http://192.168.178.74:9000
    • wa
  • Zunächst müssen wir für unsere Domain das Feature RPOP aktivieren:
  • Domains & Accounts => Domain => Edit
  • Dort im General Tab die Option RPOP aktivieren
    • domainrpop
  • Danach legen wir unseren Freemail-Account an:
  • Domains & Accounts => Domain => Add Account
    • addaccount
  • Das Account-Passwort kann vom Provider-Passwort abweichen
  • In den Account Einstellungen => Account => Edit aktivieren wir RPOP. RPOP dient dazu die Mails über POP3 vom Provider abzuholen.
    • rpop
  • Darüber hinaus müssen wir noch den RPOP-Dienst aktivieren (Services => Service Management):
    • rpop2
  • Danach loggen wir uns im Webmail ein, z.B. http://192.168.178.74/
  • Wechseln Sie zunächst auf das Standard Webinterface:
    • standard
    • Später können Sie zum Arbeiten auch wieder auf das moderne Ajax-Webmail wechseln
  • Für den Login verwenden Sie Ihre vollständige Mailadresse <Adresse>@gmx.de und ihr vorher gesetztes Passwort:
    • login
  • Danach richten wir die Abholung beim Provider ein
  • Klicken Sie rechts oben auf “Settings”
    • settings
  • Und dann auf RPOP-Connections:
    • rpopcon
  • Dort können Sie nun die Zugangsdaten Ihres Providers für POP3 hinterlegen:
    • rpop4
  • Je nach eingestelltem Intervall sollten nun nach einigen Minuten die E-Mails im Posteingang auftauchen.
  • images
  • Im nächsten Schritt müssen wir noch den Versand über den Provider als Smarthost festlegen
  • Hierzu wechseln wir noch einmal zum Webadmin
  • Danach auf Security & Filtering => Acceptance & Routing => Routing Basic Settings
  • Dort hinterlegen wir die SMTP-Daten des Providers und speichern mit “Save Configuration”
    • smarthost
  • Da uns ja die gmx.de Domain nicht gehört, muss man noch eine zusätzliche Regel anlegen
    • Diese Regel stellt sicher, dass alle @gmx.de Adressen die nicht lokal vorhanden sind zum Provider gesendet werden
    • Somit können wir auch mit anderen gmx-Teilnehmern kommunzieren
    • Haben Sie z.B. den Account Ihrer Frau auf dem AXIGEN so wird die Mail ohne Umweg über das Internet zugestellt
    • Hierzu wechseln wir in den Bereich “Advanced Settings” und fügen eine neue Regel hinzu “Add Acceptance /  Routing Rule”
      • advanced
    • Diese Regel wie folgt einrichten
      • gmx
    • Und mit Save Configuration speichern

Damit holt unser Raspigen Mails vom Provider ab und versendet diese ebenfalls über den Provider nach außen. Fertig ist unser kleiner lokaler Mailserver.

raspigen

In AXIGEN gibt es natürlich noch viele weitere Optionen (von Active Sync über Virenscanner bis hin zu Backup-Optionen), sehen Sie sich doch auf unserer AXIGEN Seite um: http://www.axigen.info – das Forum bietet Ihnen auch viele Hilfestellungen.

Natürlich können Sie AXIGEN auf Ihre Bedürfnisse weiter einrichten, die Webmail Sprache umstellen, usw.

Vergessen Sie abschließend nicht Ihre AXIGEN-Lizenz noch einzuspielen.

P.S.: Kommerzielle Lizenzen erhalten selbstverständlich Support!

Und so sieht er aus:

raspigen copy

 

Raspberry Pi – Grundinstallation und Vorbereitung

Als Vorbereitung für einige weiteren Beiträge, die bereits auf die Veröffentlichung warten, soll in diesem Beitrag die Grundinstallation und die Vorbereitung zur Inbetriebnahme des Raspberry Pi erklärt werden.

Schritt 1: Herunterladen des Betriebssystems

Für die Projekte verwende ich in der Regel immer Debian. Hierzu lädt man das aktuelle Debian Image (aktuell Wheezy) von der offiziellen Seite herunter. Dies kann je nach Verbindungsgeschwindigkeit etwas dauern:
http://downloads.raspberrypi.org/raspbian_latest

Das Paket kommt als .zip Datei und muss nach dem Herunterladen entpackt werden. Darin sollte sich eine .img – Datei befinden.

Schritt 2: Kopieren auf die SD-Karte

Damit das Betriebssystem auf die SD-Karte kommt, benötigt man ein entsprechendes Kopier-Tool: Win32 Disk Imager

imager

Dort wählen Sie die .img Datei aus und das richtige Laufwerk, in dem sich die SD-Karte befindet.

Sobald der Kopiervorgang abgeschlossen ist, kann die SD-Karte in den Raspberry gelegt werden.

Schritt 3: Erster Start des Raspberry

Nun haben wir zwei Möglichkeiten:

a) Sie schließen den Raspberry über HDMI-Kabel an einen TV oder Monitor an

b) Sie verbinden sich Remote über SSH auf den Raspberry.

In jedem Fall ist es ratsam den Raspberry zusätzlich mit Netzwerk zu versehen. Am einfachsten geht es, wenn man einen Router besitzt, der IP-Adressen via DHCP zuweist. So erhält der Raspberry eine IP-Adresse und Netzwerkzugang.

Wir entscheiden uns hier für Variante b). Wenn Sie den Raspberry an einem Monitor/TV angeschlossen haben, können Sie den nächsten Schritt überspringen.

In jedem Fall sollte die SD-Karte richtig platziert sein und danach kann der Raspberry an’s Stromnetz angeschlossen werden.

Schritt 4: Verbinden über SSH

Nach einer kurzen Zeit kann man z.B. über den Router prüfen, welche IP-Adresse der Raspberry bekommen hat. In unserem Fall sagt die FritzBox Folgendes:

conn

Vermutlich besitzt auch Ihr Router eine ähnliche Möglichkeit angemeldete Geräte im System anzuzeigen.

Um uns Remote auf den Raspberry verbinden zu können, benötigen wir einen SSH-Client. Hier hat sich das Tool putty zum Quasi-Standard etabliert. Download unter: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Sobald Sie Putty heruntergeladen haben, starten Sie die putty.exe. Danach tragen Sie die IP-Adresse ein und verbinden sich über “Open” zum Raspberry.

putty

Erscheint das Login-Fenster, haben wir es geschafft:

Login

Benutzername und Kennwort lauten im Standard wie folgt:

Benutzername: pi

Passwort: raspberry

Mit diesen Daten melden wir uns am System an.

LoginSuccess

Schritt 5: Den Raspberry konfigurieren

Sofern Sie den Raspberry an einem Monitor angeschlossen haben, startet direkt direkt die Raspberry Konfigurationsoberfläche. Die SSH-Benutzer müssen sie zuerst mit dem Befehl:

sudo raspi-config

aufrufen.

 

config

Danach gelangt man auf die Übersichtsseite:

config-uebersicht

Im ersten Schritt sollte man auf “8 Advanced Options” gehen und dann auf  “A0 Update” gehen, um die aktuellste Version des Tools einzuspielen.

Schritt 6: Konfigurationsoptionen

1 Expand Filesystem

Das Image belegt im Standard nur 2 GB einer Speicherkarte. Besitzen Sie eine größere Speicherkarte, müssen Sie den Raspberry anweisen sich “auszubreiten”. Mit diesem Menüpunkt können Sie dies automatisch vornehmen. Beim nächsten Start kann der Raspberry dann die volle Größe nutzen.

Fazit: Unbedingt durchführen

2 Change User Password

Das Standardpasswort ist “raspberry”, wie oben beschrieben. Mit dieser Option können Sie das Passwort anpassen. Jedoch Vorsicht: Im Standard ist ein englisches Tastaturlayout vorgegeben. Entsprechend sind bspw. X und Y vertauscht.

Fazit: Unbedingt ändern, zur Sicherheit jedoch vorher das Tastaturlayout (4-3) umstellen.

3 Enable Boot to Desktop

Debian besitzt eine grafische und ein textuelle Oberfläche. Möchte man dies ändern, so ist dieser Menüpunkt wichtig.

Fazit: Erst einmal so lassen. Die graphische Öberfläche lasst sich mit startx jederzeit öffnen.

4 Internationalisation Options

4-1 Change Locale

Mit dieser Option lässt sich der Zeichensatz ändern. Für Deutschland sollte man de_DE.UTF-8 auswählen.

4-2 Change Timezone

Hier kann man die Zeitzone anpassen. Für Deutschland sollte Europe/Berlin gewählt werden.

4-3 Change Keyboard Layout

Hier lässt sich das Keyboard-Layout umstellen, auch auf eine deutsche Tastatur

5 Enable Camera

Der Raspberry besitzt über eine eingebaute Anschlussmöglichkeit für ein Kameramodul. Besitzen Sie dieses, so können Sie das Modul hier aktivieren. Link zum Modul:
Raspberry Pi-Cam 5 Megapixel PI Camera Board – 5MP

6 Add to Rastrack

Rastrack ist eine kleine Spielerei, also kein Muss. Es handelt sich hierbei um einen Dienst, bei dem man seinen Raspberry registrieren kann – kostenlos. So kann man sehen, wo sich die Raspis auf dieser Welt schon verbreitet haben.

7 Overclock

Der Raspberry ist im Standard perfekt ausgelegt. Für Mutige gibt es Optionen den Raspberry zu übertaken und somit noch mehr aus ihm rauszuholen. Ich würde davon abraten, das sorgt nämlich im schlimmsten Fall zu Systemabstürzen oder zu einer verringerten Lebenszeit des Rasberrys, da ihm zu warm wird.

8 Advanced Options

8-1 Overscan

Diese Option ist dann wichtig, wenn sie den Raspberry an einem alten Röhrenfernseher betreiben wollen. Diese Option können wir wohl übergehen.

8-2 Hostname

Der Raspberry kann neben der IP-Adresse auch über einen Namen im Netzwerk angesprochen werden, den sogenannten “Hostname”. Dieser kann hier geändert werden.

8-3 Memory Split

Der Raspberry besitzt über eine eingebaute Grafikkarte. Diese teilt sich mit dem Prozessor den Hauptspeicher. Über diese Option kann man dann diese Aufteilung anpassen. Wird im Standard nicht benötigt.

8-4 SSH

Wie oben beschrieben, verfügt der Raspberry über eine Remote-Schnittstelle. Über SSH kann man so bspw. mit Putty auf das System zugreifen. Möchte man diese Option abschalten, ist man hier richtig.

8-5 Update

Aktualisiert das raspi-config Tool.

9 About raspi-config

Ein Hinweisdialog zum Konfigurationstool.

Schritt 7: Einige Grundbefehle

Einige wichtige Grundbefehle erhalten Sie nachfolgend:

Neustart des Systems: sudo reboot

Herunterfahren des Systems: sudo shutdown

Updates installieren: sudo apt-get update und danach apt-get upgrade

Name für das Raspberry-Windows steht fest “Windows 10 IoT for Small Device”

Auf der WinHEC 2015 ging Microsoft näher auf Windows 10 für das Internet of Things ein: WinHEC 2015

IoT-1

Quelle: https://blogs.windows.com/bloggingwindows/2015/03/18/windows-10-iot-powering-the-internet-of-things/

Es wird drei Versionen geben:

  • Windows 10 IoT for Industrial Devices
  • Windows 10 IoT for Mobile Devices
  • Windows 10 IoT for Small Devices. Diese Version wird wohl den Raspberry Pi kommen. Sie kann mit 256 MB RAM laufen und besitzt keine grafische Oberfläche.

Eine Session zeigte offensichtlich auch, wie man mit Windows 10 auf GPIO, I2C und UART zugreifen kann, hierfür wird es eine eigene API geben.

Weitere Infos gibt’s bei heise online.

 

RP6 wieder fit… Encoderproblem gelöst

Nachdem mich unser AREX RP6 die letzten Wochen ziemlich geärgert hat, schnurrt er nun wieder wie ein Kätzchen. (Damit kann dann auch endlich die Pixy-Anbindung begonnen werden).

Grund waren ständige Motorprobleme. RP6 blieb leider ständig mit Motorwarnungen stehen, ein Kalibrieren der Encoder war zwar zeitintensiv, aber nicht zielführend 🙂

Die Lösung brachten neue Drehgeber. Der Einbau war innerhalb weniger Minuten erledigt. Auch lassen sich nun die Potis deutlich besser einstellen.

Neue und alte Drehgeber:

RP6Encoder

Die Anleitung zur Kalibrierung der Encoder findet sich übrigens hier.

Hier noch ein Bild des frisch umgebauten RP6:

Rp6