发帖
4 1 1

【电子DIY作品】可网页控制的简易灯+WB2-01S+http与pwm项目整合

KevinLi
高级会员

6

主题

40

回帖

594

积分

高级会员

积分
594
电子DIY 180 4 2025-3-19 00:14:30

前言

简介:

2个不同功率的Led通过GPIO的PWM通道+三极管控制亮度,5v或3v供电;
网页http单向控制,是一个web_server的简单实例;
管理界面:浏览器地址栏"设备ip/LAMP/",比如"http://192.168.0.127/LAMP"
视频(BV1MpX7YiEyd)演示了网页控制2个led亮度和关闭

微信图片_20250318213322.png

个人目的:

当装饰灯用、测试三极管硬件电路、测试和学习web_server和html的API解析过程。
实际使用时,利用01s凸出来的卡座,卡到桌板缝隙或者挂起来,2面都有灯,负责不同区域照明。

直接驱动LED方式有DAC、PWM:
  • DAC(数字信号转为模拟信号,直接进行DC电压调整,但01S没有这个通道)
  • PWM(开关电源,电压不变,调节占空比方式,频率足够高人眼就感觉不出来)
    "台灯的话,应该是 3125Hz 以上无危害"
    这两个方式和手机OLED调光方式有点关系,比如2khz的PWM调光已经被称为高频护眼了。
项目部署:

build out留了项目同名的bin,是默认at-think的wifi,可以改手机热点直接使用;
(还有几个编译好的,我也忘了是不是自动亮度循环测试的了)
压缩包解压到SDK的get-started,修改wifi信息,make -j6编译,烧录 即可。
(WB2或者博流的SDK都行,仅使用了httpd和pwm项目,预留了UDP方法)改wifi.png

硬件介绍

01S仅有3个可用I0,引脚定义如下:
  • I04 GPI04/SPI MOSI/MISO/IIC SCL/PWM CH4/ADC CH4
  • RX RXD/GPIO7/SPI SCLK/IIC SDA/PWM CH2
  • TX TXD/GPIO16/SPI MOSI/MISO/IIC SCL/PWM CH1
    ADC是读取输入用,没DAC很可惜,PWM任选2个就好,我选择了 IO4和RX来驱动2个LED,这样TX还可以串口输出log。
LED
一个3.3~3.6v的1W大功率LED,因此我需要5v供电
	(3v也行但不清楚asm逆流问题);
一个2835LED,3v3供电就好;
文档写到io口要下拉,我没下拉 上电瞬间就会爆闪;
NPN三极管 (S9013)
Rb计算太太太难了,我图中算出来的只能说能用;
似乎最高频率支持30MHz。
测试PWM的频率
bl602的PWM似乎最大支持20MHz;
似乎三极管常用频率是200~20KHz;
目标是3KHhz以上,项目目前是4KHz;
我测试的500~1M都正常可用,5MHz不正常,不清楚为什么;

pwm频率.png

01S烧录方法
狗哥说,WB2上电瞬间会进入boot模式,我外置烧录器没成功;
我使用esp-01s的烧录器,只接5个引脚:
	串口的4个;
	01s烧录器接到01s的en
然后按01s烧录器的rst按键就可以烧录了;
(esp-01s烧录器的按键是拉低rst;WB
2-01s的en内上拉所以悬空有效,rst是NC无效)
其他:
01S和01F的FLASH都是2MB,项目的HTML数组用const,注意大小;
01S和01F都是3v3供电,ASM1117 5v-3v3的外围电路、静电保护、过流保护、二极管要注意,后者我没加;

代码介绍

网页部分:
写完web转为数组存起来,实现了滑块和数字框同步;
图片元素仅供参考,个人学习用;
黄色的那个我是指示颜色用,不过还是有点小小问题;
手机UA 显示这个网页,框框不能自动缩放,忽略!
httpd:
- 参考SDK,设计了3个GET的API路径,字符串匹配路径(最笨的方法),返回给浏览器页面(body等内容);
- web设置亮度的思路是,浏览器发送GET请求"setLED",36行的"getState"还没实现;
- 另:esp32的web_server的api面向对象方法(设置url和web的回调)很好用,我懒得实现qaq

API.PNG

api-set.PNG

PWM和UDP:
参考SDK,后者此项目没用上。

待改进

web前端:代码未整理,有多处冗余部分,刷新网页没有获取当前值;
httpd:还没实现 普通API 返回给前端JSON信息与前端处理;
电路板:这是这个项目第一次打板,我是业余的,尺寸和5v电源供电 有偏移和错误,但功能正常;串口引出了但没用上;
选型:这次选01S是因为我不会烧录01F,这个更好拆卸,不过很遗憾吧ADC看成DAC了,只能用PWM方式调光了;
供电方式:电路板的5v引脚画错了,现在是直连usb线取5v,没接电池和升压电路;

我个人的使用建议

问题:正常来说,接入外网MQTT、联动手机语音什么的会很方便,而这个项目需要访问内网网址才能访问;
解决办法1.1:获取网址方式(串口查看ip的log,路由器管理界面去看)
解决办法1.2:路由器进行MAC/ip绑定,设置快捷方式就好了。
进一步:
不使用MQTT实现远程访问:端口映射、公网ip+DDNS 或 内网穿透;
易用性:nfc录入网址/域名快捷方式,就可以一碰就访问啦;

我倾向于WEB的最大原因是,可以远程访问(如上配置端口映射)且简单网页可以轻易转为快捷方式的app,不必进行安卓开发。

最后,

这个帖子写了3.5H,希望httpd的思路部分可以帮到别人,我的注释很乱求忽略qaq,冗余测试代码没删干净;
这个项目的httpd和UDP部分是我学习(web->udp)WOL后做出来的,毕竟只需要新增GET API绑定PWM设置就好,但画电路板学习计算基极电阻Rb的时间占大头;
原本还想做的是,同时可用蓝牙控制这个,但wifi网页控制足够方便我就没折腾了。

pcb.png

SCH_Schematic2_1-P1_2025-03-18.png

upload 附件:01s-lamp_server.v1.3_release-0318.zip

──── 1人觉得很赞 ────

使用道具 举报

2025-3-19 00:18:37
吐槽:
        不理解为什么WB2封装的bl602的boot这么奇怪,而且官方电路图的NC标签写的很乱,导致设计电路很麻烦,要是完全单独引出来就好了,01F我烧坏3个板子了也没能找出原因;
        01S在立创商城的“官方封装” 有问题,前几年我在群里建议官方去投诉改一下现在也还没改,我是手动给2x4P座子标的标签;
2025-3-19 08:39:25
嘻嘻小朋友第一个交作业~
2025-3-19 13:56:51
不错不错
网页端界面可以美化一下
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28215 个
  • 话题数: 40141 篇