版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、AN1903 ATK-ESP8266 WIFI 模块使用说明本应用文档(AN1903,对应 ALIENTEK NANO STM32F4 开发板扩展实验 2)将教大家如何在 ALIENTEK NANO STM32F4 开发板上使用 ATK-ESP8266 WIFI 模块。本文档分为如下几部分:1,ATK-ESP8266 WIFI 模块简介2,硬件连接3,软件实现4,验证1、ATK-ESP8266 WIFI 模块简介ATK-ESP8266 是 ALIENTEK 推出的一款高性能的 UART-WiFi(串口-无线 WIFI)模块,ATK-ESP8266 板载正点原子团队研发的 ATK-ESP-01
2、模块,该模块通过 FCC,CE 认证,可直接用于出口欧美地区。ATK-ESP8266 模块采用串口(LVTTL)与 MCU(或其他串口设备)通信,内置 TCP/IP 协议栈,能够实现串口与 WIFI 之间的转换。通过 ATK-ESP8266 模块,传统的串口设备只是需要简单的串口配置,即可通过(WIFI)传输的数据。ATK-ESP8266 模块支持 LVTTL 串口,兼容 3.3V 和 5V 单片机系统,可以很方便的与你的 进行连接。模块支持串口转 WIFI STA、串口转 AP 和 WIFI STA+WIFI AP 的模式,从而快速构建串口-WIFI 数据传输方案,方便你的设备使用互联网传输
3、数据。ATK-ESP8266 模块非常小巧(29mm*19mm),模块通过 6 个 2.54mm 间距的排针与外部连接,模块外观如图 1.1 所示:图 1.1 ATK-ESP8266 模块外观图图 1.1 中,各引脚的详细描述如表 1.1 所示:序号名称说明1VCC电源(3.3V5V)2GND电源地3TXD模块串口脚(TTL 电平,不能直接接 RS232 电平!),可接单片机的RXD表 1.1 ATK-ESP8266 模块各引脚功能描述WIFI 模块的原理图如图 1.2 所示:ATK-ESP8266图 1.2 ATK-ESP8266 WIFI 模块原理图1.1 模块使用本文档,大家如何通过 A
4、LIENTEK NANO STM32F4 开发板连接到 ATK-ESP8266WIFI 模块,实现:串口无线 AP(COM-AP)、串口无线 STA(COM-STA)和串口无线 AP+STA(COM-AP+STA)这 3 个模式的测试,每个模式又包含 TCP 服务器、TCP 客户端和 UDP 这 3 个子模式,本节详细这些模式的使用。模块配置可以通过串口配置,这里我们通过开发板串口配置,并实现通信。1.1.1AT 指令简介在 AT 模式下可以通过串口的 AT 指令对系统参数做配置。指令格式如下: AT+<COMMAND>=<VALUE>rn根据不同指令,模块将返回不同的
5、返回值。其中rn 为回车换行符,用 16 进制表示,就是0X0D,0X0A。例如:“AT+CWMODE?rn”当前模块的 WIFI 模式。例如:“AT+CWMODE=3rn”设置模块 WIFI 模式为 AP+STA 模式。ATK-ESP8266 模块支持的指令列表如表 1.1.1.1 所示:4TXD模块串口接收脚(TTL 电平,不能直接接RS232 电平!),可接单片机的 TXD5RST复位(低电平有效)6IO_0用于进入固件烧写模式,低电平是烧写模式,高电平是运行模式(默认状态)表 1.1.1.1ATK-ESP8266 模块 AT 指令表1.1.2串口无线 WIFI(COM-AP)串口无线
6、WIFI(COM-AP)模式,模块作为无线 WIFI 热点,其他 WIFI 设备连接到本模块,实现串口与其他设备之间的无线(WIFI)数据转换互传。该模式下,根据应用场景 的不同,可以设置 3 个子模式:TCP 服务器、TCP 客户端,UDP。接下来看看如何听过 AT 指令配置模块,达到我们所要的功能,这里仅列出必要配置, 配置准备:1,模块处于默认设置(即出厂设置);2,准备一个带 WIFI 功能的设备,如智能、PAD、笔记本电脑等。串口无线 WIFI AP 模式,TCP 服务器配置,如表 1.1.2.1 所示:表 1.1.2.1 串口无线 WIFI AP TCP 服务器配置串口无线 WIF
7、I AP 模式,TCP 客户端配置,如表 1.1.2.2 所示:指令作用AT+CWMODE=2设置模块 WIFI 模式为 AP 模式AT+RST重启生效AT+CWSAP=”ATK-ESP8266”, ”12345678”,1,4设置模块的 AP 参数: SSID 为 ATK-ESP8266 ,为12345678,通道号为 1,加密:WPA_WPA2_PSK指令作用AT+CWMODE=2设置模块 WIFI 模式为 AP 模式AT+RST重启生效AT+CWSAP=”ATK-ESP8266”, ”12345678”,1,4设置模块的 AP 参数: SSID 为 ATK-ESP8266 ,为12345
8、678,通道号为 1,加密AT+CIPMUX=1开启多连接AT+CIPSERVER=1,8086开启 SERVER 模式,设置端口为 8086AT+CIPSEND=0,25向 ID025 字节数据包RST重启模块GMR查看模块版本信息CWMODE设置模块 WIFI 模式CWJAP设置模块加入 AP 热点CWLAP列表当前可用 AP 热点CWQAP当前连接的 AP 热点CWSAP设置 AP 模式下的 WIFI 参数CWLIF查看已接入设备的 IPCIPSTATUS获得连接状态CIPSTART建立 TCP 连接或UDP 端CIPSENDCIPCLOSE关闭 TCP 或 UDPCIFSR获取本地 I
9、P 地址CIPMUX启动多连接CIPSERVER配置为服务器CIPMODE设置模块传输方式CIPSTO设置服务器超时时间CIUPDATE表 1.1.2.2 串口无线 WIFI AP 模式 TCP 客户端配置串口无线 WIFI AP 模式,UDP 配置,如表 1.1.2.3 所示:表 1.1.2.3 串口无线 WIFI AP 模式 UDP 配置1.1.3串口无线 STA(COM-STA)串口无线 STA(COM-STA)模式,模块作为无线 WIFI STA,用于连接到无线,实现串口与其他设备之间的无线(WIFI)数据转换互传。该模式下,根据应用场景的不同,可以设置 3 个子模式:TCP 服务器、
10、TCP 客户端,UDP。接下来看看如何听过 AT 指令配置模块,达到我们所要的功能,这里仅列出必要配置,配置准备:1,模块处于默认设置(即出厂设置);2,准备一个无线路由器,且路由器开启 DHCP服务。串口无线 STA 模式,TCP 服务器配置,如表 1.1.3.1 所示:表 1.1.3.1 串口无线 STA 模式 TCP 服务器设置串口无线 STA 模式,TCP 客户端配置,如表 1.1.3.2 所示:指令作用AT+CWMODE=1设置模块 WIFI 模式为 STA 模式AT+RST重启模块并生效AT+CWJAP="ALIENTEK"," "加入 WI
11、FI 热点:ALIENTEK,为:AT+CIPMUX=0开启单连接AT+CIPSTART="TCP","192.168建立 TCP 连接到” 192.168.1.”,8086指令作用AT+CWMODE=1设置模块 WIFI 模式为 STA 模式AT+RST重启模块并生效AT+CWJAP="ALIENTEK",""加入 WIFI 热点:ALIENTEK,为:AT+CIPMUX=1开启多连接AT+CIPSERVER=1,8086开启服务器,端为 8086AT+CIPSEND=0,25向 ID025 字节的数据指令作用AT+CWM
12、ODE=2设置模块 WIFI 模式为 AP 模式AT+RST重启生效AT+CWSAP=”ATK-ESP8266”, ”12345678”,1,4设置模块的 AP 参数:SSID 为 ATK-ESP8266,为12345678,通道号为 1,加密:WPA_WPA2_PSKAT+CIPMUX=0开启单连接AT+CIPSTART="UDP","192.168.4.",8086建立 UDP 连接到”192.168.4.AT+CIPSEND=25向目标 UDP25 字节数据AT+CIPMUX=0开启单连接AT+CIPSTART="TCP",&q
13、uot;192.168.4.”,8086建立 TCP 连接到” 192.168.4.”,8086AT+CIPMODE=1开启透传模式(仅单连接 client 时支持)AT+CIPSEND开始数据表 1.1.3.2 串口无线 STA 模式 TCP 客户端配置串口无线 STA 模式,UDP 配置,如表 1.1.3.3 所示:表 1.1.3.3 串口无线 STA 模式 UDP 配置1.1.4串口无线 AP+STA(COM-AP+STA)串口无线 AP+STA(COM-AP+STA)模式,模块既作无线 WIFI AP,又作无线 STA,其他 WIFI设备可以连接到该模块,模块也可以连接到其他无线,实现
14、串口与其他设备之间的无线(WIFI)数据转换互传。该模式下,根据应用场景的不同,可以设置 9 个子模式:(TCP 服务器、TCP 客户端,UDP)|(TCP 服务器、TCP 客户端,UDP)。接下来看看如何听过 AT 指令配置模块,达到我们所要的功能,这里仅列出必要配置,配置准备:1,模块处于默认设置(即出厂设置);2,准备一个带 WIFI 功能的设备,如智能PAD、笔记本电脑等;3,准备一个无线路由器,且路由器开启 DHCP 服务。、下面仅3 种模式。AP服务器,STA 的三种模式。串口无线 AP+STA 模式,AP 作 TCP 服务器,STA 做 TCP 服务器的配置,如表 1.1.4.1
15、 所示:表 1.1.4.1 串口无线 AP+STA 模式 AP 作 TCP 服务器 STA 作 TCP 服务器配置串口无线 AP+STA 模式,AP 作 TCP 服务器,STA 作 TCP 客户端的配置,如表 1.1.4.2 所示:指令作用AT+CWMODE=3设置模块 WIFI 模式为 AP+STAAT+RST重启模块并生效指令作用AT+CWMODE=3设置模块 WIFI 模式为 AP+STAAT+RST重启模块并生效AT+CWSAP="ATK-ESP8266","12 345678",1,4设置模块的 AP 参数: SSID 为 ATK-ESP826
16、6 ,为12345678,通道号为 1,加密:WPA_WPA2_PSKAT+CWJAP="ALIENTEK"," "加入 WIFI 热点:ALIENTEK,为:AT+CIPMUX=1开启多连接AT+CIPSERVER=1,8086开启服务器,端8086AT+CIPSTO=1200设置服务器超时时间 1200sAT+CIPSEND=0,25向 ID0数据AT+CIPSEND=1,25向 ID1数据指令作用AT+CWMODE=1设置模块 WIFI 模式为 STA 模式AT+RST重启模块并生效AT+CWJAP="ALIENTEK",&qu
17、ot; "建加入 WIFI 热点:ALIENTEK,为:AT+CIPMUX=0开启单连接AT+CIPSTART="UDP","192.168.1.",8086建立 UDP 连接到” 192.168.4.”,8086AT+CIPSEND=25向目标 UDP.1.",8086AT+CIPMODE=1开启透传模式AT+CIPSEND开始传输表 1.1.4.2 串口无线 AP+STA 模式 AP 作 TCP 服务器 STA 作 TCP 客户端配置串口无线 AP+STA 模式,AP 作 TCP 服务器,STA 作 UDP 的配置,如表 1.1.
18、4.3 所示表 1.1.4.3 串口无线 AP+STA 模式 AP 作 TCP 服务器 STA 作 UDP 配置2、硬件连接2.1 功能简介本实验功能简介:本实验用于测试 ATK-ESP8266 模块,总共包括 3 大项测试,每大项又包括 3 个子模式的测试,下面分别注意:。1)3 大功能测试项,分别单独为一个工程,AP、STA、STA+AP,即共三个工程。2)下面讲解过程出现“”符号,表示通过无线连接(WIFI)的意思。2.1.1 串口无线 WIFI(COM-AP)测试测试连接方式:WIFI 设备<>ATK-ESP8266 模块ATK-ESP8266 模块做 AP 热点,指令作用
19、AT+CWMODE=3设置模块 WIFI 模式为 AP+STAAT+RST重启模块并生效AT+CWSAP="ATK-ESP8266","12 345678",1,4加入 WIFI 热点:ALIENTEK,AT+CWJAP="ALIENTEK"," "设置模块的 AP 参数: SSID 为 ATK-ESP8266 ,为12345678,通道号为 1,加密:WPA_WPA2_PSKAT+CIPMUX=1开启多连接AT+CIPSERVER=1,8086开启服务器,端AT+CIPSTO=1200设置服务器超时时间 1200
20、sAT+CIPSTART=0,"UDP","192.1 68.1.",8086STA 作为 ID0 连接到 192.168.1.,8086AT+CIPSEND=0,25向 ID0数据AT+CIPSEND=1,25向 ID1数据AT+CWSAP="ATK-ESP8266","12 345678",1,4设置模块的 AP 参数: SSID 为 ATK-ESP8266 ,为12345678,通道号为 1,加密:WPA_WPA2_PSKAT+CWJAP="ALIENTEK"," "加
21、入 WIFI 热点:ALIENTEK,为:AT+CIPMUX=1开启多连接AT+CIPSERVER=1,8086开启服务器,端8086AT+CIPSTO=1200设置服务器超时时间 1200sAT+CIPSTART=0,"TCP","192.1 68.1.",8086STA 作为 ID0 连接到 192.168.1.,8086AT+CIPSEND=0,25向 ID0数据AT+CIPSEND=1,25向 ID1数据在 AP 热点下,有 3 种模式可供选择:TCP 服务器、TCP 客户端、UDP。分别通过 KEY0/KEY1/KEY2选择模式。1)TCP 服
22、务器:连接模块热点后,在端的调试助手软件设置自身为 TCP 客户端,这时会提示输入待连接的 IP 服务器地址和端o 这时输入串口打印的模块(TCP 服务器)IP 地址和端进行连接,(TCP 客户端)连接模块(TCP 服务器)后, 这时按下 KEY0 按键,模块会向(TCP 客户端)数据,同时(TCP 客户端)向模块(TCP 服务器)的数据,会打印在串口上。按下 KEY_UP 按键,可以选择配置选择的界面。2)TCP 客户端:TCP 连接测试,返回工作模式连接模块热点后,在端的调试助手软件设置自身为TCP 服务器,端为 8086。串口助手会提示用户输入模块(TCP 客户端)要连接的 TCP 服务
23、器 IP 的地址,以默认为“8086”,只需输入 TCP 服务器 IP 的地址即可,记得需“新行”),这时模块(TCP 客户端)会连接(TCP 服务器),连接后,按下 KEY0 按键,模块会向(TCP 服务器)数据,同时(TCP 服务器)向模块(TCP 客户端)的数据,会打印在串口上。按下 KEY_UP 按键,可以的界面。3)UDP:TCP 连接测试,返回工作模式选择配置选择连接模块热点后,在端的调试助手软件设置自身为 UDP 服务器,端为8086。串口助手会提示用户输入模块(UDP 客户端)要连接的 UDP 服务器 IP 地址,例如:输入 192.168.4.2 (注意:记得“新行”注意:不
24、用输入端,端新行”),在以默认为“8086”,只需输入 TCP 服务器 IP 的地址即可,记得需“这时模块(UDP 客户端)会连接(UDP 服务器),连接后,按下 KEY0 按键,模块会向(UDP 服务器)数据,同时(UDP 服务器)向模块(UDP 客户端)的数据,会打印在串口上。按下 KEY_UP 按键,可以选择的界面。UDP 连接测试,返回工作模式选择配置在第 4 部分,我们会详细测试步骤。2.1.2 串口无线 STA(COM-STA)测试该项测试(WIFI STA)连接方式:WIFI 设备<->无线路由器<>ATK-ESP8266 模块同样也是三种模式:TCP 服
25、务器、TCP 客户端、UDP,分别通过 KEY0/KEY1/KEY2 选择模式。操作的过程与 2.1.1 类似。2.1.3 串口无线 AP+STA(COM-AP+STA)测试该项测试连接方式:WIFI 设备<->ATK-ESP8266 模块(WIFI AP+STA)<>无线路由器<>WIFI 设备。在串口调试助手上,根据提示通过 3 个按键分别设置 STA 和 AP 的工作模式,流程先设置 STA 然后再设置 AP,在 STA 和 AP 下,若设置工作为 TCP 客户端或 UDP 测试,串口助手会提示输入连接的 IP 地址,这时在/电脑端开启 TCP 服务器
26、或 UDP 测试,开启后,在新行”)串口助手输入,例如“192.168.4.1”(工作端口默认使用:8086,最后记得“然后点击,稍等片刻既可连接到该 IP。同理,若 STA 和 AP 设置为 TCP 服务器,/。电脑端创建 TCP 客户端,输入串口助手打印的模块 IP 地址,点击连接,稍等片刻连接模块在 STA、AP 下与/电脑端都进行连接,这时可按下板子 KEY0 和 KEY1 按键,会分别向连接设备数据,设备向模块的数据会打印在串口调试助手上。在第 4部分,我们会详细测试步骤。2.2 硬件准备本实验所需要的硬件如下:1, ALIENTEK NANO STM32F4 开发板 1 个2, A
27、TK-ESP8266 模块一个3, 路由器一个4, WIFI 设备两个(可连接到 WIFI 热点)2.3 模块与开发版连接ATK-ESP8266 模块的所有数据,都是通过串口来传输的,所以我们的开发板与模块连接,只需要连接串口即可(当然也要共地),本例程通过开发板的串口 2 连接 AT-ESP8266 模块,我们通过线连接 ATK-ESP8266 和开发板相连接,连接关系如表 2.3.1 所示:表 2.3.1 ATK-ESP8266 WIFI 模块同 NANO STM32F1 连接关系表注意:模块的 RST 和 IO_0 引脚我们没有连接,直接悬空处理。3、软件实现ATK-ESP8266 模块
28、总共有三个测试历程,分别为 AP、STA 和 STA+AP,它们以文件夹工程形式单独,下面将分别进行讲解。3.1 AP 模式本实验在 NANO F4 开发板的扩展实验 1(ATK-HC05 模块测试实验)基础上进行修改,删除原来的 HC05 文件夹,新建 ATK_ESP8266 文件夹,在里面新建:common.c、wifiap、common.h 等有文件。最终去掉原工程的一些未用到的.c 文件,最终工程如图 3.1 所示:ATK-ESP8266 WIFI 模块与开发板连接关系ATK-ESP8266 WIFI 模块VCCGNDTXDRXDNANO STM32F4 开发板5VGNDPA3PA2图
29、 3.1 .1ATK-ESP8266 模块测试实验工程截图本例程由于代码量较多,我们仅对 ATK-ESP8266 文件夹里面的部分代码(conmon.c、wifiap.c),以及 main 函数进行讲解,其他的请大家参考源代码注释。首先,common.c 文件,该文件是驱动 ATK-ESP8266 模块通信的底层接口函数(AT 指令的与接收,模块状态检测等),以及相关函数输入输出显示(IP 输入、模式选择、模块状态信息显示等)等。接下来,我们几个重要的函数。第一个是 atk_8266_send_cmd 函数,该函数用于向 ATK_ESP8266 模块函数代码如下:AT 指令,该/向 ATK-E
30、SP8266命令/cmd:令字符串/ack:期待的应答结果,如果为空,则表示不需要等待应答/waittime:等待时间(:10ms)/返回值:0,(得到了期待的应答结果)/1,失败u8 atk_8266_send_cmd(u8 *cmd,u8 *ack,u16 waittime)u8 res=0; USART2_RX_STA=0;u2_printf("%srn",cmd);/命令if(ack&&waittime)/需要等待应答while(-waittime) /等待倒计时delay_ms(10);if(USART2_RX_STA&0X8000)/接收
31、到期待的应答结果该函数个参数,cmd 表示要的指令字符串,ack 表示指令后期待得到的应答字符串,waittime 表示等待应答的时间(:10ms),如:表示指令:AT+RST 到 WIFI 模块,重启模块;期待的应答为:OK;等待时间为200ms。第二个是 atk_8266_quit_trans 函数,该函数用于模式。该函数代码如下:模块透传模式,进入 AT 指令模块透传模式只有法,就是在透传状态下“+”,即可透传模式,进入 AT 模式。此时的 AT 模式下如果设置模块重启,模块又会自动进入透传模式,所以在重启模块之前,我们需要“AT+CIPMODE=0”来关闭透传模式,这样模块重启之后就入
32、 AT 模式了。进接下来两个数代码如下:函数:atk_8266_consta_check、atk_8266_get_wanip,这两个函/获取 ATK-ESP8266 模块的连接状态/返回值:0,未连接;1,连接. u8 atk_8266_consta_check(void)/ATK-ESP8266透传模式/返回值:0,;/1,失败u8 atk_8266_quit_trans(void)while(USART2->SR&0X40)=0);/等待空USART2->DR='+'delay_ms(15);/大于串口组帧时间(10ms) while(USART2-&
33、gt;SR&0X40)=0);/等待空USART2->DR='+'delay_ms(15);/大于串口组帧时间(10ms) while(USART2->SR&0X40)=0);/等待空USART2->DR='+'delay_ms(500);/等待 500msreturn atk_8266_send_cmd("AT","OK",20);/透传.atk_8288_send_cmd("AT+RST","OK",20);if(atk_8266_check_c
34、md(ack)/printf("ack:%srn",(u8*)ack); break;/得到有效数据USART2_RX_STA=0;if(waittime=0)res=1;return res;其中 atk_8266_consta_check 函数,用于检查当前连接(TCP/UDP)是否建立(或);atk_8266_get_wanip 函数,用于获取模块 STA 模式或者 AP 模式下的 IP 地址及 MAC 地址;最后我们看下 atk_8266_test,该函数代码如下:/ATK-ESP8266 模块测试主函数void atk_8266_test(void)printf(
35、"ATK-ESP8266 WIFI 模块测试rn"); while(atk_8266_send_cmd("AT","OK",20)/检查 WIFI 模块是否atk_8266_quit_trans();/透传atk_8266_send_cmd("AT+CIPMODE=0","OK",200);/关闭透传模式printf("未检测到模块!rn");delay_ms(800);printf("尝试连接模块.rn");while(atk_8266_send_cmd
36、("ATE0","OK",20);/关闭printf("-%srn",(u8*)ATK_ESP8266_CWMODE_TBL1);u8 *p; u8 res;if(atk_8266_quit_trans()return 0;/透传atk_8266_send_cmd("AT+CIPSTATUS",":",50);/AT+CIPSTATUS 指令,连接状态p=atk_8266_check_cmd("+CIPSTATUS:"); res=*p;return res;/获取 STA
37、或者 AP 模式下的 ip 地址/ipbuf:ip 地址输出缓存区void atk_8266_get_wanip(u8* ipbuf)u8 *p,*p1;if(atk_8266_send_cmd("AT+CIFSR","OK",50)/获取 WAN IP 地址失败ipbuf0=0; return;p=atk_8266_check_cmd("""); p1=(u8*)strstr(const char*)(p+1),""");*p1=0; sprintf(char*)ipbuf,"%s&
38、quot;,p+1);该函数是 ATK-ESP8266 模块测试的主程序,先检查模块是否,在检测模块正常后,直接调用 AP 测试函数 atk_8266_wifiap_test 进试。common.c 我们就就一个函数:到这里,接下来,我们看看 wifista.c 里面的代码,该文件里面/ATK-ESP8266 WIFI AP 测试/用于测试 TCP/UDP 连接/返回值:0,正常/其他,错误代码u8 atk_8266_wifiap_test(void)u16 len=0;u8 old_constate=0;u8 netpro=0; /模式u8 key;u8 timex=0;u8 ipbuf16
39、; /IP 缓存u8 *p;u16 t=999;/第一次获取状态u8 res=0; u16 rlen=0;u8 constate=0; /连接状态p=mymalloc(32);/申请 32 字节内存atk_8266_send_cmd("AT+CWMODE=2","OK",50); /设置 WIFI AP 模式atk_8266_send_cmd("AT+RST","OK",20);delay_ms(1000); /延时 3S 等待重启delay_ms(1000); delay_ms(1000); delay_ms(1
40、000);sprintf(char*)p,"AT+CWSAP="%s","%s",1,4",wifiap_ssid,wifiap_password);/配置模块 AP 模式无线参数atk_8266_send_cmd(p,"OK",1000);PRESTA:atk_8266_wificonf_show("请用设备连接 WIFI 热点:",(u8*)wifiap_ssid, (u8*)wifiap_encryption,(u8*)wifiap_password);printf("rn&qu
41、ot;);while(1)delay_ms(10);printf("正在配置 ATK-ESP8266 模块,请稍等.rn"); atk_8266_wifiap_test();/WIFI AP 测试netpro=0;netpro|=atk_8266_netpro_sel();/AP 模式选择工作模式if(netpro&0X02)/UDP 模式printf("rnUDP 模式rn"); printf("rnKEY_UP:返回rn");printf("请输入 UDP 服务器 IP 地址(端口默认使用:8086):rn&qu
42、ot;);USART_RX_STA=0;while(1)/IP 输入if(USART_RX_STA&0x8000)len=USART_RX_STA&0x3fff;/得到此次接收到的数据长度USART_RX_BUFlen=0;printf("IP 地址为:%srn",USART_RX_BUF); USART_RX_STA=0;break;key=KEY_Scan(0);if(key=WKUP_PRES)goto PRESTA;delay_ms(100);LED0=!LED0;sprintf(char*)p,"AT+CIPSTART="UDP
43、","%s",%s", USART_RX_BUF,(u8*)portnum);/配置目标 UDP 服务器atk_8266_send_cmd("AT+CIPMUX=0","OK",20);/单while(atk_8266_send_cmd(p,"OK",500);模式else/TCP 模式if(netpro&0X01)/TCP Clientprintf("rnTCP 客户端rn");透传模式测试printf("rnKEY_UP:返回rn");prin
44、tf("请输入 TCP 服务器 IP 地址(端口默认使用:8086):rn"); /IP 输入USART_RX_STA=0;while(1)if(USART_RX_STA&0x8000)len=USART_RX_STA&0x3fff;/得到此次接收到的数据长度USART_RX_BUFlen=0;printf("IP 地址为:%srn",USART_RX_BUF); USART_RX_STA=0;break;key=KEY_Scan(0);if(key=WKUP_PRES)goto PRESTA;delay_ms(100);LED0=!LE
45、D0;printf("正在连接服务器,请稍等.rn");atk_8266_send_cmd("AT+CIPMUX=0","OK",20);/0:单连接,1:多连接sprintf(char*)p,"AT+CIPSTART="TCP","%s",%s",USART_RX_BUF,(u8*)portnum);/配置目标 TCP 服务器while(atk_8266_send_cmd(p,"OK",200)printf("rnKEY_UP:返回rn&quo
46、t;);printf("连接 TCP 服务器失败rn");/连接失败key=KEY_Scan(0);if(key=WKUP_PRES)goto PRESTA;atk_8266_send_cmd("AT+CIPMODE=1","OK",200); / 传输模式为: 透传else/TCP Serverprintf("rnTCP 服务器rn");printf("正在配置 ATK-ESP 模块,请稍等.rn"); atk_8266_send_cmd("AT+CIPMUX=1",&qu
47、ot;OK",20);/0:单连接,1:多连接sprintf(char*)p,"AT+CIPSERVER=1,%s",(u8*)portnum);/开启 Server 模式(0,关闭;1,打开),端atk_8266_send_cmd(p,"OK",50);为 portnumprintf("WK_UP:测试 KEY0:数据rn");atk_8266_get_wanip(ipbuf);/服务器模式,获取 WAN IPsprintf(char*)p,"IP 地址:%s 端口:%s",ipbuf,(u8*)por
48、tnum); printf("%srn",p);/显示 IP 地址和端口printf(" 状态:%srn",(u8*)ATK_ESP8266_WORKMODE_TBLnetpro);/ 连接状态USART2_RX_STA=0;while(1)key=KEY_Scan(0); if(key=WKUP_PRES)/WK_UP测试printf("res=0;测试rn");atk_8266_quit_trans(); /透传atk_8266_send_cmd("AT+CIPMODE=0","OK",20
49、);break;/关闭透传模式else if(key=KEY0_PRES) /KEY0数据if(netpro=3)|(netpro=2)/UDPsprintf(char*)p,"ATK-8266%s 测试%02drn", ATK_ESP8266_WORKMODE_TBLnetpro,t/10);/测试数据printf("rn%s",p);atk_8266_send_cmd("AT+CIPSEND=25","OK",200);/指定长度的数据delay_ms(200); atk_8266_send_data(p,&q
50、uot;OK",100);/timex=100;指定长度的数据else if(netpro=1)/TCP Clientatk_8266_quit_trans(); atk_8266_send_cmd("AT+CIPSEND","OK",20);/开始透传sprintf(char*)p,"ATK-8266%s 测试%02drn", ATK_ESP8266_WORKMODE_TBLnetpro,t/10);/测试数据printf("rn%s",p);u2_printf("%s",p);ti
51、mex=100;else/TCP Serversprintf(char*)p,"ATK-8266%s 测试%02drn", ATK_ESP8266_WORKMODE_TBLnetpro,t/10);/测试数据printf("%srn",p);atk_8266_send_cmd("AT+CIPSEND=0,25","OK",200);该代码,就实现了对模块串口 AP 模式各个子模式的测试(TCP 服务器、TCP 客户端、UDP)。这里,该函数根据不同的子模式,按照 1.1.2 节的 3 个表格里面的指令来对模块进行配
52、置,从而实现 3 模式配置。首 先 我 们 进 行 AP 模 式 的 配 置 。 其 中 AT+CWSAP 指 令 的 参 数 : wifiap_ssid,wifiap_encryption,wifiap_password 等是在 common.c 里面定义的字符串, 如下: /WIFI AP 模式,模块对外的无线参数,可自行修改./指定长度的数据delay_ms(200);atk_8266_send_data(p,"OK",100);/指定长度的数据timex=100;if(timex)timex-; t+;delay_ms(5);if(USART2_RX_STA&
53、;0X8000)/接收到一次数据了rlen=USART2_RX_STA&0X7FFF;/得到本次接收到的数据长度USART2_RX_BUFrlen=0;/添加结束符printf("rn 收到%d 字节,内容如下rn",rlen); printf("%srn",USART2_RX_BUF);/到串口USART2_RX_STA=0;if(constate!='+')t=1000; /状态为还未连接,立即更新连接状态else t=0;/状态为已经连接了,10 秒后再检查if(t=1000)/连续 10 秒钟没有收到任何数据,检查连接是不
54、是还.constate=atk_8266_consta_check();/得到连接状态if(constate!=old_constate)old_constate = constate;if(constate='+') printf("连接rn");/连接状态elseprintf("连接失败rn"); USART2_RX_STA=0; t=0; if(t%20)=0)LED0=!LED0;myfree(p);/内存return res;以上配置,设置模块的对外无线参数,其中 SSID 为:ATK-ESP8266;加密:WPA/WPA2_A
55、ES;行连接。为:12345678。外部无线设备通过搜索其 SSID 号与 8266 模块进接着通过按键选择三种不同的子模式,对于 TCP 客户端或者 UDP 模式,还会要求输入远端 IP 地址,此时,可以通过串口调试助手输入。在配置好之后,进入数据收发测试,此时如果连接建立,我们可以通过按 KEY0数据给外部设备,外部设备过来的数据,将显示打印在串口助手上。如果一直没有收到数据,程序每隔 10 秒会检查一次连接是否,并将连接状态打印在串口调试助手上,同时 DS0 每 400ms 闪烁一次,提示测试,回到主设置界面。在运行。按 KEY_UP 按键,可以当前wifista.c 我们就函数代码如下
56、:到这里,最后再来看看 maint.c,该文件里面就一个 main 函数,main此部分代码比较简单,首先初始化了ATK-ESP8266 模块用到的串口 2(波特率:115200),最后,调用 atk_8266_test 函数,进入 ATK-ESP8266 模块的主测试程序,开始对 ATK- ESP8266的各项功能(串口无线 AP(COM-WIFI AP)进试。3.2 STA 模式STA 测试实验同样也是在 NANO F1 开发板的扩展实验 1(ATK-HC05 模块测试实验)基础上进行修改,删除原来的 HC05 文件夹,新建 ATK_ESP8266 文件夹,在里面新建:common.c、w
57、ifista、common.h 等有文件。其中 common.c 文件下的代码,与 AP 模式测试实验的一样,这里就不再讲解,我们主要讲解下 wifista.c 文件,该文件只有一个函数 atk_8266_wifista_test,函数代码如下:/ATK-ESP8266 WIFI STA 测试/用于测试 TCP/UDP 连接/返回值:0,正常/其他,错误代码u8 netpro=0; /模式u8 atk_8266_wifista_test(void)int main(void)HAL_Init();/初始化 HAL 库Stm32_Clock_Init(96,4,2,4);/设置时钟,96Mhz delay_init(96);/初始化延时函数uart_init(115200);/初始化串口 115200LED_Init();/初始化 LEDKEY_Init();/初始化按键usart2_init(115200);/初始化串口 2 波特率为 115200mem_init();/内存管理初始化atk_8266_test();/进入 ATK_ESP8266 测试const u8* wifiap_ss
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江宁波市鄞州梅溪加油站有限公司招聘工作人员1人考试备考试题及答案解析
- 2026广西南宁市吉祥路幼儿园招聘2人考试参考题库及答案解析
- 2026年仙桃市事业单位统一公开招聘工作人员216人考试备考题库及答案解析
- 2026山东青岛胶州市“优才聚胶”计划镇街中小学教师选聘50人考试参考试题及答案解析
- 中国水利水电第九工程局有限公司2026届秋季招聘148人考试参考题库及答案解析
- 2026广西柳州市第十二中学招聘考试参考试题及答案解析
- 2026年安徽省铜陵市义安区铜陵江上明珠水务有限公司招聘1名考试参考题库及答案解析
- 2026河南安阳市国文文化产业有限公司招聘考试参考题库及答案解析
- 2026渤海银行天津分行招聘考试参考题库及答案解析
- 2026上海浦东新区社区服务中心招聘考试备考试题及答案解析
- 2026年春季北师大版小学数学二年级下册教学计划(含进度表)
- 七下语文《骆驼祥子》考点总结及练习题(附答案)
- 2025年医院妇产科工作总结及2026年工作规划
- (新教材)2026年春期人教版三年级下册数学教学计划+教学进度表
- 煲汤熬粥大全
- (二诊)绵阳市2023级高三第二次诊断考试语文试卷A卷+B卷(含答案)
- 初三完整版英语单项选择100题练习题及答案含答案
- 公司车辆驾驶安全培训
- 稀土改性介电材料ALD研究-洞察及研究
- 慢阻肺全科医学管理
- 肛瘘患者的围手术期护理
评论
0/150
提交评论