#include expects “FILENAME” or <FILENAME>
Ứng dụng IoT trong chăm sóc sức khỏe
sau khi mình đã bỏ tên vào rồi thì nó báo lỗi như vầy
unable to find string literal operator ‘operator""TCP’ with ‘const char [16]’, ‘unsigned int’ arguments
ở case 3
case 3: sendCommand("AT+CIPSTART=0,"TCP","+ HOST +","+ PORT,15,"OK"); break;
PhmKhnhTon Bạn viết + các chỗi bị sai. nếu trong 2 dấu ngoặc kém có dấu ngoặc kém thì dùng dấu \ để đặt ở trước nhé. ví dụ "abc\“def”
/*this is 100% working program just change your AP name pass and things speak password*/
#include <SoftwareSerial.h>
#define DEBUG true
#define RX 8
#define TX 7
String HOST = "api.thingspeak.com";
String PORT = "80";
String AP = "XXXX";//your AP name
String PASS = "XXXX"; //your AP password
String API = "XxxXPF**V6**OEIL";//your API
String field = "field1";
int countTrueCommand;
int countTimeCommand;
boolean found = false;
int valSensor = 1;
SoftwareSerial esp8266(RX, TX);
void setup() {
Serial.begin(9600);
esp8266.begin(115200);
Serial.println("AT+CWJAP=\"" + AP + "\",\"" + PASS + "\"");
sendCommand("AT", 5, "OK");
sendCommand("AT+CWMODE=1", 5, "OK");
sendCommand("AT+CWJAP=\"" + AP + "\",\"" + PASS + "\"", 15, "OK");
countTrueCommand = 0;
}
void loop() {
String getData = "GET / update ? api_key = " + API + "&" + field + " = " + String(valSensor);
switch (countTrueCommand) {
case 0: sendCommand("AT", 5, "OK"); break;
case 1: sendCommand("AT + RST", 10, "OK"); break;
case 2: sendCommand("AT + CIPMUX = 1", 5, "OK"); break;
case 3: sendCommand("AT + CIPSTART = 0, \"TCP\",\"" + HOST + "\"," + PORT, 15, "OK"); break;
case 4: sendCommand("AT+CIPSEND=0," + String(getData.length() + 4), 4, ">"); break;
case 5: esp8266.println(getData); delay(1500); countTrueCommand++; break;
case 6: sendCommand("AT+CIPCLOSE=0", 5, "OK"); break;
case 7:
Serial.println(valSensor);
Serial.print(getData);
Serial.print(",");
Serial.println(getData.length());
valSensor = random(100000); // random value, change with sensor value if using sensor
countTrueCommand = 0;
delay(10000);
break;
}
}
void sendCommand(String command, int maxTime, char readReplay[]) {
Serial.print(countTrueCommand);
Serial.print(". at command => ");
Serial.print(command);
Serial.print(" ");
while (countTimeCommand < (maxTime * 1))
{
esp8266.println(command);//at+cipsend
if (esp8266.find(readReplay)) //ok
{
found = true;
break;
}
countTimeCommand++;
}
if (found == true)
{
Serial.println("OYI");
countTrueCommand++;
countTimeCommand = 0;
}
if (found == false)
{
Serial.println("Fail");
countTrueCommand = 0;
countTimeCommand = 0;
}
found = false;
}
Có một vài chỗ trong đoạn code mình không biết điền gì để thay thế ạ
String HOST = "api.thingspeak.com";
String AP = "XXXX";//your AP name
String PASS = "XXXX"; //your AP password
String API = "XxxXPF**V6**OEIL";//your API
String getData = "GET / update ? api_key = " + API + "&" + field + " = " + String(valSensor);
ngoài những chỗ phải điền này ra, còn chỗ nào phải điền để thay thế không ạ, và bạn có thể nêu rõ là những chỗ này điền những gì không ạ
P/S: code mình đã nhập vào và không báo lỗi
PhmKhnhTon AP và PASS là tên wifi và pass để ESP truy cập internet, còn API thì lúc bạn đăng ký với Thingspeak sẽ được cấp
String HOST = "api.thingspeak.com";
còn cái này mình điền gì ạ
PhmKhnhTon [upl-image-preview url=https://making.vn/assets/files/2020-05-17/1589715456-520836-image.png]
Tên miền để gửi data lên nhé bạn GET https://api.thingspeak.com/update?api_key=M5NRXV83GE1PSB16&field1=0
field1 là giá trị bạn sẽ nhận được trên thingspeak
là mình lấy tên cả miền luôn ạ
PhmKhnhTon Trong phần gửi bạn thấy dòng
String getData = "GET / update ? api_key = " + API + "&" + field + " = " + String(valSensor);
nên HOST bạn vẫn để là api.thingspeak.com
making à, có nghĩa là phần
String HOST = "api.thingspeak.com";
mình k thay đổi gì cả đúng k ạ
PhmKhnhTon đungs rồi bạn.
Dạ, mình kiểm tra serial monitor
[upl-image-preview url=https://making.vn/assets/files/2020-05-17/1589715907-714041-image.png]
bị báo lỗi là fail hết ạ
PhmKhnhTon Bạn để board của bạn gần cục phát wifi nhà mình, kiểm tra lại xem bạn nhập tên wifi và pass có chính xác chưa, chính xác cả chữ hoa và thường nhé
cục wifi nhà mình cách chỗ mình để mạch tầm 4m ạ, thế là có xa không ạ
PhmKhnhTon cứ để gần test thử xem bạn
motniemtin Tại mình sử dụng là máy tính bàn, nên k thể để mạch lại gần, còn cục wifi mình cũng cố định, khó mà di chuyển được ạ @@
PhmKhnhTon bạn kiểm tra lại tên wifi và pass thử, hoặc thêm lệnh “AT+CWLAP” để coi có wifi nào mà esp có thể kết nối ko
making Mình thêm lệnh này bằng cách nào ạ :3
PhmKhnhTon
Bạn KT xem nối đúng dây không,
#define RX 8
#define TX 7
có vẻ Arduino của bạn không nhận được dữ liệu thử Esp
Serial.println("AT+CWMODE=1");
esp8266.println("AT+CWMODE=1");
delay(2000);
Serial.println(" AT+CWLAP");
esp8266.println(" AT+CWLAP");
delay(2000);
String cmd="AT+CWJAP=\"";