Advertisement
AlexShu

esp8266 Thingspeak Demo 1

May 25th, 2015
331
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.73 KB | None | 0 0
  1. #include <SoftwareSerial.h>
  2.  
  3. SoftwareSerial esp(10, 11); // RX, TX
  4.  
  5.  char buffer[25]; // DO NOT TOUCH THIS
  6. int proStep = 1;  // DO NOT TOUCH THIS
  7.  
  8.  
  9. #define BUFFER_SIZE 512  // DO NOT TOUCH THIS
  10. char serialbuffer[BUFFER_SIZE];  // DO NOT TOUCH THIS
  11.  
  12.  
  13. void setup()
  14. {
  15.  
  16.   Serial.begin(9600);  // DO NOT TOUCH THIS
  17.  /*    while (!Serial) {
  18.     ; // wait for serial port to connect. Needed for Leonardo only
  19.   }*/
  20.     esp.begin(9600);  // DO NOT TOUCH THIS
  21.  
  22.  
  23. pinMode(13, OUTPUT);
  24. pinMode(3, OUTPUT);
  25. }
  26.  
  27.  
  28. void loop(){
  29.  
  30. sensorValue = analogRead(sensor);
  31.  
  32.  // DO NOT TOUCH THIS
  33. int result = 0;
  34. do {
  35. result =  updateServer();
  36. }while ( result == 0);
  37.  
  38.   delay(10000);
  39.  
  40. }
  41.  
  42. int updateServer(){
  43.  
  44.  
  45.     String get = "GET /update?key=####KEY####&field1=";               // THE POST REQUEST ####CHANGE THIS####
  46.                      get = get + String(sensorValue);
  47.                      get = get + " HTTP/1.1\r\nHost: api.thingspeak.com\r\n\r\n";
  48.                      String len =   "AT+CIPSEND=";
  49.                      int lenght = get.length() +1;
  50.                      len = len + lenght;
  51.                      
  52.   switch (proStep){
  53.     case 0:
  54.     resetWifi();
  55.     delay(7000);
  56.     proStep++;
  57.  
  58.   break;
  59.        case 1:
  60.         sendD("AT+CWMODE=1");
  61.       if (wait_for_esp_response(5000, "OK")){
  62.       Serial.println("OK");
  63.       proStep++;
  64.   } else {
  65.     Serial.println("FAIL!! Restarting...");
  66.         delay(1000);
  67.         proStep=0;
  68.   }
  69.   break;
  70.          case 2:
  71.   sendD("AT+CIPMUX=0");
  72.  
  73.     if (wait_for_esp_response(5000, "OK")){
  74.   Serial.println("OK");
  75.     proStep++;
  76.   } else {
  77.     Serial.println("FAIL!! Restarting...");
  78.         delay(1000);
  79.         proStep=0;
  80.   }
  81.   break;
  82.            case 3:
  83.   sendD("AT+CWJAP=\"SSID\",\"PASSWORD\"");       //CHANGE THIS !!!
  84.  
  85.     if (wait_for_esp_response(10000, "OK")){
  86.   Serial.println("OK");
  87.     proStep++;
  88.   } else {
  89.     Serial.println("FAIL!! Restarting...");
  90.         delay(1000);
  91.         proStep=0;
  92.   }
  93.   break;
  94.              case 4:
  95.   sendD("AT+CIPSTART=\"TCP\",\"184.106.153.149\",80");  // THINGSPEAK.COM IP ADDRESS
  96.     if (wait_for_esp_response(5000, "OK")){
  97.   Serial.println("OK");
  98.     proStep++;
  99.   } else {
  100.     Serial.println("FAIL!! Restarting...");
  101.         delay(1000);
  102.         proStep=4;
  103.   }
  104.   break;
  105.                case 5:
  106.  
  107.   sendD(len);
  108.  
  109.     if (wait_for_esp_response(5000, ">")){
  110.   Serial.print("OK > ");
  111.     proStep++;
  112.   } else {
  113.     Serial.println("FAIL!! Restarting...");
  114.         delay(1000);
  115.         proStep=0;
  116.   }
  117.   break;
  118.    case 6:
  119.            
  120.   sendD(get);
  121.     if (wait_for_esp_response(15000, "SEND OK")){        // MAY NEED TO REPLACE "SERVER OK" with some other message
  122.     Serial.println("Data Inserted into database");
  123.           proStep=0;
  124.           return 1;
  125.     } else {
  126.        Serial.println("Failed");
  127.     }
  128.      proStep=0;
  129.   break;
  130.   }
  131.    return 0;
  132. }
  133.  
  134. void sendD(String cmd){
  135.     Serial.print("SEND: ");
  136.   Serial.println(cmd);
  137.   esp.println(cmd);
  138. }
  139.  
  140. void resetWifi(){                          // MAY NEED TO EDIT THE RESET PART
  141.       Serial.println("Module Reset");
  142. /*  digitalWrite(3,LOW);
  143.  
  144.   delay(100);
  145.   digitalWrite(3,HIGH);*/
  146.   sendD("AT+RST");
  147. }
  148.  
  149. byte wait_for_esp_response(int timeout, char* term) {
  150.   unsigned long t=millis();
  151.   bool found=false;
  152.   int i=0;
  153.   int len=strlen(term);
  154.   // wait for at most "timeout" milliseconds
  155.   // or if OK\r\n is found
  156.   while(millis()<t+timeout) {
  157.     if(esp.available()) {
  158.       serialbuffer[i++]=esp.read();
  159.       if(i>=len) {
  160.         if(strncmp(serialbuffer+i-len, term, len)==0) {
  161.           found=true;
  162.           break;
  163.         }
  164.       }
  165.     }
  166.   }
  167.   serialbuffer[i]=0;
  168.   Serial.println(serialbuffer);
  169.   return found;
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement