Posts mit dem Label ti werden angezeigt. Alle Posts anzeigen
Posts mit dem Label ti werden angezeigt. Alle Posts anzeigen

27.02.2015

Energia: Arduino in rot für den MSP430 und ARM

Was ist Energia?

Wer gerne mit der Arduino-IDE arbeitet, aber mal den MSP430-Controller von TI benutzen möchte, für den ist die Energia-IDE ideal.

Das Energia-Projekt nimmt die originale  Arduino-IDE und hat die Libraries auf den MSP430 portiert. Außerdem wurde die IDE eingefärbt :-) Ergebnis ist, daß die meisten Arduino-Sketches fast direkt benutzt werden können! Auch das übrige Handling ist identisch zur Arduino-IDE - man muß sich also nicht umgewöhnen. Es gibt natürlich einige Hardware-Unterschiede zwischen den Prozessor-Familien, aber die-Arduino-IDE/Libraries abstrahiert die Hardware so gut, daß das beherrschbar ist.

Das Energia-Projekt wurde von einem TI-Mitarbeiter gestartet. Er arbeitet jetzt Vollzeit daran.

Boards

TI bietet extrem preisgünstige Boards (TI-Launchpad) an. Sie haben alle eine USB-Schnittstelle und können direkt angesprochen werden -es muß auch kein Bootloader installiert werden. Fertige Projekte können die Boards nutzen, oder man kann die MSP430-Chip aus dem Board nehmen und in der Ziel-Schaltung einsetzen.

MSP430

MSP430-Prozessoren arbeiten mit 16 Bit haben etwas mehr Dampf als AVRs. Außerdem sind sie recht preisgünstig und einige bieten Features, die es bei AVRs nicht so gibt, z.B. nichtflüchtiges FRAM.

ARM-Cortex

Neben dem MSP430 werden auch diverse Arm-Cortex-Boards mit bis zu 120MHz Takt und 1MB Flash/256kB RAM unterstützt.

WiFi / IoT mit CC3200

We WiFi braucht kann ein CC3200 nehmen - auch das läuft mit Energia.

Installation


Installation unter Ubuntu 12.04 war bei mir sehr einfach: tar.gz auspacken, und starten. Vorher musste noch eine udev-Regel angepasst werden, damit die IDE Zugriff auf USB hat, das geht so:

die Datei
/etc/udev/rules.d/46-TI_launchpad.rules
anlegen und folgende Zeile dort eintragen:
ATTRS{idVendor}=="0451", ATTRS{idProduct}=="f432", MODE="0660", GROUP="plugdev"
anschliessend
sudo restart udev

USB einstecken, fertig. Nun kann die IDE benutzt werden.

Insgesamt ein sehr interessanter Ansatz, die etwas sperrigen Entwicklungstools durch was leichteres zum Einstieg zu ersetzen. Auf der Energia-Website gibt es jede Menge professionell aufbereiteter Infos, Tutorials, etc.

18.01.2014

Internet of things, Sensordata in the cloud: eine Bluetooth-Low-Energy-Wetterstation mit dem Raspberry Pi

Mal ein Wochenendprojekt ohne Löten

In den letzten Jahren gibt es interessante Entwicklungen im Bereich Sensoren (MEMS-Sensoren), Computer (Raspberry Pi!), Services (Cloudservices) und Datenübertragung per Funk (Bluetooth Low Energy).

Mit einem Raspberry Pi, einem Sensorträger von Texas Instruments und etwas Code kann man das ganz einfach selbst mal anwenden! Und zwar ganz ohne löten.

Code:

https://github.com/hermann-kurz/weatherstation-sensortag

Sensoren! Texas Instruments Sensor Tag

Bei Texas Instruments gibt es für 25$, das sind keine 20 € (inklusive extrem schnellem Versand!) das TI Sensor Tag, das gleich sechs Sensoren für folgende Meßgrößen enthält:
  • Luftfeuchtigkeit
  • Luftdruck
  • Magnetfeld
  • Gyroskop
  • Beschleunigung
  • diverse Thermometer
  • kontaktloses Infrarot-Thermometer
Die Sensoren hängen an einem I2C-Bus, der von einem CC2541-System-on-Chip gesteuert wird. Der CC2541 hat Bluetooth-Low-Energy an Bord, über das das Sensortag angesprochen werden kann. Die Firmware kann über Bluetooth upgedated werden, das Sensor Tag ist eine Demo-Anwendung für TIs Bluetooth-Technologie.


Bluetooth Low Energy

Bluetooth Low Energy (BLE) ist auf geringen Energieverbrauch getrimmt, ein Ziel ist der jahrelange Betrieb von Sensoren mit einer Knopfzelle. Das TI Sensor Tag schafft das zwar nicht ganz, ist aber dennoch ziemlich beeindruckend.

BLE ist noch nicht besonders weit verbreitet. Neuere iPhones/iPads und einige wenige Android-Geräte beherrschen es aber schon. Dafür gibt es von Texas Instruments Apps, die direkt mit dem Sensor Tag kommunizieren können. Quellcode ist ebenfalls verfügbar.

