Sommario:

Sintesi vocale retrò. Parte: 12 IoT, Domotica: 12 passaggi (con immagini)
Sintesi vocale retrò. Parte: 12 IoT, Domotica: 12 passaggi (con immagini)

Video: Sintesi vocale retrò. Parte: 12 IoT, Domotica: 12 passaggi (con immagini)

Video: Sintesi vocale retrò. Parte: 12 IoT, Domotica: 12 passaggi (con immagini)
Video: 12.3.21 AVE 2024, Luglio
Anonim
Image
Image
Sintesi vocale retrò. Parte: 12 IoT, Domotica
Sintesi vocale retrò. Parte: 12 IoT, Domotica

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

Manuale d'uso
Manuale d'uso
Manuale d'uso
Manuale d'uso
Manuale d'uso
Manuale d'uso

L'immagine 1 sopra mostra la parte anteriore del sintetizzatore vocale retrò e l'immagine 2 la parte posteriore.

Fronte involucro

  1. Griglia dell'altoparlante
  2. Jack per auricolari da 3,5 mm: l'altoparlante principale è disabilitato quando è inserito il jack da 3,5 mm.
  3. LED rosso: questo LED si illumina mentre viene pronunciata una parola quando il discorso è stato avviato tramite una richiesta
  4. LED blu: questo LED si illumina mentre viene pronunciata una parola quando il discorso è stato avviato tramite una richiesta MQTT IoT.

Custodia posteriore

  1. Pulsante di ripristino: utilizzato per ripristinare a fondo il dispositivo ESP8266-07 IoT.
  2. Pulsante Flash: se utilizzato in combinazione con il pulsante di ripristino, consente di riaccendere l'ESP8266-07.
  3. Spina antenna WiFi (spina SMA): per antenna WiFi esterna che fornisce la minima attenuazione del percorso RF poiché la chiusura è in alluminio.
  4. 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.
  5. 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.
  6. Sensore di temperatura/umidità esterno (AM2320)
  7. Slot per scheda SD: contiene tutti i dati di configurazione/sicurezza insieme alle pagine del server web.
  8. Jack di alimentazione da 2,1 mm 6vdc

Passaggio 2: panoramica del circuito

Panoramica del circuito
Panoramica del circuito
Panoramica del circuito
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

Produzione e assemblaggio PCB
Produzione e assemblaggio PCB
Produzione e assemblaggio PCB
Produzione e assemblaggio PCB
Produzione e assemblaggio PCB
Produzione e assemblaggio PCB
Produzione e assemblaggio PCB
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

fabbricazione
fabbricazione
fabbricazione
fabbricazione
fabbricazione
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

Panoramica del sistema software
Panoramica del sistema software
Panoramica del sistema software
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;

  1. 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.
  2. 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

Panoramica del software
Panoramica del software
Panoramica del software
Panoramica del software
Panoramica del software
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

Calibrazione del sensore
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.

  1. 'cavals1.txt': utilizzato dall'AM2320 esterno
  2. '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

Convenzione di denominazione degli argomenti MQTT
Convenzione di denominazione degli argomenti MQTT
Convenzione di denominazione degli argomenti MQTT
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

Debug e ricerca guasti
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

Image
Image
Testare il design
Testare il design
Testare il design
Testare il 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

Conclusione
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/

Concorso Arduino 2019
Concorso Arduino 2019
Concorso Arduino 2019
Concorso Arduino 2019

Secondo classificato all'Arduino Contest 2019

Consigliato: