Sommario:
- Passaggio 1: Manuale dell'utente
- Passaggio 2: panoramica del circuito
- Passaggio 3: produzione e assemblaggio PCB
- Passaggio 4: fabbricazione
- Passaggio 5: panoramica del sistema software
- Passaggio 6: panoramica del software
- Passaggio 7: calibrazione del sensore
- Passaggio 8: Convenzione di denominazione degli argomenti MQTT
- Passaggio 9: debug e ricerca guasti
- Passaggio 10: test del design
- Passaggio 11: conclusione
- Passaggio 12: riferimenti utilizzati
Video: Sintesi vocale retrò. Parte: 12 IoT, Domotica: 12 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Questo articolo è il dodicesimo di una serie sugli Instructables sull'automazione domestica che documentano come creare e integrare un dispositivo di sintesi vocale retrò IoT in un sistema di automazione domestica esistente, incluse tutte le funzionalità software necessarie per consentire l'implementazione di successo all'interno di un ambiente domestico.
L'immagine 1 mostra il dispositivo di sintesi vocale IoT completo e l'immagine 2 mostra tutti i componenti utilizzati nel prototipo che sono stati ridotti del fattore di forma per entrare nel prodotto finale.
Il video mostra il dispositivo in azione (durante il test).
introduzione
Come accennato in precedenza, questo Instructable descrive in dettaglio come realizzare un dispositivo di sintesi vocale retrò IoT e si basa su General Instruments SP0256-AL2.
Il suo scopo principale è aggiungere la sintesi vocale "vecchia scuola" a una rete IoT. Perché "vecchia scuola" potresti chiedere? Bene, perché ero negli anni '80 quando queste cose sono state prodotte per la prima volta e ne ho interfacciato uno al mio BBC Micro, quindi per me c'è un certo grado di nostalgia che circonda l'SP0256-AL2.
Preferisco di gran lunga la sfida di cercare di capire cosa diavolo viene detto da questa voce dal suono di Dalek piuttosto che ascoltare i toni dolci di un eco hipster di Amazon o di Siri. Dov'è la sfida in ciò che ti chiedo?
Oh, e per non parlare del fatto che ho anche un "bagaglio" di circuiti integrati "SP0256-AL2" in giro.
Il dispositivo è anche in grado di leggere la temperatura e l'umidità locali, quindi estende ulteriormente la strumentazione ambientale della mia infrastruttura IoT esistente agganciandola alla rete IoT basata su MQTT/OpenHAB dettagliata in questa serie sull'automazione domestica (HA), basandosi sul codice riutilizzato preso da qui.
Il suo cuore è un ESP8266-07 che è responsabile delle comunicazioni MQTT e del controllo di tutte le funzionalità del sistema (accesso alla scheda SD, controllo led, rilevamento temperatura/umidità, controllo volume, sintesi vocale). Il dispositivo è completamente configurabile tramite file di testo memorizzati su un scheda SD locale, sebbene i parametri di calibrazione e sicurezza della rete possano essere programmati anche tramite pubblicazioni MQTT remote.
Di quali parti ho bisogno?
Vedi la distinta base qui
Di che software ho bisogno?
- Arduino IDE 1.6.9,
- Arduino IDE configurato per programmare ESP8266-07 (uguale a questo). Quindi configurare l'IDE come indicato nella descrizione dettagliata fornita nello schizzo del software qui,
- Python v3.5.2 se desideri utilizzare la funzionalità di test automatizzato, dettagli qui
Di quali strumenti ho bisogno?
- Microscopio almeno x3 (per saldatura SMT),
- Strumento di crimpatura per connettori Molex (per connettori JST),
- Saldatore SMD (con penna a flusso liquido e saldatura animata),
- Cacciaviti (vari),
- pistola termica,
- Trapani (vari),
- Utensile manuale per svasatore,
- File (vari),
- Dremel (vari pezzi),
- Morsa robusta (piccola e grande, come un compagno di lavoro black and decker),
- Bisturi,
- Calibri a corsoio (usati per misurare la fabbricazione e utili per il dimensionamento dei componenti PCB),
- Chiavi e chiavi per dadi (vari),
- Pinzette forti (per saldatura SMT),
- Seghetto Junior,
- Trapano (con varie punte da trapano),
- Pinze sottili (a punta e a becco camuso),
- Taglierine a filo,
- multimetro digitale con controllo di continuità sonoro,
- Oscilloscopio digitale a doppio canale (utile per il debug dei segnali)
Di quali competenze ho bisogno?
- tanta pazienza,
- Grande manualità e ottima coordinazione occhio/mano,
- Ottime capacità di saldatura,
- Ottime capacità di fabbricazione,
- La capacità di visualizzare in 3 dimensioni,
- Una certa conoscenza dello sviluppo di software con 'C' (se vuoi capire il codice sorgente),
- Una certa conoscenza di Python (come installare ed eseguire script, se si desidera utilizzare i test automatici),
- Conoscenza di Arduino e del suo IDE,
- Buona conoscenza dell'elettronica,
- Una certa comprensione della tua rete domestica.
Argomenti trattati
- Manuale d'uso
- Panoramica del circuito
- Produzione e assemblaggio PCB
- fabbricazione
- Panoramica del sistema software
- Panoramica del software
- Calibrazione del sensore
- Convenzione di denominazione degli argomenti MQTT
- Debug e ricerca guasti
- Testare il design
- Conclusione
- Riferimenti utilizzati
Link della serie alla parte 11: console desktop IoT. Parte: 11 IoT, Domotica
Passaggio 1: Manuale dell'utente
L'immagine 1 sopra mostra la parte anteriore del sintetizzatore vocale retrò e l'immagine 2 la parte posteriore.
Fronte involucro
- Griglia dell'altoparlante
- Jack per auricolari da 3,5 mm: l'altoparlante principale è disabilitato quando è inserito il jack da 3,5 mm.
- LED rosso: questo LED si illumina mentre viene pronunciata una parola quando il discorso è stato avviato tramite una richiesta
- LED blu: questo LED si illumina mentre viene pronunciata una parola quando il discorso è stato avviato tramite una richiesta MQTT IoT.
Custodia posteriore
- Pulsante di ripristino: utilizzato per ripristinare a fondo il dispositivo ESP8266-07 IoT.
- Pulsante Flash: se utilizzato in combinazione con il pulsante di ripristino, consente di riaccendere l'ESP8266-07.
- Spina antenna WiFi (spina SMA): per antenna WiFi esterna che fornisce la minima attenuazione del percorso RF poiché la chiusura è in alluminio.
- Porta di programmazione esterna: per eliminare la necessità di svitare la custodia per accedere all'ESP8266-07 a fini di riprogrammazione. I pin di programmazione dell'ESP8266-07 sono stati portati alla porta di programmazione esterna. L'immagine 3 è l'adattatore di programmazione.
- LED verde: Questo è il LED del sistema IoT e viene utilizzato per indicare lo stato di diagnostica del dispositivo e durante l'avvio e durante il funzionamento.
- Sensore di temperatura/umidità esterno (AM2320)
- Slot per scheda SD: contiene tutti i dati di configurazione/sicurezza insieme alle pagine del server web.
- Jack di alimentazione da 2,1 mm 6vdc
Passaggio 2: panoramica del circuito
Il dispositivo Retro Speech Synth comprende due PCB;
- RetroSpeechSynthIoTBoard: questo è un PCB ESP8266-07/12/12E/13 generico e riutilizzabile
- RetroSpeechSynthBoard: questo è un PCB SP0256-AL2 generico
Scheda IoT per sintetizzatore vocale retrò
Questa scheda consente la saldatura diretta di prese ESP8266-07/12/12E/13 o passo 0,1 che alloggiano un PCB carrier ESP8266.
La scheda è stata progettata per espandere il proprio I/O su una connessione I2C e può supportare livelli di alimentazione 3v3 o 5v tramite Q1, Q2, R8-13.
La connessione alla scheda si ottiene tramite una delle due intestazioni J2 e J4, un nastro DIL IDC a 8 vie o JST/Molex a 5 vie.
U2 e U3 predisposizione 3.3v e 5v regolazione alimentazione a bordo. In alternativa, se è richiesta una maggiore capacità di corrente, i regolatori shunt seriali esterni possono essere collegati rispettivamente tramite i connettori J10 e J11.
I connettori J1 e J3 offrono supporto per schede SD esterne su SPI. J1 è stato progettato per un Molex a 8 vie e J3 ha un pin diretto per il supporto della compatibilità dei pin per un PCB della scheda SD standard con supporto 3v3 o 5v.
Scheda di sintesi vocale retrò
Il controllo di questa scheda avviene tramite una connessione conforme a I2C 5v tramite J1, J5 o J6, un connettore a nastro JST/Molex a 4 vie, DIL IDC a 8 vie o IDC a 8 vie.
U2 MPC23017 fornisce l'interfaccia I2C all'interfaccia parallela a U3 l'SP0256-AL2 e i LED D1 (verde), D2 (rosso) e D3 (blu). L'uscita del sintetizzatore vocale viene inviata all'amplificatore audio CR1 TBA820M tramite il potenziometro analogico RV1 o il potenziometro digitale U1 MCP4561.
Digital Pot U1 è anche controllato tramite I2C conforme a 5v.
Nota: il dispositivo ESP8266-07 è stato scelto in quanto dispone di un connettore RF IPX integrato che consente di aggiungere un'antenna WiFi esterna alla custodia in alluminio.
Passaggio 3: produzione e assemblaggio PCB
Le immagini 1 e 2 mostrano i sottogruppi PCB completati e cablati situati sul substrato dell'involucro in alluminio.
I due PCB sono stati progettati utilizzando Kicad v4.0.7, prodotto da JLCPCB e assemblato da me e mostrato sopra le immagini da 3 a 13.
Passaggio 4: fabbricazione
La figura 1 mostra un layout in stile Haynes Manual di tutte le parti prefabbricate prima dell'assemblaggio finale.
Le foto 2 … 5 mostrano vari scatti durante la fabbricazione della custodia con spazi minimi.
Passaggio 5: panoramica del sistema software
Questo dispositivo di sintesi vocale retrò IoT contiene sei componenti software chiave come mostrato nella figura 1 sopra.
Scheda SD
Questo è il sistema di archiviazione flash SD SPI esterno e viene utilizzato per contenere le seguenti informazioni (vedi foto 2 sopra);
- Icone e 'Speech Synth Configuration Home Page' index.htm: fornito dal dispositivo IoT quando non è in grado di connettersi alla rete WiFi IoT (di solito a causa di informazioni di sicurezza errate o per il primo utilizzo) e fornisce all'utente un mezzo di configurare in remoto i sensori senza la necessità di ri-flash nuovo contenuto SD. Contiene anche index1.htm, mqtt.htm e sp0256.htm, queste sono le pagine Web servite localmente accessibili tramite un browser Web che consente un controllo limitato del sintetizzatore vocale su
- Informazioni sulla sicurezza: conserva le informazioni utilizzate all'accensione dal dispositivo IoT per connettersi alla rete WiFi IoT e al broker MQTT. Le informazioni inviate tramite 'Speech Synth Configuration Home Page' vengono scritte in questo file ('secvals.txt').
- Informazioni di calibrazione: Le informazioni contenute nei file ('calvals1.txt' e 'calvals2.txt') vengono utilizzate per calibrare i sensori di temperatura/umidità di bordo qualora fosse necessario. Le costanti di calibrazione possono essere scritte sul dispositivo IoT tramite comandi MQTT da un broker MQTT o ri-flash della scheda SD. 'calvals1.txt' riguarda il sensore AM2320 e 'calvals2.txt' il DHT22.
- Valori di sistema configurabili dall'utente: le informazioni contenute in questo file ("confvals.txt"), scelte dall'utente, controllano alcune risposte del sistema, come il livello del volume digitale iniziale, l'annuncio automatico di "sistema pronto" sulla sottoscrizione del broker MQTT, ecc.
Server mDNS
Questa funzionalità viene invocata quando il dispositivo IoT non è riuscito a connettersi alla tua rete WiFi come stazione WiFi e invece è diventato un punto di accesso WiFi simile a un router WiFi domestico. Nel caso di un router di questo tipo, ti connetteresti in genere inserendo l'indirizzo IP di qualcosa come 192.168.1.1 (di solito stampato su un'etichetta apposta sulla scatola) direttamente nella barra degli URL del tuo browser, dopodiché riceverai una pagina di accesso da inserire il nome utente e la password per consentire di configurare il dispositivo. Per ESP8266-07 in modalità AP (modalità punto di accesso) il dispositivo ha l'indirizzo IP predefinito 192.168.4.1, tuttavia con il server mDNS in esecuzione è sufficiente inserire il nome descrittivo "SPEECHSVR.local" nella barra dell'URL del browser per vedere la 'Pagina iniziale di configurazione del sintetizzatore vocale'.
Cliente MQTT
Il client MQTT fornisce tutte le funzionalità necessarie a; connettiti al tuo broker MQTT di rete IoT, iscriviti agli argomenti di tua scelta e pubblica payload su un determinato argomento. In breve, fornisce funzionalità di base IoT.
Server Web
Questo server web ha due scopi;
- Se il dispositivo IoT non è in grado di connettersi alla rete WiFi il cui SSID, P/W ecc. è definito nel file Security Information contenuto sulla SD Card, il dispositivo diventerà un Access Point. Una volta connesso alla rete WiFi fornita dall'Access Point, la presenza di un server Web HTTP consente di connettersi direttamente al dispositivo e modificarne la configurazione tramite l'utilizzo di un browser Web HTTP, il cui scopo è quello di fornire la configurazione del sintetizzatore vocale Pagina web della Home Page che si trova anche sulla scheda SD.
- Una volta che il dispositivo di sintesi vocale retro dell'IoT si è connesso alla rete WiFi e al broker MQTT, in caso di accesso, il server Web HTTP servirà automaticamente una pagina Web HTTP consentendo un controllo limitato del dispositivo IoT per pronunciare una selezione di frasi fisse e la capacità di ciclare i due LED rossi e blu anteriori.
Stazione WiFi
Questa funzionalità offre al dispositivo IoT la capacità di connettersi a una rete WiFi domestica utilizzando i parametri nel file delle informazioni di sicurezza, senza questo il dispositivo IoT non sarà in grado di iscriversi/pubblicare al broker MQTT.
Punto di accesso WiFi
La possibilità di diventare un Access Point WiFi è un mezzo attraverso il quale il dispositivo IoT consente di connettersi ad esso e apportare modifiche alla configurazione tramite una stazione WiFi e un browser (come Safari sull'iPad di Apple). Questo punto di accesso trasmette un SSID = "SPEECHSYN" + le ultime 6 cifre dell'indirizzo MAC del dispositivo IoT. La password per questa rete chiusa è fantasiosamente denominata "PASSWORD"
Passaggio 6: panoramica del software
Preambolo
Per compilare correttamente questo codice sorgente avrai bisogno di una copia locale del codice e delle librerie descritte di seguito nel passaggio 12, Riferimenti utilizzati. Se non sei sicuro di come installare una libreria Arduino, vai qui.
Panoramica
Il software utilizza la macchina a stati come mostrato nella foto 1 sopra (copia completa del sorgente nel mio repository GitHub qui). Ci sono 5 stati principali come descritto di seguito;
-
DENTRO
Questo stato di inizializzazione è il primo stato in cui si entra dopo l'accensione
-
NOCONFIG
Questo stato viene inserito se dopo l'accensione viene rilevato un file secvals.txt non valido o mancante. Durante questo stato è visibile la pagina di configurazione
-
IN ATTESA NO
Questo stato è transitorio, inserito mentre non esiste una connessione di rete WiFi
- MQTT. IN ATTESA
Questo stato è transitorio, inserito dopo che è stata effettuata una connessione di rete WiFi e mentre non esiste alcuna connessione a un broker MQTT su quella rete
-
ATTIVO
Questo è il normale stato operativo a cui si accede una volta stabilita sia una connessione di rete WiFi che una connessione MQTT Broker. È durante questo stato che la temperatura, l'indice di calore e l'umidità del dispositivo di sintesi vocale retro IoT vengono regolarmente pubblicati sul broker MQTT. In questo stato è visibile la Home Page del sintetizzatore vocale
Gli eventi che controllano le transizioni tra gli stati sono descritti nella figura 1 sopra. Le transizioni tra gli stati sono inoltre regolate dai seguenti parametri SecVals;
- Primo indirizzo IP del broker MQTT. In forma decimale puntata AAA. BBB. CCC. DDD
- 2a porta broker MQTT. In forma intera.
- 3° tentativo di connessione al broker MQTT prima di passare dalla modalità STA alla modalità AP. In forma intera.
- 4° SSID di rete WiFi. Nel testo in forma libera.
- 5a password di rete Wi-Fi. Nel testo in forma libera.
Come accennato in precedenza se il dispositivo IoT non è in grado di connettersi come Stazione WiFi alla rete WiFi il cui SSID e P/W è definito in secvals.txt contenuto nella SD Card, il dispositivo IoT diventerà un Access Point. Una volta connesso a questo punto di accesso, verrà visualizzata la "Pagina iniziale di configurazione del sintetizzatore vocale" come mostrato sopra nella figura 2 (immettendo "SPEECHSVR.local" o 192.168.4.1 nella barra degli indirizzi URL del browser). Questa home page consente la riconfigurazione del dispositivo di sintesi vocale retro IoT tramite un browser
Accesso remoto in stato ATTIVO
Una volta connesso al Broker MQTT è inoltre possibile sia ricalibrare che riconfigurare il dispositivo tramite pubblicazioni tematiche MQTT. Il file calvals.txt ha accesso R/W e secvals.txt ha accesso di sola scrittura esposto.
Inoltre, come accennato in precedenza, una volta in modalità attiva è possibile accedere allo Speech Synth tramite un'interfaccia HTTP inserendo 'SPEECHSVR.local' o 192.168.4.1 nella barra degli indirizzi URL del browser. Questa interfaccia basata su HTTP consente il controllo di base del sintetizzatore vocale. Le immagini 3, 4 e 5 mostrano le pagine web disponibili.
Debug utente
Durante la sequenza di avvio il led System verde del dispositivo IoT sul retro dell'enclosure fornisce il seguente feedback di debug;
- 1 Flash breve: nessun file di configurazione situato sulla scheda SD (secvals.txt)
- 2 lampeggi brevi: il dispositivo IoT sta tentando di connettersi alla rete WiFi
- Illuminazione continua: il dispositivo IoT sta tentando di connettersi a MQTT Broker
- Spento: il dispositivo è attivo.
Funzionalità del dispositivo di sintesi vocale retrò IoT in stato ATTIVO
Una volta nello stato ATTIVO l'ESP8266 entra in un ciclo continuo chiamando le seguenti funzioni; timer_update(), checkTemperatureAndHumidity() e handleSpeech(). Il cui risultato netto è stato progettato per presentare all'utente un'interfaccia HTTP o MQTT, servire senza soluzione di continuità il processore vocale integrato con fonemi su richiesta e pubblicare valori parametrici ambientali locali su MQTT.
Nel codice sorgente è incluso un elenco completo di tutte le sottoscrizioni e pubblicazioni di argomenti, inclusi i valori del payload.
Passaggio 7: calibrazione del sensore
Quando il dispositivo IoT si accende, come parte della sequenza di avvio, dalla scheda SD vengono letti due file denominati "cavals1.txt" e "cavals2.txt".
I contenuti di questi file sono costanti di calibrazione come indicato sopra nella figura 1.
- 'cavals1.txt': utilizzato dall'AM2320 esterno
- 'cavals2.txt': utilizzato dal DHT22 interno
Queste costanti di calibrazione vengono utilizzate per regolare le letture acquisite dai due sensori per allinearle con un dispositivo di riferimento. C'è un ulteriore valore che definisce una strategia di reporting per ogni dispositivo ed è descritto di seguito insieme alla procedura seguita per calibrare i sensori.
Strategia di segnalazione
Questo parametro determina il modo in cui il sensore remoto segnala eventuali modifiche parametriche ambientali locali ad esso. Se viene selezionato un valore di 0, il sensore remoto pubblicherà qualsiasi cambiamento che vede nella temperatura o nell'umidità ogni volta che viene letto il rispettivo sensore (circa ogni 10 secondi). Qualsiasi altro valore ritarderà la pubblicazione di una modifica di 1…60 minuti. La modifica di questo parametro consente l'ottimizzazione del traffico di rete MQTT. Va notato che i dati di temperatura e umidità dal DHT22 vengono letti alternativamente a causa delle limitazioni del sensore.
Calibrazione della temperatura
Per calibrare il sensore di temperatura ho seguito lo stesso processo descritto qui al passaggio 4, sempre utilizzando una semplice relazione y=mx+c. Ho usato IoT Temperature, Humidity Sensor #1 come dispositivo di riferimento. I valori del sensore sono in gradi Celsius.
Calibrazione dell'umidità
Poiché non possiedo alcun mezzo per registrare con precisione o persino controllare l'umidità ambientale locale, per calibrare il sensore ho utilizzato un approccio simile a quello sopra qui al punto 4, utilizzando nuovamente il sensore n. 1 come riferimento. Comunque quanto detto sopra, di recente ho trovato un ottimo articolo sul web che descrive come calibrare i sensori di umidità. Potrei provare questo approccio in futuro. I valori del sensore sono in %età di umidità relativa.
Passaggio 8: Convenzione di denominazione degli argomenti MQTT
Come accennato in un precedente Instructable (qui), ho optato per la convenzione di denominazione degli argomenti delineata nella foto 1 sopra.
Vale a dire, 'AccessMethod/DeviceType/WhichDevice/Action/SubDevice' Non è perfetto ma consente l'applicazione di filtri utili per vedere tutte le uscite del sensore per un determinato argomento parametrico, consentendo così un facile confronto come nella foto 2 sopra con MQTTSpy.
Questo progetto è la prima istanza in cui un singolo dispositivo contiene più di una fonte di origine dello stesso tipo di pubblicazione. cioè. Due sensori di temperatura/umidità, da sottodispositivi interni ed esterni.
Supporta anche raggruppamenti logici ragionevolmente estensibili di funzionalità all'interno di un determinato dispositivo IoT.
Nell'implementare questi argomenti nel software ho utilizzato stringhe di argomenti codificate con identificatori numerici fissi e incorporati per ciascun dispositivo anziché generare dinamicamente gli argomenti in fase di esecuzione in modo da risparmiare sulla RAM e mantenere alte le prestazioni.
Nota: se non sei sicuro di come utilizzare MQTTSpy, consulta qui Impostazione di un broker MQTT. Parte 2: IoT, automazione domestica'
Passaggio 9: debug e ricerca guasti
In generale, per i miei progetti di hobby, ove possibile tendo a costruire un prototipo hardware rappresentativo rispetto al quale viene sviluppato il software, raramente ho problemi durante l'integrazione del software nell'hardware della piattaforma finale.
Tuttavia, in questa occasione mi sono imbattuto in uno strano difetto intermittente per cui alcuni fonemi suonavano ma altri no.
Dopo aver eseguito il debug iniziale del PCB del sintetizzatore vocale utilizzando un Arduino Uno per ottenere i fonemi e dimostrare che questa scheda funzionava, ho preso un oscilloscopio sulle linee I2C tra il PCB IoT e il PCB del sintetizzatore vocale. Vedi la foto 1 sopra.
Puoi vedere chiaramente il 'dente di sega'/bordo esponenziale al segnale I2C sulle tracce.
Questa è solitamente un'indicazione che i valori di pull up I2C sono troppo alti, impedendo alla tensione di linea di recuperare abbastanza velocemente in un circuito di drain aperto.
Per "risollevare" ho messo in parallelo i due resistori di pull up smt R12 e R13 con 10K per dare 4K7 e sicuramente lo Speech Synth "è esploso in vita"
Questo tipo di errore è l'opposto di ciò che può accadere durante il debug di questi tipi di progetti. In generale, la maggior parte dei moduli basati su I2C acquistati da Ebay tendono a venire con pull up 10K o 4K7 già montati. Se si intende utilizzare >5 moduli I2C, ciascuno con pull up 4K7, il carico complessivo è 940R, che sarà troppo grande per lo stadio di uscita del master. La soluzione sarebbe quella di dissaldare tutti tranne un set di resistori di pull-up su ciascun modulo. Preferibilmente quello fisicamente più lontano dal master.
Un consiglio utile e da tenere a mente quando si progetta l'elettronica con i dispositivi I2C.
Passaggio 10: test del design
I test sono stati effettuati utilizzando due metodologie; Manuale e automatizzato.
Il primo, manuale e generalmente utilizzato durante lo sviluppo del codice iniziale è stato l'utilizzo di MQTT Spy per esercitare tutti gli argomenti sottoscritti disponibili e controllare le risposte pubblicate (illustrate nella foto 2 sopra). Poiché si tratta di un processo manuale, può richiedere molto tempo ed è soggetto a errori man mano che lo sviluppo del codice progredisce, sebbene l'esecuzione manuale consenta una copertura del 100%.
MQTTSpy è stato scelto per il test manuale perché è uno strumento eccellente per formattare manualmente un determinato payload e pubblicarlo su qualsiasi argomento con facilità. Visualizza anche un registro chiaro e con data e ora che è molto utile per il debug (foto 3 sopra).
Il secondo approccio automatizzato è stato adottato man mano che il codice sorgente diventava più complesso (> 3700 righe). Una maggiore complessità significa cicli di test manuali più lunghi e test più complessi. Al fine di migliorare l'affidabilità, il determinismo e la qualità dei test, è stato utilizzato il test automatizzato tramite un dirigente di test Python (foto 1). Vedere il passaggio n. 10 in questo Instructable su come è stato introdotto il test automatizzato. Una copia completa dei test automatici utilizzati in questo Instructable è disponibile qui.
Sopra è mostrato un video della sequenza di test automatizzata in funzione. La sequenza esegue i seguenti passaggi;
-
Automatizzato tramite MQTT
- Connettiti alla dorsale MQTT e annuncia "System Ready"
- LED verde esercizio
- LED rosso esercizio
- Esercizio LED blu
- Controlla che la pentola digitale funzioni
- Parla usando i fonemi
- Parla usando i codici esadecimali per i fonemi
- Parla usando i codici per le frasi fisse
- Un po' di divertimento tra Dr Who e i Dalek.
-
Manualmente tramite
- Esercizio LED blu
- LED rosso esercizio
- Pronuncia frasi fisse "Steven Quinn", "System Ready" e "Hello World"
-
Avere il server HTTP, servire
- Dettagli sul chip di sintesi vocale
- Dettagli MQTT
Passaggio 11: conclusione
Sebbene ci sia voluto un grande sforzo con file, trapani ecc., specialmente per la griglia dell'altoparlante, penso che il risultato sia esteticamente gradevole e si raccolga in un bel contenitore piccolo. Avrei potuto renderlo più piccolo, ma avrebbe dovuto essere inserito su un PCB e l'ho volutamente diviso in due in modo da poter riutilizzare i PCB in un secondo momento per altri progetti. Quindi è un felice compromesso.
Il software funziona bene, il dispositivo IoT funziona stabilmente da un po' di tempo senza problemi.
Ho monitorato la temperatura e l'umidità tramite Grafana e ho confrontato con un dispositivo posizionato insieme. I due valori ambientali sono stati correlati bene, il che implica che la calibrazione è ragionevole (o almeno sono simili).
Ho smesso di implementare il comando word ("WFD/SpeechTH/1/Word/Command") perché avevo esaurito il tempo e avevo bisogno di andare avanti. Potrei rivederlo se e quando configuro un database MySQL. In questo momento sto usando InfluxDB.
Passaggio 12: riferimenti utilizzati
Le seguenti fonti sono state utilizzate per mettere insieme questo Instructable; Codice sorgente per il dispositivo di sintesi vocale retrò IoT (contiene una copia di tutto)
https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2
PubSubClient.h
- Di: Nick O'Leary
- Scopo: consente al dispositivo di pubblicare o sottoscrivere argomenti MQTT con un determinato broker
- Da:
DHT.h
- Di: Adafruit
- Scopo: libreria Arduino per DHT11DHT22, ecc. Sensori di temperatura e umidità
- Da:
Adafruit_AM2320.h/Adafruit_Sensor.h
- Di: Adafruit
- Scopo: libreria Arduino per AM2320, ecc. Sensore di temperatura e umidità
- Da:
MCP4561_DIGI_POT.h
- Di: Steve Quinn
- Scopo: libreria Arduino per potenziometro digitale MCP4561
- Da:
Adafruit_MCP23017.h
- Di: Steve Quinn
- Scopo: libreria Arduino per l'espansione della porta I2C MCP23017. Questo è un fork GITHub di Adafruit-MCP23017-Arduino-Library, di Adafruit.
- Da:
Per divertimento
https://haynes.com/en-gb/
Produzione PCB
https://jlcpcb.com/
Installazione di librerie Arduino aggiuntive
https://www.arduino.cc/en/Guide/Librerie
Come controllare e calibrare un sensore di umidità
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_256b-270552975401 /
Scheda tecnica SP0256-AL2
https://www.futurebots.com/spo256.pdf
Negozio di chip vocali
https://www.speechchips.com/shop/
Secondo classificato all'Arduino Contest 2019
Consigliato:
Vocal GOBO - Scudo smorzatore del suono - Cabina vocale - Box vocale - Filtro di riflessione - Scudo vocale: 11 passaggi
Vocal GOBO - Sound Dampener Shield - Vocal Booth - Vocal Box - Reflexion Filter - Vocalshield: ho iniziato a registrare più voci nel mio home studio e volevo ottenere un suono migliore e dopo alcune ricerche ho scoperto che cosa è un "GOBO" era. Avevo visto queste cose che smorzano il suono, ma non mi rendevo davvero conto di cosa facessero. Ora faccio. ho trovato un y
Sintesi vocale Fare clic su un UChip alimentato da ARMbasic e altri SBC alimentati da ARMbasic: 3 passaggi
Sintesi vocale Fare clic su un UChip alimentato da ARMbasic e altri SBC alimentati da ARMbasic: Introduzione: buona giornata. Mi chiamo Tod. Sono un professionista aerospaziale e della difesa che è anche un po' geek nel cuore. Ispirazione: provengo dall'era delle BBS dial-up, microcontrollori a 8 bit, personal computer Kaypro/Commodore/Tandy/TI-994A, quando R
Convertitore di sintesi vocale Arduino utilizzando LM386 - Progetto Arduino Parlante - Libreria Talkie Arduino: 5 passaggi
Convertitore di sintesi vocale Arduino utilizzando LM386 | Progetto Arduino Parlante | Talkie Arduino Library: Ciao ragazzi, in molti progetti richiediamo ad arduino di parlare qualcosa come l'orologio parlante o di dire alcuni dati, quindi in queste istruzioni convertiremo il testo in parlato usando Arduino
Riconoscimento vocale svincolato e sintesi in spagnolo per Arduino: 11 passaggi
Reconocimiento De Voz Desconectado Y Síntesis En Español Para Arduino: This Instructable è disponibile anche in inglese.MOVI significa 'My Own Voice Interface' (Mi propia interfaz de voz) y es un escudo para el Arduino. Con MOVI costruire sui propri loghi di voce per controllare i dispositivi all'interno dell'IDE di Ar
Sintesi vocale dell'altoparlante: 4 passaggi
Altoparlante di sintesi vocale: questo è il modo più semplice che ho trovato per creare un altoparlante di sintesi vocale efficace per un amico sordo. Perché, sai, li rende ancora più fantastici. Non è un progetto di costruzione particolarmente soddisfacente o educativo e richiede l'acquisto di alcuni