Advertisement
Guest User

Untitled

a guest
Jul 31st, 2012
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.26 KB | None | 0 0
  1. #include <OneWire.h>
  2. #include <DallasTemperature.h>
  3. #include <SoftwareSerial.h>
  4. #include <String.h>
  5. //#include "LowPower.h"
  6.  
  7. #define ONE_WIRE_BUS 8 // Data wire is pin 4 on the Arduino
  8. #define TEMPERATURE_PRECISION 9 // 9 bit precision corresponds to 0.5 degrees C resolution
  9.  
  10. // The period in milliseconds to wait in between reports. 1 hour = 1000 * 60 * 60 * 1
  11. //#define REPORT_INTERVAL 3600000
  12. #define REPORT_INTERVAL 60000
  13.  
  14. String SENSOR_ID="68161"; // Our ID for reports
  15. String COSM_API_KEY="aBUpZ_sy_SeTdiYGic-7m4fkGMOSAKxjd00xR1BFc3lkST0g";
  16. String APN="internet.cxn";
  17.  
  18. float waterTemp;
  19. float ambientTemp;
  20.  
  21. // Create a 1-Wire bus for the temp sensors to use
  22. OneWire oneWire(ONE_WIRE_BUS);
  23. DallasTemperature sensors(&oneWire);
  24.  
  25. // These device addresses were determined in advance by running some of the DallasTemperature library example code
  26. DeviceAddress waterSensor =   {0x28, 0x5E, 0x7A, 0x14, 0x04, 0x00, 0x00, 0x5B};
  27. DeviceAddress ambientSensor = {0x28, 0x6F, 0x35, 0x14, 0x04, 0x00, 0x00, 0x07};
  28.  
  29. // Used to save the last point in time that a report was sent
  30. unsigned long lastReportTime;
  31.  
  32. // Used to save the last point in time we took a temperature reading
  33. unsigned long lastTempSampleTime;
  34.  
  35. // Create a soft serial port on pins 7(RX) and 8(TX) for modem
  36. SoftwareSerial modem(7,8);
  37.  
  38. char incoming_char = 0;
  39.  
  40. unsigned char buffer[64]; // buffer array for data recieve over serial port
  41. int count=0;     // counter for buffer array
  42.  
  43. void ShowSerialData()
  44. {
  45.   while(modem.available()!=0)
  46.     Serial.write(modem.read());
  47. }
  48.  
  49. void powerUpOrDown(void)
  50. {
  51.   pinMode(9, OUTPUT);
  52.   digitalWrite(9,LOW);
  53.   delay(1000);
  54.   digitalWrite(9,HIGH);
  55.   delay(2000);
  56.   digitalWrite(9,LOW);
  57.   delay(10000);
  58. }
  59.  
  60. void sendToCosm()
  61. {    
  62.   modem.println("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
  63.   delay(500);
  64.  
  65.   ShowSerialData();
  66.  
  67.   modem.println("AT+SAPBR=3,1,\"APN\",\""+APN+"\"");
  68.   delay(500);
  69.  
  70.   ShowSerialData();
  71.  
  72.   modem.println("AT+SAPBR=1,1");
  73.   delay(5000);
  74.  
  75.   ShowSerialData();
  76.  
  77.   modem.println("AT+SAPBR=2,1");
  78.   delay(5000);
  79.  
  80.   ShowSerialData();
  81.  
  82.   modem.println("AT+HTTPINIT");
  83.   delay(200);
  84.  
  85.   ShowSerialData();
  86.  
  87.   modem.println("AT+HTTPPARA=\"CID\",1");
  88.   delay(200);
  89.  
  90.   ShowSerialData();
  91.  
  92.   modem.print("AT+HTTPPARA=\"URL\",");
  93.   delay(200);
  94.  
  95.   ShowSerialData();
  96.  
  97.   modem.print("\"http://api.cosm.com/v2/feeds/"+SENSOR_ID+".csv?");
  98.   delay(200);
  99.  
  100.   ShowSerialData();
  101.  
  102.   modem.println("_method=put&key="+COSM_API_KEY+"\"");
  103.   delay(200);
  104.  
  105.   ShowSerialData();
  106.  
  107.   modem.println("AT+HTTPDATA=28,3000");
  108.   delay(200);
  109.  
  110.   modem.print("Water,");
  111.   modem.println(waterTemp);
  112.   delay(200);
  113.  
  114.   ShowSerialData();
  115.  
  116.   modem.print("Air,");
  117.   modem.println(ambientTemp);
  118.   delay(200);
  119.  
  120.   ShowSerialData();
  121.  
  122.   modem.println("AT+HTTPACTION=1");
  123.   delay(200);
  124.  
  125.   ShowSerialData();
  126.  
  127.   modem.println("AT+HTTPTERM");
  128.   delay(5000);
  129.  
  130.   ShowSerialData();
  131.  
  132.   modem.println("AT+SAPBR=0,1");
  133.   delay(2000);
  134.  
  135.   ShowSerialData();
  136. }
  137.  
  138. void setup()
  139. {
  140.   // Start the serial ports
  141.   Serial.begin(9600);  
  142.   modem.begin(9600);
  143.  
  144.   Serial.println("I'm Alive");
  145.   // Start up the temperatue sensors
  146.   sensors.begin();
  147.  
  148.   // Set the resolution to use for measurement
  149.   sensors.setResolution(waterSensor, TEMPERATURE_PRECISION);
  150.   sensors.setResolution(ambientSensor, TEMPERATURE_PRECISION);
  151.  
  152.   lastReportTime = lastTempSampleTime = millis();
  153. }
  154.  
  155. void sampleTemps()
  156. {
  157.   // Get the temperatures from both sensors
  158.   sensors.requestTemperatures();
  159.   waterTemp = sensors.getTempC(waterSensor);
  160.   ambientTemp = sensors.getTempC(ambientSensor);
  161. }
  162.  
  163. void loop()
  164. {
  165.   //LowPower.idle(SLEEP_1S,ADC_OFF,TIMER2_OFF,TIMER1_OFF,TIMER0_ON,SPI_OFF,USART0_OFF,TWI_OFF);  
  166.   //LowPower.powerDown(SLEEP_1S,ADC_OFF,BOD_OFF);  
  167.  
  168.   unsigned long newReportTime = millis();
  169.  
  170.   // Or send a message if we have reached the report interval
  171.   if ((newReportTime - lastReportTime) > REPORT_INTERVAL)
  172.   {
  173.     lastReportTime = newReportTime;
  174.     Serial.println("Sending Report");
  175.     sampleTemps();
  176.     //powerUpOrDown();
  177.     sendToCosm();
  178.     //powerUpOrDown();
  179.     if (modem.available())
  180.       Serial.write(modem.read());
  181.   }
  182.   if (modem.available())
  183.     Serial.write(modem.read());  
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement