2025-01-16 17:10:42 +08:00
|
|
|
/*
|
|
|
|
|
* SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
|
|
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: MIT
|
|
|
|
|
*/
|
|
|
|
|
/*
|
|
|
|
|
* @Hardwares: M5Core + Module SIM800L
|
|
|
|
|
* @Platform Version: Arduino M5Stack Board Manager v2.1.3
|
|
|
|
|
* @Dependent Library:
|
|
|
|
|
* M5Stack@^0.4.6: https://github.com/m5stack/M5Stack
|
|
|
|
|
*/
|
|
|
|
|
|
2021-03-24 19:14:02 +08:00
|
|
|
#include "M5Stack.h"
|
|
|
|
|
#include "TFTTerminal.h"
|
2025-01-16 17:10:42 +08:00
|
|
|
|
2021-03-24 19:14:02 +08:00
|
|
|
TFT_eSprite TerminalBuff = TFT_eSprite(&M5.Lcd);
|
|
|
|
|
TFTTerminal terminal(&TerminalBuff);
|
|
|
|
|
|
2025-01-16 17:10:42 +08:00
|
|
|
String waitRevice()
|
|
|
|
|
{
|
2021-03-24 19:14:02 +08:00
|
|
|
String recvStr;
|
2022-08-11 17:01:46 +08:00
|
|
|
do {
|
2021-03-24 19:14:02 +08:00
|
|
|
recvStr = Serial2.readStringUntil('\n');
|
|
|
|
|
} while (recvStr.length() == 0);
|
|
|
|
|
Serial.println(recvStr);
|
|
|
|
|
terminal.println(recvStr);
|
|
|
|
|
return recvStr;
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-16 17:10:42 +08:00
|
|
|
void sendATCMD(String cmdStr)
|
|
|
|
|
{
|
2021-03-24 19:14:02 +08:00
|
|
|
Serial2.print(cmdStr);
|
|
|
|
|
delay(100);
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-16 17:10:42 +08:00
|
|
|
int sendATCMDAndRevice(String cmdStr)
|
|
|
|
|
{
|
2021-03-24 19:14:02 +08:00
|
|
|
delay(1000);
|
|
|
|
|
Serial2.print(cmdStr);
|
|
|
|
|
delay(100);
|
|
|
|
|
waitRevice();
|
|
|
|
|
String recvStr = waitRevice();
|
|
|
|
|
delay(100);
|
2022-08-11 17:01:46 +08:00
|
|
|
if (recvStr.indexOf("OK") != -1) {
|
2021-03-24 19:14:02 +08:00
|
|
|
return 0;
|
2022-08-11 17:01:46 +08:00
|
|
|
} else {
|
2021-03-24 19:14:02 +08:00
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-16 17:10:42 +08:00
|
|
|
void GET()
|
|
|
|
|
{
|
2021-03-24 19:14:02 +08:00
|
|
|
terminal.println("GET Request");
|
|
|
|
|
sendATCMD("AT?\r\n");
|
|
|
|
|
delay(100);
|
|
|
|
|
Serial2.flush();
|
|
|
|
|
sendATCMDAndRevice("AT+CGATT?\r\n");
|
|
|
|
|
sendATCMDAndRevice("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"\r\n");
|
|
|
|
|
sendATCMDAndRevice("AT+SAPBR=3,1,\"APN\",\"CMNET\"\r\n");
|
|
|
|
|
sendATCMDAndRevice("AT+SAPBR=0,1\r\n");
|
|
|
|
|
sendATCMDAndRevice("AT+SAPBR=1,1\r\n");
|
|
|
|
|
sendATCMDAndRevice("AT+HTTPINIT\r\n");
|
|
|
|
|
sendATCMDAndRevice("AT+HTTPPARA=\"URL\",\"http://api.m5stack.com/v1\"\r\n");
|
|
|
|
|
sendATCMDAndRevice("AT+HTTPACTION=0\r\n");
|
|
|
|
|
// while(!Serial2.available());
|
|
|
|
|
delay(5000);
|
|
|
|
|
sendATCMDAndRevice("AT+HTTPREAD\r\n");
|
2021-03-25 10:30:17 +08:00
|
|
|
delay(1000);
|
|
|
|
|
String recvStr;
|
2022-08-11 17:01:46 +08:00
|
|
|
while (Serial2.available()) {
|
|
|
|
|
recvStr += Serial2.readString();
|
2021-03-24 19:14:02 +08:00
|
|
|
}
|
2021-03-25 10:30:17 +08:00
|
|
|
Serial.println(recvStr);
|
|
|
|
|
terminal.println(recvStr);
|
2021-03-24 19:14:02 +08:00
|
|
|
sendATCMDAndRevice("AT+HTTPTERM\r\n");
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-16 17:10:42 +08:00
|
|
|
void POST()
|
|
|
|
|
{
|
2021-03-25 10:30:17 +08:00
|
|
|
terminal.println("POST Request");
|
|
|
|
|
sendATCMD("AT?\r\n");
|
|
|
|
|
delay(100);
|
|
|
|
|
Serial2.flush();
|
|
|
|
|
sendATCMDAndRevice("AT+CGATT?\r\n");
|
|
|
|
|
sendATCMDAndRevice("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"\r\n");
|
|
|
|
|
sendATCMDAndRevice("AT+SAPBR=3,1,\"APN\",\"CMNET\"\r\n");
|
|
|
|
|
sendATCMDAndRevice("AT+SAPBR=0,1\r\n");
|
|
|
|
|
sendATCMDAndRevice("AT+SAPBR=1,1\r\n");
|
|
|
|
|
sendATCMDAndRevice("AT+HTTPINIT\r\n");
|
|
|
|
|
sendATCMDAndRevice("AT+HTTPPARA=\"CID\",1\r\n");
|
2025-01-16 17:10:42 +08:00
|
|
|
sendATCMDAndRevice("AT+HTTPPARA=\"CONTENT\",\"application/x-www-form-urlencoded\"\r\n");
|
|
|
|
|
sendATCMDAndRevice("AT+HTTPPARA=\"URL\",\"http://header.json-json.com/\"\r\n");
|
2021-03-25 10:30:17 +08:00
|
|
|
sendATCMD("AT+HTTPDATA=10,3000\r\n");
|
|
|
|
|
sendATCMD("M5STACK,GO\r\n");
|
|
|
|
|
sendATCMDAndRevice("AT+HTTPACTION=1\r\n");
|
|
|
|
|
delay(5000);
|
|
|
|
|
sendATCMDAndRevice("AT+HTTPREAD\r\n");
|
|
|
|
|
delay(1000);
|
|
|
|
|
String recvStr;
|
2022-08-11 17:01:46 +08:00
|
|
|
while (Serial2.available()) {
|
|
|
|
|
recvStr += Serial2.readString();
|
2021-03-25 10:30:17 +08:00
|
|
|
}
|
|
|
|
|
Serial.println(recvStr);
|
|
|
|
|
terminal.println(recvStr);
|
|
|
|
|
sendATCMDAndRevice("AT+HTTPTERM\r\n");
|
|
|
|
|
}
|
2021-03-24 19:14:02 +08:00
|
|
|
|
2025-01-16 17:10:42 +08:00
|
|
|
void setup()
|
|
|
|
|
{
|
2021-03-24 19:14:02 +08:00
|
|
|
M5.begin();
|
|
|
|
|
Serial2.begin(115200, SERIAL_8N1, 16, 17);
|
|
|
|
|
Serial2.flush();
|
|
|
|
|
delay(1000);
|
|
|
|
|
M5.Lcd.fillRect(0, 0, 320, 240, TFT_BLACK);
|
|
|
|
|
M5.Lcd.fillRect(0, 0, 320, 40, TFT_WHITE);
|
|
|
|
|
M5.Lcd.setTextColor(TFT_BLACK);
|
|
|
|
|
M5.Lcd.setTextDatum(TC_DATUM);
|
|
|
|
|
M5.Lcd.drawString("SIM800L HTTP GET/POST", 160, 10, 4);
|
|
|
|
|
M5.Lcd.setTextDatum(TL_DATUM);
|
|
|
|
|
M5.Lcd.setTextColor(TFT_WHITE);
|
2022-08-11 17:01:46 +08:00
|
|
|
TerminalBuff.createSprite(240, 200);
|
|
|
|
|
terminal.setGeometry(20, 55, 300, 200);
|
2021-03-24 19:14:02 +08:00
|
|
|
terminal.setFontsize(1);
|
|
|
|
|
terminal.println("Press Btn A GET Request");
|
|
|
|
|
terminal.println("Press Btn B POST Request");
|
|
|
|
|
};
|
|
|
|
|
|
2025-01-16 17:10:42 +08:00
|
|
|
void loop()
|
|
|
|
|
{
|
2022-08-11 17:01:46 +08:00
|
|
|
M5.update();
|
|
|
|
|
if (M5.BtnA.wasPressed()) GET();
|
|
|
|
|
if (M5.BtnB.wasPressed()) POST();
|
|
|
|
|
if (M5.BtnC.wasPressed()) {
|
|
|
|
|
String recvStr;
|
|
|
|
|
recvStr = Serial2.readStringUntil('\n');
|
|
|
|
|
Serial.println(recvStr);
|
|
|
|
|
terminal.println(recvStr);
|
|
|
|
|
};
|
|
|
|
|
delay(10);
|
2021-03-24 19:14:02 +08:00
|
|
|
}
|