【训练营_进阶班】基于ESP8266的智慧生活套件 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

标准版 【训练营_进阶班】基于ESP8266的智慧生活套件

简介:基于STM32F1和esp8266的智慧生活套件。可一键配网,可通过串口烧写三元组信息。实现温湿度采集上传。OLED实时显示温湿度和开关状态。控制两路继电器,一路控制灯,一路控制插座(接风扇、饮水机)

开源协议: GPL 3.0

(未经作者授权,禁止转载)

创建时间: 2020-08-06 23:06:58
更新时间: 2024-03-22 16:24:13
描述
# 基于ESP8266+STM32F1的智慧生活套件 **一、项目背景** ``` 家里的电器用着真不方便。晚上休息的时候,总是要下床去关灯,尤其在冬天,好不容易焐热了被窝,根本没有下床的欲望,但不关又不行。客厅里的饮水机不光在白天开着,晚上也一直开着,即耗电又耗水。有时候晚上想去关掉它,但总是懒得走而无视它开着的存在。有时候下班回家发现家里的湿度比较高,此时开除湿机好像有点晚了。 ``` **二、项目分析** ``` 我们不想下床去关灯,可以把家里的灯通过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: ![image.png](//image.lceda.cn/pullimage/6p5Z2qK59hzcICMIU79aKA7xKLLz1Qnv56lth7AG.png) ** 网络部分:** 这款esp8266模块是由乐鑫生产的,便宜好用,引出两个IO引脚,可直接二次开发。我们采用的是用出厂固件的AT指令通过单片机进行通信,实现联网功能,在PCB设计过程中,我们把模块的底部挖空了,确保信号的稳定。 ![image.png](//image.lceda.cn/pullimage/dtxPNpzbFWiEZxyymMH4EltrVjtyVgASyYmoNg8L.png) **电源部分:**我们增加了5V转3\.3V电路,可通过5V供电,可直接接在电脑的USB或者是5V的电源适配器上,简单方便。在电源方面加了一个自恢复保险丝,可保护电源电路不被烧毁。 ![image.png](//image.lceda.cn/pullimage/4CCKNwotO5uOdW1hKWXbyygLXAJhpOXn2MbZurml.png) **继电器驱动部分:**我们采用的是ULN2003芯片驱动,这款芯片是高耐压、大电流复合的晶体管阵列,在5V的工作电压下能与TTL和CMOS电路直接相连,而且一个ULN2003可直接驱动7路继电器,大大节省了其它元件的消耗,并且在PCB中所占体积也比较小。 ![image.png](//image.lceda.cn/pullimage/0wqBFaHtXwXKsl3y6pSrR3JQ9nszq8vq7OgIQtEY.png) **USB接口:**我们在micro\-usb方便做了处理,在边框的部分进行了修改,使micro\-usb直接接触边框,确保在使用的时候数据线可以插到micro\-usb口上。 ![image.png](//image.lceda.cn/pullimage/5r2Rw3hCS31RVMB6DpHz7zf4Xg0U0vzHUTZRRkAY.png) **覆铜:**在继电器方面,我们没有对其进行覆铜,考虑到是强电的部分,十分危险,不进行覆铜操作,避免不必要的危险。晶振也没有进行覆铜操作,减少干扰。 ![image.png](//image.lceda.cn/pullimage/gobKR2oGqzF76tZTjAlXquu7StQfwOIfuw24Al8W.png) **OLED:**OLED屏幕放在了芯片的上面,正好盖住主控电路,这使板子看起来更美观。 ![image.png](//image.lceda.cn/pullimage/uoGoQlB3gTn7Mo6rk6y2Tgm84kLqKLc6lGXSJYwj.png) **布局:**每个器件的摆放都是按照对应芯片引脚的位置摆放,避免了打孔过线。 ![image.png](//image.lceda.cn/pullimage/lZWFQQlWCFFSVBw907vIJw8TJn4cbigTGNV9xWqz.png) **丝印:**每个器件都有对应的丝印,方便后续焊接和调试。 ![image.png](//image.lceda.cn/pullimage/S7MXk3Bx1vpp1MG8Aklb0tlm0MZBtNdG2AnEkfIv.png) **七、绘制PCB需要注意的问题** **7.1 WIFI天线底下需要净空区,开槽最好。** **7.2 强电部分不覆铜,强电与强电、强电与弱电之间注意安全距离(尽量3mm,低于2mm的考虑挖槽)。** **7.3 接线端子、micro-usb放在板子边缘,方便插线,太靠里,容易插不进去。** **八、焊接** 拿到的板子 ![image.png](//image.lceda.cn/pullimage/SaOT0mZXzjiSRhDjKMObuCepWi5xBKyK2WvgMnxZ.png) 焊接后的板子 ![image.png](//image.lceda.cn/pullimage/5B9gCYbWyDLOxG02sUCJYbQgTMNA77lDnDwIBaFU.png) 接好模块的板子 ![image.png](//image.lceda.cn/pullimage/jZFYoIyEUqpRjBrFYAxpIsuMKxgVYB6XspBIAMtz.png) 运行后的板子 ![image.png](//image.lceda.cn/pullimage/myYg6eaSjKUkq3hqo1W46CKXpzqTc3jOjx2zPfsT.png) **焊接过程遇到的问题:** ``` 我一共焊了两块板子,首先在第一块板子焊接的过程中,什么都焊好了,也测试好了,程序也烧录进去了,一切都是那么的完美,但是在一次上电插线的过程中把micro-usb拔掉了。原因是在焊接的过程中没有固定,后面的孔的锡没有和前面的孔连接。我再次焊上去,却怎么也不通电,板子没有电,就很懵,忙活了好久之后,又把micro-usb拆掉才发现问题,原来我在这个口的电源部分打了一个孔,现在这个孔的线和电源部分断开了,没办法,我尝试飞线,但发现好丑,最后无奈把能拆的都拆了又重新焊了一个,就是多费了些功夫。 ``` ![image.png](//image.lceda.cn/pullimage/81xATh86Sy6lTFBmjtHvvZt5Kuz9JMlexibE3kTF.png) ``` 在第二个继电器的部分有一点问题,我在下载程序调试的时候,发现第二个继电器总是不能够控制,第一个和第二个继电器用料,接法一模一样,但第一个可以正常工作。我首先测继电器输出的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软件,输入路由器的密码。 ``` ![image.png](//image.lceda.cn/pullimage/T1ttJ9AtF82Y3lQAUsPD2iDufn6Wu3fs8l1Q21fy.png) ``` 2.esp8266开启混杂模式监听所有的网络数据包(按下设备复位键的同时按下智能配网按键,松开复位键不要松开配网按键,等待LED2和LED5同时闪烁时再松开配网按键) 3.手机通过广播发送ssid和password(点击软件中底下的确认) ``` ![image.png](//image.lceda.cn/pullimage/aBpRMnkbbkeLiOKi8b5qWLsGCjgZzz7L5vXy1DAL.png) ``` 4.此时手机APP出现这个界面,说明正在进行配网,需要我们等待一下。 ``` ![image.png](//image.lceda.cn/pullimage/n6NiawvcQpkvaakvEdbfOCovdlsRr13YXBSa6nvQ.png) ``` 5.出现这个界面说明我们配网成功,esp8266已成功连接路由器。 6.并且一次配网终生有效。 ``` **十、生活物联网平台设备创建** 创建阿里云设备: ``` 1.登录阿里云生活物联网平台。 2.点击创建新项目 ``` ![image.png](//image.lceda.cn/pullimage/KbEiVUfqfgOLFTjfnlsBQU74fovviyoqYGTfPIZw.png) ``` 3.输入设备名称,类型选择自有品牌项目。 4.新创建的项目 ``` ![image.png](//image.lceda.cn/pullimage/QLt79QvXUsH7xYXKOB52WnzriXH2agyEgKGY6qfq.png) ``` 5.点击创建新产品 ``` ![image.png](//image.lceda.cn/pullimage/f3LDS4qaPd2f9LfEXgIyivPlKMW625j39omezf64.png) ![image.png](//image.lceda.cn/pullimage/rJHvtMzTRP1Zk7tsRTOOHuApON7hLqkGvHv32tKL.png) 按上图格式填写,(注意联网方式采用蜂窝,因为阿里云不支持esp8266) ``` 6.默认功能: ``` ![image.png](//image.lceda.cn/pullimage/xoKaFzVMAeCCSIRzZvZuUoTR8RpKoZo5TxFf3ECL.png) ``` 7.给我们的插座添加功能(两路开关,一路温湿度) ``` 点击添加功能按钮,在其他类型里搜开关(我把左开关和右开关作为两路继电器的开关,可自由选择)温度和湿度的添加方式也都一样。不需要的功能可以删除。 添加后的界面: ![image.png](//image.lceda.cn/pullimage/j9Kctqv4Iu7ePjWWDYbswOeQ4Ofcfpz50POKWdmg.png) ``` 8.在人机交互界面我们选择使用公版APP(有另外的APP的可自主选择) ``` ![image.png](//image.lceda.cn/pullimage/U7V9wKR7qFMxXsgKSZpKxuoPIC9dDsN3wPyWAMzM.png) 点击左边的产品展示,可更换产品的图标,产品的名称、品牌。 在设备面板我们可以设置我们产品的手机APP的界面,包括布局等。 ![image.png](//image.lceda.cn/pullimage/EE65zYe8q9gm45NBMn6fkXyb3ntA88AQZSUhCpjs.png) 创建后之后保存退出。 ``` 9.在设备调试界面选择合宙的2G模块。 ``` ![image.png](//image.lceda.cn/pullimage/6SBCG5cdBZO0n59pjg7fD5QsFlTJGbZmScYbnx5p.png) 在测试设备里添加一个新的设备。 ``` 10.发布产品,开发完成。 ``` ![image.png](//image.lceda.cn/pullimage/KiEE5MntKTOxwzIKCNL7m8gvjhSFCBrycMpYoYZm.png) **十一、设备绑定和三元组烧写** **11.1 设备绑定:** **将实际的产品和云设备进行绑定。** **代码中我设计了三元组的接口,不是直接把三元组写入程序中,而是可以通过串口传输要绑定设备的三元组。** 操作流程: 1\. 在阿里云创建完设备后,显示设备未激活,在设备调试界面 ![image.png](//image.lceda.cn/pullimage/p7FJmro3IavUSftqtd2lTrPhqjmwTrAC1xP0vGLg.png) 2\. 在功能定义界面 ![image.png](//image.lceda.cn/pullimage/tempTJLXd152cR4xf3ovi1O5wlXumS1PmhVLexcM.png) 3\. 我们把需要的三元组和标识符的信息复制一下,中间以逗号隔开(英文逗号),一定注意: 按产品号,设备名,设备密匙,灯,插座,温度,湿度格式填写 a1MFq7NDKJv,Switch,342a55cad323807a1f93bc288ca6d2d5,leftPowerstate,rightPowerstate,temperature,humidity 4\. 打开串口调试助手, ![image.png](//image.lceda.cn/pullimage/ki3fjaDtPlHL0Ib7H42kpeE0UMxzrlbbwPj2pk7e.png) 5\. 把三元组和标识符信息填入发送框里,然后打开串口。 ``` 我们复位线下设备,复位的同时按住key1键不松开,此时串口第一行打印W25Q64的ID,后面一直打印接收到的数据,并且此时LED3和LED5同时闪烁,如图所示: ``` ![image.png](//image.lceda.cn/pullimage/QqdqZyqapIbA4mL2cdoB32q9x6ZVgiPPlSlubKMa.png) 6\. 此时点击串口上的发送按键,把三元组等信息传输给设备,之后串口会打印出三元组等的信息 ![image.png](//image.lceda.cn/pullimage/QMuUpnJ2AMBFUNETizOYhLA7Y27xcnCqmtq77U6x.png) 7\. 单片机接收到数据后会进行处理,我们不用管,至此设备绑定完成。 发送一次数据后,数据保存在flash里,下次上电时会自动读取。 刷新生活物联网平台,可以看到设备已经在线。 ![image.png](//image.lceda.cn/pullimage/dt0mtA0gSALtBKswPo9PTTa01S0R14Gi63U0iuDg.png) 8\. 点击运行状态,发现设备已经工作(数据已经上传)。 ![image.png](//image.lceda.cn/pullimage/oGsNvv0pHbllJTYj3A4t1vVIRe85xov2Xy7t0pA8.png) **11.2 手机APP绑定:** 1\. 在物联网平台人机交互界面,点击配网\+APP下载二维码 ![image.png](//image.lceda.cn/pullimage/J8fbOCCBiSLYJdK8MHxuSyHGYHBigbymYXiZvK8w.png) 2\. 填入要绑定的设备名,我的是Switch 点击生成二维码。 打开手机云智能APP:点击右上角的+号,开始扫描二维码, ![image.png](//image.lceda.cn/pullimage/aNmZ69gTuUmTNBbjj3iwX7DFIux9rUWCNHmBOnkC.png) 3\. 设备绑定成功。在主页点开 ![image.png](//image.lceda.cn/pullimage/1Mrsz8BwkYereGEuuqhHhvI3wEfE8Hd71XxwRJ9c.png) ``` 正是我们创建的界面。 ``` **11.3 web界面创建** 1\. 进入阿里云官网,点击控制台,选择物联网平台,点击loT Studio。 ![image.png](//image.lceda.cn/pullimage/a4dBa6fKMnJMSMWPAARHch4Jp8f3lUpwuQAEa4pb.png) 2\. 新建应用,新建项目。 ![image.png](//image.lceda.cn/pullimage/IGUlGwA2XSUxL9H8g5feTNYyJYA9d9ZE4g2qDA8x.png) 3\. 关联产品和设备,然后就可以对web界面进行编辑了。编辑好界面,发布就可以了。 ![image.png](//image.lceda.cn/pullimage/Kz3taJu39t6F7XamJMycDJouFti6mzQuayo5SWwF.png) **十二、功能测试** 功能测试部分都将以视频的形式放在下面的附件里。 **十三、项目进度** 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的支持。
设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次

展开

工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP