Startseite>Raspberry Pi im Naturschutz
Aus Raspberry Pi Geek 08/2017

Raspberry Pi im Naturschutz

© Computec Media GmbH

Halali!

Bernhard Bablok

In einem Naturschutzgebiet bedrohen Fuchs und Marder seltene bodenbrütende Vögel. Als Gegenmaßnahme dienen Lebendfallen, die ein Tandem aus Mikrocontroller und RasPi überwacht.

In einem Naturschutzgebiet in Norddeutschland bedrohen Fuchs und Marder seltene bodenbrütende Vögel. Deswegen fängt die Parkaufsicht sie mit Lebendfallen, doch deren Kontrolle erweist sich in dem unzugänglichen Gebiet als aufwendig. Zwischen 40 und 50 Fallen gilt es, zu überwachen – das bedeutet lange und meist überflüssige Kontrollgänge.

Viel einfacher wäre es, sie elektronisch zu überwachen und bei einem Fang einen automatischen Alarm zu erhalten. Ein Tandem aus Mikrocontroller und Raspberry Pi könnte die Betreuer informieren, sobald ein Tier in die Falle geht. Der Weg von dieser Idee bis zur Umsetzung gestaltete sich dann aber länger als ursprünglich gedacht.

Eine der Herausforderungen war das Fehlen des mobilen Internets in dem dünn besiedelten Gebiet. Als Alternative bot sich eine Alarmierung via SMS an, und so gab ein früherer Artikel des Autors [1] den Ausschlag für die Zusammenarbeit.

Die Idee

Die Grundidee ist einfach: Der Mikrocontroller PIC 16F690 mit Nanowatt-Technologie überwacht mittels eines Sensors, etwa eines Kugelschalters oder Magnetkontakts, den Zustand der Falle und mit dem PIC-internen ADC die Spannung des Akkus. Bei geschlossener Falle oder zu geringer Akkuspannung weckt der Mikrocontroller einen angeschlossenen Raspberry Pi und signalisiert den Status. Der RasPi versendet daraufhin über einen angeschlossenen UMTS-Stick eine SMS an die Aufsicht, die dann das gefangene Tier abtransportiert oder den Akku auswechselt.

Für den Status verwendet der RasPi zwei GPIOs als Eingang (jeweils für Falle und Akku). Auf den ersten Blick erscheint das notwendige Skript sehr simpel, denn das Auslesen von GPIOs und der Versand von SMS lässt sich dank der großen Softwarebasis von Raspbian schnell implementieren. Doch der Teufel steckt im Detail, denn die Lösung muss sehr robust sein. Schließlich sollen keine gefangenen Tiere in der Falle verenden, nur weil etwa der SMS-Versand scheitert.

Der RasPi muss also nicht nur die Signale des PIC auslesen, sondern den Status auch zurückmelden. Hierfür benötigt das Konstrukt zwei weitere GPIOs: einen Pin für den Status und einen zweiten, der dem PIC den Shutdown anzeigt. Dieser schaltet dann den Strom wieder ab und spart so Akkuleistung. Bei einem Fehler weckt der PIC den Pi nach fünf Minuten für einen weiteren Versuch wieder auf. Nach einem erfolgreichen SMS-Versand bleibt der PIC inaktiv bis zu einem Reset, den der Betreuer der Falle nicht vergessen darf.

Als optionale Komponente kommt noch eine Real-Time-Clock (RTC) ins Spiel. Da der RasPi keinen Kontakt zum Netz aufbaut, kann er seine Uhrzeit auch nicht aktualisieren. Die RTC sorgt bei jedem Boot für die richtige Zeit, was bewirkt, dass alle Logmeldungen den korrekten Zeitstempel tragen. Auch die SMS enthalten jetzt neben der Fallennummer und dem Fallen- beziehungsweise Stromstatus die Sendezeit.

Der Mikrocontroller

Der PIC 16F690 befindet sich auf einer Trägerplatine, die sich direkt auf die GPIO-Leiste des RasPi stecken lässt (Abbildung 1). Den Schaltplan und die Bestückungsliste sowie alle Programme finden Sie auf dem Github-Projekt des Autors [2].

Die Wahl fiel auf den 16F690 der Firma Microchip, weil er mit der besonders sparsamen Nanowatt-Technologie arbeitet. Im Schlafmodus überwacht ein Watchdog-Timer den PIC, sodass die Stromaufnahme aus dem Akku nur noch etwa 1 bis 1,5 µA beträgt. Der Controller besitzt unter anderem 18 I/O-Pins, einen internen Oszillator, einen 10-Bit-ADC mit 12 Kanälen, einen Flash-Speicher für 4096 Words, 256 Byte SRAM sowie I-O-C Interrupts an PORT A und B. Die Datenübertragung an ein 4×16-LCD nutzt I2C per Software und PCF8574. Diese Lösung erlaubt eine Übertragung mit bis zu 100 kHz; der PIC lässt sich dann mit maximal 4 MHz betreiben. Diese Variante der Datenübertragung spart I/O-Pins ein.

Abbildung 1: Prototyp: Der Versuchsaufbau mit angeschlossenem Raspberry Pi und dem Mikrocontroller.

Abbildung 1: Prototyp: Der Versuchsaufbau mit angeschlossenem Raspberry Pi und dem Mikrocontroller.

Der PIC wird nach der Konfiguration für etwa fünf Minuten in den Schlafzustand versetzt. Dann wacht er auf und kontrolliert den Sensor der Fallenklappe sowie die Akkuspannung. Ist alles in Ordnung, schläft er wieder ein. Der RasPi bleibt in diesem Fall außen vor. Sofern kein Tier in die Falle geht, genügt bei diesem Setup eine Akkuladung etwa für ein halbes Jahr.

Erst wenn ein Ereignis auftritt (Falle zu, Akku leer), startet der RasPi und versendet eine Meldung per SMS. Schlägt der Versand fehl, meldet der Pi das an den PIC, der sich das “merkt”. Nach weiteren fünf Minuten startet der RasPi erneut den SMS-Versand. Das erfolgt so oft, bis der Transfer gelingt. Danach tritt das System wieder in die Ruhephase ein.

Die Programmierung des Chips erfolgt mittels Assembler über einen speziellen Einzelschrittmodus. Die Informationen werden per Software-I2C und aufsteckbare Hilfsplatinen herausgeleitet und per LC-Display mit 4 Zeilen zu je 16 Zeichen visualisiert (Abbildung 2).

Abbildung 2: Ein Segmentbildschirm erlaubt das Debugging des Aufbaus.

Abbildung 2: Ein Segmentbildschirm erlaubt das Debugging des Aufbaus.

Der PIC ist über vier GPIOs (Abbildung 3) mit dem RasPi verbunden. Die GPIOs 17 und 27 kommunizieren den Status an den Raspberry Pi . Der wiederum setzt die GPIO 22 beim Programmstart auf HIGH und bei einem Fehler auf LOW. Das Shutdown-Signal kommt per GPIO 10. Nachdem der Wert auf HIGH wechselt, gibt der PIC dem RasPi noch eine Minute für das Herunterfahren und stellt dann den Strom ab (Abbildung 4). Braucht der Raspberry Pi zu lange, etwa weil der SMS-Versand hängt, regelt der PIC den Strom dennoch hart ab. Der RasPi verliert, abgesehen von einigen Logmeldungen, dadurch keine Daten.

Abbildung 3: Die Meldeleitungen vom PIC zum Raspberry Pi.

Abbildung 3: Die Meldeleitungen vom PIC zum Raspberry Pi.

Abbildung 4: Der vorgesehene Ablaufplan für die Fuchsfalle.

Abbildung 4: Der vorgesehene Ablaufplan für die Fuchsfalle.

Der PIC alleine genügt für die Schaltung aber noch nicht. Ein weiteres kritisches Bauteil stellt der Boost-Konverter dar (Abbildung 5), der aus der Akkuspannung von 3,0 bis 4,2 Volt die für den RasPi notwendigen 5 Volt erzeugt. Zuerst war das Schaltreglermodul XL6009 (bis 4A) im Einsatz. Da dieses jedoch im unteren Spannungsbereich von 3 bis 3,5 Volt nicht mehr zuverlässig genug arbeitete, bekam das Modul ML8205 (2A) den Vorzug, das auch bis 3 Volt klaglos läuft. Zu Testzwecken ersetzt ein per regelbarem Step-Up-Konverter angeschlossenes Schaltnetzteil den LiPo-Akku. Damit lässt sich auch Unterspannung ohne Probleme simulieren.

Abbildung 5: Die Trägerplatine mit Akku und Boost-Konverter.

Abbildung 5: Die Trägerplatine mit Akku und Boost-Konverter.

Als besondere Herausforderung entpuppten sich die in den RasPi integrierten Pullup/Pulldown-Widerstände. Sie scheinen zu den am wenigsten bekannten Komponenten des Mini-Rechners zu gehören: Es gibt zwar viele Informationen zu den GPIOs und zahlreiche Tutorials zum Beschalten mit externen Pullup- oder Pulldown-Widerständen, aber kaum ein Artikel beleuchtet die internen Widerstände.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland