Archiv der Kategorie: Projekte

Informationen und Ankündigungen zu Mainzer Chaos Projekten

Embedded Arduino Entwicklung mit PlatformIO

In letzter Zeit ist bei uns vor Ort das ESP8266-Fieber ausgebrochen!
Der ESP8266 ist ein sehr kleiner Microcontroller, recht preiswert, mit amtlich Dampf unter der Haube, wenig Energieverbrauch und als Sanehäubchen oben drauf: WLAN!!1!
Eine sehr interessante Plattform, womit sich sehr interessante Projekte und Ideen umsetzen lassen.
Deshalb gibt es diese bei uns hin und wieder im Getränkeautomaten (meist nur kurz, weil sofort ausverkauft..).

ESP8266 & Arduino & PlatformIO

Und was hat der ESP8266 jetzt mit Arduino zu tun?
Hier muss man ein bisschen differenzieren, denn das Arduino Projekt besteht aus mehreren Komponenten. Dies sind:

  • die Hardware → Microcontroller Boards: z.B. Arduino Uno, Arduino Mini, Arduino Nano…
  • die Entwicklungsumgebung (IDE) → das Programm, das auf dem lokalen Rechner läuft, um dort zu programmieren, kompilieren, Hardware zu flashen..
  • das Framework → ein großes Paket an Bibliotheken, Funktionen & Helfern die eine von der Hardware unabhänige Programmierung erlauben.
  • (… und vieles mehr)
Besagtes Framework wurde für den ESP8266 portiert.
Das heißt: Wer schon mal ein Programm für einen Arduino Microcontroller geschrieben hat kann nun auch, ohne groß umzulernen, den ESP8266 programmieren.
Und was ist PlatformIO?
PlatformIO ist ein quelloffenes
„Ökosystem“, das es ermöglicht für eine große Reihe von Microcontrollern auf Grundlage einiger Frameworks zu entwickeln.
(Zum Beispiel lassen sich damit Arduino Microcontroller mit dem Arduino-Framework programmieren..)
Dazu gibt es die PlatformIO IDE, die als Plugin für den Text-Editor Atom daherkommt, und damit PlatformIO aus dem Editor heraus kontrollierbar macht.
Mir persönlich sagt die Arduino IDE nicht sehr zu. Also hab ich mich auf die Suche nach Alternativen begeben, und eben PlatformIO entdeckt.
Aller Anfang ist schwer, um Abhilfe zu schaffen, möchte ich in diesem Artikel ein paar Dinge behandeln:
  • Wie man PlatformIO installiert und zum laufen bekommt.
  • Darin ein neues Projekt erstellt.
  • Dieses kompilert, um das auf den ESP8266 zu flashen.
Natürlich lässt sich PlatformIO auch ohne die IDE nutzen, und/oder alle dazu benötigten Komponenten separat installieren.
Dies würde aber den Rahmen des Artikels sprengen, ich beschränke mich auf die Installation mittels Atom-Plugin, da dieses alle Abhänigkeiten mitbringt.

Packliste

  • Als Basis: Den Atom Text Editor.
  • Das PlatformIO IDE Editor Plugin (installiert man in Atom selbst, siehe unten)
  • Clang aus dem LLVM Projekt. Bei der Installation des Plugins wird erkannt, dass Clang fehlt, und es wird ein passender Download angeboten.
  • Einen ESP8266 natürlich. Im Beispiel nutze ich das NodeMCU DEVKIT 1.0 von Amica (das Selbe wie in diesem Artikel hier).
  • Serielle Treiber passend zum Betriebssystem und dem ESP8266.
    Das NodeMCU DEVKIT hat einen CP2102 verbaut, das wären dann die CP210x USB to UART Bridge Virtual COM Port (VCP) Treiber von Silicon Labs.

Installation

Treiber

Falls noch nicht vorhanden, beginnt man mit dem seriellen Treiber. Die Installation variiert je nach Betriebssystem und dem ESP8266.

  • Auf dem Mac lohnt sich der Blick in Homebrew, der Treiber für den CP210x z.B. ist mit dabei:

    brew tap caskroom/drivers
    brew install silicon-labs-vcp-driver
  • Für Wintendo gibt es einen Installer auf der Website.
  • Linux: ja!
  • FreeBSD: CP210x Treiber sind mit im Basissystem: uslcom stellt z.B. /dev/cuaU0 bereit.

Atom Text Editor

Die Installation von Atom selbst bedarf hoffentlich keine größere Erklärung: Die neueste Version herunterladen, und installieren..

atom welcome

Danach begrüßt uns der „Welcome Guide“
Den Haken vor „Show Welcome Guide when opening Atom“ sollte man getrost weg machen.

PlatformIO IDE

Es folgt die IDE: In Atom geht es in die Einstellungen (File > Settings), dort findet sich in der linken Leiste unten der Punkt Install.

install ide
Dort nach platformio-ide suchen, und schön brav auf Installieren klicken…

Das ganze dauert ein bisschen, es wird ein eigener Python Interpreter (2.7) installiert, Platformio selbst als Package darin registriert, und weitere Abhängigkeiten vom Plugin selbst werden installiert (Debugger, Terminal)…

LLVM/Clang

Bei der Installation wird erkannt, dass Clang auf dem System nicht vorhanden ist:

clang missing

Dieser Schritt ist nicht zwingend notwendig, wird aber wärmstens empfohlen.

Unter Windows muss man LLVM der PATH Variable hinzufügen lassen.

clang options

Ob das geklappt hat, kann man in der cmd.exe überprüfen:
Gibt man dort echo %PATH% ein, dann sollte die Ausgabe das hier (oder so ähnlich) mit enthalten: C:\Program Files\LLVM\bin;

Konfigurieren

install finished
Hurra, wir sind endlich fertig.
Nach dem Neustart erscheint ein neuer Menüpunkt namens PlatformIO.
Ein Blick in die IDE Settings (PlatformIO > Settings > PlatformIO IDE) lohnt sich:
disable homescreen
Nein, danke, ich möchte gerne sofort losarbeiten, und nicht jedes mal das Zeug wegklicken…
disable login
Habe keinen Account, brauchst mich auch nicht jedes mal wieder danach fragen, danke…

Programmieren

Jetzt können wir loslegen, dazu brauchen wir ein neues Projekt (PlatformIO > Initialize or Update PlatformIO Project):

initialize project

Das NodeMCU DEVKIT hat einen ESP8266-12E verbaut.
Dann noch einen neuen Ordner dazu, fertig.
Fehlende Plattformen/Bibliotheken werden automatisch nachinstalliert.

Innerhalb des Projekts wird im src Ordner der eigene Code abgelegt:

new sourcefiles
Wir brauchen zwei Dateien:

  • src/main.hpp
  • src/main.cpp

main.hpp

Es lassen sich ordentliche Header Files schreiben. Wunderbar.
Wichtig ist, dass das #include <Arduino.h> niemals fehlen sollte. Auch müssen die Signaturen für setup() und loop() definiert werden.
#define LED_PIN D0 verweist auf den Pin der eingebauten Leuchtdiode. (Beim NodeMCU DEVKIT zumindest, ggf. anpassen)
Dazu noch zwei Methoden, damit das Beispiel nicht so langweilig wird.

#ifndef __main_hpp__
#define __main_hpp__

#include <Arduino.h>

#define LED_PIN D0

void setup(void);
void loop(void);

void flashLed(void);
String getUptime(void);

#endif

main.cpp

Hier nicht vergessen, die main.hpp einzubinden.

#include "main.hpp"

void setup(void) {
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, HIGH);
  Serial.begin(112500, SERIAL_8N1);
  Serial.println("setup() done");
}

void loop(void) {
  flashLed();
  delay(2048);
  Serial.println("uptime: " + getUptime());
}

void flashLed(void) {
  digitalWrite(LED_PIN, LOW); delay(256);
  digitalWrite(LED_PIN, HIGH); delay(128);
  digitalWrite(LED_PIN, LOW); delay(256);
  digitalWrite(LED_PIN, HIGH); delay(128);
}

String getUptime(void) {
  unsigned long sec = millis() / 1000;
  unsigned long min = sec / 60;
  unsigned long hrs = min / 60;
  unsigned long day = hrs / 24;
  sec = sec - (min * 60);
  min = min - (hrs * 60);
  hrs = hrs - (day * 24);
  static char res[16];
  if (day >= 1) {
    sprintf(res, "%dd %02d:%02d:%02d", day, hrs, min, sec);
  } else {
    sprintf(res, "%02d:%02d:%02d", hrs, min, sec);
  }
  return String(res);
}
Es folgt der Moment der Wahrheit – Keine Fehler gemacht? Kompilert es?
In der linken Seitenleiste sind ein paar Schnellstarter:

  • Haken → Kompilieren
  • Pfeil → Kompilieren & Upload
  • Mülltonne → Aufräumen
compile and upload
Beim initialen Kompilieren oder Upload werden weitere Abhängigkeiten automatisch nachinstalliert..
Der Schnellstarter mit dem Stecker-Symbol öffnet den „Serial Monitor“

serial monitor
Den passenden Port auswählen, die Baudrate anpassen. Muss man nur einmalig machen, die Einstellungen werden gespeichert und beim nächsten mal mit vorgeschlagen. Nett.
Erfolg! Freude! Wir sind fertig!

final
Auf dem Schreibtisch liegt nun ein ESP8266, der auf der internen LED fleißig blinkt, und die Uptime im seriellen Monitor anzeigt.

Fazit

Von Atom mag man halten was man will. Die Entscheidung einen bereits existierenden Editor zu erweitern finde ich aber gut.
Zumindest klüger als mit einer Eigenentwicklung anzutreten, so wie es bei der Arduino IDE der Fall ist.
Es existieren bereits eine Menge interessanter Plugins, die Oberfläche sieht schicker aus, die Keybord Shortcuts sind sinnvoll belegt..
An so Details, dass sich der Serielle Monitor automatisch beendet, wenn man versucht eine neue Firmware zu flashen, sieht man, dass jemand mitgedacht hat (würde die Verbindung offen bleiben, bricht der Flash-Vorgang mit einem Fehler ab → „Verbindung nicht möglich“).

Hübsch: Der Source-Code hat korrekte Dateiendungen, nicht mehr dieses unsägliche .ino oder .pde, das von keinem normalen Syntax-Highlighter erkannt wird.
Da am Ende alles ganz normaler C++ Quellcode ist, lässt sich auch komfortabel die #include Direktive nutzen.
Dies hilft ungemein bei größeren Projekten, um die Übersicht zu behalten.
Somit ist es ganz einfach möglich auch Objekt-Orientiert für die Microcontroller zu programmieren. Mach ich in letzter Zeit sehr gerne, und muss gestehen, erst dadurch ist die Arduino Plattform für mich interessant geworden…
Die Installation & Einrichtung macht man zum Glück nur einmal. Läuft alles wie es soll, kann man viel Freude am Programmieren haben!

Viel Spaß am Gerät!

Videoinstallation im Kunsthaus Wiesbaden

Im Zuge der Ausstellung „Berna Reale – über uns – zeitgenössische Kunst aus Brasilien“ haben wir eine Videoinstallation gebaut, mit der es möglich ist eine Playlist von 8 Videos auf einer beliebigen Anzahl von Displays oder Beamern auszugeben. Ebenso ist es möglich die ganze Anlage zeitgesteuert zu starten und zu beenden.Wir haben die Arbeit in einem Video dokumentiert.

Wer sich die Austellung noch vor Ort ansehen mag, sie läuft noch bis zum 16.04 und Eintritt ist frei.

Wenn die Funktion zum Hack wird

Seit Samstag, den 23.01.2016, steht der Online-Antrag für die Briefwahlunterlagen zur Kommunalwahl 2016 in Wiesbaden zur Verfügung. Soweit, so gut.

Der CCC Mainz isBSP_Logo_mit_lgt darauf aufmerksam gemacht worden, dass man über das Online-Antrags-Verfahren Adressdaten der Wahlberechtigen finden kann.

Für die Registrierung waren Name und Geburtsdatum nötig. Als Bestätigung des Antrages erhielt man einen Link zu einer PDF-Datei, in der sich Daten aus dem Wählerverzeichnis fanden, die vorher nicht eingegeben werden mussten: Die Adresse (und zusätzliche Vornamen, derer der Wiesbadener Oberbürgermeister zwei hat, die auf Wikipedia nicht vorkommen).

Nach kurzem Gegentest bei anderen Mitgliedern war klar, dass es sich hier um einen fahrlässigen Fehler handelt. Ebenso war es möglich, mehrere Anfragen von der gleichen IP-Adresse kurz hintereinander zu schicken, ohne auf CAPTCHAs oder ähnliches zu stoßen – sodass einer automatisierten Abfrage der Adressdaten aus dem Wählerverzeichnis nichts im Wege gestanden hätte. Ergebnis wäre eine Liste mit Namen, Geburtsdatum und Adresse von allen Wiesbadener Wahlberechtigten.

Für einen Proof of Concept wurde dann für den amtierenden Oberbürgermeister Sven Alfred Horst Gerich eine Briefwahl beantragt. Auch dies funktionierte ohne Hindernisse. OBDer Landesbetrieb AKDB, der das Bürgerservice-Portal betreibt, ist vom TÜV-Süd und vom BSI in Hinblick auf Datensicherheit zertifiziert worden.

 

Wir sehen es kritisch, dass die Webseite offenbar direkten Zugriff auf das Wählerverzeichnis hat und zudem ohne eine ausreichende Authentifizierung die Abfrage fremder Datensätze erlaubt. Dies ist mehr als nur ein „ärgerlicher Fehler“, wie es der stellvertretende Gemeindewahlleiter Rüdiger Wolf gegenüber dem ZDF formulierte. Wir kritisieren den leichtsinnigen Umgang mit den persönlichen Daten der Bürger und weisen darauf hin, dass auch andere Funktionen des Portals nur eine schwache Authentifizierung verlangen.

Adressdaten mögen auf den ersten Blick nicht besonders problematisch klingen. Aber eine Liste mit  Namen, Anschrift und Geburtsdatum sämtlicher Wiesbadener Wahlberechtiger birgt großes Potenzial für Missbrauch.

Desweiteren möchten wir darauf hinweisen, dass zur Zeit noch viel heiklere Daten über die Bürger erfasst werden. Auch wenn sie wahrscheinlich bei kompetenteren Diensten gespeichert werden, als die Wählerverzeichnisse, ist das Missbrauchspotenzial dieses „Datenreichtums“ und damit das Interesse daran ungleich höher.

Hier kann man die aktuell laufende Kampagne „Vorratsdatenspeicherung? Nicht schon wieder!“ unterstützen.

Wenn Sie kein Problem damit haben, dass jeder Ihren Namen, Adresse und Geburtsdatum hat, dann schicken Sie uns die, wir stellen sie online.

 

Voice Chat (Mumble) für alle

Wir haben uns dazu entschlossen, einen allgemein Verfügbaren Voice-Chat Service für alle anzubieten.

Wir haben uns für Mumble entschieden.

Ihr erreicht den Server in dem ihr euch mit dem Server cccmz.de auf Port 64738 verbindet.

Wir hoffen, euch damit eine einfache und sichere Möglichkeit geschaffen zu haben, um euch schnell koordinieren zu können und Absprachen zu tätigen.

Hier die Beschreibung aus Wikipedia die klar macht warum es Mumble geworden ist:

Funktionen

