Wifi——AP模式简介(手机app控制例程)
0. 本文参考例程:野火物联
例程和APP 只支持手机跟WIFI 模块通信,是属于局域网的点对点通信,没有实现公网通信功能。
1. Wifi模块ESP8266简介
ESP8266 是串口型WIFI,速度比较低,不能用来传输图像或者视频这些大容量的数据,主要应用于数据量传输比较少的场合,比如温湿度信息,一些传感器的开关量等。
ESP8266与单片机串口连接。一方面单片机可以通过串口发送AT命令给ESP8266,ESP8266会返回给单片机一个返回值;另一方面,当手机与ESP8266连接后,APP通过Wifi发送命令给ESP8266模块,ESP8266接收并通过串口将命令发送至单片机。
2. Wifi的两种模式
AP模式: Access Point,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般的无线路由/网桥工作在该模式下。AP和AP之间允许相互连接。
Sta模式: Station, 类似于无线终端,sta本身并不接受无线的接入,它可以连接到AP,一般无线网卡即工作在该模式。
3. 例程分析
例程中的main()函数首先对各个硬件进行初始化,其中我们关注的是ESP8266模块的初始化函数ESP8266_Init()。ESP8266_Init()函数初始化了所有与ESP8266模块相连引脚的初始化,包括:uart_tx,uart_rx,使能引脚CH,复位引脚RST。
void ESP8266_Init ( void ) { ESP8266_GPIO_Config (); ESP8266_USART_Config (); macESP8266_RST_HIGH_LEVEL(); macESP8266_CH_DISABLE(); }
然后,进入函数体ESP8266_ApTcpClient_UnvarnishTest()中,并在其中无限循环,大致工作如下
macESP8266_CH_ENABLE();
使能ESP8266模块。
ESP8266_AT_Test ();
发送AT命令查看ESP8266模块是否正常。
ESP8266_Net_Mode_Choose ( AP );
设置模块为AP模式。
ESP8266_CIPAP ( macUser_ESP8266_TcpServer_IP );
设置模块的IP地址。
ESP8266_BuildAP ( macUser_ESP8266_BulitApSsid, macUser_ESP8266_BulitApPwd, macUser_ESP8266_BulitApEcn );
ESP8266模块创建WiFi热点,参数分别为Wifi名称,Wifi密码,以及Wifi的加密方式。
ESP8266_Enable_MultipleId ( ENABLE );
启动多连接。
ESP8266_StartOrShutServer ( ENABLE, macUser_ESP8266_TcpServer_Port, macUser_ESP8266_TcpServer_OverTime );
开启服务,并设定开启的端口和超时时间。
ESP8266_Inquire_ApIp ( cStr, 20 );
获取模块的AP IP。
while(1){...};
上面单片机通过发送AT命令将ESP8266设置完毕后,将等待ESP8266模块接收手机APP发送来的命令,单片机一旦接收到来自ESP8266命令,将触发串口接受中断,并根据命令做出相应的开关量的控制,比如LED或蜂鸣器等,之后发送状态信息至ESP8266,进而发送至手机APP端。代码的具体解释如下:
while(1) { if(收到ESP8266发来的串口命令) { 禁用串口接收中断; 获取命令; if(控制LED的命令){...} else if(控制蜂鸣器的命令){...} else if(获取全部信息命令){...} if(有IPD字符串){获取下发命令设备ID,更新返回信息给设备} 使能串口接收中断; } }
4. sprintf函数
在历程中一直出现sprintf函数,我以为是打印函数,可是一直没从串口读取到信息,百度后才知道,原来:sprintf与printf函数的区别,二者功能相似,但是sprintf函数打印到字符串中(将数值转换成对应字符串形式,就是变换成ASCALL码),而printf函数打印输出到屏幕上。在单片机中将数值转换成字符串是sprintf函数最广的用途。
举例:
在单片机程序中将156.23456转换成ascall码,有如下步骤:
1. 令一个浮点数变量temp=156.23456;
2. 写函数sprintf(char *buffer,”%9.5f”,temp),即可将数存在buffer数组中
此例注:格式字符%m.nf中m代表输出数值整体位数(包含小数点,占一位),n是精度(小数点后保留n位
- 点赞
- 收藏
- 关注作者
评论(0)