问题描述
使用ESP32 Cam连接到本地Wi-Fi,并在其上运行一个Web服务器以提供视频控制和流媒体服务。在Linux PC以及女儿的iPhone中可以正确地通过输入http://192.168.1.132
访问该设备,但是在三星Android手机上却无法进行访问。首次尝试时,手机屏幕上短暂显示了摄像头图片,之后则遇到了“ERR_ADDRESS_UNREACHABLE”的错误。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1 – 更新ESP32软件库和固件
根据评论提示,可能是由于使用了具有兼容性问题的ESP32库版本导致的问题。请确保已经安装并使用的是最新版的ESP32库。
- 软件开发环境准备:
- 打开Arduino IDE。
-
从工具菜单中选择“板” > “管理硬件”,然后在搜索框中输入:“esp32cam”。
-
更新库版本:
- 在Arduino IDE主界面,依次点击“文件” > “首选项”。如果已有设置存在,则直接跳转至第2步;若无则在”附加开发板URL(逗号分隔):”后添加如下地址:https://dl.espressif.com/dl/package_esp32_index.json
- 点击“工具” > “开发板” > “开发板管理器”,搜索并更新”esp32″。
- 重启Arduino IDE。
- 重新编译和上传最新的Web服务器代码至ESP32 Cam。
方案2 – 调整网络接口配置
在Web服务器设置中,可能需要调整本地IP地址分配或相关端口开放规则:
#include <WiFi.h>
#include <WebServer.h>
const char* ssid = "your_ssid";
const char* password = "your_password";
void handleRoot() {
server.sendHeader("Connection", "close");
server.send(200, "text/html", "<h1>Hello from ESP32Cam</h1><video autoplay controls src='/stream'></video>");
}
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
// 调试用:使用指定的本地IP地址和端口
server.begin(7123);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.local IP); // 打印实际使用的本地IP地址
}
void loop() {
server.handleClient();
}
请确保在服务器设置中正确配置了需要开放的端口及网络接口参数。
方案3 – 检查手机侧问题
- 需要保证三星Android设备已连接至同一Wi-Fi子网;
- 尝试重置网络设置或重启设备,排除软件故障;
- 使用类似“Speedtest by Ookla”这样的工具检查移动设备无线/数据信号强度。
以上步骤应该能够帮助解决通过IP地址访问ESP32 Cam Web服务器时,在Android手机上出现的问题。如果问题仍然存在,请考虑查阅相关的文档和在线支持资源以获得更详细的解决方案。
正文完