繁体   English   中英

如何连接 ESP32 Wrover Cam (WiFi Cam)?

[英]How to connect the ESP32 Wrover Cam (WiFi Cam)?

我在 WiFi Cam 示例中上传了此代码

#include <WebServer.h>
#include <WiFi.h>
#include <ESPmDNS.h>
#include "esp_system.h"
#include <esp32cam.h>

static auto HQVGA = esp32cam::Resolution::find(240, 160);  
static auto QVGA = esp32cam::Resolution::find(320, 240);
static auto WQVGA = esp32cam::Resolution::find(400, 240);  
static auto VGA = esp32cam::Resolution::find(640, 480);  
static auto SVGA = esp32cam::Resolution::find(800, 600);

const char *ssid = "***";
const char *password = "***";
const char *dns = "camara";

WebServer servidor(80);


void conectaWiFi(){

    Serial.println();
    Serial.print("Connectando a la red: ");
    Serial.println(ssid);

    WiFi.persistent(false); //Permite que la configuracion del Wifi no sea afectada.
    WiFi.mode(WIFI_STA);    //Configura el Wifi en modo estacion
    WiFi.begin(ssid,password);      
 
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);       
        Serial.print(".");
    }

    Serial.println("");
    Serial.println("WiFi conectado");
    Serial.println("Direccion IP: ");
    Serial.println(WiFi.localIP());
    Serial.println("Direccion MAC: ");
    Serial.println(WiFi.macAddress());
    //http://camara.local   //Servidor dns que sustituye a la IP (solo funciona con 
    Linux o IOS) Para windows se requiere software adicional

    if (!MDNS.begin(dns)) {
          Serial.print("Se configuro el DNS: http://");
          Serial.print(dns);
          Serial.println(".local/");

    }
    else{
        MDNS.addService("http", "tcp", 80); 
    } 

}

void error404() {
    servidor.send(200, "text/plain", "Error pagina no encontrada");  
}

void servirImagen() {

  auto frame = esp32cam::capture();
  if (frame == nullptr) {
    servidor.send(503, "", "");

    return;
  }
   Serial.printf("IMAGEN TOMADA %dx%d %db\n", frame->getWidth(), frame->getHeight(),
                static_cast<int>(frame->size()));

  servidor.setContentLength(frame->size());
  servidor.send(200, "image/jpeg");
  WiFiClient client = servidor.client();
  frame->writeTo(client);
}

void setup() {

  Serial.begin(115200);
  using namespace esp32cam;

  Config configuracion;
  configuracion.setPins(pins::AiThinker);
  configuracion.setResolution(QVGA);
  configuracion.setBufferCount(5);  //Establece el numero de imagenes en el buffer
  configuracion.setJpeg(80);

  bool ok = Camera.begin(configuracion); //Inicializa la camara con la configuracion         
  previa
  Serial.println(ok ? "CAMERA OK" : "Error al inicializar la camara");

  conectaWiFi();

  servidor.on("/imagen.jpg", servirImagen); //En la funcion servirImagenes se creara la 
  pagina /imagen.jpg

  servidor.onNotFound(error404);

  servidor.begin();

  Serial.println("Servidor iniciado");

  }

void loop() {
  servidor.handleClient();
}

上面的代码编译没有问题,但是访问相机显示失败,我检查了错误代码但它仍然不起作用(对不起,因为我的个人资料级别无法发布图像哈哈,我放了一个图像链接代替)。

Arduino 串行中的错误图像

我用这个参数编译:

Arduino参数

这是 ESP32 Wrover:

我的 ESP32 摄像头

预先感谢您的帮助...

四个可能的问题之一:

  • 您连接相机的电路板可能有错误的引脚排列。 尝试库支持的其他每个引脚。 我会先尝试这个,因为这是最简单的事情,虽然很耗时。 您需要更改行configuracion.setPins(pins::AiThinker); 使用其他引脚定义。

  • 您的相机可能没有正确安装。 相机的细电缆很容易错位。 仔细检查以确保它已完全插入并正确就位。 从您的照片来看,它看起来安装正确,但值得重新安装。 如果您尝试更改引脚配置,请确保在重新安装相机之前返回原始状态。

  • 您可能正在使用不受支持的相机。 看起来您的相机与电路板一起提供,因此这不太可能,但可能。

  • 您的相机或电路板可能有缺陷。

如果最初安装在相机上的固件可以正常工作,那么它可能是引脚排列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM