Projekte

Archiv der Kategorie: Projekte

Lichts aus, LEDs an

Gestern hat das Projekt Sentient Light einen wichtigen Meilenstein erreicht – die erste Seite der Baumsäule erstrahlt in rund 600 LEDs. 

Aber der Reihe nach: Unter Federführung von Matthias hat das Elektronik Team die Stromversorgung einer Seite des Baums fertiggestellt. Um die 5m langen LED Streifen kontinuierlich mit der benötigten Spannung von 5 Volt zu versorgen, kommen auf jeder der vier Seiten der Säule zwei DC-DC-Wandler zum Einsatz. Diese wandeln die 12 Volt, welche das Netzteil bereitstellt, in 5 Volt um. Die LED Streifen besitzen jeweils vier Einspeispunkte, welche mit 5 Volt versorgt werden.

Verkabelung einer Baumsäule

Bevor die DC-DC-Wandler an der Säule angebracht werden konnten, wurden sie in flammenhämmenden Aufputzdosen platziert und mit Kabeln für Ein- und Ausgänge versehen. Die Kabelstränge wurden anschließend an der Säule hochgeführt und in teils luftigen Höhen an die DC-DC-Wandler gelötet.

DC-DC-Wandler in einer Aufputzdose

Dank der Unterstützung der Baumhaus Crew bestehend aus Simon, Max und Ule konnten wir die erste Baumseite tatsächlich kurz vor Mitternacht zum Leuchten bringen. Bevor der Baum in vollem Glanz erstrahlen kann folgen im Laufe der nächsten Woche die restlichen drei Seiten.

Die Ostseite des Baums

Eclipse zur nRF51822-Entwicklung Setting up Eclipse to develop for the nRF51822

Wir sind zwar sehr geschickt im Umgang mit der Konsole bei der Entwicklung von Firmware für den nRF51822: Man muss nur openocd mit -c „set WORKAREASIZE 0;“ und der passenden openocd.cfg starten und kann dann mit arm-none-eabi-gdb mycode.elf/.hex den eigenen Code testen.

Manchmal möchte man aber Eclipse verwenden: Es ist eine schöne graphische, plattformübergreifende Oberfläche, in der alle notwendigen/nützlichen Entwickler-Features bequem als Buttons oder festeinstellbare Konfigurationsoptionen bereit stehen.

Wir haben mal Nordic’s Tutorial zur Verwendung von Eclipse ausprobiert. Teilweise sind wir anders vorgegangen, u.a. da wir nicht eins der offiziellen Developer Boards, sondern unsere eigenen JTAG-Adapter mit einem Waveshare Core51822 verwenden. Unser Vorgehen möchten wir hier kurz präsentieren:

Zunächst lädt man die aktuellste, stabile Eclipse IDE für C/C++ Entwickler herunter. Bei uns ist das Mars bzw. Mars 2.

Um die GNU ARM-Tools vonhttp://gnuarmeclipse.github.io/debug/openocd/ zu installieren, muss man eine neue Quelle in Eclipse hinzufügen:
http://gnuarmeclipse.sourceforge.net/updates
Dann muss man installieren, (fast) wie es im Tutorial aufgelistet wird:

  • Cross Compiler
  • Packs
  • OpenOCD

und das GDB via OpenOCD-Tool.

Wie hier beschrieben, kann man es dann in Eclipse > Run Configurations > GDB via OpenOCD hinzufügen.

ICprog debuggt nRF51822 ICprog debugs nRF51822

Nach anfänglichen Schwierigkeiten, konnten wir den ICprog von InCircuit.de heute sowohl unter Windows als auch unter Linux in Betrieb nehmen. Mit der Hilfe von Paul Fertser vom #OpenOCD-Kanal auf Freenode konnte eine funktionierende OpenOCD-Konfiguration für den Adapter erstellt werden.

Hinweis: Die LEDs auf der Platine leuchten nur bei Verwendung der seriellen Schnittstelle (Port B), nicht bei Verwendung von JTAG/SWD.

Unter Windows war zunächst das Problem zu lösen, dass libusb nicht gefunden und nach Installation als nicht kompatibel bemängelt wurde. Ein Blick in die Installations-Quellen von OpenOCD genügte, um dies zu lösen: In einem Unterordner gibt es ein README, in dem die entsprechend nachzuinstallierende libusb-Windows-Software verlinkt ist. Danach funktioniert der Adapter.

Unter Linux wollte openocd den Adapter zunächst nicht im SWD-Transfer-Modus betreiben:

Nach kurzer Fehlersuche wurde uns klar, dass das Ubuntu-Paket OpenOCD in der veralteten Version 0.7.0 vertreibt. Zum Aktualisieren haben wir den Quellcode geklont (Version 0.10.0) und selbst kompiliert, was reibungslos von Statten geht:

und als Superuser:

Über den SWD Widerstands-Hack mit einem 430 Ohm-Widerstand konnte nun erfolgreich der nRF51882 auf dem Waveshare Core51822-Board gedebuggt werden:

Man beachte, dass der Jumper auf dem ICprog NICHT gesetzt sein darf. Der nRF51 muss von einer externen Spannungsquelle (oder Batterie) mit 3V / 3.3V versorgt werden, keinesfalls mit 5V vom ICprog.

In-Circuit’s ICprog JTAG-Adapter ausprobiert Testing In-Circuit's ICprog JTAG-Adapter

Heute haben wir uns den JTAG-Adapter „ICprog“ von In-Circuit.de angeschaut. Der Schaltplan des Adapteres steht auf der Artikel-Seite im Shop zur Verfügung. Im Wiki des Unternehmens finden sich außerdem eine allgemeine Beschreibung mit Pin-Belegung sowie eine Beschreibung der Verwendung mit OpenOCD.

Dass der Schaltplan bereitsteht, erfreut uns und ermöglichte uns das Anschließen des nRF51822 unter Zuhilfenahme des JTAG-zu-SWD Widerstands-Hacks.

Kommunizieren konnten wir bisher leider nicht. Die Windows-Version von OpenOCD scheint Statements mit Präfix „ft2232“ nicht mehr zu akzeptieren (veralteter Syntax), sodass das Einbinden von interface/openocd-usb.cfg in unserer openocd.cfg fehlschlägt. Wir haben In-Circuit angeschrieben und hoffen auf ihre Hilfe bei der Erstellung einer funktionierenden openocd.cfg.

Erwähnenswert ist, dass sich ungewöhnlicherweise die Batterie erwärmte, welche den nRF51822 mit 3V versorgte, sowie die Adapterplatine (welches Bauteil genau, ist unklar). Wir haben darauf geachtet, nicht die 5V vom USB (mit der auf der Platine vorhandenen Brücke) auf den Ausgang zu legen, da der nRF51822 nicht 5V-tolerant ist. Ob der Adapter auf 3V kommunizieren kann und ob die Pin-Belegung in unserem Aufbau korrekt war, könnte nochmal geprüft werden (Man beachte, der Adapter hat am Ausgang das Pin-Layout eines AVR-JTAG-Adapters, nicht das eines ARM-10pin-Adapters)

Bilder vom Adapter:
713235486_151337 Platine von oben
Platine von unten Ausgang

Wir wollen eine WunderBar!

Auf der diesjährigen Maker Faire in Berlin hatten wir erstmals Gelegenheit Relayr.io’s WunderBar live zu bestauen. Die WunderBar ist ein Starter Kit für das IoT – das Internet der Dinge.

Internet der Dinge bezeichnet die Erweiterung alltäglicher Gegenstände mit einem Mikroprozessor, der sich mit Mikroprozessoren in anderen Geräten vernetzen kann. Der Prozessor erweitert über Sensoren und Aktoren die rein „mechanische“ Funktion des jeweiligen Gerätes durch Funktionen, welche erst durch den Informationsaustausch mit anderen Geräten möglich werden.

Am Beispiel der WunderBar geschieht der Informationsaustausch über Funk, genauergesagt Bluetooth Low Energy, realisiert mithilfe des Nordic Semiconductor nRF51822. Wir hatten unlängst schon auf diesem Blog über den Chip berichtet.  Er ist seinen Konkurrenzprodukten durch seine ausführliche Dokumentation voraus, welche die Firmware-Entwicklung erheblich erleichtert.

Auf der WunderBar finden sich ein Hauptmodul und sechs BLE-Module. Das Hauptmodul enthält neben dem nRF51822 einen Freescale-Prozessor und einen WLAN-Chip. Durch die letzteren beiden kann über den heimischen Router eine Anbindung ans Internet realisiert werden. Verbindet man das Haupt-Modul darüber mit Relayr.io’s Cloud, so kann man auch von unterwegs mit den heimischen Module interagieren.

Die sechs BLE-Module tragen neben einem nRF51822 jeweils Sensor und/oder Aktor, z.B. eine LED, ein Gyrometer, ein Accelerometer usw. Versorgt werden die BLE-Module mit Knopfbatterien auf der Rückseite, das Hauptmodul mit einem flachen Akku.

Sowohl Hardware als auch Software sind offen und frei verfügbar. Update 30.11.2015: Leider ist nur die Hardware offen und gut dokumentiert. Die Software ist, bis auf ein paar C-Bibliotheken zum Auslesen der Sensor-Werte, Closed Source.

Nachdem wir uns ohnehin mit dem nRF51822 auseinandersetzen und bereits dabei sind, Lösungen zu entwickeln, welche die WunderBar teilweise schon abdeckt, haben wir uns zwei „WunderBarren“ bestellt. Wir freuen uns darauf, erste Schritte damit zu unternehmen!

App installieren Fdroid

Die Lymbo Android App kann nicht über den Google Play Store heruntergeladen werden.

Stattdessen kann sie über Fdroid installiert und aktualisiert werden. Fdroid ist eine alternative Plattform für Android Apps, auf der ausschließlich freie und offene Software zu finden sind.

Wie bekomme ich Fdroid?

Um F-Droid auf einem Android Telefon installieren zu können, muss in den Sicherheitseinstellung die Installation von Apps aus anderen Quelle als dem Play Store aktiviert werden.

lymbo-fdroid-01     lymbo-fdroid-02

Die Fdroid App kann kostenlos von https://f-droid.org heruntergeladen werden.  Durch Ausführen der heruntergeladenen apk Datei wird die Installation von Fdroid gestartet.

Wie bekomme ich Lymbo?

Nachdem Fdroid installiert ist, kann das Repository von Interoberlin zu den Paketquellen hinzugefügt werden. Dazu kann im Menü „Paketquellen verwalten“ durch Tippen auf den + Button die Adresse einer neuen Paketquelle hinzugefügt werden.

lymbo-fdroid-03

In diesem Fall muss als Quelle https://fdroid.interoberlin.de/release/repo angegeben werden. Anschließend sollte das Aktivieren der Quelle und ein Tippen auf den Aktualisieren Button ausreichen um Zugriff auf das Interoberlin Fdroid Repository zu haben.

lymbo-fdroid-04

Im Hauptbildschirm der Fdroid App sollten jetzt alle Apps von Interoberlin zu finden sein – unter anderem auch Lymbo. Mit einem Tippen auf die Lymbo App erscheinen Details zur App. Die Installation wird durch ein Tippen auf den + Button gestartet.

lymbo-fdroid-06    lymbo-fdroid-07

Programme für’s Fairphone compilieren

Rein technisch unterstützt das Fairphone Bluetooth Low Energy (BLE), aber es gibt (nach  unserem Kenntnisstand) kein Android-Image, was diese Fähigkeit des SoC aufgreifen könnte, da erst ab 4.3 (API Level 18) ein Interface für BLE implementiert ist.

Wir kamen daher auf den Gedanken, evtl. auf einer „tieferen Linux-Ebene“ außerhalb der Android-VM die BLE-Fähigkeiten des SoC zu testen. Unter Umständen besteht nämlich die Möglichkeit, BLE durch eine in der APK mitgelieferte System-Bibliothek auch dann einer App zur Verfügung zu stellen, wenn die VM kein Interface dafür anbietet.

Der im Fairphone verbaute SoC ist der MediaTek MT6589. Er hat vier Kerne, die den ARMv7-Instruktionssatz (Quelle) implementieren und enthält außerdem laut Spezifikation den besagten Bluetooth 4.0-fähigen Transceiver.

In einem ersten Test versuchten wir mithilfe eines ARM-Cross-Compilers ein simples printf(„Hello world2“); – Programm zu übersetzen. Dabei darf man nicht vergessen, mit dem Kommandozeilenparameter -static zu linken:

Mit adb push haben wir die resultierende, ausführbare Datei auf das Telefon gespielt und konnten sie dann in der adb shell ausführen.

Nun können wir beginnen, unsere Werkzeuge auf das Telefon zu spielen und testen, ob wir von der Kommandozeile aus Bluetooth nutzen können.

Links:

nRF51822 – Ein Blick auf den Die

Die Zeptobars-Gruppe hat sich die Arbeit gemacht, den beliebten Bluetooth Low Energy-Chip nRF51822 von Nordic Semiconductor von seinem Package zu befreien und ein Foto des Die veröffentlicht.

http://zeptobars.ru/en/read/nRF51822-Bluetooth-LE-SoC-Cortex-M0

Wir haben uns das Bild mal angesehen.

nRF51822

Neben zwei großen Gate-Seen sind noch drei Blöcke zu erkennen, die mutmaßlich als DC-DC-Wandler, Funk-Einheit (rechts unten), SRAM (links unten) und Flash (rechts oben) zu identifizieren sind. Ringsherum an den Rändern sind deutlich die Pads zu erkennen, welche im Package auf die BGA-Kugeln herausgeführt werden.

Am rechten Rand der mutmaßlichen Radiofrequenz-Einheit findet sich die Aufschrift „RADIO 434S RS“ bzw. „RADIO 4345 R5“. Die beiden ringförmigen bzw. oktogonalen Konstrukte könnten Spulen d.h. Induktivitäten sein, die am 2.4GHz-Schwingkreis teilhaben. Die benachbarten rechteckigen Flächen könnten dann entsprechend Kapazitäten sein. Die Funktion der sechs quadratischen Windungen ist unklar, möglicherweise Resonatoren bzw. Taktgeber (Clock oder PLLs). Sowohl Spulen als auch Quadrate könnten aber auch ein oder mehrere DC-DC-Wandler darstellen.

Der RAM-Block ist erkennbar am Vorhandensein der Adress- bzw. Daten-Multiplexer, die auf der linken Seite über und unter den horizontal verlaufenden Spannungsversorgungssträngen herausschauen. An der unteren Kante des Blocks dürfte außerdem der Puffer zu sehen sein, der die aus der Speichermatrix abgerufenen Daten zwischenspeichert und ggf. weiter auswählt. Die Dicke und langstreckige Verzahnung der Spannungsversorgungsleitungen über dem SRAM dient vermutlich der Konstruktion einer lokalen Kapazität, welche zeitlich variablen Strombedarf unter Vermeidung von Leitungsinduktivitäten puffert.

Den Flash-Speicher kann ich nicht klar identifizieren, vielleicht ist es der Teil rechts oben, insbesondere die drei kleinen, zweigeteilten, hellblau-erscheinenden Quadrate, an deren Rändern sich augenscheinlich Multiplexer befinden. Dagegen spricht, dass diese Elemente überraschend klein wären.

Die beiden Gate-Seen gehören vermutlich zum selben Logik-Block, nämlich dem Prozessor mitsamt aller seiner Komponenten, ALU etc. Die Verdrahtung erinnert an Bilder von Qrouter, d.h. aus einem generischen Transistor-Modell um die übrigen Die-Blöcke herumfließend generiert. Links oben scheint der See nicht komplett gefüllt d.h. ausgenutzt zu sein.