Posts mit dem Label Raspberry Pi werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Raspberry Pi werden angezeigt. Alle Posts anzeigen

03.09.2015

Bluetooth-Wetterstation mit dem TI Sensortag

Neue Version der Wetterstations-Software

Vor einiger Zeit wurde hier eine Anleitung zum Bau einer Wetterstation mit dem TI-Sensortag gepostet.

Nachdem man  nicht mehr einfach einen kostenlosen TempoDB-Account bekommen kann, ist es Zeit, für eine zweite Version der Wetterstationssoftware für das Texas-Instruments-Sensortag. Sie nutzt  nun den Service von thingspeak.com zum Speichern und Visualisieren der Messdaten. Zusätzlich wird eine neue verbesserte Firmware für das Sensortag eingesetzt.

Beispiel: Livedaten im iFrame via Thingspeak.com



Sensortag von Texas-Instruments

Wichtig: diese Anleitung ist für die alte Version des TI-Sensortag, nicht die neue Version (Simplelink Sensortag)

Die Hardware bleibt gleich, wir verwenden auch das alte Wetterhäuschen aus der alten Anleitung.

Das TI-Sensortag (Version 1) enthält jede Menge Sensoren, die eigentlich schon eine komplette Wetterstation sind. Neben dem Thermometer gibt es einen Luftdrucksensor, einen Luftfeuchtigkeitssensor und (hier weniger relevante) Magnetfeld und Beschleunigungssensoren.

Problematische Firmware

Das Sensortag hat zwei Probleme
  • der Stromverbrauch ist relativ hoch, d.h. die eingebaute Knopfzelle hält nur wenige Wochen
  • Es baut den Kontakt zur Basisstation nicht von selbst aus: man muss einen Knopf auf dem Sensortag drücken, wenn der Kontakt verlorengeht. Das ist sehr schade wenn man den Kontaktverlust nicht bemerkt, dann werden keine Werte mehr gemessen.

Schritt 1: Neue Firmware aufspielen

Beide Probleme werden durch die myWeasthercenter-Firmware gelöst, die man per App auf das Sensortag aufspielt.

Externe Batterie

Zusätzlich habe ich die Knopfzelle des Sensortag durch zwei hintereinandergeschaltete Monozellen ersetzt, die haben eine etwa 100 Mal so große Kapazität (20000 mAh), wie die Knopfzelle. Mal sehen, wie lang das hält..

Schritt 2: Bluetooth-Low-Energy-Untertützung am Raspberry Pi

Das TI-Sensortag liefert seine Daten über Bluetooth-Low-Energy. Die Daten sendet es bei meinem Stup an einen Raspberry Pi, für den man einen USB-Bluetooth-Low-Energy-Dongle braucht. Ich habe das Plugable usb-bt4le-Dongle verwendet.

Hier muß man eine neuere Version des Bluez-Bluetooth-Stacks für Linux selbst kompilieren, um BLE-Support zu erhalten. Wie das geht, hat Michael Saunby beschrieben.

Schritt 3: BluePy-Library kompilieren

Um von Python-Scripten auf BLE-Funktionen zugreifen zu können, barucht man die BluePy-Library, die man selbst kompilieren muß.

Schritt 4: API-Key auf thingspeak.com besorgen

Dieses Projekt nutzt thingspeak.com, um die Daten zu speichern und zu visualisieren. Dazu muß man sich dort einen kostenlosen Account beantragen und kann dann sogenannte Channels anlegen. Für den Channel bekommt man einen API-Key. Einzige Einschränkung eines kostenlosen Accounts ist, daß man max. alle 15 Sekunden Werte auf thingspeak.com speichern kann, was für unsere Zwecke locker ausreicht.

Schritt 5: Script installieren

Auf GitHub gibt es ein fertiges Python-Script (sensortag-thingspeak-cron.py zur Einbindung in Shell-Script) von mir. dazu müssen noch folgende Konfigurationswerte im Script eingetragen werden:
  • THINGSPEAK_APIKEY: API-Key aus Schritt 4
  • TAG_ID: Bluetooth-Adresse des Sensor Tag, kann mit "hcitool lescan" ermittelt werden
  • HEIGHT: Höhe des Standorts in Metern über Meereshöhe (wird zur Berechnung des Luftrucks benötigt)
Es ist noch ein Shell-Script beigelegt, das beim Aufruf eine evtl. laufendes Helper-Script beendet, bevor es das Python-Script startet. 

Ergebnis

Die Daten werden auf Thingspeak.com gespeichert, dort kann man sie sich  in einer konfigurierbaren Chart ansehen. Die Charts können per iFrame ingebunden werden. Wem das nicht reicht, kann sich die Daten von thingspeak.com auch via Webservice holen und selbst Diagramme bauen.

Luftdruck live im iFrame

 

 Luftfeuchte live im iFrame

 

Links





30.08.2015

Personenwaage mit Internetanschluss: mit Wii Balance Board via Bluetooth ins Internet

Ziel: Personenwaage drahtlos ins Internet

Ein Wii-Balance-Board soll als Personenwaage benutzt werden und zwar so, daß man mit dem Wiegen morgens wenig Aufwand hat: einschalten, draufstellen muß genügen. 
Das gemessene Gewicht wird dann im Internet gespeichert und visualisiert.

Kommunikation über Bluetooth mit Raspberry Pi

Das Wii-Balance-Board kommuniziert per Bluetooth mit der Wii. Das Protokoll ist zwar proprietär, aber in neueren Linux-Kerneln sind dafür Treiber eingebaut. Das heisst ein Raspberry Pi (mit Bluetooth-Dongle) kann die Werte  auslesen und ins Internet bringen.

Existierende Scripte

Stavros Korokithakis hat auf GitHub ein Script zur Verfügung gestellt, das mit Hilfe der wiiboard-simple-Library Werte vom Balance-Board lesen kann. Was hier fehlt, ist eine Weg, die Daten irgendwo zu speichern und darzustellen.

Hardware: Kompatibel zum Wii-Balance-Board: Snakebyte

Auf ebay gibt es günstige "kompatible" Balance-Boards - ich habe ein Snakebyte-Board gekauft und das verwendet.

Problem: Bluetooth-Pairing

Mein SnakeByte hat leider  ein  Problem: man muß es bei jeder Benutzung pairen. Dummerweise ist die "Pair"-Taste im Batteriefach - und am frühen Morgen das Board umdrehen, das Batteriefach zu öffnen und die "Pair"-taste zu drücken ist einfach zu aufwendig.

Hardware-Modifikation

Als Abhilfe habe ich die Power-Taste abgeklemmt und parallel zur "Pair"-Taste geschaltet. Dazu braucht man nur ein Kabel anzulöten, vorher muß man aber 24(!) Schrauben lösen, um da ran zu kommen.

Geöffnetes Balance-Board: Kabel (blau) verbindet Einschalter (linker Kringel) mit Pair-Schalter (rechter Kringel)
Die Schalter sind per Flachbandkabel mit Hauptplatine und Pair-Schalter im Batteriefach verbunden. Ich habe das Kabel vom Einschalter unterbrochen und mit einem extra Kabel an den Pair-Schalter gelötet. Der andere Pol ist am Schalter mit Masse verbunden. Dazu schaut man sich die Kabelführung genau an- das ist ein bischen fummelig.

Ein Druck auf den Einschalter betätigt nun also zusätzlich den Pair-Schalter, indem er dessen Kontakt auf Masse zieht. Erstaunlicherweise klappt es prima: das Board wird eingeschaltet und gleich in den Pair-Modus versetzt..

Bluetooth-Dongle am Raspberry Pi

Für den Raspberry Pi brauch man noch ein USB-Bluetooth-Dongle. Hier ist kann man jedes Dongle verwenden, das erkannt wird, es ist kein Bluetooth-Low-Energy nötig.

Software

Als Software zum Empfang der Daten läuft auf einem Raspberry Pi eine leicht modifizierte Version von Stavros Korokithakis Python-Script gr8w8upd8m8. Es steht auf GitHub zum Download bereit.

Zunächst installiert man auf dem Raspberry Pi die bluez-utils package und die python-bluez-Library.
Anschließend braucht man noch mein modifiziertes Python-Script (https://github.com/hermann-kurz/gr8w8upd8m8) und einen API-Key von Thingspeak.com. Dorthin wandern dann die Messdaten.

Das Python-Script kann dann in einer Endlos-Schleife von einem Shell-Script gestartet werden, oder per daemon-tools auf dem Raspberry Pi installiert werden.

Messung

Nun reicht ein morgendlicher Tritt gegen die Power-Taste: das Balance-Board wird eingeschaltet und der Pair-Vorgang startet. Auf Raspberry-Pi-Seite bekommt das ein Python-Script mit und startet nach dem pairen einen Meßvorgang.

Das Ergebnis wird dann an thingspeak.com übertragen und kann als schöne Kurve angezeigt werden. Hier ein Screenshot (links wurde versehentlich was abgeschnitten).

Links



02.02.2015

Unglaublich: Windows 10 auf Raspberry Pi 2 angekündigt!

Microsoft wird richtig cool :-) Es geschehen noch Zeichen und Wunder..

Sie haben Windows 10 für den neuen Raspberry Pi 2 angekündigt. Und das ganze gibt es kostenlos für Entwickler. Offenbar will Microsoft sich ein Stück vom "Internet-Of-Things"-Kuchen abschneiden, der ja von den Stückzahlen extrem interessant ist. Mal sehen, ob das hinhaut.

14.11.2014

Raspberry Pi, Model A+ ist da

Die Raspberry Pi Foundation hat das Model A+ vorgestellt. Unterschiede zu alten Model A sind.
  • microSD Karte mit besserem Sockel
  • Audio/Video Anschluss kombinirt
  • Schaltregler (weniger Stromverbrauch)
  • nur 65 x 56mm groß
Er hat aber auch die selben Einschränkungen wie das Model A:
  • nur 256MB RAM (statt 512 des Model B)
  • 1 USB-Snschluss (statt 2 (Model B) bzw 4 (Model B+)
  • kein Ethernet
Model A+ ist ideal für Anwendungen, die ohne Ethernet auskommen und nur einen USB-Anschluß brauchen. Software kann auf dem größeren Model B+ entwickelt und getestet werden, wenn man diese Einschränkungen berücksichtigt.

Der Preis leigt bei knapp über 20 €, er ist z.B. bei Watterott erhältlich




14.07.2014

Neuer Raspberry Pi, Model B+

Ein neues Modell des Raspberry Pi scheint fertig zu sein. Bei einzelnen Händlern ist es schon bestellbar! RS-Online listet ihn mit einem Preis von 29,50€ (ohne MWst).

Unterschiede zum alten Raspberry Pi, Model B
  • Vier (statt zwei) USB-Ports
  • Keine extra Analog-Video-Buchse
  • Platinenlayout nicht so zerklüftet
  • Mehr I/O-Pins
  • Bisherige Gehäuse und Shields passen nicht mehr

Was ist gleich geblieben?
  • CPU & Taktfrequenz
  • Speicher 512MB
Ein Schritt in die richtige Richtung (finde ich). Mehr Speicher und eine schnellere CPU ständen einem neuen RasPi sehr zu gute..

Update: inzwischen gibt es auch eine offizielle Ankündigung von der Raspberry Pi Foundation.

Links

21.06.2014

Verkehrsflugzeuge Live-Tracking per ADS-B mit dem Raspberry Pi

Am Himmel sieht man eigentlich immer Kondensstreifen. Es wäre doch nett zu wissen, was für ein Flugzeug da jeweisl dahintersteckt.

Mit einem Raspberry Pi und einem billigen DVB-T-Dongle und ein bischen Software ist das kein Problem.

dump1090 - Ausgabe als Karte


Zutaten

  • Raspberry Pi
  • DVB-T-Dongle
  • RTL_SDR-Software zum Ansprechen des DVB-T-Dongles
  • dump1090 - Software zum Auswerten / Anzeigen der ADS-B-Information

Zeitaufwand

ca 2-3h

Kosten

Ca 20 € für das DVB-T-Dongle + vorhandener Raspberry Pi

ADS-B zur Positionsbestimmung

Die meisten Verkehrsflugzeuge haben einen Automatic dependent surveillance-broadcast (ADS-B)-Transponder an Bord, der die aktuelle Position, Geschwindigkeit, Höhe und ID des Flugzeugs in einem standardisierten Datenformat auf 1090 MHz ausstrahlt. Wenn man diese Information empfängt und dekodiert, kann man Position, Kurs und Flugnummer live auf einer Karte anzeigen.

DVB-T-Dongle

Spezialisierte Empfänger-Hardware ist teuer. Man kann aber auch Billig-Hardware, die eigentlich für einen anderen Zweck gedacht war, verwenden.

Möglich wird dies durch die Entdeckung, daß preisgünstige (ab 10€!) DVB-T-USB-Dongles als Software Defined Radio (SDR) betrieben werden können. Voraussetzung ist der  Realtek RTL2832U-Chip, der in vielen  Dongles verwendet wird.  Dabei geht der Empfangsbereich von etwa 25 MHz bis hinauf zu 1,7 GHz!

Dazu braucht man noch Software: RTL-SDR zum Ansprechen des Dongles und darauf aufsetzend dump1090 zum Auswerten und Anzeigen der Flugzeugpositionen - beides ist als Open source-Software frei verfügbar.

Nicht jeder Dongle ist geeignet, ich habe mir einen über Amazon.com in Amerika bestellt. Vorteil hier war, daß der Anbieter die Funktion mit RTL-SDR-Software garantiert. Kostenpunkt war knapp 20€ (mit Versand). Der Dongle zieht einiges an Strom, deshalb ist ein etwas stärkeres Netzteil wichtig (bei mir funktioniert ein 1A-Steckernetzteil). Evtl. muß man den Dongle über einen Powered USB-Hub betreiben.

Low-Level-Software: RTL-SDR

Die Software zum Ansprechen von DVB-Dongles heißt RTL-SDR. Neben der librtlsdr-Library enthält sie auch noch einige Kommandozeilenprogramme für Basisfunktionen. Sehr viele Programme, unter anderem dump1090, benutzt librtlsdr als API zum Dongle. RTL-SDR muß zunächst auf dem Raspberry Pi übersetzt werden.

Vorbereitung

Auf dem Raspberry Pi ist Raspbian (Debian wheezy) installiert. Als Benutzer pi werden die zum Bau benötigten Packages installiert: auf der Kommandozeile:

sudo apt-get install git cmake libusb-1.0-0-dev build-essential

Bauen der RTL-SDR-Software

Anschließend kann die RTL-SDR-Library gebaut werden:

cd
git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr/
mkdir build
cd build/
cmake ../ -DINSTALL_UDEV_RULES=ON
sudo make install
sudo ldconfig
cd ~
sudo  cp ./rtl-sdr/rtl-sdr.rules /etc/udev/rules.d/
sudo reboot


dump1090 - Software für ADS-B

Zum Dekodieren und Anzeigen der ADS-B-Information hat Salvatore Sanfilippo das Programm dump1090 geschrieben. Diese Software hat u.a. einen eingebauten Webserver, mit der die Daten live in einer Karte angezeigt werden könnnen (siehe oben)!

Bauen der Software ist sehr einfach. Ich verwende die verbesserte Version von Malcolm Robb:

git  clone  git://github.com/MalcolmRobb/dump1090.git
cd dump1090/
make


Anschließend kann man das Programm starten, es hat einige Kommandozeilen-Optionen. Mit

nohup ./dump1090 --net&

läuft es im Hintergrund und startet auf Port 8080 einen Webserver. Geht man mit einem Browser drauf sieht man eine Karte mit (hoffentlich) vielen eingeblendeten Flugzeugen (siehe oben)! Die Karte wird in Echtzeit upgedated - zusätzlich werden weitere Informationen über die Flugzeuge angezeigt, der Kurs wird mitgeloggt, etc.

Antenne

Mit der mitgelieferten Antenne zum DVB-T-Stick sehe ich Flugzeuge bis etwa 40 km Entfernung. Eine einfache selbsgebaute Antennen für 1090 MHz kommt da wesentlich weiter, ein einfache Möglichkeit siehe http://antirez.com/news/46. Im README zu dump1090 sind dazu noch weitere Links. 

Links

21.02.2014

iBeacon mit dem Raspberry Pi (Apples Bluetooth-Low-Energy indoor-Navigation)

Apple hat mit IOS 7 die iBeacon-Technologie eingeführt. Die zugehörige Empfänger-Hardware ist auf dem iPhone (ab iPhone 4s) und iPad (ab 3. Generation + iPad mini) vefügbar.

Ältere Geräte haben kein Bluetooth Low Energy und funktionieren nicht mit iBeacons! Das Gegenstück - die iBeacon selbst - kann man entweder fertig kaufen, oder mit einem Raspberry Pi selbst bauen.

Schnellstart : iBeacon mit dem Raspberry Pi

  1. auf dem Raspberry Pi: Image installieren: 2014-01-07-wheezy-raspbian 
  2. BLE-Dongle in RasPi stecken
  3. bluetooth-Software installieren (als root):

apt-get install libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev
wget www.kernel.org/pub/linux/bluetooth/bluez-5.14.tar.xz
unxz bluez-5.27.tar.xz
tar xvf bluez-5.27.tar
cd bluez-5.27/
LDFLAGS=-lrt ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-library -disable-systemdmake
make install

4. Beacon starten
hciconfig hci0 up
hciconfig hci0 leadv 3 
hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 91 2E 23 A0 97 1E 11 E3 A5 E2 08 00 20 0C 9A 66 00 00 00 00 C5 00

5. iBeacon-App auf iPhone installieren (iBeacon locate (Radius Networks) oder AirLocate (Apple))

6. App für UUID 912E23A0-971E-11E3-A5E2-0800200C9A66 konfigurieren
7. fertig



Details/Erläuterung

Was ist eine iBeacon?

Eine iBeacon ist zunächst einmal ein Sender, der der per Bluetooth Low Energy (BLE) eine UUID und ein bischen Zusatzinformation sendet. Kommunikation geht also nur von der iBeacon in Richtung mobiles Endgerät, in die andere Richtung wird nichts übertragen. Auf Bluetooth-Ebene sind das Bluetooth-Low-Energy-Advertisement-Packets, die  im Sekundenrhytmus ausgestrahlt werden.

App wird in der Nähe einer iBeacon aktiv

Das Mobilgerät empfängt nun diese Advertisement-Pakete. Ist eine UUID dabei, die in einer installierten App zugeordnet ist, wird diese App angezeigt und sogar gestartet, falls sie gerade nicht aktiv ist.  Die App weiß nun, daß jetzt eine zugeordnete iBeacon in der Nähe ist und kann entsprechende Aktionen ausführen. Sind mehrere iBeacons im Empfangsbereich, kann durch Triangulation sogar der Standort genauer bestimmt werden. Reichweite eines iBeacons sind nominal etwa 50m, in Gebäuden deutlich weniger, je nach Situation.

Use cases

Use-cases können z.B. Läden sein, die einen Kunden auf ein Sonderangebot hinweisen, oder Museen, die Zusatzinformationen zu bestimmten Kunstwerken liefern, Lenken von Besuchern in Stadien, etc. Wichtig ist, daß dem Mobilgerät nur der Standort bekannt gemacht wird, eine App muß darauf entsprechend reagieren und die eigentliche Information an den Benutzer liefern.

Die iBeacon-Technologie wird oft als Apples Antwort auf NFC gesehen - das trifft aber nicht den Kern der Sache, NFC hat nur eine Reichweite von wenigen cm, eine iBeacon reicht wesentlich weiter.

iBeacon-Hardware

Verschiedene Hersteller bieten fertige iBeacons an, oder haben die Lieferung angekündigt. Das sind meist Knopfzellen-betriebene Geräte, die z.B. an ein Regal geklebt werden können.

Raspberry Pi als iBeacon

Mit einem Raspberry Pi und einem Bluetooth-Low-Energy (BLE) -Dongle geht das auch und man kann damit viel leichter (per Software) die UUID und andere Parameter ändern. Nachteil ist natürlich der höhere Energieverbrauch.

Im Internet gibt es dazu Anleitungen, es sind allerdings einige Stolperfallen zu überwinden (wenn man Pech hat)

http://learn.adafruit.com/pibeacon-ibeacon-with-a-raspberry-pi/overview
http://developer.radiusnetworks.com/ibeacon/virtual.html

Hardware: Bluetooth Low-Energy-Dongle.

Ein normales USB-Dongle funktioniert nicht! Das Dongle muß Bluetooth Low Energy (BLE) unterstützen - wenn "Bluetooth V4.0", "Bluetooth smart" oder "Bluetooth smart ready"  auf der Packung steht, ist das meist der Fall.

Ich habe mit zwei verschiedenen Dongles Erfolg gehabt.

1. LogiLink USB Bluetooth V4.0 Dongle.
Die USB-ID dieses Dongle ist 0a12:0001. Gekauft bei Pollin.de - es kommt in so einer Packung:

2. Plugable USB-BT4LE Bluetooth 4.0 USB Adapter for Windows and Linux PCs
http://plugable.com/products/usb-bt4l.
USB-ID ist 0a5c:21e8. Gekauft habe ich dieses Dongle bei Amazon.de

Software:

Als OS-Image für den Raspberry Pi (Model B) verwende ich 2014-01-07-wheezy-raspbian.zip. Zusätzlich müssen einige Software-Packages installiert und dann die aktuelle BlueZ-Software (Bluetooth-Stack) gebaut werden. Dazu loggt man sich als root auf dem RasPi ein und führt folgendes aus (make dauert etwa 30 Minuten):

apt-get install libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev
wget www.kernel.org/pub/linux/bluetooth/bluez-5.14.tar.xz
unxz bluez-5.14.tar.xz
tar xvf bluez-5.14.tar
cd bluez-5.14/
./configure --disable-systemd
make
make install

Anschließend braucht man eine UUID (die man sich z.B. bei http://www.famkruithof.net/uuid/uuidgen generieren kann oder man erfindet selbst eine) als Identifikation des iBeacon.

Zusätzlich wird eine MAJOR-Nummer (16 Bit, Gruppe von iBeacons) und eine MINOR-Nummer (16 Bit, individuelle iBeacon) mitgesendet. Als letzter Wert kommt noch die RSSI (Received Signal Strength Indicator) hinzu, das ist ein Wert für die Sendeleistung. Aus der RSSI und der tatsächlich empfangenen Signalstärke kann der Empfänger die Entfernung zum Sender abschätzen.

Eine App horcht auf eine festgelegte UUID, MINOR und MAJOR sind dabei beliebig. Ein guter Anfangswert für RSSI ist -59, das entspricht 0xC5 (hex).

Hier die von mir verwendeten Werte:

iBeacon prefix: 02 01 06 1A FF 4C 00 02 15 (fix)
UUID: 912E23A0-971E-11E3-A5E2-0800200C9A66
MAJOR: 0000
MINOR: 0000
RSSI:  C5

mit diesem Shell-Script wird die iBeacon gestartet, wichtig war bei mir, daß die Reihenfolge der Befehle  eingehalten wird:

#!/bin/bash
#
# Start interface
hciconfig hci0 up
#
# Set adapter to "Low Energy Advertise"
hciconfig hci0 leadv 3
#
# start advertising with 
# UUID: 912E23A0-971E-11E3-A5E2-0800200C9A66
# MAJOR: 0000
# MINOR: 0000
# RSSI:  C5
#
# next command is *one* line
hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 91 2E 23 A0 97 1E 11 E3 A5 E2 08 00 20 0C 9A 66 00 00 00 00 C5 00

App auf dem iPhone

Zum Lokalisieren und Testen von iBeacons habe ich drei iPhone-Apps gefunden, aber nicht alle funktionieren bei mir. Wichtig ist, daß die UUID richtig eingegeben wird. Hier eine Übersicht der Apps die ich getestet habe:
  • iBeacon Locate (Radius Networks) http://www.radiusnetworks.com/ibeacon-services.html
  • AirLocate (Apple): funktioniert, Sourcen verfügbar
  • Beacon Tool: funktioniert bei mir nicht (iPhone 4S, es wird keine iBeacon gefunden)
Am besten gefallen hat mir iBeacon Locate. AirLocate liegt als Beispiel von Apple im Quelltext vor, kann also gut als Ausgangspunkt für eine eigene App dienen.

iBeacon-Technologie für Android

Seit Android 4.3 gibt es auch auf dieser Plattform Bluetooth Low-Energy-Unterstützung. Allerdings habe erst wenig Android-Geräte BLE-Hardware eingebaut. Die Situation ist aber gerade stark im Fluß.

Stolperfallen

  • Es ist Bluetooth Low-Energy-Dongle nötig: o.g. Logilink oder plugable-Dongle funktionieren bei mir
  • Die Reihenfolge der hcitool-Befehle ist kritisch
  • Gerät (iPhone/Android) muß BLE unterstützen
  • Nicht alle Apps funktionieren

App-Entwicklung


Links



12.12.2013

Wärmebildkamera mit dem Raspberry Pi (4): WLAN, autonomer Betrieb und mehr


1. Thermographie-Kamera mit dem Raspberry Pi
2. Ansteuerung des Sensors mit Perl
3. Ansteuerung der Servos / Auswertung
4. Zusammenfassung, WLAN und  Batteriebetrieb

Zur Motivation ein Video mit dem ersten Prototypen.



 Das fertige Gerät kann folgendes:
  • Smartphones können sich mit dem System per WLAN verbinden
  • Das System lässt sich per Smartphone bedienen
  • arbeitet auch ohne Netzteil völlig autonom (mit Akku)
Das heißt: man kann das Gerät auch draußen betreiben und mit einem Smartphone oder Tablett bedienen.

Daemonen

Damit das Perl-Script für den Sensor, das Python-Script für die Servo-Steuerung und das UI automatisch im Hintergrund (als Daemon) gestartet werden wird je ein Script im /etc/init.d-Verzeichnis benötigt. Das sind die Files mlx90614 und thermopi aus dem github-Repository:

https://github.com/hermann-kurz/thermography-raspberrypi/tree/master/init.d

Diese Files werden ins Verzeichnis /etc/init.d kopiert und (als Benutzer root) mit

update-rc.d mlx90614 defaults
update-rc.d thermopi defaults

aktiviert.

Nach  einem Neustart des Raspberry Pi müssen beide Daemons laufen und sind mit einem Browser erreichbar:

unter

http://[ADRESSE DES RASPI]:8080/c

sieht man die aktuelle Temperatur (das ist der Daemon für den Sensor), unter

http://[ADRESSE DES RASPI]/

erreicht man das UI der Thermographie-Kamera.

WLAN


Für autonomen Betrieb kann der Raspberry Pi als WLAN-Accesspoint betrieben werden. Mit einem Smartphone, das damit verbunden ist, wird die Thermographie-Kamera dann bedient.

Für Accesspoint-Betrieb braucht man einen WLAN-USB-Dongle, der Master-fähig ist. Ich verwende einen TP-LINK TL-WN721N, der ohne zusätzliche Treiber erkannt wird, aber auch andere Dongles sind möglich.

hostapd

Die Accesspoint-Verwaltung übernimmt ein weiterer Daemon, hostapd.

Konfiguration WLAN-Interface

Die statische IP-Adresse kommt über einen Eintrag in /etc/network/interfaces, bei mir sieht das so aus:

auto wlan0
iface wlan0 inet static
address 192.168.1.1
netmask 255.255.255.0


Wichtig ist hier, daß das WLAN-Interface eine statische Adresse erhält.

hostapd-Installation/Konfiguration

weiter geht es mit

aptitude install hostapd hostap-utils iw isc-dhcp-server

damit wird die hostapd-Software für den Accesspointbetrieb und ein DHCP-Server (für das zugreifende Smartphone)  installiert.

In

/etc/default/hostapd 

wird die Zeile

#DAEMON_CONF=""
nach:
DAEMON_CONF="/etc/hostapd/hostapd.conf"

geändert. Danach wird der Accesspoint über

/etc/hostapd/hostapd.conf

konfiguriert. Bei mir sieht sie die Datei so aus:

interface=wlan0
###############################
# Basic Config
###############################
macaddr_acl=0 auth_algs=1
# Most modern wireless drivers in the kernel need driver=nl80211
driver=nl80211
##########################
# Local configuration...
##########################
interface=wlan0
ssid=ThermoPI
hw_mode=g
ieee80211n=1
channel=1
auth_algs=1
wmm_enabled=0
own_ip_addr=192.168.1.1


Mit dieser Konfiguration wird ein WLAN namens "ThermoPi" aufgespannt. Ein Passwort ist nicht nötig, was im Standalone-Betrieb auch nicht weiter schlimm ist.

DHCP

Geräte (Smartphones), die sich mit dem WLAN verbinden, brauchen ebenfalls eine IP-Adresse. Die wird von einem DHCP-Server geliefert, der auf dem RasPi läuft.

Konfiguration über die Datei

/etc/dhcp/dhcpd.conf

Dieser Eintrag

#
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.2 192.168.1.254;
}


sagt dem DHCP-Server, daß er IP-Adressen im Bereich 192.168.178.2 bis 192.168.178.254 an die WLAN-Teilnehmer ausgeben soll.

Akkubetrieb

Wenn man das Gerät ohne Stromanschluß betreiben will, kann man eine "USB-Powerbank", einen Akku mit USB-Anschluß benutzen.

Betrieb

Nach Reboot des Raspberry Pi sieht man das WLAN "ThermoPi".

Nachdem man sich mit einem Smartphone verbunden hat, erhält man mit dem Browser über die URL http://192.168.178.1 die Benutzeroberfläche der Thermographie-Kamera!

Die URL kann man sich als Shortcut im Smartphone speichern und kommt dann direkt auf die Thermographie-Kamera

Über den Browser startet man am besten erstmal eine Aufnahme mit grober Auflösung, das geht schneller. Hat man den richtigen Bildausschnitt, erhöht man die Auflösung. Wenn das Bild fertig ist, gibt es einen Reload, das neueste Bild ist sichtbar. Man kann es nun auf dem Smartphone speichern.

Verbesserungsmöglichkeiten

Bei jedem Projekt gibt es Verbesserungsmöglichkeiten. Hier ein paar Vprschläge
  • Der MLX90614 ist relativ träge, d.h. nach jedem Messen muß etwas gewartet werden. Damit braucht ein komplettes Thermographiebild mit höherer Auflösung recht lange, etwa 5 Minuten für ein 48x48 Pixel grosses Bild. Die Meßzeit kann aber verändert werden, Einzelheiten im Datenblatt des Sensors.
  • Höhere Auflösung: Script erweitern. Nachteil: längere Scan-Zeit
  • Bilder freigeben über Samba
  • erfasste Bilder browsen über Smartphone
Der Code liegt auf github zur Verwendung

https://github.com/hermann-kurz/thermography-raspberrypi

jede Rückmeldung ist willkommen!

Links:



1. Thermographie-Kamera mit dem Raspberry Pi
2. Ansteuerung des Sensors mit Perl
3. Ansteuerung der Servos / Auswertung
4. Zusammenfassung, WLAN und  Batteriebetrieb

26.12.2012

Raspberry Pi: Lampe bei Sonnenaufgang einschalten

Raspberry Pi: Lampe bei Sonnenaufgang einschalten

 Voraussetzung: Schaltung und Software aus den vorherigen Teilen

1. Übersicht
2. Hardware - Interface vom Raspberry Pi zur Funksteckdose
3. Software auf dem Raspberry Pi Ansteuerung und Webserver
4. DynDNS, Siri & mehr
5. Schalten mit  Google Calendar und IFTTT
6. Lampe bei Sonnenaufgang einschalten (dieser Teil)
7. Raspberry Pi - Home Automation:  per Telefon schalten mit Tropo



Ein weiteres Rezept mit IFTTT und der Funksteckdosen-Steuerung mit dem Raspberry Pi:

Lampe bei Sonnenaufgang einschalten. 


Das ist meine Nachttischlampe, die ich in den Weihnachtsferien schalte. Bei IFTTT kann der Weather-Channel als Trigger genommen werden. Ein Ereignis dieses Channels ist der Sonnenaufgang des festgelegten Orts. Dieses Rezept ruft die Lampen-Einschalt-URL auf, auch hier wird Dropbox-Trick verwendet, da IFTTT die URL nicht direkt aufrufen kann:




Der Weather-Channel kennt auch das Ereignis "Unterschreiten einer festgelegten Temperatur". Damit kann z.B. eine elektrische Standheizung im Auto bei tiefen Temperaturen eingeschaltet werden..



1. Übersicht
2. Hardware - Interface vom Raspberry Pi zur Funksteckdose
3. Software auf dem Raspberry Pi Ansteuerung und Webserver
4. DynDNS, Siri & mehr
5. Schalten mit  Google Calendar und IFTTT
6. Lampe bei Sonnenaufgang einschalten (dieser Teil
7. Raspberry Pi - Home Automation:  per Telefon schalten mit Tropo  

16.12.2012

Home Automation mit dem Raspberry Pi: Teil 2: Hardware - Interface vom Raspberry Pi zur Funksteckdose

Hardware - vom Raspberry Pi zur Funksteckdose

Inhalt
1. Übersicht
2. Hardware - Interface vom Raspberry Pi zur Funksteckdose (dieser Teil)
3. Software auf dem Raspberry Pi Ansteuerung und Webserver
4. DynDNS, Siri & mehr
5. Schalten mit  Google Calendar und IFTTT
6. Lampe bei Sonnenaufgang einschalten
7. Raspberry Pi - Home Automation:  per Telefon schalten mit Tropo
 

 

Zutaten

  • Funksteckdosen mit Handsender
  • Raspberry Pi
  • ein IC ULN2803
  • Ein Google Calendar Account
  • Ein Account auf IFTTT ("If This Then That")
  • Lötkolben, Kabel, etc

Hardware

Ich verwende das Funk-Steckdosen-Set 2605 von Pollin. Es kostet 9,95€ und enthält einen Sender und drei Steckdosen. Ähnliche Sets gibt es im Baumarkt und beim Discounter, die Schaltung ist meistens gleich.

Funksteckdosensender

Handsender


Unser Handsender hat acht Tasten, mit denen man vier Funksteckdosen ein- bzw ausschalten kann. Die Schaltung des Senders besteht im aus einem IC PT2262 (aka HX2262) das die ganze Steuerung übernimmt und einem HF-Teil.

Hier gibt es ein Datenblatt des PT2262/HX2262

An das HX2262 sind die acht Tasten des Handsenders angeschlossen, für jede Funksteckdose A, B, C, D jeweils ein Schalter "ON" und ein Schalter "OFF". Wir werden diese acht Tasten über Ausgänge des Rasperry Pi simulieren.

Tastaturmatrix

Wenn man die Leiterbahnen auf der Platine verfolgt, sieht man, daß pro Taste jeweils zwei Pins auf Masse gezogen werden und zwar bilden sie eine Matrix, mit vier Leitungen A, B, C, D und zwei Leitungen "ON" und "OFF". Wenn man genau hinschaut, sieht man diese zwei Kontakte per Taster auf dem Platinenfoto.

Platine

Als Schaltbild sieht die Tastaturmatrix so aus:

Tastaturmatrix
Wenn man eine Taste drückt, werden jeweils genau zwei Leitungen mit Masse verbunden - eine aus dem Paar ON/OFF und eine der vier A/B/C/D.

Insgesamt gibt es also sechs Leitungen und damit sechs Bit, die nach Masse gezogen werden. Diese Leitungen sind an das IC vom Typ HX2262 angeschlossen, das die gesamte Steuerug übernimmt. Das silbrige Teil im Platinenfoto ist der Hochfrequenz-Sender, der vom Steuerungs-IC moduliert wird.

Wenn das bei diesen sechs Leitungen durch jeweils einen Transistor passiert (statt durch die Taster), sollte das doch auch funktionieren...
Und die Transistoren kann man mit den GPIO-Pins des Raspberry Pi steuern. Um weniger löten zu müssen, können wir ein Transistor-Array ULN2803A nehmen (das zufällig rumliegt). Damit ergibt sich folgende Schaltung für jeden Pin:

Darlington-Detail pro Bit aus ULN2803A

Wie die genaue Kommunikation zwischen Handsender und den einzelnen Steckdosen aussieht, ist uns total egal, wir simulieren nur die Tastendrücke.

Gesamtschaltung

Insgesamt ergibt sich damit folgende Schaltung:



Die Verbindung vom Raspberry Pi zum Interface ist ein 26-poliges Flachbandkabel. Vom Interface zum Handsender gehen 7 Kabel (& Signale + Masse).

Aufbau

Detailbilder vom Aufbau

Alles


Adapterplatine mit ULN2803, Kabel zur Fernsteuerung (direkt an Fernsteuer-IC gelötet)


Adapter, Lochrasterplatine von unten



Sehr praktisch ist, daß wir den Handsender weiter manuell betätigen können.

Im nächsten Teil der Serie folgt die Software auf dem Raspberry Pi: von den GPIO-Pins zum Webserver


1. Übersicht
2. Hardware - Interface vom Raspberry Pi zur Funksteckdose (dieser Teil)
3. Software auf dem Raspberry Pi Ansteuerung und Webserver
4. DynDNS, Siri & mehr
5. Schalten mit  Google Calendar und IFTTT
6. Lampe bei Sonnenaufgang einschalten
7. Raspberry Pi - Home Automation:  per Telefon schalten mit Tropo

Home Automation mit dem Raspberry Pi: 1. Siri und Google Calendar für Weihnachtsbeleuchtung, Kaffeemaschine (und andere Geräte)

Inhalt
1. Übersicht (dieser Teil)
2. Hardware - Interface vom Raspberry Pi zur Funksteckdose
3. Software auf dem Raspberry Pi Ansteuerung und Webserver
4. DynDNS, Siri & mehr
5. Schalten mit  Google Calendar und IFTTT  
6. Lampe bei Sonnenaufgang einschalten
7. Raspberry Pi - Home Automation:  per Telefon schalten mit Tropo

Home Automation mit dem Raspberry Pi: 1. Übersicht - Haushaltsgeräte übers Internet schalten

Inzwischen gibt es einige Geräte, die übers Internet gesteuert werden können - die sind aber meistens sehr teuer und speziell.

Es wäre aber schön, vorhandene Haushaltsgeräte übers Internet zu schalten. Wenn man das über eine URL tun kann, lässt sich das über verschiedene Dienste automatisieren. Damit  kann man z.B. die Weihnachtsbeleuchtung über ein iPhone mit Siri steuern, die Nachttischlampe über Google Calendar oder die Kaffeemaschine über einen Browser einschalten - und vieles mehr.

Niedrige Kosten durch Funksteckdosen und Raspberry Pi

Inzwischen gibt es Funksteckdosen im Viererpack  mit Handsender für ungefähr 10-15€. Ein Raspberry Pi kostet mit Versand etwa 40 €. Ein paar Kleinteile und Kabel braucht man ebenfalls - und löten sollte man auch können. Wenn man etwa 60 € anlegt, kann man damit vier Geräte übers Internet ein und ausschalten..

Für weitere Geräte fallen dann nur noch die Kosten für zusätzliche Funksteckdosen an, also etwa 4€ pro Steckdose.

Prinzip

Wir wollen nichts mit 220V zu tun haben, sondern schalten handelsübliche Billig-Funksteckdosen über den Handsender, der an einen Raspberry Pi angeschlossen ist. Der Raspberry Pi hängt am Hausnetzwerk und ist über eine URL per Bowser erreichbar. Das ganze geht natürlich auch quer übers Internet und damit auch über IFTTT, das sich über Google Calendar steuern lässt. Oder vom iPhone per Siri. Also alles ganz einfach..

Das ganze ist ein wenig Work in Progress, deshalb die einzelnen Schritte als separate Posts.

1. Übersicht (dieser Teil)
2. Hardware - Interface vom Raspberry Pi zur Funksteckdose
3. Software auf dem Raspberry Pi Ansteuerung und Webserver
4. DynDNS, Siri & mehr
5. Schalten mit  Google Calendar und IFTTT  
6. Lampe bei Sonnenaufgang einschalten
7. Raspberry Pi - Home Automation:  per Telefon schalten mit Tropo



10.12.2012

Cooler Hack: RasPi als FM-Sender (ohne Zusatzhardware!)

Einen sehr interessanten Hack gibt es hier: Software, um einen Raspberry Pi  in einen UKW-Sender zu verwandeln. Das ganze funktioniert tatsächlich ohne zusätzliche Hardware - es wird ein GPIO-Pin über den Clock-Generator angesteuert. Die Modulation erfolgt über Variation des Teilerfaktors. Das ganze ist ein Projekt der Imperial College Robotics Society.

Respekt!

26.08.2012

MPEG-2-Codec (DVD, DVB) für Raspbmc

Cool, es gibt jetzt ein (kostenpflichtiges) MPEG-2-Codec für den Raspberry Pi. Das wird z.B. für die Wiedergabe von DVD-ISOs (ohne CSS) und DVB-Transport-Streams benötigt. Im Raspberry Pi Store gibt es die Lizenz dafür, die an die Seriennumer des RasPi gebunden ist. Das kostet momentan 3,03€ (per Paypal). Es gibt auch eine Lizenz für VC-1 (Blue-Ray, Windows Media, Microsoft Silverlight) für 1,52€. Ich hab mir mal die MPEG-2-Lizenz bestellt und werde es auf Raspbmc ausprobieren, sobald die Lizenznummer ankommt (dauert wohl bis zu 72h).

  • Raspberry Pi Store
  • New video features! MPEG-2 and VC-1 decode, H.264 encode, CEC support

21.08.2012

Raspbmc ist klasse!

Habe neulich zwei Raspberry Pi erhalten. das Ding ist klein! Erste Aktion war, auf einem davon raspbmc  zu installieren. Raspbmc ist die Portierung des XBMC-Mediacenters auf den RasPi. Was soll man sagen: ich bin beeindruckt! Mit meiner Tochter zusammen habe ich dann ein standesgemäßes Lego-Gehäuse gebaut:





Bestes Feature für mich: AirPlay: Videos direkt vom IPhone auf den Beamer. Sehr cool. Zur Bedienung gibt es Apps für iOS und Android.

Es ist natürlich nicht alles perfekt, folgende Gotchas gab es bei mir:
  • Anleitung lesen! Zur Installation braucht man eine Ethernet-Verbindung, da das runtergeladene Image die eigentliche Distribution übers Internet holt..
  • Das Netzteil muß genügend Strom liefern! Viele Steckernetzteile bringen keine 700mA.
  • Wenn beim Starten eines Videos nichts mehr über die RCA-Buchse kommt, muß man Audio(!) auf "analog" stellen. Steht zwar in der FAQ, aber..
  • Manche HD-Videos ruckeln alle paar Sekunden
 Hier ein paar Links dazu

21.04.2012

Raspberry Pi: hat den schon jemand bekommen?

Hat schon jemand einen Raspberry Pi aus der neulich angelaufenen Auslieferung bekommen?