littlebot
Published on 2025-04-14 / 0 Visits
0

【源码】基于ESPIDF的ESP32 NAT路由器

项目简介

本项目是基于ESP-IDF框架开发的ESP32 NAT路由器,具有多种实用功能,可满足不同网络应用场景需求。

项目的主要特性和功能

  1. 具备多种应用场景,可作为简单WiFi信号扩展器,为访客或物联网设备创建独立网络,还能将企业级网络转换为普通网络。
  2. 拥有高带宽,能达到超过15mbps的带宽。
  3. 支持多种配置方式,可通过简单的Web界面或串口控制台进行配置。
  4. 可通过板载LED显示ESP32与上游AP的连接状态以及连接到ESP32的设备数量。
  5. 提供丰富命令的命令行界面,用于配置WiFi设置、管理NVS、设置端口映射等。
  6. 可根据需求设置DNS服务器IP地址。

安装使用步骤

前提条件

假设用户已经下载了本项目的源码文件。

配置与使用

  1. 首次启动:首次启动后,ESP32 NAT路由器会提供一个开放的WiFi网络,SSID为“ESP32_NAT_Router”。
  2. Web配置界面:
    • 将PC或智能手机连接到“ESP32_NAT_Router”网络。
    • 打开浏览器,访问“http://192.168.4.1”。
    • 输入上游WiFi网络的相关信息(“STA设置”),开放网络可留空密码,点击“Connect”,ESP32将重启并连接到WiFi路由器。
    • 重新连接并刷新页面,更改“Soft AP设置”,点击“Set”,ESP32再次重启,此时即可通过新配置的Soft AP转发流量。
    • 若要在Web界面输入特殊字符,需使用HTTP风格的十六进制编码。
    • 若要禁用Web界面,可在CLI中输入以下命令: nvs_namespace esp32_nat nvs_set lock str -v 1
    • 若要重新启用Web界面,可输入: nvs_namespace esp32_nat nvs_set lock str -v 0
  3. 命令行界面(CLI):
    • 使用串口控制台(如Putty或GtkTerm,波特率115200)进行配置。
    • 使用“set_sta”和“set_ap”命令配置WiFi设置,更改将永久存储在NVS中,并在下次重启后生效。
    • 使用“show”命令显示当前配置。
    • 输入“help”命令获取所有可用命令的完整列表。

刷机

刷入预编译二进制文件

cd ~ python3 -m pip install pyserial cd esptool python3 setup.py install 2. 进入esp32_nat_router项目目录,根据不同的ESP32目标进行刷机: - ESP32bash esptool.py --chip esp32 \ --before default_reset --after hard_reset write_flash \ -z --flash_mode dio --flash_freq 40m --flash_size detect \ 0x1000 build/esp32/bootloader.bin \ 0x8000 build/esp32/partitions.bin \ 0x10000 build/esp32/firmware.bin - ESP32C3bash esptool.py --chip esp32c3 \ --before default_reset --after hard_reset write_flash \ -z --flash_size detect \ 0x0 build/esp32c3/bootloader.bin \ 0x8000 build/esp32c3/partitions.bin \ 0x10000 build/esp32c3/firmware.bin 3. 也可使用 Espressif's Flash Download Tools 进行刷机,需相应更新文件名。

编译二进制文件

  • 方法1 - ESPIDF
    1. 下载并设置ESP-IDF。
    2. 在项目目录中运行 make menuconfig(或 idf.py menuconfig 用于cmake),并进行以下配置:
      • *Component config -> LWIP > [x] Enable copy between Layer2 and Layer3 packets.
      • *Component config -> LWIP > [x] Enable IP forwarding.
      • *Component config -> LWIP > [x] Enable NAT (new/experimental).
    3. 编译项目并将其刷入ESP32。
  • 方法2 - Platformio
    1. 下载Visual Studio Code和Platform IO扩展。
    2. 在Platformio中安装ESP-IDF框架。
    3. 编译项目并将其刷入ESP32。

故障排除

若出现以下日志输出,可考虑使用不同的串口监视器(如Windows使用Putty,Linux使用GtkTerm)或修改示例的UART配置: This is an example of ESP-IDF console component. Type 'help' to get the list of commands. Use UP/DOWN arrows to navigate through command history. Press TAB when typing command name to auto-complete. Your terminal application does not support escape sequences. Line editing and history features are disabled. On Windows, try using Putty instead. esp32>

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】