【笔记】物联网开发基础

这是在B站中学习太极创客【ESP8266教程】后所记录的,并结合AI搜索所综合出的笔记。如有错误或侵权,望指出!小白一枚:)
一.接入点模式
#include <ESP8266WiFi.h>        
 
const char *ssid = "wcqwcqwcq"; // 这里定义将要建立的WiFi名称                            
 
const char *password = "123456777";  // 这里定义将要建立的WiFi密码                                                                     
 
void setup() {
  Serial.begin(9600);              // 启动串口通讯
 
  WiFi.softAP(ssid, password);     // 此语句是重点。WiFi.softAP用于启动NodeMCU的AP模式                                  
                                   // 这两个参数具体内容在setup函数之前的位置进行定义。
  
  Serial.print("Access Point: ");    // 通过串口监视器输出信息
  Serial.println(ssid);              // 告知用户NodeMCU所建立的WiFi名
  Serial.print("IP address: ");      // 以及NodeMCU的IP地址
  Serial.println(WiFi.softAPIP());   // 通过调用WiFi.softAPIP()可以得到NodeMCU的IP地址
}
 
void loop() { 
}

1.运行完上面程序后,可进行连接wifi设备

△不过感觉连接得很慢,有时候改名字后也只能找到一个ESP开头的网络

打开命令提示符win+R,再输入cmd;输入"ping 192.168.4.1"

192.168.4.1: 是NodeMCU的默认地址

ping:用来测试电脑与某一个网络设备是否建立连接

原理:电脑发送一系列数据包给目标网络设备,当目标网络设备接收到时,会回复一系列数据包给电脑。通过一发一收,电脑可判断是否已连接网络设备。

  • setup函数:Arduino程序开始运行时首先执行的函数
  • loop函数:Arduino程序中的主要循环
  • Serial.begin(9600);:初始化串口通信,设置波特率为9600
  • Serial.print(...):这是一个用于输出数据到串口的函数。它可以接受多种类型的参数,如整数、浮点数、字符等,并将它们转换为字符串形式发送出去。
  • Serial.println(...):这个方法与print类似,但它在输出的字符串后面自动添加一个换行符(\n),这样输出的文本会在串口监视器中换到下一行。

可通过串口监视器查看结果

△对于NodeMCU开发板,点击串口监视器后,它不会进行复位,需手动复位开发板。


二.无线终端模式
#include <ESP8266WiFi.h>        // 本程序使用ESP8266WiFi库

const char* ssid     = "Redmi K50 Pro";      // 连接WiFi名
const char* password = "wcq52099";          // 连接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是否连接成功
  while (WiFi.status() != WL_CONNECTED) {      // WiFi.status()函数的返回值是由NodeMCU的WiFi连接状态所决定的。 
    delay(1000);                               // 如果WiFi连接成功则返回值为WL_CONNECTED                       
    Serial.print(i++); Serial.print(' ');      // 此处通过While循环让NodeMCU每隔一秒钟检查一次WiFi.status()函数返回值
  }                                            // 同时NodeMCU将通过串口监视器输出连接时长读秒。
                                               // 这个读秒是通过变量i每隔一秒自加1来实现的。
                                               
  Serial.println("");                          // WiFi连接成功后
  Serial.println("Connection established!");   // NodeMCU将通过串口监视器输出"连接成功"信息。
  Serial.print("IP address:    ");             // 同时还将输出NodeMCU的IP地址。这一功能是通过调用
  Serial.println(WiFi.localIP());              // WiFi.localIP()函数来实现的。该函数的返回值即NodeMCU的IP地址。
}

void loop() {                                   
}

虽然串口监视器显示"Connection established!",但是ping有两种情况

1.这是个弱信号没有真正连接上,ping显示请求超时

2.这个是手机开的热点,ping通过

△连了好久没连上,可能是字母大小写问题,或者是信号太弱了以及其他因素。


三.自动连接最强信号WiFi网络
#include <ESP8266WiFi.h>     
#include <ESP8266WiFiMulti.h>   // 本程序使用ESP8266WiFiMulti库
 
ESP8266WiFiMulti wifiMulti;     // 建立ESP8266WiFiMulti对象,对象名称是'wifiMulti'
 
void setup() {
  Serial.begin(9600);            // 启动串口通讯
 
//通过addAp函数存储  WiFi名称       WiFi密码
  wifiMulti.addAP("Redmi K50 Pro", "wcq52099");  // 这2条语句通过调用函数addAP来记录2个不同的WiFi网络信息。
  wifiMulti.addAP("ChinaNet-5G-0726", "87255025"); 
 

  Serial.println("Connecting ...");         // 通过串口监视器输出信息告知用户NodeMCU正在尝试连接WiFi
  int i = 0;                                 
  while (wifiMulti.run() != WL_CONNECTED) {  // 此处的wifiMulti.run()是重点。通过wifiMulti.run(),NodeMCU将会在当前
    delay(1000);                             // 环境中搜索addAP函数所存储的WiFi。如果搜到多个存储的WiFi那么NodeMCU
    Serial.print('.');                       // 将会连接信号最强的那一个WiFi信号。
  }                                           // 一旦连接WiFI成功,wifiMulti.run()将会返回“WL_CONNECTED”。这也是
                                              // 此处while循环判断是否跳出循环的条件。
 
  
  Serial.println('\n');                     // WiFi连接成功后
  Serial.print("Connected to ");            // NodeMCU将通过串口监视器输出。
  Serial.println(WiFi.SSID());              // 连接的WiFI名称
  Serial.print("IP address:\t");            // 以及
  Serial.println(WiFi.localIP());           // NodeMCU的IP地址
}
 
void loop() { 
}

ʚ₍ ᐢ. ̫ .ᐢ ₎ɞ
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值