前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >用安信可Ai-WB2-01S做一个可用网页控制的简易灯

用安信可Ai-WB2-01S做一个可用网页控制的简易灯

原创
作者头像
安信可科技
发布2025-03-26 14:26:35
发布2025-03-26 14:26:35
560
举报
文章被收录于专栏:DIYDIY

以下作品由安信可社区用户

KevinLi制作

01简介

使用2个不同功率的Led通过GPIO的PWM通道+三极管控制亮度

●供电:5V或3V

●控制:用网页http单向控制,这是一个web_server的简单实例。

●管理界面:浏览器地址栏"设备ip/LAMP/",比如"http://192.168.0.127/LAMP"

视频演示

点击查看如何使用网页控制2个led
点击查看如何使用网页控制2个led

02个人目的

这次项目是想尝试DIY装饰灯、测试三极管硬件电路、测试和学习web_server和html的API解析过程。

效果:实际使用时,利用WB2-01s凸出来的卡座,卡到桌板缝隙或者挂起来,两面都有灯,负责不同区域照明。

03直接驱动LED方式有DAC、PWM

DAC(数字信号转为模拟信号,直接进行DC电压调整,但01S没有这个通道)

PWM(开关电源,电压不变,调节占空比方式,频率足够高人眼就感觉不出来)

"台灯应该是 3125Hz 以上无危害"

这两个方式和手机OLED调光方式有点关系,比如2khz的PWM调光已经被称为高频护眼了。

04项目部署

build out留了项目同名的bin,是默认at-think的wifi,可以改手机热点直接使用;

(还有几个编译好的,我也忘了是不是自动亮度循环测试的了)

压缩包解压到SDK的get-started,修改wifi信息,make -j6编译,烧录 即可。

(WB2或者博流的SDK都行,仅使用了httpd和pwm项目,预留了UDP方法)

05硬件介绍

WB2-01S仅有3个可用IO,引脚定义如下:

名称功能说明

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不正常,不清楚为什么;

WB2-01S烧录方法

根据安信可论坛大佬业余菜狗提示,WB2系列模组上电瞬间会进入boot模式,这次外置烧录器没成功;使用ESP-01S的烧录器,只接5个引脚,串口的4个;ESP-01S烧录器接到WB2-01S的en, 然后按WB2-01S烧录器的rst按键就可以烧录了;(ESP-01s烧录器的按键是拉低rst;WB2-01S的en内上拉所以悬空有效,rst是NC无效)

其他:

WB2-01S和WB2-01F的FLASH都是2MB,项目的HTML数组用const,注意大小;01S和01F都是3v3供电,ASM1117 5v-3v3的外围电路、静电保护、过流保护、二极管要注意,后者没加。

06代码介绍

网页部分:

写完web转为数组存起来,实现了滑块和数字框同步;

图片元素仅供参考,个人学习用;

黄色部分为指示颜色用,不过还是有点小小问题;

手机UA 显示这个网页,框框不能自动缩放,忽略!

httpd:

-参考SDK,设计了3个GET的API路径,字符串匹配路径(最笨的方法),返回给浏览器页面(body等内容);

- web设置亮度的思路是,浏览器发送GET请求"setLED",36行的"getState"还没实现;

- 另外:esp32的web_server的api面向对象方法(设置url和web的回调)很好用。

PWM和UDP:

参考SDK,后者此项目没用上。

07待改进

web前端:代码未整理,有多处冗余部分,刷新网页没有获取当前值;

httpd:还没实现 普通API 返回给前端JSON信息与前端处理;

电路板:这是这个项目第一次打板,我是业余的,尺寸和5v电源供电 有偏移和错误,但功能正常;串口引出了但没用上;

选型:这次选WB2-01S是因为我不会烧录WB2-01F,不过很遗憾吧ADC看成DAC了,只能用PWM方式调光了;

供电方式:电路板的5v引脚画错了,现在是直连USB线取5V,没接电池和升压电路;

08个人建议

问题:正常来说,接入外网MQTT、联动手机语音什么的会很方便,而这个项目需要访问内网网址才能访问;

解决办法1.1:获取网址方式(串口查看ip的log,路由器管理界面去看)

解决办法1.2:路由器进行MAC/ip绑定,设置快捷方式就好了。

进一步:

不使用MQTT实现远程访问:端口映射、公网ip+DDNS 或 内网穿透;

易用性:nfc录入网址/域名快捷方式,就可以一碰就访问啦;

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

09总结

这个帖子写了3.5H,希望http的思路部分可以帮到别人,注释很乱求忽略,冗余测试代码没删干净;

这个项目的http和UDP部分是学习(web->udp)WOL后做出来的,毕竟只需要新增GET API绑定PWM设置就好,但画电路板学习计算基极电阻Rb的时间占大头;

原本还想做的是,同时可用蓝牙控制这个,但Wi-Fi网页控制足够方便就没折腾了。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01简介
  • 02个人目的
  • 03直接驱动LED方式有DAC、PWM
  • 04项目部署
  • 05硬件介绍
  • 06代码介绍
  • 07待改进
  • 08个人建议
  • 09总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档