Program to read data from sensors, write them to a file which can then be interpreted by software to help show the path of a bicycle as it travels around a field

Dependencies:   C12832_lcd FatFileSystemCpp MMA7660 CMPS03 GPS

Fork of MSCUsbHost by Igor Skochinsky

Program to link a compass and a GPS to an MBED to produce a CSV file which can be used to track a bicycle around a field

Results can be found here

Committer:
mbedevilledEgg
Date:
Thu Mar 16 15:19:33 2017 +0000
Revision:
9:dbb7c4e63d45
Parent:
8:f1679795e9ac
Child:
10:d2dd3b355de5
Latest;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedevilledEgg 4:c64b742e9388 1 #include "mbed.h" // mbed library
mbedevilledEgg 4:c64b742e9388 2 #include "MMA7660.h" // Accelerometer library
mbedevilledEgg 4:c64b742e9388 3 #include "GPS.h" // GPS library
mbedevilledEgg 4:c64b742e9388 4 #include "CMPS03.h" // Compass library
mbedevilledEgg 4:c64b742e9388 5 #include "C12832_lcd.h" // LCD screen library
igorsk 0:e294af8d0e07 6 #include "MSCFileSystem.h"
mbedevilledEgg 6:09a0610af8b7 7
mbedevilledEgg 4:c64b742e9388 8 #define FSNAME "USB"
mbedevilledEgg 7:c08305966384 9 #define LIM 60
mbedevilledEgg 6:09a0610af8b7 10
mbedevilledEgg 4:c64b742e9388 11 GPS gps(p9, p10); // GPS Connection
mbedevilledEgg 4:c64b742e9388 12 CMPS03 compass(p28, p27, CMPS03_DEFAULT_I2C_ADDRESS); // Compass connection
mbedevilledEgg 4:c64b742e9388 13 MMA7660 MMA(p28, p27); // Accelerometer connection
mbedevilledEgg 4:c64b742e9388 14 C12832_LCD lcd;
mbedevilledEgg 4:c64b742e9388 15 Serial pc(USBTX, USBRX);
mbedevilledEgg 6:09a0610af8b7 16
mbedevilledEgg 6:09a0610af8b7 17
mbedevilledEgg 4:c64b742e9388 18 // Declarations
mbedevilledEgg 4:c64b742e9388 19 float ax, ay, az;
mbedevilledEgg 4:c64b742e9388 20 DigitalOut connectionLed(LED1);
mbedevilledEgg 4:c64b742e9388 21 MSCFileSystem msc("USB"); // Mount USB stick under the name "USB"
mbedevilledEgg 6:09a0610af8b7 22
igorsk 0:e294af8d0e07 23 int main()
igorsk 0:e294af8d0e07 24 {
mbedevilledEgg 9:dbb7c4e63d45 25
mbedevilledEgg 4:c64b742e9388 26 DIR *d;
mbedevilledEgg 4:c64b742e9388 27 struct dirent *p; // For printing externally (USB Stick)
mbedevilledEgg 4:c64b742e9388 28 d = opendir("/" FSNAME);
mbedevilledEgg 9:dbb7c4e63d45 29
mbedevilledEgg 4:c64b742e9388 30 if (MMA.testConnection())
mbedevilledEgg 4:c64b742e9388 31 connectionLed = 1; // Checking MMA connected correctly
mbedevilledEgg 4:c64b742e9388 32
mbedevilledEgg 4:c64b742e9388 33 FILE *Accel = fopen("/USB/Accelerometer.txt", "w"); // Opens text file for Accelerometer
mbedevilledEgg 4:c64b742e9388 34 FILE *GPS = fopen("/USB/GPS.txt", "w"); // Opens text file for GPS
mbedevilledEgg 4:c64b742e9388 35 FILE *Comp = fopen("/USB/Compass.txt", "w"); // Opens text file for Compass
mbedevilledEgg 4:c64b742e9388 36
mbedevilledEgg 7:c08305966384 37 int i;
igorsk 0:e294af8d0e07 38
mbedevilledEgg 8:f1679795e9ac 39
mbedevilledEgg 7:c08305966384 40 while(i < LIM)
igorsk 0:e294af8d0e07 41 {
mbedevilledEgg 4:c64b742e9388 42 //Accelerometer
mbedevilledEgg 9:dbb7c4e63d45 43 Accel = fopen("/USB/Accelerometer.txt", "a");
mbedevilledEgg 4:c64b742e9388 44 ax=MMA.x();
mbedevilledEgg 4:c64b742e9388 45 ay=MMA.y();
mbedevilledEgg 4:c64b742e9388 46 az=MMA.z();
mbedevilledEgg 4:c64b742e9388 47 fprintf(Accel,"%f, %f, %f,\r\n",ax,ay,az);
mbedevilledEgg 4:c64b742e9388 48 lcd.locate(1,21);
mbedevilledEgg 4:c64b742e9388 49 lcd.printf("Accel: %.2f, %.2f, %.2f", ax, ay, az);
mbedevilledEgg 6:09a0610af8b7 50 /*
mbedevilledEgg 4:c64b742e9388 51 //GPS
mbedevilledEgg 4:c64b742e9388 52 GPS = fopen("/USB/GPS.txt", "a");
mbedevilledEgg 4:c64b742e9388 53 if (gps.sample())
mbedevilledEgg 4:c64b742e9388 54 {
mbedevilledEgg 4:c64b742e9388 55 fprintf(GPS, "\n%f, %f\r\n", gps.latitude, gps.longitude);
mbedevilledEgg 4:c64b742e9388 56 lcd.locate(1,1);
mbedevilledEgg 7:c08305966384 57 lcd.printf("%.4f, %.4f, %.4f", gps.latitude, gps.longitude);
mbedevilledEgg 4:c64b742e9388 58 }
mbedevilledEgg 4:c64b742e9388 59 else // For no signal
igorsk 0:e294af8d0e07 60 {
mbedevilledEgg 4:c64b742e9388 61 fprintf(GPS, "\nNo Lock!\n\n");
mbedevilledEgg 4:c64b742e9388 62 lcd.locate(1,1);
mbedevilledEgg 4:c64b742e9388 63 lcd.printf("GPS: No Lock!");
igorsk 0:e294af8d0e07 64 }
mbedevilledEgg 7:c08305966384 65 */
mbedevilledEgg 4:c64b742e9388 66 // Compass
mbedevilledEgg 7:c08305966384 67 //Offset = compass.readBearing(); // Initial definitions
mbedevilledEgg 9:dbb7c4e63d45 68 Comp = fopen("/USB/Compass.txt", "a");
mbedevilledEgg 9:dbb7c4e63d45 69 fprintf(Comp, "%f\r\n", compass.readBearing()/10);
mbedevilledEgg 8:f1679795e9ac 70 lcd.locate(1,11);
mbedevilledEgg 9:dbb7c4e63d45 71 lcd.printf("Bearing: %.2f\n", compass.readBearing()/10.0);
mbedevilledEgg 8:f1679795e9ac 72 /*
mbedevilledEgg 7:c08305966384 73 Comp = fopen("/USB/Compass.txt", "a");
mbedevilledEgg 7:c08305966384 74 fprintf(Comp, "%f\r\n", compass.readBearing());
mbedevilledEgg 7:c08305966384 75 lcd.locate(1,11);
mbedevilledEgg 8:f1679795e9ac 76 // lcd.printf("Offset: %f, CMP: %f", Offset, compass.readBearing());
mbedevilledEgg 8:f1679795e9ac 77 lcd.printf("Bearing:%f\n", compass.readBearing() / 10.0);
mbedevilledEgg 8:f1679795e9ac 78 */
mbedevilledEgg 7:c08305966384 79
mbedevilledEgg 7:c08305966384 80 /* GenBearing = compass.readBearing()/10;
mbedevilledEgg 7:c08305966384 81 Comp = fopen("/USB/Compass.txt", "a");
mbedevilledEgg 7:c08305966384 82 if (GenBearing < 0)
mbedevilledEgg 7:c08305966384 83 {
mbedevilledEgg 7:c08305966384 84 GenBearing = 0 - GenBearing;
mbedevilledEgg 7:c08305966384 85 }
mbedevilledEgg 7:c08305966384 86 fprintf(Comp, "%f\r\n", GenBearing);
mbedevilledEgg 7:c08305966384 87 lcd.locate(1,11);
mbedevilledEgg 7:c08305966384 88 lcd.printf("Offset: %.2f, CMP: %.2f", Offset/10.0, GenBearing);
mbedevilledEgg 7:c08305966384 89 */
mbedevilledEgg 8:f1679795e9ac 90 wait (0.5);
mbedevilledEgg 8:f1679795e9ac 91
mbedevilledEgg 8:f1679795e9ac 92 i++;
mbedevilledEgg 9:dbb7c4e63d45 93 fclose(Accel);
mbedevilledEgg 6:09a0610af8b7 94 //fclose(GPS);
mbedevilledEgg 7:c08305966384 95 fclose(Comp);
mbedevilledEgg 9:dbb7c4e63d45 96 }
mbedevilledEgg 9:dbb7c4e63d45 97
mbedevilledEgg 6:09a0610af8b7 98 }