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

Kommentare:

  1. Super Projekt. Klasse Anleitung. Hab nur 3 Stolpersteine gehabt:
    1: Die Anschlüsse der Servos sind nicht gut beschriftet. rot ist plus, braun ist minus, orange ist Signal. bei mir ist das Signal in der Mitte.
    2. Die installation des hipi-Moduls ging nicht wie beschrieben. Erst die manuelle Anleitung des Autors hat dann aber problemlos funktioniert.
    3. Die Scripte und die index-html Dateinen müssen nach /root/thermo/scripts/ kopiert werden, damit der Webserver auch funktioniert.
    Ansonsten Vielen Dank. Nach ca 4 Stunden alles eingerichtet mit Servo und ersttem Test. tip: Die Auflösung im web.py kann man deutlich erhöhen (von 48 auf 96)

    AntwortenLöschen
    Antworten
    1. Danke für das Feedback - werde die Anleitung überarbeiten. Kannst Du vielleicht ein aussagekräftiges Bild mit 96-er-Auflösung schicken/verlinken? Meine Ultra-Billig-Servos sind mechanisch nicht besonders gut und schaffen das nicht.

      Löschen