
标准版
【训练营_进阶班】基于ESP-07的智能物联网功率计-带小夜灯
6.0k
0
0
9
简介
暑假训练营进阶班的毕业作品——基于ESP-07的智能物联网功率计,带小夜灯,特色有:0.96 oled显示,隔离式电流电压采集,触摸控制,语音控制,86盒大小,集成插座, ESP07侧焊 , 小夜灯等
简介:暑假训练营进阶班的毕业作品——基于ESP-07的智能物联网功率计,带小夜灯,特色有:0.96 oled显示,隔离式电流电压采集,触摸控制,语音控制,86盒大小,集成插座, ESP07侧焊 , 小夜灯等开源协议
:GPL 3.0
创建时间:2020-08-07 13:27:18更新时间:2022-05-10 06:15:23
描述
目录顺序 :(可能有点长,方便大家跳过)
图片 ( 啥也憋说,上图!
硬件
- 简介(特色)
- 原件选型
- 设计说明
软件
- 简介
- 程序代码说明
遇到的困难
演示 / 教程视频
-------------------------------------------------分割线-----------------------------------------------
图片
硬件
简介
本工程的基于ESP-07的智能物联网功率计,带小夜灯,特色有:
特色 | 说明 |
---|---|
oled显示 | 可将电流电压,功率,用电量,温度和湿度打印在oled屏幕上 |
隔离式电流电压采集 | 比较起非隔离采样更加安全 |
触摸控制 | 用手按按键很累,所以加了触摸 ( 雾 |
语音控制 | 可接入小爱同学(可手机),小度,天猫等智能音箱 |
PCB大小 | 控制在约61x64mm内,可以轻松塞入86暗盒内 |
集成插座 | 不需要再另外接输出线,直接通过板载插座输出 |
ESP07侧焊 | 很好的解决了ESP模块的面积占用问题,并且也解决了信号被覆铜挡住的问题 |
WS2812小夜灯 | 可以设置多种光效,例如冷光白,暖光白, 最重要的是RGB增加100%性能 ( 雾 |
TypeC接口 | 与现在大部分手机数据线通用,不必另外寻找线材 |
WS2812指示灯 | 可在固件内设置不同功率显示的不同颜色,小夜灯开启时指示灯自动关闭 |
屏幕自动关闭 | 通过触摸开关来唤醒屏幕(可在固件内设置oled存活时间) |
温湿度传感器 | 可采集家中的温湿度数据并传送到伺服器,在app中观看图表 |
原件选型
种类 | 名称 | 说明 |
---|---|---|
WIFI模块 | ESP-07 | 占用面积小,io够用,自带陶瓷天线,信号比PCB天线更强 |
电压电流采样芯片 | HLW8032 | 只需要一个引脚就可以跟单片机通讯,电路简单 |
继电器 | HK4100F-DC5V-SHG | 虽然只有3a电流但600w已经足够使用,重点是小! |
温湿度传感器 | SHTC3 | 采用i2c通讯方式,可与oled并联,减少io使用 并且芯片超小 ! 电路超简单 ! |
指示灯/小夜灯 | WS2812B-3535 | 可以设置多种颜色,并且只需要单个io即可设置多颗led的光效 |
触摸芯片 | SD8223LC | 具有自校准功能并且可以通过电阻设置不同工作模式 |
串口芯片 | ch340c | 无需外接晶振,体积小,为什么不适用其他更小的e或者n? 因为ESP的自动下崽需要同时使用dtr与rts引脚 |
设计说明

↑ 电流走向以及电路总览
电路分为2部分:强电和弱电
强电部分主要有 : 电源输入,acdc模块,电流电压采集电路,继电器以及电源输出插座
弱电部分主要有 :ESP最小系统电路,自动下崽电路,复位电路,以及5个外设的电路

从上图可见整个PCB很清楚的分成了强弱电2部分(除了led,因为要4角都有)
图里面最小的电路莫过于SHTC3温湿度传感器的电路,真的是比led电路还小!
这是ESP07的焊接图
这样很好的解决了ESP模块占用大面积的问题,并且也解决了信号被覆铜/走线挡住的问题
温度传感器附近没有元器件,以减少其他元器件的发热对测量造成误差
每一颗WS2812旁边都有一颗0.1uf的电龙,进行滤波,保护灯珠
采用的电源模块只有2x3x3cm,体积超小,并且带3,3v输出,不用在pcb上再搭5v到3,3v的降压电路
触摸电路采用的是SD8223LC, 具有自校准功能并且可以通过电阻设置不同工作模式,通过焊盘接线到覆铜小板来延伸操作距离
覆铜小板 ↓ ( 5个孔是因为方便焊接
软件
简介
程序采用了Arduino进行编程,主要使用的库有:
库 | 说明 |
---|---|
Blinker | 程序核心库,Blinker 是一套跨硬件,跨平台的物联网解决方案 使用非常简单,支持多种设备 |
Fastled | 用于控制WS2812的库 |
HLW8032 | HLW8032电量计芯片的库 |
SparkFun_SHTC3 | SparkFun SHTC3温湿度传感器的库 |
OneButton | 一个简单的按键库,通过绑定回调函数来实现多种操作:单击双击长按等, 非常方便,不用自己写判断式 |
Adafruit_SSD1306 | Adafruit的OLED库 |
Adafruit_GFX | Adafruit的图形库,类似于u8g/u8g2 |
字库 | 使用 http://oleddisplay.squix.ch/#/home 创建的10px和14px的字库 用于oled显示,因为Adafruit GFX库自带的字库太少了 |
程序总览
行数 | 说明 |
---|---|
5-15 | 库定义 |
17-19 | 定义WIFI SSID 密码 以及Blinker秘钥 |
20-68 | 各种参数定义 |
70-92 | 绑定oled屏幕,HLW8032,SHTC3,blinker组件,OneButton组件 |
94-107 | 各种常量定义 |
109-150 | 自定义图标(oled显示) |
153-361 | blinker的各种定义,详见程序 |
363-386 | onebutton的回传函数 |
394-443 | setup函数 |
445-454 | loop函数 |
456-480 | 更新app图标以及更新传感器数据 |
497-501 | 蜂鸣器 |
503-512 | 指示灯 |
514-526 | 小夜灯定时器 |
528-530 | 将bool转换成string |
532-542 | 屏幕自动休眠 |
544-608 | 屏幕显示 |
其他更多详细的请看程序注释(注释打字打到我手酸)
遇到的困难
1, 二个人在香港,另外一个人在青岛,跨越整整半个中国,在调试以及完成作品都有极大的困难
2, 在第一次打板的时候,不知道因为什么而导致打出来的板子没有覆铜.最后打样第二块板子,幸亏课程延时了
3, 电脑上开不了CAD软件来绘制外壳的dxf文件,只能将LCEDA当成CAD来用
4,选错蜂鸣器,选了无源的,最后通过更改digitalWrite() → tone() 函数解决,并且选的只有65db,声音较小,另外蜂鸣器在第一代板子上是接在gpio2的,忘记了gpio2上带有板载led,所以蜂鸣器会一直响,虽然可以通过拉高引脚来阻止蜂鸣器响但led的功能就失去了,第二代板子将蜂鸣器接到了gpio13解决
5,调试时继电器一直保持高电平,点选开关并没有任何反应,最后通过在setup函数内加入pinMode定义继电器引脚为输出解决(pinMode我几乎没用过)
6, SHTC3 温湿度传感器读不出数据,然后发现是忘了加Wire.begin()函数
7, HLW8032 读不出数据,初步怀疑是跟板载的ch340冲突而不能从串口读出数据,测试员未起床,暂待解决(距离交作业还剩-1小时)
8 ,WS2812 不亮,程序是没问题的,最后发现是焊接问题,第一颗灯珠损坏了,但是这时候发现灯珠要用4颗,但只买了5颗,而板子上的灯珠拆下来已经坏了,剩下只有一颗灯珠可用.................这个故事教训我们买零件要买多点备件
方方不起床,没照片没视频 ,md
设计图
原理图
PCB
BOM
ID | Name | Designator | Footprint | Quantity |
---|---|---|---|---|
1 | FST-4020 | BUZZER | BUZ-SMD_L4.0-W4.0-P3.50-L | 1 |
2 | S8050 | Q1,Q2 | SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BR | 2 |
3 | 150KΩ | R18 | R2512 | 1 |
4 | SHTC3 | U3 | SENSORM-SMD_4P-L2.0-W2.0-P1.00 | 1 |
5 | K2-3.6×6.1_SMD | KEY1 | KEY-SMD_2P-L6.2-W3.6-LS8.0 | 1 |

添加到专辑
0
0
分享
侵权投诉
评论