【自学嵌入式(7)天气时钟:WiFi模块、OLED模块、NTP模块开发】

上一篇文章,我们了解了天气时钟用到的材料、以及串口模块的开发,本篇文章,我们将把重心移到WiFi模块、OLED模块和NTP模块的开发,但在此之前,我们仍有必要学习相关知识。

WiFi模块

WiFi库介绍

WiFi库是用于Arduino平台上的WiFi模块(如ESP8266等)进行无线网络连接的一个重要库。它提供了丰富的功能来管理WiFi连接、网络配置和数据传输。以下是WiFi库的一些关键功能和用法:

  1. 模式设置
    • WiFi.mode(mode): 设置WiFi的工作模式。常用模式包括:
      • WIFI_STA: 站点模式,设备作为客户端连接到路由器。
      • WIFI_AP: 接入点模式,设备作为热点供其他设备连接。
      • WIFI_AP_STA: 同时支持站点和接入点模式。

关于更多解释,可以参考之前的文章: 【STA模式、AP模式、体验天气时钟】

  1. 连接管理

    • WiFi.begin(ssid, password): 开始连接到指定的WiFi网络,ssid是网络名称,password是网络密码。
    • WiFi.disconnect(): 断开当前的WiFi连接。
    • WiFi.status(): 获取当前的WiFi连接状态,返回值包括WL_CONNECTED(已连接)、WL_DISCONNECTED(未连接)等。
  2. 网络信息

    • WiFi.localIP(): 获取设备的本地IP地址。
    • WiFi.SSID(): 获取当前连接的网络SSID。
    • WiFi.RSSI(): 获取当前连接的信号强度。
  3. 其他功能

    • WiFi.scanNetworks(): 扫描周围可用的WiFi网络。
    • WiFi.softAP(ssid, password): 设置设备为接入点模式,创建一个新的WiFi网络。

WiFi库通常用于物联网(IOT)项目中,使设备能够连接到互联网或局域网,从而实现远程数据传输、设备控制和监控等功能。通过结合其他网络协议(如HTTP、MQTT等),可以实现更复杂的网络应用。

代码实现

头文件

#ifndef WIFI_H
#define WIFI_H


#include <Arduino.h>
#include <ESP8266WiFi.h>

// 定义WiFi名称及密码
#define WiFi_SSID "josh"
#define WiFi_PASSWORD "38669836"

void wifiInit();
bool wifiConnect(const char *ssid = WiFi_SSID, const char *password = WiFi_PASSWORD);

#endif

cpp文件

#include "wifi.h"
#include "serial.h"

// WiFi初始化函数
void wifiInit() {
   
   
  WiFi.mode(WIFI_STA); // 设置为无线终端模式,方便连接网络
  WiFi.disconnect();   // 先断开连接再重连,以免发生某些故障
  delay(100);          // 等待WIFI模块稳定
  serialPrint("WIFI模块初始化完成");
}

// WiFi连接函数,返回布尔值
bool wifiConnect(const char *ssid, const char *password) {
   
   
  serialPrint("正在连接WiFi...");
  WiFi.begin(ssid, password);

  int attempts = 0; // 记录连接次数
  while(WiFi.status() != WL_CONNECTED && attempts < 20) {
   
   
    delay(1000);
    serialPrint("等待连接..." + String(attempts + 1));
    attempts++;
  }

  // 如果WiFi连接成功
  if(WiFi.status() == WL_CONNECTED){
   
   
    serialPrint("WiFi连接成功");
    serialPrint("IP地址:"<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值