Détecteur d’orage avec un Arduino Uno et un AS3935 (V2)

J’avais déjà fait un article pour le détecteur d’orage à base d’AS3935 (voir ici) mais force était de constater qu’il ne marchait pas bien. Et j’ai rapidement compris où était le problème : les nodemcu gèrent très mal les interruptions ! J’ai eu les mêmes constat avec le pluviomètre, et c’était le même problème ici. Voici comment j’ai procédé.

Les interruptions

J’avais déjà galéré avec le pluviomètre et des nodemcu avant de jeter l’éponge et de repasser sur un Uno. Et une discussion sur le commentaire de l’article initial de détecteur d’orage m’a fait tilt ! C’est le même problème ici, les interruptions des nodemcu fonctionnent mal, et c’est pourquoi je ne recevais jamais de résultat. J’ai donc entrepris de repartir de zéro pour un résultat probant !

Montage

J’ai repris les bases du montage existant mais sur un Arduino Uno. OK, mais comment le faire communiquer ? J’ai réutilisé un module RJ45 (voir ici et ici) pluggé sur un module grove (voir ici) pluggé lui même sur l’Arduino.

On empile les couches mais les platines grove sont mes amies : faciles à câbler, même pour une led, ca évite le bordel de fil à l’intérieur !

Le module AS3935 est cabler sur 4 fils via un cable grove + 2 fils volants (IRQ + 3V).

Câblage AS3935 :

  • VCC (V) – 3V (câble grove)
  • GND(G) – GND (câble grove)
  • SCL (CL) – i2 (câble grove)
  • SDA (DA) – i2c (câble grove)
  • MI – /
  • IRQ – D4
  • SI – 3V
  • CS – /

J’ai aussi ajouté 3 LED :

  • led verte : clignote 1 fois par min en checkant que le serveur est up, clignote quand un message est envoyé
  • led rouge : s’allume si problème de transmission réseau
  • led bleue : s’allume si un éclair est détecté, reste allumée pendant 30 min

Pour tester l’ensemble, j’ai cherché des astuces sur internet. Je ne voulais pas investir dans un simulateur d’orage et j’ai donc trouvé la solution : il faut utiliser un allume gaz, très près du détecteur et cela suffit à le faire déclencher !

Après quelques appuis, il déclenche. Voici ce que donne le moniteur série. On remarquera l’appel au webservice et l’envoi des données au site (et oui ca permet de tester toute la chaine !)

Starting network
192.168.1.77
192.168.1.1
AS3935 Franklin Lightning Detector
Schmow-ZoW, Lightning Detector Ready!

Are disturbers being masked: YES
Are we set for indoor or outdoor: Indoor.
Noise Level is set at: 2
Watchdog Threshold is set to: 2
Spike Rejection is set to: 2
The number of strikes before interrupt is triggerd: 1
Disturber.
Disturber.
Lightning Strike Detected!
Approximately: 24km away!
Lightning Energy: 6191
connected
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 30 Aug 2020 12:29:19 GMT
Content-Type: teDisturber.
xt/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close

60
data added to storm.txtdata added to datas/2020/08/20200830_storm.txtAdd data successfull <br />
0

Le code

Je me suis basé cette fois si sur la librairie de Sparkfun (SparkFun_AS3935.h), disponible dans le gestionnaire de librairies Arduino. On retrouve les options classiques de l’autre librairie mais je trouve qu’elle fonctionne mieux.

Rien de spécial dans le code, tout est très clair. J’ai laissé tous les paramètres par défaut et ai juste rajouter le code d’initialisation réseau, et d’appel du webservice.

Le code source complet est disponible comme d’habitude sur mon github.

Emplacement final

J’ai mis le montage dans une boite plexo rectangulaire fixée en haut de la montée d’escalier descendant à mon sous sol, juste sous les combles pour être au plus proche de l’extérieur et au plus long des perturbations.

Conclusion

J’ai pu tester ce montage et valider que celui ci fonctionnait ! Reste à attendre un vrai orage mais c’est prometteur.

On voit aussi que les interruptions sont mal gérées par les nodemcu et qu’il vaut mieux se rabattre vers des solutions qui font leurs preuves pour ce genre de projet !

Le site météo n’affiche pas encore les données d’orage, j’attends un vrai orage pour faire les tests et valider.

6 Comments

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.