Hemos cubierto varios Reemplazos de eco de Amazon y Google Nest alternativas a través de una discurso de dispositivos con propulsión ESP32, y es parcialmente gracias a la relativa simplicidad de un asistente de voz combinado con asistente de origen que los hace posibles en primer sitio. Sin requisa, cualquier cosa con una pantalla es un poco más complicada, por lo que me propuse construir un reemplazo de Google Home Hub utilizando una pantalla con ESP32 de 7 pulgadas, alimentada por el escoma.
Para este plan, estoy usando la pantalla HMI ESP32 AI de 7 pulgadas Elecrow Crowpanel Advance, y tiene una serie de características que hacen que sea valentísimo para usar de esta modo. Tiene un panel de pantalla táctil IPS de 800×480, admite la añadidura de módulos complementarios para Lora, Zigbee, Thread, Wi-Fi 6 o Radiodifusión de 2.4GHz, y tiene un micrófono incorporado. Hay una salida de altavoz, un conector de fila, un temporalizador en tiempo existente, una ranura para polímero SD y múltiples pinos UART para conectar sus propios módulos. Tiene un trozo empacado en un solo tablero, y el ESP32-S3 N16R8 está en el corazón de eso.
Si solo desea ver los resultados de esto, puede Mira mi repositorio de Github que contiene todo el código para hacer que este funcione, que porté desde el ESP32-S3-Box-3. Ahora, tengo un asistente de voz de trabajo con una pantalla en la que puedo construir y amplificar más funciones a medida que pasa el tiempo para que sea capaz de todo lo que el centro de Google Home puede hacer, y mucho más.
Sobre este artículo: Elecrow nos envió el panel de 7 pulgadas Advance de Crowpanel para las pruebas. La compañía no tenía información sobre el contenido de este artículo.
Elecrow Crowpanel Advance de 7 pulgadas HMI ESP32 AI Pantall Hardware
Hacer un uso increíble de la disponibilidad de pin limitada del ESP32
En primer sitio, vamos a sacar poco del camino: este dispositivo en particular no tiene ninguna característica de “IA”, a pesar de lo que implicaría el nombre. Inicialmente esperaba que tuviera algún tipo de NPU a costado para descargar el procesamiento de IA, pero de dónde parece provenir el nombre de “IA” es el hecho de que tiene un micrófono incorporado y una salida de altavoces. “AI” no es solo un micrófono y un altavoz, por lo que positivamente no entiendo por qué está en el nombre.
Con eso fuera del camino, ese es honestamente todavía el final de (casi, más sobre eso en un momento) todo lo pesimista que tengo que afirmar. La calidad de construcción es excelente, la pantalla es fantástica y la decisión compleja para el número definido de pines ofrecidos por el ESP32 es lo más bueno posible. Elecrow tiene Publicado una documentación fantástica con tutoriales de código, hojas de datos y manuales para cada módulo incorporado presente. Esos manuales terminaron salvándome proporcionado cuando se trataba del micrófono. Empaca muy Un buen hardware para el precio, y la forma en que la compañía tráfico con pines es milagroso.
Esa compleja decisión al diseño del PIN implica un par de interruptores en la parte posterior que puede tumbar para habilitar una funcionalidad específica, ya que GPIO llega a una prima aquí. Tus opciones son:
-
Micrófono y altavoz
-
Módulo inalámbrico
-
Maleable TF
-
Micrófono y polímero TF
No poder usar todo esto a la vez no es tropiezo de Elecrow, para ser clara. El ESP32-S3 tiene 45 pines GPIO, pero solo 36 son positivamente utilizables en el ESP32-S3-Wroom-1-N16R8. Algunos pines controlan el comportamiento de comienzo, algunos (como IO35, IO36 e IO37) se usan para Octal SPI PSRAM, y otros se usan para la pantalla y la pantalla táctil, que obviamente son componentes esenciales para este dispositivo particular.
Contiando PSRAM, nos queda 33 pines utilizables, y la pantalla con su configuración RGB565 solo usa 20 pines; Ahora hemos bajado de 45 pines GPIO a solo 13 alfileres para todo lo demás. Contando el bus I2C, el compensador táctil y el timbre, positivamente no queda mucho.
Si tuviera una crítica de la documentación, es que se siente poco fragmentado. Si correctamente el repositorio de Github de la empresa está correctamente estructurado y pensado, se sentía como cada vez que busqué poco relacionado con este tablero, descubrí otro Página con aún más información que no estaba vinculada en GitHub. Por ejemplo, descubrí que la compañía ha publicado muestras de código para trabajar con los diversos módulos complementarios en esta pantalla, y están vinculados en la descripción de un video de YouTube Publicado por Elecrow.
Hay una crítica más de la documentación que tengo, que todavía vuelve a alabar la fuerza de la misma. Hacer que el micrófono funcionara fue difícil; No pude encontrar muestras de código de ELECROW que demuestren cómo interactuar con él, sino una combinación del repositorio de GitHub, que proporciona la hoja de datos para el módulo de micrófono específico que se usa (el INMP441), y la información en el sitio de Elecrow me dio lo que necesitaba que funcionara. La documentación no parece describir cómo funciona, a diferencia de la mayoría de las otras características de hardware presentes, pero le brinda todo lo que necesita para resolverlo usted mismo.
Construyendo un asistente de voz con escomo
El plan ESP32-S3-Box-3 resultó invaluable
He construido muchos asistentes de voz con la escomay mi proceso de pensamiento entrando en esto fue “¿Qué tan difícil podría ser hacerlo con una pantalla?” Solo debe ser primordial para comenzar y se puede ampliar con el tiempo. A posteriori de todo, el asistente de voz es típicamente la parte más compleja, y hay muchas soluciones de código que se pueden construir y expandirse.
Sin requisa, resultó que terminó siendo un poco más complicado de lo que esperaba. Como ya se mencionó, el micrófono terminó siendo un dispositivo significativamente más difícil para interactuar de lo que había pensado anteriormente. Revisé toda la documentación que pude encontrar, intenté desenterrar soluciones que otros habrían implementado y no obtuve nadie. Si correctamente las personas habían usado esta pantalla con ESPHOME antiguamente (y Elecrow todavía ha publicado documentación para eso), parecía que nadie había intentado usar el micrófono antiguamente.
Me enfrentaba a dos problemas:
-
¿Cómo puedo que funcione el micrófono?
-
¿Cómo sé si mi tubería de voz es correcta cuando no tengo forma de retener si el micrófono está funcionando?
Podría contestar a la segunda pregunta con proporcionado facilidad, y eso fue gracias a un componente forastero UDP_AUDIO que encontré en GitHub. Esto me permitió transmitir el audio desde el micrófono a mi PC usando un servidor Python primordial, y pude confirmar que el audio se estaba transmitiendo a mi PC, pero MicroWakeword aún no funcionaba. Incluso cuando agregué un pimpollo a la pantalla que podía tocar y amparar para balbucir (como una forma simple de probar mi tubería), Whisper informó suceder recibido audio malogrado. Había escuchado todo correctamente cuando se transmitía a mi PC, así que ahora sabía que el micrófono estaba funcionando, y mi tubería de voz era lo que no funcionaba.
Fue entonces cuando tuve la idea: ¿qué pasaría si recuperara el plan ESP32-S3-Box-3 Ready hecho de Esfoma, que tiene una tubería de voz garantizada para funcionar, y podría centrarme en el banda del hardware de las cosas e implementar características como necesitaba? Eso es exactamente lo que hice; Descargué ese plan, realicé un nuevo plan de escoma, y me puse a trabajar portando todas mis pines y características específicas de hardware. Usé los mismos parámetros que sabía que habían funcionado al transmitir con UDP_AUDIO, pero mantuve todos los conceptos básicos en su sitio del plan dispuesto hasta que supe que tenía poco sencillo.
¡He aquí que funcionó! Si correctamente todavía no tenía salida de audio (a causa de que no tenía un altavoz con el que probar), podría usar MicroWakeword, ver que Whisper había transcribido mi pregunta, y los registros mostraron que el ESP32 podría al menos reproducir el audio. Sin requisa, la pantalla fue increíblemente paulatino, y se podía ver las líneas que se dibujaban a medida que se representaban imágenes.
Las siguientes dos partes de este plan son donde me he detenido por ahora, ya que los conceptos básicos están proporcionado cerca de completar y ya están en un estado servible. La primera parte fue revisar la deducción de representación, ya que tenía la sensación de que la implementación de gráficos de Esfoma era proporcionado intensivo por otra parte de impulsar un panel de ingreso resolución como este, y el segundo era establecer una forma de redirigir el audio a otro dispositivo, por lo que no necesitaba conectar un altavoz.
Comencé por primera vez reemplazando toda la pila de gráficos, eliminando todo el código ESP32-S3-Box-3 y utilizando la biblioteca de gráficos incrustados ligeros y versátiles, conocida como LVGL. Esto requirió eliminar todo el código de representación de visualización, luego reescribir cuidadosamente la misma funcionalidad usando LVGL y renovar todas las llamadas de puesta al día de la pantalla para mostrar y ocultar widgets LVGL.
Una vez que completé esto, lo mostré al panel, y para mi sorpresa (cualquier software que lea esto, estoy seguro de que puedes relacionarte), solo funcionó. Las actualizaciones de visualización fueron casi instantáneas, y aunque pensé que mejoraría el rendimiento, la diferencia era positivamente de oscuridad y día. Aquí hay algunos problemas iniciales para funcionar (los temporizadores aún renderizan de modo extraña, las respuestas ya no se dibujan a la pantalla en el texto, y algunas imágenes tienen el fondo incorrecto), pero es mucho, mucho más experiencia.
La venidero parte fue evitar el hecho de que no tenía un altavoz. Todavía quería escuchar respuestas, y recordé que el plan de asistente de voz de RESTER LITE usó un evento ESPHOME.TTS_URI que contenía el archivo de audio de la respuesta para que pudiera ser redirigido y reproducido en otro sitio. Tengo el Estampación de audiencia previa de voz de asistente de inicio En mi sala de estar, que está conectada a un altavoz, para poder redirigir el audio allí.
Gracias a Dios, amplificar esto fue muy tratable, y pude usar el código del respiro de Lite para que esto todavía funcione en el Elecrow. Con un script primordial que envía los detalles del archivo de audio al asistente de inicio cuando está a punto de reproducir, podemos emparejarse con una automatización que reacciona al evento y lo reproduce en otro dispositivo.
script:
- id: send_tts_uri_event
parameters:
tts_uri: string
then:
- homeassistant.event:
event: esphome.tts_uri
data:
uri: !lambda return tts_uri;
Y aquí está la automatización:
apodo: Play TTS URI
description: ""
triggers:
- trigger: event
event_type: esphome.tts_uri
event_data:
device_id: edb7423f767d4c4b5706ed9cfa47a7d8
actions:
- action: media_player.play_media
data:
announce: true
media_content_type: music
media_content_id: "{{ trigger.event.data.uri }}"
target:
device_id: 3b520dfbbac9b1bb6e05e51f8f8a2695
mode: single
De nuevo, solo … funcionó. En este punto, tenía un asistente de voz totalmente visual que podría redirigir la reproducción de audio a mi altavoz, todo escrito en Esfoma y capaz de controlar los dispositivos en mi hogar al igual que un HUB HOME de Google.
¿Qué sigue?
Correcciones de errores y mejoras
Para este plan, hay algunos ajustes y adiciones proporcionado simples que puedo hacer, ahora que todo está funcionando. Con las páginas LVGL, es trivial amplificar páginas “inactivas” que contienen controles básicos para mi hogar, mostrar actualizaciones meteorológicas o incluso mostrar imágenes. Puede hacer mucho de lo que el centro de Google Home puede hacer cuando se combina con los muchos, muchos servicios que el asistente doméstico admite, y todo lo que estará definido es RAM a medida que agrega más funciones.
En este momento, hay algunos errores y problemas menores para solucionar, como las imágenes que contienen el fondo incorrecto y los temporizadores que no se muestran correctamente. Sin requisa, es una experiencia sorprendentemente curioso incluso ahora usarlo, y la mantengo perpetuamente enchufista en mi escritorio, alimentado por mi PC. Puedo usar comandos de voz sin menester de abuchear a través de la habitación a mi asistente de casa Voice View Edition, pero aún puedo escuchar las respuestas del altavoz que está allí. Por supuesto, si recoges uno de estos y simplemente conectas un altavoz, podría usarlo en su sitio correctamente.
Las pantallas como estas son increíblemente poderosas y versátiles, y no necesita convertirlas en asistentes de voz. Puede amplificar sus propios controles y sensores, e incluso construir una pantalla para un surtido primordial, un profesor de feed RSS, un tablero de casas inteligente o simplemente para aventurar y memorizar LVGL.





