Cuprins:

Sinteza vorbirii retro. Partea: 12 IoT, Home Automation: 12 pași (cu imagini)
Sinteza vorbirii retro. Partea: 12 IoT, Home Automation: 12 pași (cu imagini)

Video: Sinteza vorbirii retro. Partea: 12 IoT, Home Automation: 12 pași (cu imagini)

Video: Sinteza vorbirii retro. Partea: 12 IoT, Home Automation: 12 pași (cu imagini)
Video: «Развлечение с музыкой и программированием», Коннор Харрис и Стивен Крюсон 2024, Iulie
Anonim
Image
Image
Sinteza vorbirii retro. Partea: 12 IoT, Home Automation
Sinteza vorbirii retro. Partea: 12 IoT, Home Automation

Acest articol este al 12-lea dintr-o serie despre Instrucțiuni de automatizare a casei care documentează cum să creăm și să integrăm un dispozitiv IoT Retro Speech Synthesis Device într-un sistem de automatizare casnică existent, incluzând toate funcționalitățile software necesare pentru a permite implementarea cu succes într-un mediu intern.

Imaginea 1 prezintă dispozitivul de sintetizare a vorbirii IoT completat, iar Imaginea 2 prezintă toate părțile componente utilizate în prototip, care au fost reduse factorului de formă pentru a intra în produsul final.

Videoclipul arată dispozitivul în acțiune (în timpul testării).

Introducere

Așa cum s-a menționat mai sus, acest instructabil detaliază modul de realizare a unui dispozitiv IoT Retro Speech Synthesis Device și se bazează în jurul instrumentelor generale SP0256-AL2.

Scopul său principal este de a adăuga sinteza vocală „old school” la o rețea IoT. De ce poți întreba „vechea școală”? Ei bine, pentru că eram în anii '80 când aceste lucruri au fost fabricate pentru prima dată și am interfațat unul cu BBC Micro, așa că pentru mine există un anumit grad de nostalgie în jurul SP0256-AL2.

Prefer mult provocarea de a încerca să-mi dau seama ce se spune pe pământ de această voce sunătoare Dalek decât să ascult tonurile dulci ale unui ecou hipster Amazon sau Siri. Unde este provocarea în care te întreb?

Oh, și să nu mai vorbesc, am și o „încărcătură de sac” de circuite integrate „SP0256-AL2” situate în jur.

Dispozitivul este, de asemenea, capabil să citească temperatura și umiditatea locală, astfel încât extinde instrumentele ambientale ale infrastructurii IoT existente, conectându-se la rețeaua IoT bazată pe MQTT / OpenHAB, detaliată în această serie de automatizare a casei (HA), bazându-se pe codul reutilizat preluat de aici.

Inima sa este un ESP8266-07, care este responsabil pentru comunicațiile MQTT și controlează toate funcționalitățile sistemului (accesul cardului SD, control LED, detectarea temperaturii / umidității, controlul volumului, sinteza vorbirii). Dispozitivul este complet configurabil prin fișiere text stocate pe un card SD local, deși parametrii de calibrare și de securitate a rețelei pot fi programați și prin publicații MQTT la distanță.

De ce piese am nevoie?

A se vedea lista de materiale aici

De ce software am nevoie?

  • Arduino IDE 1.6.9,
  • Arduino IDE configurat pentru a programa ESP8266-07 (la fel ca acesta). Apoi configurați IDE așa cum este indicat în descrierea detaliată furnizată în schița software-ului aici,
  • Python v3.5.2 dacă doriți să utilizați capacitatea de testare automată, detalii aici

De ce instrumente am nevoie?

  • Microscop cel puțin x3 (pentru lipire SMT),
  • Instrument de sertizare a conectorului Molex (pentru conectori JST),
  • Fier de lipit SMD (cu stilou de flux lichid și lipit cu flux),
  • Șurubelnițe (diverse),
  • Pistol cu aer cald,
  • Burghie (diverse),
  • Instrumente manuale
  • Fișiere (diverse),
  • Dremel (diverse biți),
  • Viciul robust (mic și mare, ca un partener de lucru negru și cu etaj),
  • Bisturiu,
  • Etriere Vernier (utilizate pentru măsurarea fabricării și utile pentru dimensionarea componentelor PCB),
  • Chei și chei pentru piulițe (diverse),
  • Pensete puternice (pentru lipire SMT),
  • Ferăstrău Junior
  • Burghiu (cu diverse burghie),
  • Clește fină (cu vârf și vârf),
  • Freze de spălat,
  • DMM cu verificare de continuitate sonoră,
  • Scop digital cu două canale (la îndemână pentru depanarea semnalelor)

De ce abilități am nevoie?

  • Multă răbdare,
  • O mare dexteritate manuală și o coordonare excelentă mână / ochi,
  • Abilități excelente de lipit,
  • Abilități excelente de fabricare,
  • Capacitatea de a vizualiza în 3 dimensiuni,
  • Câteva cunoștințe despre dezvoltarea de software cu „C” (dacă doriți să înțelegeți codul sursă),
  • Câteva cunoștințe despre Python (cum să instalați și să rulați scripturi, dacă doriți să utilizați testarea automată),
  • Cunoașterea Arduino și a IDE-ului său,
  • Cunostinte bune de electronica,
  • O oarecare înțelegere a rețelei dvs. de domiciliu.

Subiecte acoperite

  • Manual de utilizare
  • Prezentare generală a circuitului
  • Fabricarea și asamblarea PCB-urilor
  • Fabricare
  • Prezentare generală a sistemului software
  • Prezentare generală a software-ului
  • Calibrarea senzorului
  • Convenția de denumire a subiectelor MQTT
  • Depanare & Găsirea erorilor
  • Testarea proiectării
  • Concluzie
  • Referințe utilizate

Link-uri de serie Pentru partea 11: Consola desktop IoT. Partea: 11 IoT, Home Automation

Pasul 1: Manual de utilizare

Manual de utilizare
Manual de utilizare
Manual de utilizare
Manual de utilizare
Manual de utilizare
Manual de utilizare

Imaginea 1 de mai sus prezintă partea din față a sintetizatorului de vorbire retro și imaginea 2 din spate.

Frontul incintei

  1. Speaker Grill
  2. Mufă pentru căști de 3,5 mm: Difuzorul principal este dezactivat la introducerea mufei de 3,5 mm.
  3. LED roșu: Acest LED se aprinde în timp ce se vorbește un cuvânt când vorbirea a fost inițiată printr-o cerere
  4. LED albastru: Acest LED se aprinde în timp ce se vorbește un cuvânt când vorbirea a fost inițiată printr-o cerere IoT MQTT.

Carcasa din spate

  1. Buton Resetare: folosit pentru a reseta hard dispozitivul ESP8266-07 IoT.
  2. Buton bliț: Când este utilizat împreună cu butonul Reset, permite intermitentul ESP8266-07.
  3. Fișă antenă WiFi (mufă SMA): pentru antenă WiFi externă care oferă cea mai mică atenuare a căii RF, deoarece închiderea este din aluminiu.
  4. Port de programare extern: Pentru a elimina necesitatea deșurubării carcasei pentru a avea acces la ESP8266-07 în scopul reprogramării. Pinii de programare ai ESP8266-07 au fost aduși în portul de programare extern. Imaginea 3 este adaptorul de programare.
  5. LED verde: Acesta este LED-ul sistemului IoT și este utilizat pentru a indica starea de diagnosticare a dispozitivului și a porni și în timpul funcționării.
  6. Senzor extern de temperatură / umiditate (AM2320)
  7. Slot pentru card SD: Acesta conține toate datele de configurare / securitate împreună cu paginile serverului web.
  8. Mufă de alimentare de 2,1 mm 6vcc

Pasul 2: Prezentare generală a circuitului

Prezentare generală a circuitului
Prezentare generală a circuitului
Prezentare generală a circuitului
Prezentare generală a circuitului

Dispozitivul Retro Speech Synth cuprinde două PCB-uri;

  • RetroSpeechSynthIoTBoard: Acesta este un PCB generic, reutilizabil ESP8266-07 / 12 / 12E / 13
  • RetroSpeechSynthBoard: Acesta este un PCB SP0256-AL2 generic

Retro Speech Synth IoT Board

Această placă permite lipirea directă a unei prize ESP8266-07 / 12 / 12E / 13 sau 0,1 , care găzduiește o placă de transport ESP8266.

Placa a fost concepută pentru a extinde I / O-ul său printr-o conexiune I2C și poate suporta fie nivelurile de alimentare 3v3, fie 5v prin Q1, Q2, R8-13.

Conexiunea la placa se realizează prin intermediul unuia dintre cele două anteturi J2 și J4, o panglică DIL IDC cu 8 căi sau JST / Molex cu 5 căi.

U2 și U3 prevedere 3.3v și 5v la bord de reglementare a alimentării. Alternativ, dacă este necesară o capacitate de curent mai mare, regulatoarele de șunt seriale off board pot fi atașate prin conectorii J10 și respectiv J11.

Conectorii J1 și J3 oferă suport pentru card SD extern prin SPI. J1 a fost proiectat pentru un Molex cu 8 căi și J3 are pin direct pentru compatibilitatea pinului pentru un PCB de pe raftul cardului SD cu suport 3v3 sau 5v.

Retro Speech Synth Board

Controlul acestei plăci se face printr-o conexiune compatibilă I2C 5v prin J1, J5 sau J6, un conector JST / Molex cu 4 căi, 8-căi DIL IDC sau 8-căi IDC panglică conector.

U2 MPC23017 oferă interfața I2C la paralelă cu U3 SP0256-AL2 și LED-urile D1 (verde), D2 (roșu) și D3 (albastru). Ieșirea Speech Synth este alimentată la amplificatorul audio CR1 TBA820M fie prin potul analogic RV1, fie prin potul digital U1 MCP4561.

Digital Pot U1 este, de asemenea, controlat prin I2C compatibil 5v.

Notă: Dispozitivul ESP8266-07 a fost ales deoarece are un conector IPX RF integrat care permite adăugarea unei antene WiFi externe la carcasa din aluminiu.

Pasul 3: Fabricarea și asamblarea PCB-urilor

Fabricarea și asamblarea PCB-urilor
Fabricarea și asamblarea PCB-urilor
Fabricarea și asamblarea PCB-urilor
Fabricarea și asamblarea PCB-urilor
Fabricarea și asamblarea PCB-urilor
Fabricarea și asamblarea PCB-urilor
Fabricarea și asamblarea PCB-urilor
Fabricarea și asamblarea PCB-urilor

Imaginile 1 și 2 prezintă subansamblurile PCB completate și cablate situate pe substratul carcasei din aluminiu.

Cele două PCB-uri au fost proiectate folosind Kicad v4.0.7, fabricat de JLCPCB și asamblat de mine și prezentat mai sus Pics 3-13.

Pasul 4: Fabricare

Fabricare
Fabricare
Fabricare
Fabricare
Fabricare
Fabricare

Imaginea 1 prezintă o dispunere în stil Haynes Manual a tuturor pieselor prefabricate înainte de asamblarea finală.

Fotografiile 2… 5 prezintă diferite fotografii în timpul fabricării incintei cu distanțe minime.

Pasul 5: Prezentare generală a sistemului software

Prezentare generală a sistemului software
Prezentare generală a sistemului software
Prezentare generală a sistemului software
Prezentare generală a sistemului software

Acest dispozitiv IoT Retro Speech Synthesis conține șase componente software cheie, așa cum se arată în imaginea 1 de mai sus.

Card SD

Acesta este sistemul extern SD SPI Flash Filing System și este utilizat pentru a păstra următoarele informații (a se vedea imaginea 2 de mai sus);

  • Pictograme și „Pagina principală de configurare a sintetizării vorbirii” index.htm: servit de dispozitivul IoT atunci când nu se poate conecta la rețeaua WiFi IoT (de obicei din cauza informațiilor incorecte de securitate sau a primei utilizări) și oferă utilizatorului un mijloc de configurare de la distanță a senzorilor fără a fi nevoie să re-flash noul conținut SD. Deține, de asemenea, index1.htm, mqtt.htm și sp0256.htm, acestea sunt paginile web difuzate local, accesibile printr-un browser web, permițând un control limitat al sintetizatorului de vorbire. prin
  • Informații de securitate: Deține informațiile utilizate la pornirea dispozitivului IoT pentru a vă conecta la rețeaua WiFi IoT și la brokerul MQTT. Informațiile trimise prin „Pagina principală de configurare a sintetizării vorbirii” sunt scrise în acest fișier („secvals.txt”).
  • Informații de calibrare: Informațiile conținute în fișiere („calvals1.txt” și „calvals2.txt”) sunt utilizate pentru calibrarea senzorilor de temperatură / umiditate de la bord, dacă este necesar. Constantele de calibrare pot fi scrise pe dispozitivul IoT prin comenzi MQTT de la un broker MQTT sau prin intermitentul cardului SD. „calvals1.txt” se referă la senzorul AM2320 și „calvals2.txt” la DHT22.
  • Valori de sistem configurabile de utilizator: informațiile conținute în acest fișier („confvals.txt”), alese de utilizator, controlează anumite răspunsuri ale sistemului, precum nivelul inițial al volumului digital, anunțul automat „gata de sistem” la abonamentul broker MQTT etc.

Server mDNS

Această funcționalitate este invocată atunci când dispozitivul IoT nu a reușit să se conecteze la rețeaua WiFi ca stație WiFi și, în schimb, a devenit un punct de acces WiFi ceva asemănător cu un router WiFi intern. În cazul unui astfel de router, vă veți conecta în mod obișnuit introducând adresa IP a ceva de genul 192.168.1.1 (tipărită de obicei pe o etichetă atașată la casetă) direct în bara URL a browserului, după care veți primi o pagină de autentificare pentru a intra numele de utilizator și parola pentru a vă permite să configurați dispozitivul. Pentru ESP8266-07 în modul AP (modul Punct de acces) dispozitivul implicit este adresa IP 192.168.4.1, cu toate acestea, cu serverul mDNS care rulează, trebuie să introduceți doar numele prietenos uman „SPEECHSVR.local” în bara URL a browserului pentru consultați „Pagina principală Configurare sintetizare vorbire”.

Client MQTT

Clientul MQTT oferă toate funcționalitățile necesare pentru; conectați-vă la rețeaua dvs. IoT broker MQTT, abonați-vă la subiectele la alegere și publicați sarcini utile la un subiect dat. Pe scurt, prevede funcționalitatea de bază IoT.

Server Web

Acest server web are două scopuri;

  1. Dacă dispozitivul IoT nu se poate conecta la rețeaua WiFi al cărui SSID, P / W etc. este definit în fișierul cu informații de securitate deținut pe cardul SD, dispozitivul va deveni un punct de acces. Odată conectat la rețeaua WiFi furnizată de punctul de acces, prezența unui server web HTTP vă permite să vă conectați direct la dispozitiv și să modificați configurația acestuia prin utilizarea unui browser web HTTP, scopul fiind de a servi „Configurarea sintetizării vorbirii” Pagina web „Pagina principală”, care este, de asemenea, păstrată pe cardul SD.
  2. Odată ce dispozitivul IoT Retro Speech Synthesis Device s-a conectat la rețeaua WiFi și brokerul MQTT, dacă este accesat, serverul Web HTTP va difuza automat o pagină web HTTP care permite controlul limitat al dispozitivului IoT pentru a vorbi o selecție de fraze fixe și posibilitatea de a rotiți cele două LED-uri roșii și albastre frontale.

Stație WiFi

Această funcționalitate oferă dispozitivului IoT capacitatea de a se conecta la o rețea WiFi internă utilizând parametrii din fișierul Informații de securitate, fără aceasta dispozitivul dvs. IoT nu va putea să se aboneze / să publice la MQTT Broker.

Punct de acces WiFi

Capacitatea de a deveni un punct de acces WiFi este un mijloc prin care dispozitivul IoT vă permite să vă conectați la acesta și să efectuați modificări de configurare printr-o stație WiFi și un browser (cum ar fi Safari pe Apple iPad). Acest punct de acces difuzează un SSID = "SPEECHSYN" + ultimele 6 cifre ale adresei MAC a dispozitivului IoT. Parola pentru această rețea închisă este numită imaginațional „PAROLĂ”

Pasul 6: Prezentare generală a software-ului

Prezentare generală a software-ului
Prezentare generală a software-ului
Prezentare generală a software-ului
Prezentare generală a software-ului
Prezentare generală a software-ului
Prezentare generală a software-ului

Preambul

Pentru a compila cu succes acest cod sursă, veți avea nevoie de o copie locală a codului și a bibliotecilor prezentate mai jos în Pasul 12, Referințe utilizate. Dacă nu sunteți sigur cum să instalați o bibliotecă Arduino, accesați aici.

Prezentare generală

Software-ul folosește mașina de stat așa cum se arată în imaginea 1 de mai sus (copie completă a sursei din depozitul meu GitHub aici). Există 5 stări principale așa cum este prezentat mai jos;

  • INIT

    Această stare de inițializare este prima stare introdusă după pornire

  • NOCONFIG

    Această stare este introdusă dacă după pornire este detectat un fișier secvals.txt nevalid sau lipsă. În această stare, pagina de configurare este vizibilă

  • PENDENT NW

    Această stare este tranzitorie, a intrat în timp ce nu există o conexiune de rețea WiFi

  • MQTT PENDENT

    Această stare este tranzitorie, introdusă după ce s-a făcut o conexiune de rețea WiFi și, deși nu există nicio conexiune la un broker MQTT din acea rețea

  • ACTIV

    Aceasta este starea operațională normală introdusă după stabilirea atât a unei conexiuni de rețea WiFi, cât și a unei conexiuni MQTT Broker. În această stare, temperatura, indicele de căldură și umiditatea dispozitivului IoT Retro Speech Synthesis Device sunt publicate în mod regulat către MQTT Broker. În această stare, pagina de pornire Speech Synth este vizibilă

Evenimentele care controlează tranzițiile între stări sunt descrise în imaginea 1 de mai sus. Tranzițiile între state sunt, de asemenea, guvernate de următorii parametri SecVals;

  • Prima adresă IP a brokerului MQTT. În formă zecimală punctată AAA. BBB. CCC. DDD
  • Al doilea port de broker MQTT. În formă de număr întreg.
  • A treia conexiune broker MQTT încearcă să se facă înainte de a trece de la modul STA la modul AP. În formă de număr întreg.
  • Al 4-lea rețea WiFi SSID. În text liber.
  • A 5-a parolă de rețea WiFi. În text liber.

După cum s-a menționat mai sus, dacă dispozitivul IoT nu se poate conecta ca stație WiFi la rețeaua WiFi care are SSID și P / W este definit în secvals.txt deținut pe cardul SD, dispozitivul IoT va deveni un punct de acces. Odată conectat la acest punct de acces, acesta va afișa „Pagina principală de configurare a sintetizării vorbirii”, așa cum se arată mai sus în imaginea 2 (introducând fie „SPEECHSVR.local”, fie 192.168.4.1 în bara de adrese URL a browserelor dvs.). Această pagină de start permite reconfigurarea dispozitivului IoT Retro Speech Synthesis Device printr-un browser

Acces la distanță în timp ce se află în starea ACTIVĂ

Odată conectat la Brokerul MQTT, este de asemenea posibil să recalibrați și să reconfigurați dispozitivul prin intermediul publicațiilor tematice MQTT. Fișierul calvals.txt are acces R / W și secvals.txt are acces doar la scriere expus.

De asemenea, așa cum s-a menționat mai sus, o dată în modul activ, este posibil să accesați Speech Synth printr-o interfață HTTP introducând „SPEECHSVR.local” sau 192.168.4.1 în bara de adrese URL a browserului. Această interfață bazată pe HTTP permite controlul de bază al Speech Synth. Imaginile 3, 4 și 5 arată paginile web disponibile.

Depanare utilizator

În timpul secvenței de încărcare, sistemul verde al dispozitivului IoT, condus în partea din spate a carcasei, dă următorul feedback de depanare;

  • 1 Bliț scurt: Nu există fișier de configurare localizat pe cardul SD (secvals.txt)
  • 2 Blițuri scurte: dispozitivul IoT încearcă să se conecteze la rețeaua WiFi
  • Iluminare continuă: dispozitivul IoT încearcă să se conecteze la MQTT Broker
  • Off: Dispozitivul este activ.

Funcționalitatea dispozitivului de sinteză a vorbirii retro IoT în stare ACTIVĂ

Odată ajuns în starea ACTIVĂ ESP8266 intră într-o buclă continuă apelând următoarele funcții; timer_update (), checkTemperatureAndHumidity () și handleSpeech (). Rezultatul net al căruia a fost conceput pentru a prezenta utilizatorului o interfață HTTP sau MQTT, asigură un procesor de vorbire integrat cu foneme la cerere și publică valori parametrice locale ambientale peste MQTT.

O listă cuprinzătoare cu toate abonamentele la subiecte și publicațiile, inclusiv valorile încărcăturii utile, este inclusă în codul sursă.

Pasul 7: Calibrarea senzorului

Calibrarea senzorului
Calibrarea senzorului

Când dispozitivul IoT se pornește, ca parte a secvenței de încărcare, două fișiere numite „cavals1.txt” și „cavals2.txt” sunt citite de pe cardul SD.

Conținutul acestor fișiere sunt constante de calibrare, așa cum este indicat mai sus în imaginea 1.

  1. „cavals1.txt”: utilizat de AM2320 extern
  2. „cavals2.txt”: utilizat de DHT22 intern

Aceste constante de calibrare sunt utilizate pentru a regla citirile dobândite de la cei doi senzori pentru a le alinia cu un dispozitiv de referință. Există o altă valoare care definește o strategie de raportare pentru fiecare dispozitiv și este descrisă mai jos împreună cu procedura urmată pentru calibrarea senzorilor.

Strategia de raportare

Acest parametru determină modul în care senzorul de la distanță raportează local orice schimbări parametrice ambientale. Dacă este selectată o valoare 0, senzorul de la distanță va publica orice modificare pe care o va vedea în temperatură sau umiditate de fiecare dată când senzorul respectiv este citit (aproximativ la fiecare 10 secunde). Orice altă valoare va întârzia publicarea unei modificări cu 1 … 60 de minute. Modificarea acestui parametru permite optimizarea traficului de rețea MQTT. Trebuie remarcat faptul că datele despre temperatură și umiditate din DHT22 sunt citite alternativ din cauza limitărilor senzorului.

Calibrarea temperaturii

Pentru a calibra senzorul de temperatură, am urmat același proces descris aici la pasul 4, folosind din nou o relație simplă y = mx + c. Am folosit senzorul de temperatură, umiditate # 1 IoT ca dispozitiv de referință. Valorile senzorului sunt în grade celcius.

Calibrarea umidității

Deoarece nu am mijloace pentru a înregistra cu precizie sau chiar pentru a controla umiditatea ambientală locală, pentru a calibra senzorul, am folosit o abordare similară cu cea de mai sus, pasul 4, folosind din nou senzorul # 1 ca referință. Cu toate acestea, cele menționate mai sus, am găsit recent un articol excelent pe web care descrie modul de calibrare a senzorilor de umiditate. S-ar putea să încerc această abordare cândva în viitor. Valorile senzorului sunt în% vârstă a umidității relative.

Pasul 8: Convenția de numire a subiectelor MQTT

Convenția de denumire a subiectelor MQTT
Convenția de denumire a subiectelor MQTT
Convenția de denumire a subiectelor MQTT
Convenția de denumire a subiectelor MQTT

Așa cum am menționat într-un Instructable anterior (aici), m-am stabilit asupra convenției de denumire a subiectului prezentată în imaginea 1 de mai sus.

Anume, „AccessMethod / DeviceType / WhichDevice / Action / SubDevice” Nu este perfect, dar permite aplicarea filtrelor utile pentru a vedea toate ieșirile senzorilor pentru un subiect parametric dat, permițând astfel o comparație ușoară ca în imaginea 2 de mai sus cu MQTTSpy.

Acest proiect este prima instanță în care un singur dispozitiv conține mai multe surse originare ale aceluiași tip de publicație. adică Doi senzori de temperatură / umiditate, de la sub-dispozitive interne și externe.

De asemenea, acceptă grupări logice de funcționalitate extensibile în mod rezonabil într-un anumit dispozitiv IoT.

În implementarea acestor subiecte în software, am folosit șiruri de subiecte codate cu coduri de identificare numerice fixe, încorporate pentru fiecare dispozitiv, spre deosebire de generarea dinamică a subiectelor în timpul rulării, astfel încât să economisesc RAM și să mențin performanța ridicată.

Notă: Dacă nu sunteți sigur cum să utilizați MQTTSpy, consultați aici „Configurarea unui broker MQTT. Partea 2: IoT, Home Automation '

Pasul 9: Depanare și identificarea erorilor

Depanare & Găsirea erorilor
Depanare & Găsirea erorilor

În general, pentru proiectele mele de hobby, acolo unde este posibil, tind să construiesc un prototip hardware reprezentativ împotriva căruia este dezvoltat software-ul, rareori am probleme la integrarea software-ului în hardware-ul final al platformei.

Cu toate acestea, cu această ocazie am întâlnit o eroare intermitentă ciudată, prin care unele foneme ar suna, dar altele nu.

După o anumită depanare inițială a Speech Synth PCB folosind un Arduino Uno pentru a sursa foneme și a dovedit că această placă funcționează, am abordat liniile I2C dintre PCB IoT și Speech Synth PCB. Vezi imaginea 1 de mai sus.

Puteți vedea clar „dinte de ferăstrău” / muchia exponențială la semnalul I2C pe urme.

Aceasta este de obicei o indicație că valorile de tragere I2C sunt prea mari, împiedicând revenirea tensiunii de linie suficient de rapid într-un circuit de scurgere deschis.

Ca „rezolvare”, am pus în paralel cele două rezistențe smt pull R12 și R13 cu 10Ks pentru a oferi 4K7 și destul de sigur Speech Synth „a izbucnit în viață”

Acest tip de eșec este opusul a ceea ce se poate întâmpla la depanarea acestor tipuri de proiecte. În general, majoritatea modulelor bazate pe I2C achiziționate de pe Ebay au tendința de a veni cu extrageri de 10K sau 4K7 deja montate. Dacă intenționați să utilizați> 5 module I2C, fiecare cu pull-uri 4K7, atunci sarcina totală este de 940R, ceea ce va fi prea mare pentru etapa de ieșire a masterului. Soluția ar fi de a-lipi toate, cu excepția unui singur set de rezistențe de tragere pe fiecare modul. De preferință, cel mai îndepărtat fizic de stăpân.

Un sfat util și demn de reținut atunci când proiectați electronice cu dispozitive I2C.

Pasul 10: Testarea designului

Image
Image
Testarea proiectării
Testarea proiectării
Testarea proiectării
Testarea proiectării

Testarea a fost efectuată utilizând două metodologii; Manual și automat.

Primul, manual și utilizat în general în timpul dezvoltării inițiale a codului a fost utilizarea MQTT Spy pentru a exercita toate subiectele abonate disponibile și pentru a verifica răspunsurile publicate (prezentate în imaginea 2 de mai sus). Întrucât acesta este un proces manual, poate fi consumator de timp și predispus la erori pe măsură ce dezvoltarea codului progresează, deși execuția manuală permite acoperirea 100%.

MQTTSpy a fost ales pentru testarea manuală, deoarece este un instrument excelent pentru formatarea manuală a unei sarcini utile date și publicarea acesteia pe orice subiect cu ușurință. De asemenea, afișează un jurnal clar, marcat cu timp, care este foarte util pentru depanare (imaginea 3 de mai sus).

