Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Erkennen von Blitzen mit einem Raspberry Pi

Es können verschiedene Methoden verwendet werden, um Blitze zu erkennen. In der Regel wird dabei die elektromagnetische Strahlung erfasst, die bei einem Schlag erzeugt wird. Die meisten Leute haben dies wahrscheinlich schon einmal als Rauschen, Knistern und Knacken in einem AM-Radio gehört. Einige Detektoren sind in der Lage, die in einer Wolke erzeugten Lichtblitze zu erfassen, auch tagsüber, wenn sie normalerweise aufgrund des Sonnenlichts für das menschliche Auge nicht sichtbar sind. Gelegentlich sendet ein Blitz einen kurzen Puls von Gammastrahlung aus – etwas, das ein neues Instrument an Bord der Internationalen Raumstation ISS untersuchen soll.

In diesem Beitrag werde ich die Verwendung eines RaspberryPi als Schnittstelle zum AS3935 Franklin Lightning Sensor IC von ams (Austria Mikro Systeme) untersuchen. Der AS3935 ist ein programmierbarer Sensor, der Blitzaktivitäten in einer Entfernung von bis zu 40 km erkennen kann. Es verwendet einen proprietären, fest verdrahteten Algorithmus, um Rauschen und künstliche „Störer“ herauszufiltern und die Entfernung zur Vorderkante des Sturms zu schätzen; verfügt über programmierbare Erkennungsstufen, Schwellenwerteinstellungen und Antennenabstimmung; und im Gegensatz zu vielen früheren terrestrischen Blitzsensoren können sowohl Wolken-Boden- als auch Intra-Wolken-Blitzaktivitäten erkennen.

Die Einzelheiten

Anstatt die spezifischen Komponenten in kleinen Mengen aufzurunden, eine Leiterplatte auszulegen und zu versuchen, das eher kleine (4 x 4 mm) MLPQ-16-Gehäuse von Hand zu löten, habe ich das Breakout-Board MOD-1016 von Embedded Adventures verwendet. Der AS3935 benötigt einen Versorgungsspannungsbereich von 2,4 – 5,5 V, der perfekt mit den 3,3 V GPIO-Logikpegeln des RaspberryPi funktioniert. Es kann über SPI oder I2C angebunden werden. Standardmäßig ist das MOD-1016 für die Verwendung von I2C konfiguriert, kann jedoch über einige Lötbrücken auf der Platine leicht auf SPI umgestellt werden. In meinem Setup bleibe ich bei der Standard-I2C-Konfiguration.

Dieses Projekt diente mir als schöne Einführung in das I2C-Protokoll. Ich hatte das 1-Wire-Protokoll schon früher verwendet, um einige DS18B20-Temperatursensoren anzuschließen, aber I2C wird viel häufiger verwendet und daher war ich froh, die Gelegenheit zu haben, darin einzutauchen. In diesem Beitrag werde ich die Details behandeln, die für die Kommunikation mit dem AS3935 vom RaspberryPi über I2C erforderlich sind. Wenn Sie jedoch weitere Informationen wünschen, bietet Byte Paradigm eine wunderbare Einführung in I2C und SPI.

Wenn Sie Ihren RaspberryPi noch nicht für die Verwendung des I2C-Protokolls konfiguriert haben, müssen Sie ein paar Pakete installieren und ein paar Kernel-Module laden. Adafruit hat hier eine wunderbare Anleitung, aber im Grunde müssen Sie nur den python-smbus installieren und i2c-Tools Pakete und laden Sie die i2c-bcm2708 und i2c-dev Kernel-Module. Dies könnte in der Raspbian-Distribution so aussehen:

### Installiert die Pakete~ $ sudo apt-get install python-smbus~ $ sudo apt-get install i2c-tools### Lädt die Kernel-Module~ $ sudo modprobe i2c-bcm2708~ $ sudo modprobe i2c-dev### Sicherstellen, dass Module beim Booten geladen werden~ $ echo "i2c-bcm2708i2c-dev" | sudo tee -a /etc/modules 

Die Verkabelung des MOD-1016 mit dem RaspberryPi ist relativ einfach. Mit I2C benötigen Sie nur zwei Drähte (SDA &SCL) – neben Strom und Masse natürlich – um mit mehreren Geräten zu kommunizieren. Der AS3935 gibt Interrupts aus, um den Mikrocontroller auf Ereignisse hinzuweisen, daher benötigen wir dafür eine zusätzliche Leitung. Ich habe ein Standard-Steckbrett und einen RaspberryPi Cobbler von Adafruit verwendet, um die Schaltung nachzubilden. Das MOD-1016 (AS3935) verbindet sich als solches mit dem RaspberryPi:

MOD-1016 RaspberryPi
GND Boden
VCC 3,3 V (Pin 1)
IRQ GPIO 17 (Pin 11)
SCL SCL (Pin 5)
SDA SDA (Pin 3)

Zu beachten ist bei I2C, dass es für die Kommunikation zwischen Chips entwickelt wurde, oft zwischen integrierten Schaltkreisen, die sich auf derselben Leiterplatte befinden. In I2C werden die Leitungen durch Pull-Up-Widerstände auf High gehalten und auf Low gezogen, um den entgegengesetzten Zustand anzuzeigen. Die Zeit, die benötigt wird, um die Leitung wieder auf VCC zu bringen, hängt vom Wert des Pull-Up-Widerstands und der Buskapazität ab. Die I2C-Spezifikation begrenzt die maximale Kapazität auf 400 pF, wodurch der praktische Abstand normalerweise auf wenige Meter begrenzt wird. Es gibt Möglichkeiten, die maximale Länge bei Bedarf zu verlängern. Der offensichtlichste ist ein I2C-Bus-Extender. Eine Verlangsamung der Taktrate kann auch dazu beitragen, die maximale Entfernung zu erhöhen. Beachten Sie auch, dass Sie bei Verwendung von Twister-Pair-Kabeln wie CAT-5 für I2C-Verbindungen die SCL- und SDA-Leitungen nicht zusammen über dasselbe Twisted-Pair führen. Verwenden Sie separate Paare und binden Sie die andere Leitung in jedem Paar an Masse.

Die Bilder unten zeigen das MOD-1016 Breakout Breadboard zusammen mit einem MS5611 Barometrischen Drucksensor von Embedded Adventures und einem FTDI Friend von Adafruit.

Sobald alles verkabelt ist, können Sie den Befehl i2cdetect . verwenden um zu sehen, ob I2C funktioniert und mit dem Sensor kommunizieren kann. Wenn Sie einen älteren RaspberryPi (mit 256 MB RAM) verwenden, führen Sie den Befehl wie unten gezeigt mit einer I2C-Bus-ID von 0 aus. Wenn Sie einen neueren RaspberryPi verwenden, verwenden Sie stattdessen 1 . In der Ausgabe unten sehen Sie, dass der AS3935 (0x03) und der MS5611 (0x76) richtig erkannt wurden.

~ $ sudo i2cdetect -y 0 0 1 2 3 4 5 6 7 8 9 abcde f00:03 -- -- -- -- -- -- -- -- -- -- -- - -10:-- -- -- -- -- -- -- -- -- -- -- -- -- -- ---20:-- -- -- -- -- -- - -- -- -- -- -- -- -- -- -- ---30:-- -- -- -- -- -- -- -- -- -- -- -- -- -- - - --40:-- -- -- -- -- -- -- -- -- -- -- -- -- -- --50:-- -- -- -- -- - -- -- -- -- -- -- -- -- -- -- --60:-- -- -- -- -- -- -- -- -- -- -- -- -- - - -- --70:-- -- -- -- -- -- 76 -- 

