Archiv der Kategorie: C.H.I.P.

Beacons im Physical Web

Allgemeine Übersicht

Im Physical Web werden Objekten diese Objekte kennzeichnende URLs (= Uniform Resource Locator) zugeordnet. Das bedeutet nichts anderes, als das unter der betreffenden URL im Allgemeinen eine Website zu finden ist, die objektrelevante Daten zur Verfügung stellt.

Die zu erkennenden URLs werden von Objekten in der Umgebung gesendet, so dass dadurch die Objektbezogenheit sichergestellt ist. Jedes Objekt kann mit einem Bluetooth Low Energy (BLE) Beacon, einem leistungsstarken, batteriebetriebenen Gerät, versehen werden, das die betreffenden Inhalte über Bluetooth sendet.

Beacons, die die Eddystone-Protokollspezifikation unterstützen, können URLs und weitere Formate übertragen. Dienste auf dem Mobilgerät des Nutzers, wie Google Chrome oder Nearby Messages, können nach der Übergabe dieser URLs nach diesen suchen und diese anzeigen.

Das Physical Web sorgt unter anderem dafür, dass Nutzer nicht ständig neue Apps auf ihren Mobilgeräten installieren müssen, sondern die Nachrichten auf einer einheitlichen Oberfläche betrachten können. Es lässt sich in nahezu allen Fällen einsetzen, in denen Nutzer an Informationen über ihre Umgebung interessiert sind oder in denen eine Interaktion zwischen ihnen und smarten Objekten nötig ist.

Ausgangspunkt für die Entwicklung der Beacon-Technologie war im Jahr 2013 die Fa. Estimote mit dem ersten BLE Beacon, gefolgt von Apple, die ihre Implementierung iBeacon benannt haben. Diese Beacons senden eine BLE Advertising Message aus, deren Inhalt von einer Empfänger-App dekodiert werden und davon abgeleitet Aktionen auslösen kann

Google ist im Jahr 2015 mit seinem Physical Web Projekt in diese Thematik eingestiegen und erweitert die von den Beacons gesendeten Informationen, so dass zur Aufbereitung der gesendeten Informationen nicht zwangsläufig eine zugeordnete App erforderlich ist.

Im Alltag begegnen uns oft Situationen in denen der Einsatz von Beacons sehr von Vorteil ist.

Nicht jeder Nutzer des öffentlichen Personen-Nahverkehrs kann Informationen zur aktuellen Situation seiner gewünschten Verbindung über dynamische Fahrgastinformations-Anzeiger beziehen. In den Innenstädten werden diese zunehmend eingesetzt.

1024px-Dresden_Hauptbahnhof_-_Haltestelle_der_Straßenbahn_(7033568319)

Autor: IngolfBLN

Auf dem Land werden wohl noch weitere Zeit die traditionellen Haltestellenschilder zu sehen sein.

Haltestellenschild_Jungfernstieg_retouched

Autor: MissyWegner

Bein einem solchen Haltestellenschild, was auch im innerstädtischen Bereich durchaus noch gesehen wird, kann ein installierter Beacon die gewünschten Informationen beispielsweise über eine dynamisch aktualisierte Website mit Fahrplaninformationen bieten.

Neben diesen Anwendungen haben die Marketing-Strategen die Mächtigkeit dieser Beacon-Lösungen schon lange erkannt. So kann beispielsweise beim Betreten eines Supermarktes gezielt auf Sonderangebote hingewiesen und das Kaufverhalten beeinflusst werden.

Nach diesen eher anwendungsorientierten Bemerkungen kann sich jeder selbst Gedanken über den Einsatz von Beacons machen.

Kommerzielle Beacons

In den kommerziellen Angeboten findet man zahlreiche Beacons, bei denen leider nicht immer klar hervorgeht, ob sie auch das Eddystone Profile unterstützen. Ich habe mit zwei Beacons der chinesischen Fa. AprilBrother experimentiert.

CardBeacon

Kern des CardBeacons ist ein DA14580 SoC der Fa. Dialog – ein Cortex-M0 mit einem BLE Core. Es wird die zumindest doppelte Batterielebensdauer gegenüber den als Standard geltenden Nordic nrf51822 Chips versprochen und soll mit den Default-Einstellungen drei Jahre betragen. Eine Batterie CR3032 (500mAh) ist im CardBeacon integriert.

CardBeacon ist iBeacon-zertifiziert und unterstützt damit alle iBeacon-Funktionen. UUID, Major, Minor und das Advertising Intervall sind konfigurierbar.

cardbeacon1

CardBeacon im Scheckkartenformat

Dieser CardBeacon hat die Grundfläche einer Kreditkarte. Die Dicke der Karte beträgt allerdings 5.8 mm. Hier sind die technischen Daten des CardBeacons nachzulesen.

AprilBeacon 202

Der AprilBeacon 202 kann wie bereits der CardBeacon im iBeacon-, Eddystone-UID- oder Eddystone-URL-Mode betrieben werden.

AprilBeacon

AprilBeacon mit dem Abmessungen 40 mm x 40 mm x 15 mm

AprilBeacon App

Die AprilBeacon App ist ein herstellerspezifisches Tool zur Konfiguration der von diesem Hersteller angebotenen Beacons. Auf der Website des Herstellers findet man die Links zu Apples App Store und zu Googles Playstore.

Beacon Tools

Zur Inbetriebnahme bzw. zur Konfiguration von Beacons bedarf es in der Regel spezieller Tools, die meist herstellerspezifisch sind. Die AprilBaecon App war ein solches Tool.

Ansonsten ist es hilfreich mindestens einen BLE Scanner und die Physical Web App auf seinem Smartphone zu installieren, die für Android in Google’s Playstore zu finden sind.

In Googles Playstore findet man ausserdem zahlreiche BLE Scanner. Ich habe die Tools von Bluepixel Technology und Nordic Semiconductor ausgesucht und verwendet. Mit der Physical Web App kann man schließlich die übertragenen URL einfach sichtbar machen.

BLE Implementierungen

Es gibt derzeit ein recht breites Spektrum an Hardware, bei der bereits ein BLE Modul installiert ist. Das Spektrum reicht dabei von einfachen Mikrocontrollern bis hin zu leistungsfähigen Linux-Devices. Zu nennen sind u.a. BBC micro:bit & Calliope mini, pycom WiPy und Linux Devices , wie Raspberry Pi 3, Raspberry Pi Zero W und C.H.I.P.

Dieser Abschnitt zeigt für BBC micro:bit & Calliope mini die erforderliche Software-Installation, um einen Eddystone-URL Beacon zu erstellen. Das Ergebnis ist für alle Implementierungen identisch – eine über BLE übertragene URL, die von einem Smartphone, Tablet oder anderem BLE-tauglichen Equipment empfangen und ausgewertet werden kann.

Seit einem Jahr ist der BBC micro:bit genannte Mikrocontroller der BBC verfügbar und unter Schülern und Lehrer in Großbritannien recht verbreitet. In Deutschland hat sich die gemeinnützigen Calliope GmbH das Ziel gesteckt, mit dem Calliope mini einen für die Anforderungen der Grundschule geeigneten Mikrocontroller bereit zu stellen, wobei sich dieser am BBC micro:bit orientiert.

Beide Mikrocontroller-Boards sind technisch vergleichbar ausgestattet und weisen als Kern einen nRF51822 Mikrocontroller von Nordic Semiconductors auf.

Preise und Bezugsmöglichkeiten sind in der nachfolgenden Tabelle gelistet.

Mikrocontroller BBC micro:bit Calliope mini
Preis EUR 16,85 EUR 35,00
Lieferant http://www.exp-tech.de

Zur Programmierung der beiden Mikrocontroller-Boards stehen ein JavaScript Blocks Editor und MicroPython zur Verfügung. Will man BLE nutzen, dann steht MicroPython leider nicht zur Verfügung da der BLE-Stack zu viel RAM benötigt.

Unser micro:bit (oder Calliope mini) Beacon soll nun eine URL aussenden, die auf die verwendete Programmierumgebung, den Java Script Blocks Editor, verweist. Die URL lautet im Original https://makecode.microbit.org/ und verkürzt https://goo.gl/8Hcntr.

Die folgende Abbildung zeigt die vom Java Script Blocks Editor verwendeten Blöcke.

microbit - Eddystone URL senden

Um BLE zur Verfügung zu haben, muss über Add Package zu Beginn noch das BLE Paket nachinstalliert werden.

Da hier mit einer sicheren Webseite gearbeitet wurde, ist die versendete URL auch als (weitere) Nearby Message sichtbar und kann vom Smartphone direkt aufgerufen werden.

Nearby4

 

C.H.I.P. als Sensor-Knoten

Wegen seiner Kompaktheit kann C.H.I.P.  dann sehr gut als Sensor-Knoten eingesetzt werden, wenn es nicht auf minimalen Stromverbrauch ankommt.

Für erste Tests habe ich mit dem Program chiplog.py  die CPU-Last, den verfügbaren Speicher und die Boardtemperatur abgefragt und über Thingspeak visualisiert. Ausserdem wird beim Überschreiten der Temperatur eine Push-Message versendet. Mit dem Programm stress habe ich die CPU-Last erhöht, um die Auswirkungen auf die Boardtemperatur zur verdeutlichen.

CPU_Load

Mem_avail

PMU_Temp

Um einen externen Sensor abfragen zu können, bedarf es nur noch weniger zusätzlicher Zeile Code, die für einen Temperatur- und Feuchtigkeitssensor SHT31 noch folgen.

Das Programm BatStatus.py zeigt den Status der Batterie in den ersten Minuten nach dem Anschliessen an den C.H.I.P.  Controller.

BatStatus

Die Programme chiplog.py und BatStatus.py sind auf Github abgelegt. Im Wiki sind Installationshinweise nach einem Flashen des Betriebssystems und dem erforderlichen Python-Setup aufgeführt.

 

Einfache Wetterstation für € 20

sht31chip

Mit dem $ 9 C.H.I.P. und einem Grove SHT31 ($ 11.90) kann man schon für € 20 Temperatur und relative Luftfeuchtigkeit erfassen und in der Cloud visualisieren.

Vorbedingung ist die Installation der folgenden Pakete:

sudo apt-get install build-essential libi2c-dev i2c-tools python-dev libffi-dev

Drei sehr überschaubare Scripte übernehmen die Abfrage des Sensors und das Versenden der Daten.

Mit dem Python Script SHT31.py werden von dem über den I2C-Bus angeschlossene Sensor Temperatur und relative Luftfeuchtigkeit abgefragt und zwischengespeichert. Das Shell Script thingspeak.sh sendet die erhobenen Messwerte an den Thingspeak-Server, während das Shell Script mqtt.sh die gleichen Daten an einen MQTT Broker sendet. Mit dem Script weather.sh werden diese drei Scripte gekapselt und in die Crontab eingetragen.

# m h dom mon dow command
*/5 * * * * /home/weather.sh

Durch diesen Eintrag erfolgt ein Aufruf des Scripts weather.sh alle fünf Minuten.

Die Scripte stehen wieder in meinem CHIP Repository zum Download zur Verfügung. Hier können die Ergebnisse der Messungen verfolgt werden.

C.H.I.P. kam heute mit der Post

Inbetriebnahme ist denkbar einfach. Tastatur und Maus über einen USB-Hub am C.H.I.P. anschließen. Den TRRS-Anschluss über ein „mini to RCA A/V” Kabel mit einem Monitor verbinden und das Board über ein kräftiges USB-Steckernetzteil mit Spannung versorgen.

Über DHCP bezieht das Board eine IP-Adresse, die mit

ip addr show dev wlan0

abgefragt werden kann. Dann kann man bei Verwendung als headless System über SSH auf den C.H.I.P. zugreifen und über die Kommandozeile das System erkunden.

Nach der Installation zeigt

chip@chip:~$ uname -a
Linux chip 4.3.0-ntc #1 SMP Fri Feb 19 09:37:25 PST 2016 armv7l GNU/Linux

Informationen zum eingesetzten Kernel an. Nach

sudo apt-get update && sudo apt-get upgrade

mussten aber weitere Installationen vorgenommen werden:

sudo apt-get install gcc
sudo apt-get install make
sudo apt-get install git

Erst danach konnten erste Benchmarks erfolgen.