Rock Monitoring  V 1.0
SensorStab.cpp
Go to the documentation of this file.
1 #include "SensorStab.h"
2 
3 
5  static State runState=measure;//used in run() method
6 
8  static communicationState sendState=activityDetection;//used in sendDataToGateway
9 
11  static sleepState deepSleepState=activity;//used in deepSleepCommand
12 
13 uint64_t numberOfTrys=0;
14 uint64_t numberOfSuccess=0;
15 uint64_t numberOfFails=0;
16 
17 SensorStab::SensorStab():myLora(&mySensorStruct)
18 {
21 
24 }
25 int8_t SensorStab::init(void){
30  int8_t error=0;
31  myLeds.init();
32  pinMode(DIGITAL4 ,INPUT); //Fault (LOW-Active)
33  pinMode(DIGITAL5 ,INPUT); //Charge (LOW-Active)
34  pinMode(DIGITAL6 ,OUTPUT); //Shutdown
36  mySensors.init();
37  error = myLora.init();
38  return error;
39 }
46 
47  uint8_t state=0;
52  return state;
53 }
59 
60  switch(sendState){
61  case activityDetection:{
62  delay(300);
64  sendState=waitForRequest;
65  USB.println("\t\ activity detected");
66  }
67  }
68  break;
69  case waitForRequest:{
71  sendState=send;
72  USB.println("\t\ received dataRequest");
74  }
75  }
76  break;
77  case send:{
78  if(myLora.sendData()==RETURN_OK){
79  USB.println("\t\ send Packet succesful");
80  sendState=activityDetection;
82  USB.println("*********************************************************");
83  USB.println("Statists:");
84  USB.print("Number of Succesful transmission");
85  USB.println(numberOfSuccess,DEC);
86  USB.print("Number of Fails transmission");
87  USB.println(numberOfFails,DEC);
88  USB.println("*********************************************************");
90  return RETURN_OK;
91  }
92  else{
93  numberOfTrys++;
94  USB.print("\t\ Number of Fails transmission");
95  USB.println(numberOfFails,DEC);
96  if(numberOfTrys>=4){
97  numberOfTrys=0;
98  numberOfFails++;
99  sendState=waitForRequest;
100  }
101  return RETURN_ERROR;
102  }
103  }
104  break;
105  }
106 }
111  //myLora.deepSleep();
113  Utils.setLED(LED0, LED_OFF);
114  Utils.setLED(LED1, LED_OFF);
115  PWR.deepSleep("00:00:15:00",RTC_OFFSET,RTC_ALM1_MODE1,SOCKET0_OFF);
116  if( intFlag & RTC_INT ){
117  intFlag &= ~(RTC_INT);
118  }
119 }
125  switch(deepSleepState){
126  case activity:{
128  deepSleepState=waitSleepCommand;
129  USB.println("\t\ activity detected");
130  }
131  }
132  break;
133  case waitSleepCommand:{
135  USB.println("\t\ go to sleep");
136  return RETURN_OK;
137  }
138  else{
139  return RETURN_ERROR;
140  }
141  }
142  break;
143  }
144 }
145 int8_t SensorStab::wakeUp(void){
150  mySensors.wakeUp();
151  return myLora.wakeUp();
152 }
153 void SensorStab::convertTime(uint32_t time){
157  uint8_t days = time / (60 * 60 * 24);
158  time -= days * (60 * 60 * 24);
159  uint8_t hours = time / (60 * 60);
160  time -= hours * (60 * 60);
161  uint8_t minutes = time / 60;
162  time-=minutes*60;
163  uint8_t seconds=time;
164 
165  SensorStab::timeString[0]=(48+days/10); //day
166  SensorStab::timeString[1]=(48+days%10); //day
167  SensorStab::timeString[2]=(':');
168  SensorStab::timeString[3]=(48+hours/10); //hour
169  SensorStab::timeString[4]=(48+hours%10); //hour
170  SensorStab::timeString[5]=(':');
171  SensorStab::timeString[6]=(48+minutes/10); //min
172  SensorStab::timeString[7]=(48+minutes%10); //min
173  SensorStab::timeString[8]=(':');
174  SensorStab::timeString[9]=(48+seconds/10); //seconds
175  SensorStab::timeString[10]=(48+seconds%10); //seconds
176  SensorStab::timeString[11]=('0');
177 }
182  uint8_t level=0;
183  USB.OFF();
184  digitalWrite(DIGITAL6, HIGH);//Shutdown pin activate
185  delay(200);
186  level=PWR.getBatteryLevel();
187  digitalWrite(DIGITAL6, LOW);//Shutdown pin deactivate
188  USB.ON();
189  return level;
190 }
191 void SensorStab::run(void){
194  switch(runState){
195  case measure:
196  USB.println();
197  USB.println("runstate = measure");
198  USB.println();
200  runState=sendToGateway;
201  }
202  break;
203  case sendToGateway:
204  USB.println();
205  USB.println("runstate = sendToGateway");
206  USB.println();
208  runState=sleepCommand;
209  }
210  break;
211  case sleepCommand:
213  runState=sleep;
214  }
215  break;
216  case sleep:
217  USB.println();
218  USB.println("runstate = sleep");
219  USB.println();
221  runState=wakingUP;
222  break;
223  case wakingUP:
224  USB.println();
225  USB.println("runstate = wakeUP");
226  USB.println();
227  if(wakeUp() == RETURN_OK){
228  runState=measure;
229  }
230  break;
231  }
232 }
233 
#define RETURN_ERROR
Definition: Constants.h:4
uint8_t sensorNodeId
Definition: Sensors.h:39
void BlinkAkku(uint8_t batLevel)
This method sets the button led on or in blink state for 5 seconds (depending on battery level) (bloc...
Definition: Leds.cpp:75
void convertStruct(void)
Definition: lora_class.cpp:129
void printAll()
This method reads all the sensors and prints them to the serial Port.
Definition: Sensors.cpp:212
#define RETURN_OK
Definition: Constants.h:9
int8_t wakeUp(void)
Definition: lora_class.cpp:258
void wakeUp()
This method is used to wake up the Sensors, it initializes them.
Definition: Sensors.cpp:289
void init()
This method initializes the output pins for the leds and clears both led.
Definition: Leds.cpp:9
uint8_t sendData(void)
Definition: lora_class.cpp:224
int8_t wakeUp(void)
Definition: SensorStab.cpp:145
void convertTime(uint32_t time)
Definition: SensorStab.cpp:153
uint8_t activityDetection(void)
Definition: lora_class.cpp:169
void LedGreenOn()
This method turns the green led on.
Definition: Leds.cpp:19
communicationState
Definition: SensorStab.cpp:7
uint8_t deepSleepCommand(void)
Definition: SensorStab.cpp:120
uint8_t measureBattery(void)
Definition: SensorStab.cpp:178
void deepSleep(void)
Definition: SensorStab.cpp:107
Sensors::structSensors mySensorStruct
Definition: SensorStab.h:25
void LedGreenBlink4seconds()
This method lets the green led blink for 4 seconds (blocks program for 4s)
Definition: Leds.cpp:64
uint8_t waitForDataRequest(void)
Definition: lora_class.cpp:204
uint64_t numberOfSuccess
Definition: SensorStab.cpp:14
uint64_t numberOfTrys
Definition: SensorStab.cpp:13
State
Definition: Gateway.cpp:3
Sensors mySensors
Definition: SensorStab.h:31
uint8_t getSensorValues(Sensors::structSensors *allSensors)
This method reads the pitch and Roll Angle- Values of all 3 Accelerometers, all 3 temperatures and th...
Definition: Sensors.cpp:77
void goToSleep()
This method sets all sensors in Standby.
Definition: Sensors.cpp:278
char timeString[12]
Definition: SensorStab.h:26
uint8_t waitForDeepSleep(void)
Definition: lora_class.cpp:329
Lora myLora
Definition: SensorStab.h:29
struct Lora::loraSettings mySettings
Leds myLeds
Definition: SensorStab.h:32
Class that handles the communication over 3G.
Definition: Connection3G.h:15
sleepState
Definition: SensorStab.cpp:10
uint64_t numberOfFails
Definition: SensorStab.cpp:15
uint8_t makeMeasurment(void)
Definition: SensorStab.cpp:40
Class that handles sensors.
Definition: Sensors.h:12
uint8_t sendDataToGateway(void)
Definition: SensorStab.cpp:54
void init()
This method initializes the sensors.
Definition: Sensors.cpp:15
Connection3G my3G
Definition: SensorStab.h:30
int8_t init(void)
Definition: SensorStab.cpp:25
void run(void)
Definition: SensorStab.cpp:191
int8_t init(void)
Definition: lora_class.cpp:60