博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ESP8266无线串口模块介绍
阅读量:5315 次
发布时间:2019-06-14

本文共 2698 字,大约阅读时间需要 8 分钟。

ESP8266浅谈

 

ESP8266是一款串口转无线模块,内部有自带固件,操作简单。

一、ESP8266简介

ESP8266芯片是一款串口转无线模芯片,内部自带固件,用户操作简单,无需编写时序信号等。

ESP8266 系列模组是安信可(Ai-thinker)公司采用乐鑫ESP8266开发的一系列wifi 模组模块

ESP8266 特性

*802.11 b/g/n
*内置低功耗32位CPU:可以兼作应用处理器
*内置10 bit高精度ADC
*内置TCP/IP协议栈
*内置TR开关、balun、LNA、功率放大器和匹配网络
*内置PLL、稳压器和管理组件
*支持天线分集
*STBC、1x1 MIMO、2x1 MIMO
*A-MPDU、A-MSDU的聚合和0.4 s的保护间隔
*WiFi @ 2.4 GHz,支持 WPA/WPA2 安全模式
*支持STA/AP/STA+AP工作模式
*支持Smart Config功能(包括Android和iOS设备)
*SDIO 2.0、(H) SPI、UART、I2C、I2S、IR Remote Control、PWM、GPIO
*深度睡眠保持电流为10 uA,关断电流小于5 uA
*2 ms之内唤醒、连接并传递数据包
*802.11b模式下+20 dBm的输出功率
*待机状态消耗功率小于1.0 mW (DTIM3)
*工作温度范围:-40°C - 125°C
*通过 FCC, CE, TELEC, WiFi Alliance 及 SRRC 认证

模块有如下类别:

 

(图片转载于电子发烧友,如有侵权,请联系摘下)

 

二、硬件连接

ESP8266模块组供引出6个引脚,如下图所示。用于通信的有四个引脚,也就是和我们单片机的USART一样的引脚。连接方式按照如下连接:

STM32单片机端配置

硬件配置

单片机端TXD(PA9)--ESP8266RXD

单片机端RXD(PA10)--ESP8166TXD

共地。

三、程序部分

      程序部分简单来讲,用户通过USART(可以是PC,亦可以是下位机端)给无线模块发送指令,芯片内部固件程序会根据指令集进行相应操作并给予数据反馈。因为是字符串指令操作,所以控制指令相对较为简单,而相对来说数据分析就稍微复杂一点,因为接收到的数据是字符数据,所以需要对字符串拆分出数据。

      (1)初始化

      如下为初始化程序,包括WIFI的启动,通信方式的确定,建立UDP协议通信,则局域网内的PC端、手机端都可以与之通信,都可以向他发送指令。

uart_init(115200);         //串口初始化为9600    delay_ms(1000);//设置WIFI名称工作方式    printf("AT+CWSAP=\"LiMing\",\"0123456789\",11,0\r\n");    delay_ms(50);//设置通信方式:采用UDP网络通信协议    printf("AT+CIPSTART=\"UDP\",\"192.168.4.2\",5000,5000\r\n");    delay_ms(50);

      (2)数据发送(下位机端)

      数据发送代码参考下方历程,发送字符串数据,首先要发送字符串位数,然后延时,再发送字符串,再延时。

      如果原本数据就是字符串则只需要按照如上所说进行发送即可,也就是历程中的第一个数据的发送指令。再者如果发送的数据是变量,则需要用printf的变量转字符串的用法,如历程中的第二个数据,关于printf发面的知识参考博客:

 

printf("AT+CIPSEND=1\r\n");//发送字符串位数    delay_ms(1);    printf("D\r\n");//发送字符串    delay_ms(1);    printf("AT+CIPSEND=4\r\n");//发送字符串位数4位    delay_ms(1);    printf("%f\r\n",Battery_All);//发送变量%f浮点型    delay_ms(1);    change = 5;

         上位机端接收到的是字符串格式的数据,需要上位机程序把数据提取出来然后现实到上位机端。

        (3)数据接收(下位机端)

         如下为数据接收的例程代码,其为接收到字符串数据,然后提取第一个字符,第二个字符,确定工作方式,进行主控芯片模式选择。

         如果接收数据信息,只需要把第一个字符标志位改变,然后下位机根据标志位进行判别模式。

if(USART_RX_STA == 12)//(USART_RX_STA&0x8000)    {
//接收到数据----------------------------------- if(USART_RX_BUF[0] == 'M')//判断数据接收位第一位是否为M {
//模式调整 if(USART_RX_BUF[1] == '5')//判断数据接受第二位进行模式选择 { Mode_System = 2; OUT_B = 0; Flag_Mode = 5; } else if(USART_RX_BUF[1] == '6') { Mode_System = 2; OUT_B = 1; Flag_Mode = 6; } else if(USART_RX_BUF[1] == '1') { Mode_System = 1; Flag_Mode = 0; } else if(USART_RX_BUF[1] == '2') { Mode_System = 1; Flag_Mode = 1; } } }

 

转载于:https://www.cnblogs.com/flyingjun/p/6535474.html

你可能感兴趣的文章
C语言栈的实现
查看>>
代码为什么需要重构
查看>>
TC SRM 593 DIV1 250
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
Python-S9-Day127-Scrapy爬虫框架2
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
关于View控件中的Context选择
查看>>
2018icpc徐州OnlineA Hard to prepare
查看>>
Spark的启动进程详解
查看>>
使用命令创建数据库和表
查看>>
机器视觉:SSD Single Shot MultiBox Detector
查看>>
在16aspx.com上下了一个简单商品房销售系统源码,怎么修改它的默认登录名和密码...
查看>>
linux下Rtree的安装
查看>>
多米诺骨牌
查看>>
Linq 学习(1) Group & Join--网摘
查看>>
asp.net 调用前台JS调用后台,后台掉前台JS
查看>>
苹果手表:大方向和谷歌一样,硬件分道扬镳
查看>>
Android面试收集录15 Android Bitmap压缩策略
查看>>