使用.Net nanoFramework为ESP32连接Wi-Fi网络

💡 原文中文,约3400字,阅读约需8分钟。
📝

内容提要

ESP32是一款低成本、低功耗的系统级芯片,集成了Wi-Fi和蓝牙功能,适用于智能家居、可穿戴设备等物联网应用。本文介绍了如何使用.NET nanoFramework为ESP32设备连接Wi-Fi网络,包括连接示例、获取分配的IP、指定网络信息和网络配置信息的保存与读取。

🔎

延伸解读

DHCP与静态IP的适用场景

文章展示了两种连接方式:ConnectDhcp自动获取IP,适合大多数普通设备;ConnectFixAddress允许指定IP、子网掩码、网关和DNS,适合需要固定地址的场景。但静态IP必须确保不与网络中已使用的地址冲突,否则会导致连接失败。选择时需权衡便利性与网络管理需求。

连接超时与错误处理

示例代码中使用了CancellationTokenSource设置超时(60秒或10秒),并在连接失败时输出WifiNetworkHelper.Status和HelperException。这提示开发者:Wi-Fi连接可能因信号、密码错误等原因失败,必须处理超时和异常,避免程序卡死。实际部署时应根据环境调整超时时间。

配置信息外置的价值

文章强调不要将SSID和密码硬编码在代码中,而是通过VS插件的“Edit Network Configuration”保存到配置,再在代码中读取。这样做既避免了敏感信息泄露,也方便同一固件在不同网络环境中部署,无需重新编译。读取配置时需检查是否为空,防止未配置导致异常。

❓

Q&A

ESP32 用 .NET nanoFramework 连 Wi-Fi 需要安装什么包?

需要安装 nanoFramework.System.Device.Wifi 包,该包提供了 WifiNetworkHelper 类来帮助连接 Wi-Fi 网络。

如何用 WifiNetworkHelper 通过 DHCP 连接 Wi-Fi 并获取 IP 地址?

调用 WifiNetworkHelper.ConnectDhcp 方法,传入 SSID 和密码,设置 requiresDateTime 为 true 并传入 CancellationToken。连接成功后,使用 GetIP 方法(遍历 NetworkInterface 找到 Wireless80211 类型)获取分配的 IP 地址。

怎么给 ESP32 设置静态 IP 地址?

使用 WifiNetworkHelper.ConnectFixAddress 方法,传入 SSID、密码和 IPConfiguration 对象(包含 IP 地址、子网掩码、网关和 DNS 服务器)。需确保指定的 IP 地址不与已使用的 IP 冲突。

如何避免将 Wi-Fi 密码硬编码在代码中?

可以将网络配置信息保存在配置中,通过 .NET nanoFramework VS 插件的 “Edit Network Configuration” 按钮填写 SSID 和密码并保存。然后在代码中使用 Wireless80211Configuration.GetAllWireless80211Configurations() 读取配置信息。

连接 Wi-Fi 时如何设置超时和错误处理?

在调用 ConnectDhcp 或 ConnectFixAddress 时,可以传入 CancellationTokenSource 设置超时(如 60000 毫秒)。连接失败时,检查 WifiNetworkHelper.Status 和 WifiNetworkHelper.HelperException 获取错误信息。

ESP32 连接 Wi-Fi 成功后,如何在路由器后台确认设备?

连接成功后,可以在路由器管理后台看到设备,设备名称通常以 “nanodevice_MAC” 后缀显示。

🏷️

标签

➡️

继续阅读