
Using DHT11 sensor, sdWrite, wdt. Need to sleep more then this.
Dependencies: DHT GPRSInterface HTTPClient_GPRS SDFileSystem USBDevice mbed
roam_v1.cpp
00001 /** Seed Team 20 - Michael Zonnenberg 00002 Board: Arch GPRS V2 00003 Sensors: DHT11 temp&humidity 00004 */ 00005 00006 #include "mbed.h" 00007 #include "DHT.h" 00008 #include "SDFileSystem.h" 00009 #include "GPRSInterface.h" 00010 #include "HTTPClient.h" 00011 #include "ARCH_GPRS_Sleep.h" 00012 00013 00014 //LED Blink Functions 00015 DigitalOut yellowled(LED1); 00016 DigitalOut redled(LED2); 00017 DigitalOut greenled(LED3); 00018 DigitalOut blueled(LED4); 00019 void blinkYELLOW(void){ 00020 yellowled = 1; 00021 wait(0.5); 00022 yellowled = 0; 00023 wait(0.5); 00024 yellowled = 1; 00025 wait(0.5); 00026 yellowled = 0; 00027 wait(0.5); 00028 } 00029 void blinkRED(void){ 00030 redled = 1; 00031 wait(0.5); 00032 redled = 0; 00033 wait(0.5); 00034 redled = 1; 00035 wait(0.5); 00036 redled = 0; 00037 wait(0.5); 00038 } 00039 void blinkBLUE(void){ 00040 blueled = 1; 00041 wait(0.5); 00042 blueled = 0; 00043 wait(0.5); 00044 blueled = 1; 00045 wait(0.5); 00046 blueled = 0; 00047 wait(0.5); 00048 } 00049 void blinkGREEN(void){ 00050 greenled = 1; 00051 wait(0.5); 00052 greenled = 0; 00053 wait(0.5); 00054 greenled = 1; 00055 wait(0.5); 00056 greenled = 0; 00057 wait(0.5); 00058 } 00059 00060 00061 00062 #define PIN_PWR P1_2 //power up gprs module 00063 #define PIN_PWR_KEY P1_7 00064 #define PIN_TX P1_27 00065 #define PIN_RX P1_26 00066 DigitalOut power(PIN_PWR); 00067 DigitalOut powerKey(PIN_PWR_KEY); 00068 void gprsPowerUp(void) 00069 { 00070 power = 1; 00071 wait(2); 00072 power = 0; 00073 wait(2); 00074 00075 powerKey = 0; 00076 wait(1); 00077 powerKey = 1; 00078 wait(2); 00079 powerKey = 0; 00080 wait(3); 00081 } 00082 void gprsPowerDown(void) 00083 { 00084 power = 1; 00085 wait(2); 00086 power = 0; 00087 wait(2); 00088 } 00089 00090 #define TEST_HTTP_GET 1 00091 #define TEST_HTTP_POST 1 00092 #define TEST_HTTP_PUT 1 00093 #define TEST_HTTP_DELETE 1 00094 00095 #define TS_FEED_ID 25152 00096 #define TS_API "QY931S2NP23LG9IM" 00097 00098 char* thingSpeakUrl = "http://api.thingspeak.com/update"; 00099 char* thingSpeakKey = "QY931S2NP23LG9IM"; 00100 char urlBuffer[256]; 00101 char timeBuffer[64]; 00102 char str[1024]; 00103 GPRSInterface gprs(PIN_TX,PIN_RX,115200,"internetd.gdsp",NULL,NULL); 00104 HTTPClient http; 00105 00106 /** 00107 Function sends args to thingskpeak 00108 @param temperature The temperaure measurment from sensor 00109 @param humidity The humidity measurment from sensor 00110 */ 00111 void sendToThingSpeak(float temperature, float humidity){ 00112 //turn on cellular module 00113 gprsPowerUp(); 00114 00115 gprs.init(); 00116 00117 int count = 0; 00118 while(false == gprs.connect() && count < 5) { 00119 wait(2); 00120 count += 1; 00121 } 00122 00123 // format url here 00124 urlBuffer[0] = 0; 00125 sprintf(urlBuffer, "%s?key=%s&field1=%f&field2=%f", thingSpeakUrl, thingSpeakKey, temperature, humidity); 00126 00127 // send request 00128 HTTPResult res = http.get(urlBuffer, str,128); 00129 // and verify the result 00130 if (res != HTTP_OK) { 00131 blinkRED(); 00132 } else { 00133 blinkGREEN(); 00134 } 00135 gprsPowerDown(); 00136 } 00137 00138 /** 00139 Function sends args to thingskpeak 00140 @return temp and humid values from DHT11 sensor 00141 */ 00142 DHT sensor(P1_14, DHT11); 00143 DigitalOut POWER(P1_3); //drive low to activate pins 00144 void getTempHumid(float* temp, float* humid){ 00145 int err = 1; 00146 wait(1); // wait 1 second for device stable status 00147 POWER.write(0); 00148 while (err != 0) { 00149 err = sensor.readData(); 00150 *temp = sensor.ReadTemperature(FARENHEIT); 00151 *humid = sensor.ReadHumidity(); 00152 wait(1); 00153 } 00154 } 00155 00156 /** 00157 Function writes data to sd card (comma seperated) 00158 @param temperature The temperaure measurment from sensor 00159 @param humidity The humidity measurment from sensor 00160 */ 00161 SDFileSystem sd(P1_22, P1_21, P1_20, P1_23, "sd"); // the pinout on the /Arch GPRS v2 mbed board. 00162 void sdWrite(double temp, double humid) 00163 { 00164 mkdir("/sd", 0777); // All other times open file in append mode 00165 FILE *fp = fopen("/sd/node1.csv","a"); 00166 fprintf(fp,"%4.2f, %4.2f\r\n",temp, humid); 00167 fclose(fp); 00168 blinkBLUE(); 00169 } 00170 00171 /////////////////////////////////////////////////////////////////////// 00172 #define BROADCAST_TIME 25 //sleep time 00173 float temp,humid; 00174 00175 int main(){ 00176 00177 wdt_sleep.wdtClkSetup(WDTCLK_SRC_IRC_OSC); 00178 00179 PWRON: 00180 // get temp and humidity 00181 getTempHumid(&temp, &humid); 00182 00183 sdWrite(temp, humid); 00184 00185 // send data to ThingSpeak.com 00186 sendToThingSpeak(temp, humid); 00187 00188 //sleep 00189 wdt_sleep.sleep(BROADCAST_TIME); 00190 00191 //wake 00192 goto PWRON; 00193 00194 00195 00196 }
Generated on Thu Jul 14 2022 23:53:26 by
