code

Dependencies:   MPU6050_SIM5320_TEST SDFileSystem WakeUp

Fork of Nucleo_L476RG_SDCard_WorkingSample by M J.

Revision:
2:f745f2656606
Parent:
1:d5774258d18b
--- a/main.cpp	Sat Sep 09 14:36:17 2017 +0000
+++ b/main.cpp	Wed Sep 13 16:07:18 2017 +0000
@@ -3,48 +3,65 @@
 #include "SIM5320.h"
 #include "MPU6050.h"
 #include "SensorBoards.h"
+#include "WakeUp.h"
 
-#define APN "active.bhmobile.ba"
-#define USERNAME ""
-#define PASSWORD ""
-SIM5320 sim5320(PA_9, PA_10);
+
+DigitalOut myled(D13);
+
+
+void create_sensor_data(uint8_t *write_sd_buffer, uint8_t *sensor_board_readings, uint8_t b_id, uint8_t s_id);
+//SIM5320 sim5320(PA_9,PA_10);
 DigitalOut SIM5320_PWR(PA_1);
 DigitalOut SIM_PWR_KEY(PA_15);
-
+InterruptIn mpuInterrupt(PB_6);
+uint8_t sensor_board_readings[4];
+bool test = false;
 //              MOSI, MISO, SCLK, CS, name