Um den Sensor nun tatsächlich verwenden zu können, müssen wir mit ihm interagieren können. Dies geschieht durch Lesen und Beschreiben von Registern innerhalb des Chips. Register sind Speicherorte, die zum Speichern von Bits für Dinge wie Konfiguration und Eingabe/Ausgabe verwendet werden. In gewisser Weise ähneln sie digitalen DIP-Schaltern, bei denen Bits oder Bitfolgen verwendet werden, um verschiedene Zustände anzuzeigen oder einzustellen. Mit dem AS3935 ist es beispielsweise möglich, die vom Algorithmus erstellte Statistik zu löschen, indem das 7. Bit (Bit 6) des 3. Registers (0x02) umgeschaltet wird. Tabellen und Zuordnungen, die die Registerstandorte und Funktionen beschreiben, finden Sie im Datenblatt eines Geräts. Zum Beispiel

Für die meisten Sprachen und Plattformen stehen Tools oder Bibliotheken für die Arbeit mit I2C zur Verfügung. Unter Linux zum Beispiel die i2c-tools Paket bietet Dienstprogramme wie i2cdetect, i2cget, i2cdump ,und i2cset die von der Befehlszeile aus verwendet werden können. Für Python das SMBus-Modul von python-smbus Paket bietet die für den Zugriff auf den I2C-Bus erforderlichen Bindings. Oftmals stehen jedoch für Geräte höhere Bibliotheken zur Verfügung, die die Details der Arbeit mit einzelnen Registern abstrahieren. Anstatt wissen zu müssen, welche Bits in welche Register gelesen oder geschrieben werden müssen, können Sie oft einfach eine Klasse instanziieren und Methoden aufrufen, um mit dem jeweiligen Gerät zu interagieren.

Für die Arbeit mit dem AS3935 in Python steht die RaspberryPi-AS3935-Bibliothek von Phil Fenstermacher zur Verfügung. Installationsanweisungen finden Sie auf der GitHub-Seite. Es bietet nützliche Methoden sowie ein schönes Demoskript, um Sie zum Laufen zu bringen. Um die verfügbaren Methoden und ihre Argumente zu sehen, werfen Sie einen Blick in die Datei RPi_AS3935.py.

Der AS3935 verwendet eine parallele RLC-Schaltung als Antenne und muss auf eine Resonanzfrequenz von 500 kHz ±3,5 % abgestimmt werden. Um Abweichungen zu kompensieren, stehen intern bis zu 120pF über Abstimmkondensatoren zur Verfügung, die in Schritten von 8pF aktiviert werden können. Durch eine Registereinstellung kann der AS3935 die Resonanzfrequenz am IRQ-Pin ausgeben, sodass ein externes Gerät diese messen und die Antenne durch Aktivieren der erforderlichen Abstimmkondensatoren entsprechend abstimmen kann. Glücklicherweise wird bei den MOD-1016 Breakouts von Embedded Adventures der Wert des Tuning-Kondensators auf der Außenseite der antistatischen Tasche angezeigt. Dies macht die Kalibrierungsroutine viel einfacher. Wenn Sie die obige Bibliothek verwenden, müssen Sie nur calibrate() . aufrufen -Methode und Übergeben des Abstimmkondensatorwerts als Argument. Weitere Details zum Antennendesign finden Sie im AS3935 AMS Hardware Design Guide.

Für weitere Details:Blitze erkennen mit einem Raspberry Pi


Herstellungsprozess

  1. Himbeer-Pi-Temperaturlogger
  2. Temperatur lesen mit DS18B20 | Raspberry Pi 2
  3. Temperaturmessung mit RASPBERRY PI
  4. Überwachen der Temperatur mit Raspberry Pi
  5. Integration von Sensordaten mit Raspberry Pi-Mikroprozessor
  6. 433 MHz Smart Home Controller mit Sensorflare und einem RaspberryPi
  7. Raspberry Pi 2 Wasseralarm mit t Schuster plus
  8. ThingSpeak Temperaturmonitor mit Raspberry Pi
  9. Einfacher DIY-Baby-Weindetektor mit Raspberry Pi
  10. Schwenk-/Neige-Gesichtsverfolgung mit dem Himbeer-Pi