引言:无线中继的主要作用是扩展WiFi信号,扩展WiFi后,令原本覆盖不到WiFi的地方也可以有WiFi,免去布线的烦恼。两个无线路由器桥接到一起,可以实现WiFi信号全覆盖。

实现的功能:WiFi模块能连接路由器,然后手机能连接WiFi模块,然后手机通过WiFi模块连接到路由器,能通过WiFi模块上网。

AP模式,指的无线接入点,创建一个无线网络的模式,家里的路由器就是最好的例子,通俗易懂的理解AP模式就是创造一个wifi然后我们用手机之类的设备去连接wifi,可以参考手机开个热点,可能不一定非常准确但是我们先这样理解

STA模式,每一个连接到热点上的手机都可以称为STA站点,也就是我们的ESP32在STA模式下工作就可以连接路由器发出的wifi

在cfg图形化界面中,输入CONFIG_LWIP_IP_FORWARD,勾选CONFIG_LWIP_IP_FORWARD。
在cfg图形化界面中,输入CONFIG_LWIP_IPV4_NAPT,勾选CONFIG_LWIP_IPV4_NAPT。

配置宏

# Set up wifi hotspot and share network
CONFIG_LWIP_IP_FORWARD=y
CONFIG_LWIP_IPV4_NAPT=y

demo.c代码如下:

