Nodemcu介绍:
Nodemcu是一款基于8266wifi芯片,自带有稳压模块与USB-UART且引脚基本引出的wifi模块。硬件接口丰富,可支持UART,IIC,PWM,GPIO,ADC等,内置TCP/IP协议栈,支持多路TCP Client连接,支持丰富的Socket AT指令,10个GPIO,每个都能配置为pwm,i2c,spi Flash默认是32mbit(模块自身没有程序存储器,放在外部接口spi里)。模块示意图如图1所示,开发板引脚如图2所示,826612-F模组引脚如图3所示。
图1 模块示意图
图2 开发板引脚图
图3 826612-E模组引脚图
esp8266固件开发方案主要有以下几种:
1、AT指令(配套单片机)
2、SDK版, Arduino版
3、Lua
4、MicroPython
本实训我们选用AT指令版固件对该模块进行测试。
AT指令:
AT指令是应用于终端设备与PC应用之间的连接与通信的指令。AT指令格式为以AT为首,加上字符最后以回车作为结束,除AT两个字符外,最多可以接收1056个字符的长度(包括最后的空字符)。每个指令执行成功与否都有相应的返回。
Nodemcu的网络配置:
我们要与终端适配器(这里是WiFi模块)通信就要用AT指令。简单来说,我们想要配置这个模块,就必须发送相应的AT指令。
ESP8266支持3种工作模式”STA”、“AP”、“STA+AP”模式:
1、 STA模式:该模块通过路由器连接网络,手机或者电脑实现该设备的远程控制。
2、AP模式:该模块作为热点,手机或者电脑连接wifi与该模块通信,实现局域网的无线控制。
3、 STA+AP模式:两种模式共存,既可以通过路由器连接到互联网,也可以作为WiFi热点,使其他设备连接到这个模块,实现广域网与局域网的无缝切换。
以AT指令建立服务器为例:
在确保模块固件为官方AT指令固件前提下,才能进行如下操作。首先通过数据线将模块与PC连接,然后可利用串口助手等软件进行AT指令的发送。具体如图4所示。连接好后,可通过电脑的串口调试助手软件按照如下步骤进行配置:
步骤一:发送“AT+CWMODE=2”设置为AP模式。表示作为路由器,其他手机、计算机可以作为station连入到nodemcu,“1”为station模式,“3”为staion+AP模式。
步骤二:发送"AT+RST”,表示重启模块AT+CWMODE=2模式生效。你可以在终端的wifi连接页面看到nodemcu的wifi信号,让终端连接上nodemcu。
步骤三:发送“AT+CIPMUX=1”启动多连接。多连接可以有多个客户端连入,最多可以连5个客户,(每个客户都有对应ID号,0~4)。AT+CIPMUX=0为单路连接。
步骤四:发送“AT+CIPSERVER=1,8989”启动服务器,端口号8989,要想关闭则发送“AT+CIPSERVER=0”。
如图5所示,该图便是建立一个IP为192.168.4.1,服务端口为8989的服务器流程图。
图4 esp8266开发模块与PC连接图
图5 具体AT指令配置示例图
固件烧写步骤:
注意:(模块使用CP2102芯片进行USB与TTL之间转换,所以在使用模块前要在PC上需要先安装驱动,不然无法识别出端口号进而无法进行通信或烧写)
首先打开 “FLASH_DOWNLOAD_TOOLS_V3.6.2.2” 文件夹,然后点击“ESPFlashDownloadTool_v3.6.4exe”应用程序,出现图6窗口后,点击图6中红框中的按钮。
图6 软件界面图
按照图7所提示对软件进行配置,固件所在文件夹为“Ai-Thinker_ESP8266_DOUT_32Mbit_v1.5.4.1-a_20171130”,选择里面的bin文件,地址设置为“0x00000”,之后点击界面左下角的“START”按钮(软件),紧接着按一下esp8266模块角落有“FLASH”标识的按钮(硬件模块),然后进行等待,下方进度条完成则表示AT固件的烧写已经完成。如果显示无法连接串口,请确定所有设置准确的情况下,拔掉数据线重新连接,然后重复上面步骤即可。该方式除了适用于官方固件烧写外,同时也适用于用户利用SDK自行编写生成的固件的烧写。
固件烧写完成后,可利用串口助手对esp8266模块进行测试,测试情况如图8所示。具体步骤如下:
1、将模块与PC连接,然后对应串口,这样就可以实现电脑和模块的通信了。
2、使用串口助手软件,设置好相应的串口设置后,发送字符串“AT”后,如果模块正常,数据接收窗口会返回“OK”字样字符串。 如图8所示。
特别需要注意的是,模块波特率默认是115200,对sdk开发的固件进行烧写时波特率是74880。如烧写官方的AT固件,则固件的烧写地址为0x00000。
图7 固件下载软件设置图
图8 AT指令测试图
测试内容:
1、测试手机版网络调试助手与PC版的网络调试助手。并利用网络调试助手实现手机或PC端与esp8266开发板进行无线通信功能。
具体步骤如下
PC端利用网络调试助手建立一个服务器,服务器设置为sever模式,然后将PC上的无线网卡设置为热点,让手机连上PC的WIFI热点,然后利用手机端的网络调试助手连接PC上建立的sever模式的服务器。具体PC建立服务器步骤如图9所示。打开手机的网络调试助手,并对其进行配置,具体如图10所示(该助手只能安卓机能使用,苹果手机用户可行下载可用的网络调试助手),IP为PC端的无线网卡IP,注意不要和有线网络的IP搞混。设置好后,手机与PC间点对点连接就完成了,此时可以利用网络调试助手在手机与PC端之间进行数据的收发了。
图9 PC端服务器设置图
图10 手机端网络调试助手软件配置图
测试该模式后,可以将手机与PC的角色互换,手机设置成sever模式,PC设置为client模式。此时PC端需要输入手机的IP,手机的IP可以通过设置-关于手机-状态菜单进行查询(不同型号的手机查看IP的方式会有所不同,具体方法可自行搜索),可以查看到手机的ip地址为192.168.23.2如图11所示
图11 手机IP状态查看
可以在手机发送任何字符到PC端服务器上。具体效果如图12,图13所示。图13为接收到数据的效果图。
图12 手机端网络调试助手数据发送界面
图13 PC端网络调试助手数据接收效果界面
同时PC端也可以向手机发送数据,具体如图14所示。
图14 PC端发送数据界面
图15为PC端服务器向手机发送数据手,手机接收导数据的效果图。
图15 手机网络调试助手接收到数据效果图
2)、将esp8266开发板设置为AP模式。在esp8266开发板正常连接到串口调试助手上时,先按顺序执行以下指令,输入指令是注意要将串口助手的“发送新行”选项勾选上,这样相当于在每条指令后面发送多转义字符“/r/n”(输入指令到串口助手时不需要输入分号与后面注释,只需要输入双引号内的内容即可):
l “AT+UART=4800,8,1,0,1”;将开发板串口通信波特率设置为4800,此处如果设置错误,则需要重新烧写固件,请注意。
l “AT+CWMODE=2”;将esp8266开发板设置为AP工作模式,此时相当于一个热点。
l “AT+CIFSR”;查看esp8266开发板自身IP地址
l “AT+CWSAP_DEF="abc0001","",5,0”;将热点的名称设置成各自内容,建议用字母加学号后5位设置,以方便大家区分连接到哪一个WIFI,做实验时自己使用的电脑或手机要连接到自己的esp8266开发板才能够继续实验。
l “AT+CWLIF”;利用PC或手机连接到esp8266开发板后,利用该指令查看已连接到开发板上设备的IP地址与MAC地址是否可以对应上。
上述指令完成后, esp8266开发板相当于一个WIFI热点,手机WIFI或者PC端无线网卡相当于客户端。
网络调试助手与esp8266开发板数据传输模式1测试:
在模式1下,esp8266开发板是为客户端(client),而PC端网络调试助手为服务器端(server),此时通过串口助手向esp8266开发板发送如下AT指令,输入指令时注意要将串口助手的“发送新行”选项勾选上,这样相当于在每条指令后面发送多转义字符“/r/n”(输入指令到串口助手时不需要输入分号与后面注释,电脑要先建立TCP服务端再输入双引号内的内容即可):
l “AT+CIPMUX=0”;设置为单连接模式。
l “AT+CIPMODE=1”;设置为数据透传模式。
l “AT+CIPSTART="TCP","192.168.4.2",8989”;建立TCP连接,192.168.4.2要改为自己电脑无线网络的ip地址,8989指服务器的端口号。
l “AT+CIPSTATUS”;获取连接状态
l “AT+CIPSEND”;进入发送模式,此时esp8266会通过串口返回“OK”,并返回“>”符号,通过串口调试助手可以进行查看,具体如图16所示。
l “+++”;如果要退出发送模式,需要通过串口助手向ESP8266开发板发送3个“+”号指令,该指令发送时不能在后面添加“/r/n”,所以需要将“发送新行”选项前面的勾选项去掉。
在模式1下,接收端和发送端接收到的数据都为纯净的数据,数据的开头和结尾没有添加任何的字头字尾,具体效果如图17与图18所示。图18位串口助手界面,图19位网络调试助手界面。PC端通过网络助手向esp8266发送“7654321”,esp8266通过串口助手输入“123456789”进行发送,双方都收到来自对方发来的纯净数据。
图16 进入发送模式后串口调试助手图
图17 串口调试助手在数据发送模式下的数据发送接收界面
图18 网络调试助手在数据发送模式下的数据发送接收界面
网络调试助手与esp8266开发板数据传输模式2测试:
在模式2下,esp8266开发板充当服务器端(server)角色,而PC端网络调试助手充当客户端(client),此时需要用户通过串口助手输入对应的AT指令设置ESP8266开发板的IP地址与端口号,然后利用网络调试助手,将其设置为clien模式去连接esp8266开发板即可。具体指令如下:
l “AT+RST”;重启模块
l “AT+CIPMUX=1”;设置为多连接模式
l “AT+CIPSERVER=1,1001”;将esp8266开发板设置为server模式,端口为1001
l “AT+CIFSR”;查看开发板自身IP,如图19所示
图19 设备连接esp8266开发板成功效果图
图19中所显示的“0,CONNECT”信息,表示连接到esp8266开发板上的设备编号为0(如果是使用PC端连接的,则该编号为PC编号,如果利用手机连接的,则该编号为手机编号),出现这句信息,表示已有设备连入了esp8266开发板。通过图19可知道esp8266开发板的IP为192.168..4.1,端口为1001,此时只需要把相应的参数输入网络调试助手,并把网络调试助手设置成client模式就可以开始进行通信了。(电脑或其他设备一定要与8266开发板处于同一个网络上才能连接上)
在模式2下,假设连接到esp8266开发板的设备为用户PC,从PC端通过网络调试助手向esp8266开发板发送数据,esp8266开发板会将收到的数据以一定格式通过串口发送至PC端,此时会出现如图20所示的信息。其意思是“+IPD,
图20 esp8266开发板接收数据示意图
但使用esp8266开发板发数据却不这么方便了,每次发送数据前都要先发送“AT+CIPSEND=×,×”AT指令(第一个×是对应的client的ID号,第二个×是对应将要发送的字符个数),然后再输入需要发送的数据。此时输入的指令与数据同样地是PC端通过串口串口助手将数据发送至esp8266开发板,然后esp8266开发板通过自身的WIFI发送数据至PC端,具体如图21所示。需要注意的是,每次发送新数据的时候,不需要发送“/r/n”,所以需要将串口助手选项“发送新行”前钩去掉,但注意发送AT指令时还是需要发送新行的,只有在发送数据时不需要而已。
图21 AT指令控制esp8266开发板发送数据示意图
2、根据上述实验了解到的AT指令与TCP的相关知识,利用单片机的串口功能替代PC端的串口功能,实现手机端与esp8266开发板进行无线通信,esp8266开发板将无线通信接收到的数据通过串口发送至单片机,然后根据接收到的内容对I/O口进行控制,例如接收到0x00时LED0熄灭,接收到0x01时LED0点亮。
需要注意的是,如果采用模式2进行数据收发,esp8266在收到数据并转发给单片机时的数据格式也是:+IPD,
提示:我们可以把接收到的字符串缓存到字符数组中,所以在处理收到的数据逻辑中,首先判断接收到的串口数据是否是以’+'开始的,找到我们想要的数据后,然后判断数组中第一个“,”号与第二个“,”号之间的字符串,该字符串为接收到数据的长度n,然后将从“:”开始后的n个数据保存至一个新的字符数组,则该数组的内容就为实际接收到的内容了,该内容也是手机端或者是PC端通过无线发给esp8266开发板的数据。用户在进行数据发送时,应自定义数据格式与协议,例如使用“特殊符号开头+设备标识号+具体数据+特殊符号结尾”格式发送等。
例如具体数据可为“@a01|0x55,0x66,0x77*”,具体划分如下:
1、次串数据中“@”为数据起始标志;
2、“a01”为设备号;
3、“|”为设备号与具体数据分割;
4、“0x55,0x66,0x77”为长度为3的字节型数据,字节与字节之间用“,”符号相隔;
5、“*”为数据结束符号。
具体数据格式定义,包括起始终止符号,是否需要设备号,数据具体字节数等都应该由用户自行定义。
文章评论(0条评论)
登录后参与讨论