Tabla de contenido:

Síntesis de voz retro. Parte: 12 IoT, automatización del hogar: 12 pasos (con imágenes)
Síntesis de voz retro. Parte: 12 IoT, automatización del hogar: 12 pasos (con imágenes)

Video: Síntesis de voz retro. Parte: 12 IoT, automatización del hogar: 12 pasos (con imágenes)

Video: Síntesis de voz retro. Parte: 12 IoT, automatización del hogar: 12 pasos (con imágenes)
Video: Todos los PROTOCOLOS DE RED explicados fácil en 5 minutos 2022 (Parte 1) | IP, IPsec, ICMP, L2TP... 2024, Mes de julio
Anonim
Image
Image
Síntesis de voz retro. Parte: 12 IoT, automatización del hogar
Síntesis de voz retro. Parte: 12 IoT, automatización del hogar

Este artículo es el duodécimo de una serie de Instructables sobre automatización del hogar que documenta cómo crear e integrar un dispositivo de síntesis de voz retro de IoT en un sistema de automatización del hogar existente, incluida toda la funcionalidad de software necesaria para permitir la implementación exitosa en un entorno doméstico.

La imagen 1 muestra el dispositivo de sintetizador de voz IoT completo y la imagen 2 muestra todos los componentes utilizados en el prototipo que se redujeron en factor de forma para ir al producto final.

El video muestra el dispositivo en acción (durante la prueba).

Introducción

Como se mencionó anteriormente, este Instructable detalla cómo hacer un dispositivo de síntesis de voz retro de IoT y se basa en General Instruments SP0256-AL2.

Su propósito principal es agregar la síntesis de voz de la 'vieja escuela' a una red de IoT. ¿Por qué 'vieja escuela' puede preguntar? Bueno, porque yo estaba en los años 80 cuando se fabricaron estas cosas por primera vez y conecté una a mi BBC Micro, así que para mí hay un cierto grado de nostalgia en torno al SP0256-AL2.

Prefiero el desafío de tratar de averiguar qué diablos está diciendo esta voz que suena a Dalek que escuchar los tonos dulces de un eco inconformista de Amazon o Siri. ¿Dónde está el desafío en eso que te pregunto?

Ah, y sin mencionar que también tengo una 'bolsa de carga' de circuitos integrados 'SP0256-AL2' por ahí.

El dispositivo también es capaz de leer la temperatura y la humedad locales, por lo que amplía aún más la instrumentación ambiental de mi infraestructura de IoT existente y se conecta a la red de IoT basada en MQTT / OpenHAB que se detalla en esta serie sobre automatización del hogar (HA), basándose en el código reutilizado tomado de aquí.

En su corazón hay un ESP8266-07 que es responsable de las comunicaciones MQTT y de controlar todas las funciones del sistema (acceso a la tarjeta SD, control de LED, detección de temperatura / humedad, control de volumen, síntesis de voz). El dispositivo es totalmente configurable a través de archivos de texto almacenados en un tarjeta SD local, aunque los parámetros de seguridad de red y calibración también se pueden programar a través de publicaciones MQTT remotas.

¿Qué partes necesito?

Vea la lista de materiales aquí

¿Qué software necesito?

  • Arduino IDE 1.6.9,
  • Arduino IDE configurado para programar el ESP8266-07 (igual que este). Luego configure el IDE como se indica en la descripción detallada proporcionada en el esquema del software aquí,
  • Python v3.5.2 si desea utilizar la capacidad de prueba automatizada, detalles aquí

