Banner publicitario de PCBWay

Ayuda con esp32-cam.

Que es una "ida de olla"????
En este último caso, la alimentación afecta bastante. Por USB a través del módulo fdti de programación funciona regumal.
Yo suporongo que si conectás GND del ftdi a GND de una fuente externa de 5V y del WT32, vas a poder programarlo y evaluarlo sin necesitar "la cuna de programación". Ahora, si tu circuito usa los GPIO de comunicacion vas a estar complicado...

La otra puede ser conectar el ftdi a un USB 3.0 que se banca un par de Amperes....pero vaya uno a saber si hay que comunicarse con el puerto para decirle que nos entregue mas corriente.... La verdad es que no he estudiado mucho esa versión de USB.
 
Última edición:
Ida de olla: Desvarío, una locura, una idea absurda...

Funciona con el FDTI pero me ha dado problemas, funciona mejor y más confiable con alimentación externa.
 
Idem, he leido algunos artículos que trataban sobre esto y sobre reconocimiento facial con estos artilugios pero dada la performance de los mismos descreo de la posibilidad, "haberá" que escalar a Raspberry.. 💁‍♂️
En realidad se puede hacer tranquilamente programas de visión artificial, reconocimiento de voz , TTS y algunas cosas interesantes con IA si salís del IDE de Arduino y lo programas con el ESP-IDF, que básicamente es el entorno nativo de programación de los ESP. Ahí baje una de las cámaras y la desarme:
1000151981.jpg


1000151980.jpg

Por lo que veo son distintos 🤔
Tener bajo los fps también puede ser por qué tenés configurado en el IDE el reloj a baja frecuencia (8-10mhz)... Ponelo en 20mhz si no está así y fíjate si mejora sin meterte ruido en la imagen...
Más allá de todo esto, estuve googleando y supuestamente el XH-32S tiene más flash que el ESP32S, pero la diferencia más notable y posible causa de tu problema, es a nivel hardware... Por un lado leí que la antena PCB es mala y de poca eficiencia; La única manera que lo solucionan es implementando la antena exterior post jumpeado. La otra que parece más grave, es la memoria externa. Al parecer la PSRAM en algunos viene incorporada con 8Mb (más los 16Mb de flash) y en otros solo tiene SRAM (520kb).
En mí caso con la cámara me fijé que memoria tenía, y es una IPUS IPS3204JSQ de 32Mb
1000151998.jpg
 
Última edición:
En mí caso con la cámara me fijé que memoria tenía, y es una IPUS IPS3204JSQ de 32Mb
Con que "te fijaste"??? Con el ESPConnect o mirando el chip??

Tener bajo los fps también puede ser por qué tenés configurado en el IDE el reloj a baja frecuencia (8-10mhz)... Ponelo en 20mhz si no está así y fíjate si mejora sin meterte ruido en la imagen...
Eso es otra cosa...
Con el ESPConnect me dice que el cristal es de 40MHz, pero en un corrida posterior a la foto me decía que era de 26MHz :oops::oops:. Voy a llamar a la API que pone la frecuencia del núcleo y veré que aparece ...
 
La otra que parece más grave, es la memoria externa. Al parecer la PSRAM en algunos viene incorporada con 8Mb (más los 16Mb de flash) y en otros solo tiene SRAM (520kb).
En mí caso con la cámara me fijé que memoria tenía, y es una IPUS IPS3204JSQ de 32Mb
La mía tiene un chip PSRAM pero no pude leer que corno dice. Voy a revisar de nuevo a ver si logro descubrirlo.
Pero en realidad no necesita taaaanta memoria, aun en color. Si usara VGA sería 640x480x4=1.2Mb y hasta ahí es razonable....otra historia es transferirlo vía WiFi con la antena pedorra esa....

PD: gracias por tomarte el laburo de desarmar la cámara.
 
La mía tiene un chip PSRAM pero no pude leer que corno dice. Voy a revisar de nuevo a ver si logro descubrirlo.
Pero en realidad no necesita taaaanta memoria, aun en color. Si usara VGA sería 640x480x4=1.2Mb y hasta ahí es razonable....otra historia es transferirlo vía WiFi con la antena pedorra esa....

PD: gracias por tomarte el laburo de desarmar la cámara.
pá mí, si no se lee la memoria, quizas tengas un clone con muy baja PSRAM y por eso la latencia... 😓 yo estoy buscando un misero cable como la gente, el que uso siempre finiquito y me tira error :facepalm:

// WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality
// Ensure ESP32 Wrover Module or other board with PSRAM is selected
// Partial images will be transmitted if image exceeds buffer size

1000152045.jpg
pá mí, si no se lee la memoria, quizas tengas un clone con muy baja PSRAM y por eso la latencia... 😓 yo estoy buscando un misero cable como la gente, el que uso siempre finiquito y me tira error :facepalm:



1000152045.jpg

Consegui cable :silbando: Por lo que veo, la unica diferencia que veo es la SPRAM, el resto al parecer son bastantes similares

Captura de pantalla 2026-02-02 202956.png
 
Última edición:
Ahora estoy tratando de toquetear un poco el servidor web para que me informe el tiempo de conversión a JPG y, aparte, el tiempo que usa para enviar por la red, por que me parece que ahí está el lío. La porquería esta del servidor informa TODO JUNTO, el tiempo necesario para procesar la imagen y el que usa para enviarla por la red y de ahí "calcula" los FPS :rolleyes: :rolleyes:
También cambié el modelo de board por que estaba usando la AI Thinker y esa no me deja configurar nada, mientras que si uso la WROVER Module puedo tocar la frecuencia del núcleo, el modelo de memoria que usa para cargar el programa y la forma de acceso a la flash...
 
Bueno...parece que hay dos problemas: uno con en el envío de datos al navegador y otro con la red WiFi (Estoy enviando solo fotografías)
Con la red: el tiempo que informa el web server está dedicado en un 99% al envío de datos por la red y el resto para conversión a JPG y procesamientos varios.
Con el envío al navegador: acá viene lo raro.... hay veces que el envío de una foto demora 2, 3 o 4ms pero el navegador no la muestra :oops: :oops: (lo mismo pasa con Firefox y con Edge) y un tiempo después comienza a mostrar la imagen como si aún la estuviera cargando aunque el server informa que ya transmitió toda la imagen :oops::oops:. Yo he visto algo parecido hace muuuuchos años y se soluciona fácil "flusheando" el stream de salida en cuanto se envían los datos...solo que acá no tengo NPI de como hacerlo en este código del servidor. Según mis cálculos, debe haber un buffer de 16K o algo similar que no se envía hasta que no se llena, y como acá las imágenes tienen 4 o 5K tengo que juntar 4 antes de que alguna salga. Voy a tener que analizar el código de envío de datos la red a ver si encuentro que ocurre...
 
Bueno...parece que hay dos problemas: uno con en el envío de datos al navegador y otro con la red WiFi (Estoy enviando solo fotografías)
Con la red: el tiempo que informa el web server está dedicado en un 99% al envío de datos por la red y el resto para conversión a JPG y procesamientos varios.
Con el envío al navegador: acá viene lo raro.... hay veces que el envío de una foto demora 2, 3 o 4ms pero el navegador no la muestra :oops: :oops: (lo mismo pasa con Firefox y con Edge) y un tiempo después comienza a mostrar la imagen como si aún la estuviera cargando aunque el server informa que ya transmitió toda la imagen :oops::oops:. Yo he visto algo parecido hace muuuuchos años y se soluciona fácil "flusheando" el stream de salida en cuanto se envían los datos...solo que acá no tengo NPI de como hacerlo en este código del servidor. Según mis cálculos, debe haber un buffer de 16K o algo similar que no se envía hasta que no se llena, y como acá las imágenes tienen 4 o 5K tengo que juntar 4 antes de que alguna salga. Voy a tener que analizar el código de envío de datos la red a ver si encuentro que ocurre...
:no: No te voy a decir nada nuevo para vos... por lo que lei, ya mas o menos sabes por donde encaminarte, si es que ya no estas encaminado...
El "Efecto Kétchup (Segmentación de Datos o Buffering de Salida) pasa justamente cuando queres enviar sobres por correo. El sistema de red del ESP32 es como un cartero eficiente que no quiere caminar hasta el buzón por un solo sobre de 4K; el vagoneta prefiere esperar a tener la bolsa llena como dijiste (unos 14K o 16K) para hacer un solo viaje.
Como tus fotos son chicas, el cartero se queda sentado esperando la segunda, tercera y cuarta foto. De repente, cuando se llena el bolson la saca, envía todo junto de golpe. Por eso el navegador no muetranada y, de pronto, la imagen aparece escupida de una vez.
El 99% de tiempo en red, es un tiempo de espera, no de trabajo. Me paso algo similar con el bot de Telegram y pelear la parte de generación de video AVI con varios JPG y mandarlo... Ponche varias veces por conceptuar algunas cosas mal (no es tu caso)...
Ese porcentaje no significa que la red sea lenta, sino que el procesador terminó su trabajo (sacar la foto y convertirla a JPG) en un suspiro, y se queda esperando de brazos cruzados a que el hardware de red le confirme que los datos salieron. El ESP32 reporta esa espera como tiempo de red.
Para solucionar esto tenes varias vias; En mi caso tuve que decirle al servidor: "No esperes a nadie, envia lo que tenges ya".
Desactiva el Algoritmo de Nagle: Es un interruptor llamado TCP_NODELAY (app_httpd.cpp - startCameraServer()). Con esto , le quitas la "pereza" al cartero y lo obligas a salir con cada sobre sin retardos de 40ms a 200ms, por pequeño que sea.
En las ultimas versiones de CameraWebServer el servidor HTTP de Espressif ya viene optimizado para el streaming de video, pero perdes la funcionalidad del modelo que tiene las primeras versiones de vision artificial... Todo esto ya lo pari en algun moento; Tenia algunos tips mas, pero no se donde tengo esas carpetas de todas las versiones que arme :facepalm:
Y... De 32 a 8, hay una terrible diferencia. Si podes devolverlo por ML, ni lo dudes
NAAA, Paraa... Ahí vi bien 6404L-3SQ (o APS6404L-3SQR-SN) 64 Megabits - PSRAM (Pseudo-SRAM) QSPI
no se por que en algun momento delire mb como megabyte en mi mente :facepalm: son megabits... aclaro por las dudas por que creo quelo dije en algun momento :unsure: o no? bue... por las dudas aclaro
 
Atrás
Arriba