Das ESP8266-WiFi-Modul ist nun direkt mit einer angepassten Arduino-IDE
programmierbar!
Das Modul ist damit nochmal leichter zugänglich geworden
und kann Arduinos in vielen Anwendungsfällen ersetzen. Durch die geringe Größe und den extrem niedrigen Preis sind die ESP8266-Module für Internet-of-things (IoT)-Anwendungen ideal geeignet.
Insbesondere der
neue Arduino Yun, der ein eigenes WiFi-Modul (mit embedded Linux)
besitzt, aber auch etwa 65€ kostet, hat dadurch Konkurrenz für einfache Anwendungsfälle bekommen.
Ein ESP8266-Modul gibt es ab etwa 4€ zu kaufen! Es hat - im Vergleich
zum Arduino Yun - sehr wenig GPIOs, aber oft
werden auch nur wenige GPIOs gebraucht. Auch die
Software-Unterstützung ist noch nicht vollständig, aber das wird sicher
noch kommen.
Die angepasste Arduino-IDE kann von GitHub heruntergeladen werden
In der angepassten IDE (Version 1.6.1) ist nun ein "Generic ESP8266 board" wählbar
und als “Programmer” kann man "esptool" auswählen.
Die Programmierung erfolgt über einen USB/seriell-Adapter
Links
Internet of Things, IoT, Microcontroller, Arduino, Raspberry Pi, ESP8266, alles wo Strom durchfließt. Hardware und Software und drumherum.
Kontakt: hkurz@jruby.de
30.03.2015
07.03.2015
LED-Morse-Thermometer mit MSP430G2231
Die Energia-IDE (ein Arduino-IDE-Derivat mit MSP430-Target, hier besprochen) enthält einige Beispiele - unter anderem ein Thermometer, das die gemessenen Werte seriell ausgibt. Ich habe das Beispiel so modifiziert, daß die Temperatur stattdessen über LEDs gemorst wird. Benötigt wird dazu ein TI-Launchpad, ich hatte da noch eines rumliegen. Beim Launchpad dabei ist auch ein MSP430G2231, der auf dem Chip ein Thermometer hat und 2kB Flash besitzt.
Nach Einrichten der IDE kann man den Code direkt in den Controller laden und starten. Rotes Morsen bedeutet eine positive Temperatur, grün heisst, dass die gemorste Zahl eine Temperatur unter null Grad ist.
Ich habe dann den Chip aus dem Launchpad genommen, LEDs & Reset-Schaltung freihändig verdrahtet und zwei Babyzellen drangelötet. Die enthalten etwa 8000mAh und sollten für ca ein Jahr Energie liefern. Die Schaltung kam in ein altes Marmeladenglas und liegt momentan draussen im Schnee und morst da die Temperatur vor sich hin. Sehr praktisch :-)
Nach Einrichten der IDE kann man den Code direkt in den Controller laden und starten. Rotes Morsen bedeutet eine positive Temperatur, grün heisst, dass die gemorste Zahl eine Temperatur unter null Grad ist.
Ich habe dann den Chip aus dem Launchpad genommen, LEDs & Reset-Schaltung freihändig verdrahtet und zwei Babyzellen drangelötet. Die enthalten etwa 8000mAh und sollten für ca ein Jahr Energie liefern. Die Schaltung kam in ein altes Marmeladenglas und liegt momentan draussen im Schnee und morst da die Temperatur vor sich hin. Sehr praktisch :-)
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
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.
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.
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.
Labels:
microsoft,
Raspberry Pi,
windows,
windows 10
01.02.2015
Raspberry Pi 2: sechs mal so schnell wie der Alte
Die Raspberry Pi Foundation hat die Verfügbarkeit des neuen Raspberry Pi 2 angekündigt. Er soll etwa sechs mal so schnell sein, wie das Vorgänermodell und hat nun doppelt so viel Speicher (1GB statt 512MB). Darin arbeiten jetzt vier Kerne (statt bisher zwei) mit 900 MHz Taktfrequenz (statt 700 MHz). Sehr cool!
- http://www.raspberrypi.org/raspberry-pi-2-on-sale/
14.11.2014
Raspberry Pi, Model A+ ist da
Die Raspberry Pi Foundation hat das Model A+ vorgestellt. Unterschiede zu alten Model A sind.
Der Preis leigt bei knapp über 20 €, er ist z.B. bei Watterott erhältlich
- microSD Karte mit besserem Sockel
- Audio/Video Anschluss kombinirt
- Schaltregler (weniger Stromverbrauch)
- nur 65 x 56mm groß
- nur 256MB RAM (statt 512 des Model B)
- 1 USB-Snschluss (statt 2 (Model B) bzw 4 (Model B+)
- kein Ethernet
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
Was ist gleich geblieben?
Update: inzwischen gibt es auch eine offizielle Ankündigung von der Raspberry Pi Foundation.
Links
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
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.
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.
sudo apt-get install git cmake libusb-1.0-0-dev build-essential
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
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.
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-3hKosten
Ca 20 € für das DVB-T-Dongle + vorhandener Raspberry PiADS-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.
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
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.
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
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
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
Ä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
- auf dem Raspberry Pi: Image installieren: 2014-01-07-wheezy-raspbian
- BLE-Dongle in RasPi stecken
- 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)
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
- Ganz praktisch ist der Beispielcode von Apple für die AirLocate-App:https://developer.apple.com/library/ios/samplecode/AirLocate/Introduction/Intro.html
- Radius Networks verkauft Libraries für IOS, Android und weitere Software http://developer.radiusnetworks.com/ibeacon/
Links
- http://learn.adafruit.com/pibeacon-ibeacon-with-a-raspberry-pi/overview
- http://developer.radiusnetworks.com/ibeacon/virtual.html
- BlueZ
- http://plugable.com/products/usb-bt4l.
- https://developer.apple.com/library/ios/samplecode/AirLocate/Introduction/Intro.html
- http://en.wikipedia.org/wiki/IBeacon
Labels:
android,
ble,
bluetooth,
btle,
ibeacon,
indoor navigation,
ios,
iot,
nfc,
pos,
Raspberry Pi,
raspi
Standort:
Niederhöfen, 87484 Nesselwang, Germany
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-sensortagSensoren! 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
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 einemhcitool lescan
erkannt worden sien.
TI Sensor Tag
User Guide auf dem Sensortag-Wiki
Plugable usb-bt4le
Bluez-Bluetooth-Stack
https://github.com/IanHarvey/bluepy
Standort:
Nesselwang, Germany
Abonnieren
Posts (Atom)






