ESP8266-01S 代码实现:连接 WiFi、HTTP 请求和定时任务
ESP8266-01S 代码实现:连接 WiFi、HTTP 请求和定时任务
本代码示例展示了如何使用 ESP8266-01S 连接到 WiFi 网络,并通过 HTTP 请求与服务器交互,以及设置定时任务,在特定时间输出信息到串口。
功能:
- 连接 WiFi 网络,SSID: '7-4',密码: '120712071207',并在循环中判断连接状态,失败则重新连接。
- 当串口检测到输入为 'X2' 或者 'X3' 时,使用 GET 方式访问
https://xizhi.qqoq.net/XZ0a21dc90b486050f1bd29ff3d00b926d.send?title=1%E5%8F%B7%E7%82%B9%E6%BC%8F%E6%B0%B4或者https://xizhi.qqoq.net/XZ0a21dc90b486050f1bd29ff3d00b926d.send?title=2%E5%8F%B7%E7%82%B9%E6%BC%8F%E6%B0%B4。 - 循环访问
http://tool.liumang.one/time/m.php获取当前小时。 - 如果当前小时为 23 点,则向串口输出两次 'O',在整个 23 点之间,只输出两次内容。
代码:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
const char* ssid = "7-4";
const char* password = "120712071207";
const char* server = "https://xizhi.qqoq.net";
const char* endpoint1 = "/XZ0a21dc90b486050f1bd29ff3d00b926d.send?title=1%E5%8F%B7%E7%82%B9%E6%BC%8F%E6%B0%B4";
const char* endpoint2 = "/XZ0a21dc90b486050f1bd29ff3d00b926d.send?title=2%E5%8F%B7%E7%82%B9%E6%BC%8F%E6%B0%B4";
const char* timeServer = "http://tool.liumang.one/time/m.php";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("WiFi connected");
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
Serial.println("WiFi connection lost. Reconnecting...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("WiFi reconnected");
}
if (Serial.available() > 0) {
String input = Serial.readStringUntil('
');
if (input == "X2") {
sendRequest(server, endpoint1);
}
else if (input == "X3") {
sendRequest(server, endpoint2);
}
}
String currentTime = getTime();
int currentHour = currentTime.toInt();
if (currentHour == 23) {
static int outputCount = 0;
if (outputCount < 2) {
Serial.print("O");
outputCount++;
}
}
else {
static int outputCount = 0;
outputCount = 0; // Reset output count
}
delay(1000);
}
void sendRequest(const char* server, const char* endpoint) {
HTTPClient http;
http.begin(server, endpoint);
int httpResponseCode = http.GET();
if (httpResponseCode == 200) {
Serial.println("Request sent successfully");
}
else {
Serial.print("Error sending request. HTTP error code: ");
Serial.println(httpResponseCode);
}
http.end();
}
String getTime() {
WiFiClient client;
HTTPClient http;
String time = "";
if (http.begin(client, timeServer)) {
int httpResponseCode = http.GET();
if (httpResponseCode == 200) {
time = http.getString();
Serial.print("Current time: ");
Serial.println(time);
}
else {
Serial.print("Error getting time. HTTP error code: ");
Serial.println(httpResponseCode);
}
http.end();
}
return time;
}
注意:
- 在使用此代码之前,你需要先安装 ESP8266 库(通过 Arduino 库管理器安装)和 HTTPClient 库。
- 还需要将 ESP8266 连接到你的电脑,并将串口波特率设置为 115200。
相关知识:
- ESP8266-01S 是一个基于 ESP8266 芯片的无线模块,支持 WiFi 连接和 HTTP 请求。
- Arduino IDE 是一款开源的集成开发环境,用于编写和上传代码到 ESP8266-01S。
ESP8266WiFi库提供了用于连接 WiFi 网络的功能。ESP8266HTTPClient库提供了用于发送 HTTP 请求的功能。Serial类提供了与串口通信的功能。
扩展阅读:
- ESP8266 官方文档: https://www.esp8266.com/
- Arduino IDE 文档: https://www.arduino.cc/en/Guide/HomePage
- ESP8266WiFi 库: https://github.com/esp8266/Arduino
- ESP8266HTTPClient 库: https://github.com/esp8266/Arduino
使用说明:
- 将代码复制到 Arduino IDE 中。
- 将 ESP8266 连接到电脑,并设置串口波特率为 115200。
- 上传代码到 ESP8266。
- 打开串口监视器,观察程序运行情况。
希望这个代码示例能帮助你更好地了解 ESP8266-01S 的使用方法,并完成你的项目开发。
原文地址: https://www.cveoy.top/t/topic/pmm7 著作权归作者所有。请勿转载和采集!