基于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站视频:智能插座

基于ESp8266的智能插座相关推荐

  1. c语言智能插座多线程,基于ESP8266芯片的新型智能插座的制作方法

    本实用新型涉及一种插座,具体涉及一种智能插座,更具体涉及一种基于ESP8266芯片的新型智能插座. 背景技术: 目前普通家用插座无控制功能,即满足不了人们定时开关的需求,而市面上出现的智能插座存在插座 ...

  2. esp8266 接收udp广播_ESP8266_21基于ESP8266的一键配网

    这一节,说一下一键配网的用法.首先说为什么需要一键配网? 原因很简单,因为设备要上网.那,给那些设备配一个屏幕和一个输入设备行不行? 不是不可以,对那些成本没要求的设备是没问题的.但物联网设备大部分都 ...

  3. php与硬件通过wifi对接,基于ESP8266的WiFi排插接入贝壳互联实现天猫精灵控制

    认识众多玩家高手/拆客/DIYer,查阅更多资源,一起学习技术知识 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 hzy3774 于 2020-1-8 00:45 编辑 * 实验 ...

  4. Obloq模块:基于ESP8266的物联网模块

    OBLOQ 物联网模块 OBLOQ模块是DFRobot公司开发的一款基于ESP8266芯片的物联网通信模块.模块使用串口(TTL UART)和Arduino(或者其他单片机)通信,支持MQTT,HTT ...

  5. 最简单DIY基于ESP8266的智能彩灯②(在网页用按键和滑动条控制RGB灯)

    ESP8266和ESP32智能彩灯开发系列文章目录 第一篇:最简单DIY基于ESP8266的智能彩灯①(在网页用按钮点亮普通RGB灯) 第二篇:最简单DIY基于ESP8266的智能彩灯②(在网页用按键 ...

  6. 最简单DIY基于ESP8266的智能彩灯①(在网页用按钮点亮普通RGB灯)

    ESP8266和ESP32智能彩灯开发系列文章目录 第一篇:最简单DIY基于ESP8266的智能彩灯①(在网页用按钮点亮普通RGB灯) 文章目录 ESP8266和ESP32智能彩灯开发系列文章目录 前 ...

  7. 最简单DIY基于ESP8266的智能彩灯③(在网页用按钮+滑动条+手机APP控制RGB灯)

    ESP8266和ESP32智能彩灯开发系列文章目录 第一篇:最简单DIY基于ESP8266的智能彩灯①(在网页用按钮点亮普通RGB灯) 第二篇:最简单DIY基于ESP8266的智能彩灯②(在网页用按键 ...

  8. 基于android的门禁系统代码,基于ESP8266 base on esp8266门禁系统 安卓源码

    基于ESP8266门禁系统安卓源码 视频中的小伙伴是我的搭档,负责硬件电路搭建,为了搭电路没少熬夜,挺感谢他的. 这是本人的毕业设计(专科)历时一个月完成.在做毕业设计之前一直在准备转本考试,考完试, ...

  9. 基于ESP8266的智能家庭检测系统

    基于ESP8266的智能家庭检测系统 利用空暇时间,做了一个软硬件结合的项目,项目结束了,写篇文章来记录下吧! 目录 基于ESP8266的智能家庭检测系统 绪论 项目背景 项目方法 应用场景 系统总体 ...

最新文章

  1. 教程 | 如何在手机上使用TensorFlow
  2. uniapp防止多次点击_多次赔、不分组、价格低,守卫者3号真的这么“逆天”?...
  3. tensorflow随笔-不动点迭代求一元方程
  4. H5页面在iOS网页数字颜色自动被改变成蓝色
  5. 如何使用async / await和Firebase数据库编写漂亮的Node.js API
  6. php异步发送邮件,php通过fsockopen异步发送邮件
  7. 工程数学(数值分析)第四讲:插值逼近
  8. 重庆地方税务局报税客户端升级导致的问题
  9. 趣学 C 语言(十二)—— 文件操作
  10. [RK3399][Android7.1] adb remount失败
  11. 2022 基于SpringBoot/SSM的脚手架租赁系统
  12. mimic-iii数据库_财务会计应用程序数据库III:完成基础结构
  13. Idea格式化mybatis框架mapper文件
  14. 兄弟dcp9020cdn手册_兄弟Brother DCP-9020CDN 驱动
  15. php studay,studay是什么意思
  16. 数字ic设计|ASIC芯片开发过程
  17. ip 检测原理(简单粗暴ping ip)
  18. 基于Citrix的云桌面远程连接Mac机
  19. 拷机测试需要多久_自学找到一份初级软件测试的工作需要会什么和要多久?
  20. allegro加泪滴方法

热门文章

  1. python成绩分析器_Python-根据成绩分析是否继续深造
  2. 使用POI创建Excel无法打开
  3. 五大浏览器:chrome---Blink IE--Trident firebox--Gecko safari--Webkit opera--Blink
  4. 解决sublime汉化后部分中文显示为繁体字
  5. 基于高通sdx12平台,简单介绍编译(bitbake)
  6. (附源码)计算机毕业设计SSM旅游推广系统
  7. go get 命令介绍
  8. usb接上计算机没反应怎么办,u盘插上去电脑没反应怎么办 u盘插上后无任何反应的解决教程...
  9. python与金融量化_day33 Python与金融量化分析(三)
  10. 机器学习课后题——贝叶斯