把NodeMCU连接到路由器网络上

NodeMCU可以被配置为Station模式和softAP模式或者Station + AP模式,当它被配置为Station模式时,就可以去连接Access Point(如路由器)。当它被配置为Soft Access Point模式时,其他的Station(如手机、电脑)就可以连接到它,并与它进行通信。当它被配置为Station + AP模式时,即可作为Station也可以作为Access Point。

图3-1 模块被配置为Station模式

图3-2 模块被配置为SoftAP模式

如下程序配置NodeMCU将其连接到路由器上:

 /*--------------------------------------------------
                   written by helio, 2019
   ConnectToWifi.ino - 串口打印NodeMCU连接到路由器WiFi
 名称和密码,并打印自身ip地址
 --------------------------------------------------*/
 #include "ESP8266WiFi.h"

 void setup()
 {
   Serial.begin();
   Serial.println();

   WiFi.begin("CEET305", "office305");  // 设置连接到的WiFi名称和密码
   Serial.print("Connecting...");

   while (WiFi.status() != WL_CONNECTED)
   {
     delay();
     Serial.print(".");
   }

   Serial.println();
   Serial.print("Connected Succeful to ");
   Serial.println(WiFi.SSID()); // 打印连接到的WiFi名称
   Serial.print("The Password of this WiFi is:");
   Serial.println(WiFi.psk()); // 打印连接到的WiFi的密码
   Serial.print("IP-address is:");
   Serial.println(WiFi.localIP()); // 打印NodeMCU的IP地址
 }

 void loop()
 {

 }

ConnectToWifi.ino解析

通过函数 WiFi.begin() 设置即将连接的WiFi名称和密码并连接到给定的WiFi。随后根据函数 WiFi.status() 的返回值判断是否连接得到WiFi上,如果此函数的返回值WL_CONNECTED 则说明已经连接到给定WiFi上,否则没有连接上,通过一个循环来等待NodeMCU连接到WiFi上。当连接成功后在串口中通过函数WiFi.SSID()打印连接到的WiFi的名称,通过函数WiFi.psk()打印连接上的WiFi的密码,同时通过函数WiFi.localIP()打印此时NodeMCU的IP地址。

程序烧录到NodeMCU中后,打开串口监视器,可以看见NodeMCU成功连接到了设置的网络中。

图3-3 NodeMCU成功连接到路由器网络

 

其他设备连接到NodeMCU上

将NodeCMCU设置为SoftAP模式时,其他设备就可以在网络中发现它,并且可以连接到它上面。通过如下程序即可将NodeMCU设置为SoftAP模式:

 /*-------------------------------------------------
              written by helio, 2019
   SoftAp.ino - 将NodeMCU设置为soft-AP模式(热点模式)
 其他设备可以连接到该热点
 -------------------------------------------------*/
 #include <ESP8266WiFi.h>

 void setup()
 {
   Serial.begin();
   Serial.println();
   Serial.println("Setting soft_AP...");
   if (WiFI.softAP(“NodeMCU”, “Helioi1122”))
     Serial.println("Ready");
   else
     Serial.println("Failed!");
 }

 void loop()
 {
   Serial.printf("Stations connected = %d\n", WiFi.softAPgetStationNum());
   delay();
 }

SoftAP.ino解析

 通过函数WiFi.softAP()设置将要设置的热点名称和密码,如果将函数的第二个参数值设置为 NULL 时,则其他设备不需要设置密码即可连接该热点,同时,根据函数的返回值判断是否创建成功,同时在串口中打印反馈信息。设置成功后在,可以通过函数WiFI.softAPgetStarion() 获知连接到其上的设备数。

打开电脑或者手机的WiFi管理界面即可发现它设置的网络。

图3-4 可以在电脑的WiFi管理中心中发现之前设置的网络

打开串口监视器,可以在看到连接到NodeMCU上的设备数量。

图3-5 串口监视器中可以查看NodeMCU设置的WiFi状态

  阅读原文可访问我的个人博客

NodeMCU学习(三) : 进入网络世界的更多相关文章

  1. Linux系统学习 三、网络基础—虚拟机网络配置

    Linux网络基础 Linux的ip地址配置 Linux网络配置文件 常用网络命令 虚拟机网络参数配置 1.配置Linux的IP地址 首先配置一个IP地址,让IP生效. ifconfig查看当前网络配 ...

  2. linux学习笔记二:三种网络配置

    本文引用自:https://www.linuxidc.com/Linux/2017-05/144370.htm [linux公社] VMware为我们提供了三种网络工作模式,它们分别是:Bridged ...

  3. [ZZ] 深度学习三巨头之一来清华演讲了,你只需要知道这7点

    深度学习三巨头之一来清华演讲了,你只需要知道这7点 http://wemedia.ifeng.com/10939074/wemedia.shtml Yann LeCun还提到了一项FAIR开发的,用于 ...

  4. python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容

    python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...

  5. HTTP学习三:HTTPS

    HTTP学习三:HTTPS 1 HTTP安全问题 HTTP1.0/1.1在网络中是明文传输的,因此会被黑客进行攻击. 1.1 窃取数据 因为HTTP1.0/1.1是明文的,黑客很容易获得用户的重要数据 ...

  6. vmware虚拟机三种网络模式详解_转

    原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 由于L ...

  7. linux的视频学习4(网络配置和rpm)

    linux的视频学习: 1.网络配置的三种方式的介绍. 第一种方式: setup 命令--选择network configuration-->配置固定ip(tab键)和自动分配IP(长空格) / ...

  8. Vmware虚拟机三种网络模式详解

    原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 我怕链 ...

  9. 学习TensorFlow,保存学习到的网络结构参数并调用

    在深度学习中,不管使用那种学习框架,我们会遇到一个很重要的问题,那就是在训练完之后,如何存储学习到的深度网络的参数?在测试时,如何调用这些网络参数?针对这两个问题,本篇博文主要探索TensorFlow ...

随机推荐

  1. Python3部分Print输出格式

    print("Hello World!") #直接打印字符串 print('Hello World!') #对于python,单引号也可以表示字符串 name = 'Tom' #自 ...

  2. InfoPath读取数据库

    public void LoadBtn_Clicked(object sender, ClickedEventArgs e) { // 配置连接字符串 using (SqlConnection con ...

  3. ip 命令的使用

    网上相似的资源很多,可以参考如下资料: man ip ip help 博客链接: https://linoxide.com/linux-command/use-ip-command-linux/ ht ...

  4. Sr Software Engineer - Big Data Team

    Sr Software Engineer - Big Data Team   About UberWe’re changing the way people think about transport ...

  5. SHGetFileInfo 报错 异常 问题

    查看代码是否使用了 ::CoInitializeEx(NULL, COINIT_MULTITHREADED); 如果是,换成在每个线程调用 ::CoInitialize(NULL); 真够蛋疼的,查了 ...

  6. 阿里八八Alpha阶段Scrum(6/12)

    今日进度 叶文滔: 修复了无法正确判断拖曳与点击的BUG,并且成功连接添加界面. 会议内容 会议照片 明日安排 叶文滔: 继续完善按钮功能 王国超: 继续攻克日程界面显示存在的BUG 俞鋆: 继续进行 ...

  7. php输出年份

    Copyright <?php echo date('Y');?> by Creditease Corp.All Right Reserved.

  8. JVM打印加载类的详情信息

    使用JVM参数即可:-XX:+TraceClassLoading

  9. Python高级--闭包与装饰器

    前言:在Python中,闭包是一种非常有用的功能!它通常与装饰器一起搭配使用,可以在不改变被装饰函数的功能的基础上,完成更多的功能.如权限认证. 一.如何定义闭包 1.闭包就是两个嵌套的函数,外层函数 ...

  10. Redux入门学习

    一.Redux三大原则 1. 单一数据源 应用中所有的state都以一个对象树的形式储存在一个单一的store中. 2. state只读 唯一改变state的办法是触发action.action是一个 ...