ESP8266 Arduino开发之路(2)— 连接到无线WiFi路由器
ESP8266 Arduino开发之路(2)— 连接到无线WiFi路由器
一、前言
ESP8266可以通过WiFi连接到无线路由器,这种方式和手机通过WiFi连接无线路由器的模式是相同的,我们称该模式为无线终端模式(Wireless Station),即STA工作模式。
参考自:NodeMCU开发板的无线终端模式
二、编写程序
编写程序如下所示
/*ESP8266-NodeMCU无线终端模式连接WiFi
*/#include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库const char* ssid = "SixLab"; // 需要连接到的WiFi名
const char* password = "sixlab123"; // 连接的WiFi密码void setup() {Serial.begin(115200); // 初始化串口通讯波特率为115200WiFi.mode(WIFI_STA); // 设置Wifi工作模式为STA,默认为AP+STA模式WiFi.begin(ssid, password); // 通过wifi名和密码连接到WifiSerial.print("\r\nConnecting to "); // 串口监视器输出网络连接信息Serial.print(ssid); Serial.println(" ..."); // 显示NodeMCU正在尝试WiFi连接int i = 0; // 检查WiFi是否连接成功while (WiFi.status() != WL_CONNECTED) // WiFi.status()函数的返回值是由NodeMCU的WiFi连接状态所决定的。 { // 如果WiFi连接成功则返回值为WL_CONNECTEDdelay(1000); // 此处通过While循环让NodeMCU每隔一秒钟检查一次WiFi.status()函数返回值Serial.print("waiting for "); Serial.print(i++); Serial.println("s..."); } Serial.println(""); // WiFi连接成功后Serial.println("WiFi connected!"); // NodeMCU将通过串口监视器输出"连接成功"信息。Serial.print("IP address: "); // 同时还将输出NodeMCU的IP地址。这一功能是通过调用Serial.println(WiFi.localIP()); // WiFi.localIP()函数来实现的。该函数的返回值即NodeMCU的IP地址。
}void loop() {}
三、烧录实现
编译烧录到开发板,打开串口助手可以看到打印连接成功信息
然后我们可以尝试通过ping来检查esp8266确实连接到网络,如下所示,NodeMCU成功的对我们的ping指令做出应答,这样就可以确定当前NodeMCU已经成功连接WiFi了。
四、自动连接最强WiFi信号
我们可以通过编程让NodeMCU在它所处的网络环境里搜索预先存储好的WiFi,一旦找到预存的WiFi名称,NodeMCU将会使用预存的密码信息尝试连接该WiFi,如果同时找到多个预存WiFi,NodeMCU将会尝试连接信号最强的WiFi。编写程序如下所示
/*ESP8266-NodeMCU无线终端模式连接WiFiNodeMCU会使用预存的密码信息尝试连接WiFi, 如果同时找到多个预存WiFi,NodeMCU将会尝试连接信号最强的WiFi。
*/#include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库
#include <ESP8266WiFiMulti.h> // 预存多个WiFi需要使用ESP8266WiFiMulti wifiMulti; // 新建ESP8266WiFiMulti对象,对象名称是'wifiMulti'void setup() {Serial.begin(115200); // 初始化串口通讯波特率为115200/* 通过addAP函数添加需要存储的WiFi名称和密码 */wifiMulti.addAP("SixLab", "sixlab123");wifiMulti.addAP("SixLab1", "sixlab1234");wifiMulti.addAP("SixLab2", "sixlab1235");/* 可以添加更多的addAP函数来存储更多的WIFI连接信息 */WiFi.mode(WIFI_STA); // 设置Wifi工作模式为STA,默认为AP+STA模式Serial.println("\r\nConnecting to WiFi..."); // 串口监视器输出正在连接网络int i = 0; // 检查WiFi是否连接成功while (wifiMulti.run() != WL_CONNECTED) // 通过wifiMulti.run(),NodeMCU将会在当前环境中搜索addAP函数所存储的WiFi。{ // 如果搜到多个存储的WiFi那么NodeMCU将会连接信号最强的那一个WiFi信号。delay(100); // 一旦连接WiFI成功,wifiMulti.run()将会返回“WL_CONNECTED”。Serial.print("waiting for "); Serial.print(i++); Serial.println(" times..."); } Serial.println('\n'); // WiFi连接成功后Serial.print("Connected to "); // NodeMCU通过串口监视器输出连接的WiFI名称Serial.println(WiFi.SSID());Serial.print("IP address:\t"); // NodeMCU的IP地址Serial.println(WiFi.localIP());
}void loop() {}
编译烧录到开发板,运行如下所示
五、附录
上一篇:ESP8266 Arduino开发之路(1)— 搭建开发环境并点亮LED
下一篇:ESP8266 Arduino开发之路(3)— 作为TCP客户端连接到服务器
ESP8266 Arduino开发之路(2)— 连接到无线WiFi路由器相关推荐
- ESP32 Arduino开发之路(2)— 使用PWM实现LED呼吸灯
ESP32 Arduino开发之路(2)- 使用PWM实现LED呼吸灯 一.前言 在ESP32上有一个LEDC外设模块专用于输出PWM波形,其介绍如下所示: 参考文章:在 ESP32 上使用 LEDC ...
- 使用Arduino开发ESP32-CAM系列1——连接ESP32-CAM,esp32-cam串口连接不上
注:我买的开发板有大坑!如果有遇到esp32-cam串口连接不上或者esp32-cam串口不显示的童鞋可以参考参考. 开发环境:Arduino + ESP32库 附加开发板管理网址:https://d ...
- ESP8266 arduino开发 esp8266开启AP模式
本文档为个人博客文档系统的备份版本.作者:小游.作者博客:点击访问 #include <ESP8266WiFi.h> // 设置热点的名字 #define AP_SSID "XI ...
- 「雕爷学编程」Arduino动手做(33)——ESP-01S无线WIFI模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...
- ESP32系列音频开发板方案,智能音箱无线WiFi技术升级应用
移动互联网发展至今,视频及直播已成为主流传播方式.短视频及电商直播进一步黏合人们的碎片化时间,用户渗透率高达90.4%,视频的电商转化率也升至72%,各场景使用比例全线增长. 而相关硬件支持的智能音频 ...
- 360无线wifi路由器连接到服务器,360PI无线路由器怎么联接无线+有线?
工具/原料 猫 无线路由 网线 猫和路由器的连接 1.首先我们需要把猫和无线路由连接到一起.网线首先一段连载猫上的lan,另一端连接到无线路由上的wan上面就可以了. 2.我的电脑系统xp,就以xp为 ...
- 【转】Android 手机连接台式电脑无线 Wi-Fi 上网
为什么80%的码农都做不了架构师?>>> 小编的笔记本电脑不知道是什么原因无法连接隐藏 ssid 的 Wi-Fi , 小编的手机 (Samsung Galaxy A3009) ...
- Ubuntu下有线连接开无线WIFI的3种方式
2019独角兽企业重金招聘Python工程师标准>>> 原文链接: http://ubuntuhandbook.org/index.php/2014/09/3-ways-create ...
- 树莓派安装c语言IDE,树莓派安装 Arduino IDE 进行 Arduino 开发
Arduino 与 树莓派是 Maker 们创作的两大利器.在接触树莓派之前,我们通常是在 PC 上安装 Arduino 的 IDE 进行 Arduino 开发,而今有了树莓派,PC 的在 Ardui ...
最新文章
- es获取最大时间的记录_ES查询一段时间内某一循环时间段的数据
- Agile Development
- 10、springboot之集成druid
- 【mathematical statistics】4 hypothesis testing
- 近期GitHub上最热门的开源项目(附链接)
- 今天的出了校门的即时通讯
- 一个数据库管理员的自我救赎之路
- fullpage.js(cndjs)
- BERT模型实战之多文本分类(附源码)
- [周榜单]极乐小程序榜单(第十一期)
- 第一个Spring冲刺周期团队进展报告
- Win10 专业版激活!
- 机器学习、神经网络、深度学习区别
- Hive: Reflect UDF
- Android实现获取未接来电和未读短信数量的方法
- 日落潭照树,川明风动花。
- 内网DNS报错:** server can‘t find ns1.aaa.com: SERVFAIL
- 2019计算机考研试卷难度,2019考研:计算机统考408院校及难度分析
- 文章标题ffmpeg文档37-视频滤镜
- 2023 年值得推荐的 Vue 库
热门文章
- clickhouse 生产集群部署之坑坑洼洼(二)
- 微信支付和支付宝支付所用应用签名如何获取
- 编译原理LR(1)语法分析器 C++实现
- 高一数学知识点复习:命题及其关系、充分条件
- Scrapy爬取新浪微博用户信息、用户微博及其微博评论转发
- python在姓名的左右_怎样用Python给宝宝取个好名字?
- 深度学习之CNN卷积神经网络详解以及猫狗识别实战
- Redis中“万金油“的string,为什么不好用了
- idea 项目jdk环境配置
- pythonscrapy爬虫 崔庆才_Python爬虫实战一之爬取糗事百科段子