Node TTN MKRWAN
Arrière-plan
Preuve de concept pour un nœud Lorawan / The Things Network "Ultra Low Power" à l'aide de l'Arduino MKR WAN 1300.
Le MKR WAN 1300 utilise trop d'énergie en mode veille pour être utilisé comme dispositif ultra faible (un peu plus de 1 mA).
Cette preuve de concept utilise un instrument Texas Instrument TPL5110 Ultra Low Power Timer pour amener le courant de sommeil sous 50NA.
Comme l'appareil est complètement éteint pendant le temps de sommeil, nous utilisons un module de fram pour enregistrer les touches de session Lorawan et les compteurs de trame.
Deux nœuds de test:
En haut à gauche: Affichage et capteur de température maximal DS18B20
En bas à gauche: Bosch BME280 Humidité et capteur de pression

En haut à droite: courant de sommeil
En bas à droite: courant courant (nœud avec l'affichage)
Théorie du fonctionnement
- TPL5110 se réveille et puissance sur le MKR WAN 1300
- Lire les données enregistrées de Fram
- Rejoignez le réseau
- OTAA la première fois (pas de données dans FRAM)
- ABP en utilisant les clés de session enregistrées et les compteurs de trame par la suite
- Collecter des données à partir des capteurs
- Envoyer la charge utile de Lorawan au format LPP Cayenne
- Vérifiez le message de liaison descendante
- Entrez le mode de sommeil (soulevez la broche effectuée du TPL5110)
Exigence matérielle
Le code repose sur le matériel suivant:
- Arduino MKR WAN 1300 - Firmware 1.1.7 ou plus récent
- Breakout TPL5110
- Rupture de fram
- Capteurs, exemple de code prévu pour
- Tension de la batterie (en utilisant le diviseur intégré)
- Capteur de température Maxim DS18B20 (un fil)
- BOSCH BME280 Capteur de pression d'humidité de température
- Facultatif
- Sh1106 128x64 I2C Affichage pour le débogage
- Bouton pour forcer la réinitialisation (jointure OTAA) au démarrage
Tout matériel similaire devrait fonctionner, mais peut nécessiter un changement de code.
Dépendances logicielles
L'Arduino IDE avec les bibliothèques suivantes (toutes disponibles auprès du gestionnaire de bibliothèque Arduino):
- Arduino Mkrwan version 1.1.7 ou plus récent
- Adafruit Fram (version SPI)
- ThethingsNetwork version 2.5.13 ou plus récent ( pas 2.5.12!)
- Pour le capteur BME280
- Capteur unifié adafruit
- Adafruit bme280
- Pour le capteur maximal DS18B20
- Pour l'affichage facultatif: U8G2
Configuration de l'échantillon
Échantillon de configuration avec un écran OLED SH1106 et un capteur DS18B20:

Opérations
Configuration logicielle
- Copiez
arduino_secrets_distr.h à arduino_secrets.h et entrez vos clés obtenues à partir de la console de ThethingsNetwork - Dans
TTNMkrWanNode COMMMATION, le définit pour vos capteurs.
Le capteur de tension est toujours disponible, il utilise le diviseur intégré. Notez que Givent le fait que le diviseur est 1/3 et que la référence de tension est de 1,0 V, le maximum que vous pouvez mesurer est de 3,0 V ... - Dans
debug.h choisissez votre option de débogage:-
#define DEBUG a commenté: aucun code de débogage généré -
#define DEBUG sans pumi: débogage sur la console série (USB). Le nœud attendra la console! -
#define DEBUG et #define OLED non émis: Debug messages sur l'affichage OLED.
- Dans
ttn.h vous pouvez définir votre port par défaut de Lorawan et votre débit de données
Pouvoir
Débranchez la puissance provenant du TPL5110 (DRV) lors de la mise sous tension de l'USB.
Initialisation
Si le FRAM ne contient pas de données valides ou si le bouton est enfoncé lorsque le MKR WAN 1300 démarre, l'appareil effectuera une jointure OTAA.
Messages de liaison descendante
Avant de dormir, le nœud vérifiera le message de liaison descendante:
- 0x01: réinitialiser. Le nœud effectuera une jointure OTAA pendant le prochain cycle
- 0x02 0xpp: Set Port. Le nœud utilisera le port
pp lors de l'envoi de données - 0x03 0xdd: Définissez le débit de données. Le nœud utilisera le débit de données demandé.
Temps de sommeil
- Lorsqu'il est alimenté par USB, le nœud sera inactif pendant 5 minutes puis se réinitialise
- Lorsqu'il est alimenté par le TPL5110, le temps de sommeil est entraîné par une résistance (sur la cassure Adafruit, vous pouvez utiliser le Timpot sur la planche)