【Arduino开发】Lesson1 NodeMCU连接物联网的两种模式


NodeMUC开发 Lesson1

1. 开发板电路图

1

GPIO:通用输入输出引脚,对应ESP8266芯片对应的引脚(图中蓝色)

ADC:A开头,模拟引脚

Vin:为NodeMCU供电的另外一种方式

3V3:为外界提供3.3v的电压

DigitalRead

  • 数字引脚 : 作为输入时不能高于3.3v,否则会伤害开发板(而输出的电压只能是3.3v)
  • 模拟引脚 : 输入不能高于1v

浅蓝背景黑字的是:通讯引脚

  • 串口通讯
  • SPI通讯

黑底字: 存储单元操作端口

U0TXD:向外发送数据(Transf)

U0RXT:向内接收数据(Receive)

按键:

  • RST:复位键
  • FLASH:用于刷固件用

2. 物联网开发基础


2.1 接入点模式

将MCU作为一个公用的无线路由器,将电脑接入这个接入点

#include <ESP8266WiFi.h>

// 建立Wifi名称
const char *ssid = "FeverESP";
// Wifi密码
const char *password = "fevertwice";

void setup() {
  // 启动串口通讯
  Serial.begin(9600); // 启动串口通讯

  // 启动MCU建立的Wifi
  WiFi.softAP(ssid, password);

  // 显示窗口信息
  Serial.print("Access point: "); // 通过串口监视器输出信息
  Serial.println(ssid);
  Serial.print("IP address: ");   // 通知IP地址
  Serial.println(WiFi.softAPIP());  // 通过函数返回Wifi地址

}

void loop() {
  // put your main code here, to run repeatedly:

}

打开IDE编辑器的串口,有如下提示:

Access point: FeverESP
IP address: 192.168.4.1

打开命令行cmd,并使用ping指令,可以成功连接到NodeMCU接口上

WiFi连接

3

Ping命令

2

3. 无线终端模式


无线终端模式通过与电脑连接一个相同的网络来实现网络连接功能

#include <ESP8266WiFi.h>        // 导入库
 
const char* ssid     = "FeverWiFi";      // 连接WiFi名
                                            
const char* password = "12345678";          // 连接WiFi密码
                                          
                                            
void setup() {
  Serial.begin(9600);         // 启动串口通讯
  
  WiFi.begin(ssid, password);                  // 启动网络连接
  Serial.print("Connecting to ");              // 串口监视器输出网络连接信息
  Serial.print(ssid); Serial.println(" ...");  // 告知用户NodeMCU正在尝试WiFi连接
  
  int i = 0;                                   // 这一段程序语句用于检查WiFi是否连接成功

  // status()返回一个状态信息, WL_CONNECTED  是一个WiFi状态码
  while (WiFi.status() != WL_CONNECTED) {      // WiFi.status()函数的返回值是由NodeMCU的WiFi连接状态所决定的。 
    delay(1000);                               // 如果WiFi连接成功则返回值为WL_CONNECTED                       
    Serial.print(i++); Serial.print(' ');      // 此处通过While循环让NodeMCU每隔一秒钟检查一次WiFi.status()函数返回值
  }                                            // 同时NodeMCU将通过串口监视器输出连接时长读秒。

  // 输出信息
  Serial.println("");                          
  Serial.println("Connection established!");   // NodeMCU将通过串口监视器输出"Connection established!"的信息。
  Serial.print("IP address:    ");             // 同时还将输出NodeMCU的IP地址。
  Serial.println(WiFi.localIP());              // 这一功能是通过调用WiFi.localIP()函数来实现的。该函数的返回值即NodeMCU的IP地址。
}
 
void loop() {                                   
}

如果需要连接多个WiFi网络名称和WiFi密码 ,我们可以通过引入WiFiMulti函数来实现

#include <ESP8266WiFiMulti.h>   // 本程序使用ESP8266WiFiMulti库
 
ESP8266WiFiMulti wifiMulti;     // 建立ESP8266WiFiMulti对象,对象名称是'wifiMulti'
 
void setup() {
  Serial.begin(9600);            // 启动串口通讯
 
//通过addAp函数存储  WiFi名称       WiFi密码
  wifiMulti.addAP("FeverWiFi1", "12345678");  // 这三条语句通过调用函数addAP来记录3个不同的WiFi网络信息。
  wifiMulti.addAP("FeverWiFi2", "87654321"); 
  wifiMulti.addAP("FeverWiFi3", "13572468"); // 这3个网络的密码分别是123456789,87654321,13572468
                                                
  Serial.println("Connecting ...");         // 通过串口监视器输出信息告知用户NodeMCU正在尝试连接WiFi
  int i = 0;                                 
  while (wifiMulti.run() != WL_CONNECTED) {  // wifiMulti.run(),NodeMCU将会在当前环境中搜索addAP函数所存储的WiFi
    delay(1000);                             // 如果搜到多个存储的WiFi那么NodeMCU
    Serial.print('.');                       // 将会连接信号最强的那一个WiFi信号。
  }                                           // 一旦连接WiFI成功,wifiMulti.run()将会返回“WL_CONNECTED”。这也是

注意:

  • 这里是**wifiMulti.run()与上面的WiFi.begin(ssid, password)**略有不同
  • 这里每次连接WiFi路由器的IP地址可能会变,使得地址不统一,这是因为地址是由路由器随意分配的

运行并上传,串口监视器如下所示

2

打开CMD试图检测NodeMCU是否和电脑建立连接
5


写在最后

注:本专栏实验均使用免费的仿真平台TinkerCAD,传送门如下

传送门:ThinkerCAD

代码参考案例NodeMCU开发板的无线终端模式by太极创客

各位看官,都看到这里了,麻烦动动手指头给博主来个点赞8,您的支持作者最大的创作动力哟!
<(^-^)>
才疏学浅,若有纰漏,恳请斧正
本文章仅用于各位同志作为学习交流之用,不作任何商业用途,若涉及版权问题请速与作者联系,望悉知

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>