{"id":4787,"date":"2021-05-07T20:19:52","date_gmt":"2021-05-07T19:19:52","guid":{"rendered":"https:\/\/bitacora.eniac2000.com\/?p=4787"},"modified":"2021-05-07T20:19:52","modified_gmt":"2021-05-07T19:19:52","slug":"una-webcam-con-arduino-el-esp32-cam","status":"publish","type":"post","link":"https:\/\/bitacora.eniac2000.com\/?p=4787","title":{"rendered":"Una webcam con Arduino: el ESP32-Cam"},"content":{"rendered":"<p>No voy a descubrir nada nuevo si afirmo que los sistemas Arduino son peque\u00f1as maravillas. Se pueden hacer con ellos cosas incre\u00edbles en el \u00e1mbito de la dom\u00f3tica, e incluso con sistemas IoT y transmisi\u00f3n de radiofrecuencia. El problema habitual que suelen tener es que tienen unos recursos ciertamente limitados, pero para su \u00e1mbito de actuaci\u00f3n, son m\u00e1s que correctos. Sin embargo, existen placas espec\u00edficas que tienen algo m\u00e1s de potencia y capacidades, y que permiten dar un paso m\u00e1s all\u00e1: es el caso de las placas basadas en el ESP32. Ya he hablado de ellas en otro \u00e1mbito, en concreto en lo que se refiere a capacidades LoRa y LoRaWAN, pero hay un desarrollo espec\u00edfico, basado en el ESP32, que da bastante juego: las c\u00e1maras web. Y pensando en esto fue para lo que naci\u00f3 la ESP32-Cam.<\/p>\n<figure id=\"attachment_4788\" aria-describedby=\"caption-attachment-4788\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/05\/ESP32-CAM-camera.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/05\/ESP32-CAM-camera-400x224.jpg\" alt=\"Placa ESP32-CAM\" title=\"Placa ESP32-CAM\" width=\"400\" height=\"224\" class=\"size-medium wp-image-4788\" \/><\/a><figcaption id=\"caption-attachment-4788\" class=\"wp-caption-text\">Placa ESP32-CAM<\/figcaption><\/figure>\n<p>La placa fue originalmente desarrollada por Espressif, y se compone de un micro ESP32-S, una c\u00e1mara VO2640, y varios GPIOs que permiten conectar perif\u00e9ricos. Dispone de capacidad Bluetooth, as\u00ed como conector microSD para utilizar tarjetas de memoria. Y todo ello por un precio rid\u00edculo, inferior a los 8\u20ac (menos a\u00fan en el caso de las placas cl\u00f3nicas que se pueden encontrar en Aliexpress). De lo que no dispone es de un conector microUSB ni miniUSB, lo que implica que para programarlo es preciso utilizar un programador FTDI, pero no es nada tampoco cosa del otro mundo.<\/p>\n<figure id=\"attachment_4789\" aria-describedby=\"caption-attachment-4789\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/05\/ESP32-CAM-FTDI-programmer-5V-supply.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/05\/ESP32-CAM-FTDI-programmer-5V-supply-400x177.png\" alt=\"Diagrama de conexionado ESP32-CAM-Programador FTDI\" title=\"Diagrama de conexionado ESP32-CAM-Programador FTDI\" width=\"400\" height=\"177\" class=\"size-medium wp-image-4789\" \/><\/a><figcaption id=\"caption-attachment-4789\" class=\"wp-caption-text\">Diagrama de conexionado ESP32-CAM-Programador FTDI<\/figcaption><\/figure>\n<p>Desde el punto de vista f\u00edsico, hay que alimentar el dispositivo utilizando los pines de 5v y GND del programador, interconectar los puertos UOR-TX y OUT-RX, y para iniciar el dispositivo en formato de grabaci\u00f3n, puentear el GPIO0 y el GND de la propia placa. Una vez conectado de esta manera, se puede conectar el programador al PC, e iniciar la subida del firmware.<\/p>\n<p>Comentaba antes que la placa es un desarrollo de Espressif, y ellos mismos proporcionan el c\u00f3digo para subir un <a href=\"https:\/\/github.com\/espressif\/arduino-esp32\" target=\"_blank\">servidor de video en streaming<\/a> a la ESP32-Cam. Este c\u00f3digo es interesante, pues -entre otras funcionalidades- incorpora una funcionalidad de detecci\u00f3n de rostros y detecci\u00f3n de intrusos basado en las caras registradas.<\/p>\n<figure id=\"attachment_4791\" aria-describedby=\"caption-attachment-4791\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/05\/esp32-cam-face-recognition-detection.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/05\/esp32-cam-face-recognition-detection-400x208.jpg\" alt=\"Reconocimiento facial con el ESP32-CAM \" title=\"Reconocimiento facial con el ESP32-CAM \" width=\"400\" height=\"208\" class=\"size-medium wp-image-4791\" \/><\/a><figcaption id=\"caption-attachment-4791\" class=\"wp-caption-text\">Reconocimiento facial con el ESP32-CAM<\/figcaption><\/figure>\n<p>El c\u00f3digo es interesante, pero tiene algunos defectos. Entre ellos, que no permite hacer uso del peque\u00f1o LED que trae incorporado para hacer las veces de flash. Tras buscar un poco, encontr\u00e9 <a href=\"https:\/\/github.com\/easytarget\/esp32-cam-webserver\" target=\"_blank\">otro desarrollo que incorpora una serie de mejoras sobre el c\u00f3digo original.<\/a>. Tras haber utilizado ambos, recomiendo de manera clara este \u00faltimo.<\/p>\n<p>Y para cerrar, comentar que es posible hacer uso de este servidor web dentro de HomeAssistant. Basta con crear una entrada de tipo c\u00e1mara gen\u00e9rica, apuntando a la URL de captura de im\u00e1genes est\u00e1ticas:<\/p>\n<blockquote><p>\ncamera<br \/>\n  &#8211; platform: generic<br \/>\n    name: ESP32-Cam<br \/>\n    still_image_url: http:\/\/192.168.0.XXX\/capture?_cb.png<br \/>\n    verify_ssl: false\n<\/p><\/blockquote>\n<figure id=\"attachment_4792\" aria-describedby=\"caption-attachment-4792\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/05\/ESP32-CAM-HomeAssistant.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/05\/ESP32-CAM-HomeAssistant-400x301.png\" alt=\"ESP32-CAM integrada con HomeAssistant. Vista de mi patio\" title=\"ESP32-CAM integrada con HomeAssistant. Vista de mi patio\" width=\"400\" height=\"301\" class=\"size-medium wp-image-4792\" \/><\/a><figcaption id=\"caption-attachment-4792\" class=\"wp-caption-text\">ESP32-CAM integrada con HomeAssistant. Vista de mi patio<\/figcaption><\/figure>\n<p>Las pegas principales de la c\u00e1mara son dos: la primera es que el m\u00f3dulo de la c\u00e1mara no es ninguna maravilla. Sin embargo, al ser de un tipo estandarizado, es bastante sencillo encontrar mejores m\u00f3dulos, con cable m\u00e1s largo, y lentes ojo de pez, entre otras flipadas. La segunda es que no dispone de ninguna carcasa. Tampoco es problema, es posible encontrar bastantes <a href=\"https:\/\/www.thingiverse.com\/search?q=esp32-cam&#038;type=things&#038;sort=relevant\" target=\"_blank\">dise\u00f1os en Thingiverse para imprimir una carcasa en 3D<\/a>.<\/p>\n<p><strong>Referencias:<\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/https:\/\/randomnerdtutorials.com\/esp32-cam-video-streaming-face-recognition-arduino-ide\/\" target=\"_blank\">ESP32-CAM Video Streaming and Face Recognition with Arduino IDE<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/espressif\/arduino-esp32\/tree\/master\/libraries\/ESP32\/examples\/Camera\/CameraWebServer\" target=\"_blank\">Espressif ESP32-CAM CameraWebServer Example<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/easytarget\/esp32-cam-webserver\" target=\"_blank\">ESP32-CAM example revisited<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>No voy a descubrir nada nuevo si afirmo que los<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[13],"tags":[133,619,620,799],"series":[],"class_list":["post-4787","post","type-post","status-publish","format-standard","hentry","category-informatica","tag-arduino","tag-esp32","tag-esp32-cam","tag-homeassistant"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/4787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4787"}],"version-history":[{"count":0,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/4787\/revisions"}],"wp:attachment":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4787"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fseries&post=4787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}