#include <string.h>
#include <sys/param.h>#include "esp_event.h"
#include "esp_log.h"
#include "esp_system.h"#include "nvs_flash.h"
#include "esp_wifi.h"
#include "esp_netif.h"
#include "lwip/inet.h"
#include "lwip/lwip_napt.h"// 热点名称 密码  可连接数量
#define AP_WIFI_SSID        "lisun"
#define AP_WIFI_PASS        "xjq12345"
#define AP_MAX_STA_CONN     4// 路由器wifi名称 密码
#define STA_WIFI_SSID       "xjq"
#define STA_WIFI_PASS       "xjq12345"static const char *TAG = "LiSun";static esp_netif_t* _esp_netif_sta = NULL;
static esp_netif_t* _esp_netif_ap = NULL;static void wifi_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data) {if (event_id == WIFI_EVENT_AP_STACONNECTED) {wifi_event_ap_staconnected_t *event = (wifi_event_ap_staconnected_t *)event_data;ESP_LOGI(TAG, "station " MACSTR " join, AID=%d",MAC2STR(event->mac), event->aid);} else if (event_id == WIFI_EVENT_AP_STADISCONNECTED) {wifi_event_ap_stadisconnected_t *event = (wifi_event_ap_stadisconnected_t *)event_data;ESP_LOGI(TAG, "station " MACSTR " leave, AID=%d",MAC2STR(event->mac), event->aid);}
}static void sta_start_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data) {esp_wifi_connect();
}static void got_ip_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data) {//No need to log, wifi driver logs automaticallyesp_netif_dns_info_t dns;if (esp_netif_get_dns_info(_esp_netif_sta, ESP_NETIF_DNS_MAIN, &dns) == ESP_OK) {dhcps_dns_setserver((const ip_addr_t *)&dns.ip);ESP_LOGI(TAG, "set dns to:" IPSTR, IP2STR(&dns.ip.u_addr.ip4));}
}static void wifi_init_softap(void)
{wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();ESP_ERROR_CHECK(esp_wifi_init(&cfg));ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &wifi_event_handler, NULL));wifi_config_t wifi_config = {.ap = {.ssid = AP_WIFI_SSID,.ssid_len = strlen(AP_WIFI_SSID),.password = AP_WIFI_PASS,.max_connection = AP_MAX_STA_CONN,.authmode = WIFI_AUTH_WPA_WPA2_PSK},};if (strlen(AP_WIFI_PASS) == 0)wifi_config.ap.authmode = WIFI_AUTH_OPEN;ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_APSTA));ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_AP, &wifi_config));wifi_config_t cfg1 = {.sta = {.ssid = STA_WIFI_SSID,.password = STA_WIFI_PASS,.threshold = {.rssi=0, .authmode = WIFI_AUTH_WPA2_PSK},.pmf_cfg = {.capable = true,.required = false},},};ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &cfg1));ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_START, sta_start_handler, NULL));ESP_ERROR_CHECK(esp_wifi_start());esp_netif_ip_info_t ip_info;esp_netif_get_ip_info(esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"), &ip_info);char ip_addr[16];inet_ntoa_r(ip_info.ip.addr, ip_addr, 16);ESP_LOGI(TAG, "Set up softAP with IP: %s", ip_addr);ESP_LOGI(TAG, "wifi_init_softap finished. SSID:'%s' password:'%s'", AP_WIFI_SSID, AP_WIFI_PASS);
}void app_main(void)
{// Initialize networking stackESP_ERROR_CHECK(esp_netif_init());// Create default event loop needed by the  main appESP_ERROR_CHECK(esp_event_loop_create_default());// Initialize NVS needed by Wi-FiESP_ERROR_CHECK(nvs_flash_init());// Initialize Wi-Fi including netif with default config_esp_netif_ap = esp_netif_create_default_wifi_ap();_esp_netif_sta = esp_netif_create_default_wifi_sta();// Initialise ESP32 in SoftAP modewifi_init_softap();ip_addr_t dnsserver;// Enable DNS (offer) for dhcp serverdhcps_offer_t dhcps_dns_value = OFFER_DNS;dhcps_set_option_info(6, &dhcps_dns_value, sizeof(dhcps_dns_value));// Set custom dns server address for dhcp server 默认跟随路由器 【推荐换成国内DNS】dnsserver.u_addr.ip4.addr = htonl(0xC0A80301);dnsserver.type = IPADDR_TYPE_V4;dhcps_dns_setserver(&dnsserver);#if IP_NAPT// !!! 必须启动sta后再设置,不然ap无网络 !!! Set to ip address of softAP netif (Default is 192.168.4.1)u32_t napt_netif_ip = 0xC0A80401;ip_napt_enable(htonl(napt_netif_ip), 1);
#endif}

ESP32-S3 是一款集成 2.4 GHz Wi-Fi 和 Bluetooth 5 (LE) 的 MCU 芯片,支持远距离模式 (Long Range)。ESP32-S3 搭载 Xtensa® 32 位 LX7 双核处理器,主频高达 240 MHz,内置 512 KB SRAM (TCM),具有 45 个可编程 GPIO 管脚和丰富的通信接口。ESP32-S3 支持更大容量的高速 Octal SPI flash 和片外 RAM,支持用户配置数据缓存与指令缓存。

Wi-Fi + Bluetooth 5 (LE)
ESP32-S3 集成 2.4 GHz Wi-Fi (802.11 b/g/n),支持 40 MHz 带宽;其低功耗蓝牙子系统支持 Bluetooth 5 (LE) 和 Bluetooth Mesh,可通过 Coded PHY 与广播扩展实现远距离通信。它还支持 2 Mbps PHY,用于提高传输速度和数据吞吐量。ESP32-S3 的 Wi-Fi 和 Bluetooth LE 射频性能优越,在高温下也能稳定工作。

丰富的 IO 接口
ESP32-S3 拥有 45 个可编程 GPIO 以及 SPI、I2S、I2C、PWM、RMT、ADC、UART、SD/MMC 主机控制器和 TWAITM 控制器等常用外设接口。其中的 14 个 GPIO 可被配置为 HMI 交互的电容触摸输入端。此外,ESP32-S3 搭载了超低功耗协处理器 (ULP),支持多种低功耗模式,广泛适用于各类低功耗应用场景。

完善的安全机制
ESP32-S3 为物联网设备提供了完善的安全机制和保护措施,防止各类恶意攻击和威胁。它支持基于 AES-XTS 算法的 flash 加密、基于 RSA 算法的安全启动、数字签名和 HMAC。ESP32-S3 还新增了一个“世界控制器 (World Controller)”模块,提供了两个互不干扰的执行环境,实现可信执行环境或权限分离机制。

支持 AI 加速
ESP32-S3 MCU 增加了用于加速神经网络计算和信号处理等工作的向量指令 (vector instructions)。AI 开发者们通过 ESP-DSP 和 ESP-NN 库使用这些向量指令,可以实现高性能的图像识别、语音唤醒和识别等应用。ESP-WHO 和 ESP-Skainet 也将支持此功能。

[ESP32][esp-idf] AP+STA实现无线桥接 中转wifi信号 路由器相关推荐

  1. 服务器无线桥接技巧,两个路由器无线桥接完美教程【图】

    摘 要 原标题:"两个路由器无线桥接怎么设置?[图]"的相关路由器192.168.1.1登陆页面设置教程资料分享.- 来源:路由器之家. 本文鸿哥主要给大家介绍下,两个路由器无线桥 ...

  2. 数码科技分享_路由器01————TP-LINK AC1900无线桥接:没用的路由器千万别扔掉,它还可以当你的WiFi放大器

    数码科技分享01_路由器 文章目录 数码科技分享01_路由器 无线桥接:没用的路由器千万别扔掉,它还可以当你的WiFi放大器 普联TP-LINK AC1900 无线桥接:没用的路由器千万别扔掉,它还可 ...

  3. 远距离WiFi传输模块,云望物联cv5200无线通信技术,WiFi信号远距离传输

    无线AP是组建无线局域网的常用设备,承担连接有线网和无线网的作用,大型公司中常用AP实现局域网的大面积覆盖,可将所有接入终端连接至同一网络进行集中管理.在这种大面积覆盖的情况下,面积越大意味着所需AP ...

  4. 服务器无线桥接怎么设置,高科路由器怎么设置无线中继 | 192路由网

    高科路由器是不错的路由器产品,如果我们要使用它的话,要怎么设置无线中继呢?设置无线中继,就是用高科路由器通过无线的方式,与另一台无线路由器建立连接:无线中继设置完成后,连接到高科路由器的无线wifi就 ...

  5. TP-link 无线路由器WDS设置方法图解_无线桥接设置 wifi无线变有线路由 中转站

    步骤如下: 一.设置能上网的路由器B设置 登陆无线路由器设置B管理界面,在无线设置-基本设置中设置"SSID号"."信道",如图: 在"无线设置&qu ...

  6. openwrt 无线桥接(AP)

    无线桥接常见的有三种模式 1.AP模式 AP模式其实是Access Point的简称,意思是:访问接入点.而无线网桥的AP模式,也就是利用无线网桥做无线信号的接入点了.那么,究竟是什么东西接入无线信号 ...

  7. 桥接路由器总是掉线_多路由的无线桥接步骤

    网络现在已经是我们生活中不可或缺的一部分了,尤其是更方便我们使用的WIFI.使用手机连接WIFI摆脱了线缆的束缚,我们可以走着看,坐着看,躺着看,在客厅看,在厨房看,在卧室看,甚至还能在厕所看,变化各 ...

  8. 一台电脑有线连接路由器另一台无线连接_两个无线路由器怎么实现无线桥接【详细介绍】...

    在面积较大的环境(如四室两厅.复式.写字间等),单台路由器无线覆盖范围有限,部分区域可能会信号较弱或存在信号盲点.无线桥接(WDS)可以将多台无线路由器通过无线方式互联,从而将无线信号扩展放大.无线终 ...

  9. 使用新路由器有线/无线桥接旧路由器

    问题描述 已有一个无线路由器,但信号不能满足需求,遂购买新路由器对其进行桥接.经过在网上搜索和实践,成功配置,将经验记录成帖. 解决方案 无线桥接 1. 打开新路由器设置界面.(根据路由器说明说或者网 ...

最新文章

  1. uploadhandler.php,WordPress Kernel Theme ‘upload-handler.php’任意文件上传漏洞
  2. Yii的各种render
  3. 检测到在集成的托管管道模式下不适用的 ASP.NET 设置, HTTP 错误 500.23 解决方案...
  4. 让 Hangfire 使用 MongoDB 存储
  5. Linux系统常用的基本命令【转载CSDN象在舞】
  6. php中如何将验证码放入页面,如何在php中生成验证码图片
  7. 数学建模:评价模型——主成分分析 PCA SPSS实现、python实现
  8. 遵循Java EE标准体系的开源GIS服务平台之一:平台架构
  9. 【转】VS2010安装包制作
  10. h5移动端flexible源码适配终端解读以及常用sass函数
  11. 获取C#代码执行的时间(精确到毫秒)
  12. VS语音信号处理(5) C语言PCM格式语音存为WAV格式语音工程实例
  13. 啊哈C——学习2.5一起来找茬
  14. Window 10 python 3.7安装 PyV8
  15. 域名可以用多久_一个域名能用多少年
  16. 【LED灯屏控制器】AG10K 烧录程序(2)
  17. PictureSelector九宫格图片展示
  18. 微软最走运和最倒霉的十个瞬间
  19. 量化、交易、策略、算法精选论文汇总,建议收藏
  20. c语言输入f1到f11,我来告诉你:电脑键盘的F1至F12正确用处

热门文章

  1. .net 如何引用迅雷组件
  2. traceroute命令(unix)/tracert命令(windows)的工作原理
  3. 2022年第一个技能:视频剪辑学习笔记
  4. 【qt开发】qt了解
  5. 微信小程序服务商下子商户支付下单接口
  6. python 数据、曲线平滑处理
  7. Java中String接受的最大字符串的长度
  8. js三层数组循环遍历(笛卡尔积)运算,并生成顺序
  9. java模拟post发送文件
  10. Windows10下VirtualBox虚拟机的备份与迁移