Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: ARCH_GPRS_V2_HW Blinker GPRSInterface HTTPClient_GPRS RTC_WorkingLibrary SDFileSystem USBDevice mbed
Fork of finalv2 by
Revision 1:0ec6c4c22623, committed 2015-05-05
- Comitter:
- seedteam20
- Date:
- Tue May 05 19:53:49 2015 +0000
- Parent:
- 0:77d82c39b97c
- Child:
- 2:89ca14fa896e
- Commit message:
- sdfasd
Changed in this revision
--- a/GPRSInterface.lib Tue May 05 19:07:02 2015 +0000 +++ b/GPRSInterface.lib Tue May 05 19:53:49 2015 +0000 @@ -1,1 +1,1 @@ -http://developer.mbed.org/users/mbotkinl/code/GPRSInterface/#180feb3ebe62 +http://developer.mbed.org/teams/Seeed/code/GPRSInterface/#180feb3ebe62
--- a/finalCodev2.cpp Tue May 05 19:07:02 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,433 +0,0 @@
-//SEED Team 20 Final Code draft 1 4/16/15
-
-#include "mbed.h"
-#include "SDFileSystem.h"
-#include "ARCH_GPRS_V2_HW.h"
-#include "HTTPClient.h"
-#include "GPRSInterface.h"
-#include "Blinker.h"
-#include "DHT.h"
-#include "i2c_uart.h"
-#include "ARCH_GPRS_Sleep.h"
-#include "ds1307.h"
-#include "USBSerial.h"
-#include <string>
-
-#define PIN_TX P1_27
-#define PIN_RX P1_26
-
-#define SDA P0_5
-#define SCL P0_4
-
-
-#define BROADCAST_TIME 300
-
-USBSerial pc;
-
-//LED Blink
-DigitalOut line11(P0_9);
-DigitalOut line13(P0_2);
-DigitalOut line14(P1_28);
-
-Blinker yellowLED(LED1), redLED(LED2), greenLED(LED3), blueLED(LED4);
-
-//USBSerial pc;
-SDFileSystem sd(P1_22, P1_21, P1_20, P1_23, "sd"); // the pinout on the /Arch GPRS v2 mbed board.
-char filename[60];
-
-//RTC
-DS1307 rtc(SDA,SCL);
-int sec, minute, hours, day, date, month, year;
-char timestamp[17];
-
-//variables for reading data from SD card
-char APIKey[17];
-char sensors[3][5];
-char sensorBuff[5];
-int tempField, humField, lightField;
-int field1, field2, field3;
-int numSensors;
-bool tempSensorflag=false, lightSensorflag=false, SomeotherSensorflag=false;
-
-//GPRS setup
-GPRSInterface gprs(PIN_TX,PIN_RX,115200,"internetd.gdsp",NULL,NULL);
-HTTPClient http;
-char* thingSpeakUrl = "http://api.thingspeak.com/update";
-char urlBuffer[256];
-char str[1024];
-//char errorR[1024];
-string errorR;
-
-//Sensors
-//DHT sensor(P1_14,SEN51035P);
-DHT sensor(P1_14,SEN11301P);
-AnalogIn lightSensor(P0_12);
-
-
-int tempData,humData, lightData;
-
-
-void connectGPRS(void) {
- iot_hw.init(); // power on SIM900
-
- int count = 0;
- while(false == gprs.connect() && count < 5) {
- wait(2);
- count += 1;
- }
-}
-
-void getTempHumid(int* tempData,int* humData){
- int err = 1;
- int count = 0;
- iot_hw.grovePwrOn();
- wait(1); // wait 1 second for device stable status
- while (err != 0 && count < 4) {
- err = sensor.readData();
- count += 1;
- *tempData = sensor.ReadTemperature(FARENHEIT);
- *humData = sensor.ReadHumidity();
-
- wait(1);
- }
- iot_hw.grovePwrOff();
-}
-
-void getLightReading(int* lightData)
-{
- *lightData = lightSensor*1000;
-}
-
-
-int ReadFile (void) {
- mkdir("/sd", 0777); // All other times open file in append mode
- FILE *fp = fopen("/sd/config.txt","r");
- if (fp==NULL) {
- fclose(fp);
- return 0;
-
- } else if (fp) {
- //fscanf(fp,"%16c %d %s %s", APIKey, &numSensors, sensors[0],sensors[1]);
- fscanf(fp,"%16c",APIKey);
-
-// pc.printf("APIKEY= %s\r\n",APIKey);
-//
- fscanf(fp,"%d",&numSensors);
-// pc.printf("number of sensors = %d \r\n",numSensors);
-//
- for (int i = 0; i<numSensors;i=i+1) {
- fscanf(fp,"%s",sensors[i]);
- //fscanf(fp,"%s",sensorBuff);
- strcpy(sensors[i],sensorBuff);
- //pc.printf("sensor %d = %s\r\n",i,sensors[i]);
- }
-
-
- fclose(fp);
- return 1;
-
- } else {
- fclose(fp);
- return 0;
- }
-
-}
-
-bool stringComparison (const char *string1, const char *string2) {
- int count = 0;
- while (string1[count] != 0) {
- if (string1[count] != string2[count])
- return false;
- count++;
- }
- return true;
-}
-
-
-void sendData1(int sensor1Data, int field1) {
- connectGPRS();
- urlBuffer[0] = 0;
- sprintf(urlBuffer, "%s?key=%s&field%d=%d", thingSpeakUrl, APIKey, field1, sensor1Data);
- HTTPResult res = http.get(urlBuffer, str,128);
- if (res != HTTP_OK) {
- redLED.blink(5);
- } else {
- greenLED.blink(5);
- }
-
-
- iot_hw.init_io(); //power down SIM900
-}
-
-void sendData2(int sensor1Data, int field1, int sensor2Data, int field2) {
- connectGPRS();
- urlBuffer[0] = 0;
- sprintf(urlBuffer, "%s?key=%s&field%d=%d&field%d=%d", thingSpeakUrl, APIKey, field1, sensor1Data, field2, sensor2Data);
- HTTPResult res = http.get(urlBuffer, str,128);
- if (res != HTTP_OK) {
- redLED.blink(5);
- } else {
- greenLED.blink(5);
- }
- iot_hw.init_io(); //power down SIM900
-}
-
-void sendData3(int sensor1Data, int field1, int sensor2Data, int field2, int sensor3Data, int field3) {
- connectGPRS();
- urlBuffer[0] = 0;
- sprintf(urlBuffer, "%s?key=%s&field%d=%d&field%d=%d&field%d=%d", thingSpeakUrl, APIKey, field1, sensor1Data, field2, sensor2Data, field3, sensor3Data);
- HTTPResult res = http.get(urlBuffer, str,128);
- if (res != HTTP_OK) {
- redLED.blink(5);
- } else {
- greenLED.blink(5);
- }
- iot_hw.init_io(); //power down SIM900
-}
-
-//void errorWrite(const char* errorReport) {
-void errorWrite(string errorReport) {
- rtc.gettime( &sec, &minute, &hours, &day, &date, &month, &year);
- sprintf(timestamp,"20%.2d-%.2d-%.2d %.2d:%.2d:%.2d", year, month, date, hours, minute, sec);
-
- mkdir("/sd", 0777);
- FILE *fp = fopen("/sd/ErrorLog.txt","a");
- if (fp == NULL) {
- //no sd card
- redLED.blink(10);
- } else {
- pc.printf("%s: %s \r\n",timestamp,errorReport);
- fprintf(fp,"%s: %s \r\n",timestamp,errorReport);
- fclose(fp);
- blueLED.blink(5);
- }
-}
-
-void sdWrite1(int sensor1Data)
-{
- rtc.gettime( &sec, &minute, &hours, &day, &date, &month, &year);
- sprintf(timestamp,"20%.2d-%.2d-%.2d %.2d:%.2d:%.2d", year, month, date, hours, minute, sec);
-
- mkdir("/sd", 0777);
- FILE *fp = fopen("/sd/node1.csv","a");
- if (fp == NULL) {
- //no sd card
- redLED.blink(10);
- } else {
-
- fprintf(fp,"%s, %d \r\n",timestamp,sensor1Data);
- fclose(fp);
- blueLED.blink(5);
- }
-}
-
-void sdWrite2(int sensor1Data, int sensor2Data)
-{
- rtc.gettime( &sec, &minute, &hours, &day, &date, &month, &year);
- sprintf(timestamp,"20%.2d-%.2d-%.2d %.2d:%.2d:%.2d", year, month, date, hours, minute, sec);
-
- mkdir("/sd", 0777);
- FILE *fp = fopen("/sd/node1.csv","a");
- if (fp == NULL) {
- //no sd card
- redLED.blink(10);
- } else {
-
- fprintf(fp,"%s, %d, %d\r\n",timestamp, sensor1Data, sensor2Data);
- fclose(fp);
- blueLED.blink(5);
- }
-}
-
-void sdWrite3(int sensor1Data, int sensor2Data,int sensor3Data)
-{
- rtc.gettime( &sec, &minute, &hours, &day, &date, &month, &year);
- sprintf(timestamp,"20%.2d-%.2d-%.2d %.2d:%.2d:%.2d", year, month, date, hours, minute, sec);
-
- mkdir("/sd", 0777);
- FILE *fp = fopen("/sd/node1.csv","a");
- if (fp == NULL) {
- //no sd card
- redLED.blink(10);
- } else {
-
- fprintf(fp,"%s, %d, %d, %d\r\n",timestamp, sensor1Data, sensor2Data, sensor3Data);
- fclose(fp);
- blueLED.blink(5);
- }
-}
-
-
-
-
-int main() {
- wdt_sleep.wdtClkSetup(WDTCLK_SRC_IRC_OSC); //set up sleep
-
-
-
- //test of breadboard
-// while (1) {
-// //rtc test
-// errorR="Test rtc";
-// rtc.gettime( &sec, &minute, &hours, &day, &date, &month, &year);
-// sprintf(timestamp,"20%.2d-%.2d-%.2d %.2d:%.2d:%.2d", year, month, date, hours, minute, sec);
-// pc.printf("%s: %s\r\n",timestamp,errorR);
-//
-// //rgb test
-// int n=5;
-// int t=1;
-// pc.printf("line11 blink\r\n");
-// for (int i = 0; i < n; i++) {
-// line11 = 1;
-// wait(t);
-// line11 = 0;
-// wait(t);
-// }
-//
-// pc.printf("line13 blink\r\n");
-//
-// for (int i = 0; i < n; i++) {
-// line13 = 1;
-// wait(t);
-// line13 = 0;
-// wait(t);
-// }
-//
-// pc.printf("line11 blink\r\n");
-//
-// for (int i = 0; i < n; i++) {
-// line14 = 1;
-// wait(t);
-// line14 = 0;
-// wait(t);
-// }
-// //light sensor test
-// getLightReading(&lightData);
-// pc.printf("light reading: %d \r\n",lightData);
-//
-// wait(15);
-// }
-
-
- //read SD card
- while (ReadFile()==0) {
- wait(5);
- redLED.blink(10);
- }
- greenLED.blink(10);
-
-
- //identify sensors and find order of fields
- int field=1;
- for (int i=0;i<numSensors;i=i+1) {
- if (stringComparison(sensors[i],"temp")==true) {
- tempSensorflag=true;
- tempField=field;
- humField=field+1;
- field=field+1;
- } else if (stringComparison(sensors[i],"light")==true) {
- lightSensorflag=true;
- lightField=field;
- } else if (stringComparison(sensors[i],"some other sensor")==true) {
- SomeotherSensorflag=true;
- }
- field=field+1;
- }
-
- //set up CSV file
- mkdir("/sd", 0777);
- rtc.gettime( &sec, &minute, &hours, &day, &date, &month, &year);
- sprintf(filename,"/sd/DataLog_20%.2d.%.2d.%.2d_%.2d.%.2d.csv",year, month, date, hours, minute);
- FILE *fp = fopen(filename,"a");
- if (fp == NULL) {
- //no sd card
- redLED.blink(10);
- } else {
-
- //print header
- fprintf(fp,"Timestamp, sensor1, sensor2 \r\n");
- fclose(fp);
- blueLED.blink(5);
- }
-
- //Debug Mode
- for (int dd=0;dd<30;dd=dd+1) {
-
- if (numSensors == 3) {
-
- } else if (numSensors ==2) {
- if (tempSensorflag==true) {
- if (lightSensorflag==true) {
- getLightReading(&lightData);
- getTempHumid(&tempData,&humData);
- sendData3(tempData,tempField,humData,humField,lightData,lightField);
- sdWrite3(tempData,humData,lightData);
- } else if (SomeotherSensorflag==true) {
-
- }
- } else if (lightSensorflag==true) {
- if (SomeotherSensorflag==true) {
- getLightReading(&lightData);
-
-
- }
- }
- } else {
- if (tempSensorflag==true) {
- getTempHumid(&tempData,&humData);
- sendData2(tempData,tempField,humData,humField);
- sdWrite2(tempData,humData);
- } else if (lightSensorflag==true) {
- getLightReading(&lightData);
- sendData1(lightData,lightField);
- sdWrite1(lightData);
- } else if (SomeotherSensorflag==true) {
-
- }
- }
- wait(30);
- }
-
-
-
-
-
- //normal mode
- while (1) {
-
- if (numSensors == 3) {
-
- } else if (numSensors ==2) {
- if (tempSensorflag==true) {
- if (lightSensorflag==true) {
- getLightReading(&lightData);
- getTempHumid(&tempData,&humData);
- sendData3(tempData,tempField,humData,humField,lightData,lightField);
- sdWrite3(tempData,humData,lightData);
- } else if (SomeotherSensorflag==true) {
-
- }
- } else if (lightSensorflag==true) {
- if (SomeotherSensorflag==true) {
- getLightReading(&lightData);
-
-
- }
- }
- } else {
- if (tempSensorflag==true) {
- getTempHumid(&tempData,&humData);
- sendData2(tempData,tempField,humData,humField);
- sdWrite2(tempData,humData);
- } else if (lightSensorflag==true) {
- getLightReading(&lightData);
- sendData1(lightData,lightField);
- sdWrite1(lightData);
- } else if (SomeotherSensorflag==true) {
-
- }
- }
- wdt_sleep.sleep(BROADCAST_TIME);
-
- }
-}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/finalCodev3.cpp Tue May 05 19:53:49 2015 +0000
@@ -0,0 +1,444 @@
+//SEED Team 20 Final Code draft 1 4/16/15
+
+#include "mbed.h"
+#include "SDFileSystem.h"
+#include "ARCH_GPRS_V2_HW.h"
+#include "HTTPClient.h"
+#include "GPRSInterface.h"
+#include "Blinker.h"
+#include "DHT.h"
+#include "i2c_uart.h"
+#include "ARCH_GPRS_Sleep.h"
+#include "ds1307.h"
+#include "USBSerial.h"
+#include <string>
+
+//Arch GPRS v2 SIM900 pins
+#define PIN_TX P1_27
+#define PIN_RX P1_26
+
+//RTC
+#define SDA P0_5
+#define SCL P0_4
+
+#define BROADCAST_TIME 300 //time between sending data [sec]
+
+USBSerial pc;
+
+//LED Blink
+DigitalOut line11(P0_9);
+DigitalOut line13(P0_2);
+DigitalOut line14(P1_28);
+
+Blinker yellowLED(LED1), redLED(LED2), greenLED(LED3), blueLED(LED4);
+
+//USBSerial pc;
+SDFileSystem sd(P1_22, P1_21, P1_20, P1_23, "sd"); // the pinout on the /Arch GPRS v2 mbed board.
+char filename[60];
+
+//RTC
+DS1307 rtc(SDA,SCL);
+int sec, minute, hours, day, date, month, year;
+char timestamp[17];
+
+//variables for reading data from SD card
+char APIKey[17];
+char sensors[3][5];
+char sensorBuff[5];
+int tempField, humField, lightField;
+int field1, field2, field3;
+int numSensors;
+bool tempSensorflag=false, lightSensorflag=false, SomeotherSensorflag=false;
+
+//GPRS setup
+GPRSInterface gprs(PIN_TX,PIN_RX,115200,"internetd.gdsp",NULL,NULL);
+HTTPClient http;
+char* thingSpeakUrl = "http://api.thingspeak.com/update";
+char urlBuffer[256];
+char str[1024];
+//char errorR[1024];
+string errorR;
+
+//Sensors
+//DHT sensor(P1_14,SEN51035P);
+DHT sensor(P1_14,SEN11301P); //grove connected DHT22
+AnalogIn lightSensor(P0_12); //TEMT6000 sparkfun break out board ambient light sensor
+
+int tempData,humData, lightData; //variables to hold enviroment
+
+//method to connect GPRS to the network
+//@return true if successful, false if failed
+bool connectGPRS(void) {
+ iot_hw.init(); // power on SIM900
+ int count = 0;
+ while(false == gprs.connect() && count < 5) {
+ wait(2);
+ count += 1;
+ }
+ if (count != 5) return true; // success!
+ else return false; //failed
+}
+
+//method to collect temperature and humidity
+//using grove DHT22 sensors connected to P1_14, P1_13
+void getTempHumid(int* tempData,int* humData){
+ int err = 1;
+ int count = 0;
+ iot_hw.grovePwrOn(); // power on grove pins
+ wait(1); // wait 1 second for device stable status
+ while (err != 0 && count < 4) {
+ err = sensor.readData();
+ count += 1;
+ *tempData = sensor.ReadTemperature(FARENHEIT);
+ *humData = sensor.ReadHumidity();
+ wait(1);
+ }
+ iot_hw.grovePwrOff(); //power down grove pins
+}
+
+//method to collect light level data
+//using TEMT6000 sparkfun breakout board
+void getLightReading(int* lightData)
+{
+ *lightData = lightSensor*1000;
+}
+
+
+int ReadFile (void) {
+ mkdir("/sd", 0777); // All other times open file in append mode
+ FILE *fp = fopen("/sd/config.txt","r");
+ if (fp==NULL) {
+ fclose(fp);
+ return 0;
+
+ } else if (fp) {
+ //fscanf(fp,"%16c %d %s %s", APIKey, &numSensors, sensors[0],sensors[1]);
+ fscanf(fp,"%16c",APIKey);
+
+// pc.printf("APIKEY= %s\r\n",APIKey);
+//
+ fscanf(fp,"%d",&numSensors);
+// pc.printf("number of sensors = %d \r\n",numSensors);
+//
+ for (int i = 0; i<numSensors;i=i+1) {
+ fscanf(fp,"%s",sensors[i]);
+ //fscanf(fp,"%s",sensorBuff);
+ strcpy(sensors[i],sensorBuff);
+ //pc.printf("sensor %d = %s\r\n",i,sensors[i]);
+ }
+
+
+ fclose(fp);
+ return 1;
+
+ } else {
+ fclose(fp);
+ return 0;
+ }
+
+}
+
+bool stringComparison (const char *string1, const char *string2) {
+ int count = 0;
+ while (string1[count] != 0) {
+ if (string1[count] != string2[count])
+ return false;
+ count++;
+ }
+ return true;
+}
+
+
+//method to send 1 field of data to ThingsSpeak
+//blinks green 5 times if successful
+//blinks red 5 times if get statement fails
+//blinks red 10 times if fails to connectGPRS
+void sendData1(int sensor1Data, int field1)
+{
+ if (connectGPRS() == true) { //connect is success
+ urlBuffer[0] = 0;
+ sprintf(urlBuffer, "%s?key=%s&field%d=%d", thingSpeakUrl, APIKey, field1, sensor1Data); //create url
+ HTTPResult res = http.get(urlBuffer, str,128); //send get request
+ if (res != HTTP_OK) redLED.blink(5); //get statement failed blink red 5 times
+ else greenLED.blink(5); //get statement success blink green 5 times
+ iot_hw.init_io(); //power down SIM900
+
+ } else { //failed to connectGPRS
+ redLED.blink(10); //blink red 10 times
+ iot_hw.init_io(); //power down SIM900
+ }
+}
+
+//method to send 2 field of data to ThingsSpeak
+void sendData2(int sensor1Data, int field1, int sensor2Data, int field2)
+{
+ if (connectGPRS() == true) {
+ urlBuffer[0] = 0;
+ sprintf(urlBuffer, "%s?key=%s&field%d=%d&field%d=%d", thingSpeakUrl, APIKey, field1, sensor1Data, field2, sensor2Data); //create url
+ HTTPResult res = http.get(urlBuffer, str,128); //send get request
+ if (res != HTTP_OK) redLED.blink(5); //get statement failed blink red 5 times
+ else greenLED.blink(5); //get statement success bink green 5 times
+ iot_hw.init_io(); //power down SIM900
+ } else {
+ redLED.blink(10); //blink red 10 times
+ iot_hw.init_io(); //power down SIM900
+ }
+}
+
+//method to send 3 field of data to ThingsSpeak
+void sendData3(int sensor1Data, int field1, int sensor2Data, int field2, int sensor3Data, int field3)
+{
+ if (connectGPRS() == true) {
+ urlBuffer[0] = 0;
+ sprintf(urlBuffer, "%s?key=%s&field%d=%d&field%d=%d&field%d=%d", thingSpeakUrl, APIKey, field1, sensor1Data, field2, sensor2Data, field3, sensor3Data); //create url to send
+ HTTPResult res = http.get(urlBuffer, str,128); //send get request
+ if (res != HTTP_OK) redLED.blink(5); //get statement failed blink red 5 times
+ else greenLED.blink(5); //get statemnet success blink green 5 times
+ iot_hw.init_io(); //power down SIM900
+ } else {
+ redLED.blink(10); //blink red 10 times
+ iot_hw.init_io(); //power down SIM900
+ }
+}
+
+//void errorWrite(const char* errorReport) {
+void errorWrite(string errorReport) {
+ rtc.gettime( &sec, &minute, &hours, &day, &date, &month, &year); //get time from RTC
+ sprintf(timestamp,"20%.2d-%.2d-%.2d %.2d:%.2d:%.2d", year, month, date, hours, minute, sec); // create timmestamp
+
+ mkdir("/sd", 0777);
+ FILE *fp = fopen("/sd/ErrorLog.txt","a");
+ if (fp == NULL) {
+ blueLED.blink(10); //no sd card blink blue 10 times
+ } else {
+ //pc.printf("%s: %s \r\n",timestamp,errorReport);
+ fprintf(fp,"%s: %s \r\n",timestamp,errorReport);
+ fclose(fp);
+ blueLED.blink(5);
+ }
+}
+
+//writes data to SDcard for 1 field
+//if no SDcard blink blue 10 times
+void sdWrite1(int sensor1Data)
+{
+ rtc.gettime( &sec, &minute, &hours, &day, &date, &month, &year); //get time from RTC
+ sprintf(timestamp,"20%.2d-%.2d-%.2d %.2d:%.2d:%.2d", year, month, date, hours, minute, sec); //create time stamp
+
+ mkdir("/sd", 0777);
+ FILE *fp = fopen("/sd/node1.csv","a");
+ if (fp == NULL) {
+ blueLED.blink(10); //no sd Card blink Blue 10 times
+ } else {
+ fprintf(fp,"%s, %d \r\n",timestamp,sensor1Data); //write time stamp and data to microSD
+ fclose(fp);
+ }
+}
+
+//writes data to SDcard for 2 fields
+//if no SDcard blink blue 10 times
+void sdWrite2(int sensor1Data, int sensor2Data)
+{
+ rtc.gettime( &sec, &minute, &hours, &day, &date, &month, &year); //get time from RTC
+ sprintf(timestamp,"20%.2d-%.2d-%.2d %.2d:%.2d:%.2d", year, month, date, hours, minute, sec); //create timestamp
+
+ mkdir("/sd", 0777);
+ FILE *fp = fopen("/sd/node1.csv","a");
+ if (fp == NULL) {
+ blueLED.blink(10); //no sd Card blink blue 10 times
+ } else {
+ fprintf(fp,"%s, %d, %d\r\n",timestamp, sensor1Data, sensor2Data); //write timestamp+data to SD
+ fclose(fp);
+ }
+}
+
+//writes data to SDcard for 3 fields
+//if no SDcard blink blue 10 times
+void sdWrite3(int sensor1Data, int sensor2Data,int sensor3Data)
+{
+ rtc.gettime( &sec, &minute, &hours, &day, &date, &month, &year); //get time from RTC
+ sprintf(timestamp,"20%.2d-%.2d-%.2d %.2d:%.2d:%.2d", year, month, date, hours, minute, sec); //create timestamp
+
+ mkdir("/sd", 0777);
+ FILE *fp = fopen("/sd/node1.csv","a");
+ if (fp == NULL) {
+ blueLED.blink(10); //no sd card blink blue 10 times
+ } else {
+ fprintf(fp,"%s, %d, %d, %d\r\n",timestamp, sensor1Data, sensor2Data, sensor3Data); //write timestamp+data to sd
+ fclose(fp);
+ }
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+int main() {
+ wdt_sleep.wdtClkSetup(WDTCLK_SRC_IRC_OSC); //set up sleep
+
+
+
+ //test of breadboard
+// while (1) {
+// //rtc test
+// errorR="Test rtc";
+// rtc.gettime( &sec, &minute, &hours, &day, &date, &month, &year);
+// sprintf(timestamp,"20%.2d-%.2d-%.2d %.2d:%.2d:%.2d", year, month, date, hours, minute, sec);
+// pc.printf("%s: %s\r\n",timestamp,errorR);
+//
+// //rgb test
+// int n=5;
+// int t=1;
+// pc.printf("line11 blink\r\n");
+// for (int i = 0; i < n; i++) {
+// line11 = 1;
+// wait(t);
+// line11 = 0;
+// wait(t);
+// }
+//
+// pc.printf("line13 blink\r\n");
+//
+// for (int i = 0; i < n; i++) {
+// line13 = 1;
+// wait(t);
+// line13 = 0;
+// wait(t);
+// }
+//
+// pc.printf("line11 blink\r\n");
+//
+// for (int i = 0; i < n; i++) {
+// line14 = 1;
+// wait(t);
+// line14 = 0;
+// wait(t);
+// }
+// //light sensor test
+// getLightReading(&lightData);
+// pc.printf("light reading: %d \r\n",lightData);
+//
+// wait(15);
+// }
+
+
+ //read SD card
+ while (ReadFile()==0) {
+ wait(5);
+ redLED.blink(10);
+ }
+ greenLED.blink(10);
+
+
+ //identify sensors and find order of fields
+ int field=1;
+ for (int i=0;i<numSensors;i=i+1) {
+ if (stringComparison(sensors[i],"temp")==true) {
+ tempSensorflag=true;
+ tempField=field;
+ humField=field+1;
+ field=field+1;
+ } else if (stringComparison(sensors[i],"light")==true) {
+ lightSensorflag=true;
+ lightField=field;
+ } else if (stringComparison(sensors[i],"some other sensor")==true) {
+ SomeotherSensorflag=true;
+ }
+ field=field+1;
+ }
+
+ //set up CSV file
+ mkdir("/sd", 0777);
+ rtc.gettime( &sec, &minute, &hours, &day, &date, &month, &year);
+ sprintf(filename,"/sd/DataLog_20%.2d.%.2d.%.2d_%.2d.%.2d.csv",year, month, date, hours, minute);
+ FILE *fp = fopen(filename,"a");
+ if (fp == NULL) {
+ //no sd card
+ redLED.blink(10);
+ } else {
+
+ //print header
+ fprintf(fp,"Timestamp, sensor1, sensor2 \r\n");
+ fclose(fp);
+ blueLED.blink(5);
+ }
+
+ //Debug Mode
+ for (int dd=0;dd<30;dd=dd+1) {
+
+ if (numSensors == 3) {
+
+ } else if (numSensors ==2) {
+ if (tempSensorflag==true) {
+ if (lightSensorflag==true) {
+ getLightReading(&lightData);
+ getTempHumid(&tempData,&humData);
+ sendData3(tempData,tempField,humData,humField,lightData,lightField);
+ sdWrite3(tempData,humData,lightData);
+ } else if (SomeotherSensorflag==true) {
+
+ }
+ } else if (lightSensorflag==true) {
+ if (SomeotherSensorflag==true) {
+ getLightReading(&lightData);
+
+
+ }
+ }
+ } else {
+ if (tempSensorflag==true) {
+ getTempHumid(&tempData,&humData);
+ sendData2(tempData,tempField,humData,humField);
+ sdWrite2(tempData,humData);
+ } else if (lightSensorflag==true) {
+ getLightReading(&lightData);
+ sendData1(lightData,lightField);
+ sdWrite1(lightData);
+ } else if (SomeotherSensorflag==true) {
+
+ }
+ }
+ wait(30);
+ }
+
+
+
+
+
+ //normal mode
+ while (1) {
+
+ if (numSensors == 3) {
+
+ } else if (numSensors ==2) {
+ if (tempSensorflag==true) {
+ if (lightSensorflag==true) {
+ getLightReading(&lightData);
+ getTempHumid(&tempData,&humData);
+ sendData3(tempData,tempField,humData,humField,lightData,lightField);
+ sdWrite3(tempData,humData,lightData);
+ } else if (SomeotherSensorflag==true) {
+
+ }
+ } else if (lightSensorflag==true) {
+ if (SomeotherSensorflag==true) {
+ getLightReading(&lightData);
+
+
+ }
+ }
+ } else {
+ if (tempSensorflag==true) {
+ getTempHumid(&tempData,&humData);
+ sendData2(tempData,tempField,humData,humField);
+ sdWrite2(tempData,humData);
+ } else if (lightSensorflag==true) {
+ getLightReading(&lightData);
+ sendData1(lightData,lightField);
+ sdWrite1(lightData);
+ } else if (SomeotherSensorflag==true) {
+
+ }
+ }
+ wdt_sleep.sleep(BROADCAST_TIME);
+
+ }
+}
\ No newline at end of file
