前言:
放暑假了,终于有时间搞搞小作品了,正好前几天我的闹钟坏了,手上又有一块吃灰的esp32c3mini,搞个时钟吧!
不怎么温馨的小提示:arduino ide
思路:
这篇先讲初始化
先进行常规初始化(串口,IO)
再是EEPROM(存储WiFi信息)
然后是WiFi AP与STA(为什么要用AP模式,因为要用网页联网,我自己写的逻辑)
接着是OTA,方便后续烧录
最后是网络server服务器,前面说了,网页联网
实现:
常规:
自己看吧,有手就行
所需库:无
void begin()
{
Serial.begin(115200);
pinMode(led,OUTPUT);
pinMode(led,HIGH);
}
EEPROM:
借鉴示例程序:eeprom_write
所需库:EEPROM.h
void eeprombegin()
{
addr=1;
waddr=1;
if (!EEPROM.begin(ESIZE))
{
Serial.println("eeprom初始化失败!");
Serial.println("正在重启...");
delay(1000);
ESP.restart();
}
}
里面有一个addr和waddr,int类型,后面有用,先卖个关子
OTA:
为什么先跳过了WiFi,这可是一个大boss,折磨了我好几天
所需库:ArduinoOTA.h(需要自己下载)
示例:BasicOTA
void otabegin()
{
ArduinoOTA.setPort(3232); //开发板类型(esp8266填8266)
ArduinoOTA.setHostname("ESP32-C3"); //这是你的开发板的名称(随便填)
ArduinoOTA.setPassword("1234"); //上传密码
ArduinoOTA.begin();
}
服务器:
这里我自己写了个网页,使用URL参数传递WiFi的名称,使用一个函数进行判断,这个函数以后再写
void Serverbegin()
{
server.on("/",handleRoot);
server.on("/WiFi",setWiFi);
server.onNotFound([](){server.send(200,"text/html;charset=utf-8","<h1 />404:Not fount<br /><h1 />404:没有找到页面!");});
server.begin();
}
handleRoot函数:
void handleRoot()
{
String HTML="<!DOCTPYE html>\
<html>\
<head><meta charset='utf-8'></head>\
<body>\
<h2 />你好,我的朋友!\
<br /><!--换行符,注释-->\
<h1 />欢迎使用 ESP32-C3 WiFi时钟\
<br />\
<h2 />网络配置:192.168.4.1/WiFi?ssid=你的WiFi名称&password=你的WiFi密码\
</body>\
</html>";
server.send(200,"text/html",HTML);
}
setWiFi函数:
void setWiFi()
{
String ssid=server.arg("ssid");
String password=server.arg("password");
if(WiFibegin(ssid,password,true))
server.send(200,"text/html;charset=utf-8","<h1 />WiFi连接成功!");
else
server.send(200,"text/html;charset=utf-8","<h1 />WiFi连接失败!");
}
WiFi:
void WiFibegin()
{
WiFi.mode(WIFI_AP_STA);
WiFi.softAP(myssid,mypassword);
WiFi.softAPConfig(apIP,apIP,IPAddress(255,255,255,0));
Serial.println();
Serial.println(WiFi.softAPIP());
}