Taula de continguts:

Síntesi de parla retro. Part: 12 IoT, domòtica: 12 passos (amb imatges)
Síntesi de parla retro. Part: 12 IoT, domòtica: 12 passos (amb imatges)

Vídeo: Síntesi de parla retro. Part: 12 IoT, domòtica: 12 passos (amb imatges)

Vídeo: Síntesi de parla retro. Part: 12 IoT, domòtica: 12 passos (amb imatges)
Vídeo: Dark Portents | Critical Role | Campaign 3, Episode 29 2024, Desembre
Anonim
Image
Image
Síntesi de parla retro. Part: 12 IoT, domòtica
Síntesi de parla retro. Part: 12 IoT, domòtica

Aquest article és el dotzè d’una sèrie sobre instruccions domòtiques que documenten com crear i integrar un dispositiu de síntesi de parla retro IoT en un sistema domòtic existent que inclou totes les funcionalitats de programari necessàries per permetre el desplegament amb èxit dins d’un entorn domèstic.

La imatge 1 mostra el dispositiu de sintetitzador de veu IoT completat i la imatge 2 mostra totes les parts components utilitzades en el prototip que es van reduir el factor de forma per entrar al producte final.

El vídeo mostra el dispositiu en acció (durant les proves).

Introducció

Com s'ha esmentat anteriorment, aquest document instructiu detalla com fabricar un dispositiu de síntesi de parla retro IoT i es basa al voltant de General Instruments SP0256-AL2.

El seu propòsit principal és afegir síntesi de veu de la "vella escola" a una xarxa IoT. Per què us podeu preguntar per la "vella escola"? Doncs bé, ja que ja tenia a la dècada dels 80 quan es van fabricar aquestes coses i vaig connectar-ne una amb el meu BBC Micro, de manera que per a mi hi ha un cert grau de nostàlgia al voltant del SP0256-AL2.

Prefereixo molt el desafiament d’intentar esbrinar què dimonis diu aquesta veu sonora de Dalek que escoltar els tons dolços d’un eco amazònic o de Siri. On és el repte en què et pregunto?

Ah, i per no parlar, també tinc una "càrrega de bossa" de circuits integrats "SP0256-AL2".

El dispositiu també és capaç de llegir la temperatura i la humitat locals, de manera que amplia la instrumentació ambiental de la meva infraestructura IoT existent connectada a la xarxa IoT basada en MQTT / OpenHAB detallada en aquesta sèrie sobre domòtica (HA), basant-se en el codi reutilitzat extret d’aquí.

Al fons es troba un ESP8266-07 que s’encarrega de les comunicacions MQTT i de controlar totes les funcionalitats del sistema (accés a la targeta SD, control de leds, detecció de temperatura / humitat, control de volum, síntesi de veu). El dispositiu es pot configurar completament mitjançant fitxers de text emmagatzemats a targeta SD local, tot i que els paràmetres de calibratge i seguretat de la xarxa també es poden programar mitjançant publicacions MQTT remotes.

Quines parts necessito?

Consulteu la llista de materials aquí

Quin programari necessito?

  • Arduino IDE 1.6.9,
  • Arduino IDE configurat per programar l’ESP8266-07 (igual que aquest). A continuació, configureu l'IDE tal com s'indica a la descripció detallada que es proporciona a l'esbós del programari aquí,
  • Python v3.5.2 si voleu utilitzar la capacitat de prova automatitzada, vegeu-ne els detalls aquí

Quines eines necessito?

  • Microscopi com a mínim x3 (per soldar SMT),
  • Eina de premsat del connector Molex (per a connectors JST),
  • Soldadura SMD (amb ploma de flux líquid i soldadura de flux)
  • Tornavisos (diversos),
  • Pistola de calor,
  • Trepants (diversos),
  • Eina de mà avellana,
  • Fitxers (diversos),
  • Dremel (diversos bits),
  • Vici resistent (petit i gran, com un company de treball negre i de terrassa),
  • Bisturí,
  • Pinxes Vernier (s'utilitzen per mesurar la fabricació i són útils per dimensionar els components del PCB),
  • Claus i controladors de femelles (diversos),
  • Pinces fortes (per soldar SMT),
  • Serra mecànica júnior,
  • Trepant (amb diverses broques),
  • Alicates fines (punta de punta i moc),
  • Talls de rentat,
  • DMM amb comprovació audible de continuïtat,
  • Àmbit digital de doble canal (útil per a la depuració de senyals)

Quines habilitats necessito?

  • Molta paciència,
  • Una gran quantitat de destresa manual i una excel·lent coordinació mà / ull,
  • Excel·lents habilitats de soldadura,
  • Excel·lents habilitats de fabricació,
  • La capacitat de visualitzar en 3 dimensions,
  • Alguns coneixements sobre desenvolupament de programari amb "C" (si voleu entendre el codi font),
  • Alguns coneixements de Python (com instal·lar i executar scripts, si voleu utilitzar les proves automatitzades),
  • Coneixement d'Arduino i el seu IDE,
  • Bon coneixement d'electrònica,
  • Alguna comprensió de la vostra xarxa domèstica.

Temes tractats

  • Manual d'usuari
  • Visió general del circuit
  • Fabricació i muntatge de PCB
  • Fabricació
  • Descripció general del sistema de programari
  • Descripció general del programari
  • Calibració del sensor
  • Convenció de denominació de temes MQTT
  • Depuració i cerca d'errors
  • Prova del disseny
  • Conclusió
  • Referències utilitzades

Sèrie LinksTo Part 11: IoT Desktop Console. Part: 11 IoT, domòtica

Pas 1: Manual d'usuari

Manual d'usuari
Manual d'usuari
Manual d'usuari
Manual d'usuari
Manual d'usuari
Manual d'usuari

La imatge 1 superior mostra la part frontal del sintetitzador de veu retro i la imatge 2, la part posterior.

Tancament frontal

  1. Speaker Grill
  2. Connector per a auriculars de 3,5 mm: l’altaveu principal es desactiva quan s’insereix un connector de 3,5 mm.
  3. LED vermell: aquest LED s’il·lumina mentre es pronuncia una paraula quan s’inicia la veu mitjançant una sol·licitud
  4. LED blau: aquest LED s’il·lumina mentre es pronuncia una paraula quan s’iniciava la veu mitjançant una sol·licitud IoT de MQTT.

Tancament posterior

  1. Botó de reinici: s'utilitza per restablir de manera completa el dispositiu IoT ESP8266-07.
  2. Botó de flaix: quan s’utilitza juntament amb el botó de reinici permet tornar a parpellejar l’ESP8266-07.
  3. Endoll d'antena WiFi (endoll SMA): per a antena WiFi externa que doni la menor atenuació del camí de RF ja que el tancament és d'alumini.
  4. Port de programació extern: per eliminar la necessitat de descargolar la carcassa per accedir a l’ESP8266-07 amb finalitats de reprogramació. Els pins de programació de l’ESP8266-07 s’han portat al port de programació extern. La imatge 3 és l’adaptador de programació.
  5. LED verd: és el LED del sistema IoT que s’utilitza per indicar l’estat de diagnòstic del dispositiu i arrencar-lo durant el funcionament.
  6. Sensor extern de temperatura / humitat (AM2320)
  7. Ranura per a targeta SD: conté totes les dades de configuració / seguretat juntament amb les pàgines del servidor web.
  8. Presa de subministrament de 2,1 mm 6vdc

Pas 2: Visió general del circuit

Visió general del circuit
Visió general del circuit
Visió general del circuit
Visió general del circuit

El dispositiu Retro Speech Synth inclou dos PCB;

  • RetroSpeechSynthIoTBoard: es tracta d’un PCB ESP8266-07 / 12 / 12E / 13 genèric i reutilitzable
  • RetroSpeechSynthBoard: es tracta d’un PCB SP0256-AL2 genèric

Tauler IoT de retro Speech Synth

Aquesta placa permet la soldadura directa d'un ESP8266-07 / 12 / 12E / 13 o endolls de 0,1 que contenen una placa de suport ESP8266.

La placa va ser dissenyada per ampliar la seva E / S mitjançant una connexió I2C i pot suportar nivells de subministrament de 3v3 o 5v mitjançant Q1, Q2, R8-13.

La connexió a la placa s’aconsegueix mitjançant una de les dues capçaleres J2 i J4, una cinta DIL IDC de 8 vies o JST / Molex de 5 vies.

Subministrament U2 i U3 3.3v i 5v regulació del subministrament a bord. Alternativament, si es necessita una major capacitat de corrent, es poden connectar reguladors de derivació sèrie fora de la placa mitjançant els connectors J10 i J11 respectivament.

Els connectors J1 i J3 ofereixen compatibilitat amb targeta SD externa mitjançant SPI. J1 ha estat dissenyat per a un Molex de 8 vies i J3 té un pin directe per a compatibilitat de pins per a un PCB de targeta SD de prestatge amb suport de 3v3 o 5v.

Tauler de sintetització de veu retro

El control d’aquesta placa es realitza mitjançant una connexió compatible I2C 5v mitjançant J1, J5 o J6, un JST / Molex de 4 vies, un DIL IDC de 8 vies o un connector de cinta IDC de 8 vies.

U2 MPC23017 proporciona la interfície I2C a paral·lela a U3 el SP0256-AL2 i els LEDS D1 (verd), D2 (vermell) i D3 (blau). La sortida del Speech Synth s’alimenta a l’ampli d’àudio CR1 TBA820M mitjançant un pot analògic RV1 o un pot digital U1 MCP4561.

Digital Pot U1 també es controla mitjançant I2C compatible amb 5v.

Nota: Es va triar el dispositiu ESP8266-07 ja que té un connector RF IPX integral que permet afegir una antena WiFi externa al recinte d'alumini.

Pas 3: Fabricació i muntatge de PCB

Fabricació i muntatge de PCB
Fabricació i muntatge de PCB
Fabricació i muntatge de PCB
Fabricació i muntatge de PCB
Fabricació i muntatge de PCB
Fabricació i muntatge de PCB
Fabricació i muntatge de PCB
Fabricació i muntatge de PCB

Les imatges 1 i 2 mostren els subconjunts de PCB completats i cablejats situats al substrat del recinte d'alumini.

Els dos PCB es van dissenyar amb Kicad v4.0.7, fabricats per JLCPCB i muntats per mi i mostrats a les imatges 3 a 13.

Pas 4: fabricació

Fabricació
Fabricació
Fabricació
Fabricació
Fabricació
Fabricació

La imatge 1 mostra un disseny manual de Haynes de totes les peces prefabricades abans del muntatge final.

Les imatges 2 … 5 mostren diverses preses durant la fabricació del recinte amb mínimes distàncies.

Pas 5: Visió general del sistema de programari

Descripció general del sistema de programari
Descripció general del sistema de programari
Descripció general del sistema de programari
Descripció general del sistema de programari

Aquest dispositiu de síntesi de veu retro IoT conté sis components clau de programari, tal com es mostra a la imatge 1 anterior.

Targeta SD

Es tracta del sistema de fitxers flash SD SPI extern i s’utilitza per contenir la informació següent (vegeu la imatge 2 anterior);

  • Icones i "Pàgina d'inici de la configuració de la síntesi de veu" index.htm: publicat pel dispositiu IoT quan no pot connectar-se a la vostra xarxa WiFi IoT (normalment a causa d'una informació de seguretat incorrecta o per primera vegada) i proporciona a l'usuari un mitjà de configurar de forma remota els sensors sense necessitat de tornar a llampar contingut SD nou. També conté index1.htm, mqtt.htm i sp0256.htm, són les pàgines web publicades localment accessibles des d’un navegador web que permeten un control limitat del sintetitzador de veu. per
  • Informació de seguretat: conté la informació que s’utilitza en engegar el dispositiu IoT per connectar-se a la vostra xarxa WiFi IoT i MQTT Broker. La informació enviada a través de la "pàgina d'inici de la configuració del síntesi de veu" s'escriu en aquest fitxer ("secvals.txt").
  • Informació de calibració: la informació continguda als fitxers ('calvals1.txt' i 'calvals2.txt') s'utilitza per calibrar els sensors de temperatura / humitat integrats en cas que sigui necessari. Les constants de calibratge es poden escriure al dispositiu IoT mitjançant ordres MQTT des d’un corredor MQTT o tornant a fer flaixar la targeta SD. "calvals1.txt" pertany al sensor AM2320 i "calvals2.txt" al DHT22.
  • Valors del sistema configurables per l'usuari: la informació continguda en aquest fitxer ("confvals.txt"), triada per l'usuari, controla certes respostes del sistema, com ara el nivell de volum digital inicial, l'anunci automàtic de "preparació del sistema" a la subscripció del broker MQTT, etc.

Servidor mDNS

Aquesta funcionalitat s’invoca quan el dispositiu IoT no ha pogut connectar-se a la vostra xarxa WiFi com a estació WiFi i, en canvi, s’ha convertit en un punt d’accés WiFi similar a un enrutador WiFi domèstic. En el cas d’un enrutador d’aquest tipus, normalment us hi connectareu introduint l’adreça IP d’alguna cosa com 192.168.1.1 (generalment impresa en una etiqueta col·locada al quadre) directament a la barra d’URL del navegador, amb la qual cosa rebreu una pàgina d’inici de sessió per entrar el nom d’usuari i la contrasenya que us permetran configurar el dispositiu. Per a l'ESP8266-07 en mode AP (mode de punt d'accés), el dispositiu adopta per defecte l'adreça IP 192.168.4.1, però, amb el servidor mDNS en execució, només heu d'introduir el nom "SPEECHSVR.local" a la barra d'URL del navegador per consulteu la pàgina inicial de configuració de la síntesi de veu.

Client MQTT

El client MQTT proporciona totes les funcionalitats necessàries per a; connecteu-vos al vostre corredor MQTT de la vostra xarxa IoT, subscriviu-vos als temes que escolliu i publiqueu càrregues útils a un tema determinat. En resum, subministra la funcionalitat bàsica de l'IoT.

Servidor web

Aquest servidor web té dos propòsits;

  1. Si el dispositiu IoT no pot connectar-se a la xarxa WiFi el SSID, P / W, etc. del qual es defineix al fitxer d’informació de seguretat de la targeta SD, el dispositiu es convertirà en un punt d’accés. Un cop connectat a la xarxa WiFi proporcionada pel punt d’accés, la presència d’un servidor web HTTP us permet connectar-vos directament al dispositiu i canviar-ne la configuració mitjançant l’ús d’un navegador web HTTP. Pàgina web de la pàgina d'inici, que també es troba a la targeta SD.
  2. Una vegada que el dispositiu de síntesi de veu retro IoT s’hagi connectat a la xarxa WiFi i al broker MQTT, si s’hi accedeix, el servidor web HTTP publicarà automàticament una pàgina web HTTP que permet un control limitat del dispositiu IoT per parlar una selecció de frases fixes i la possibilitat de cicle els dos LEDs vermells i blaus frontals.

Estació WiFi

Aquesta funcionalitat proporciona al dispositiu IoT la possibilitat de connectar-se a una xarxa WiFi domèstica mitjançant els paràmetres del fitxer d’informació de seguretat, sense la qual cosa el vostre dispositiu IoT no podrà subscriure’s / publicar-se al corredor MQTT.

Punt d'accés WiFi

La possibilitat de convertir-se en un punt d’accés WiFi és un mitjà pel qual el dispositiu IoT us permet connectar-vos-hi i fer canvis de configuració mitjançant una estació WiFi i un navegador (com ara Safari a l’iPad d’Apple). Aquest punt d'accés emet un SSID = "SPEECHSYN" + els últims 6 dígits de l'adreça MAC del dispositiu IoT. La contrasenya d’aquesta xarxa tancada s’anomena imaginativament "CONTRASENYA"

Pas 6: Visió general del programari

Descripció general del programari
Descripció general del programari
Descripció general del programari
Descripció general del programari
Descripció general del programari
Descripció general del programari

Preàmbul

Per compilar correctament aquest codi font, necessitareu una còpia local del codi i de les biblioteques que es descriuen a continuació al pas 12, Referències utilitzades. Si no esteu segur de com instal·lar una biblioteca Arduino, aneu aquí.

Visió general

El programari fa servir la màquina d’estats tal com es mostra a la foto 1 anterior (còpia completa de la font al meu dipòsit GitHub aquí). Hi ha 5 estats principals tal com es descriu a continuació;

  • INIT

    Aquest estat d'inicialització és el primer estat introduït després de l'engegada

  • NOCONFIG

    Aquest estat s'introdueix si després de l'engegada es detecta un fitxer secvals.txt no vàlid o que falta. Durant aquest estat és visible la pàgina de configuració

  • PENDENT NO

    Aquest estat és transitori, s’introdueix mentre no existeix cap connexió de xarxa WiFi

  • MQTT PENDENT

    Aquest estat és transitori, s'introdueix després que s'hagi establert una connexió de xarxa WiFi i, tot i que no existeixi cap connexió amb un intermediari MQTT en aquesta xarxa

  • ACTIU

    Aquest és l'estat operatiu normal introduït un cop s'ha establert una connexió de xarxa WiFi i una connexió MQTT Broker. És durant aquest estat que la temperatura, l’índex de calor i la humitat del dispositiu de síntesi de parla retro IoT es publiquen regularment al corredor MQTT. En aquest estat, es pot veure la pàgina principal de Speech Synth

Els esdeveniments que controlen les transicions entre estats es descriuen a la foto 1 anterior. Les transicions entre estats també es regeixen pels següents paràmetres de SecVals;

  • 1a adreça IP del corredor MQTT. En forma decimal amb punts AAA. BBB. CCC. DDD
  • 2n port de corredor MQTT. En forma de enter.
  • Intenta fer la tercera connexió MQTT Broker abans de passar del mode STA al mode AP. En forma de enter.
  • 4t SSID de xarxa WiFi. En text lliure.
  • 5a contrasenya de xarxa WiFi. En text lliure.

Com s'ha esmentat anteriorment, si el dispositiu IoT no pot connectar-se com a estació WiFi a la xarxa WiFi que té SSID i P / W es defineix a secvals.txt que es troba a la targeta SD, el dispositiu IoT es convertirà en un punt d'accés. Un cop connectat a aquest punt d'accés, es mostrarà la "pàgina d'inici de configuració de síntesi de veu", tal com es mostra a la imatge 2 (introduint "SPEECHSVR.local" o 192.168.4.1 a la barra d'adreces URL del navegador). Aquesta pàgina inicial permet reconfigurar el dispositiu de síntesi de veu retro IoT mitjançant un navegador

Accés remot en estat ACTIU

Un cop connectat a MQTT Broker, també és possible tornar a calibrar i reconfigurar el dispositiu mitjançant publicacions temàtiques de MQTT. El fitxer calvals.txt té accés R / W i secvals.txt només té accés d’escriptura exposat.

També es va esmentar anteriorment, un cop en mode actiu, és possible accedir a Speech Synth mitjançant una interfície HTTP introduint "SPEECHSVR.local" o 192.168.4.1 a la barra d'adreces URL del navegador. Aquesta interfície basada en HTTP permet un control bàsic de Speech Synth. Les imatges 3, 4 i 5 mostren les pàgines web disponibles.

Depuració d'usuaris

Durant la seqüència d'arrencada, el sistema verd del dispositiu IoT que s'encén a la part posterior del recinte proporciona la següent retroalimentació de depuració;

  • 1 Flash curt: no hi ha cap fitxer de configuració a la targeta SD (secvals.txt)
  • 2 parpelleigs curts: el dispositiu IoT intenta connectar-se a la xarxa WiFi
  • Il·luminació contínua: el dispositiu IoT intenta connectar-se a MQTT Broker
  • Desactivat: el dispositiu està actiu.

Funcionalitat del dispositiu de síntesi de veu retro IoT en estat ACTIU

Un cop a l’estat ACTIU, l’ESP8266 entra en un bucle continu anomenant les funcions següents; timer_update (), checkTemperatureAndHumidity () i handleSpeech (). El resultat net de la qual ha estat dissenyat per presentar a l’usuari una interfície HTTP o MQTT, dóna servei al processador de veu integrat amb fonemes a la carta i publica valors paramètrics ambientals locals a través de MQTT.

Al codi font s’inclou una llista completa de totes les subscripcions i publicacions de temes, inclosos els valors de la càrrega útil.

Pas 7: Calibració del sensor

Calibració del sensor
Calibració del sensor

Quan el dispositiu IoT s’encén, com a part de la seqüència d’arrencada es llegeixen dos fitxers anomenats "cavals1.txt" i "cavals2.txt" de la targeta SD.

El contingut d’aquests fitxers són constants de calibratge tal com s’indica a la imatge 1 anterior.

  1. 'cavals1.txt': utilitzat per l'AM2320 extern
  2. 'cavals2.txt': utilitzat pel DHT22 intern

Aquestes constants de calibratge s’utilitzen per ajustar les lectures adquirides dels dos sensors per alinear-les amb un dispositiu de referència. Hi ha un altre valor que defineix una estratègia d'informes per a cada dispositiu i es descriu a continuació juntament amb el procediment seguit per calibrar els sensors.

Estratègia d'informes

Aquest paràmetre determina com el sensor remot informa de qualsevol canvi paramètric ambiental local. Si se selecciona un valor de 0, el sensor remot publicarà qualsevol canvi que vegi en la temperatura o la humitat cada vegada que es llegeixi el sensor respectiu (aproximadament cada 10 segons). Qualsevol altre valor retardarà la publicació d'un canvi en 1 … 60 minuts. La modificació d’aquest paràmetre permet optimitzar el trànsit de la xarxa MQTT. Cal tenir en compte que les dades de temperatura i humitat del DHT22 es llegeixen alternativament a causa de les limitacions del sensor.

Calibratge de la temperatura

Per calibrar el sensor de temperatura, vaig seguir el mateix procés que es descriu aquí al pas 4, de nou utilitzant una simple relació y = mx + c. He utilitzat el sensor de temperatura i humitat IoT # 1 com a dispositiu de referència. Els valors del sensor estan en graus celcius.

Calibració de la humitat

Com que no tinc cap mitjà per registrar o controlar fins i tot la humitat ambiental local, per calibrar el sensor, he utilitzat un enfocament similar al del pas 4 anterior, fent servir de nou el sensor # 1 com a referència. Tot i això, he trobat recentment un excel·lent article a la xarxa que descriu com calibrar els sensors d'humitat. És possible que provi aquest enfocament en algun moment del futur. Els valors del sensor són en% d’edat d’humitat relativa.

Pas 8: Convenció de denominació de tema MQTT

Convenció de denominació de temes MQTT
Convenció de denominació de temes MQTT
Convenció de denominació de temes MQTT
Convenció de denominació de temes MQTT

Com es va esmentar en un instructable anterior (aquí), em vaig fixar en el tema de la convenció de noms que es descriu a la foto 1 anterior.

És a dir, "AccessMethod / DeviceType / WhichDevice / Action / SubDevice" no és perfecte, però permet aplicar filtres útils per veure totes les sortides del sensor per a un tema paramètric donat, permetent així una comparació fàcil com a la imatge 2 anterior amb MQTTSpy.

Aquest projecte és el primer cas en què un sol dispositiu conté més d’una font originària del mateix tipus de publicació. és a dir, Dos sensors de temperatura / humitat, provinents de subdispositius interns i externs.

També admet agrupacions lògiques de funcionalitats raonablement extensibles dins d’un determinat dispositiu IoT.

En implementar aquests temes en programari, he utilitzat cadenes de temes codificats amb identificadors numèrics fixos i incrustats per a cada dispositiu en lloc de generar dinàmicament els temes en temps d’execució per tal d’estalviar memòria RAM i mantenir el rendiment alt.

Nota: Si no esteu segur de com utilitzar MQTTSpy, consulteu aquí "Configuració d'un corredor MQTT. Part 2: IoT, domòtica"

Pas 9: depuració i cerca d'errors

Depuració i cerca d'errors
Depuració i cerca d'errors

En general, per als meus projectes d’afició, sempre que sigui possible, tendeixo a construir un prototip de maquinari representatiu contra el qual es desenvolupa el programari. Poques vegades tinc problemes a l’hora d’integrar el programari al maquinari de la plataforma final.

No obstant això, en aquesta ocasió em vaig trobar amb una estranya falla intermitent en la qual alguns fonemes sonarien, però d'altres no.

Després de fer una depuració inicial del Speech Synth PCB amb un Arduino Uno per obtenir fonemes i provar que aquesta placa funcionava, vaig aprofundir en les línies I2C entre el PCB IoT i el Speech Synth PCB. Vegeu la imatge 1 anterior.

Podeu veure clarament la "dent de serra" / vora exponencial del senyal I2C a les traces.

Això sol ser una indicació que els valors d’arrencada de l’I2C són massa alts per evitar que la tensió de la línia es recuperi prou ràpidament en un circuit de drenatge obert.

Com a "solució", vaig paral·lelitzar les dues resistències SMT R12 i R13 amb 10Ks per donar 4K7 i prou segur que el Speech Synth "va irrompre en la vida"

Aquest tipus de fracàs és el contrari al que pot passar quan es depura aquest tipus de projectes. En general, la majoria dels mòduls basats en I2C comprats a Ebay acostumen a presentar-se amb extraccions de 10K o 4K7 ja instal·lades. Si teniu intenció d’utilitzar> 5 mòduls I2C, cadascun amb arrencades 4K7, la càrrega global és de 940R, que serà massa gran per a l’etapa de sortida del mestre. La solució seria des-soldar tots els resistors pull up excepte un conjunt de cada mòdul. Preferiblement, el que s’allunya físicament del mestre.

Un consell útil i que cal tenir en compte a l’hora de dissenyar electrònica amb dispositius I2C.

Pas 10: provar el disseny

Image
Image
Prova del disseny
Prova del disseny
Prova del disseny
Prova del disseny

Les proves es van dur a terme mitjançant dues metodologies; Manual i automatitzada.

El primer, manual i generalment utilitzat durant el desenvolupament inicial de codi, va ser utilitzar MQTT Spy per exercir tots els temes subscrits disponibles i comprovar les respostes publicades (representades a la foto 2 anterior). Com que es tracta d'un procés manual, pot trigar molt de temps i és propens a errors a mesura que avança el desenvolupament del codi, tot i que l'execució manual permet una cobertura del 100%.

MQTTSpy es va escollir per fer proves manuals perquè és una excel·lent eina per formatar manualment una determinada càrrega útil i publicar-la amb facilitat a qualsevol tema. També mostra un registre clar i segellat de temps que és molt útil per a la depuració (foto 3 anterior).

El segon enfocament automatitzat es va adoptar a mesura que el codi font es feia més complex (> 3700 línies). L’augment de la complexitat significa cicles de proves manuals més llargs i proves més complexes. Per tal de millorar la fiabilitat, el determinisme i la qualitat de les proves, es van utilitzar proves automatitzades mitjançant un executiu de proves de python (foto 1). Consulteu el pas núm. 10 d’aquest manual sobre com es van introduir les proves automatitzades. Hi ha disponible una còpia completa de les proves automatitzades utilitzades en aquest instructiu.

A la part superior es mostra un vídeo de la seqüència de prova automatitzada en funcionament. La seqüència executa els passos següents;

  • Automatitzat mitjançant MQTT

    • Connecteu-vos a la columna vertebral de MQTT i anuncieu el sistema preparat.
    • Exercici LED verd
    • Exercici LED vermell
    • Exercici LED blau
    • Comproveu que funcioni Digital Pot
    • Parlar amb fonemes
    • Parleu amb codis hexadecimals per a fonemes
    • Parleu amb codis per a corregir frases
    • Una mica de diversió del Dr. Who i els Daleks.
  • Manualment mitjançant HTTP / Chrome

    • Exercici LED blau
    • Exercici LED vermell
    • Digueu frases fixes "Steven Quinn", "Ready System" i "Hello World"
    • Feu servir el servidor

      • Detalls sobre el xip de sintetització de veu
      • Detalls MQTT

Pas 11: Conclusió

Conclusió
Conclusió

Tot i que va suposar molt d’esforç amb fitxers, trepants, etc. especialment per a la reixa dels altaveus, crec que el resultat és estèticament agradable i s’adapta a un bonic i petit recinte. Podria haver-lo fet més petit, però hauria hagut d’anar a un PCB i el vaig trencar deliberadament en dos per poder tornar a utilitzar els PCB més endavant per a altres projectes. Per tant, és un compromís feliç.

El programari funciona bé, el dispositiu IoT ha estat en funcionament estable des de fa força temps sense problemes.

He estat supervisant la temperatura i la humitat a través de Grafana i he comparat amb un dispositiu ubicat conjuntament. Els dos valors ambientals s’han correlacionat bé, cosa que implica que el calibratge és raonable (o almenys són similars).

No vaig poder implementar l'ordre word ("WFD / SpeechTH / 1 / Word / Command") perquè em vaig quedar sense temps i necessitava seguir endavant. Podria tornar a visitar-ho si i quan configuro una base de dades MySQL. Ara mateix estic fent servir InfluxDB.

Pas 12: referències utilitzades

Les fonts següents s’han utilitzat per combinar aquesta instrucció; codi font del dispositiu de síntesi de parla retro IoT (conté una còpia de tot)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Per: Nick O'Leary
  • Finalitat: permet al dispositiu publicar o subscriure's a temes de MQTT amb un corredor determinat
  • De:

DHT.h

  • Per: Adafruit
  • Propòsit: biblioteca Arduino per DHT11DHT22, etc. Sensors de temperatura i humitat
  • De:

Adafruit_AM2320.h / Adafruit_Sensor.h

  • Per: Adafruit
  • Finalitat: biblioteca Arduino per AM2320, etc. Sensor de temperatura i humitat
  • De:

MCP4561_DIGI_POT.h

  • Per: Steve Quinn
  • Finalitat: Biblioteca Arduino per a potenciòmetre digital MCP4561
  • De:

Adafruit_MCP23017.h

  • Per: Steve Quinn
  • Finalitat: Biblioteca Arduino per a l'expandidor de ports MCP23017 I2C. Es tracta d’una forquilla GITHub d’Adafruit-MCP23017-Arduino-Library, d’Adafruit.
  • De:

Per diversió

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

Fabricació de PCB

https://jlcpcb.com/

Instal·lació de biblioteques Arduino addicionals

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

Com comprovar i calibrar un sensor d'humitat

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_medium=email&utm_term=0_2565529c4b-ffeee38e54-270487501 /

SP0256-AL2 Full de dades

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

Botiga de xips de veu

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

Concurs Arduino 2019
Concurs Arduino 2019
Concurs Arduino 2019
Concurs Arduino 2019

Finalista del Concurs Arduino 2019

Recomanat: