基于ESp8266的智能插座

tech2022-08-12  136

基于ESp8266的智能插座

基于ESP8266+STM32F1的智慧生活套件

文章目录

基于ESP8266+STM32F1的智慧生活套件一、项目背景二、项目分析三、产品框架四、设计思路五、硬件规划六、PCB设计七、绘制PCB需要注意的问题八、焊接九、智能配网方法(两种配置模式)十、生活物联网平台设备创建十一、设备绑定和三元组烧写十二、功能测试十三、项目进度十四、方案改进十五、心得体会

一、项目背景

家里的电器用着真不方便。晚上休息的时候,总是要下床去关灯,尤其在冬天,好不容易焐热了被窝,根本没有下床的欲望,但不关又不行。客厅里的饮水机不光在白天开着,晚上也一直开着,即耗电又耗水。有时候晚上想去关掉它,但总是懒得走而无视它开着的存在。有时候下班回家发现家里的湿度比较高,此时开除湿机好像有点晚了。

二、项目分析

我们不想下床去关灯,可以把家里的灯通过WIFI连接网络,通过手机来控制驱动继电器开关,客厅里的饮水机我们也可以连接网络,通过手机APP可以查看饮水机的开关状态,然后动动小手关闭它。可以在家里安装一个温湿度传感器,用来检测家里的湿度环境,通过网络上传到我们的手机,在下班的路上我们就可以看到家里的湿度情况了,然后判断需不需要打开除湿机,回到家后我们就能享受良好的环境了。

三、产品框架

3.1 控制器(哪种控制芯片,控制运行状态)

3.2 联网模块(能连接到互联网)

3.3 控制模块(控制家电的开关)

3.4 温湿度模块(能采集家里的温湿度)

3.5 指示模块(能显示模块的运行状态)

3.6 交互模块(用户能够和模块进行通信)

四、设计思路

4.1 硬件方面:

4.1.1 STM32单片机通过AT指令和esp8266模块通信,连接到阿里云生活物联网平台。

4.1.2 DHT11采集室内温度传输到生活物联网平台。

4.1.3 一路继电器控制家里的一个灯泡,用手机APP实现灯泡的开关。

4.1.4 一路继电器准备接到一个插座上,实现这个插座的开关,然后把家里的饮水机接入到这个插座上,通过手机APP控制。

4.1.5 OLED实时显示室内温湿度和开关的状态

4.1.6 4个按键:

1. 控制esp8266智能配网 2. 控制三元组的烧写 3. 控制灯的开关 4. 控制插座的开关

4.1.7 3个LED: B1 B10 B11

1. 智能配网: B10和B11同时0.2s闪烁。 2. 烧写三元组:B1和B10同时0.2s闪烁。 3. 设备没有联网状态:B1每隔0.5s闪烁 4. 设备连上网络状态:B1常量 5. 灯亮: B10亮 灯灭: B10灭 6. 插座开: B11亮 插座关: B11灭

4.1.8 W25Q64存储三元组的信息。

4.2 软件方面:

利用keil5开发。通过mqtt协议和阿里云生活物联网平台通信,通过在物联网平台创建设备,并和实际的设备绑定,可通过手机APP绑定设备,继而控制设备。另创建了web界面,可以在网页查看设备的运行状态和上传的信息。

五、硬件规划

STM32F103C8T6:

作为主控芯片,主频高,有很快的速度,实时性更好,有更大的RAM和ROM,片上外设也比较丰富,有多个串口且价格低廉。

ESP8266-01S:

实现联网功能,登入阿里云平台。是比较常用的WIFI模块,线上资源丰富,便于开发,体积小,功能强大,通过简单的AT指令就可以连接互联网,通过一个串口可以很好的和STM32进行通信。

DHT11:

采集温湿度模块,通过编程可采集室内温湿度。超快响应、抗干扰能力强、性价比高,体积小功耗低,操作简单。

0.96寸OLED:

显示温湿度和灯泡、插座的状态,观感更强。体积小,显示效果好,显示内容多,IIC通信,通信接口少,通信简单。

有源蜂鸣器:

可作为配置模块信息的提示,有源蜂鸣器比无源蜂鸣器编程更简单。

两路继电器:

连接家用电器的接口,通过小电压设备控制大电压设备。选择5V的继电器,电压使用范围合适。

W25Q64:

flash存储芯片,可存储设备三元组一些必要的数据,掉电不丢失。

三个可编程LED和一个电源指示灯:

3个可编程LED可以作为调试程序的指示,也可作为esp8266的联网模式和烧写三元组的指示灯。

4个独立按键:

独立按键可用于实现智能配网的按键,烧写三元组的按键,控制继电器开关的按键,也可用于调试程序使用。

LDO:

LDO使用ASM1117-3.3V的芯片,可在低压差稳定输出主控所需的3.3V的电压,即便宜又好用。

自带复位按键:

单片机复位按键,在程序编写过程中使用非常方便。

串口下载+ST-LINK下载:

提供两种下载模式,可自由选择,串口下载电路还可以用来传输三元组信息,ST-LINK下载更为方便。

USB接口:

USB接口采用micro-usb,采用安卓数据线接口,是使用最广的接口之一,不用购买额外的数据线。

ULN2003:

驱动继电器,一个芯片可以驱动好几路继电器,接线简单,而且非常的便宜。

六、PCB设计

设计的PCB:

网络部分 这款esp8266模块是由乐鑫生产的,便宜好用,引出两个IO引脚,可直接二次开发。我们采用的是用出厂固件的AT指令通过单片机进行通信,实现联网功能,在PCB设计过程中,我们把模块的底部挖空了,确保信号的稳定。

电源部分我们增加了5V转3.3V电路,可通过5V供电,可直接接在电脑的USB或者是5V的电源适配器上,简单方便。在电源方面加了一个自恢复保险丝,可保护电源电路不被烧毁。

继电器驱动部分我们采用的是ULN2003芯片驱动,这款芯片是高耐压、大电流复合的晶体管阵列,在5V的工作电压下能与TTL和CMOS电路直接相连,而且一个ULN2003可直接驱动7路继电器,大大节省了其它元件的消耗,并且在PCB中所占体积也比较小。

USB接口我们在micro-usb方便做了处理,在边框的部分进行了修改,使micro-usb直接接触边框,确保在使用的时候数据线可以插到micro-usb口上。

覆铜在继电器方面,我们没有对其进行覆铜,考虑到是强电的部分,十分危险,不进行覆铜操作,避免不必要的危险。晶振也没有进行覆铜操作,减少干扰。

OLEDOLED屏幕放在了芯片的上面,正好盖住主控电路,这使板子看起来更美观。

布局每个器件的摆放都是按照对应芯片引脚的位置摆放,避免了打孔过线。

丝印每个器件都有对应的丝印,方便后续焊接和调试。

七、绘制PCB需要注意的问题

7.1 WIFI天线底下需要净空区,开槽最好。

7.2 强电部分不覆铜,强电与强电、强电与弱电之间注意安全距离(尽量3mm,低于2mm的考虑挖槽)。

7.3 接线端子、micro-usb放在板子边缘,方便插线,太靠里,容易插不进去。

八、焊接

拿到的板子

焊接后的板子