A doua abordare automată a fost adoptată pe măsură ce codul sursă a devenit mai complex (> 3700 de linii). Complexitatea crescută înseamnă cicluri de testare manuale mai lungi și teste mai complexe. Pentru a îmbunătăți fiabilitatea, determinismul și calitatea testelor, testarea automată a fost utilizată printr-un director de testare Python (imaginea 1). Consultați Pasul # 10 din acest Instructable despre modul în care a fost introdus testarea automată. O copie completă a testelor automate utilizate în acest instructable este disponibilă aici.

Un videoclip al secvenței de test automat în funcțiune este prezentat mai sus. Secvența execută pașii următori;

  • Automat prin MQTT

    • Conectați-vă la coloana vertebrală MQTT și anunțați „System Ready”
    • Exercițiu LED verde
    • Exercițiu LED roșu
    • Exercițiu LED albastru
    • Verificați funcționează Digital Pot
    • Vorbește folosind foneme
    • Vorbiți folosind coduri hexagonale pentru foneme
    • Vorbiți folosind coduri pentru expresii corecte
    • Un pic din distracția lui Dr Who și Daleks.
  • Manual prin HTTP / Chrome

    • Exercițiu LED albastru
    • Exercițiu LED roșu
    • Rostiți expresii fixe „Steven Quinn”, „System Ready” și „Hello World”
    • Solicitați serverul

      • Detalii despre Speech Synth Chip
      • Detalii MQTT

Pasul 11: Concluzie

Concluzie
Concluzie

Deși a fost nevoie de mult efort cu fișiere și burghie etc., în special pentru grila difuzoarelor, cred că rezultatul este plăcut din punct de vedere estetic și se împachetează într-o incintă mică și frumoasă. Aș fi putut să-l micșorez, dar ar fi trebuit să intru pe un PCB și l-am rupt în mod deliberat în două, astfel încât să pot reutiliza PCB-urile la o dată ulterioară pentru alte proiecte. Deci este un compromis fericit.

Software-ul funcționează bine, dispozitivul IoT funcționează stabil de ceva timp, fără probleme.

Am monitorizat temperatura și umiditatea prin Grafana și am comparat cu un dispozitiv co-localizat. Cele două valori ambientale s-au corelat bine, ceea ce înseamnă că calibrarea este rezonabilă (sau cel puțin sunt similare).

Am încetat să implementez comanda cuvântului („WFD / SpeechTH / 1 / Word / Command”) deoarece am rămas fără timp și trebuia să merg mai departe. S-ar putea să re-vizitez acest lucru dacă și când configurez o bază de date MySQL. Chiar acum folosesc InfluxDB.

Pasul 12: Referințe utilizate

Următoarele surse au fost folosite pentru a pune împreună acest instructabil; Cod sursă pentru dispozitivul IoT Retro Speech Synthesis Device (acesta conține o copie a tuturor)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • De: Nick O'Leary
  • Scop: Permite dispozitivului să publice sau să se aboneze la subiecte MQTT cu un anumit Broker
  • De la:

DHT.h

  • De: Adafruit
  • Scop: bibliotecă Arduino pentru DHT11DHT22, etc. Senzori de temperatură și umiditate
  • De la:

Adafruit_AM2320.h / Adafruit_Sensor.h

  • De: Adafruit
  • Scop: bibliotecă Arduino pentru AM2320, etc. Senzor de temperatură și umiditate
  • De la:

MCP4561_DIGI_POT.h

  • De: Steve Quinn
  • Scop: Biblioteca Arduino pentru potențiometru digital MCP4561
  • De la:

Adafruit_MCP23017.h

  • De: Steve Quinn
  • Scop: Biblioteca Arduino pentru MCP23017 I2C Port Expander. Aceasta este o furcă GITHub de la Adafruit-MCP23017-Arduino-Library, de Adafruit.
  • De la:

Pentru distractie

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

Fabricarea PCB

https://jlcpcb.com/

Instalarea bibliotecilor suplimentare Arduino

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

Cum se verifică și se calibrează un senzor de umiditate

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 /

Foaie de date SP0256-AL2

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

Magazin de jetoane de vorbire

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

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

Locul doi în concursul Arduino 2019

Recomandat: