了解一下相关的库
这个库是自带的,不需要引入。
据我的理解,单片机的串口就是控制台程序的控制台,可以返回一些信息给上位机。
会用到的几个指令:
1 2 3 4 5 6 7
| Serial.begin(Baudrate); Serial.end(); Serial.read(); Serial.peek(); Serial.flush(); Serial.print/println(); Serial.write();
|
#include <WiFi.h>
AP(接入点) Mode
创建一个接入点。
1 2 3 4 5
| WiFi.mode(WiFi_AP); WiFi.softAPConfig(local_IP, gateway, subnet);
WiFi.softAP(SSID,PASSWD);
|
更多函数见 WiFi.h AP 常用方法说明
STA(站点) Mode
接入一个 AP。
1 2 3
| WiFi.mode(WIFI_STA); WiFi.start(SSID,PASSWD) Serial.println(WiFi.localIP());
|
更多函数见 WiFi.h STA 常用方法说明
#include <WebServer.h>
创建一个简单的网站服务器。真的很简单。
一个个函数讲有点难理解,我放在这节的例程里面说明。
写一个测试程序吧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| #include <WiFi.h> #include <WebServer.h>
const char *SSID = "YOUR_SSID"; const char *PASSWORD = "YOUR_PASSWORD";
WebServer server(80);
void handleIndex() { server.send(200, "text/plain", "Hello from ESP32!"); }
void setup() { Serial.begin(9600); Serial.println();
WiFi.mode(WIFI_STA); WiFi.begin(SSID, PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("WiFi connected!");
Serial.println("IP address: "); Serial.println(WiFi.localIP());
server.on("/", handleIndex); server.begin(); Serial.println("WebServer begin!"); }
void loop() { server.handleClient(); }
|
访问串口返回的 IP,即可看到 Hello from ESP32!
这句话啦。
还有个 Web Server 叫 ESPAsyncWebServer
自带的 WebServer 是同步的,只支持处理一个连接。对于这种体量的机器其实足够了。
顺便学习一下一个第三方库吧。
添加库
对于这款 ESP32,需要下载并导入两个库(源码 ZIP 即可):
me-no-dev/AsyncTCP: Async TCP Library for ESP32
me-no-dev/ESPAsyncWebServer: Async Web Server for ESP8266 and ESP32
在 Arduino 的项目 > 加载库 > 添加 .ZIP 库
中导入这两个库。
用 ESPAsyncWebServer 重写刚刚的例程吧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| #include <WiFi.h> #include <ESPAsyncWebServer.h>
const char *SSID = "YOUR_SSID"; const char *PASSWORD = "YOUR_PASSWORD";
ESPAsyncWebServer server(80);
void handleIndex(AsyncWebServerRequest *request) { request->send(200, "text/plain", "Hello, world!"); }
void setup() { Serial.begin(9600); Serial.println();
WiFi.mode(WIFI_STA); WiFi.begin(SSID, PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("WiFi connected!");
Serial.println("IP address: "); Serial.println(WiFi.localIP());
server.on("/", handleIndex); server.begin(); Serial.println("WebServer begin!"); }
void loop() {
}
|
理论上来讲,上面的代码应该是正确的……
但 Arduino 在编译的时候报错,内容是 ESPAsyncWebServer 库中的某些代码。
有待我弄清楚出错的原因。