接好模块的板子

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vf1Ye8ng-1599055253782)(//image.lceda.cn/pullimage/jZFYoIyEUqpRjBrFYAxpIsuMKxgVYB6XspBIAMtz.png)]

运行后的板子

焊接过程遇到的问题:

我一共焊了两块板子,首先在第一块板子焊接的过程中,什么都焊好了,也测试好了,程序也烧录进去了,一切都是那么的完美,但是在一次上电插线的过程中把micro-usb拔掉了。原因是在焊接的过程中没有固定,后面的孔的锡没有和前面的孔连接。我再次焊上去,却怎么也不通电,板子没有电,就很懵,忙活了好久之后,又把micro-usb拆掉才发现问题,原来我在这个口的电源部分打了一个孔,现在这个孔的线和电源部分断开了,没办法,我尝试飞线,但发现好丑,最后无奈把能拆的都拆了又重新焊了一个,就是多费了些功夫。

在第二个继电器的部分有一点问题,我在下载程序调试的时候,发现第二个继电器总是不能够控制,第一个和第二个继电器用料,接法一模一样,但第一个可以正常工作。我首先测继电器输出的ULN2003的引脚,发现第二个继电器的ULN2003的控制引脚电压总是低于第一个继电器的ULN2003的控制引脚。我把第一个继电器的控制引脚和第二个继电器的控制引脚短接,发现第二个继电器可以正常工作了。我就想是不是单片机的这个引脚没有焊接好,我又重新涂了一遍锡,发现还是不行,我又在想是不是程序有问题,导致整个引脚没有输出,因为都是继电器,我就在程序里把引脚换了,发现还是不行。好苦恼。最后还是没有找到原因。没得办法,继电器还得工作,因为ULN2003有7路输出,而我只用了三路,我在设计的时候还多引出了一路,正好这个有用了,我就把这个引脚和第二个继电器的引脚连接到了一块,上电,正常了。但是更纳闷为什么另一个引脚不行,可能是我虚焊了吧。

九、智能配网方法(两种配置模式)

9.1 AP模式:

步骤:

1.esp8266初始化并进入AP模式,使得手机可以搜索到esp8266模块的热点信息。 2.手机扫描WIFI列表,连接模块热点发送路由器ssid和password(通过UDP)。 3.esp8266解析字符串提取ssid和password,连接路由器。

9.2 SmartConfig模式(我们采用的模式)

这种配网模式需要使用指定的APP软件。 因为我们使用的是乐鑫生产的esp8266-01s,所以我们采用乐鑫自主研发的ESP TOUCH实现智能配网模式。ESP TOUCH 协议采⽤的是 Smart Config(智能配置)技术,帮助⽤户将采⽤ ESP8266EX 和 ESP32 的设备(以下简称“设备”)连接⾄ Wi-Fi ⽹络。⽤户只需在⼿机上进⾏简单操作即可实现智能配置。 1.手机连接家里的路由器,打开ESP TOUCH软件,输入路由器的密码。

2.esp8266开启混杂模式监听所有的网络数据包(按下设备复位键的同时按下智能配网按键,松开复位键不要松开配网按键,等待LED2和LED5同时闪烁时再松开配网按键) 3.手机通过广播发送ssid和password(点击软件中底下的确认)

4.此时手机APP出现这个界面,说明正在进行配网,需要我们等待一下。

5.出现这个界面说明我们配网成功,esp8266已成功连接路由器。 6.并且一次配网终生有效。

十、生活物联网平台设备创建

创建阿里云设备:

1.登录阿里云生活物联网平台。 2.点击创建新项目

3.输入设备名称,类型选择自有品牌项目。 4.新创建的项目

5.点击创建新产品

按上图格式填写,(注意联网方式采用蜂窝,因为阿里云不支持esp8266)

6.默认功能:

7.给我们的插座添加功能(两路开关,一路温湿度)

点击添加功能按钮,在其他类型里搜开关(我把左开关和右开关作为两路继电器的开关,可自由选择)温度和湿度的添加方式也都一样。不需要的功能可以删除。 添加后的界面:

8.在人机交互界面我们选择使用公版APP(有另外的APP的可自主选择)

点击左边的产品展示,可更换产品的图标,产品的名称、品牌。 在设备面板我们可以设置我们产品的手机APP的界面,包括布局等。

创建后之后保存退出。

9.在设备调试界面选择合宙的2G模块。

在测试设备里添加一个新的设备。

10.发布产品,开发完成。

十一、设备绑定和三元组烧写

11.1 设备绑定:

将实际的产品和云设备进行绑定。 代码中我设计了三元组的接口,不是直接把三元组写入程序中,而是可以通过串口传输要绑定设备的三元组。

操作流程:

1. 在阿里云创建完设备后,显示设备未激活,在设备调试界面

2. 在功能定义界面

3. 我们把需要的三元组和标识符的信息复制一下,中间以逗号隔开(英文逗号),一定注意: 按产品号,设备名,设备密匙,灯,插座,温度,湿度格式填写 a1MFq7NDKJv,Switch,342a55cad323807a1f93bc288ca6d2d5,leftPowerstate,rightPowerstate,temperature,humidity

4. 打开串口调试助手,

5. 把三元组和标识符信息填入发送框里,然后打开串口。

我们复位线下设备,复位的同时按住key1键不松开,此时串口第一行打印W25Q64的ID,后面一直打印接收到的数据,并且此时LED3和LED5同时闪烁,如图所示:

6. 此时点击串口上的发送按键,把三元组等信息传输给设备,之后串口会打印出三元组等的信息

7. 单片机接收到数据后会进行处理,我们不用管,至此设备绑定完成。 发送一次数据后,数据保存在flash里,下次上电时会自动读取。 刷新生活物联网平台,可以看到设备已经在线。

8. 点击运行状态,发现设备已经工作(数据已经上传)。

11.2 手机APP绑定:

1. 在物联网平台人机交互界面,点击配网+APP下载二维码

2. 填入要绑定的设备名,我的是Switch 点击生成二维码。 打开手机云智能APP:点击右上角的+号,开始扫描二维码,

3. 设备绑定成功。在主页点开

正是我们创建的界面。

11.3 web界面创建

1. 进入阿里云官网,点击控制台,选择物联网平台,点击loT Studio。

2. 新建应用,新建项目。

3. 关联产品和设备,然后就可以对web界面进行编辑了。编辑好界面,发布就可以了。

十二、功能测试

功能测试部分都将以视频的形式放在下面的附件里。

十三、项目进度

1、 8月7号到8月8号完成硬件的选型、PCB的绘制。

2、 8月10号更改了电路图继电器部分的连线,PCB线宽都加宽了,下面也没有覆铜。

3、 8月11号下单,等待运送。开始用开发板搭电路写代码。

4、 8月12号成功连接阿里云,实现了基本代码的移植。

5、 8月13号完成了温度和湿度的采集和上传。

6、 8月14号,增加了串口烧写三元组程序。完成了LED灯的烧写三元组的闪烁和智能配网的闪烁和网络连接闪烁。还完善了部分的功能描述。

7、8月15号下午板子到了,开始焊接。

8、 8月16号、完成板子的焊接和调试,以及部分视频的拍摄和工程描述。

9、8月16号晚上9点完成所有视频的拍摄上传,项目完结。

十四、方案改进

1.蜂鸣器在整个板子上没有用处,LED完全代替了提示的功能,如果再加一个声音,完全是多余的,而且蜂鸣器的体积太大。

2.板子设计的相对较大,把按键换成小按键,可以节省不小的空间。

3.可以双面放置元器件,把W25Q64、ULN2003放到背面,进一步节省空间。

4.LED换成EGB的,也可以节省空间。

5.st_link下载接口完全可以不要,采用串口下载的方式,如果做成产品,串口也可以不要,直接引出两个过孔用于下载程序。

6.把dht1、esp8266、oled全部集成在板子上,而不是使用模块。

7.加上外壳。

十五、心得体会

1.画板子要弄懂每一个器件的功能和原理,用自己熟悉的器件,不然到时候调试的时候非常头疼。

2.强电部分不覆铜,强电和强电、强大和弱电之间要注意安全距离。

3.焊接的时候要注意不要虚焊,micro-usb要固定,micro-usb下面能不打孔就不打孔。

4.买元器件一定不能只图便宜,有的商家卖的都是次品,到手后,浪费的不仅仅是金钱,更是精力,调试的时候最为致命,推荐立创商城,用着放心。

5.通过这次活动,跟着宋工学了不少,了解了一个产品从设计到制作的每一个步骤,这其中学到的不仅仅是知识,更是一种能力。在这里感谢宋工的讲解,感谢莫工、周工和群里小伙伴们的答疑解惑,感谢立创EDA的支持。

立创EDA工程链接:智能插座 B站视频:智能插座

最新回复(0)