Voici ma configuration :
- Andruino Uno,
- Breakout TD1208,
- Capteurs de température (bon... je viens de découvrir qu'il y avait ce capteur dans le TD1208... no comment) & luminosité
Comportement :
Toutes les 30 secondes, andruino check la température/luminosité du capteur, la prend, la convertie en Hexa, et renvoi le tout au TD1208 qui l'envoi à son tour sur le net via le réseau SIGFOX/Actoboard.
L'incident :
Tout fonctionne bien, mais au bout d'un laps de temps; plus ou moins une heure à premiere vue; les messages ne sont plus envoyés : sur ma board actoboard, j' ai un message "Last activity: an hour ago".
Est il possible que la connection entre Andruino et le TD1208 "se coupe" (le modem passe en veille? qui surchauffe?)?
Si je débranche et re-branche mon montage, les messages sont renvoyés pendant une heure.
Je pense mettre ce soir une led qui s'allumera lors de la prise de température afin de vérifier si tout le montage plante ou si il ne s'agit que du modem.
Merci d'avance pour vos lumières.
Benoît.
- Code: Tout sélectionner
#include "Arduino.h"
#include <SoftwareSerial.h>
#include <Adafruit_MMA8451.h>
#define RX_PIN 4
#define TX_PIN 5
SoftwareSerial sigfox(RX_PIN,TX_PIN);
unsigned long lastCheck;
bool doCheckValues;
const int sensorPinTemp = A2;
const int sensorPinLumi = A5;
const float baseLineTemp = 20;
void setup(){
Serial.begin(9600);
sigfox.begin(9600);
doCheckValues = true;
}
void loop(){
if (doCheckValues) {
int sensorValueTemp = analogRead(sensorPinTemp);
float voltage = (sensorValueTemp/1024.0) * 5.0;
float temperature =(voltage - 0.5) *100;
Serial.print("temp : ");
Serial.println(temperature);
/*
* Check Temp
*
*/
int sensorValueLumi = analogRead(sensorPinLumi)/4;
Serial.print("lumi : ");
Serial.println(sensorValueLumi);
/* Check Luminosité
*
*/
int temperaturefinal = (round(temperature));
Serial.println(temperaturefinal);
//String tempStr = String(temperature,HEX);
char *strcTemp = new char[4];
char *strcTempFinal = new char[5];
char *space = " ";
String str = "AT$SF=";
str.concat(decToHex(temperaturefinal,2));
str.concat(decToHex(sensorValueLumi,2));
str.concat("\r");
char *strc = new char[str.length()];
strcpy( strc, str.c_str() );
Serial.println(strc);
sigfox.write(strc);
lastCheck = millis();
doCheckValues = false;
}
if(!doCheckValues) {
if(millis() - lastCheck > 30000) {
doCheckValues =true;
}
}
}
String decToHex(byte decValue, byte desiredStringLength) {
String hexString = String(decValue, HEX);
while (hexString.length() < desiredStringLength) hexString = "0" + hexString;
return hexString;
}
//sigfox.write("AT$SF=48 45 4c 4c 4f 20 57 4f 52 4c 44\r");