¿Qué herramientas necesito?

  • Microscopio al menos x3 (para soldadura SMT),
  • Herramienta de crimpado de conectores Molex (para conectores JST),
  • Soldador SMD (con bolígrafo de fundente líquido y soldadura con núcleo de fundente),
  • Destornilladores (varios),
  • Pistola de calor,
  • Taladros (varios),
  • Herramienta de mano avellanada,
  • Archivos (varios),
  • Dremel (varios bits),
  • Vicio robusto (pequeño y grande, como un compañero de trabajo negro y decker),
  • Bisturí,
  • Calibradores Vernier (utilizados para medir la fabricación y útiles para dimensionar componentes de PCB),
  • Llaves y destornilladores para tuercas (varios),
  • Pinzas fuertes (para soldadura SMT),
  • Sierra para metales junior,
  • Taladro (con varias brocas),
  • Alicates finos (puntiagudos y de punta chata),
  • Cortadores al ras,
  • DMM con control de continuidad audible,
  • Osciloscopio digital de doble canal (útil para depurar señales)

¿Qué habilidades necesito?

  • Mucha paciencia
  • Gran destreza manual y excelente coordinación mano / ojo,
  • Excelentes habilidades de soldadura,
  • Excelentes habilidades de fabricación,
  • La capacidad de visualizar en 3 dimensiones,
  • Algunos conocimientos de desarrollo de software con 'C' (si desea comprender el código fuente),
  • Algún conocimiento de Python (cómo instalar y ejecutar scripts, si desea utilizar las pruebas automatizadas),
  • Conocimiento de Arduino y su IDE,
  • Buen conocimiento de la electrónica,
  • Algún conocimiento de su red doméstica.

Tópicos cubiertos

  • Manual de usuario
  • Resumen del circuito
  • Fabricación y montaje de PCB
  • Fabricación
  • Descripción general del sistema de software
  • Descripción general del software
  • Calibración del sensor
  • Convención de nomenclatura de temas de MQTT
  • Depuración y búsqueda de fallos
  • Probando el diseño
  • Conclusión
  • Referencias utilizadas

Vínculos de la serie a la Parte 11: Consola de escritorio de IoT. Parte: 11 IoT, automatización del hogar

Paso 1: manual de usuario

Manual de usuario
Manual de usuario
Manual de usuario
Manual de usuario
Manual de usuario
Manual de usuario

La imagen 1 de arriba muestra la parte frontal del sintetizador de voz retro y la imagen 2 la parte trasera.

Frente del recinto

  1. Parrilla del altavoz
  2. Conector de auriculares de 3,5 mm: el altavoz principal se desactiva cuando se inserta el conector de 3,5 mm.
  3. LED rojo: este LED se ilumina mientras se pronuncia una palabra cuando se inició la conversación a través de una solicitud
  4. LED azul: este LED se ilumina mientras se pronuncia una palabra cuando se inició la conversación a través de una solicitud de IoT de MQTT.

Caja trasera

  1. Botón de reinicio: se utiliza para reiniciar el dispositivo ESP8266-07 IoT.
  2. Botón de flash: cuando se usa junto con el botón de reinicio, permite volver a parpadear el ESP8266-07.
  3. Enchufe de antena WiFi (enchufe SMA): para antena WiFi externa que ofrece la menor atenuación de la ruta de RF ya que el cierre es de aluminio.
  4. Puerto de programación externo: para eliminar la necesidad de desatornillar el gabinete para obtener acceso al ESP8266-07 con fines de reprogramación. Los pines de programación del ESP8266-07 se han llevado al puerto de programación externo. La imagen 3 es el adaptador de programación.
  5. LED verde: este es el LED del sistema IoT y se utiliza para indicar el estado de diagnóstico del dispositivo y el inicio y durante el funcionamiento.
  6. Sensor externo de temperatura / humedad (AM2320)
  7. Ranura para tarjeta SD: contiene todos los datos de configuración / seguridad junto con las páginas del servidor web.
  8. Toma de alimentación de 2,1 mm 6vdc

Paso 2: descripción general del circuito

Resumen del circuito
Resumen del circuito
Resumen del circuito
Resumen del circuito

El dispositivo Retro Speech Synth consta de dos PCB;

  • RetroSpeechSynthIoTBoard: Este es un PCB genérico y reutilizable ESP8266-07 / 12 / 12E / 13
  • RetroSpeechSynthBoard: este es un PCB genérico SP0256-AL2

Tablero de IoT de sintetizador de voz retro

Esta placa permite soldar directamente un ESP8266-07 / 12 / 12E / 13 o enchufes de paso de 0.1 que alojan un PCB portador ESP8266.

La placa fue diseñada para expandir su E / S a través de una conexión I2C y puede admitir niveles de suministro de 3v3 o 5v a través de Q1, Q2, R8-13.

La conexión a la placa se logra a través de uno de los dos cabezales J2 y J4, una cinta DIL IDC de 8 vías o JST / Molex de 5 vías.

U2 y U3 provisión 3.3v y 5v regulación de alimentación a bordo. Alternativamente, si se requiere una mayor capacidad de corriente, se pueden conectar reguladores de derivación en serie externos a través de los conectores J10 y J11, respectivamente.

Los conectores J1 y J3 ofrecen soporte para tarjetas SD externas sobre SPI. J1 ha sido diseñado para un Molex de 8 vías y J3 tiene un pin directo para soporte de compatibilidad de pin para un PCB de tarjeta SD estándar con soporte 3v3 o 5v.

Tablero de sintetizador de voz retro

El control de esta placa se realiza a través de una conexión compatible con I2C 5v a través de J1, J5 o J6, un conector de cinta JST / Molex de 4 vías, DIL IDC de 8 vías o IDC de 8 vías.

U2 MPC23017 proporciona la interfaz I2C a paralelo a U3, el SP0256-AL2 y los LEDS D1 (verde), D2 (rojo) y D3 (azul). La salida del Speech Synth se envía al amplificador de audio CR1 TBA820M a través del potenciómetro analógico RV1 o del potenciómetro digital U1 MCP4561.

Digital Pot U1 también se controla a través de I2C compatible con 5v.

Nota: Se eligió el dispositivo ESP8266-07 porque tiene un conector RF IPX integral que permite agregar una antena WiFi externa a la carcasa de aluminio.

Paso 3: Fabricación y montaje de PCB

Fabricación y montaje de PCB
Fabricación y montaje de PCB
Fabricación y montaje de PCB
Fabricación y montaje de PCB
Fabricación y montaje de PCB
Fabricación y montaje de PCB
Fabricación y montaje de PCB
Fabricación y montaje de PCB

Las imágenes 1 y 2 muestran los subconjuntos de PCB completos y cableados ubicados en el sustrato del gabinete de aluminio.

Los dos PCB se diseñaron con Kicad v4.0.7, fabricados por JLCPCB y ensamblados por mí y se muestran arriba en las fotografías 3 a 13.

Paso 4: Fabricación

Fabricación
Fabricación
Fabricación
Fabricación
Fabricación
Fabricación

La imagen 1 muestra un diseño de estilo manual de Haynes de todas las piezas prefabricadas antes del ensamblaje final.

Las fotografías 2… 5 muestran varias tomas durante la fabricación del recinto con espacios mínimos.

Paso 5: Descripción general del sistema de software

Descripción general del sistema de software
Descripción general del sistema de software
Descripción general del sistema de software
Descripción general del sistema de software

Este dispositivo de síntesis de voz retro de IoT contiene seis componentes de software clave, como se muestra en la imagen 1 anterior.

Tarjeta SD

Este es el sistema de archivo flash SD SPI externo y se utiliza para contener la siguiente información (ver imagen 2 arriba);

  • Íconos y 'Página de inicio de configuración de sintetizador de voz' index.htm: El dispositivo IoT lo proporciona cuando no puede conectarse a su red WiFi de IoT (generalmente debido a información de seguridad incorrecta o al uso por primera vez) y proporciona al usuario un medio de configurar de forma remota los sensores sin la necesidad de volver a flashear nuevo contenido SD. También contiene index1.htm, mqtt.htm y sp0256.htm, estas son las páginas web servidas localmente accesibles a través de un navegador web que permite un control limitado del sintetizador de voz a través de
  • Información de seguridad: contiene la información utilizada en el encendido por el dispositivo IoT para conectarse a su red WiFi IoT y MQTT Broker. La información enviada a través de la 'Página de inicio de configuración de sintetizador de voz' se escribe en este archivo ('secvals.txt').
  • Información de calibración: la información contenida en los archivos ('calvals1.txt' y 'calvals2.txt') se utiliza para calibrar los sensores de temperatura / humedad integrados en caso de que sea necesario. Las constantes de calibración se pueden escribir en el dispositivo IoT a través de comandos MQTT desde un agente MQTT o volviendo a flashear la tarjeta SD. 'calvals1.txt' pertenece al sensor AM2320 y 'calvals2.txt' al DHT22.
  • Valores del sistema configurables por el usuario: la información contenida en este archivo ('confvals.txt'), elegida por el usuario, controla ciertas respuestas del sistema, como el nivel de volumen digital inicial, el anuncio automático de 'sistema listo' en la suscripción del corredor de MQTT, etc.

Servidor mDNS

Esta funcionalidad se invoca cuando el dispositivo IoT no ha podido conectarse a su red WiFi como una estación WiFi y, en cambio, se ha convertido en un punto de acceso WiFi similar a un enrutador WiFi doméstico. En el caso de un enrutador de este tipo, normalmente se conectaría ingresando la dirección IP de algo como 192.168.1.1 (generalmente impresa en una etiqueta adherida a la caja) directamente en la barra de URL de su navegador, después de lo cual recibirá una página de inicio de sesión para ingresar. el nombre de usuario y la contraseña para permitirle configurar el dispositivo. Para el ESP8266-07 en modo AP (modo de punto de acceso), el dispositivo tiene por defecto la dirección IP 192.168.4.1, sin embargo, con el servidor mDNS en ejecución, solo tiene que ingresar el nombre amigable para humanos 'SPEECHSVR.local' en la barra de URL del navegador para consulte la 'Página de inicio de configuración de sintetizador de voz'.

Cliente MQTT

El cliente MQTT proporciona toda la funcionalidad necesaria para; conéctese a su broker MQTT de la red de IoT, suscríbase a los temas que elija y publique cargas útiles para un tema determinado. En resumen, proporciona la funcionalidad principal de IoT.

Servidor web

Este servidor web tiene dos propósitos;

  1. Si el dispositivo de IoT no puede conectarse a la red WiFi cuyo SSID, P / W, etc.se define en el archivo de información de seguridad que se encuentra en la tarjeta SD, el dispositivo se convertirá en un punto de acceso. Una vez conectado a la red WiFi proporcionada por el punto de acceso, la presencia de un servidor web HTTP le permite conectarse directamente al dispositivo y cambiar su configuración mediante el uso de un navegador web HTTP, cuyo propósito es ofrecer la 'Configuración de sintetizador de voz Página de inicio 'página web que también se encuentra en la tarjeta SD.
  2. Una vez que el dispositivo de síntesis de voz retro de IoT se haya conectado a la red WiFi y al agente MQTT, si se accede, el servidor web HTTP ofrecerá automáticamente una página web HTTP que permitirá un control limitado del dispositivo de IoT para decir una selección de frases fijas y la capacidad de ciclar los dos LED rojo y azul delanteros.

Estación WiFi

Esta funcionalidad le da al dispositivo IoT la capacidad de conectarse a una red WiFi doméstica usando los parámetros en el archivo de Información de Seguridad, sin esto, su dispositivo IoT no podrá suscribirse / publicar en el Broker MQTT.

Punto de acceso WiFi

La capacidad de convertirse en un punto de acceso WiFi es un medio por el cual el dispositivo IoT le permite conectarse a él y realizar cambios de configuración a través de una estación WiFi y un navegador (como Safari en el iPad de Apple). Este punto de acceso transmite un SSID = "SPEECHSYN" + los últimos 6 dígitos de la dirección MAC del dispositivo IoT. La contraseña para esta red cerrada se llama imaginativamente 'PASSWORD'

