code

Dependencies:   MPU6050_SIM5320_TEST SDFileSystem WakeUp

Fork of Nucleo_L476RG_SDCard_WorkingSample by M J.

main.cpp

Committer:
suads
Date:
2017-09-13
Revision:
2:f745f2656606
Parent:
1:d5774258d18b

File content as of revision 2:f745f2656606:

#include "mbed.h"
#include "SDFileSystem.h"
#include "SIM5320.h"
#include "MPU6050.h"
#include "SensorBoards.h"
#include "WakeUp.h"


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");


uint8_t write_sd_buffer[12];

void mpuInterruptCallback()
{
    test=!test;

}
MPU6050 mpu;
int main()
{
    wait(2);
    printf("Pocetak\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);


    while(1){
        if(test){
            printf("Desio se motion\r\n");
            test = 0;
            }
        }
    */













///////////////////////////////////////////////////////////////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////////////////////////////////////////////////////////////////
/*
    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]);
*/







////////////////////////////////////////////////////////////////////////////////////////////////////////////
//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");

    }




}
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;
    
}