· 4 years ago · Jul 12, 2021, 02:36 PM
1#include <SoftwareSerial.h>
2#define RX 2
3#define TX 3
4String AP = "Internet Wifi Name"; // AP NAME
5String PASS = "Internet Wifi Password"; // AP PASSWORD
6String API = "YOUR API WRITE KEY"; // Write API KEY
7String HOST = "api.thingspeak.com";
8String PORT = "80";
9String field = "field1";
10int countTrueCommand;
11int countTimeCommand;
12boolean found = false;
13int valSensor = 1;
14SoftwareSerial esp8266(RX,TX);
15
16
17void setup() {
18 Serial.begin(9600);
19 esp8266.begin(115200);
20 sendCommand("AT",5,"OK");
21 sendCommand("AT+CWMODE=1",5,"OK");
22 sendCommand("AT+CWJAP=\""+ AP +"\",\""+ PASS +"\"",20,"OK");
23}
24
25void loop() {
26 valSensor = getSensorData();
27 String getData = "GET /update?api_key="+ API +"&"+ field +"="+String(valSensor);
28sendCommand("AT+CIPMUX=1",5,"OK");
29 sendCommand("AT+CIPSTART=0,\"TCP\",\""+ HOST +"\","+ PORT,15,"OK");
30 sendCommand("AT+CIPSEND=0," +String(getData.length()+4),4,">");
31 esp8266.println(getData);delay(1500);countTrueCommand++;
32 sendCommand("AT+CIPCLOSE=0",5,"OK");
33}
34
35int getSensorData(){
36 return random(1000); // Replace with your own sensor code
37}
38
39void sendCommand(String command, int maxTime, char readReplay[]) {
40 Serial.print(countTrueCommand);
41 Serial.print(". at command => ");
42 Serial.print(command);
43 Serial.print(" ");
44 while(countTimeCommand < (maxTime*1))
45 {
46 esp8266.println(command);//at+cipsend
47 if(esp8266.find(readReplay))//ok
48 {
49 found = true;
50 break;
51 }
52
53 countTimeCommand++;
54 }
55
56 if(found == true)
57 {
58 Serial.println("OYI");
59 countTrueCommand++;
60 countTimeCommand = 0;
61 }
62
63 if(found == false)
64 {
65 Serial.println("Fail");
66 countTrueCommand = 0;
67 countTimeCommand = 0;
68 }
69
70 found = false;
71 }