ESP8266学习笔记第一篇——ESP8266接入点模式的相关库函数介绍

前言:本人最近在学习ESP8266物联网开发,想写博客记录一下学习过程,同时也是进一步加深对于知识的理解和掌握,希望大家共勉!

个人觉得,不管是Arduino还是ESP8266,还是ESP32在库函数方面是比STM32简单很多的。难就难在涉及很多的互联网知识,之前没有接触过的话,是有些吃力的,所以建议大家遇到不懂的名词多使用度娘,或者gpt搜一下,并做好笔记。

下面赋上我常用的gpt3.5国内镜像网站,我认为已足够应付大多数问题。

 AIchatOShttps://chat12.aichatos.xyz/

我是看b站太极创客的视频学习的,老师声音很好听,讲的也超级好!

链接如下:

【ESP8266教程】零基础入门学用物联网-基础知识篇(太极创客团队)_哔哩哔哩_bilibili

 由于Arduino ide 没办法打开库函数定义,对于开发和了解库函数有点障碍,于是我更新了这个专栏,用于记录ESP8266所涉及的库函数,便于下次应用开发,希望对大家有所益处。

这期介绍的是接入点模式相关库函数。其中4-8函数用法大同小异。举一反三即可

下图为接入点模式相关库函数脉络图(截自太极创客官网):
网站如下:

零基础入门学用物联网 – 基础知识篇 – 目录 – 太极创客

下面我会根据脉络图对各函数挨个进行介绍。

 

一、设置接入点WiFi信息函数

WiFi.softAP(ssid, passphrase, channel, ssid_hidden, max_connection);

 1.参数:

– ssid: char型,WiFi网络名称

– passphrase: int型,WiFi密码(对于WPA2加密类型最少8个字符,对于开放网络设置为NULL)

– channel: int型,wifi信道。可选通道有1-13,不设置的情况下默认是1。

– hidden: bool型,控制 WiFI是否隐藏的标志变量。设置为0不隐藏,设置为1隐藏。

– max_connection: int型,最大的允许连接的无线终端数量。可选数值范围是1 – 4(ESP8266模块最多允许同时连接的无线终端设备数量是4个)。

2.返回值:

返回设置结果。设置成功返回true,否则返回false。数据类型为bool型。

3.说明:

(1)一般常用前两个,ssid和passphrase,即网络名称和密码。

(2)常见用法

const char *ssid = "taichi-maker"; // 这里定义将要建立的WiFi名称。此处以"taichi-maker"为示例
                                   // 您可以将自己想要建立的WiFi名称填写入此处的双引号中
 
const char *password = "12345678";  // 这里定义将要建立的WiFi密码。此处以12345678为示例
                                    // 您可以将自己想要使用的WiFi密码放入引号内
                                    // 如果建立的WiFi不要密码,则在双引号内不要填入任何信息
 WiFi.softAP(ssid, password);     // 此语句是重点。WiFi.softAP用于启动NodeMCU的AP模式。
                                   // 括号中有两个参数,ssid是WiFi名。password是WiFi密码。
                                   // 这两个参数具体内容在setup函数之前的位置进行定义。

二、配置接入点网络信息函数

WiFi.softAPConfig (local_ip, gateway, subnet);

1.参数

local_ip: 接入点的ip地址。(IPAddress型)

gateway: 网关IP地址。 (IPAddress型)

subnet: 子网掩码。(IPAddress型)

2.返回值注:这里的ip地址只做参考,根据实际情况选择

返回设置结果。设置成功返回true,否则返回false。数据类型为bool型。

3.常见用法

IPAddress local_IP(192,168,4,22);//手动设置的开启的网络的ip地址
IPAddress gateway(192,168,4,9);  //手动设置的网关IP地址
IPAddress subnet(255,255,255,0); //手动设置的子网掩码
  //配置接入点的IP,网关IP,子网掩码
  WiFi.softAPConfig(local_IP, gateway, subnet);

三、关闭接入点模式库函数

WiFi.softAPdisconnect()
WiFi.softAPdisconnect(val)

1.参数

参数val类型为bool。如果将该参数设置为true,设备将直接关闭接入点模式。

在不输入参数的情况下调用该函数,设备会将当前配置的网络名和密码设置为空值。

2.返回值

返回设置是否成功的结果。设置成功返回true。数据类型为bool型。

3.常见用法

    bool wifioff = true;      // 接入点模式设置变量
    WiFi.softAPdisconnect(wifioff);//关闭接入点

四、获取接入点IP地址函数

wiFiAP.softAPIP()

1.参数

2.返回值

此函数的返回值是ESP8266开发板的IP地址。(类型:IPAddress)

3.常见用法

 Serial.println(WiFi.softAPIP());     //串口打印当前AP点的IP地址

五、获取接入点mac函数

WiFi.softAPmacAddress()
WiFi.softAPmacAddress(macAddr)

1,参数/返回值

(1)如果不输入参数,函数的返回值为ESP8266开发板的mac地址(String类型)。

Serial.printf("MAC地址为 %s\n", WiFi.softAPmacAddress().c_str());
//打印MAC地址

注(非常重要):因为函数返回值为String类型,故需要使用.c_str()转换为C风格字符串

关于String类型和C风格字符串的区别

 

(2)如果输入参数macAddr。那么ESP8266开发板的mac地址将会存储在macAddr中。macAddr必须是一个uint8_t类型的数组,且该数组含有6个元素。

uint8_t macAddr[6];
WiFi.softAPmacAddress(macAddr);
Serial.printf("MAC地址为  %02x:%02x:%02x:%02x:%02x:%02x\n", macAddr[0], macAddr[1], macAddr[2], macAddr[3], macAddr[4], macAddr[5]);

六、获取接入点WiFi名称函数

WiFi.softAPSSID()

1.参数

2.返回值

返回接入点WiFi名称,数据类型为字符串型。

3.常见用法 

 Serial.println(WiFi.softAPSSID()); //输出接入点的wifi名称

七、获取接入点连接密码函数

wiFi.softAPPSK()

1.参数

2.返回值

返回接入点WiFi密码,数据类型为字符串型

3.常见用法 

 Serial.println(WiFi.softAPPSK()); //输出接入点密码

八、获取连接上的终端数量函数

wiFi.softAPgetStationNum()

1.参数

2.返回值

连接到ESP8266开发板接入点的无线终端数量,数据类型为int型。

3.常见用法 

 Serial.printf("连接此接入点上的无线终端数目 = %d\n", WiFi.softAPgetStationNum());

大家觉得有用的话,给个赞再走吧!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
WLAN是英文WirelessLAN的缩写,就是无线局域网的意思。无线以太网技术是一种基于无线传输的局域网技术,与有线网络技术相比,具有灵活、建网迅速、个人化等特点。将这一技术应用于电信网的接入网领域,能够方便、灵活地为用户提供网络接入,适合于用户流动性较大、有数据业务需求的公共场所、高端的企业及家庭用户、需要临时建网的场合以及难以采用有线接入方式的环境等 作为全球公认的局域网权威,IEEE802工作组建立的标准在过去二十年内在局域网领域独领风骚。这些协议包括了802.3Ethernet协议、802.5TokenRing协议、802.3z100BASE-T快速以太网协议。在1997年,经过了7年的工作以后,IEEE发布了802.11协议,这也是在无线局域网领域内的第一个国际上被认可的协议。  在1999年9月,他们又提出了802.11b"HighRate"协议,用来对802.11协议进行补充,802.11b在802.11的1Mbps和2Mbps速率下又增加了5.5Mbps和11Mbps两个新的网络吞吐速率。利用802.11b,移动用户能够获得同Ethernet一样的性能、网络吞吐率、可用性。这个基于标准的技术使得管理员可以根据环境选择合适的局域网技术来构造自己的网络,满足他们的商业用户和其他用户的需求。802.11协议主要工作在ISO协议的最低两层上,并在物理层上进行了一些改动,加入了高速数字传输的特性和连接的稳定性。
要在Android应用中使用TCP连接连接ESP8266模块,需要进行以下步骤: 1. 确保您已经正确地连接了ESP8266模块,并且已经配置了ESP8266模块的网络参数,例如SSID和密码。 2. 在ESP8266模块上运行一个TCP服务器,以便Android应用程序可以连接它并与其通信。您可以使用AT指令将ESP8266模块配置为运行TCP服务器。例如,使用以下AT指令将ESP8266配置为在端口号12345上运行TCP服务器: ``` AT+CIPMUX=1 AT+CIPSERVER=1,12345 ``` 3. 在Android应用程序中,使用Java的Socket类来创建一个TCP连接并连接到ESP8266模块运行的TCP服务器。您可以使用以下代码示例: ```java import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.Socket; public class TCPClient { public static void main(String[] args) throws Exception { String serverAddress = "192.168.1.100"; // ESP8266模块的IP地址 int serverPort = 12345; // ESP8266模块运行的TCP服务器端口号 // 创建Socket对象,连接ESP8266模块 Socket socket = new Socket(InetAddress.getByName(serverAddress), serverPort); // 发送数据到ESP8266模块 DataOutputStream outToServer = new DataOutputStream(socket.getOutputStream()); String message = "Hello ESP8266!"; outToServer.writeBytes(message + '\n'); // 接收ESP8266模块返回的数据 BufferedReader inFromServer = new BufferedReader(new InputStreamReader(socket.getInputStream())); String response = inFromServer.readLine(); System.out.println("Response from ESP8266: " + response); // 关闭连接 socket.close(); } } ``` 4. 在Android应用程序中,使用异步任务(AsyncTask)来执行与ESP8266模块的TCP通信,以避免在主线程上进行网络通信,从而阻塞UI线程。以下是一个简单的示例: ```java import android.os.AsyncTask; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.Socket; public class TCPClientTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { String serverAddress = params[0]; // ESP8266模块的IP地址 int serverPort = Integer.parseInt(params[1]); // ESP8266模块运行的TCP服务器端口号 String message = params[2]; // 要发送的消息 try { // 创建Socket对象,连接ESP8266模块 Socket socket = new Socket(InetAddress.getByName(serverAddress), serverPort); // 发送数据到ESP8266模块 DataOutputStream outToServer = new DataOutputStream(socket.getOutputStream()); outToServer.writeBytes(message + '\n'); // 接收ESP8266模块返回的数据 BufferedReader inFromServer = new BufferedReader(new InputStreamReader(socket.getInputStream())); String response = inFromServer.readLine(); // 关闭连接 socket.close(); return response; } catch (Exception e) { e.printStackTrace(); return null; } } @Override protected void onPostExecute(String response) { // 处理ESP8266模块返回的数据 if (response != null) { System.out.println("Response from ESP8266: " + response); } } } ``` 5. 在Android应用程序中,使用该异步任务来执行TCP通信: ```java String serverAddress = "192.168.1.100"; // ESP8266模块的IP地址 int serverPort = 12345; // ESP8266模块运行的TCP服务器端口号 String message = "Hello ESP8266!"; new TCPClientTask().execute(serverAddress, String.valueOf(serverPort), message); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值