Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Bliksem detecteren met een Raspberry Pi

rieuze methoden kunnen worden gebruikt om bliksem te detecteren. Gewoonlijk gaat het om het waarnemen van de elektromagnetische straling die wordt gegenereerd door een staking. De meeste mensen hebben dit waarschijnlijk ooit gehoord als statische, knetter- en ploffende geluiden op een AM-radio. Sommige detectoren zijn in staat om de lichtflitsen op te vangen die in een wolk worden geproduceerd, zelfs overdag wanneer ze door het zonlicht gewoonlijk niet door het menselijk oog kunnen worden gezien. Af en toe zendt de bliksem een ​​korte puls gammastraling uit - iets wat een nieuw instrument aan boord van het internationale ruimtestation ISS gaat bestuderen.

In dit bericht zal ik het gebruik van een RaspberryPi onderzoeken om de AS3935 Franklin Lightning Sensor IC van ams (Oostenrijk Mikro Systeme) te koppelen. De AS3935 is een programmeerbare sensor die bliksemactiviteit tot op 40 km afstand kan detecteren. Het maakt gebruik van een eigen, vast bedrade algoritme om ruis en door de mens veroorzaakte "verstoringen" uit te filteren en de afstand tot de voorrand van de storm te schatten; heeft programmeerbare detectieniveaus, drempelinstellingen en antenne-afstemming; en in tegenstelling tot veel eerdere aardse bliksemsensoren kunnen bliksemactiviteit zowel cloud-to-ground als intra-cloud bliksemactiviteit detecteren.

De details

In plaats van de specifieke componenten in kleine hoeveelheden af ​​te ronden, een PCB neer te leggen en het vrij kleine (4x4 mm) MLPQ-16-pakket met de hand te solderen, gebruikte ik het MOD-1016-breakoutboard van Embedded Adventures. De AS3935 vereist een voedingsspanningsbereik van 2,4 - 5,5 V, wat perfect zal werken met de 3.3v GPIO-logische niveaus van de RaspberryPi. Het kan worden gekoppeld via SPI of I2C. De MOD-1016 is standaard geconfigureerd om I2C te gebruiken, maar kan eenvoudig worden geschakeld om SPI te gebruiken via een paar soldeerjumpers op het bord. In mijn setup blijf ik bij de standaard I2C-configuratie.

Dit project was voor mij een mooie introductie tot het I2C-protocol. Ik had eerder het 1-Wire-protocol gebruikt om sommige DS18B20-temperatuursensoren aan te sluiten, maar I2C wordt veel vaker gebruikt en dus was ik blij dat ik de kans kreeg om erin te duiken. In dit bericht zal ik de details behandelen die nodig zijn om te communiceren met de AS3935 vanaf de RaspberryPi via I2C, maar als je meer informatie wilt, biedt Byte Paradigm een ​​geweldige introductie tot I2C en SPI.

Als je RaspberryPi nog niet is geconfigureerd om het I2C-protocol te gebruiken, moet je een paar pakketten installeren en een paar kernelmodules laden. Adafruit heeft hier een geweldige gids, maar eigenlijk hoef je alleen de python-smbus te installeren en i2c-tools pakketten, en laad de i2c-bcm2708 en i2c-dev kernel-modules. Dit doen op de Raspbian-distro kan ongeveer als volgt gaan:

### Installeert de pakketten~ $ sudo apt-get install python-smbus~ $ sudo apt-get install i2c-tools### Laadt de kernelmodules~ $ sudo modprobe i2c-bcm2708~ $ sudo modprobe i2c-dev### Zorg ervoor dat modules worden geladen tijdens het opstarten~ $ echo "i2c-bcm2708i2c-dev" | sudo tee -a /etc/modules 

Het aansluiten van de MOD-1016 op de RaspberryPi is relatief eenvoudig. Met I2C heb je slechts twee draden (SDA &SCL) nodig - naast stroom en aarde natuurlijk - om met meerdere apparaten te communiceren. De AS3935 geeft onderbrekingen om de microcontroller te waarschuwen voor gebeurtenissen, dus daarvoor hebben we één extra draad nodig. Ik gebruikte een standaard breadboard en een RaspberryPi Cobbler van Adafruit om het circuit te modelleren. De MOD-1016 (AS3935) maakt als zodanig verbinding met de RaspberryPi:

MOD-1016 RaspberryPi
GND Grond
VCC 3.3v (pin 1)
IRQ GPIO 17 (pin 11)
SCL SCL (pin 5)
SDA SDA (pin 3)

Een ding om op te merken over I2C is dat het is ontworpen voor communicatie tussen chips, vaak tussen geïntegreerde schakelingen op dezelfde PCB. In I2C worden de lijnen hoog gehouden door pull-up weerstanden en laag getrokken om de tegenovergestelde toestand aan te geven. De tijd die nodig is om de lijn weer op VCC te brengen, varieert afhankelijk van de waarde van de pull-up-weerstand en de buscapaciteit. De I2C-specificatie beperkt de maximale capaciteit tot 400 pF, wat de praktische afstand doorgaans beperkt tot enkele meters. Er zijn manieren om de maximale lengte indien nodig te verlengen. De meest voor de hand liggende is een I2C bus extender. Het vertragen van de kloksnelheid kan ook helpen de maximale afstand te vergroten. Houd er ook rekening mee dat als u twister-pair-kabels zoals CAT-5 gebruikt voor I2C-verbindingen, de SCL- en SDA-lijnen niet samen over hetzelfde twisted-pair moeten lopen. Gebruik afzonderlijke paren en bind de andere lijn in elk paar aan aarde.

De onderstaande afbeeldingen tonen de MOD-1016 breakout breadboard samen met een MS5611 barometrische druksensor van Embedded Adventures en een FTDI Friend van Adafruit.

Zodra alles is aangesloten, kun je het commando i2cdetect . gebruiken om te zien of I2C werkt en kan communiceren met de sensor. Als je een oudere RaspberryPi (met 256 MB ram) gebruikt, voer je de onderstaande opdracht uit met een I2C-bus-ID van 0. Als je een nieuwere RaspberryPi gebruikt, gebruik dan in plaats daarvan 1. In de onderstaande output kun je zien dat de AS3935 (0x03) en de MS5611 (0x76) correct zijn gedetecteerd.

~ $ 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 -- 

Om de sensor daadwerkelijk te gebruiken, moeten we ermee kunnen communiceren. Dit wordt gedaan door te lezen en te schrijven naar registers binnen de chip. Registers zijn geheugenlocaties die worden gebruikt om bits op te slaan voor zaken als configuratie en invoer/uitvoer. In zekere zin zijn ze als digitale DIP-schakelaars, waarbij bits of reeksen bits worden gebruikt om verschillende toestanden aan te geven of in te stellen. Met de AS3935 is het bijvoorbeeld mogelijk om de door het algoritme opgebouwde statistieken te wissen door de 7e bit (bit 6) van het 3e register (0x02) te wisselen. Tabellen en toewijzingen die de registerlocaties en functionaliteit beschrijven, zijn te vinden in de datasheet van een apparaat. Bijvoorbeeld,

De meeste talen en platforms hebben tools of bibliotheken beschikbaar om met I2C te werken. Op Linux bijvoorbeeld, de i2c-tools pakket biedt hulpprogramma's zoals i2cdetect, i2cget, i2cdump ,en i2cset die kan worden gebruikt vanaf de opdrachtregel. Voor python, de SMBus-module geleverd door de python-smbus pakket biedt de bindingen die nodig zijn voor toegang tot de I2C-bus. Vaak zijn er echter bibliotheken op een hoger niveau beschikbaar voor apparaten die de details van het werken met individuele registers abstraheren. In plaats van te moeten weten welke bits je in welke registers moet lezen of schrijven, kun je vaak gewoon een klasse instantiëren en methoden aanroepen om met het specifieke apparaat te communiceren.

Voor het werken met de AS3935 in python is de RaspberryPi-AS3935-bibliotheek, geschreven door Phil Fenstermacher, beschikbaar. Installatie-instructies zijn te vinden op de GitHub-pagina. Het biedt handige methoden en een mooi demoscript om u op weg te helpen. Bekijk het bestand RPi_AS3935.py om de beschikbare methoden en hun argumenten te bekijken.

De AS3935 gebruikt een parallel RLC-circuit als antenne en moet worden afgestemd op een resonantiefrequentie van 500 kHz ± 3,5%. Om afwijkingen te compenseren is er intern tot 120pF beschikbaar via afstemcondensatoren die in stappen van 8pF kunnen worden geactiveerd. Via een registerinstelling kan de AS3935 de resonantiefrequentie op de IRQ-pin uitvoeren, waardoor een extern apparaat deze kan meten en de antenne op de juiste manier kan afstemmen door de benodigde afstemcondensatoren te activeren. Gelukkig worden de MOD-1016 breakouts van Embedded Adventures geleverd met de waarde van de afstemcondensator die aan de buitenkant van de antistatische zak wordt weergegeven. Dit maakt de kalibratieroutine veel eenvoudiger. Bij gebruik van de bovenstaande bibliotheek is het net zo eenvoudig als het aanroepen van de calibrate() methode en het doorgeven van de waarde van de afstemcondensator als argument. Meer details over het antenne-ontwerp zijn te vinden in de AS3935 AMS Hardware Design Guide.

Voor meer details:Bliksem detecteren met een Raspberry Pi


Productieproces

  1. Raspberry Pi Temperature Logger
  2. Temperatuur aflezen met DS18B20 | Raspberry Pi 2
  3. Temperatuur meten met RASPBERRY PI
  4. Temperatuur bewaken met Raspberry Pi
  5. De integratie van sensorgegevens met Raspberry Pi-microprocessor
  6. 433MHz Smart Home Controller met Sensorflare en een RaspberryPi
  7. Raspberry pi 2 wateralarm met t cobbler plus
  8. ThingSpeak-temperatuurmonitor met Raspberry Pi
  9. Eenvoudige doe-het-zelf huilende babydetector met Raspberry Pi
  10. Pan / Tilt face-tracking met de raspberry pi
  11. Een druk op een knop detecteren via GPIO met Raspberry pi