Dans le but d’obtenir un objet connecté totalement autonome et n’ayant besoin d’aucune intervention humaine sur plusieurs mois, voire plusieurs années, plusieurs articles ont été fusionné afin d’atteindre cet objectif:
Capteur humidité et température, transmission LoRaWAN vers TTN;
LoRaWan: Mise en veille avec RTC externe;
LoRaWan: Mesure d’un voltage par les pins.
Matériel:
Carte Seeeduino LoRaWan, trouvable ici ;
Carte Seeeduino LoRaWan
DS3231, une RTC précise et économe en énergie, trouvable ici ;
DS3231
« Charge & discharge »(DD04 CVSA) : Module de gestion de la charge et décharge, trouvable ici .
Il gère automatiquement la recharge et la décharge entre la batterie, la source d’alimentation et l’appareil à alimenter.
(DD04 CPMA) : Module de protection des surintensités 3,7-4,2V, trouvable ici .
Il protège une batterie li-po des surintensités.
Panneau Solaire.
La source d’alimentation peut-être une autre énergie renouvelable comme l’éolien. Ce panneau délivre 6V.
2 Batteries li-po 3,7V et 1400mAh (elles seront en dérivation).
Une batterie li-po de 3,7V.
2 résistances de 1KOhm et ~255KOhm.
Branchements:
Schéma du dispositif longue durée.
Code:
#include "LowPower.h"
#include <DS3232RTC.h>
#include <time.h>
#include <Wire.h>
#include <LoRaWan.h>
char buffer[256];
DS3232RTC myRTC(false);
int i = 0;
void initLora() { //initialisation de la carte pour l'envoide des données
lora.init();
memset(buffer, 0, 256);
lora.getVersion(buffer, 256, 1);
memset(buffer, 0, 256);
lora.getId(buffer, 256, 1);
lora.setId("260112FD", "008ACA85645E38F9", "70B3D57ED00093DB");
lora.setKey("1627D96A73B10A8A2481C9207E7C15F5", "17B96E838DAD796458B63E5500C21419", NULL);
lora.setDeciveMode(LWABP);
lora.setDataRate(DR0, EU868);
lora.setChannel(0, 868.1);
lora.setChannel(1, 868.3);
lora.setChannel(2, 868.5);
lora.setReceiceWindowFirst(0, 868.1);
lora.setReceiceWindowSecond(869.5, DR3);
lora.setDutyCycle(false);
lora.setJoinDutyCycle(false);
lora.setPort(1);
}
void wakeUp() //Contient des codes qui seront executés au début d'un reveil.
{
myRTC.alarm(ALARM_1);
}
void setup() {
initLora();
pinMode(0, INPUT);
myRTC.begin();
myRTC.alarmInterrupt(ALARM_1, true);
myRTC.setAlarm(ALM1_MATCH_MINUTES, 5, 0, 0, 1);
lora.init();
lora.setDeviceLowPower();
attachInterrupt(0, wakeUp, LOW);
myRTC.alarm(ALARM_1);
}
void loop() {
int temperature = 1;
int hymidity = 2;
int voltage = 0;
for(i=0; i<20; i++){
voltage = voltage + analogRead(0);
delay(50);
}
voltage = voltage/20;
voltage = voltage / 2.44;
byte data[6];
data[0] = temperature >> 8;
data[1] = temperature & 0xFF;
data[2] = hymidity >> 8;
data[3] = hymidity & 0xFF;
data[4] = voltage >> 8;
data[5] = voltage & 0xFF;
lora.transferPacket(data, 6);
LowPower.standby();
}
Code Dispositif longue durée