Paso 6: descripción general del software

Descripción general del software
Descripción general del software
Descripción general del software
Descripción general del software
Descripción general del software
Descripción general del software

Preámbulo

Para compilar correctamente este código fuente, necesitará una copia local del código y las bibliotecas que se describen a continuación en el Paso 12, Referencias utilizadas. Si no está seguro de cómo instalar una biblioteca Arduino, vaya aquí.

Visión general

El software hace uso de la máquina de estado como se muestra en la imagen 1 anterior (copia completa de la fuente en mi repositorio de GitHub aquí). Hay 5 estados principales como se describe a continuación;

  • EN ESO

    Este estado de inicialización es el primer estado que se ingresa después del encendido

  • NOCONFIG

    Este estado se ingresa si después del encendido se detecta un archivo secvals.txt no válido o faltante. Durante este estado, la página de configuración está visible

  • PENDIENTE NO

    Este estado es transitorio, se ingresa mientras no existe conexión de red WiFi

  • PENDIENTE MQTT

    Este estado es transitorio, se ingresa después de que se ha establecido una conexión de red WiFi y mientras no existe conexión con un corredor MQTT en esa red

  • ACTIVO

    Este es el estado operativo normal al que se ingresa una vez que se ha establecido una conexión de red WiFi y una conexión de MQTT Broker. Es durante este estado que la temperatura, el índice de calor y la humedad en el Dispositivo de Síntesis de Voz Retro de IoT se publica regularmente para MQTT Broker. En este estado, la página de inicio de Speech Synth es visible

Los eventos que controlan las transiciones entre estados se describen en la imagen 1 anterior. Las transiciones entre estados también se rigen por los siguientes parámetros de SecVals;

  • Primera dirección IP del corredor de MQTT. En forma decimal con puntos AAA. BBB. CCC. DDD
  • Segundo puerto de intermediario MQTT. En forma de número entero.
  • La tercera conexión de MQTT Broker intenta realizar antes de cambiar del modo STA al modo AP. En forma de número entero.
  • 4to SSID de red WiFi. En texto de forma libre.
  • Quinta contraseña de red WiFi. En texto de forma libre.

Como se mencionó anteriormente, si el dispositivo IoT no puede conectarse como una estación WiFi a la red WiFi, cuyo SSID y P / W se definen en secvals.txt en la tarjeta SD, el dispositivo IoT se convertirá en un punto de acceso. Una vez conectado a este punto de acceso, aparecerá la 'Página de inicio de configuración de sintetizador de voz' como se muestra arriba en la Imagen 2 (ingresando 'SPEECHSVR.local' o 192.168.4.1 en la barra de direcciones URL de su navegador). Esta página de inicio permite la reconfiguración del dispositivo de síntesis de voz retro de IoT a través de un navegador

Acceso remoto mientras está en estado ACTIVO

Una vez conectado al MQTT Broker, también es posible recalibrar y reconfigurar el dispositivo a través de publicaciones temáticas de MQTT. El archivo calvals.txt tiene acceso R / W y secvals.txt tiene acceso de solo escritura expuesto.

También como se mencionó anteriormente, una vez en el modo activo es posible acceder al Speech Synth a través de una interfaz HTTP ingresando 'SPEECHSVR.local' o 192.168.4.1 en la barra de direcciones URL de su navegador. Esta interfaz basada en HTTP permite un control básico del Speech Synth. Las fotografías 3, 4 y 5 muestran las páginas web disponibles.

Depuración del usuario

Durante la secuencia de arranque, el LED verde del sistema del dispositivo IoT en la parte posterior del gabinete proporciona la siguiente información de depuración;

  • 1 flash corto: no hay archivo de configuración ubicado en la tarjeta SD (secvals.txt)
  • 2 destellos cortos: el dispositivo IoT está intentando conectarse a la red WiFi
  • Iluminación continua: el dispositivo IoT está intentando conectarse a MQTT Broker
  • Apagado: el dispositivo está activo.

Funcionalidad del dispositivo de síntesis de voz retro de IoT en estado ACTIVO

Una vez en el estado ACTIVO, el ESP8266 entra en un bucle continuo que llama a las siguientes funciones; timer_update (), checkTemperatureAndHumidity () y handleSpeech (). El resultado neto de lo cual ha sido diseñado para presentar al usuario una interfaz HTTP o MQTT, dar servicio sin problemas a su procesador de voz integrado con fonemas a pedido y publicar valores paramétricos ambientales locales a través de MQTT.

En el código fuente se incluye una lista completa de todas las publicaciones y suscripciones a temas, incluidos los valores de carga útil.

Paso 7: Calibración del sensor

Calibración del sensor
Calibración del sensor

Cuando el dispositivo de IoT se enciende, como parte de la secuencia de arranque, se leen de la tarjeta SD dos archivos llamados 'cavals1.txt' y 'cavals2.txt'.

El contenido de estos archivos son constantes de calibración como se indica arriba en la imagen 1.

  1. 'cavals1.txt': utilizado por el AM2320 externo
  2. 'cavals2.txt': utilizado por el DHT22 interno

Estas constantes de calibración se utilizan para ajustar las lecturas adquiridas de los dos sensores para alinearlas con un dispositivo de referencia. Hay un valor adicional que define una estrategia de informes para cada dispositivo y se describe a continuación junto con el procedimiento seguido para calibrar los sensores.

Estrategia de informes

Este parámetro determina cómo el sensor remoto informa cualquier cambio paramétrico ambiental local. Si se selecciona un valor de 0, el sensor remoto publicará cualquier cambio que vea en la temperatura o la humedad cada vez que se lea el sensor respectivo (aproximadamente cada 10 segundos). Cualquier otro valor retrasará la publicación de un cambio entre 1… 60 minutos. La modificación de este parámetro permite optimizar el tráfico de la red MQTT. Cabe señalar que los datos de temperatura y humedad del DHT22 se leen alternativamente debido a las limitaciones del sensor.

Calibración de temperatura

Para calibrar el sensor de temperatura, seguí el mismo proceso que se describe aquí en el paso 4, nuevamente usando una relación simple y = mx + c. Utilicé el sensor de temperatura y humedad de IoT n. ° 1 como dispositivo de referencia. Los valores del sensor están en grados centígrados.

Calibración de humedad

Como no poseo ningún medio para registrar con precisión o incluso controlar la humedad ambiental local, para calibrar el sensor utilicé un enfoque similar al anterior aquí paso 4, nuevamente usando el sensor n. ° 1 como referencia. Sin embargo, dicho lo anterior, recientemente encontré un excelente artículo en la web que describe cómo calibrar los sensores de humedad. Bien podría intentar este enfoque en algún momento en el futuro. Los valores del sensor están en% de edad de la humedad relativa.

Paso 8: Convención de nomenclatura de temas de MQTT

Convención de nomenclatura de temas de MQTT
Convención de nomenclatura de temas de MQTT
Convención de nomenclatura de temas de MQTT
Convención de nomenclatura de temas de MQTT

Como se mencionó en un Instructable anterior (aquí), me decidí por la convención de nomenclatura de temas descrita en la imagen 1 anterior.

Es decir, 'AccessMethod / DeviceType / WhichDevice / Action / SubDevice' no es perfecto, pero permite que se apliquen filtros útiles para ver todas las salidas de sensor para un tema paramétrico dado, lo que permite una comparación fácil como en la imagen 2 anterior con MQTTSpy.

Este proyecto es el primer caso en el que un solo dispositivo contiene más de una fuente de origen del mismo tipo de publicación. es decir. Dos sensores de temperatura / humedad, de subdispositivos internos y externos.

También admite agrupaciones lógicas de funcionalidad razonablemente extensibles dentro de un dispositivo IoT determinado.

Al implementar estos temas en el software, utilicé cadenas de temas codificadas de forma rígida con identificadores numéricos incrustados fijos para cada dispositivo en lugar de generar dinámicamente los temas en tiempo de ejecución para ahorrar RAM y mantener un alto rendimiento.

Nota: Si no está seguro de cómo utilizar MQTTSpy, consulte aquí 'Configuración de un agente MQTT'. Parte 2: IoT, automatización del hogar '

Paso 9: depuración y búsqueda de fallas

Depuración y búsqueda de fallos
Depuración y búsqueda de fallos

En general, para mis proyectos de hobby, cuando es posible, tiendo a construir un prototipo de hardware representativo contra el cual se desarrolla el software. Rara vez tengo problemas al integrar el software en el hardware de la plataforma final.

Sin embargo, en esta ocasión me encontré con una extraña falla intermitente por la cual algunos fonemas sonaban pero otros no.

Después de una depuración inicial del Speech Synth PCB usando un Arduino Uno para obtener fonemas y probar que esta placa estaba funcionando, tomé un alcance de las líneas I2C entre el IoT PCB y el Speech Synth PCB. Vea la Imagen 1 arriba.

Puede ver claramente el 'diente de sierra' / borde exponencial de la señal I2C en las trazas.

Esto suele ser una indicación de que los valores de pull up I2C son demasiado altos, lo que impide que el voltaje de línea se recupere lo suficientemente rápido en un circuito de drenaje abierto.

Como una 'solución alternativa', comparé las dos resistencias smt pull up R12 y R13 con 10K para dar 4K7 y, efectivamente, el Speech Synth 'cobró vida'

Este tipo de falla es lo contrario a lo que puede ocurrir al depurar este tipo de proyectos. En general, la mayoría de los módulos basados en I2C comprados en Ebay tienden a venir con pull ups de 10K o 4K7 ya instalados. Si tiene la intención de utilizar> 5 módulos I2C, cada uno con 4K7 pull ups, entonces la carga total es 940R, que será demasiado grande para la etapa de salida del maestro. La solución sería desoldar todos menos un conjunto de resistencias pull up en cada módulo. Preferiblemente el más alejado físicamente del maestro.

Un consejo útil que vale la pena tener en cuenta al diseñar dispositivos electrónicos con dispositivos I2C.

Paso 10: Probar el diseño

Image
Image
Probando el diseño
Probando el diseño
Probando el diseño
Probando el diseño

Las pruebas se llevaron a cabo utilizando dos metodologías; Manual y Automatizado.

El primero, manual y generalmente utilizado durante el desarrollo inicial del código fue usar MQTT Spy para ejercitar todos los temas suscritos disponibles y verificar las respuestas publicadas (representadas en la imagen 2 arriba). Como se trata de un proceso manual, puede llevar mucho tiempo y ser propenso a errores a medida que avanza el desarrollo del código, aunque la ejecución manual permite una cobertura del 100%.

Se eligió MQTTSpy para las pruebas manuales porque es una excelente herramienta para formatear manualmente una carga útil determinada y publicarla en cualquier tema con facilidad. También muestra un registro claro con marca de tiempo que es muy útil para depurar (imagen 3 arriba).

El segundo enfoque automatizado se adoptó cuando el código fuente se volvió más complejo (> 3700 líneas). Una mayor complejidad significa ciclos de prueba manuales más largos y pruebas más complejas. Para mejorar la confiabilidad, el determinismo y la calidad de las pruebas, se utilizaron pruebas automatizadas a través de un ejecutivo de pruebas de Python (imagen 1). Vea el Paso # 10 en este Instructable sobre cómo se introdujeron las pruebas automatizadas. Una copia completa de las pruebas automatizadas utilizadas en este Instructable está disponible aquí.

Arriba se muestra un video de la secuencia de prueba automatizada en funcionamiento. La secuencia ejecuta los siguientes pasos;

  • Automatizado a través de MQTT

    • Conéctese a la red troncal MQTT y anuncie 'Sistema listo'
    • LED verde de ejercicio
    • Ejercicio LED rojo
    • Ejercicio LED azul
    • Compruebe que funciona Digital Pot
    • Hablar usando fonemas
    • Habla usando códigos hexadecimales para fonemas
    • Habla usando códigos para corregir frases
    • Un poco de diversión de Dr Who y los Daleks.
  • Manualmente a través de HTTP / Chrome

    • Ejercicio LED azul
    • Ejercicio LED rojo
    • Diga frases fijas 'Steven Quinn', 'Sistema listo' y 'Hola mundo'
    • Tenga el servidor HTTP, sirva
      • Detalles sobre Speech Synth Chip
      • Detalles de MQTT

Paso 11: Conclusión

Conclusión
Conclusión

Aunque requirió mucho esfuerzo con archivos y taladros, etc., especialmente para la rejilla del altavoz, creo que el resultado es estéticamente agradable y se empaqueta en un recinto pequeño y agradable. Podría haberlo hecho más pequeño, pero habría tenido que ir a una PCB y deliberadamente lo partí en dos para poder reutilizar las PCB en una fecha posterior para otros proyectos. Así que es un feliz compromiso.

El software funciona bien, el dispositivo IoT ha estado en funcionamiento estable durante bastante tiempo sin ningún problema.

He estado monitoreando la temperatura y la humedad a través de Grafana y comparándola con un dispositivo de ubicación conjunta. Los dos valores ambientales se han correlacionado bien, lo que implica que la calibración es razonable (o al menos son similares).

Me detuve antes de implementar el comando de palabra ('WFD / SpeechTH / 1 / Word / Command') porque se me acabó el tiempo y necesitaba seguir adelante. Bien puedo volver a visitar esto si y cuando configuro una base de datos MySQL. Ahora mismo estoy usando InfluxDB.

Paso 12: Referencias utilizadas

Se utilizaron las siguientes fuentes para armar este Instructable; Código fuente para el dispositivo de síntesis de voz retro de IoT (esto contiene una copia de todo)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Por: Nick O'Leary
  • Propósito: permite que el dispositivo publique o se suscriba a temas de MQTT con un Broker determinado.
  • De:

DHT.h

  • Por: Adafruit
  • Propósito: biblioteca Arduino para sensores de temperatura y humedad DHT11DHT22, etc.
  • De:

Adafruit_AM2320.h / Adafruit_Sensor.h

  • Por: Adafruit
  • Propósito: biblioteca Arduino para AM2320, etc. Sensor de temperatura y humedad
  • De:

MCP4561_DIGI_POT.h

  • Por: Steve Quinn
  • Propósito: Biblioteca Arduino para potenciómetro digital MCP4561
  • De:

Adafruit_MCP23017.h

  • Por: Steve Quinn
  • Propósito: Biblioteca Arduino para el expansor de puerto I2C MCP23017. Esta es una bifurcación GITHub de Adafruit-MCP23017-Arduino-Library, de Adafruit.
  • De:

Por diversión

https://haynes.com/en-gb/

Fabricación de PCB

https://jlcpcb.com/

Instalación de bibliotecas Arduino adicionales

https://www.arduino.cc/en/Guide/Libraries

Cómo verificar y calibrar un sensor de humedad

https://www.allaboutcircuits.com/projects/how-to-check-and-calibrate-a-humidity-sensor/?utm_source=All+About+Circuits+Members&utm_campaign=ffeee38e54-EMAIL_CAMPAIGN_2017_12_06&utm_25ium_6teremail=48cutm_25ium_6teremail=8 /

Hoja de datos de SP0256-AL2

https://www.futurebots.com/spo256.pdf

Tienda de chips de voz

https://www.speechchips.com/shop/

Concurso Arduino 2019
Concurso Arduino 2019
Concurso Arduino 2019
Concurso Arduino 2019

Finalista en el Concurso Arduino 2019

Recomendado: