Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Détection de foudre avec un Raspberry Pi

De nombreuses méthodes peuvent être utilisées pour détecter la foudre. Il s'agit généralement de détecter le rayonnement électromagnétique généré par une frappe. La plupart des gens ont probablement entendu cela à un moment donné comme des sons statiques, des craquements et des craquements sur une radio AM. Certains détecteurs sont capables de capter les éclairs de lumière produits dans un nuage, même pendant la journée où ils ne peuvent généralement pas être vus par l'œil humain en raison de la lumière du soleil. De temps en temps, la foudre émet une brève impulsion de rayonnement gamma, ce qu'un nouvel instrument à bord de la Station spatiale internationale est sur le point d'étudier.

Dans cet article, j'explorerai l'utilisation d'un RaspberryPi pour interfacer le circuit intégré du capteur de foudre Franklin AS3935 d'ams (Austria Mikro Systeme). L'AS3935 est un capteur programmable qui peut détecter l'activité de la foudre jusqu'à 40 km de distance. Il utilise un algorithme câblé propriétaire pour filtrer le bruit et les « perturbateurs » artificiels et estimer la distance jusqu'au bord d'attaque de la tempête ; a des niveaux de détection programmables, des paramètres de seuil et un réglage d'antenne ; et contrairement à de nombreux capteurs de foudre terrestres précédents, ils peuvent détecter à la fois l'activité de foudre nuage-sol et intra-nuage.

Les détails

Plutôt que d'arrondir les composants spécifiques en petites quantités, de disposer un PCB et d'essayer de souder à la main le boîtier MLPQ-16 plutôt petit (4x4 mm), j'ai utilisé la carte de dérivation MOD-1016 d'Embedded Adventures. L'AS3935 nécessite une plage de tension d'alimentation de 2,4 à 5,5 V, qui fonctionnera parfaitement avec les niveaux logiques GPIO de 3,3 V du RaspberryPi. Il peut être interfacé via SPI ou I2C. Par défaut, le MOD-1016 est configuré pour utiliser I2C mais peut facilement être commuté pour utiliser SPI via quelques cavaliers à souder sur la carte. Dans ma configuration, je m'en tiendrai à la configuration I2C par défaut.

Ce projet a été pour moi une belle introduction au protocole I2C. J'avais déjà utilisé le protocole 1-Wire pour interfacer certains capteurs de température DS18B20, mais I2C est beaucoup plus largement utilisé et j'étais donc heureux d'avoir l'opportunité de m'y plonger. Dans cet article, je couvrirai les détails nécessaires pour communiquer avec l'AS3935 à partir du RaspberryPi via I2C, mais si vous souhaitez plus d'informations, Byte Paradigm fournit une merveilleuse introduction à I2C et SPI.

Si vous n'avez pas encore configuré votre RaspberryPi pour utiliser le protocole I2C, vous devrez installer quelques packages et charger quelques modules de noyau. Adafruit a un guide formidable ici, mais en gros, il vous suffit d'installer le python-smbus et outils i2c packages, et chargez le i2c-bcm2708 et i2c-dev modules du noyau. Faire cela sur la distribution Raspbian pourrait ressembler à ceci :

### Installe les packages~ $ sudo apt-get install python-smbus~ $ sudo apt-get install i2c-tools### Charge les modules du noyau~ $ sudo modprobe i2c-bcm2708~ $ sudo modprobe i2c-dev### Assurez-vous que les modules se chargent au démarrage~ $ echo "i2c-bcm2708i2c-dev" | sudo tee -a /etc/modules 

Le câblage du MOD-1016 au RaspberryPi est relativement simple. Avec I2C, vous n'avez besoin que de deux fils (SDA et SCL) - en plus de l'alimentation et de la terre, bien sûr - pour communiquer avec plusieurs appareils. L'AS3935 émet des interruptions pour alerter le microcontrôleur des événements, nous aurons donc besoin d'un fil supplémentaire pour cela. J'ai utilisé une planche à pain standard et un cordonnier RaspberryPi d'Adafruit pour modéliser le circuit. Le MOD-1016 (AS3935) se connecte au RaspberryPi comme tel :

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

Une chose à noter à propos d'I2C est qu'il a été conçu pour la communication inter-puces, souvent entre des circuits intégrés trouvés sur le même PCB. Dans I2C, les lignes sont maintenues hautes par des résistances de rappel et tirées vers le bas pour indiquer l'état opposé. Le temps nécessaire pour ramener la ligne à VCC varie en fonction de la valeur de la résistance de rappel et de la capacité du bus. La spécification I2C limite la capacité maximale à 400 pF, ce qui limite généralement la distance pratique à quelques mètres. Il existe des moyens d'étendre la longueur maximale si nécessaire. Le plus évident étant un prolongateur de bus I2C. Ralentir la fréquence d'horloge peut également aider à augmenter la distance maximale. Sachez également que si vous utilisez un câble à paire torsadée comme CAT-5 pour les connexions I2C, ne pas faire fonctionner les lignes SCL et SDA ensemble sur la même paire torsadée. Utilisez des paires séparées et attachez l'autre ligne de chaque paire à la terre.

