Tabla de contenido
resumen
Este proyecto trata sobre un escáner o lector de códigos QR diseñado con ESP32 CAM Module y OpenCV. Desarrolle programas y dispositivos utilizando el módulo de cámara ESP32 y una biblioteca Python que puede escanear códigos QR. Utilizado anteriormente Módulo de escaneo de código QR Myrkult Puede usar Arduino para leer QR o códigos de barras, pero el módulo es muy caro. Con ESP32 CAM, los proyectos son un poco más baratos.
Los códigos QR ahora son parte de nuestra vida cotidiana porque los usamos en casi todas partes, incluidos los pagos y las visitas a sitios web y enlaces. Además, las personas los agregan a sus currículums y comparten enlaces a sus perfiles sociales. No solo personalmente, sino también las grandes empresas de seguimiento y entrega los utilizan para diferenciar sus productos.
Un código QR es un material impreso como una imagen codificada en un formato específico que permite a los programas descifrar y decodificar el significado o mensaje dentro de él.
Aunque el código se decodifica detectando diferentes zonas y colocando cajas oscuras en una cierta disposición comprensible. Cada cuadro oscuro representa una selección o no seleccionada. Las manchas oscuras pueden contener valores como 0, 1, 2, 4, 8, 16, 32, 64 o 128.
Lista de materiales
A continuación se muestra una lista de listas de materiales para construir. Escáner de código QR con ESP32 CAM Módulo. Todos estos componentes se pueden comprar en Amazon.
Módulo de leva ESP32
Módulo de cámara basado en ESP32 desarrollado por Pensador de IAEl controlador es CPU de 32 bits y se combina LAN inalámbrica + Bluetooth/BLE Falta de. Está incorporado 520 KB barrio marginal con externo 4M PSRAMEse pin GPIO tiene soporte como: UART, SPI, I2C, PWM, ADC, Y Ducker.
El módulo se llama Módulo de cámara OV2640 Tiene la resolución de cámara más alta 1600 × 1200La cámara se conecta a la placa ESP32 CAM mediante un conector chapado en oro de 24 pines. El tablero es Tarjeta SD Hasta 4 GB. La tarjeta SD almacena las imágenes capturadas.
Para obtener más información sobre el módulo de cámara ESP32, consulte el anterior. Tutoriales de introducción.
Conexión FTDI ESP32-CAM
La placa no tiene un chip programador. Por lo tanto, para programar esta placa, necesita usar cualquier tipo de Módulo USB-TTLHay un montón de Módulo FTDI Disponible sobre la base de CP2102 o CP2104 Chips u otros chips.
Síguenos Conexión entre el módulo FTDI y la leva ESP32 Módulo.
ESP32-Cam | Programador FTDI |
Teletipo | Teletipo |
5V | Teletipo |
U0R | Tx |
U0T | Teletipo |
GPIO0 | Teletipo |
Conectar 5V & Teletipo Pines en el ESP32 a 5V y GND en el módulo FTDI. Semejantemente Teletipo dirección UOT Y Tx dirección UOR Anclar. Y lo más importante, necesitas cortocircuitar LOU Y Teletipo Fijar juntos. Esto es para poner el dispositivo Modo de programaciónCuando haya terminado de programar, puede eliminarlo.
Proyecto PCB Gerber File & PCB Ordering Online
Si no desea ensamblar circuitos en una placa de pruebas y desea una PCB para su proyecto, aquí está la PCB. La placa PCB para la placa ESP32 CAM está diseñada utilizando EDA fácil Herramientas de diseño de PCB y esquemáticos en línea. La PCB se ve así:
El archivo Gerber de la PCB se muestra a continuación. Simplemente descargue el archivo Gerber y solicite la PCB. Todas las placas de circuito impreso Y $1$ Solamente.
Puede usar este archivo Gerber para solicitar una PCB de alta calidad para este proyecto. Para ello, Todas las placas de circuito impreso Visite el sitio web oficial haga clic aquí: https://www.allpcb.com/.
Ahora puede cargar un archivo ger ber[今すぐ見積もり]Seleccione una opción. De estas opciones, puede seleccionar el tipo de material, las dimensiones, la cantidad, el grosor, el color de la máscara de soldadura y otros parámetros requeridos.
Una vez que haya ingresado todos los detalles, seleccione su país y método de envío. Finalmente, puede realizar un pedido.
Puede ensamblar los componentes en la placa PCB.
Instalación de la biblioteca ESP32CAM
Aquí hay algunos comunes Ejemplo de servidor web ESP Más bien otro proceso de transmisión. Por lo tanto, debe agregar otra biblioteca ESPCAM. La biblioteca esp32cam proporciona una API orientada a objetos para usar. Cámara OV2640 en Microcontroladores ESP32Es un envoltorio para ESP32-Biblioteca de cámaras.
Ir a lo siguiente Enlace de Github Descargue la biblioteca zip como en la imagen
Una vez descargado, agregue esta biblioteca zip a su carpeta de biblioteca Arduino. Para ello, siga estos pasos:
abrir Arduino -> bosquejo -> Incluir bibliotecas -> . Agregar una biblioteca ZIP… – Vaya al archivo zip descargado > -> agregar
ESP32 Módulo CAM Código fuente/Programa
Aquí código fuente para Recuento de objetos Con módulo de leva ESP32. Copie y pegue el código en el IDE de Arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | #include <WebServer.h> #include <WiFi.h> #include <esp32cam.h> constante chamuscar* WIFI_SSID = “SSID”; constante chamuscar* WIFI_PASS = “Contraseña”; Servidor web servidor(80); estático Automático tradición = ESP32 Cam::resolución::encontrar(320, 240); estático Automático Media Resolución = ESP32 Cam::resolución::encontrar(350, 530); estático Automático alquilar = ESP32 Cam::resolución::encontrar(800, 600); No válido Saab Jpg() { Automático marco = ESP32 Cam::capturar(); Si (marco == Nurptor) { serial.Printrung(“Error de captura”); servidor.Transmisión(503, “”, “”); devolución; } serial.Impresión(“Capturar correctamente %dx%d %db\n”, marco–>getWidth(), marco–>getHeight(), static_cast<entero>(marco–>tamaño())); servidor.setContentLength(marco–>tamaño()); servidor.Transmisión(200, “Imagen/JPEG”); Cliente WiFi cliente = servidor.cliente(); marco–>Escribir a(cliente); } No válido Manejar JpgLo() { Si (!ESP32 Cam::cámara.Resolución de cambios(tradición)) { serial.Printrung(“Set Lawless falla”); } Saab Jpg(); } No válido Hola Handle Jpg() { Si (!ESP32 Cam::cámara.Resolución de cambios(alquilar)) { serial.Printrung(“Error en la configuración de alta resolución”); } Saab Jpg(); } No válido Manejar JpgMid() { Si (!ESP32 Cam::cámara.Resolución de cambios(Media Resolución)) { serial.Printrung(“Establecer error de resolución media”); } Saab Jpg(); } No válido arreglo(){ serial.empezar(115200); serial.Printrung(); { uso Espacio de nombres ESP32 Cam; establecimiento …cfg; …cfg.Establecer Pin(anclar::Aisinker); …cfg.Establecer resolución(alquilar); …cfg.setBufferCount(2); …cfg.Establecer jpeg(80); Booleano Lo he entendido = cámara.empezar(…cfg); serial.Printrung(Lo he entendido ? “Cámara OK” : “Mal funcionamiento de la cámara”); } LAN inalámbrica.tenaz(falso); LAN inalámbrica.modo(WIFI_STA); LAN inalámbrica.empezar(WIFI_SSID, WIFI_PASS); mientras (LAN inalámbrica.posición() != WL_CONNECTED) { demorar(500); } serial.Impresión(「http://」); serial.Printrung(LAN inalámbrica.Local IP()); serial.Printrung(/ Camro .jpg”); serial.Printrung(” / Come Hi .jpg”); serial.Printrung(“/Cammid.jpg”); servidor.en(“/cam-lo.jpg”, Manejar JpgLo); servidor.en(“/cam-hi.jpg”, Hola Handle Jpg); servidor.en(“/cam-mid.jpg”, Manejar JpgMid); servidor.empezar(); } No válido bucle() { servidor.Manejar cliente(); } |
Antes de cargar el código, debe realizar pequeños cambios en el código. cambio SSID Y contraseña Variable y en función de la red WiFi.
Ahora compilar Y subir Está en la placa ESP32 CAM. Sin embargo, durante la carga, debe realizar algunos pasos cada vez.
- Por favor, compruebe Pin IO0 Se corta al suelo cuando presionas el botón de carga.
- Si ves puntos y guiones durante la carga, Botón Restablecer Inmediatamente
- Una vez que se cargue el código, retire el cortocircuito en el pin I01 en tierra y presione el botón de reinicio nuevamente.
- Si la salida es Monitor serie Si aún no está allí, presione el botón de reinicio nuevamente.
Ahora debería ver una salida similar a la imagen de abajo.
Dado que el ESP32-CAM está enviando vídeo en directo, copie esta dirección IP y véala.
Instalación de bibliotecas de Python
Para mostrar una transmisión en vivo de un video en su computadora, debe crear un script de Python que le permita obtener los fotogramas del video. El primer paso es instalar Python. Ir python.org Y descarga Python.
Una vez descargado, instale Python.
Luego vaya al símbolo del sistema e instálelo Nampi, CV abierto & Barra de pisón Biblioteca.
- Amable: pip instalar pañal Presione y presione Entrar. Una vez completada la instalación.
- Amable: pip instalar opencv-python Presione y presione Entrar.
- Amable: pip instalar barra piz Presione Entrar para cerrar el símbolo del sistema.
Python Code + QR Code Scanner ESP32 Cam
¿Qué hay en? Editor de código inactivo u otros Editor de código Python.
A continuación, cree una nueva carpeta. Dentro de la carpeta, cree un nuevo archivo de Python y pegue el código a continuación.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | importación CV2 importación Nampi como NP importación Barra de pisón.Barra de pisón como Barra de pisón importación Urulib.pedir #cap = CV2. Captura de vídeo (0) fuente = CV2.FONT_HERSHEY_PLAIN enlace=「http://192.168.1.61/」 CV2.Ventanas con nombre(“Enviar en vivo”, CV2.WINDOW_AUTOSIZE) anterior=“” Pre=“” mientras verdadero: img_resp=Urulib.pedir.URL abierta(enlace+“Ven Hai .jpg”) Teletipo=NP.arreglo(Matriz de bytes(img_resp.leer()),Tipo D=NP.UINT8) marco=CV2.Imdecodificación(Teletipo,–1) #_, marco = cap.read() Objetos decodificados = Barra de pisón.descodificar(marco) para Teletipo Y Objetos decodificados: Pre=Teletipo.datos Si anterior == Pre: pasar de otra manera: Impresión(“Tipo:”,Teletipo.amable) Impresión(Datos: “,Teletipo.datos) anterior=Pre CV2.Poner texto(marco, Teletipo(Teletipo.datos), (50, 50), fuente, 2, (255, 0, 0), 3) CV2.Imshaw(“Enviar en vivo”, marco) …key = CV2.Llave de espera(1) Si …key == 27: quebrar CV2.Todas las ventanas para destruir() |
cambio Dirección IP Cópielo desde el monitor serie de Arduino y actualícelo con la variable URL en el código anterior. A continuación, guarde y ejecute el código.
Nota: Si tiene problemas con la biblioteca pyzbar, continúe y descargue Microsoft Visual C ++ 2013 Redistributable Package (x64) – 12.0.30501. Aquí
Ahora, para probar el funcionamiento del proyecto, muestre algunos códigos QR frente al módulo ESP32 CAM. Verá los detalles del código QR en la pantalla de su computadora como se muestra en la imagen a continuación.
Así es como puede construir su propio escáner o lector de códigos QR utilizando el módulo ESP32 CAM y la biblioteca OpenCV Python.
Video Tutorial y Guía
Lector / escáner de códigos QR con módulo de cámara ESP32 y OpenCV