Ce référentiel contient le firmware qui s'exécute sur un autre circuit imprimé pour une jauge de pluie TFA 30.3161 (voir le lien en bas de la page pour plus d'informations) qui convertit l'appareil en technologie Lorawan 868 MHz.
Les données de mesure seront transmises à une passerelle Lorawan dans la gamme de l'appareil (même dans les zones urbaines, 1 km peut être couvert sans aucun problème) tandis que la consommation d'énergie est vraiment faible, donc les batteries durent des années.
Un décodeur de charge utile JavaScript testé avec thethingsNetwork v3 et chirpstack v4 est fourni.

Outre la carte de jauge de pluie Lora assemblée, les outils suivants sont nécessaires:
Le processeur sur la carte de circuit imprimé principal est un atmel ATMEL 328p compatible Arduino. Le projet utilise donc la populaire bibliothèque LMIC MCCI Arduino pour LORA. Pour une compilation et un déploiement faciles, la chaîne d'outils de plateforme est utilisée.
La mise en œuvre de Lorawan prend en charge OTAA et ABP. Les données de session (par exemple, les clés de session, le compteur de trame) et la valeur de compteur de précipitations seront stockées dans la puce SPI FRAM de temps à autre. Cela se fait immédiatement après avoir rejoint le réseau et également après que chaque troisième paquet de données a été envoyé. L'avantage du FRAM sur la mémoire flash est un nombre beaucoup plus élevé de cycles d'écriture, mais c'est toujours une bonne idée de les limiter un peu.
Après le démarrage, l'appareil passe d'abord en mode veille. Il se réveille soit après l'intervalle de temps défini, soit lorsque le bouton est enfoncé (ce qui est possible une fois par minute). S'il n'y a pas de session valide, il essaiera de rejoindre en premier. Lorsque le paquet de données a été envoyé, le microcontrôleur revient à un sommeil profond, dans lequel la consommation électrique tombe à seulement 14 µA. Le moment du mode de sommeil profond est réalisé en utilisant la minuterie de chien de garde pour réveiller le microcontrôleur du mode Power Down à chaque seconde, décrémentant une variable contre-variable contenant la période de temps jusqu'à la prochaine transmission.
Les impulsions générées par la jauge de pluie de seau de basculement sont capturées par une interruption de changement de port. Cela est nécessaire car la plupart des composants des périphériques de microcontrôleur (y compris la minuterie / compteur) sont inactifs en raison du mode de sommeil profond. L'interruption réveillera le contrôleur pendant une courte période pour incrémenter le compteur de pluie. Après cela, il continuera avec le prochain cycle de sommeil profond.
Si un capteur BMP280 est connecté, les données de température et de pression barométrique sont également incluses dans la transmission.
L'intervalle de sommeil et le compteur de pluie peuvent être mis à jour par message de liaison descendante. Utilisez simplement FPORT 1 pour l'intervalle et le FPPORT 2 pour la valeur de comptoir, tous deux envoyés comme un entier 16 bits non signé (MSB en premier).
Ce firmware utilise le système de build Platformo, qui gérera automatiquement toutes les charges à outils et les éléments liés à la dépendance. Veuillez suivre les guides sur PlatformOio.org pour installer PlatformOo Core (pour le fonctionnement de la console) ou VS Code & PlatformOio (IDE). Clonez ensuite ce référentiel et passez au bon répertoire.
Connectez simplement votre USBASP au connecteur ISP à 6 broches sur la carte. Veuillez vous assurer que le programmeur est réglé sur une tension de 3,3 V, car le RFM95W n'est pas tolérant à 5V! Après cela, exécutez simplement pio run -t bootloader -e m328p_isp (ou -e m328pb_isp pour atmga328pb) pour programmer le chargeur de démarrage et les fusebits. Ensuite, l'appareil peut être facilement programmé via une connexion série.
Copiez le fichier src / config.h.example sur src / config.h. Ensuite, le non-comment use_otaa ou use_abp, créez un nouvel appareil sur votre serveur Lorawan et remplissez les données de session initiales dans config.h comme décrit. Vous pouvez trouver le décodeur de charge utile requis dans Docs / Payload-Decoder.js.
Une fois que tout est configuré, connectez l'adaptateur série USB à l'en-tête de broche approprié. Exécutez ensuite pio run -t upload (Add -e m328pb pour ATMEGA328PB) pour programmer le micrologiciel.
Vous voudrez peut-être vérifier la console série pour les messages de journal en utilisant le pio device monitor de commande. Le réseau sera rejoint immédiatement après l'alimentation. Les valeurs de mesure seront transmises toutes les 15 minutes.
Une fois l'activation de Lorawan terminée, les données de session sont stockées dans FRAM et récupérées au démarrage. Une valeur de hachage de config.h est incluse pour détecter les modifications de configuration et invalider la session en cours, forçant l'appareil à réactiver. La réactivation peut également être forcée en maintenant le bouton dans le compartiment de la batterie pendant quelques secondes tout en insérant les batteries.
La LED sur la carte de circuit imprimé s'allume si un paquet est envoyé. Il clignote si l'activation OTAA échoue.
https://www.maltepoeggel.de/?site=lora-raingauge
Ce firmware est publié selon les termes de la licence MIT, voir le fichier de licence pour plus de détails.