/** * @breaf read the temperature on analog pins (10K termistor) and send sms with * teaded temperature * * @param smsc_nr: sms center number * nrtel: number hu recive sms */ static void StareTMP(char *smsc_nr, char *nrtel) { char mesage[64]; char buffer[18]; char tmpe[32]; memset(mesage, 0, sizeof(mesage)); memset(buffer, 0, sizeof(buffer)); memset(tmpe, 0, sizeof(tmpe)); int tmp, tmp1, tmp2; tmp = Thermistor(PC0); _delay_ms(30); tmp1 = Thermistor(PC0); _delay_ms(30); tmp2 = Thermistor(PC0); tmp = (tmp + tmp1 + tmp2) / 3; ReadEprom(buffer, 288); //18 * 16 if (strlen(buffer) != 0) { sprintf(tmpe, "%s: %d %s", buffer, tmp, "C\r\n"); strcat(mesage, tmpe); } tmp = Thermistor(PC1); _delay_ms(30); tmp1 = Thermistor(PC1); _delay_ms(30); tmp2 = Thermistor(PC1); tmp = (tmp + tmp1 + tmp2) / 3; ReadEprom(buffer, 306); //18 * 17 if (strlen(buffer) != 0) { sprintf(tmpe, "%s: %d %s", buffer, tmp, "C\r\n"); strcat(mesage, tmpe); } tmp = Thermistor(PC2); _delay_ms(30); tmp1 = Thermistor(PC2); _delay_ms(30); tmp2 = Thermistor(PC2); tmp = (tmp + tmp1 + tmp2) / 3; ReadEprom(buffer, 324); //18 * 18 if (strlen(buffer) != 0) { sprintf(tmpe, "%s: %d %c", buffer, tmp, 'C'); strcat(mesage, tmpe); } if (strlen(mesage) != 0) uart_sendsms(smsc_nr, nrtel, mesage); }
void StareTMP(char *nrtel) { char mesage[120]; char buffer[18]; char tmpe[32]; int tmp, tmp1, tmp2; tmp = Thermistor(PC0); delay(10); tmp1 = Thermistor(PC0); delay(10); tmp2 = Thermistor(PC0); tmp = (tmp + tmp1 + tmp2) / 3; ReadEprom(buffer, 18 * 18); if (strlen(buffer) != 0) { sprintf(tmpe, " %s: %d %s", buffer, tmp, "C\r\n"); strcat(mesage, tmpe); } tmp = Thermistor(PC1); delay(10); tmp1 = Thermistor(PC1); delay(10); tmp2 = Thermistor(PC1); tmp = (tmp + tmp1 + tmp2) / 3; ReadEprom(buffer, 18 * 19); if (strlen(buffer) != 0) { sprintf(tmpe, " %s: %d %s", buffer, tmp, "C\r\n"); strcat(mesage, tmpe); } tmp = Thermistor(PC2); delay(10); tmp1 = Thermistor(PC2); delay(10); tmp2 = Thermistor(PC2); tmp = (tmp + tmp1 + tmp2) / 3; ReadEprom(buffer, 18 * 20); if (strlen(buffer) != 0) { sprintf(tmpe, " %s: %d %c", buffer, tmp, 'C'); strcat(mesage, tmpe); } if (strlen(mesage) != 0) SendSms(nrtel, mesage); }
void sendSensorsDataXML() { /* Send the header directly with print */ wifly.println(F("HTTP/1.1 200 OK")); wifly.println(F("Content-Type: text/xml")); wifly.println(F("Transfer-Encoding: chunked")); wifly.println(); /* Send the body using the chunked protocol so the client knows when * the message is finished. */ wifly.sendChunkln(F("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")); wifly.sendChunkln(F("<datacollector>")); snprintf_P(wbuf, sizeof(wbuf), PSTR("<dcid>%s</dcid>"), macaddr); wifly.sendChunkln(wbuf); wifly.sendChunkln(F("<geoloc>")); int ind; char scanbufcpy[500]; strncpy(scanbufcpy, scanbuf, 500); char *ap, *oap; char *apdesctok, *apdesc; ap = strtok_r(scanbufcpy, "|", &oap); while(ap != NULL) { wifly.sendChunkln(F("<ap>")); ind = 0; apdesctok = strtok_r(ap, " ", &apdesc); while(apdesctok != NULL) { ind++; switch(ind) { case 3: snprintf_P(wbuf, sizeof(wbuf), PSTR("<channel>%s</channel>"), apdesctok); wifly.sendChunkln(wbuf); break; case 4: snprintf_P(wbuf, sizeof(wbuf), PSTR("<rssi>%s</rssi>"), apdesctok); wifly.sendChunkln(wbuf); break; case 6: snprintf_P(wbuf, sizeof(wbuf), PSTR("<mac>%s</mac>"), apdesctok); wifly.sendChunkln(wbuf); break; default: ; } apdesctok = strtok_r(NULL, " ", &apdesc); } wifly.sendChunkln(F("</ap>")); //Serial.println(); ap = strtok_r(NULL, "|", &oap); } wifly.sendChunkln(F("</geoloc>")); wifly.sendChunkln(F("<sensors>")); /* Include readings from Analog pins */ dtostrf(Thermistor(analogRead(ThermistorPIN)), 5,2, convbuf); snprintf_P(wbuf, sizeof(wbuf), PSTR("<sensor><type>temp</type><value>%s</value></sensor>"), convbuf); #ifdef DEBUG Serial.println(wbuf); #endif wifly.sendChunkln(wbuf); dtostrf(Photoresistor(analogRead(PhotoresistorPIN)), 5,2, convbuf); snprintf_P(wbuf, sizeof(wbuf), PSTR("<sensor><type>light</type><value>%s</value></sensor>"), convbuf); #ifdef DEBUG Serial.println(wbuf); #endif wifly.sendChunkln(wbuf); sprintf(convbuf,"NA"); snprintf_P(wbuf, sizeof(wbuf), PSTR("<sensor><type>humidity</type><value>%s</value></sensor>"), convbuf); #ifdef DEBUG Serial.println(wbuf); #endif wifly.sendChunkln(wbuf); sprintf(convbuf,"NA"); snprintf_P(wbuf, sizeof(wbuf), PSTR("<sensor><type>pressure</type><value>%s</value></sensor>"), convbuf); #ifdef DEBUG Serial.println(wbuf); #endif wifly.sendChunkln(wbuf); wifly.sendChunkln(F("</sensors>")); wifly.sendChunkln(F("</datacollector>")); wifly.sendChunkln(); }
void sendSensorValues(){ // Using the following protocol defined by Francis Papineau in conjunction with Thai Nguyen: // -> "!Lig:00.00Tem:00.00ECG:00.00POT:00.00BAT:00.00IRL:00.00LOW:00.00RES:00.00ArT:00.00\n" // The system then reads values to send via the Serial port defined. // The header for the receiving end of the Serial Network HOSTXbee.print("!"); // The Light value HOSTXbee.print("Lig:"); tempLight = analogRead(Light); HOSTXbee.print(tempLight); // The tympanic temperature HOSTXbee.print("Tem:"); temp = getTermocoupleValue(); HOSTXbee.print(temp); // The ECG Voltage Level HOSTXbee.print("ECG:"); tempECG = analogRead(ECG); HOSTXbee.print(tempECG); // The SPO2 Base Measurement using Red Light (approx. 620nm) // The measurment is done between a flikr of the LED HOSTXbee.print("POT:"); // LED ON digitalWrite(redLED, HIGH); tempRed = pulseIn(PulseOx, HIGH); HOSTXbee.print(tempRed); // LED OFF digitalWrite(redLED, LOW); // The Battery Voltage Level HOSTXbee.print("BAT:"); tempBat = analogRead(Battery); HOSTXbee.print(tempBat); // The SPO2 Measurment using IR Light (approx. 960nm) // The measurment is done between a flikr of the LED HOSTXbee.print("IRL:"); // LED ON digitalWrite(irLED, HIGH); tempIr = pulseIn(PulseOx, HIGH); HOSTXbee.print(tempIr); // LED OFF digitalWrite(irLED, LOW); // The SPO2 Measurement using Ambient Light // -> this is used in a proprietary algorithm to cancel // the effect of ambient light in the SPO2 measurement HOSTXbee.print("LOW:"); tempError = pulseIn(PulseOx, HIGH); HOSTXbee.print(tempError); // The Respiration sensor measurments HOSTXbee.print("RES:"); tempRESP = analogRead(Resp); HOSTXbee.print(tempRESP); // The Ambient Temperature Reading HOSTXbee.print("ArT:"); AmbientTemp = Thermistor(analogRead(AmbTemp)); HOSTXbee.print(AmbientTemp); // The Checksum Character. HOSTXbee.print("\n"); // Make sure the signals got sent delay(10); }