Arduino+ESP8266实现的WebServer来控制WS2812B灯带
写在前面
前段时间购入了一块Wemos D1开发板,本来打算局域网部署Blynk服务器,实现一些设备的控制。由于局域网部署服务,在外网或者其他网络的应用场景不是特别的合适。所以参考例程和网络资源,实现了这个通过WebServer对灯带的控制。然后将这块开发板和灯带送朋友。提示:以下是本篇文章正文内容,下面案例可供参考
一、Arduino+ESP8266
程序通过ESPTouch APP实现智能配网,并将连接信息保存在EEPROM中,下次开机即可自动连接WiFi。连接到WiFi后启动WebServer,开始监听80端口的访问。通过对GET请求的分析获取信息并修改对应变量值。在loop中对灯带进行设置。
///程序setup和loop函数
void setup() {
Serial.begin(115200);
EEPROM.begin(50); //申请操作到地址4095(比如你只需要读写地址为100上的一个字节,该处也需输入参数101)
flag = false;
read_eeprom();
Config_wifi(wifiname.c_str(), wifipsw.c_str());
if (flag)
{
smartConfig();
}
//这里可以设置网址后边跟着的参数。
server.on("/", handleRoot);
server.on("/switch", handleSwitch);
server.on("/color", handleColor);
server.on("/mode", handleMode);
server.on("/bright", handleBright);
server.on("/inline", []() { //匿名方法
server.send(200, "text/plain", "this works as well");
});
//未知参数
server.onNotFound(handleNotFound);
server.begin();
Serial.println("HTTP server started");
LEDS.addLeds<LED_TYPE, LED_DT, COLOR_ORDER>(leds, NUM_LEDS); // 初始化光带
FastLED.setBrightness(bright); // 设置光带亮度
}
void loop() {
// put your main code here, to run repeatedly:
server.handleClient();
MDNS.update();
FastLED.setBrightness(bright);
if(light_switch == 0)
{
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CRGB::Black;
FastLED.show();
//delay(30);
}
}
if(light_switch == 1 && light_mode == 1){
LedFunc1();
}
if(light_switch == 1 && light_mode == 0){
for (int i = 0; i < NUM_LEDS; i++){
leds[i] = CRGB(r, g, b);
FastLED.show();
}
}
}
二、WinForm程序设计
上位机界面:
程序通过配置文件保存用户上次关闭程序时设置的值,在程序再次启动时再次读取。
首次启动请设置开发板的IP地址。
通过滑动栏设置好颜色和亮度值后,请手动点击提交按钮。
总结
具体程序文件连接:https://download.csdn.net/download/u013622530/16632050
Github:https://github.com/lovcFDS/WebControlLED
- 实现通过ESPtouch来进行智能配网
- 通过WebServer的方式在局域网中运行
- 上位机通过发起网络请求进行控制
后记
发现智能配网读写bug。程序中使用的为https://blog.csdn.net/qq_31366371/article/details/105110342中提供的EEPROM读写方法。在我的实际使用中出现SSID长度超过10时,写入EEPROM后,再次读取出现错误的问题。我在大佬的基础上稍加修改,兼容了SSID长度为10位以上和10位以下。
2022.11.9 更新
闲来无事,开发了一个微信小程序的上位机,对原ESP8266代码进行修改,加入SSD1306 LED128x64显示,目前硬件代码无法上传,暂时挂起。
小程序已发布:微信扫描二维码即可打开
小程序源码:CSDN 源码链接