
【训练营_进阶班】基于51单片机的esp8266物联网开关
简介
基于51单片机控制ESP8266的WiFi开关,物联网开关
简介:基于51单片机控制ESP8266的WiFi开关,物联网开关开源协议
:GPL 3.0
描述
这是最新版的WiFi开关,直接接入市电使用,使用的HTTP协议
WiFi开关设计思想
视频演示地址https://www.bilibili.com/video/BV1TT4y1L7Ji/
前言
本WiFi开关的原理是使用单片机发送AT指令给esp8266WiFi模块初始化并且连接上WiFi,然后单片机继续发送指令连接服务器,之后就是单片机一直发送GET指令读取数据流,单片机再通过串口接收服务器返回来的数据流,然后判断数据流,是否下达了开启继电器的指令。连接的是onenet云平台,使用的是HTTP协议,只能通过单片机不断的发送GET指令才能或许是否下达了开启继电器或者关闭继电器的指令。
1.使用STC89C51或者STC12C5A60S2单片机,基于51内核(别的单片机不会用),刚开始想用stc15f104w单片机了,8脚的,经过查询发现没有串口寄存器,就放弃了,最终选用12c5a60s2,手头正好有一个。使用外置晶振11.0592MHz,波特率通信误差0.0%。
2.使用esp8266 wifi模块(手头现有模块),经过不断地学习研究,终于知道了e
sp8266下载固件的方法(用ch340串口下载,很方便,把GPIO0引脚拉低才能下载),之后用串口软件试了一下AT指令,使用正常,测试可以做AP使用,也可以链接WiFi。此电路图是直接从转接板上抄下来的,使用正常。需要注意的是EN脚必须上拉模块才能工作。
3.计划使用继电器作为控制元件,因为继电器可以直流交流两用,驱动也简单,需要一个三极管加一个续流二极管外加偏置电阻,本电路设计用途是控制白炽灯泡。如果单纯的控制直流电可以选用大功率的mos或者三极管(需要考虑耐压问题)。
说一下为什么要用PNP的三极管,原因是单片机上电复位瞬间IO口输出的是高电平,如果用NPN的话这么一个瞬间继电器可能会产生误动作,不是很安全,所以用PNP的三极管,B基接低电平才导通。需要注意继电器线圈两个引脚必须加续流二极管保护三极管(这里用PNP三极管刚开始没有加偏置电阻基极使用的1K电阻写了个简单的程序测试发现无法关断继电器,后来经过不断的查询,加上了4.7K上拉电阻并把基极电阻加大到50K才正常开关)。
以下是为什么加续流二极管——————————————————————
这是因为当开关断开的一瞬间,电感(继电器线圈就是一个电感)将产生很高的电压,远远超过了电源电压值,普通的电磁继电器使用8550或8050之类的通用三极管就完全可以驱动了,其集电极-发射极最高耐压值也就几十伏。
当控制开关断开的瞬间,由于电感中的电流不能突变,将会产生上负下正极性的反向电动势,此电动势电压极高,会直接击穿三极管集射极导致继电器不能正常关断。
继电器选用12v10A电流的,通过ss8550(PNP)驱动继电器,加入续流二极管1n4007,并且给继电器强电端加入合适的保险丝已保证继电器过流触头不被烧毁。
4.电源计划使用12v的外置DC电源来给整个系统供电(并没有考虑板载USB供电,因为我这个是控制灯的,而且继电器是12v的,USB供电完全不能用,至于程序下载,使用外置USB转TTL模块),利用7805稳压芯片给单片机提供稳定的电压(经测试7805不需要加散热片就能稳定工作),7805后面加入了一个1N5819二极管,他的作用是想给WiFi模块单独测试供电的时候不给上级的7805供电。7805还给AMS1117-3.3V供电,这样设计的目的是减小压差,降低1117的发热量,毕竟WiFi模块工作在AP模式下电流也是很大的。
5.预留了两个按键,计划是当做手机不在或者断网的情况下手动开启关闭继电器用的。当然后期可能会开发别的功能,按键给设计上了硬件去抖动的功能(104电容的功劳),这样就不用在单片机里设置延时检测了。这也是第一次使用硬件去抖,实际使用效果还带后续测试,如果效果不好的话就加入软件去抖功能。
6.预留了四个LED指示灯,一个作为单片机正常工作的指示灯(0.5s闪烁周期),一个WiFi连接指示灯(接入WiFi常亮),剩余两个作为继电器状态指示用的吧。或者后续有什么新想法了就扩展一下(目前只使用了一个LED,LED4亮起说明程序已经把初始化AT指令发送完毕)。
7.使用11.059MHz晶振,这样波特率工作在115200的时候误差小。串口通信的时候不会出乱码。
8.单片机固件使用STC官网的烧录软件stc-isp (等程序完善测试好后上传下载方法)
9.板子上还留了一个DS8B20温度传感器,这个考虑把数据发送到手机APP上作为检测温度用的吧。
10.# 下面是OneNET平台创建设备教程 #
一、打开浏览器输入网址open.iot.10086.cn打开后第一步是先要注册一个账号,此过程省略
二、找到——开发者模式——点进去
三、选择多协议接入
四、选择HTTP协议并点击创建一个产品
五、点击后会弹出一个窗口来,产品信息随便填写,技术参数按照图片选好后点击确定
六、点击确定后弹出另一个窗口来,然后点击立即添加设备
七、然后点击添加设备,填写信息后点击“添加”会出来设备信息,这里需要记住设备ID
八、接着上一步添加数据流
先点击“数据流”——“数据流模板管理”——“添加数据流模板”
之后会弹出一个窗口,在里面填好信息(数据流名称就是码源中的数据流名称,这里写的什么码源中就要写什么)点击添加这一步就完成了
九、我们来添加一个手机端APP应用界面,点击应用管理
填写好信息后点击新增就可以了
十、点击新增的应用,进入点击编辑应用,接下来就任由你自己发挥了,选择一个开关,拖出来放到合适的位置,之后点击拖出来的开关图标,选择右侧的选择数据流选择刚才创建的设备,会自动出来刚才创建的数据流信息,下面的开关信息默认就可以
之后点击右上角的保存按钮即可,然后可以预览一下,也可以下载一个手机app,登录你的账号就可以看到你创建的这个应用了!
十一、还有一步就是返回这个界面然后点击框里的查看apikey,这个也是需要写到码源里的
接下来我们设置一下WiFi模块,电路板上的R1R3先不要焊接,用CH340TTL模块连接好线路(TTL-RXD接R1靠近WiFi模块侧,TTL-TXD接R3靠近WiFi模块侧)GND接GND,TTL模块5v输出接到板子上的5v排针上,打开软件sscom v5.13.1(软件可以去百度搜索) 选择好串口号,波特率选择115200,加回车换行点上对号
插上usb,选好串口号,打开串口,在软件下方输入AT,点击发送,应该会收到模块返回的OK字符,这样就算是连接好线缆了
如果没有任何回复,请检查TXDRXD是否接反了,ESp8266模块使用3.3v供电,靠板子上的AMS1117供电
发送AT测试ok后我们就可以输入指令了
首先,把默认波特率改成4800;输入指令AT+UART=4800,8,1,0,0 返回ok之后需要吧波特率选项那里改成4800才能使用
然后再发送AT测试是否返回OK
AT//测试模块是否能正常通讯,返回"ok"即为正常
AT+CWMODE=1//配置成 STA模式
AT+RST//重启生效
AT+CIFSR//查询设备IP
AT+CWJAP=“777”,“guaishou”//连接你手机的热点“777”为热点的名称,"guaishou"为密码(WiFi热点最好不要是中文名称,因为不支持输入中文)
输入WiFi之后会出现这样的提示
这样即代表设置成功正常了,然后拆下TTL线来插到H3排针上准备给单片机下载程序
这里需要先下载keil4,创建工程并复制码源,(具体过程就不写了)在码源里修改设备ID跟apikey,还有数据流就可以编译下载了
下载方法,打开STC-ISP
第3步选择编译好的hex,
点击下载,给单片机断开5v供电重新上电,一会就会提示程序下载成功,成功后焊接上跳线测试是否正常
这样接好后,去掉串口线,给板子供上12v直流电,手机端点击开关一般就会听到继电器吸合的声音了
目前只是调试好了一个一路继电器
2020-8-21
今天新买的5v电源模块到了,但是打的板子还在工厂加工,可能新版上传不了了,给看一下电源模块
还有设计的新版本蓝图
最新版本采用原件双面设计,减小板子整体体积,直接接上市电就可以使用!控制电器非常的方便。
设计图
BOM
ID | Name | Designator | Footprint | Quantity |
---|---|---|---|---|
1 | SS8550 | Q2,Q1 | SOT-23_L2.9-W1.3-P0.95-LS2.4-BR | 2 |
2 | 11.0592MHz | X1 | HC-49US_L11.5-W4.5-P4.88 | 1 |
3 | 3R2100H | F1,F2 | FUSE-TH_BD4.3-L12.5-P16.50-D0.6 | 2 |
4 | OFF | KEY2,KEY1 | KEY-TH_4P-L6.0-W6.0-P4.50-LS7.5 | 2 |
5 | Boot | H1 | HDR-F-2.54_1X2 | 1 |

评论