目录
1、概述
软件资料链接:https://pan.baidu.com/s/1ufIoePtnT2FYMRU48tU9_g?pwd=1234
提取码:1234
吃饭链接:https://item.taobao.com/item.htm?id=769060100842&skuId=5447092059647
视频链接:ESP8266智能插座测试板0942V1.0_哔哩哔哩_bilibili
基于ESP8266设计的一款智能插座,支持显示有效电压、有效电流、有功功率以及用电量等参数;可自行计算视在功率(有效电压x有效电流)和功率因数(有功功率/视在功率)。交流电采集芯片采用的是BL0942,分压电阻采用0.1%精度的电阻,总精度在2%内,无需校准。
板载继电器,控制输出交流电通断;
板载蜂鸣器,可自行修改源代码实现高功率用电器警报或自动断电;
板载显示屏,可自定义显示内容信息;
板载220V输出插座,可直接插用电器的插头;
提供ESP8266的源代码,可自行开发其他功能;
使用微信官方小程序腾讯连连远程查看电参数及控制插座通断。
2、硬件介绍
2.1模块功能介绍
2.1.1 ESP8266-12F
乐鑫官网链接:ESP8266 Wi-Fi SoC | 乐鑫科技
简单来说ESP8266是一个带WIFI功能的单片机,负责接收BL0942的电参数原始数据,然后解析成有效电压、有效电流、有功功率和用电量等,再通过WIFI连接互联网上传到对应服务器上。
原理图介绍:
电路中的R1是使能上拉,也就是把EN引脚设置为高电平;R2是把GPIO15下拉,这样子芯片才能正常工作,自己画原理图的时候注意这两个引脚。其中GPIO15是上电的时候要求为下拉,系统正常运行后,可以自己写代码控制其高低电平没影响。
SW3对应复位键,主要用于硬件服务重启芯片;
SW4对应功能键,上电前按下可进入烧录模式,上电后可自行编辑代码用于其他功能,默认是单击控制继电器翻转,长按5秒是重新配网;
SW5是拨码开关,用于是否接受BL0942的串口数据,因为串口的多个TX引脚不能连一起,所以烧录固件时建议把拨码开关拨到关为止;
SW5左上菱形的那个是短接符, 就是说左边TXD标识符和右边的ORX是导通的,无对应物理器件的。
2.1.2 BL0942
贝岭官网:上海贝岭股份有限公司
BL0942是一个比较适合做智能插座的芯片,采样精度高,支持串口通讯,简单易用。
原理图介绍:
R33、R27、R28、R29、R8、R26、R30、R31这几个电阻和电流电压采样有关,建议使用0.1%精度的电阻;R32是电流采样的电阻,但是这个很难找到0.1%精度的,所以推荐用1%的即可。
电压采样原理:已知V2的电压,如何知道V1的电压?这里利用简单的欧姆定律就可以计算了,V1/(R33+R27+R28+R29+R8+R26)=V2/R26,公式中只有V1是未知,所以可以求解出来。V2的电压一般是非常小的,BL0942内部会先放大到给ADC进行计算。
电流采样原理:电流采样也是通过欧姆定律来计算的,BL0942能通过ADC知道采样电阻R32两端的电压差U,再通过I=U/R32,就可以知道流过R32的电流了。
右侧的是串口光耦通信隔离电路。
2.1.3 B0303S-1WR3隔离电源
B0303S是一个隔离电源模块,输入直流3.3V,输出也是直流3.3V,但是这两个3.3V是完全隔离的,这样子就可以给BL0942提供一个隔离的电源,不会把采样的交流高压线引入ESP8266工作的低。
2.1.4 220V转直流模块
这个模块的作用就是把交流220V转成直流5V供系统使用,继电器使用的是5V,ESP8266使用的是3.3V,所以右侧是直流5V转直流3.3V电路,芯片用的是AMS1117-3.3。
2.1.5 继电器模块
用于控制交流220V的输出;即使继电器断开,输出的插座也可能会带电;因为继电器只能控制一根交流线,另外一根是直连输出的,只是无法构成回路所以用电器不会工作。但是如果人触碰了输出插座,可能会与大地构成回路触电,所以不管继电器是否闭合,都不建议触碰交流输出测。
原理图介绍:
继电器闭合流程:IO4引脚低电平--U2内部“光”亮起--U2引脚3和4导通--U17三极管导通--继电器RLY1引脚1为5V(指示灯LED1亮起)--继电器闭合--AC_L与AC _OUT_L导通;
R4为10K上拉电阻,保证在未触发情况下U17不会导通;D2为二极管,把继电器线圈断开后的反向电动势提供消耗通路。
2.2 硬件走线介绍
2.2.1 交流走线
电路板上在交流走线处都没有铺满阻焊,目的是方便自行加锡过大电流以及散热。
默认采用的是3毫欧的采样电阻,最大支持10A电流经过;如果想更大的电流,可以换成1毫欧的采样电阻,然后上述交流走线加厚焊锡即可。代码进行电流数据解析也要做对应的修改。
2.2.2 采样电阻走线
开尔文接法的电阻,叫做四触点分流电阻,电流的“主干道”与测试使用不同的触点。在PCB设计的时候,能一定程度上提高精度。
2.3 EDA导入说明
PCB工程资料使用立创EDA专业版画的,资料包里面有提供原理图及PCB源文件,可自行修改后重新打样。
导入到EDA介绍说明:立创EDA在线导入别人分享的工程文件_嘉立创怎么导入别人的文件-CSDN博客
电路板尺寸是10*10cm,可以在嘉立创免费打样;具体如何可以自行百度参考其他资料介绍说明。
3. 软件介绍
3.1 AirKiss配网流程
流程图:
简化流程:手机和ESP8266都进入配网模式---手机通过报文方式发路由器的账号密码---ESP8266收到后就连接这个路由器---ESP8266连上路由器后就通过UDP服务器接收手机发过来的一个“暗号”---ESP8266连接腾讯云服务器---ESP8266把这个“暗号”发给腾讯云---腾讯云收到“暗号”判断配网完成。其实主要目的就是手机把路由器的账号密码通过wifi报文的方式发给ESP8266。
3.2 解析BL0942源数据
ESP8266定时发指令0x58 0xAA给BL0942,BL0942就会返回一个数据包,里面包含有效电流、有效电压、有功功率、用电量等参数,通过固定的公式可以计算出来。
BL0942应用手册介绍的计算方法:
本系统采用的RL为3毫欧;电压通道和手册的一样390K*5+0.51K。
收到串口数据后,就先判断第一个字节是不是0x55,因为上面表格介绍到第一个字节固定为0x55;然后判断长度是不是23个字节;为啥是23,不是22?认真看上面表格,从0开始计算到22,所以算是校验位总共23字节。
按照数据手册说的方式计算校验位是否正确:
计算有效电流:
480行代码的数字都为常量,只要使用的采样电阻为3毫欧都是这个数值。
PS:电流似乎没有负功率,476行-479行代码或许可以不用。
再PS:为啥481行要弄%d.%d%d%d这么复杂,为啥不直接%f;因为ESP8266默认不支持%f功能。
计算有效电压:
计算有功功率:
有功功率有负功率,所以需要用490-493行来判断及计算负有功功率寄存器值;
为什么要用16777216来减?自行百度补码说明。
计算用电量:
公式中的16051.896是使用3毫欧采样电阻的,如果用其他阻值的采样电阻,这里要改。
为啥不在代码里面来计算,直接除一个常量结果,因为不想让ESP8266做过多的计算占用时间。
3.3 其他代码讲解
3.3.1 按键功能代码
按键长按:重新配网
按键单击:继电器翻转
GPIO_OUTPUT_SET(需要控制的引脚, 需要控制的电平);
这个函数是用于控制ESP8266引脚输出高低电平的;
控制蜂鸣器的话可以用这个函数,蜂鸣器用的引脚是14;低电平叫,高电平不叫。
GPIO_INPUT_GET(需要读取电平的引脚);
这个函数是用于读取ESP8266引脚电平的,低电平返回0,高电平返回非0。
3.3.2 上报电参数代码
3.3.3 显示电参数及读取电参数代码
3.3.4 BUG说明
BUG1:单击功能键时有时候没反应,或者需要按比较久松开才有反应。
这个猜测的原因是因为按键检测时放在了硬件定时器中断回调函数里面,并且这个函数也做了解析BL0942数据,占用的时间比较久导致的;例如你按下功能键时,代码正跑在计算BL0942的数据,跑完后发现你已经松开功能键了,这个时候就相当于没有检测到功能键按下。
优化逻辑:可以把按键检测做一个中断,或者把计算BL0942数据防其他函数的方法,或者其他方法。这个自行研究,把脑瓜子动起来。
BUG2:OLED显示屏有时候会显示一些其他东西。
这个猜测的原因应该是使用OLED显示时,没注意显示字符串的长度,导致超出了OLED的范围,就是出现这个问题。
BUG3:系统断电用电量会清零。
BL0942芯片不具备存储功能,断电后,记录的用电量就会清零;ESP8266有flash区,可以自行做存储。调用ESP8266内部flash的函数可以自行百度。
3.4 小程序介绍
本智能插座控制端用的是微信官方的小程序“腾讯连连”,用户使用微信配网成功后,就会在腾讯连连设备列表显示该ESP8266设备。可以自行在腾讯云后台修改控制界面,以及配网页面内容。
也可以自己写小程序对接上进行使用。
4.系统介绍
4.1 电源介绍
如上图所示,220V转直流5V给继电器供电,然后再转成直流3.3V给其他模块供电。电源为隔离电源,所以板子的右侧都为安全的,左侧都带有高压电,触碰时务必先断电。
4.2 固件烧录介绍
1.把拨码开关拨向关,串口模块与电路板连接;
USB转TTL模块 | ESP8266开发板 |
5V | 5V |
TXD | RX |
RXD | TX |
GND | GND |
2.把串口模块插入电脑,打开烧录软件并选择需要烧录的固件;
串口号以设备管理器显示的COM号为准,一般需要安装串口驱动才会显示COM号;注意一般不会是COM1
3.按住电路板的功能键不松手,然后单击一下复位键,让ESP8266进入烧录模式就会启动烧录;
4.烧录完成后,单击一下复位键就会运行新烧录的程序;正常工作时,拨码开关要拨向开的状态,否则不会显示电参数。