
开源协议
:CC BY-NC-SA 4.0
描述
柔性灯丝小夜灯
项目属性
本项目为首次公开,为本人原创项目。项目未曾在别的比赛中获奖。
目录
1. 项目说明
1.1 项目简介
1.2 项目功能
1.3 实物图
2. 硬件说明
2.1 硬件功能
2.2 硬件图示
2.3 引脚定义
3. 软件说明
3.1 上电流程图
3.2 代码简单说明
3.2.1文件说明
3.2.2 esp32_code.py说明
3.3 MPU6050数据简单处理
4. 设计注意事项
4.1 BOM
4.2 组装
4.3 软件烧录
4.4 使用说明
4.5 其他
1. 项目说明
1.1 项目简介
光源为柔性灯丝,主控为ESP32的小夜灯。
1.2 项目功能
1)按键切换呼吸灯和常亮模式;
2)常亮模式下顺时针扭动小夜灯提高亮度,逆时针扭动小夜灯降低亮度;
3)监测电池电压,低电量打开LED指示灯、控制ESP32睡眠并关闭灯丝;
4)连接WIFI,通过网页查看电量、控制亮度、切换呼吸灯和常亮模式。
Web界面
1.3 实物图
具体功能见演示视频
2. 硬件说明
2.1 硬件功能
1)Type-C接口,包括USB转TTL、ESD防护、过流保护;
2)电源管理,包括DC-DC、电池电压监测、锂电池充电电路、充电分流;
3)ESP32主控,包括自动下载电路;
4)MPU6050加速度传感器;
5)柔性灯丝,由MOS管控制;
6)一个自定义按键、一个LED。
2.2 硬件图示
2.3 引脚定义
MPU6050:SCL=GPIO22,SDA= GPIO23;
柔性灯丝:GPIO4;
按键:GPIO25;
LED指示灯:GPIO32;
电压监测(ADC):GPIO35。
3. 软件说明
3.1 上电流程图
3.2 代码简单说明
3.2.1文件说明
代码使用Micropython编写,包括三个文件电压boot.py、esp32_code.py、microWebSrv.py。其中,esp32_code.py和microWebSrv.py可被mpy-cross工具链生成esp32_code.mpy和microWebSrv.mpy文件加快运行速度。
Micropython上电默认执行boot.py。
microWebSrv.py是一个Web服务器,详见:https://github.com/jczic/MicroWebSrv/。
esp32_code.py是项目主程序。
3.2.2 esp32_code.py说明
可调整设置
代码中,按键由按键中断控制,MPU6050数据读取、呼吸灯闪烁、电池电压监测由Timer定时器控制。代码主要由MPU6050类,Power类、各个回调函数和中断函数构成,不难理解。
3.3 MPU6050数据简单处理
图中Z方向的角加速度即需要的数据,可以通过Z方向角加速度判断有没有扭动小夜灯。
代码中,通过Timer定时器每隔100ms读取五组MPU6050的Z方向角加速度并取均值(耗时4ms)。获得的数据如图所示。
代码采用最简单的处理方式,如果0.3秒内没有调整亮度,且该次加速度值超过限值(例如:2000),则根据加速度正负值加减亮度,测试效果良好。
4. 设计注意事项
4.1 BOM
4.2 组装
1)将沉孔磁铁拧到顶盖上。
2)首先将灯丝穿过底盖打印件(先做!!!!),然后用灯丝磁铁固定,将钢珠固定在灯丝上。
3)剪短灯丝电源线至合适长度,有条件的话压个xh2.54端子,或焊到焊盘上,注意正负极,电池粘贴固定在图中位置。
5)使用铜柱和螺丝固定PCB和底座。
6)顶盖和底盖扣到高硼硅玻璃管上,完工。
4.3 软件烧录
首先使用乐鑫flash_download_tool工具烧录ESP32_GENERIC-20240222-v1.22.2固件。
然后使用MicroPython File Uploader工具连接串口后依次上传boot.py、esp32_code.mpy、microWebSrv.mpy(.py和.mpy均可,但mpy文件小,运行速度快)。
PS:mpy文件生成方法
1)首先pip install mpy-cross 安装工具链
2)cmd切换到文件目录后执行 mpy-cross -march=xtensawin xxx.py
4.4 使用说明
可以调整esp32_code.py中的这几行,设置wifi等。
按住按键再拨动开关,并持续3~4s左右连接WIFI,打开Web服务(IP地址可以通过连接串口查看或进入路由器后台查看)
直接拨动开关则不打开Web服务。
4.5 其他
本人并非电子类或计算机相关专业,代码和硬件仅能完成所需功能,欢迎指正,但请大佬们轻喷!
本人不对因复刻本项目造成的任何事故负责!
设计图

BOM


评论