Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SoftwareSerial.h>
- SoftwareSerial esp(10, 11); // RX, TX
- char buffer[25]; // DO NOT TOUCH THIS
- int proStep = 1; // DO NOT TOUCH THIS
- #define BUFFER_SIZE 512 // DO NOT TOUCH THIS
- char serialbuffer[BUFFER_SIZE]; // DO NOT TOUCH THIS
- void setup()
- {
- Serial.begin(9600); // DO NOT TOUCH THIS
- /* while (!Serial) {
- ; // wait for serial port to connect. Needed for Leonardo only
- }*/
- esp.begin(9600); // DO NOT TOUCH THIS
- pinMode(13, OUTPUT);
- pinMode(3, OUTPUT);
- }
- void loop(){
- sensorValue = analogRead(sensor);
- // DO NOT TOUCH THIS
- int result = 0;
- do {
- result = updateServer();
- }while ( result == 0);
- delay(10000);
- }
- int updateServer(){
- String get = "GET /update?key=####KEY####&field1="; // THE POST REQUEST ####CHANGE THIS####
- get = get + String(sensorValue);
- get = get + " HTTP/1.1\r\nHost: api.thingspeak.com\r\n\r\n";
- String len = "AT+CIPSEND=";
- int lenght = get.length() +1;
- len = len + lenght;
- switch (proStep){
- case 0:
- resetWifi();
- delay(7000);
- proStep++;
- break;
- case 1:
- sendD("AT+CWMODE=1");
- if (wait_for_esp_response(5000, "OK")){
- Serial.println("OK");
- proStep++;
- } else {
- Serial.println("FAIL!! Restarting...");
- delay(1000);
- proStep=0;
- }
- break;
- case 2:
- sendD("AT+CIPMUX=0");
- if (wait_for_esp_response(5000, "OK")){
- Serial.println("OK");
- proStep++;
- } else {
- Serial.println("FAIL!! Restarting...");
- delay(1000);
- proStep=0;
- }
- break;
- case 3:
- sendD("AT+CWJAP=\"SSID\",\"PASSWORD\""); //CHANGE THIS !!!
- if (wait_for_esp_response(10000, "OK")){
- Serial.println("OK");
- proStep++;
- } else {
- Serial.println("FAIL!! Restarting...");
- delay(1000);
- proStep=0;
- }
- break;
- case 4:
- sendD("AT+CIPSTART=\"TCP\",\"184.106.153.149\",80"); // THINGSPEAK.COM IP ADDRESS
- if (wait_for_esp_response(5000, "OK")){
- Serial.println("OK");
- proStep++;
- } else {
- Serial.println("FAIL!! Restarting...");
- delay(1000);
- proStep=4;
- }
- break;
- case 5:
- sendD(len);
- if (wait_for_esp_response(5000, ">")){
- Serial.print("OK > ");
- proStep++;
- } else {
- Serial.println("FAIL!! Restarting...");
- delay(1000);
- proStep=0;
- }
- break;
- case 6:
- sendD(get);
- if (wait_for_esp_response(15000, "SEND OK")){ // MAY NEED TO REPLACE "SERVER OK" with some other message
- Serial.println("Data Inserted into database");
- proStep=0;
- return 1;
- } else {
- Serial.println("Failed");
- }
- proStep=0;
- break;
- }
- return 0;
- }
- void sendD(String cmd){
- Serial.print("SEND: ");
- Serial.println(cmd);
- esp.println(cmd);
- }
- void resetWifi(){ // MAY NEED TO EDIT THE RESET PART
- Serial.println("Module Reset");
- /* digitalWrite(3,LOW);
- delay(100);
- digitalWrite(3,HIGH);*/
- sendD("AT+RST");
- }
- byte wait_for_esp_response(int timeout, char* term) {
- unsigned long t=millis();
- bool found=false;
- int i=0;
- int len=strlen(term);
- // wait for at most "timeout" milliseconds
- // or if OK\r\n is found
- while(millis()<t+timeout) {
- if(esp.available()) {
- serialbuffer[i++]=esp.read();
- if(i>=len) {
- if(strncmp(serialbuffer+i-len, term, len)==0) {
- found=true;
- break;
- }
- }
- }
- }
- serialbuffer[i]=0;
- Serial.println(serialbuffer);
- return found;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement