Weitere Pi-Projekte (4)

Outdoor Überwachung

Unsere mobile Lösung für draußen entstand aus dem Wunsch, ungebetene Gäste in unseren Gartenbeeten zu beobachten. Vielleicht sind dort ja Marder unterwegs?

Zur Bewegungserkennung nutzen wir einen kleinen PIR-Melder, welchen wir auch hier schon getestet haben.

Ähnlich wie bei unserer Cam für IR-Fotos überwachen wir ein GPIO-Pin des Pi, um daraufhin eine Aufnahme auszulösen.

Dazu ist unser Bewegungsmelder gut geeignet. Dessen Ausgang gibt bei Erkennung etwa 4V ab und dieser ist nun über einen Widerstand mit GPIO17 verbunden.
In unser Python-Skript fügen wir nun noch ein, was im "High"-Zustand dieses Pins so getan werden soll.

subprocess.call(["sudo","raspistill","-h","900","-w","1200","-rot","180","-awb","auto","-q","70","-o",dname])

Wir verwenden "raspistill" und erzeugen eine moderat aufgelöste und um 180 Grad gedrehte Aufnahme, denn unsere Kamera sitzt auf dem Kopf stehend im Gehäuse.

Und sie ist wieder eine Infrarot-Kamera, denn wir wollen auch nachts Aufnahmen machen. Dazu nutzen wir nachts einen kleinen LED-IR-Scheinwerfer.

Es hat sich bewährt, diesen aus Richtung Kamera, um ein paar Grad versetzt, auf den Zielbereich leuchten zu lassen.

Wir schalten ihn nach erkannter Bewegung ein, bevor wir das Bild von der Pi-Cam generieren.
Danach kann er wieder ausgeschaltet werden.

Im Inneren des Gehäuse befinden sich noch eine Steckplatine (um auch mal etwas unkompliziert erweitern zu können) und unsere Powerbank mit USB-Anschluss. Diese kann also direkt mit dem Micro-USB-Anschluss des Pi verbunden werden.

Von Vorteil auch, dass die Ladeelektronik parallel zur Stromentnahme funktioniert und man problemlos ein Solarpanel vom gleichen Hersteller am zweiten USB-Port betreiben kann. An sonnigen Sommertagen ist die Schaltung damit vom Stromnetz unabhängig, mit der gespeicherten Energie kommt man über die Nacht.

Sind wir in der Nähe unseres WLAN, meldet sich der Raspi im Netz an und man kann von Ferne auf das abgelegte Bildmaterial zugreifen.

Und alles ist regengeschützt aufgebaut, da braucht man sich auch über mehrere Tage keine Sorgen zu machen.

Und wie oben zu sehen: Juhu, wir haben den Übeltäter, ist nur ein harmloser Ziemer...
 

Navilock GPS-Modul am Pi

Das "NL-551EUSB" ist schon ein geniales Teil. Und genau in dieser USB-Variante wollten wir die Platine von Navilock dann auch einmal ausprobieren.

Das sollte prinzipiell mit jedem Rechner mit USB-Anschluss funktionieren, wir verwenden für unsere Zwecke einen Raspberry Pi.

Den für die 5-polige Minibuchse auf der Platine notwendigen Stecker verbindet man mit einem konventionellen USB-Kabel. Damit lässt sich das Ganze dann an Raspi oder Hub verbinden. Darüber geschieht dann auch die Stromversorgung für das Modul.

Mit

$ lsusb

kontrolliert man, ob die Erkennung funktioniert hat und bekommt eine Ausgabe wie z.B.

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 005: ID 1546:01a5 U-Blox AG
Bus 001 Device 004: ID 0bda:8172 Realtek Semiconductor Corp. RTL8191SU 802.11n WLAN Adapter

Unser gesuchtes Device ist übrigens das von "U-Blox".
Ob sich das neue Gerät am Anschluss ordentlich etabliert hat, prüft man mittels

$ dmesg

und erhält eine Ausgabe so ähnlich wie

[ 470.873202] usb 1-1.2: new full-speed USB device number 5 using dwc_otg
[ 470.975762] usb 1-1.2: New USB device found, idVendor=1546, idProduct=01a5
[ 470.975799] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 470.975815] usb 1-1.2: Product: u-blox 5 - GPS Receiver
[ 470.975829] usb 1-1.2: Manufacturer: u-blox AG - www.u-blox.com
[ 471.034359] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
[ 471.037946] usbcore: registered new interface driver cdc_acm
[ 471.037980] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

Hat das funktioniert, kann nun die serielle Ausgabe des Empfängers kontrolliert werden.
Zuerst die Baudrate an oben identifiziertem Anschluss (ttyACM0) auf "4800" stellen:

$ sudo stty 4800 -F /dev/ttyACM0

Danach kann mittels

