完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
首先大致介绍下ESP8266,我用的是ESP-01这款。
ESP-01原理图: 这个应该是正视图,就是天线那一面朝上,然后孔位对应如上图。 接线方面,GND要跟51板共地,VCC的额定电压为3.3V,CH-PD即上图EN脚需要接到VCC,RXD和TXD对应接到51板子上的TXD和RXD一般为P3.1和P3.0。这个模块我目前遇到一个问题无法解决,模块正常工作的时候芯片发热非常严重,已经属于烫手的程度,我看芯片手册上写着工作温度最高只能到85度,长期高温工作下去不知道会不会坏,安信可FAE让我EN脚串联一个10K的电阻在接到VCC上,但是实测发现发热有所缓解但还是烫手,而且串联电阻之后模块接收指令正常,但是不发WiFi了,拆掉之后恢复正常,所以只能让模块超温工作。 还有需要注意的是模块的额定电压是3.3v,51板子上供的是5V,需要经过降压处理之后才能接到模块上,不然模块必然会烧!而且51板子上的RXD和TXD也需要经过转换,这点我看到很多其他博主都没有详细写,我这里写出来给大家做个参考,很多时候诡异的问题就是在于硬件部分没有处理好。 降压电路: 用到的是LDO稳压,公司有现成的AMS1117-3.3V和其他元件,全都借用了~ TXD和RXD的降压使用的是安信可芯片手册给出来的降压电路,在ESP-12S的手册最后面。 然后就可以把51板子上的VCC、GND、RXD、TXD接到插针上,首先测量下电压对不对,看看电路有没有问题。我这里测量数据是输入电压4.6V,1117的Vout出来的电压为3.29V。输入的RXD电压为4.7V?(记不清了),经过降压之后是2.9V。然后可以放心把模块插上了。 模块这边在插上前我预先用USB-TTL模块接到电脑上做了些处理。 首先保证模块和电脑可以通信,然后可以先发个 AT 指令看看模块正不正常,一般来说电脑端串口助手会收到OK。 然后可以开始设置模块,指令如下: AT+CWMODE=2 // 模块工作在AP模式,1为station模式,3为AP+station模式 AT+CWSAP=“ESP8266”,“666666”,11,3 //设置WiFi名称,密码,通道号,加密方式。通道号是参照别的博主写的,3是WPA2_PSK 加密 AT+RST // 重启模块 一般到这就设置好了,但是代码中我让单片机产生的是9600的波特率,所以我这里也把模块的波特率改为9600。 AT+UART = 9600,8,1,0,0 //9600-波特率 8-8bit数据位 1-1bit停止位 0-none校验位 0-不使能流控。 我查资料的时候发现有小伙伴把流控打开了,而USB-TTL模块上没有流控,导致设置完之后就不能通信了,然后只能重刷固件。我这里没有遇到这个问题,刷固件倒是刷了一次,一开始按照其他博主的指令死活修改不了波特率,后来换了上述之后才行,估计跟我的固件无关。刷固件的教程有不少,这里就不写了。 做完上面的操作之后,可以把串口助手波特率改为9600,先看下跟电脑通信是否正常,如果没问题的话用手机连上ESP8266,然后手机下载一个TCP助手,连上WiFi,然后串口助手再发送以下两条指令: AT+CIPMUX=1 //开启多连接 AT+CIPSERVER=1,8080 //建立服务器,端口号8080 注意这两条指令在每次模块重启之后都要设置一遍,不然是无法远程连接到模块的。 然后手机端打开TCP助手,建立一个连接,模块的IP地址一般为192.168.4.1,也可以串口助手发送AT+CIFSR来查询。端口号填上之前设置的8080,随便发点什么,如果一切正常的话,在串口助手可以收到类似 +IPD,0,3:111 这样的信息,我们只需要冒号后面的数据,前面的数据不细说了。 下一步就是写单片机里面的程序了,要让单片机实现我们之前进行的操作。 代码如下: 定时器1产生9600波特率这个我在之前的博客里面有介绍,不懂的可以看下 单片机与上位机的串行通信 烧好程序后,可以用串口助手看下板子发送的指令正不正常,我这里按一下复位就会发送 AT+CIPMUX=1和AT+CIPSERVER=1,8080 这两条指令,而且是分开两行的,证明发送指令正常,然后再用串口助手发 +IPD,0,3:1这条指令给单片机,如果小灯亮,那么51板子是没问题了。如果有异常请自己找下原因,我这里测试都是没有问题的。 最后一步把模块与51开发板连接起来,VCC GND TXD RXD对应好,然后按一下板子的复位按钮,如果看到ESP模块上面蓝色小灯闪了,证明开发板跟ESP-01模块通信正常。然后用手机连上WIFI,打开TCP助手,建立一个新连接,IP地址192.168.4.1,端口8080,发送一个1,如果看到开发板上的小灯亮了,说明一切正常,如果没亮,还请再找找原因~ 同理发送0,开发板上所有LED小灯熄灭。结束~ 花了两三天时间,一开始是ESP模块波特率改不了,然后是设计降压电路,焊接降压电路,芯片发热又想解决发热问题,遇到不少坑,最后看到这几个破灯点亮真是激动。 下一篇可能会写让ESP-01接入互联网,然后手机端直接通过4G控制小灯亮灭,真正实现物联网的功能。希望别遇到太多困难… 另外代码中还有一个没想通的问题,主函数while(1)中放的两行代码,如果放到串口中断服务函数里面的 就会出现这种情况:手机发1,板子没反应,再发1,LED亮。我还没试过先发1再发0。估计情况类似,可能LED会亮,然后下次再发1的话LED会灭。就是控制滞后一轮,具体原因分析不出来,路过的看官如果知道希望能在评论区告诉我~ |
|
|
|
只有小组成员才能发言,加入小组>>
2449 浏览 0 评论
1002浏览 2评论
620浏览 1评论
386浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-15 18:08 , Processed in 1.560763 second(s), Total 45, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号