Auslesen der Daten mit dem Raspberry Pi

Um die Daten mit einem Raspberry Pi auszulesen, braucht man ein BLE-fähiges USB-Dongle. Ich bin nach der Anleitung von Michael Saunby vorgegangen und habe das Plugable usb-bt4le verwendet. Dazu muß man eine neuere Version des Bluez-Bluetooth-Stacks für Linux compilieren um BLE-Support zu erhalten.

Ian Harvey hat darauf basierend eine Python-Library geschrieben, die er auf GitHub zum Download bereitstellt. Wenn man die Library gebaut hat (etwas Fummelei nötig) kann man das TI Sensor Tag direkt von Python aus ansprechen und die Messwerte auslesen!

Wetterhäuschen

Zählt man man die Sensoren so durch, sieht man, daß das Sensor Tag eigentlich eine verkleidete Wetterstation ist - drahtlose Anbindung inklusive!

Da der Sensor im Freien hängen soll, aber nicht direkt der Witterung ausgesetzt sein darf, haben meine Tochter und ich (danke Johanna!) ein Wetterhäuschen ganz grob nach dieser Anleitung gebaut.

Das Wetterhäuschen haben wir aus ein paar Holzleisten und Lamellenelementen aus dem Baumarkt zusammengeschraubt und geleimt. Dann mit wetterfestem weissem Lack angemalt.


Sieht total professionell aus. Den Deckel kann man aufklappen, dort ist ein Metallwinkel verschraubt, an dem das Sensortag per Kabelbinder befestigt ist, so daß es ziemlich mittig im Wetterhäuschen hängt.

Tempo-DB: Daten in der Cloud

Nächster Schritt ist das Speichern der Daten. Normalerweise stopft man die  in eine Datenbank und kann dann später schöne Graphen damit zeichnen. Das geht auch wunderbar auf dem Raspberry Pi, ist aber langweilig (kann ja jeder). Viel interessanter ist es, das mal einem darauf spezialisierten Anbieter zu überlassen.

Tempo-DB ist ein solcher Anbieter. Dessen Datenbank ist für Sensordaten optimiert, die pro Messung eine Timestamp/Messwert-Paar umfassen. Dafür sind es extrem viele Daten, die mit der Zeit anfallen können. Tempo-DB sorgt für Verfügbarkeit, Backups, Betriebssicherheit. Das lässt sich Tempo-DB normalerweise bezahlen, aber es gibt einen kostenlosen Plan, mit dem man bis zu 5 Millionen Datensätze speichern darf. Wenn jede Minute ein Datensatz anfällt, reicht das für knapp zehn Jahre, ist also für eine einzelne Wetterstation erstmal OK.

Einzige Voraussetzung ist ein Internetanschluss. Tempo-DB hat ein nettes REST-API, das man über Libraries benutzen kann, die in verschiedenen Script-Sprachen vorliegen.

Ich benutze in diesem Fall Python, da die Sensoren ja ebenfalls mit Python ausgelesen werden. Dazu habe ich Ian Harveys Beispiel-Script ein bischen angepasst, es steht auf Github zum Download bereit. Das Script rechnet auch noch gleich den gemessenen lokalen Luftdruck in den äquivalenten Luftdruck auf Meereshöhe um (mit der barometrischen Höhenformel, YEAH SCIENCE!!).

Tempo-DB hat ein schönes Backoffice, in dem man sich die erfassten Daten anschauen kann. Das sieht dann so aus:



Probleme, To-Dos, Workarounds

Batterielaufzeit

Mit einer CR2032-Knopfzelle habe ich bis jetzt leider nur eine Laufzeit von etwa zehn Tagen erreicht, obwohl die Sensoren nur alle fünf Minuten eingeschaltet und abgefragt werden. Eine CR2032-Zelle hat etwa 220 mAh, d.h. das Tag braucht etwa 1 mA - das ist zu viel. Mir ist noch nicht klar, warum.

Als Workaround werde ich zwei Monozellen als Energiequelle nehmen, dort passen 22 Ah rein, also etwa hundert mal soviel

Reichweite

Die Bluetooth-Reichweite beträgt nur wenige Meter, durch eine Holzwand nach draussen ging erstmal nichts. Ich musste mit dem Bluetooth-Adapter am USB-Kabel rumhantieren, jetzt komme ich auf fünf Meter.

Code

Der Code ist nicht sehr schön :-)
https://github.com/hermann-kurz/weatherstation-sensortag

Start

Bevor das Python-Script Kontakt zum Sensor aufnimmt, muß das Sensor-Tag erst mit einem

hcitool lescan

erkannt worden sien.


TI Sensor Tag
User Guide auf dem Sensortag-Wiki
Plugable usb-bt4le
Bluez-Bluetooth-Stack
https://github.com/IanHarvey/bluepy