Arduino+ESP8266实现的WebServer来控制WS2812B灯带

利用Arduino和ESP8266开发板,通过ESPTouchAPP智能配置WiFi并建立WebServer,实现在局域网内通过WinForm程序或网页控制WS2812B灯带的颜色、亮度和模式。程序解决了SSID长度超过10字符时的EEPROM读写问题,并提供了微信小程序版上位机控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  1. 实现通过ESPtouch来进行智能配网
  2. 通过WebServer的方式在局域网中运行
  3. 上位机通过发起网络请求进行控制

后记

发现智能配网读写bug。程序中使用的为https://blog.csdn.net/qq_31366371/article/details/105110342中提供的EEPROM读写方法。在我的实际使用中出现SSID长度超过10时,写入EEPROM后,再次读取出现错误的问题。我在大佬的基础上稍加修改,兼容了SSID长度为10位以上和10位以下。

2022.11.9 更新

闲来无事,开发了一个微信小程序的上位机,对原ESP8266代码进行修改,加入SSD1306 LED128x64显示,目前硬件代码无法上传,暂时挂起。
小程序已发布:微信扫描二维码即可打开小程序二维码
小程序源码:CSDN 源码链接

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值