$ cat /dev/ttyACM0

gelesen und testweise auf der Konsole ausgegeben werden. Liest man jetzt eine Menge GPGxx-Ausgaben, dann ist das Gröbste geschafft...

In einem nächsten Schritt sollte man jetzt die empfangenen Informationen filtern und auswerten. Wir wollen nur das GPGGA-Protokoll auswerten. Dazu haben wir uns Hilfe durch das Tool "gps.py" von Daniel Kampert (http://kampis-elektroecke.de) geholt. Ein schönes Stück Python-Code und eine entsprechende Ausgabe sieht nun so aus:

GPGGA,201945.750,5029.5971,N,01225.1458,E,1,05,3.6,551.8,M,45.5,M,,0000*50

Laenge des Datensatzes: 74 Zeichen
Uhrzeit: 20:19:45
Breitengrad: 50.295971 N
Laengengrad: 12.251458 E
Hoehe ueber dem Meeresspiegel: 551.8 M
GPS-Qualitaet: 1
Anzahl der Satelliten: 5
Checksumme: 0000*50

Nun kann man bspw. noch KML-Dateien erzeugen. Dazu dann in einem entsprechenden Codeschnipsel...
 

Pi steuert Flipanzeige

Die Flip-Anzeige gibt es von ELV und ist bei anderen Elektronik-Versendern auch erhältlich. Tatsächlich hat uns interessiert, wie früher per Schild einen Status anzeigen zu lassen. Interessant auch, dass die Anzeige in Ruhe wenig Strom verbraucht, also auch per Batterie betrieben werden kann.
 

 
Natürlich braucht es trotzdem den Anschluss (per I2C-Bus) an einen Rechner. Die fertigen Libraries für den Arduino überzeugen nicht. Beim Anschluss am spannungsgeregelten Eingang des Boards gibt es zudem Kommunikationsschwierigkeiten.

Der 3.3V-Anschluss funktioniert zwar, aber ein Nano (wenn man denn wie nach Anleitung kein Shield für den Uno aufbaut) bringt zu wenig Durchzugskraft für die Mechanik.
 

 
Also den Bus analysiert und zum Raspi übergegangen (bei uns ist dort I2C-mäßig schon alles ready).

Die Standard-Adresse der Flipanzeige war dann überraschenderweise auch 0x1f anstatt 0x3e. Befüllt man das mit entsprechenden Werten, dann kann man folgendes tun...

$ sudo i2cset -y 1 0x1f 0x02 # state "Display up"
$ sudo i2cset -y 1 0x1f 0x04 # state "Display down"
$ sudo i2cset -y 1 0x1f 0x08 # toggle (Display-Zustand wechseln)

... und damit den Motor bedienen und die Mechanik hin- und herschieben.

Damit kriegt man dann den ersten oder zweiten Zustand bzw. Schriftzug unter eine entsprechende Aussparung geschoben.
 

 
Im Ausschnitt (Gehäuse zu bauen) ist dann der jeweils gültige Zustand zu erkennen.

Bindet man wie oben entsprechende Befehle in seine Software-Installation ein, braucht es keine zusätzlichen Libraries, der Raspi muss nur auf den aktuellen Stand gebracht werden und "I2C" können, was man grundhaft am besten so macht:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install i2c-tools

OK, das ist dann wahrscheinlich eh alles schon getan, wenn ihr diverse I2C-Geräte schon 'dran habt. Wenn nicht, dann nach "Standard" vorgehen und SPI und I2C-Modul von der Blacklist des Pi entfernen:

$ sudo nano /etc/modprobe.d/raspi-blacklist.conf

#blacklist spi-bcm2708
#blacklist i2c-bcm2708

$ sudo reboot(wegen Einlesen der Liste und weil eventuell neuer Kernel installiert wurde)

Um die benötigten Module später automatisch zu laden, diese in "/etc/modules" eintragen:

$ sudo nano /etc/modules

snd-bcm2835
spi-bcm2708
i2c-bcm2708
i2c-dev

Jetzt zuerst die Module manuell laden...

$ sudo modprobe spi-bcm2708
$ sudo modprobe i2c-bcm2708
$ sudo modprobe i2c-dev

dann kann man überprüfen, ob sich das Teil am I2C-Bus mit der Adresse 0x1f meldet:

$ sudo i2cdetect -y 1


 
Nun sollte nach einem Neustart alles bereit sein und die Anzeige, wie oben beschrieben, einwandfrei funktionieren...

Swen Hopfe

Neuen Kommentar schreiben

Filtered HTML

  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Zulässige HTML-Tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • HTML - Zeilenumbrüche und Absätze werden automatisch erzeugt.

Plain text

  • Keine HTML-Tags erlaubt.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • HTML - Zeilenumbrüche und Absätze werden automatisch erzeugt.