-//SDFileSystem sd(PA_7, PA_6, PA_5, PA_4, "sd");
+SDFileSystem sd(PA_7, PA_6, PA_5, PA_4, "sd");
+
+
+uint8_t write_sd_buffer[12];
+
+void mpuInterruptCallback()
+{
+    test=!test;
+
+}
+MPU6050 mpu;
+int main()
+{
+    wait(2);
+    printf("Pocetak\n");
 
-int main() {
- wait(1);
- 
- printf("POCETAK...\r\n");
- SIM5320_PWR = 1;
- SIM_PWR_KEY = 1;
- wait(1);
- SIM_PWR_KEY = 0;
- printf("Start\n");
- wait(10);
- printf("Starting...\r\n");
- sim5320.sendCommand("AT+CNUM",2);
- printf("Checking credit balance...\r\n");
- sim5320.sendCommand("AT+CUSD=1, \"*100#\",15",5);
- sim5320.connect(APN,USERNAME,PASSWORD);
- 
- 
- 
- 
- 
- 
- 
-// sim5320.enableGPS(true);
-//wait(30);
-//****************************Code for GPS***********************************
-/*if(sim5320.getGPS())
-  printf("Imam koordinate a=%s  krahj\n",sim5320.rx_response);
-else
-  printf("Nemam koordinate\n");
+//////////////////////////////////////////////CODE FOR MPU////////////////////////////////////////////////////////////////
+    /*
+    mpuInterrupt.fall(mpuInterruptCallback);
+    wait(2);
+    mpu.calibrate(accelBias, gyroBias);
+    mpu.initialize();
+    mpu.setSleepEnabled(0);
+    wait(2);
+    mpu.setIntFreefallEnabled(1);
+    mpu.setIntZeroMotionEnabled(0);
+    mpu.setIntMotionEnabled(1);
+    //printf("Setting mpu parameters...\r\n");
+    mpu.setMotionDetectionThreshold(1);
+    mpu.setMotionDetectionDuration(15);
 
-printf("\nWait for new connection...\n");*/
+
+    while(1){
+        if(test){
+            printf("Desio se motion\r\n");
+            test = 0;
+            }
+        }
+    */
+
+
+
+
+
+
 
 
 
@@ -52,38 +69,155 @@
 
 
 
-//*************************Code for SD card read and write************************************
+///////////////////////////////////////////////////////////////CODE_FOR_GPS///////////////////////////////////////////////////////////
+    /*
+        wait(3);
+        printf("Star...\r\n");
+        SIM5320_PWR = 1;
+        SIM_PWR_KEY = 1;
+        wait(1);
+        SIM_PWR_KEY = 0;
+        wait(25);
+        wait(2);
+        printf("Starting...\r\n");
+        printf("Starting...\r\n");
+        printf("Starting...\r\n");
+        printf("Starting...\r\n");
+        sim5320.sendCommand("AT+CNUM",2);
+        printf("Checking credit balance...\r\n");
+        sim5320.sendCommand("AT+CUSD=1, \"*100#\",15",5);
+        //Testing GPS
+
+        sim5320.enableGPS(true);
+        wait(30);
+
+        //Gettting GPS location
+        sim5320.sendCommand("AT+CGPSINFO",2);
+        sim5320.sendCommand("AT+CGPSINFO",2);
+        sim5320.sendCommand("AT+CGPSINFO",2);
+
+      */
+
+
+
+
+
+///////////////////////////////////////CODE FOR GPRS/////////////////////////////////////////////////////////////////////////////////
+    /*
+        wait(20);
+        //Testing network connection and disconnection
+        sim5320.connect("active.bhmobile.ba","","");
+        wait(2);
+        if(sim5320.disconnect()) {
+            sim5320.printDebug("Disconnected\r\n");
+        }
+
+        else {
+            sim5320.printDebug("Still connected or error occured!\r\n");
+        }
+
+    */
+
+
+
+
+
+
+
+
+
+
+
+///////////////////////////////////////////CODE FOR SD CARD//////////////////////////////////////////////
+
+    /*
+    mkdir("/sd/mydir3", 0777);
+    printf("\nDirectory created\n");
+    char buf[9];
+    sd.writeSD("/sd/mydir3/sdtest2.txt", "1111111\n");
+    sd.writeSD("/sd/mydir3/sdtest2.txt", "2222222\n");
+    sd.writeSD("/sd/mydir3/sdtest2.txt", "3333333\n");
+    printf("Upisao 1,2 i3\n");
+    sd.readSD("/sd/mydir3/sdtest2.txt",buf);
+    printf("line=%s\n",buf);
+    sd.readSD("/sd/mydir3/sdtest2.txt",buf);
+    printf("line=%s\n",buf);
+    sd.readSD("/sd/mydir3/sdtest2.txt",buf);
+    printf("line=%s\n",buf);
+    */
+
+
+
+//////////////////////////////////////////////CODE FOR SENDOR_BOARDS////////////////////////////////////////////////////////////////
 /*
-mkdir("/sd/mydir8", 0777);
-printf("\nDirectory created\n");
-sd.writeSD("/sd/mydir3/sdtest.txt", "1111111\n");
-sd.writeSD("/sd/mydir3/sdtest.txt", "2222222\n");
-sd.writeSD("/sd/mydir3/sdtest.txt", "3333333\n");
-sd.writeSD("/sd/mydir3/sdtest.txt", "4444444\n");
-sd.writeSD("/sd/mydir3/sdtest.txt", "5555555\n");
-char buf[9];
-sd.writeSD("/sd/mydir3/sdtest2.txt", "1111111\n");
-sd.writeSD("/sd/mydir3/sdtest2.txt", "2111111\n");
-sd.writeSD("/sd/mydir3/sdtest2.txt", "3111111\n");
-printf("Upisao 1,2 i3\n");
-sd.readSD("/sd/mydir3/sdtest2.txt",buf);
-printf("line=%s\n",buf);
-sd.readSD("/sd/mydir3/sdtest2.txt",buf);
-printf("line=%s\n",buf);
-sd.readSD("/sd/mydir3/sdtest2.txt",buf);
-printf("line=%s\n",buf);
+    uint8_t IDBuffer[8];
+    uint8_t IDMeasure[4];
+    float measure=0.0;
+    float measure2=0.0;
+
+    SensorBoards B1;
+    B1.sensorBoardScanner();
+    B1.getSensorNumbers();
+    B1.getSensorIDs();
+    for(int k=0; k<B1.numberOfBoards; k++) {
+       // printf("broj senzora %d \n",B1.boards[k].numberOfSensors);
+        for(int i=0; i<B1.boards[k].numberOfSensors; i++){
+            B1.getSensorReadings(B1.boards[k].I2CAddress,B1.boards[k].sensorIDs[i],IDMeasure);
+            printf("measure=%d %d %d %d keaj\n",IDMeasure[0],IDMeasure[1],IDMeasure[2],IDMeasure[3]);
+            create_sensor_data(write_sd_buffer,IDMeasure,B1.boards[k].I2CAddress,B1.boards[k].sensorIDs[i]);
+            }
+    }
+
+for(int i=0;i<12;i++)
+printf("_%d\n",write_sd_buffer[i]);
 */
 
 
 
 
 
-/*********************Code for scanning I2C Boards*************************
-SensorBoards b1;
-    uint8_t flag=b1.sensorBoardScanner();
-    if (flag) {
-        printf("nadjena ploca sa adresom %d\n", b1.returnBoardAdd());
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//set_time(1505233738);  // Set RTC time to Wed, 28 Oct 2009 11:35:37
+WakeUp::calibrate();
+myled = 0;
+    while (true) {
+//        time_t seconds = time(NULL);
+//        printf("T= %d\n", seconds);
+//        printf("Time = %s", ctime(&seconds));
+//        wait(1);
+
+WakeUp::set_ms(7000);
+printf("sleep\n");
+wait(2);
+deepsleep();
+wait(2);
+//myled = !myled;
+printf("wAKE_UP\n");
+
     }
-    else
-        printf("Nije nadjena ploca\n");*/
+
+
+
+
+}
+void create_sensor_data(uint8_t *write_sd_buffer, uint8_t *sensor_board_readings, uint8_t b_id, uint8_t s_id)
+{
+    //pcf8563_read(&rtc);
+    
+    write_sd_buffer[0]=0;
+    write_sd_buffer[1]=1;
+    write_sd_buffer[2]=2;
+    write_sd_buffer[3]=3;
+    write_sd_buffer[4]=4;
+    write_sd_buffer[5] =b_id;       //sensor boaard id
+    write_sd_buffer[6] =s_id;    //sensor id
+    write_sd_buffer[7] =sensor_board_readings[3];          //sensor reading
+    write_sd_buffer[8] =sensor_board_readings[2];          //sensor reading
+    write_sd_buffer[9] =sensor_board_readings[1];          //sensor reading
+    write_sd_buffer[10]=sensor_board_readings[0];         //sensor reading
+    write_sd_buffer[11]=0xFF;
+    write_sd_buffer[12]=0xFF;
+    
 }
\ No newline at end of file