HAB code for FRDM-K64F/LoRa
Dependencies: FXOS8700Q TinyGPSPlus
main.cpp@9:e4b111ec65e9, 2019-02-06 (annotated)
- 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?
User | Revision | Line number | New 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 | } |