Les images ci-dessous montrent le module d'essai MOD-1016 avec un capteur de pression barométrique MS5611 d'Embedded Adventures et un ami FTDI d'Adafruit.

Une fois que tout est câblé, vous pouvez utiliser la commande i2cdetect pour voir si I2C fonctionne et peut communiquer avec le capteur. Si vous utilisez un RaspberryPi plus ancien (avec 256 Mo de RAM), vous exécuterez la commande comme indiqué ci-dessous avec un ID de bus I2C de 0. Si vous utilisez un RaspberryPi plus récent, utilisez 1 à la place. Dans la sortie ci-dessous, vous pouvez voir que l'AS3935 (0x03) et le MS5611 (0x76) ont été correctement détectés.

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

Maintenant, pour utiliser réellement le capteur, nous allons devoir pouvoir interagir avec lui. Cela se fait en lisant et en écrivant dans les registres de la puce. Les registres sont des emplacements de mémoire utilisés pour stocker des bits pour des éléments tels que la configuration et les entrées/sorties. D'une certaine manière, ils sont comme des commutateurs DIP numériques, où des bits ou des séries de bits sont utilisés pour indiquer ou définir divers états. Par exemple, avec l'AS3935, il est possible d'effacer les statistiques construites par l'algorithme en basculant le 7ème bit (bit 6) du 3ème registre (0x02). Des tableaux et des mappages décrivant les emplacements et les fonctionnalités des registres peuvent être trouvés dans la fiche technique d'un appareil. Par exemple,

La plupart des langages et plates-formes ont des outils ou des bibliothèques disponibles pour travailler avec I2C. Sous Linux par exemple, les i2c-tools package fournit des utilitaires tels que i2cdetect, i2cget, i2cdump , et i2cset qui peut être utilisé à partir de la ligne de commande. Pour python, le module SMBus fourni par le python-smbus package offre les liaisons nécessaires pour accéder au bus I2C. Souvent, bien qu'il existe des bibliothèques de niveau supérieur disponibles pour les périphériques qui suppriment les détails du travail avec des registres individuels. Au lieu d'avoir à savoir quels bits lire ou écrire dans quels registres, vous pouvez souvent simplement instancier une classe et appeler des méthodes pour interagir avec le périphérique particulier.

Pour travailler avec l'AS3935 en python, la bibliothèque RaspberryPi-AS3935 écrite par Phil Fenstermacher est disponible. Les instructions d'installation sont disponibles sur la page GitHub. Il fournit des méthodes utiles ainsi qu'un joli script de démonstration pour vous permettre de démarrer. Pour voir les méthodes disponibles et leurs arguments, consultez le fichier RPi_AS3935.py.

L'AS3935 utilise un circuit RLC parallèle comme antenne et doit être réglé sur une fréquence de résonance de 500 kHz ± 3,5 %. Pour compenser les écarts, jusqu'à 120 pF sont disponibles en interne via des condensateurs de réglage qui peuvent être activés par pas de 8 pF. Grâce à un réglage de registre, l'AS3935 peut sortir la fréquence de résonance sur la broche IRQ, ce qui permet à un appareil externe de la mesurer et de régler l'antenne de manière appropriée en activant les condensateurs de réglage nécessaires. Heureusement, les évasions MOD-1016 d'Embedded Adventures sont livrées avec la valeur du condensateur de réglage affichée à l'extérieur du sac antistatique. Cela rend la routine d'étalonnage beaucoup plus simple. Lorsque vous utilisez la bibliothèque ci-dessus, c'est aussi simple que d'appeler calibrate() méthode et en passant la valeur du condensateur de réglage comme argument. Vous trouverez plus de détails sur la conception de l'antenne dans le Guide de conception matérielle AS3935 AMS.

Pour plus de détails :Détecter la foudre avec un Raspberry Pi


Processus de fabrication

  1. Enregistreur de température Raspberry Pi
  2. Lire la température avec DS18B20 | Raspberry Pi 2
  3. Mesure de la température avec RASPBERRY PI
  4. Contrôle de la température avec Raspberry Pi
  5. L'intégration des données du capteur avec le microprocesseur Raspberry Pi
  6. Contrôleur Smart Home 433MHz avec Sensorflare et RaspberryPi
  7. Avertisseur d'eau Raspberry Pi 2 avec t cobbler plus
  8. Moniteur de température ThingSpeak avec Raspberry Pi
  9. Détecteur de pleurs de bébé bricolage facile avec Raspberry Pi