接入点模式

第一种模式为接入点模式,简称AP模式类似wifi热点,其他设备可以接入SEP8266,

结构图如下:

image.png
图1

这种接入模式的代码如下

  1. #include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库
  2. const char *ssid = "taichi-maker";
  3. const char *password = "12345678";
  4. void setup() {
  5. Serial.begin(9600); // 启动串口通讯
  6. WiFi.softAP(ssid, password);
  7. Serial.print("Access Point: "); // 通过串口监视器输出信息
  8. Serial.println(ssid); // 告知用户NodeMCU所建立的WiFi名
  9. Serial.print("IP address: "); // 以及NodeMCU的IP地址
  10. Serial.println(WiFi.softAPIP()); // 通过调用WiFi.softAPIP()可以得到NodeMCU的IP地址
  11. }
  12. void loop() {
  13. }

代码解析:
第一步:首先导入wifi库,
第二步:导入wifi库后会有一个WIFI全局对象,此对象上有一个方法,softAP,这个方法需要传递两个参数,第一个参数为wifi的账户,第二个为密码。并且数据类型为char,调用方式为:WiFi.softAP(ssid, password);
第三步:到第二步基本就算完成了,为了得到sep8266本身这个热点的IP,需要调用wifi的softAPIP方法。

终端模式

第二种模式是作为一个设备终端可以链接局域网的wifi。

示意图如下:

image.png
图2

此时esp8266的作用和手机功能基本类似。

代码如下:

  1. #include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库
  2. const char* ssid = "taichi-maker";
  3. const char* password = "12345678";
  4. void setup() {
  5. Serial.begin(9600); // 启动串口通讯
  6. WiFi.begin(ssid, password); // 启动网络连接
  7. Serial.print("Connecting to ");
  8. Serial.print(ssid); Serial.println(" ...");
  9. int i = 0; // 这一段程序语句用于检查WiFi是否连接成功
  10. while (WiFi.status() != WL_CONNECTED) { // WiFi.status()函数的返回值是由NodeMCU的WiFi连接状态所决定的。
  11. delay(1000); // 如果WiFi连接成功则返回值为WL_CONNECTED
  12. Serial.print(i++); Serial.print(' '); // 此处通过While循环让NodeMCU每隔一秒钟检查一次WiFi.status()函数返回值
  13. } // 同时NodeMCU将通过串口监视器输出连接时长读秒。
  14. // 这个读秒是通过变量i每隔一秒自加1来实现的。
  15. Serial.println(""); // WiFi连接成功后
  16. Serial.println("Connection established!"); // NodeMCU将通过串口监视器输出"连接成功"信息。
  17. Serial.print("IP address: "); // 同时还将输出NodeMCU的IP地址。这一功能是通过调用
  18. Serial.println(WiFi.localIP()); // WiFi.localIP()函数来实现的。该函数的返回值即NodeMCU的IP地址。
  19. }
  20. void loop() {
  21. }

阅读源码

第一步:导入weifi库;
第二步:生命需要链接的wifi的账号和秘密
第三步:启动网络链接,调用的是begin方法:WiFi.begin(ssid, password);
第四步:使用while循环和status方法重复检测,直至wifi链接:

  1. while (WiFi.status() != WL_CONNECTED) {
  2. delay(1000);
  3. Serial.print(i++); Serial.print(' ');
  4. }

status方法会获取wifi的链接状态,而WL_CONNECTED是wifi链接成功后返回的状态;

注意:获取esp8266这个设备的局域网的ip是通过localIP方法。