Die Software realisiert ein klassisches Client-Server-System. Der Client Mumble stellt eine grafische Oberfläche für Unterhaltungen und zur Administration bereit, der Server, der die Bezeichnung „Murmur“ trägt, realisiert das Back-End, über das die Gespräche laufen.

Der offizielle Client läuft unter Windows, Linux und Mac OS X. Für Android und iOS gibt es mehrere alternative Clients (z. B. Plumble). Der Server lässt sich auf beinahe beliebigen Systemen kompilieren und ausführen. Die einzige Voraussetzung ist, dass Qt 4.0 ebenfalls kompiliert werden kann.[1] Allerdings existiert auch ein ressourcensparender Server namens uMurmur, der Qt nicht voraussetzt und vor allem für den Einsatz auf Routern geeignet ist, aber einige Funktionen nicht beherrscht.[2]

Die Software nutzt die freien Audiocodecs Constrained-Energy Lapped Transform (CELT) und Opus[3] der Xiph.Org Foundation. Um Kompatibilität zu älteren Clients zu gewährleisten, wird Speex zum Dekodieren mitgeliefert. Mumble nutzt dabei die Fähigkeiten der Codecs zur Echo- und Rauschunterdrückung.

Weitere Funktionen sind:

  • vollständig verschlüsselter Datenverkehr
  • unterstützt Perfect Forward Secrecy
  • beliebige Erzeugung von Kanälen, die auch verschachtelt sein können
  • ein komplexes Rechtesystem, das auf Gruppen und Regeln basiert
  • Echounterdrückung (nur bei Verwendung von WASAPI auf Windows und PulseAudio auf Linux und wenn sowohl Audioeingabe als auch Audioausgabe dasselbe Soundsystem verwenden)
  • Overlay-Funktion, welche in DirectX 9/10 und OpenGL ein sichtbares Interface über die Benutzer im aktuellen Kanal anzeigen kann
  • Benutzerverwaltung in einer SQLite-Datenbank. Es sind aber auch andere Datenbank-Backends wie MySQL möglich.
  • Ermittlung der Spielerpositionen in manchen Spielen, womit sich Mumble so einrichten lässt, dass Sprachsignale aus Richtung der jeweiligen Avatare im Spiel kommen (sofern das Spiel von Mumble über ein entsprechendes Plug-in verfügt oder nativ unterstützt wird)[4]
  • variable Design-Anpassung des Mumble-Clients anhand von QSS-Skins.[5]
  • Zugriff auf Microsofts Text-to-Speech API und Linux’ Festival oder espeak Sprachsynthesizer, um Systemnachrichten und Text auszugeben
  • verfügbar als Installer für Windows, als Paket für diverse Linux-Distributionen und als Universal Binary für Mac OS X
  • WYSIWYG-Editor für HTML-Textnachrichten
  • Unterstützung für das Display der Logitech-G15-Tastatur
  • automatische Anpassung der Lautstärke des Mikrofons durch Automatic Gain Control
  • Aufnahmefunktion in die Dateiformate WAV, FLAC, Ogg Vorbis und AU. Neben dem Aufnehmen aller sprechenden Benutzer in eine Datei kann für jeden Benutzer eine eigene angelegt werden, das heißt in mehreren Tonspuren aufgenommen werden.

Mumble ist ein cooles Projekt, wenn ihr unseren Dienst mögt könnt ihr gerne direkt an das Projekt spenden. Das geht hier

80 Minuten Freiheit

 

Der CCCMZ gestaltet zusammen mit dem hessischen Staatstheater Wiesbaden das Stück

„80 Minuten Freiheit.“

Auf einem Gang durch die Stadt, geleitet und begleitet von Stimmen im Ohr, konfrontieren wir Geschichte, Gegenwart und Zukunft – und uns selbst. Wie frei sind wir wirklich? Für welche Freiheit lohnt es sich zu kämpfen? Und was passiert nach 80 Minuten?

Seid gespannt.

Karten und weitere Infos gibt es hier

Presse Echo:
Wiesbadener Kurrier Video Bericht
Stuz
Sensor Wiesbaden

Frankfurter Rundschau