以下作品由安信可社区用户
KevinLi制作
使用2个不同功率的Led通过GPIO的PWM通道+三极管控制亮度
●供电:5V或3V
●控制:用网页http单向控制,这是一个web_server的简单实例。
●管理界面:浏览器地址栏"设备ip/LAMP/",比如"http://192.168.0.127/LAMP"
这次项目是想尝试DIY装饰灯、测试三极管硬件电路、测试和学习web_server和html的API解析过程。
效果:实际使用时,利用WB2-01s凸出来的卡座,卡到桌板缝隙或者挂起来,两面都有灯,负责不同区域照明。
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方法)
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的外围电路、静电保护、过流保护、二极管要注意,后者没加。
网页部分:
写完web转为数组存起来,实现了滑块和数字框同步;
图片元素仅供参考,个人学习用;
黄色部分为指示颜色用,不过还是有点小小问题;
手机UA 显示这个网页,框框不能自动缩放,忽略!
httpd:
-参考SDK,设计了3个GET的API路径,字符串匹配路径(最笨的方法),返回给浏览器页面(body等内容);
- web设置亮度的思路是,浏览器发送GET请求"setLED",36行的"getState"还没实现;
- 另外:esp32的web_server的api面向对象方法(设置url和web的回调)很好用。
PWM和UDP:
参考SDK,后者此项目没用上。
web前端:代码未整理,有多处冗余部分,刷新网页没有获取当前值;
httpd:还没实现 普通API 返回给前端JSON信息与前端处理;
电路板:这是这个项目第一次打板,我是业余的,尺寸和5v电源供电 有偏移和错误,但功能正常;串口引出了但没用上;
选型:这次选WB2-01S是因为我不会烧录WB2-01F,不过很遗憾吧ADC看成DAC了,只能用PWM方式调光了;
供电方式:电路板的5v引脚画错了,现在是直连USB线取5V,没接电池和升压电路;
问题:正常来说,接入外网MQTT、联动手机语音什么的会很方便,而这个项目需要访问内网网址才能访问;
解决办法1.1:获取网址方式(串口查看ip的log,路由器管理界面去看)
解决办法1.2:路由器进行MAC/ip绑定,设置快捷方式就好了。
进一步:
不使用MQTT实现远程访问:端口映射、公网ip+DDNS 或 内网穿透;
易用性:nfc录入网址/域名快捷方式,就可以一碰就访问啦;
我倾向于WEB的最大原因是,可以远程访问(如上配置端口映射)且简单网页可以轻易转为快捷方式的app,不必进行安卓开发。
这个帖子写了3.5H,希望http的思路部分可以帮到别人,注释很乱求忽略,冗余测试代码没删干净;
这个项目的http和UDP部分是学习(web->udp)WOL后做出来的,毕竟只需要新增GET API绑定PWM设置就好,但画电路板学习计算基极电阻Rb的时间占大头;
原本还想做的是,同时可用蓝牙控制这个,但Wi-Fi网页控制足够方便就没折腾了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。