写在前面

  这篇博客是我初探物联网,东西简陋代码简陋,让各位看官见笑了哈。话不多说直接进入正题。

  首先大致介绍下ESP8266,我用的是ESP-01这款,安信可的,具体参数大家可以直接上安信可官网找到资料,非常详细。ESP8266文档中心:安信可ESP8266文档中心
  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的手册最后面。
  焊接好之后成品如下:
  
  (打码的地方是我废弃的ESP-12S模块…辛辛苦苦搭的电路结果因为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 这样的信息,我们只需要冒号后面的数据,前面的数据不细说了。
  下一步就是写单片机里面的程序了,要让单片机实现我们之前进行的操作。
  代码如下:

#include<reg52.h>typedef unsigned char uint8;
typedef unsigned int uint16;
uint8 i,j,temp;
bit flag;
uint8 receive[4];
uint8 code table[]="AT+CIPMUX=1\r\n";
uint8 code table1[]="AT+CIPSERVER=1,8080\r\n";void shortdelay(uint16 n){       //短延时uint16 i,j;for(i=n;i>0;i--){for(j=110;j>0;j--){;}}
}void esp_init()
{uint8 a=0,b=0;while(table[a]!='\0'){SBUF=table[a];       //写入要发送的字符while(!TI);           //等待发送完成TI=0;              //发送a++;}shortdelay(50);          //延时函数while(table1[b]!='\0'){SBUF=table1[b];while(!TI);         //等待发送完成TI=0;b++;}
}void int_init(){           //开启定时器1,产生9600波特率TMOD = 0x20;         //定时器1工作在方式2八位自动重装模式TH1 = 0xfd;TL1 = 0xfd;TR1 = 1;               //开启定时器1PCON = 0x00;           //波特率不加倍SM0 = 0;               //串口工作方式SM1 = 1;   REN = 1;               //串口接收允许EA = 1;                    //打开全局中断ES = 1;                    //允许串口中断
}void Uart() interrupt 4
{temp=SBUF;                //取出接收到的数据RI=0;                    //清除接收中断标志位if(temp==':'||i>0){receive[i]=temp;i++;if(temp=='\n'){i=0;}}
}void main(){int_init();                                //中断初始化,定时器初始化esp_init_init();                       //模块初始化,发送那两条指令while(1){if(receive[1]=='1'){             //收到1点亮所有LEDP1 = 0x00;}else P1 = 0xff;                        //否则熄灭所有LED}
}

  定时器1产生9600波特率这个我在之前的博客里面有介绍,不懂的可以看下 单片机与上位机的串行通信

  烧好程序后,可以用串口助手看下板子发送的指令正不正常,我这里按一下复位就会发送 AT+CIPMUX=1AT+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)中放的两行代码,如果放到串口中断服务函数里面的

     if(temp=='\n'){i=0;}

  就会出现这种情况:手机发1,板子没反应,再发1,LED亮。我还没试过先发1再发0。估计情况类似,可能LED会亮,然后下次再发1的话LED会灭。就是控制滞后一轮,具体原因分析不出来,路过的看官如果知道希望能在评论区告诉我~

51单片机+ESP8266实现局域网内WiFi控制LED相关推荐

  1. 51 单片机 (1) I/O口 按键控制LED之P0口排坑篇

    实验内容 此次实验为利用单片机读取开关的状态从而控制LED的亮灭. 实验环境 仿真软件 Protue 8.9 sp2 IDE Keil5 C51 单片机 AT89C51 Protues仿真图 所用器件 ...

  2. 51单片机(三)独立按键控制LED

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分:建议先学习51单片机,其是STM32等高级单片机的基础:这样再学习STM32时才能融会贯通. ☀️ 专栏适 ...

  3. 51单片机+ESP8266制作的门锁,含电路图、制板文件。支持密码、人脸、语音。

    51单片机+ESP8266制作的门锁,含电路图.制板文件.支持密码.人脸.语音. 硬件部分 软件部分 功能 第三方API.SDK 原理图 主要代码 程序执行流程 硬件部分 Esp-8266-01S(3 ...

  4. 基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料)

    资料编号:091 通过51单片机控制4个步进电机旋转,模拟出机器人的四肢动作,全套资料齐全:具体功能请下方看演示视频 91-基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料) 单片 ...

  5. ESP8266学习笔记:实现ESP8266的局域网内通信

    ESP8266学习笔记:实现ESP8266的局域网内通信 现在就以实例入手.工程使用的是IOT_DEMO,据DEMO文档可以知道ESP8266初始工作模式为softAP+station共存的模式.于是 ...

  6. 51单片机NTC热敏电阻温度采集及控制ADC0832 LCD1602

    实践制作DIY- GC0051-NTC热敏电阻温度采集及控制 一.功能说明: 基于51单片机设计-NTC热敏电阻温度采集及控制 功能介绍: STC89C52单片机(STC89C51/52 AT89C5 ...

  7. 基于51单片机的舞蹈机器人四路步进电机控制仿真

    资料编号:091  下面是相关功能视频演示: 91-基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料) 功能介绍:通过51单片机控制4个步进电机旋转,模拟出机器人的四肢动作,全套资 ...

  8. 基于51单片机宠物自动投料喂食器控制系统仿真设计( proteus仿真+程序+讲解视频)

    基于51单片机宠物自动投料喂食器控制系统仿真设计( proteus仿真+程序+讲解视频) 仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S00 ...

  9. 51单片机K型热电偶温度采集及控制温控模块MAX6675热电偶LCD1602

    实践制作DIY- GC0068-K型热电偶温度采集及控制温控 一.功能说明: 基于51单片机设计-K型热电偶温度采集及控制温控 功能介绍: STC89C52单片机(STC89C51/52 AT89C5 ...

最新文章

  1. 业内公认的AI发展最大挑战,有哪些技术突破机会?
  2. SAP CRM Opportunity response area
  3. 原生微信小程序父组件调用子组件中的方法
  4. h.264 视频解码的一点小经验(ffmpeg)
  5. JUnit4参数化和理论示例
  6. 解决TeXstudio外部查看器失败方法
  7. 强悍的 Linux —— 强悍的 find
  8. 安装Vue +webpack ,以及出现的问题d的解决
  9. 学校家教服务管理系统mysql_数据库课程设计报告-学校家教服务管理系统.doc
  10. SVN:SVN分支管理
  11. d3.js 旋转图形_凭布青云拼布图形设计软件下载-布艺设计软件 v2.0.0.1 官方版
  12. Unity3D:TCPSocket模块
  13. android 手机 屏幕镜像,怎样将手机屏幕镜像到电视上(屏幕镜像连接方式)
  14. python sorted方法
  15. hadoop系列四:mapreduce的使用(二)
  16. 0到π/0到2π,sinⁿx、cosⁿx的定积分
  17. SQL获取当前时间| 日期| SQL时间格式| SQL时间截取| getdate()用法
  18. 小程序中关于敏感词汇检测
  19. 【毕业答辩】毕业设计答辩的基本流程
  20. Blazor Web Assembly (WASM) 主题切换

热门文章

  1. linux权限转数字,–rwxr-xr-x转换成linux权限数字是多少?
  2. 边缘计算落地要多牵住几个“牛鼻子”
  3. Linux安全扫描概述
  4. 《TCP/IP详解卷1:协议》第5章 RARP:逆地址解析协议---读书笔记
  5. SpringBoot简单整合沙箱支付
  6. Zemax学习笔记(10)- 牛顿望远镜实例
  7. 基于arduino的一套农业智能检测与报警装置
  8. AV1技术学习之Chroma from Luma(CfL)
  9. MySQL 批量修改表名
  10. 基于.NET的体育用品网站