STM32L476

Dependencies:   MbedJSONValue SDFileSystem WConstants mbed-dev DS1820 TinyGPSPlus epd1in54

Fork of A_SSL_Main by SilentSensors

Committer:
WaleedElmughrabi
Date:
Thu Aug 30 18:54:42 2018 +0000
Revision:
6:d30c8e8678c9
Parent:
5:4525141f69d2
Child:
8:bc5a3b2ff424
Robust GPS, SPI channel 2 is now used for SD card, SD card now uses FAT32 format, and data can be saved to files in the directory

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bcostm 0:eafcd0445e97 1 #include "mbed.h"
WaleedElmughrabi 2:b14aac0ec647 2 #include "stm32l496g_discovery.h"
bcostm 0:eafcd0445e97 3 #include "stm32l496g_discovery_lcd.h"
WaleedElmughrabi 2:b14aac0ec647 4 #include "stm32l496g_discovery_sd.h"
WaleedElmughrabi 2:b14aac0ec647 5 #include "DS1820.h"
WaleedElmughrabi 2:b14aac0ec647 6 #include "epd1in54.h"
WaleedElmughrabi 2:b14aac0ec647 7 #include "stdio.h"
WaleedElmughrabi 4:06edbeb05013 8 #include "math.h"
WaleedElmughrabi 4:06edbeb05013 9 #include "TinyGPSPlus.h"
WaleedElmughrabi 6:d30c8e8678c9 10 #include "SDFileSystem.h"
WaleedElmughrabi 6:d30c8e8678c9 11 #include "errno.h"
WaleedElmughrabi 4:06edbeb05013 12
WaleedElmughrabi 4:06edbeb05013 13
WaleedElmughrabi 4:06edbeb05013 14 #define TX5 PG_7
WaleedElmughrabi 4:06edbeb05013 15 #define RX5 PG_8
WaleedElmughrabi 4:06edbeb05013 16 #define GPSBaud 9600
WaleedElmughrabi 4:06edbeb05013 17 #define Serial0Baud 115200
WaleedElmughrabi 6:d30c8e8678c9 18 #define SD_FILE_SYSTEM_H
WaleedElmughrabi 6:d30c8e8678c9 19 SDFileSystem* fs;
WaleedElmughrabi 6:d30c8e8678c9 20 FILE* fp;
WaleedElmughrabi 2:b14aac0ec647 21
WaleedElmughrabi 2:b14aac0ec647 22
WaleedElmughrabi 4:06edbeb05013 23
WaleedElmughrabi 4:06edbeb05013 24 Serial GPSSerial(TX5, RX5);
WaleedElmughrabi 4:06edbeb05013 25 TinyGPSPlus tgps;
WaleedElmughrabi 4:06edbeb05013 26
WaleedElmughrabi 4:06edbeb05013 27 void displayInfo(void);
WaleedElmughrabi 4:06edbeb05013 28
WaleedElmughrabi 4:06edbeb05013 29 int i = 0;
WaleedElmughrabi 4:06edbeb05013 30
WaleedElmughrabi 4:06edbeb05013 31
WaleedElmughrabi 4:06edbeb05013 32
WaleedElmughrabi 2:b14aac0ec647 33 //DS18B20 temperature sensor
WaleedElmughrabi 2:b14aac0ec647 34 Serial serial(USBTX, USBRX);
WaleedElmughrabi 2:b14aac0ec647 35 DS1820 ds1820(PG_15); //pin name connected to the DS1820 data pin
WaleedElmughrabi 2:b14aac0ec647 36 float t;
WaleedElmughrabi 3:bc4495101c7b 37 float tempSerial;
WaleedElmughrabi 3:bc4495101c7b 38 float tCompare = 0;
WaleedElmughrabi 3:bc4495101c7b 39 int ab=1;
WaleedElmughrabi 3:bc4495101c7b 40
WaleedElmughrabi 6:d30c8e8678c9 41 SDFileSystem sd(PI_3, PC_2, PD_3, PB_12, "sd");
WaleedElmughrabi 2:b14aac0ec647 42
WaleedElmughrabi 2:b14aac0ec647 43 //E-ink Display
WaleedElmughrabi 2:b14aac0ec647 44 // Control
WaleedElmughrabi 2:b14aac0ec647 45 PinName rst;
WaleedElmughrabi 2:b14aac0ec647 46 PinName dc;
WaleedElmughrabi 2:b14aac0ec647 47 PinName busy;
WaleedElmughrabi 2:b14aac0ec647 48 //SPI communication
WaleedElmughrabi 2:b14aac0ec647 49 PinName mosi;
WaleedElmughrabi 2:b14aac0ec647 50 PinName miso;
WaleedElmughrabi 2:b14aac0ec647 51 PinName sclk;
WaleedElmughrabi 2:b14aac0ec647 52 PinName cs;
WaleedElmughrabi 2:b14aac0ec647 53 unsigned char frame_black[EPD_HEIGHT*EPD_WIDTH/8];
WaleedElmughrabi 2:b14aac0ec647 54
WaleedElmughrabi 3:bc4495101c7b 55
WaleedElmughrabi 4:06edbeb05013 56 //function to determine if within polygon geofence
WaleedElmughrabi 4:06edbeb05013 57 //first argument is an integer, the rest are floats
WaleedElmughrabi 4:06edbeb05013 58 //The last vertix should be the same as the first vertix
WaleedElmughrabi 4:06edbeb05013 59 int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
WaleedElmughrabi 4:06edbeb05013 60 {
WaleedElmughrabi 4:06edbeb05013 61 int i, j, c = 0;
WaleedElmughrabi 4:06edbeb05013 62 for (i = 0, j = nvert-1; i < nvert; j = i++) {
WaleedElmughrabi 4:06edbeb05013 63 if ( ((verty[i]>testy) != (verty[j]>testy)) &&
WaleedElmughrabi 4:06edbeb05013 64 (testx < (vertx[j]-vertx[i]) * (testy-verty[i]) / (verty[j]-verty[i]) + vertx[i]) )
WaleedElmughrabi 4:06edbeb05013 65 c = !c;
WaleedElmughrabi 4:06edbeb05013 66 }
WaleedElmughrabi 4:06edbeb05013 67 return c;
WaleedElmughrabi 4:06edbeb05013 68 }
WaleedElmughrabi 4:06edbeb05013 69
WaleedElmughrabi 4:06edbeb05013 70
WaleedElmughrabi 4:06edbeb05013 71 int inCircle(float radius, float xcentre, float ycentre, float testx, float testy)
WaleedElmughrabi 4:06edbeb05013 72 {
WaleedElmughrabi 4:06edbeb05013 73 float distance;
WaleedElmughrabi 4:06edbeb05013 74 int test;
WaleedElmughrabi 4:06edbeb05013 75 distance = (sqrt((testx-xcentre)*(testx-xcentre)+(testy-ycentre)*(testy-ycentre)));
WaleedElmughrabi 4:06edbeb05013 76
WaleedElmughrabi 4:06edbeb05013 77 if(distance < radius){
WaleedElmughrabi 4:06edbeb05013 78 test = 1;
WaleedElmughrabi 4:06edbeb05013 79 }
WaleedElmughrabi 4:06edbeb05013 80 else{
WaleedElmughrabi 4:06edbeb05013 81 test = 0;
WaleedElmughrabi 4:06edbeb05013 82 }
WaleedElmughrabi 4:06edbeb05013 83 return (test);
WaleedElmughrabi 4:06edbeb05013 84 }
WaleedElmughrabi 4:06edbeb05013 85
WaleedElmughrabi 5:4525141f69d2 86 //GPS acquisition
WaleedElmughrabi 4:06edbeb05013 87 void displayInfo(void)
WaleedElmughrabi 4:06edbeb05013 88 {
WaleedElmughrabi 4:06edbeb05013 89 serial.printf("Location: ");
WaleedElmughrabi 4:06edbeb05013 90 if (tgps.location.isValid())
WaleedElmughrabi 4:06edbeb05013 91 {
WaleedElmughrabi 4:06edbeb05013 92 serial.printf("%3.6f, %3.6f", tgps.location.lat(), tgps.location.lng());
WaleedElmughrabi 4:06edbeb05013 93 }
WaleedElmughrabi 4:06edbeb05013 94 else
WaleedElmughrabi 4:06edbeb05013 95 {
WaleedElmughrabi 4:06edbeb05013 96 serial.printf("INVALID");
WaleedElmughrabi 4:06edbeb05013 97 }
WaleedElmughrabi 4:06edbeb05013 98
WaleedElmughrabi 4:06edbeb05013 99 serial.printf(" - Date/Time: ");
WaleedElmughrabi 4:06edbeb05013 100 if (tgps.date.isValid())
WaleedElmughrabi 4:06edbeb05013 101 {
WaleedElmughrabi 4:06edbeb05013 102 serial.printf("%d/", tgps.date.year());
WaleedElmughrabi 4:06edbeb05013 103 if (tgps.date.month() < 10) serial.printf("0");
WaleedElmughrabi 4:06edbeb05013 104 serial.printf("%d/", tgps.date.month());
WaleedElmughrabi 4:06edbeb05013 105 if (tgps.date.day() < 10) serial.printf("0");
WaleedElmughrabi 4:06edbeb05013 106 serial.printf("%d", tgps.date.day());
WaleedElmughrabi 4:06edbeb05013 107 }
WaleedElmughrabi 4:06edbeb05013 108 else
WaleedElmughrabi 4:06edbeb05013 109 {
WaleedElmughrabi 4:06edbeb05013 110 serial.printf("INVALID");
WaleedElmughrabi 4:06edbeb05013 111 }
WaleedElmughrabi 4:06edbeb05013 112
WaleedElmughrabi 4:06edbeb05013 113 serial.printf(" ");
WaleedElmughrabi 4:06edbeb05013 114 if (tgps.time.isValid())
WaleedElmughrabi 4:06edbeb05013 115 {
WaleedElmughrabi 4:06edbeb05013 116 if (tgps.time.hour() < 10) serial.printf("0");
WaleedElmughrabi 4:06edbeb05013 117 serial.printf("%d:", tgps.time.hour());
WaleedElmughrabi 4:06edbeb05013 118 if (tgps.time.minute() < 10) serial.printf("0");
WaleedElmughrabi 4:06edbeb05013 119 serial.printf("%d:", tgps.time.minute());
WaleedElmughrabi 4:06edbeb05013 120 if (tgps.time.second() < 10) serial.printf("0");
WaleedElmughrabi 4:06edbeb05013 121 serial.printf("%d\r\n", tgps.time.second());
WaleedElmughrabi 4:06edbeb05013 122 }
WaleedElmughrabi 4:06edbeb05013 123 else
WaleedElmughrabi 4:06edbeb05013 124 {
WaleedElmughrabi 4:06edbeb05013 125 serial.printf("INVALID\r\n");
WaleedElmughrabi 4:06edbeb05013 126 }
WaleedElmughrabi 4:06edbeb05013 127 }
WaleedElmughrabi 4:06edbeb05013 128
WaleedElmughrabi 4:06edbeb05013 129
WaleedElmughrabi 6:d30c8e8678c9 130 float getTemp()
WaleedElmughrabi 4:06edbeb05013 131 {
WaleedElmughrabi 6:d30c8e8678c9 132 float t;
WaleedElmughrabi 4:06edbeb05013 133 // getTemp(tRead);
WaleedElmughrabi 4:06edbeb05013 134 if(ds1820.begin()) {
WaleedElmughrabi 4:06edbeb05013 135 ds1820.startConversion();
WaleedElmughrabi 4:06edbeb05013 136 wait(1.0);
WaleedElmughrabi 4:06edbeb05013 137 t = ds1820.read(); // read temperature
WaleedElmughrabi 4:06edbeb05013 138 tCompare;
WaleedElmughrabi 4:06edbeb05013 139 serial.printf("temp = %3.1f\r\n", t); // Display temp on terminal
WaleedElmughrabi 4:06edbeb05013 140
WaleedElmughrabi 4:06edbeb05013 141 } else
WaleedElmughrabi 4:06edbeb05013 142 serial.printf("No DS1820 sensor found!\r\n");
WaleedElmughrabi 4:06edbeb05013 143
WaleedElmughrabi 4:06edbeb05013 144
WaleedElmughrabi 4:06edbeb05013 145
WaleedElmughrabi 4:06edbeb05013 146
WaleedElmughrabi 4:06edbeb05013 147 mosi = PB_5;
WaleedElmughrabi 4:06edbeb05013 148 miso = PB_4;
WaleedElmughrabi 4:06edbeb05013 149 sclk = PA_5;
WaleedElmughrabi 4:06edbeb05013 150 cs = PA_15;
WaleedElmughrabi 4:06edbeb05013 151 rst = PI_6;
WaleedElmughrabi 4:06edbeb05013 152 dc = PG_6;
WaleedElmughrabi 4:06edbeb05013 153 busy = PI_11;
WaleedElmughrabi 4:06edbeb05013 154
WaleedElmughrabi 4:06edbeb05013 155 char cVal[32];
WaleedElmughrabi 4:06edbeb05013 156 //char* t_str;
WaleedElmughrabi 4:06edbeb05013 157 sprintf(cVal,"%.2f", t);
WaleedElmughrabi 4:06edbeb05013 158
WaleedElmughrabi 4:06edbeb05013 159
WaleedElmughrabi 4:06edbeb05013 160
WaleedElmughrabi 4:06edbeb05013 161 memset(frame_black, 0xFF, sizeof(unsigned char)*EPD_HEIGHT*EPD_WIDTH/8);
WaleedElmughrabi 4:06edbeb05013 162 Epd epd = Epd(mosi, miso, sclk, cs, dc, rst, busy);
WaleedElmughrabi 4:06edbeb05013 163
WaleedElmughrabi 4:06edbeb05013 164
WaleedElmughrabi 4:06edbeb05013 165 if (epd.Init(lut_full_update) != 0) {
WaleedElmughrabi 4:06edbeb05013 166 return -1;
WaleedElmughrabi 4:06edbeb05013 167 }
WaleedElmughrabi 4:06edbeb05013 168 /*Write strings to the buffer */
WaleedElmughrabi 4:06edbeb05013 169 epd.DrawStringAt(frame_black, 50, 30, cVal, &Font24, COLORED);
WaleedElmughrabi 4:06edbeb05013 170 epd.DrawStringAt(frame_black, 28, 10, "Temperature", &Font16, COLORED);
WaleedElmughrabi 4:06edbeb05013 171 /* Display the frame_buffer */
WaleedElmughrabi 4:06edbeb05013 172 epd.SetFrameMemory(frame_black, 0, 0, epd.width, epd.height);
WaleedElmughrabi 4:06edbeb05013 173 epd.DisplayFrame();
WaleedElmughrabi 4:06edbeb05013 174 epd.Sleep();
WaleedElmughrabi 4:06edbeb05013 175 return t;
WaleedElmughrabi 4:06edbeb05013 176 }
WaleedElmughrabi 4:06edbeb05013 177
WaleedElmughrabi 6:d30c8e8678c9 178 int sdCard()
WaleedElmughrabi 6:d30c8e8678c9 179 {
WaleedElmughrabi 6:d30c8e8678c9 180 //SD card
WaleedElmughrabi 6:d30c8e8678c9 181 // Create and mount SDFileSystem
WaleedElmughrabi 6:d30c8e8678c9 182 /*fs = new SDFileSystem(PI_3, PC_2, PD_3, PB_12, "sd"); // mosi, miso, sck, cs
WaleedElmughrabi 6:d30c8e8678c9 183 serial.printf("Mounting file system...\r\n");
WaleedElmughrabi 6:d30c8e8678c9 184 int err = fs->mount();
WaleedElmughrabi 6:d30c8e8678c9 185 serial.printf("%s\r\n", (err ? "Failed :(\r\n" : "OK\r\n"));
WaleedElmughrabi 6:d30c8e8678c9 186 if (err)
WaleedElmughrabi 6:d30c8e8678c9 187 return err;
WaleedElmughrabi 6:d30c8e8678c9 188
WaleedElmughrabi 6:d30c8e8678c9 189 // Open the file.
WaleedElmughrabi 6:d30c8e8678c9 190 serial.printf("Opening file '/sd/mytest/sdtest.txt'... ");
WaleedElmughrabi 6:d30c8e8678c9 191 fp = fopen("/sd/mytest/sdtest.txt", "w+");
WaleedElmughrabi 6:d30c8e8678c9 192 serial.printf("%s\r\n", (!fp ? "Failed :(\r\n" : "OK\r\n"));
WaleedElmughrabi 6:d30c8e8678c9 193
WaleedElmughrabi 6:d30c8e8678c9 194 if (!fp) {
WaleedElmughrabi 6:d30c8e8678c9 195 // Check whether directory '/sd/mytest' exists.
WaleedElmughrabi 6:d30c8e8678c9 196 serial.printf("\r\nChecking directory '/sd/mytest'...\r\n");
WaleedElmughrabi 6:d30c8e8678c9 197 struct stat info;
WaleedElmughrabi 6:d30c8e8678c9 198 err = stat("/sd/mytest", &info);
WaleedElmughrabi 6:d30c8e8678c9 199 if (err) {
WaleedElmughrabi 6:d30c8e8678c9 200 serial.printf("Directory '/sd/mytest' does not exist.\r\n");
WaleedElmughrabi 6:d30c8e8678c9 201 serial.printf("Trying to create it...");
WaleedElmughrabi 6:d30c8e8678c9 202 err = mkdir("/sd/mytest", 0777);
WaleedElmughrabi 6:d30c8e8678c9 203 serial.printf("%s\r\n", (err ? "Failed :(\r\n" : "OK\r\n"));
WaleedElmughrabi 6:d30c8e8678c9 204 if (err)
WaleedElmughrabi 6:d30c8e8678c9 205 return err;
WaleedElmughrabi 6:d30c8e8678c9 206 }
WaleedElmughrabi 6:d30c8e8678c9 207
WaleedElmughrabi 6:d30c8e8678c9 208 // Create a new 'sdtest.txt' file.
WaleedElmughrabi 6:d30c8e8678c9 209 serial.printf("File not found, creating a new one...\r\n");
WaleedElmughrabi 6:d30c8e8678c9 210 fp = fopen("/sd/mytest/sdtest.txt", "w+");
WaleedElmughrabi 6:d30c8e8678c9 211 serial.printf("%s\r\n", (!fp ? "Failed :(" : "OK"));
WaleedElmughrabi 6:d30c8e8678c9 212 if (!fp) {
WaleedElmughrabi 6:d30c8e8678c9 213 error("error: %s (%d)\r\n", strerror(errno), -errno);
WaleedElmughrabi 6:d30c8e8678c9 214 return errno;
WaleedElmughrabi 6:d30c8e8678c9 215 }
WaleedElmughrabi 6:d30c8e8678c9 216 }
WaleedElmughrabi 6:d30c8e8678c9 217 for (int i = 0; i < 10; i++) {
WaleedElmughrabi 6:d30c8e8678c9 218 serial.printf("Writing numbers (%d/%d)... ", i, 10);
WaleedElmughrabi 6:d30c8e8678c9 219 err = fprintf(fp, " %d\r\n", i);
WaleedElmughrabi 6:d30c8e8678c9 220 if (err < 0) {
WaleedElmughrabi 6:d30c8e8678c9 221 serial.printf("Fail :(\r\n");
WaleedElmughrabi 6:d30c8e8678c9 222 error("error: %s (%d)\r\n", strerror(errno), -errno);
WaleedElmughrabi 6:d30c8e8678c9 223 } else
WaleedElmughrabi 6:d30c8e8678c9 224 serial.printf("OK\r\n");
WaleedElmughrabi 6:d30c8e8678c9 225 }
WaleedElmughrabi 6:d30c8e8678c9 226
WaleedElmughrabi 6:d30c8e8678c9 227 serial.printf("Writing numbers (%d/%d)... OK\r\n\r\n", 10, 10);
WaleedElmughrabi 6:d30c8e8678c9 228 err = fclose(fp);
WaleedElmughrabi 6:d30c8e8678c9 229 serial.printf("Closing file '/sd/mytest/sdtest.txt'... ");
WaleedElmughrabi 6:d30c8e8678c9 230 //serial.printf("%s\r\n", (err ? "Failed :(\r\n" : "OK\r\n"));
WaleedElmughrabi 6:d30c8e8678c9 231 //if (err)
WaleedElmughrabi 6:d30c8e8678c9 232 // return err;
WaleedElmughrabi 6:d30c8e8678c9 233 */
WaleedElmughrabi 6:d30c8e8678c9 234 //Mount the filesystem
WaleedElmughrabi 6:d30c8e8678c9 235 sd.mount();
WaleedElmughrabi 6:d30c8e8678c9 236
WaleedElmughrabi 6:d30c8e8678c9 237 //Perform a write test
WaleedElmughrabi 6:d30c8e8678c9 238 printf("\nWriting to SD card...");
WaleedElmughrabi 6:d30c8e8678c9 239 FILE *fp = fopen("/sd/sdtest.txt", "w");
WaleedElmughrabi 6:d30c8e8678c9 240 if (fp != NULL) {
WaleedElmughrabi 6:d30c8e8678c9 241 fprintf(fp, "We're writing to an SD card!");
WaleedElmughrabi 6:d30c8e8678c9 242 fclose(fp);
WaleedElmughrabi 6:d30c8e8678c9 243 printf("success!\n");
WaleedElmughrabi 6:d30c8e8678c9 244 } else {
WaleedElmughrabi 6:d30c8e8678c9 245 printf("failed!\n");
WaleedElmughrabi 6:d30c8e8678c9 246 }
WaleedElmughrabi 6:d30c8e8678c9 247
WaleedElmughrabi 6:d30c8e8678c9 248 //Perform a read test
WaleedElmughrabi 6:d30c8e8678c9 249 printf("Reading from SD card...");
WaleedElmughrabi 6:d30c8e8678c9 250 fp = fopen("/sd/sdtest.txt", "r");
WaleedElmughrabi 6:d30c8e8678c9 251 if (fp != NULL) {
WaleedElmughrabi 6:d30c8e8678c9 252 char c = fgetc(fp);
WaleedElmughrabi 6:d30c8e8678c9 253 if (c == 'W')
WaleedElmughrabi 6:d30c8e8678c9 254 printf("success!\n");
WaleedElmughrabi 6:d30c8e8678c9 255 else
WaleedElmughrabi 6:d30c8e8678c9 256 printf("incorrect char (%c)!\n", c);
WaleedElmughrabi 6:d30c8e8678c9 257 fclose(fp);
WaleedElmughrabi 6:d30c8e8678c9 258 } else {
WaleedElmughrabi 6:d30c8e8678c9 259 printf("failed!\n");
WaleedElmughrabi 6:d30c8e8678c9 260 }
WaleedElmughrabi 6:d30c8e8678c9 261
WaleedElmughrabi 6:d30c8e8678c9 262 //Unmount the filesystem
WaleedElmughrabi 6:d30c8e8678c9 263 sd.unmount();
WaleedElmughrabi 6:d30c8e8678c9 264
WaleedElmughrabi 6:d30c8e8678c9 265
WaleedElmughrabi 6:d30c8e8678c9 266 }
WaleedElmughrabi 6:d30c8e8678c9 267
WaleedElmughrabi 4:06edbeb05013 268 int main()
WaleedElmughrabi 4:06edbeb05013 269 {
WaleedElmughrabi 4:06edbeb05013 270 GPSSerial.baud(GPSBaud);
WaleedElmughrabi 4:06edbeb05013 271 wait(0.001);
WaleedElmughrabi 4:06edbeb05013 272
WaleedElmughrabi 4:06edbeb05013 273
WaleedElmughrabi 4:06edbeb05013 274
WaleedElmughrabi 4:06edbeb05013 275
WaleedElmughrabi 6:d30c8e8678c9 276 //Variables
WaleedElmughrabi 4:06edbeb05013 277 int inpoly;
WaleedElmughrabi 4:06edbeb05013 278 float x[5] = { 1,4,4,1,1};
WaleedElmughrabi 4:06edbeb05013 279 float y[5] = { 1,1,4,4,1};
WaleedElmughrabi 6:d30c8e8678c9 280 float xtest;
WaleedElmughrabi 6:d30c8e8678c9 281 float ytest;
WaleedElmughrabi 6:d30c8e8678c9 282 float cx = 1;
WaleedElmughrabi 6:d30c8e8678c9 283 float cy = 50;
WaleedElmughrabi 6:d30c8e8678c9 284 float r = 15;
WaleedElmughrabi 6:d30c8e8678c9 285 int ans = 0;
WaleedElmughrabi 6:d30c8e8678c9 286 float liquidTemp = 0;
WaleedElmughrabi 6:d30c8e8678c9 287
WaleedElmughrabi 6:d30c8e8678c9 288 wait(2);
WaleedElmughrabi 6:d30c8e8678c9 289
WaleedElmughrabi 4:06edbeb05013 290
WaleedElmughrabi 4:06edbeb05013 291 while(1){
WaleedElmughrabi 4:06edbeb05013 292 //inCircle(r, cx, cy, xtest, ytest);
WaleedElmughrabi 4:06edbeb05013 293 //serial.printf("rx = 0x%02X\n", aRxBuffer);
WaleedElmughrabi 4:06edbeb05013 294 //tempSerial = getTemp(t);
WaleedElmughrabi 4:06edbeb05013 295 //inpoly = pnpoly(5,x, y, xtest,ytest);
WaleedElmughrabi 4:06edbeb05013 296 //serial.printf("inpoly = %d\r\n", inpoly);
WaleedElmughrabi 4:06edbeb05013 297 //ans = inCircle(r, cx, cy, xtest, ytest);
WaleedElmughrabi 4:06edbeb05013 298 //serial.printf("distance = %3.1f\r\n", ans);
WaleedElmughrabi 4:06edbeb05013 299 // GPS
WaleedElmughrabi 4:06edbeb05013 300 //if(gps.sample()){
WaleedElmughrabi 4:06edbeb05013 301 // serial.printf("%f\t%c\t%f\t%c\t%f\t%f\t%f\n\r",gps.longitude, gps.ns,gps.latitude,gps.ew, gps.alt, gps.geoid, gps.time);
WaleedElmughrabi 4:06edbeb05013 302 // serial.printf("%d:%d:%d",gps.hour,gps.minute,gps.seconed);
WaleedElmughrabi 4:06edbeb05013 303 // }
WaleedElmughrabi 6:d30c8e8678c9 304 sdCard();
WaleedElmughrabi 4:06edbeb05013 305 while(1) {
WaleedElmughrabi 6:d30c8e8678c9 306 //wait (1);
WaleedElmughrabi 4:06edbeb05013 307
WaleedElmughrabi 6:d30c8e8678c9 308
WaleedElmughrabi 4:06edbeb05013 309 if (tgps.encode(GPSSerial.getc()))
WaleedElmughrabi 4:06edbeb05013 310 {
WaleedElmughrabi 4:06edbeb05013 311 displayInfo();
WaleedElmughrabi 6:d30c8e8678c9 312 xtest = tgps.location.lng();
WaleedElmughrabi 6:d30c8e8678c9 313 ytest = tgps.location.lat();
WaleedElmughrabi 6:d30c8e8678c9 314 serial.printf("\r\n %3.6f, %3.6f, \r\n", ytest, xtest);
WaleedElmughrabi 6:d30c8e8678c9 315 ans = inCircle(r, cx, cy, xtest, ytest);
WaleedElmughrabi 6:d30c8e8678c9 316 wait(5); //little delay to prevent double writing
WaleedElmughrabi 6:d30c8e8678c9 317 liquidTemp = getTemp();
WaleedElmughrabi 6:d30c8e8678c9 318 serial.printf("\r\n In geofence = %d: \r\n", ans);
WaleedElmughrabi 6:d30c8e8678c9 319
WaleedElmughrabi 4:06edbeb05013 320 }
WaleedElmughrabi 4:06edbeb05013 321
WaleedElmughrabi 4:06edbeb05013 322 if (millis() > 5000 && tgps.charsProcessed() < 10)
WaleedElmughrabi 4:06edbeb05013 323 {
WaleedElmughrabi 4:06edbeb05013 324 serial.printf("No GPS detected: check wiring.\r\n");
WaleedElmughrabi 4:06edbeb05013 325 // while(true);
WaleedElmughrabi 4:06edbeb05013 326 break;
WaleedElmughrabi 4:06edbeb05013 327 }
WaleedElmughrabi 6:d30c8e8678c9 328
WaleedElmughrabi 4:06edbeb05013 329
WaleedElmughrabi 4:06edbeb05013 330 }
WaleedElmughrabi 4:06edbeb05013 331 serial.printf("%d\r\n",i);
WaleedElmughrabi 4:06edbeb05013 332 i++;
WaleedElmughrabi 4:06edbeb05013 333 wait(1.0);
WaleedElmughrabi 4:06edbeb05013 334 }
WaleedElmughrabi 4:06edbeb05013 335
WaleedElmughrabi 4:06edbeb05013 336
WaleedElmughrabi 4:06edbeb05013 337 wait(5);
WaleedElmughrabi 4:06edbeb05013 338 }
WaleedElmughrabi 4:06edbeb05013 339
WaleedElmughrabi 4:06edbeb05013 340
WaleedElmughrabi 4:06edbeb05013 341
WaleedElmughrabi 4:06edbeb05013 342