HAB code for FRDM-K64F/LoRa

Dependencies:   FXOS8700Q TinyGPSPlus

Committer:
zer044
Date:
Wed Feb 06 23:10:41 2019 +0000
Revision:
9:e4b111ec65e9
Parent:
8:9560dcd4341b
Clean up

Who changed what in which revision?

UserRevisionLine numberNew contents of line
oliviab 0:f20a7a5ed0bc 1 #include "mbed.h"
oliviab 0:f20a7a5ed0bc 2 #include "TinyGPSPlus.h"
oliviab 0:f20a7a5ed0bc 3 //#include "SDFileSystem.h"
oliviab 0:f20a7a5ed0bc 4 #include "FXOS8700Q.h"
oliviab 0:f20a7a5ed0bc 5
oliviab 0:f20a7a5ed0bc 6 //code in this program does the following:
oliviab 0:f20a7a5ed0bc 7 //set up LoRa connection
oliviab 0:f20a7a5ed0bc 8 //retreives the GPS data from the UBLOX module
oliviab 0:f20a7a5ed0bc 9 //collect accellerometer and mag data from onboard chip
oliviab 0:f20a7a5ed0bc 10 //log data on board SD
oliviab 0:f20a7a5ed0bc 11 //sends the GPS + time via LoRa module
oliviab 0:f20a7a5ed0bc 12
oliviab 0:f20a7a5ed0bc 13 void data_logger();
oliviab 0:f20a7a5ed0bc 14 void send_data();
oliviab 0:f20a7a5ed0bc 15 void sensor_data();
oliviab 0:f20a7a5ed0bc 16 void get_gps();
oliviab 0:f20a7a5ed0bc 17 void lora_setup();
oliviab 0:f20a7a5ed0bc 18
zer044 1:7420e0afd8b7 19 RawSerial s_com(PTC17, PTC16); // tx, rx read gps in
zer044 1:7420e0afd8b7 20 Serial pc(USBTX, USBRX); // tx, rx
oliviab 0:f20a7a5ed0bc 21
oliviab 0:f20a7a5ed0bc 22
oliviab 0:f20a7a5ed0bc 23 TinyGPSPlus gps;
oliviab 0:f20a7a5ed0bc 24 bool flag= false;
oliviab 0:f20a7a5ed0bc 25 double latitude, longitude;
oliviab 0:f20a7a5ed0bc 26 //String data;
oliviab 0:f20a7a5ed0bc 27 //data="";
oliviab 0:f20a7a5ed0bc 28 Timer t;
oliviab 0:f20a7a5ed0bc 29 int data_time=0;
oliviab 0:f20a7a5ed0bc 30 I2C i2c(PTE25, PTE24);
oliviab 0:f20a7a5ed0bc 31 FXOS8700QAccelerometer acc(i2c, FXOS8700CQ_SLAVE_ADDR1); //access accelerometer
oliviab 0:f20a7a5ed0bc 32 FXOS8700QMagnetometer mag(i2c, FXOS8700CQ_SLAVE_ADDR1); //access magnetometer
oliviab 0:f20a7a5ed0bc 33 DigitalOut led1(LED1); //use for debugging
oliviab 0:f20a7a5ed0bc 34
oliviab 0:f20a7a5ed0bc 35 int main(){
oliviab 0:f20a7a5ed0bc 36 //set up LoRa stuff
oliviab 0:f20a7a5ed0bc 37 //get current time (millis)
oliviab 0:f20a7a5ed0bc 38 //run gps method
oliviab 0:f20a7a5ed0bc 39 //get sensor data
oliviab 0:f20a7a5ed0bc 40 //call send data
oliviab 0:f20a7a5ed0bc 41 //log data
oliviab 0:f20a7a5ed0bc 42
oliviab 0:f20a7a5ed0bc 43 t.start(); //start the timer object
oliviab 0:f20a7a5ed0bc 44 s_com.baud(9600); //set baud rate for serial read
oliviab 0:f20a7a5ed0bc 45 acc.enable(); //start accelerometer
oliviab 0:f20a7a5ed0bc 46 mag.enable(); //start magnetometer
oliviab 0:f20a7a5ed0bc 47 while(true){
oliviab 0:f20a7a5ed0bc 48 //sensor_data();
zer044 9:e4b111ec65e9 49 get_gps();
oliviab 0:f20a7a5ed0bc 50 }
oliviab 0:f20a7a5ed0bc 51 }
oliviab 0:f20a7a5ed0bc 52
oliviab 0:f20a7a5ed0bc 53 void lora_setup(){
oliviab 0:f20a7a5ed0bc 54 //set up LoRa connection here
oliviab 0:f20a7a5ed0bc 55 }
oliviab 0:f20a7a5ed0bc 56
oliviab 0:f20a7a5ed0bc 57
oliviab 0:f20a7a5ed0bc 58 void get_gps(){
oliviab 0:f20a7a5ed0bc 59 // //retreive gps data from module
oliviab 0:f20a7a5ed0bc 60 //printf("In get_gps\n");
oliviab 0:f20a7a5ed0bc 61 while(!flag){
oliviab 0:f20a7a5ed0bc 62 if(s_com.readable()) {
oliviab 2:c0be2cc2b28a 63 // pc.putc(s_com.getc());
oliviab 2:c0be2cc2b28a 64 flag = gps.encode(s_com.getc());
oliviab 0:f20a7a5ed0bc 65 }
oliviab 0:f20a7a5ed0bc 66
oliviab 0:f20a7a5ed0bc 67 // printf("youre stuck here forever");
oliviab 0:f20a7a5ed0bc 68 }
oliviab 6:aad6ce84fe5e 69 //printf("enemy spotted \n");
oliviab 0:f20a7a5ed0bc 70
zer044 7:4636943e5bea 71 latitude = gps.location.lat();
zer044 7:4636943e5bea 72 longitude = gps.location.lng();
oliviab 0:f20a7a5ed0bc 73
oliviab 0:f20a7a5ed0bc 74 data_time = t.read_ms();
oliviab 0:f20a7a5ed0bc 75 //data = (string(latitude)+","+string(longitude)+","+string(data_time));
zer044 9:e4b111ec65e9 76 printf("\r latitude %lf, longitude %lf \n", latitude, longitude);
oliviab 0:f20a7a5ed0bc 77 //send_gps(data);
oliviab 0:f20a7a5ed0bc 78 led1!=led1;
oliviab 0:f20a7a5ed0bc 79 wait(1000);
oliviab 0:f20a7a5ed0bc 80 }
oliviab 0:f20a7a5ed0bc 81
oliviab 0:f20a7a5ed0bc 82
oliviab 0:f20a7a5ed0bc 83 void send_data(){
oliviab 0:f20a7a5ed0bc 84 //send data via LoRa shield
oliviab 0:f20a7a5ed0bc 85 }
oliviab 0:f20a7a5ed0bc 86
oliviab 0:f20a7a5ed0bc 87
oliviab 0:f20a7a5ed0bc 88 void sensor_data(){
oliviab 0:f20a7a5ed0bc 89
oliviab 0:f20a7a5ed0bc 90 //get mag+accel data
oliviab 0:f20a7a5ed0bc 91 motion_data_units_t acc_data, mag_data;
oliviab 0:f20a7a5ed0bc 92
oliviab 0:f20a7a5ed0bc 93 acc.getAxis(acc_data);
oliviab 0:f20a7a5ed0bc 94 mag.getAxis(mag_data);
oliviab 0:f20a7a5ed0bc 95 data_time = t.read_ms();
oliviab 0:f20a7a5ed0bc 96 printf("ACC: X=%1.4ff Y=%1.4ff Z=%1.4ff \t MAG: X=%4.1ff Y=%4.1ff Z=%4.1ff\r\n", acc_data.x, acc_data.y, acc_data.z, mag_data.x, mag_data.y, mag_data.z);
oliviab 0:f20a7a5ed0bc 97 // printf("TIME:"+ data_time+"\n"); //goes weird here
oliviab 0:f20a7a5ed0bc 98 wait(0.5);
oliviab 0:f20a7a5ed0bc 99
oliviab 0:f20a7a5ed0bc 100 }
oliviab 0:f20a7a5ed0bc 101
oliviab 0:f20a7a5ed0bc 102
oliviab 0:f20a7a5ed0bc 103 void data_logger(){
oliviab 0:f20a7a5ed0bc 104 //log data onto on board SD
oliviab 0:f20a7a5ed0bc 105 }