Projekte
Interessante Projekte
Interessante Projekte
Es ist eine schwierige Zeit für das Auto: Verteufelt für alle Umweltkatastrophen dieser Welt sowie vorzeitige Todesfälle einerseits, geliebt als luxuriöses Individualtransportmittel andererseits.
Fakt ist: Die Gesetzgebung, wie sinnvoll sie auch sein mag, steht fest und schreibt grüne Plaketten vor. Fahrzeuge mit roter oder gelber Plakette sind praktisch unverkäuflich. Doch gerade Fahrzeuge, welche heute als Youngtimer gelten, sind teilweise wunderschön und unter dem ganzen Einheitsbrei auf der Straße eine Augenweide. Als Zusammenfassung und Einstimmung in die Thematik: Bitte das nachfolgende Video gucken.
Autos hat man damals noch gebaut als wär’n es Kathedralen
Was also tun, um diese Schätze zu bewahren?
Doesn’t it look great on the wall? Yeah! That’s why I created the DJI Spark wall mount. While your intelligent flight battery is recharged in the charging station, you can mount the DJI Spark safely on the wall. The wall mount is basically a hook, perfectly shaped like the intelligent flight battery, so your Spark will hang safely on this wall mount. I used Tesa™ Posterstrips or Powerstrips to attach it to the wall.
You can use Shapeways as 3D print provider to print your own:
3D print it at ShapewaysOr you can download the .dae file to print it at home.
Im ersten Teil der Robotik-Sensor Reihe, wurde ein Look-Up Table für den Tinkerforge Ultraschall Sensor parametriert. Nun ist es möglich reale Entfernungen von diesem Sensor zu erhalten. Der Beitrag schloss mit den Worten, dass eine Normalverteilung für Sensorwerte nur im Bereich 1…2m anzunehmen ist. Etwas fortgeschrittene Filterverfahren, wie das Kalman Filter, arbeiten unter der Annahme, dass die Sensoren ein AWGN (Additive White Gaussian Noise) Signal ausgeben. Dies bedeutet, dass der Sensor den wahren Wert zwar messen kann, aber durch zahlreiche Fehlereinflüsse zusätzlich weißes Rauschen aufaddiert mit ausgegeben wird.
Wie nun also den ‘Wahren Wert’ erhalten?
Wer rapid Prototyping betreibt und schnell eine funktionierende Lösung auf die Beine stellen möchte oder muss, der wird an Tinkerforge (hoffentlich) nicht vorbei kommen. In meinen Augen allem Arduino Kram überlegen, besser dokumentiert, besser in jede Software zu integrieren und qualitativ oberste Stufe. Außerdem Open Hardware und Open Source, Made in Germany!
Im Angebot befindet sich neben Laserdistance-Bricklet und IR-Distance Bricklet auch ein Ultraschall Distance Bricklet, welches in der Robotik und vielen anderen Bereichen sicherlich eine wichtige Stellung einnimmt. Typischer Anwendungsfall: Entfernung zu einem Hindernis bestimmen. Verwendet man etwas ausgefeiltere Algorithmen, sollten die Messgrößen in einer Einheit sein, d.h. typischerweise in SI Einheiten.
Es gibt ein Problem: Der Rückgabewert der Bricklets ist nicht in cm oder mm oder m, sondern eine dimensionslose Größe, welche man selbst in Distanz umrechnen muss. Der Tinkerforge Support schreibt:
Das Distance US Bricklet gibt einen ‘Analogwert’ zwischen 0 und 4095 zurück. Der Rückgabewert ist nicht in cm oder mm oder ähnliches. Wir können dort leider nicht einfach eine Lookup-Table einbauen und direkt eine Entfernung zurückgeben (wie wir es z.B. bei dem Distance IR machen), da der Ausgabewert bei dem Ultraschallsensor extrem von der Versorgungsspannung abhängt. Diese ist aber leider bei jedem PC/Hub ein bisschen anders. D.h., wenn ihr das Distance US Bricklet nutzen wollt um Entfernungen in cm/mm zu messen, müsst ihr euch selber eine Lookup-Table bauen dafür.
Let’s do it…
Die Vision ist klar: Städte sollen vernetzt und intelligent werden. Das passiert nicht von Allein und nicht von heut auf morgen. Irgendwer muss damit anfangen. Nicht nur die großen Player wie IBM und Telekom können Städte vernetzen und ‘intelligent’ machen, auch für Einzelne ist es möglich.
Firmen wie Tinkerforge haben die Mikroelektronik so weit vereinfacht, dass man nicht mehr selbst Kondensatoren und Widerstände auswählen und zusammen löten muss, sondern fertige, funktionierende und Plug-&-Play fähige Anwendungen erstellen kann.
In diesem Beitrag möchte ich zeigen, wie man die Tinkerforge Wetterstation und einen RaspberryPi (in diesem Fall den Model B+) und einen Huawei UMTS Stick zusammen arbeiten lässt und damit auch fernab vom heimischen WLAN, eine IoT (Internet of Things) Anwendung betreiben kann.
Beispielhaft soll die Wetterstation alle 10min die aktuellen Sensor-Daten an ihren Twitter Account @SchrebergarDDen schicken. Die Wetterstation steht dabei im heimischen – wer hätte es gedacht- Schrebergarten. :)
Die Tinkerforge Wetterstation ist eine Zusammenstellung einiger Tinkerforge Sensoren + Montageset (Schrauben etc.) + Gehäuse. Die Sensoren ermöglichen das Messen von
Die Daten werden an den Tinkerforge Master Brick geschickt. Dieser kann wiederum mit einem Rechner (z.B. RaspberryPi) verbunden werden.
Die Verbindung erfolgt über USB. Damit der RaspberryPi nach der frischen Installation von Linux mit den Tinkerforge Sensoren kommunizieren kann, muss noch etwas installiert werden. Der RaspberryPi sollte zur Einrichtung fertig konfiguriert und mit dem heimischen WLAN verbunden sein. Als erstes muss dem RaspberryPi ein ‘pm-utils’ Paket zur Verfügung gestellt werden. Dazu im Terminal auf dem RaspberryPi
sudo apt-get install pm-utils
eintippen. Sollte eine Meldung kommen, dass Abhängigkeiten zu ‘powermgmt-base’ oder anderen Paketen notwendig sind, einfach
sudo apt-get -f install
hinterher schieben, der Pi holt sich dann alles.
Nun muss der BrickDeamon von Tinkerforge geholt werden, welcher über alle I/O zu den Bricks verfügt. Dieser ist im Github Account von Tinkerforge zu finden und kann mit
wget http://download.tinkerforge.com/tools/brickd/linux/brickd_linux_latest_armhf.deb sudo dpkg -i brickd_linux_latest_armhf.deb
herunter geladen und installiert werden. Möchten wir mit Python auf die Sensoren zugreifen, benötigen wir noch die Bindings für Python. Diese können einfach mit
sudo pip install tinkerforge
installiert werden. Sollte der Python Paket Manager ‘pip’ noch nicht vorhanden sein: get_pip
Nun ist der RaspberryPi prinzipiell fertig, mit allen Sensoren zu kommunizieren. Dazu am besten einfach das vorbereitete Standardprogramm von Tinkerforge laden und ausführen.
wget https://raw.github.com/Tinkerforge/weather-station/master/write_to_lcd/python/weather_station.py
Anschließend kann man mit
python weather_station.py
die Wetterstation starten und sehen, wie die Sensoren jede Sekunde eingelesen und auf dem LCD Display dargestellt werden.
Wir haben nun alle physikalischen Werte eingelesen und auch auf dem LCD Display dargestellt. Prima!
Wenn wir die Wetterstation auch außerhalb unseres WLAN’s online bekommen wollen, benötigen wir einen UMTS Stick mit Datenkarte. Empfehlung: M2M Mobile und Huawei UMTS Stick.
Der RaspberryPi soll auch außerhalb vom heimischen WLAN mit dem Internet kommunizieren. Daher ist eine mobile Datenverbindung notwendig. Der günstige Huawei UMTS Stick ist allerdings noch etwas umzukonfigurieren, damit er vom RaspberryPi korrekt erkannt wird.
Der Huawei UMTS Stick ist hoffentlich funktionsfähig und wird vom RaspberryPi Model B+ erkannt. Testen kann man das, indem man ‘lsusb’ im Terminal eintippt.
pi@rpi ~ $ lsusb Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter Bus 001 Device 006: ID 12d1:1f01 Huawei Technologies Co., Ltd. Bus 001 Device 005: ID 16d0:063d GrauTec
Der UMTS Stick von Huawei ist so konfiguriert, dass er unter Windows und Mac ein Plug&Play möglich ist incl. automatischer Konfiguration usw. Das hat den Nachteil, dass es auf dem RaspberryPi als CD-ROM Laufwerk erkannt wird. Wir müssen also dem Linux mitteilen, dass es ein UMTS Modem ist, statt eines CD-ROM Laufwerk. Dazu ist usb-modeswitch notwendig.
sudo apt-get install usb-modeswitch
Nun in der /etc/usb_modeswitch.conf die DefaultProduct ID ändern:
Die /etc/usb_modeswitch.conf sollte dann so aussehen:
# Huawei UMTS Stick von CD-ROM nach Netzwerkkarte switchen: DefaultVendor = 0x12d1 DefaultProduct = 0x1f01 << hier muss eure ID rein! TargetVendor = 0x12d1 TargetProduct = 0x1506 MessageEndPoint = "0x01" MessageContent = "55534243000000000000000000000011060000000000000000000000000000"
Danach steht der Huawei UMTS Stick als Netzwerkkarte zur Verfügung:
pi@rpi ~ $ lsusb Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter Bus 001 Device 007: ID 12d1:14dc Huawei Technologies Co., Ltd. Bus 001 Device 005: ID 16d0:063d GrauTec
Es steht nun ein zweites Ethernet Device zur Verfügung, welches vom RaspberryPi genutzt werden kann, um sich mit dem Internet zu verbinden.
pi@rpi ~ $ ifconfig eth0 Link encap:Ethernet Hardware Adresse b8:27:eb:6b:eb:43 UP BROADCAST MULTICAST MTU:1500 Metrik:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) eth1 Link encap:Ethernet Hardware Adresse 00:1e:10:1f:00:00 UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 RX packets:200 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX bytes:92685 (90.5 KiB) TX bytes:0 (0.0 B)
Ist man bisher via SSH im heimischen WLAN mit dem RaspberryPi verbunden (der Pi bekommt seine IP also vom eth0 Device), sollte man mit folgendem Schritt noch warten, bis wirklich alles konfiguriert ist und man tatsächlich unabhängig vom eigenen WLAN in’s Internet möchte:
sudo nano /etc/network/interfaces
Dort
iface eth1 inet dhcp
hinzufügen.
Um als Internet of Things Gerät bei Twitter etwas posten zu dürfen, muss man sich vorher einen Developer Account besorgen und seine Anwendung eintragen.
Wichtig ist, der App “Read+Write” Rechte zu geben und die 4 Codes zu bekommen. Wie im Video zu sehen ist, dauert das ein paar Sekunden. Diese 4 Codes (für OAuth) müssen nun von Tweepy, dem Twitter Client für Python, genutzt werden, um sich zu authentifizieren.
Hier kann man einfach das um die Twitter Funktionalität erweiterte Tinkerforge Skript nutzen:
git clone https://gist.github.com/2c96d807242ab7338ba3.git weather_station
Nun hat man die weather_station_tweeter.py auf dem RaspberryPi und kann diese editieren. Nicht vergessen die Authentication Codes für eure Twitter App in der init_twitter() Funktion einzutragen!
Die weather_station_tweeter.py muss noch mit
chmod +x weather_station_tweeter.py
ausführbar gemacht werden, sodass diese vom System gestartet werden kann.
Nun gibt es viele Möglichkeiten das Python Skript automatisch starten zu lassen. Eine einfache ist das Starten via Cronjob. Dazu folgendes ausführen:
sudo crontab -e
Darin die Pfadumgebung für den Cronjob eintragen
SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
und schließlich den Befehl, der das weather_station Python Script jedes mal nach dem Booten startet:
# m h dom mon dow command @reboot su -c 'python /home/pi/weather_station/weather_station_tweeter.py 2>&1 >> /home/pi/weather_station.log' -s /bin/sh pi
Dieser Eintrag beauftragt den Pi, jedes mal nach dem Neustart das Python Skript als User ‘pi’ auszuführen und die Log-Ausgaben in eine weather_station.log Datei zu schreiben.
Die ganzen Schritte wirken nur niedergeschrieben so kompliziert. Wenn man etwas geübt mit Linux und den ganzen Befehlen ist, dann ist der größte Teil der Dinge, die hier aufgeschrieben sind, ohnehin bereits eingerichtet oder logisch und nicht extra einer Erwähnung wert.
Das Resultat ist eine alle 10min twitternde Wetterstation:
Zufällig passt ein RaspberryPi und ein Huawei UMTS Stick genau in die Tinkerforge Wetterstation und somit kann diese auch ohne das heimische WLAN als Internet of Things Anwendung genutzt werden.
Die Nutzung der Sensoren ist – wie von Tinkerforge gewöhnt – einfach und in beliebiger Programmiersprache möglich. Hier wurde eine Beispielimplementierung in Python gezeigt, welche maßgeblich auf dem Skript von Tinkerforge beruht, nur um die Twitter Funktionalität erweitert wurde.
Prinzipiell kann natürlich jede Web-Anwendung mit den Daten gespeist werden, nicht nur Twitter.
Kritik: Die gemessene Temperatur ist immer ein paar Grad (2-10°C) zu warm, da es genau genommen die Temperatur des Barometer-Sensor-Chips ist, welcher prinzipbedingt etwas wärmer als die umgebende Luft ist. Die gemessene Helligkeit ist im schwarzen Gehäuse mit Sicherheit auch nicht so ganz repräsentativ. Das sollte man bedenken.
Alles in allem ziemlich gut, um sich dem Thema zu nähern.
Da der RasbperryPi nun ein Teil des Internets ist, kann er sich beispielsweise
Den Anwendungsmöglichkeiten ist keine Grenze gesetzt. Außer durch den Datentarif der GSM Karte. :(
Junge Familien kennen das Problem: Das Kind schläft 1h im Wagen, in dieser Zeit muss man schnell im Umkreis der Wohnung zu den Einkaufsstätten gehen um die täglichen Besorgungen zu erledigen. Da man das täglich macht, kehrt schnell Langeweile ein. Weiter gelegene Geschäfte erreicht man nicht, weil sich durch die Schrittgeschwindigkeit in der einen Stunde nur ein bestimmter Radium um die eigene Wohnung ergibt. Auch mit den anderen Muttis in der Stadt einen Latte trinken gehen ist schlecht, weil die Bahnfahrt ja schon 1/2h Zeit in Anspruch nimmt. Man müsste also die Fahrtgeschwindigkeit von Mutter+Kind+Kinderwagen erhöhen, den Kinderwagen aber im ursprünglichen Zustand belassen. Die Lösung:
Beruflich beschäftige ich mich gerade mit einem Projekt, welches den Studenten der Hochschule für Technik und Wirtschaft Dresden in Zukunft ermöglichen soll die schwer fassbare Materie der Fahrdynamik an einem realen Fahrversuch zu erleben. Da auch Versuche im Grenzbereich der Fahrphysik durchgeführt werden sollen, wird das Fahrzeug im Maßstab 1:5 aufgebaut. Neuigkeiten gibt es im Projektblog unter www.iSuPIA.de/blog
Inspiriert durch das Akkuschrauberrennen der Fakultät Gestaltung der HAWK Hildesheim kam die Idee zum Umbau eines Tretautos auf Elektroantrieb. Mit Hilfe eines handelsüblichen Akkuschraubers soll der manuelle Antrieb auf Elektro umgebaut werden. Der zweijährige Pilot sollte seine Freude haben…