一、项目背景
家里的电器用着真不方便。晚上休息的时候,总是要下床去关灯,尤其在冬天,好不容易焐热了被窝,根本没有下床的欲望,但不关又不行。客厅里的饮水机不光在白天开着,晚上也一直开着,即耗电又耗水。有时候晚上想去关掉它,但总是懒得走而无视它开着的存在。有时候下班回家发现家里的湿度比较高,此时开除湿机好像有点晚了。
二、项目分析
我们不想下床去关灯,可以把家里的灯通过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口上。
覆铜:在继电器方面,我们没有对其进行覆铜,考虑到是强电的部分,十分危险,不进行覆铜操作,避免不必要的危险。晶振也没有进行覆铜操作,减少干扰。
OLED:OLED屏幕放在了芯片的上面,正好盖住主控电路,这使板子看起来更美观。
布局:每个器件的摆放都是按照对应芯片引脚的位置摆放,避免了打孔过线。
丝印:每个器件都有对应的丝印,方便后续焊接和调试。
七、绘制PCB需要注意的问题
7.1 WIFI天线底下需要净空区,开槽最好。
7.2 强电部分不覆铜,强电与强电、强电与弱电之间注意安全距离(尽量3mm,低于2mm的考虑挖槽)。
7.3 接线端子、micro-usb放在板子边缘,方便插线,太靠里,容易插不进去。
八、焊接
拿到的板子
焊接后的板子
接好模块的板子
运行后的板子
焊接过程遇到的问题:
我一共焊了两块板子,首先在第一块板子焊接的过程中,什么都焊好了,也测试好了,程序也烧录进去了,一切都是那么的完美,但是在一次上电插线的过程中把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的支持。
!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。
欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。
EEWorld Datasheet 技术支持