【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十五: ESP8266 Witty Cloud ESP-12F WiFi模块 Witty Cloud 机智云开发板 ESP Witty
项目四:扫描可用的 WiFi 网络
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百三十五: ESP8266 Witty Cloud ESP-12F WiFi模块 机智云开发板 ESP Witty
项目四:扫描可用的 WiFi 网络
*/
#include <ESP8266WiFi.h>
const int greenPin = 12;
void setup() {
Serial.begin(115200);
pinMode(greenPin, OUTPUT);
digitalWrite(greenPin, HIGH);
delay (6000);
digitalWrite(greenPin, LOW);
Serial.println(F("\nESP8266 WiFi 扫描"));
// 设置 WiFi 为站模式
WiFi.mode(WIFI_STA);
// 如果之前已连接,则断开与 AP 的连接
WiFi.disconnect();
delay(100);
}
void loop() {
String ssid;
int32_t rssi;
uint8_t encryptionType;
uint8_t* bssid;
int32_t channel;
bool hidden;
int scanResult;
Serial.println(F("正在开始WiFi扫描..."));
scanResult = WiFi.scanNetworks(/*async=*/false, /*hidden=*/true);
if (scanResult == 0) {
Serial.println(F("未找到网络"));
} else if (scanResult > 0) {
Serial.printf(PSTR("%d 个网络找到:\n"), scanResult);
// Print unsorted scan results
for (int8_t i = 0; i < scanResult; i++) {
WiFi.getNetworkInfo(i, ssid, encryptionType, rssi, bssid, channel, hidden);
Serial.printf(PSTR(" %02d: [CH %02d] [%02X:%02X:%02X:%02X:%02X:%02X] %ddBm %c %c %s\n"),
i,
channel,
bssid[0], bssid[1], bssid[2],
bssid[3], bssid[4], bssid[5],
rssi,
(encryptionType == ENC_TYPE_NONE) ? ' ' : '*',
hidden ? 'H' : 'V',
ssid.c_str());
delay(0);
}
} else {
Serial.printf(PSTR("WiFi 扫描错误 %d"), scanResult);
}
// 在再次扫描之前稍等片刻
delay(5000);
Serial.println(F(""));
}
项目四:扫描可用的 WiFi 网络
项目串口返回情况
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十五: ESP8266 Witty Cloud ESP-12F WiFi模块 机智云开发板 ESP Witty
项目五:扫描可用的 WiFi 网络之二,按钮输入用于启动扫描和板载 LED亮起以指示扫描何时进行
在每个回路上,还要检查连接到 LDR 的模拟输入并调整RGB 绿色 LED 的亮度以匹配测量的亮度。
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百三十五: ESP8266 Witty Cloud ESP-12F WiFi模块 机智云开发板 ESP Witty
项目五:扫描可用的 WiFi 网络之二,按钮输入用于启动扫描和板载 LED亮起以指示扫描何时进行
在每个回路上,还要检查连接到 LDR 的模拟输入并调整RGB 绿色 LED 的亮度以匹配测量的亮度。
*/
#include "ESP8266WiFi.h"
const int BUTTON_PIN = 4; // 定义按钮所连接的引脚
const int ON_BOARD_LED = 2; // 定义板载 LED 连接到的引脚
const int RGB_G_PIN = 12; // RGB 绿色 LED
const int LDR_PIN = A0; // 定义 LDR光敏电阻 连接的模拟引脚
//===============================================================================
// 初始化
//===============================================================================
void setup() {
pinMode(ON_BOARD_LED, OUTPUT); // 将 LED_BUILTIN 引脚初始化为输出
pinMode(BUTTON_PIN, INPUT_PULLUP); // 使用内置上拉初始化按钮引脚
digitalWrite(ON_BOARD_LED, HIGH); // 确保 LED 关闭
Serial.begin(115200); // 设置通信速率为 115200
// 将 WiFi 设置为站模式,如果之前已连接,则与 AP 断开连接
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
Serial.println("WiFi扫描 初始化完成");
}
//===============================================================================
// 主要程序
//===============================================================================
void loop() {
int btn_Status = HIGH;
int lightIntensity;
lightIntensity = analogRead(LDR_PIN); // 读取光照强度
analogWrite( RGB_G_PIN, map(lightIntensity, 40, 1023, 0, 1023));
btn_Status = digitalRead (BUTTON_PIN); // 检查按钮状态
if (btn_Status == LOW) { // 按钮按下,所以做点什么
Serial.print("光强度读数: ");
Serial.println(lightIntensity);
Serial.println("扫描开始......");
Serial.println("");
digitalWrite(ON_BOARD_LED, LOW); // 打开 LED
// 无线上网。扫描网络将返回找到的网络数量
int n = WiFi.scanNetworks();
Serial.println("扫描完成!");
Serial.println("");
if (n == 0)
Serial.println("没有找到网络");
else
{
Serial.print("找到网络=");
Serial.print(n);
Serial.println("个");
for (int i = 0; i < n; ++i)
{
// 为找到的每个网络打印 SSID 和 RSSI
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " : 不安全" : " : 加密");
delay(10);
}
}
Serial.println("");
digitalWrite(ON_BOARD_LED, HIGH); // 关闭 LED
}
}
项目五:扫描可用的 WiFi 网络之二,按钮输入用于启动扫描和板载 LED亮起以指示扫描何时进行
在每个回路上,还要检查连接到 LDR 的模拟输入并调整RGB 绿色 LED 的亮度以匹配测量的亮度。
项目串口返回情况
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十五: ESP8266 Witty Cloud ESP-12F WiFi模块 机智云开发板 ESP Witty
项目六:尝试连接WiFi 网络(绿灯亮)
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百三十五: ESP8266 Witty Cloud ESP-12F WiFi模块 机智云开发板 ESP Witty
项目六:尝试连接WiFi 网络(绿灯亮)
*/
#include <ESP8266WiFi.h>
const char* ssid = "zhz2";
const char* password = "12345678";
void setup() {
Serial.begin(115200);
delay(10);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(15, OUTPUT);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
digitalWrite(15, LOW);
// 我们将首先连接到 Wi-Fi 网络:
Serial.println();
Serial.println();
Serial.print("连接到 ");
Serial.println(ssid);
Serial.println("尝试连接WiFi 网络......");
WiFi.begin(ssid, password);
/*
我们等到状态指示ESP8266已连接到Wi-Fi网络,
此后,将显示Wi-Fi连接消息以及路由器分配给它的IP地址。
您的路由器需要具备DHCP功能并且已激活DHCP功能:
*/
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
Serial.println("");
}
Serial.println("Wi-Fi 已连接");
Serial.println("IP地址: ");
Serial.println(WiFi.localIP());
}
void loop() {
if (WiFi.status() == WL_CONNECTED)
digitalWrite(12, HIGH);//连接后绿灯亮
}
项目六:尝试连接WiFi 网络(绿灯亮)
项目串口返回情况
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十五: ESP8266 Witty Cloud ESP-12F WiFi模块 机智云开发板 ESP Witty
项目七:尝试连接多个WiFi 网络
- 在启动时快速连接到以前的 WiFi 网络
- 注册多个网络(至少 1 个)
- 以最强信号 (RSSI) 连接到 WiFi
- 当连接失败或丢失时回退以连接到下一个 WiFi
- 回退以连接到 WiFi 扫描未报告的隐藏 SSID
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百三十五: ESP8266 Witty Cloud ESP-12F WiFi模块 机智云开发板 ESP Witty
项目七:尝试连接多个WiFi 网络
- 在启动时快速连接到以前的 WiFi 网络
- 注册多个网络(至少 1 个)
- 以最强信号 (RSSI) 连接到 WiFi
- 当连接失败或丢失时回退以连接到下一个 WiFi
- 回退以连接到 WiFi 扫描未报告的隐藏 SSID
*/
#include <ESP8266WiFiMulti.h>
ESP8266WiFiMulti wifiMulti;
// 每个 AP 的 WiFi 连接超时。连接时间较长时增加。
const uint32_t connectTimeoutMs = 5000;
void setup() {
// 不要在闪存中保存 WiFi 配置 - 可选
WiFi.persistent(false);
pinMode(12, OUTPUT);
pinMode(15, OUTPUT);
digitalWrite(12, LOW);
digitalWrite(15, LOW);
Serial.begin(115200);
Serial.println("\nESP8266 Multi WiFi example");
// 设置 WiFi 为站模式
WiFi.mode(WIFI_STA);
// 注册多个WiFi网络
wifiMulti.addAP("zhz", "12345678");
wifiMulti.addAP("zhz2", "12345678");
wifiMulti.addAP("zhz_5G", "12345678");
// 更多是可能的
}
void loop() {
// 保持WiFi连接
if (wifiMulti.run(connectTimeoutMs) == WL_CONNECTED) {
Serial.print("WiFi 已连接: ");
Serial.print(WiFi.SSID());
Serial.print(" ");
Serial.println(WiFi.localIP());
digitalWrite(12, HIGH);//连接后绿灯亮
} else {
Serial.println("WiFi未连接!");
digitalWrite(15, HIGH);//未连接红灯亮
}
delay(1000);
}
项目七:尝试连接多个WiFi 网络
- 在启动时快速连接到以前的 WiFi 网络
- 注册多个网络(至少 1 个)
- 以最强信号 (RSSI) 连接到 WiFi
- 当连接失败或丢失时回退以连接到下一个 WiFi
- 回退以连接到 WiFi 扫描未报告的隐藏 SSID
项目串口返回情况
hacker_2023.07.31
666