Sadržaj:

Retro sinteza govora. Dio: 12 IoT, kućna automatizacija: 12 koraka (sa slikama)
Retro sinteza govora. Dio: 12 IoT, kućna automatizacija: 12 koraka (sa slikama)

Video: Retro sinteza govora. Dio: 12 IoT, kućna automatizacija: 12 koraka (sa slikama)

Video: Retro sinteza govora. Dio: 12 IoT, kućna automatizacija: 12 koraka (sa slikama)
Video: Часть 2 - Аудиокнига «Маленькая принцесса» Фрэнсис Ходжсон Бернетт 2024, Juli
Anonim
Image
Image
Retro sinteza govora. Dio: 12 IoT, kućna automatizacija
Retro sinteza govora. Dio: 12 IoT, kućna automatizacija

Ovaj članak je 12. u nizu o instrukcijama za kućnu automatizaciju koji dokumentiraju kako stvoriti i integrirati IoT Retro uređaj za sintezu govora u postojeći sistem kućne automatizacije, uključujući svu potrebnu softversku funkcionalnost koja omogućava uspješnu primjenu u domaćem okruženju.

Slika 1 prikazuje dovršeni IoT govorni sintetički uređaj, a slika 2 prikazuje sve sastavne dijelove korištene u prototipu koji su smanjeni za ulazak u konačni proizvod.

Video prikazuje uređaj na djelu (tokom testiranja).

Uvod

Kao što je gore spomenuto, ovaj Instructable detaljno opisuje kako napraviti IoT Retro uređaj za sintezu govora i zasnovan je na općim instrumentima SP0256-AL2.

Njegova primarna svrha je dodati "old school" sintezu glasa u IoT mrežu. Zašto biste pitali "stara škola"? Pa, zato što sam bio negdje u 80-ima kada su ove stvari prvi put proizvedene i spojio sam jedan sa svojim BBC Micro pa za mene postoji određeni stupanj nostalgije oko SP0256-AL2.

Mnogo mi je draži izazov pokušaja da shvatim šta, zaboga, govori ovaj Dalekov zvučni glas, nego slušanje prigušenih tonova hipsterske amazonske jeke ili Siri. Gdje je izazov u tome što vas pitam?

Oh, i da ne spominjem, imam i "opterećenje vrećicom" IC-ova "SP0256-AL2".

Uređaj je također sposoban očitavati lokalnu temperaturu i vlažnost, pa dodatno proširuje ambijentalnu opremu moje postojeće IoT infrastrukture koja se povezuje s IoT mrežom zasnovanom na MQTT/OpenHAB detaljno opisanoj u ovoj seriji o kućnoj automatizaciji (HA), nadograđenom odavde.

U srcu je ESP8266-07 koji je odgovoran za MQTT komunikaciju i kontrolira sve funkcionalnosti sistema (pristup SD kartici, LED kontrola, mjerenje temperature/vlažnosti, kontrola jačine zvuka, sinteza govora). Uređaj je u potpunosti konfiguriran putem tekstualnih datoteka pohranjenih na lokalnu SD karticu, iako se kalibracija i sigurnosni parametri mreže mogu programirati i putem udaljenih MQTT publikacija.

Koji dijelovi mi trebaju?

Komplet materijala pogledajte ovdje

Koji softver mi treba?

  • Arduino IDE 1.6.9,
  • Arduino IDE konfiguriran za programiranje ESP8266-07 (isto kao i ovaj). Zatim konfigurirajte IDE kao što je navedeno u detaljnom opisu navedenom u skici softvera ovdje,
  • Python v3.5.2 ako želite koristiti mogućnost automatiziranog testa, pojedinosti ovdje

Koji alati su mi potrebni?

  • Mikroskop najmanje x3 (za SMT lemljenje),
  • Alat za presovanje Molex konektora (za JST konektore),
  • SMD lemilica (sa olovkom za tečni fluks i lemljenjem sa fluks jezgrom),
  • Odvijači (različiti),
  • Toplinski pištolj,
  • Bušilice (razne),
  • Ručni alat za upuštanje,
  • Datoteke (razne),
  • Dremel (različiti komadići),
  • Čvrsti porok (mali i veliki, poput prijatelja za rad na crnoj i palubi),
  • Skalpel,
  • Vernier čeljusti (koriste se za mjerenje proizvodnje i korisne za dimenzioniranje komponenti PCB -a),
  • Ključevi i odvijači matica (različiti),
  • Jaka pinceta (za SMT lemljenje),
  • Junior Hacksaw,
  • Bušilica (sa raznim burgijama),
  • Kliješta za fino rezanje (šiljasti i kvrgavi nos),
  • Sekači za ispiranje,
  • DMM sa zvučnom provjerom kontinuiteta,
  • Dvokanalni digitalni opseg (zgodan za otklanjanje grešaka signala)

Koje vještine su mi potrebne?

  • Puno strpljenja,
  • Velika doza ručne spretnosti i odlična koordinacija ruku i očiju,
  • Odlične vještine lemljenja,
  • Odlične vještine izrade,
  • Sposobnost vizualizacije u 3 dimenzije,
  • Nešto znanja o razvoju softvera sa 'C' (ako želite razumjeti izvorni kod),
  • Nešto znanja o Pythonu (kako instalirati i pokrenuti skripte, ako želite koristiti automatizirano testiranje),
  • Poznavanje Arduina i njegovog IDE -a,
  • Dobro poznavanje elektronike,
  • Malo razumijevanja vaše kućne mreže.

Obuhvaćene teme

  • Uputstvo za upotrebu
  • Pregled kola
  • Proizvodnja i montaža PCB -a
  • Fabrication
  • Pregled softverskog sistema
  • Pregled softvera
  • Kalibracija senzora
  • MQTT Konvencija o imenovanju tema
  • Otklanjanje grešaka i otkrivanje grešaka
  • Testiranje dizajna
  • Zaključak
  • Korišćene reference

Serija LinksTo Dio 11: IoT Desktop Console. Dio: 11 IoT, kućna automatizacija

Korak 1: Korisnički priručnik

Uputstvo za upotrebu
Uputstvo za upotrebu
Uputstvo za upotrebu
Uputstvo za upotrebu
Uputstvo za upotrebu
Uputstvo za upotrebu

Slika 1 gore prikazuje prednji dio sintetizatora retro govora, a slika 2 straga.

Prednja strana kućišta

  1. Speaker Grill
  2. Priključak za slušalice od 3,5 mm: Glavni zvučnik je onemogućen kada je umetnuta utičnica od 3,5 mm.
  3. Crvena LED lampica: Ova LED lampica svijetli dok se riječ izgovara kada je govor pokrenut putem HTTP zahtjeva.
  4. Plava LED: Ova LED lampica svijetli dok se riječ izgovara kada je govor pokrenut putem MQTT IoT zahtjeva.

Stražnje kućište

  1. Dugme za resetovanje: Koristi se za hard reset ESP8266-07 IoT uređaja.
  2. Dugme za blic: Kada se koristi zajedno sa dugmetom za resetovanje, omogućava ponovno blicanje ESP8266-07.
  3. Utikač WiFi antene (SMA utikač): Za vanjsku WiFi antenu koja daje najmanje slabljenje RF puta jer je zatvarač aluminijski.
  4. Vanjski priključak za programiranje: Da biste uklonili potrebu za odvrtanjem kućišta kako biste dobili pristup ESP8266-07 za potrebe ponovnog programiranja. Pinovi za programiranje ESP8266-07 izvedeni su na vanjski programski port. Slika 3 je programski adapter.
  5. Zelena LED dioda: Ovo je svjetlo IoT sistema i koristi se za označavanje dijagnostičkog statusa uređaja i pokretanje sistema tokom rada.
  6. Senzor vanjske temperature/vlage (AM2320)
  7. Utor za SD karticu: Sadrži sve konfiguracijske/sigurnosne podatke zajedno sa stranicama web servera.
  8. 2.1mm Utičnica za napajanje 6vdc

Korak 2: Pregled kola

Pregled kola
Pregled kola
Pregled kola
Pregled kola

Uređaj Retro Speech Synth sadrži dva PCB -a;

  • RetroSpeechSynthIoTBoard: Ovo je generička, višekratna upotreba ESP8266-07/12/12E/13 PCB
  • RetroSpeechSynthBoard: Ovo je generička SP0256-AL2 PCB

IoT ploča za sinhronizaciju retro govora

Ova ploča omogućava ili direktno lemljenje ESP8266-07/12/12E/13 ili 0,1 utičnih utičnica sa nosačem ESP8266 noseće ploče.

Ploča je dizajnirana da proširi svoj I/O preko I2C veze i može podržati 3v3 ili 5v nivo napajanja preko Q1, Q2, R8-13.

Povezivanje na ploču ostvaruje se putem jednog od dva zaglavlja J2 i J4, 8-smjerne DIL IDC vrpce ili 5-smjerne JST/Molex.

U2 i U3 odredbe 3.3v i 5v o regulaciji opskrbe broda. Alternativno, ako je potreban veći kapacitet struje, vanbrodski serijski regulatori šanta mogu se priključiti preko konektora J10 odnosno J11.

Konektori J1 i J3 nude podršku za vanjsku SD karticu preko SPI -ja. J1 je dizajniran za 8-smjerni Molex, a J3 ima izravnu iglu za podršku kompatibilnosti pinova za standardnu PCB SD karticu s podrškom od 3v3 ili 5v.

Retro Speech Synth ploča

Kontrola ove ploče je preko I2C 5v kompatibilne veze preko J1, J5 ili J6, 4-smjernog JST/Molex-a, 8-smjernog DIL IDC ili 8-smjernog IDC konektora za vrpcu.

U2 MPC23017 pruža I2C paralelni interfejs za U3 SP0256-AL2 i LED D1 (zelena), D2 (crvena) i D3 (plava). Izlaz Speech Synth -a se prenosi na audio pojačalo CR1 TBA820M putem analognog ulaza RV1 ili digitalnog ulaza U1 MCP4561.

Digitalni pot U1 se takođe kontroliše preko I2C kompatibilnog sa 5v.

Napomena: Uređaj ESP8266-07 odabran je jer ima integrirani IPX RF konektor koji omogućuje dodavanje vanjske WiFi antene u aluminijsko kućište.

Korak 3: Proizvodnja i montaža PCB -a

Proizvodnja i montaža PCB -a
Proizvodnja i montaža PCB -a
Proizvodnja i montaža PCB -a
Proizvodnja i montaža PCB -a
Proizvodnja i montaža PCB -a
Proizvodnja i montaža PCB -a
Proizvodnja i montaža PCB -a
Proizvodnja i montaža PCB -a

Slike 1 i 2 prikazuju dovršene i žičane sklopove PCB-a smještene na aluminijskoj podlozi kućišta.

Dva PCB -a su dizajnirana koristeći Kicad v4.0.7, proizvođača JLCPCB, a ja sam ih sastavila i prikazana na slici 3 do 13.

Korak 4: Izrada

Fabrication
Fabrication
Fabrication
Fabrication
Fabrication
Fabrication

Slika 1 prikazuje Haynesov ručni izgled svih montažnih dijelova prije konačne montaže.

Slike 2… 5 prikazuju različite snimke tokom izrade kućišta s minimalnim razmacima.

Korak 5: Pregled softverskog sistema

Pregled softverskog sistema
Pregled softverskog sistema
Pregled softverskog sistema
Pregled softverskog sistema

Ovaj IoT Retro uređaj za sintezu govora sadrži šest ključnih softverskih komponenti kako je prikazano na slici 1 gore.

Sd kartica

Ovo je vanjski SD SPI Flash File System i koristi se za čuvanje sljedećih informacija (vidi sliku 2 gore);

  • Ikone i 'Početna stranica za konfiguraciju sinhronizacije govora' index.htm: Dostavlja ga IoT uređaj kada se ne može povezati na vašu IoT WiFi mrežu (obično zbog netočnih sigurnosnih podataka ili prve upotrebe) i pruža korisniku sredstva daljinskog konfiguriranja senzora bez potrebe za ponovnim blještanjem novog SD sadržaja. Također sadrži indekse1.htm, mqtt.htm i sp0256.htm, ovo su lokalno poslužene web stranice dostupne preko web preglednika što omogućava ograničenu kontrolu govora preko HTTP -a.
  • Sigurnosne informacije: Ovo sadrži podatke koje IoT uređaj koristi pri uključivanju za povezivanje s vašom IoT WiFi mrežom i MQTT posrednikom. Podaci poslani putem 'početne stranice za konfiguraciju sinhronizacije govora' zapisuju se u ovu datoteku ('secvals.txt').
  • Informacije o kalibraciji: Podaci sadržani u datotekama ('calvals1.txt' i 'calvals2.txt') koriste se za kalibraciju ugrađenih senzora temperature/vlažnosti ako je potrebno. Konstante kalibracije se mogu zapisati na IoT uređaj putem MQTT naredbi iz MQTT brokera ili ponovnim bljeskanjem SD kartice. 'calvals1.txt' se odnosi na senzor AM2320, a 'calvals2.txt' na DHT22.
  • Sistemske vrijednosti koje korisnik može konfigurirati: Podaci sadržani u ovoj datoteci ('confvals.txt'), koje je odabrao korisnik, kontroliraju određene sistemske odgovore, poput početne razine digitalne glasnoće, automatske najave 'spremno za sistem' na pretplati na brokera MQTT itd.

mDNS poslužitelj

Ova se funkcija poziva kada se IoT uređaj ne uspije povezati s vašom WiFi mrežom kao WiFi stanicom i umjesto toga je postao WiFi pristupna točka nešto slično domaćem WiFi usmjerivaču. U slučaju takvog usmjerivača, obično biste se povezali s njim unosom IP adrese poput 192.168.1.1 (obično se štampa na naljepnici pričvršćenoj na okvir) izravno u URL traku vašeg preglednika, nakon čega biste dobili stranicu za prijavu za unos korisničko ime i lozinku kako biste mogli konfigurirati uređaj. Za ESP8266-07 u AP načinu (način pristupne točke) uređaj prema zadanim postavkama postavlja IP adresu 192.168.4.1, međutim s mDNS poslužiteljem morate samo unijeti ljudsko ime 'SPEECHSVR.local' u URL traku preglednika kako biste pogledajte 'Početna stranica za konfiguraciju sinhronizacije govora'.

MQTT klijent

MQTT klijent pruža sve potrebne funkcije za; povežite se sa svojim MQTT posrednikom na IoT mreži, pretplatite se na teme po svom izboru i objavite korisni teret za datu temu. Ukratko, pruža osnovnu funkcionalnost IoT -a.

HTTP web server

Ovaj web server ima dvije svrhe;

  1. Ako se IoT uređaj ne može povezati s WiFi mrežom čiji su SSID, P/W itd. Definirani u datoteci sigurnosnih informacija koja se nalazi na SD kartici, uređaj će postati pristupna točka. Nakon što se povežete na WiFi mrežu koju pruža pristupna točka, prisutnost HTTP web poslužitelja omogućuje vam da se izravno povežete s uređajem i promijenite njegovu konfiguraciju korištenjem HTTP web preglednika čija je svrha posluživanje 'Konfiguracije sinhronizacije govora Web stranica Početna stranica koja se također nalazi na SD kartici.
  2. Nakon što se IoT Retro uređaj za sintezu govora poveže na WiFi mrežu i MQTT posrednika, ako mu se pristupi, HTTP web poslužitelj automatski će posluživati HTTP web stranicu dopuštajući ograničenu kontrolu IoT uređaju da govori izbor fiksnih fraza i mogućnost da okrenite dvije prednje crvene i plave LED diode.

WiFi stanica

Ova funkcija daje IoT uređaju mogućnost povezivanja s domaćom WiFi mrežom koristeći parametre u datoteci sigurnosnih informacija, bez toga vaš IoT uređaj neće biti u mogućnosti pretplatiti se/objaviti na MQTT brokeru.

WiFi pristupna tačka

Mogućnost da postanete WiFi pristupna točka sredstvo je pomoću kojeg vam IoT uređaj omogućava povezivanje s njim i unošenje promjena u konfiguraciju putem WiFi stanice i preglednika (poput Safarija na Apple iPad -u). Ova pristupna točka emitira SSID = "SPEECHSYN" + posljednjih 6 znamenki MAC adrese IoT uređaja. Lozinka za ovu zatvorenu mrežu maštovito se naziva 'LOZINKA'

Korak 6: Pregled softvera

Pregled softvera
Pregled softvera
Pregled softvera
Pregled softvera
Pregled softvera
Pregled softvera

Preambula

Za uspješno sastavljanje ovog izvornog koda trebat će vam lokalna kopija koda i biblioteke navedene u nastavku u koraku 12, Korištene reference. Ako niste sigurni kako instalirati Arduino biblioteku, idite ovdje.

Pregled

Softver koristi state-machine kao što je prikazano na slici 1 gore (potpuna kopija izvora u mom GitHub spremištu ovdje). Postoji 5 glavnih stanja kako je dolje navedeno;

  • U TOME

    Ovo stanje inicijalizacije je prvo stanje uneseno nakon uključivanja

  • NOCONFIG

    Ovo stanje se unosi ako se nakon uključivanja detektira nevažeća ili nedostajuća datoteka secvals.txt. Tokom ovog stanja stranica za konfiguraciju je vidljiva

  • PENDING NW

    Ovo stanje je privremeno, uneseno je dok ne postoji WiFi mreža

  • PENDING MQTT

    Ovo stanje je prolazno, unosi se nakon uspostavljanja WiFi mreže i dok na toj mreži ne postoji veza s MQTT posrednikom

  • ACTIVE

    Ovo je normalno operativno stanje uneseno nakon što se uspostavi i WiFi mrežna veza i MQTT posrednik. U tom se stanju temperatura, indeks topline i vlaga na IoT Retro Speech Synthesis Device uređaju redovito objavljuju u MQTT posredniku. U ovom stanju je vidljiva početna stranica govora

Događaji koji kontroliraju prijelaze između stanja opisani su na slici 1 gore. Prijelazima između stanja također upravljaju sljedeći SecVals parametri;

  • Prva MQTT posrednička IP adresa. U decimalnom obliku s točkama AAA. BBB. CCC. DDD
  • 2. MQTT posrednički port. U cijelom obliku.
  • 3. MQTT Broker veza se pokušava uspostaviti prije prelaska iz STA načina u AP način. U obliku cijelog broja.
  • 4. SSID WiFi mreže. Tekst u slobodnoj formi.
  • 5. lozinka WiFi mreže. Tekst u slobodnoj formi.

Kao što je gore spomenuto, ako se IoT uređaj ne može povezati kao WiFi stanica s WiFi mrežom čiji su SSID i P/W definirani u secvals.txt koji se čuva na SD kartici, IoT uređaj će postati pristupna točka. Nakon što se poveže s ovom pristupnom točkom, poslužit će 'Početna stranica za konfiguraciju sinhronizacije govora' kao što je prikazano gore na slici 2 (unošenjem 'SPEECHSVR.local' ili 192.168.4.1 u adresnu traku preglednika). Ova početna stranica omogućuje rekonfiguraciju IoT Retro uređaja za sintezu govora putem HTTP preglednika.

Daljinski pristup dok je u stanju AKTIVNO

Nakon povezivanja na MQTT Broker moguće je i ponovno kalibrirati i ponovno konfigurirati uređaj putem publikacija o temama MQTT. Datoteka calvals.txt ima pristup R/W, a secvals.txt ima pristup samo za pisanje.

Također, kao što je gore spomenuto, jednom u aktivnom načinu rada moguće je pristupiti Govornom sintetizatoru putem HTTP sučelja unosom 'SPEECHSVR.local' ili 192.168.4.1 u adresnu traku preglednika. Ovo HTTP sučelje omogućava osnovnu kontrolu govora. Slike 3, 4 i 5 prikazuju dostupne web stranice.

Otklanjanje grešaka korisnika

Tokom sekvence pokretanja, zeleni sistem IoT uređaja na zadnjoj strani kućišta daje sledeće povratne informacije o otklanjanju grešaka;

  • 1 Kratak treptaj: Nema datoteke za konfiguraciju koja se nalazi na SD kartici (secvals.txt)
  • 2 kratka bljeska: IoT uređaj pokušava se povezati na WiFi mrežu
  • Neprekidno osvjetljenje: IoT uređaj pokušava se povezati s MQTT posrednikom
  • Isključeno: Uređaj je aktivan.

Funkcionalnost IoT Retro uređaja za sintezu govora u AKTIVNOM stanju

Kada je u stanju ACTIVE, ESP8266 ulazi u kontinuiranu petlju pozivajući sljedeće funkcije; timer_update (), checkTemperatureAndHumidity () i handleSpeech (). Neto rezultat koji je osmišljen tako da korisniku predstavi HTTP ili MQTT interfejs, besprekorno opslužuje svoj ugrađeni govorni procesor sa fonemom na zahtev i objavljuje lokalne parametarske vrednosti okoline preko MQTT-a.

Sveobuhvatna lista svih pretplata na teme i publikacija, uključujući vrijednosti korisnog tereta, uključena je u izvorni kod.

Korak 7: Kalibracija senzora

Kalibracija senzora
Kalibracija senzora

Kada se IoT uređaj uključi, kao dio niza pokretanja, dvije datoteke pod nazivom 'cavals1.txt' i 'cavals2.txt' čitaju se sa SD kartice.

Sadržaj ovih datoteka je konstanta kalibracije kako je gore naznačeno na slici 1.

  1. 'cavals1.txt': Koristi vanjski AM2320
  2. 'cavals2.txt': Koristi interni DHT22

Ove se kalibracijske konstante koriste za podešavanje očitanja dobivenih s dva senzora kako bi se uskladili s referentnim uređajem. Postoji još jedna vrijednost koja definira strategiju izvještavanja za svaki uređaj, a dolje je opisana zajedno sa procedurom koja se slijedi za kalibraciju senzora.

Strategija izvještavanja

Ovaj parametar određuje kako daljinski senzor izvještava o lokalnim parametarskim promjenama okoline. Ako je odabrana vrijednost 0, daljinski senzor će objaviti svaku promjenu temperature ili vlažnosti koju vidi svaki put kada se očita odgovarajući senzor (približno svakih 10 sekundi). Bilo koja druga vrijednost odgodit će objavljivanje promjene za 1 … 60 minuta. Izmjena ovog parametra omogućava optimizaciju MQTT mrežnog prometa. Treba napomenuti da se podaci o temperaturi i vlažnosti sa DHT22 čitaju naizmjenično zbog ograničenja senzora.

Kalibracija temperature

Za kalibraciju senzora temperature slijedio sam isti postupak kao što je ovdje opisano u koraku 4, opet koristeći jednostavan odnos y = mx+c. Koristio sam IoT temperaturu, senzor vlažnosti #1 kao referentni uređaj. Vrijednosti sa senzora su u stepenima Celzijusa.

Kalibracija vlažnosti

Kako ne posjedujem sredstva za precizno snimanje ili čak kontrolu lokalne vlažnosti okoline, za kalibraciju senzora koristio sam sličan pristup onom u koraku 4, opet koristeći senzor #1 kao referencu. Međutim, gore rečeno, nedavno sam na internetu pronašao odličan članak koji opisuje kako kalibrirati senzore vlažnosti. Možda ću probati ovaj pristup negdje u budućnosti. Vrijednosti senzora su u %starosti od relativne vlažnosti.

Korak 8: MQTT Konvencija o imenovanju tema

MQTT Konvencija o imenovanju tema
MQTT Konvencija o imenovanju tema
MQTT Konvencija o imenovanju tema
MQTT Konvencija o imenovanju tema

Kao što je spomenuto u ranijem Instructable -u (ovdje), zadržao sam se na konvenciji imenovanja teme prikazanoj na slici 1 gore.

Naime, 'AccessMethod/DeviceType/WhichDevice/Action/SubDevice' Nije savršen, ali dopušta primjenu korisnih filtera za prikaz svih izlaza senzora za datu parametarsku temu, što omogućava lako poređenje kao na slici 2 gore sa MQTTSpy.

Ovaj projekt je prva instanca u kojoj jedan uređaj sadrži više od jednog izvornog izvora iste vrste publikacije. tj. Dva senzora temperature/vlažnosti, iz unutrašnjih i vanjskih pod-uređaja.

Također podržava razumno proširivo logičko grupiranje funkcionalnosti unutar datog IoT uređaja.

U implementaciji ovih tema u softveru koristio sam tvrdo kodirane nizove tema sa fiksnim, ugrađenim numeričkim identifikatorima za svaki uređaj, za razliku od dinamičkog generiranja tema u vrijeme izvođenja radi uštede na RAM -u i održavanja visokih performansi.

Napomena: Ako niste sigurni kako koristiti MQTTSpy, pogledajte ovdje 'Postavljanje MQTT brokera. Dio 2: IoT, kućna automatizacija '

Korak 9: Otklanjanje grešaka i pronalaženje grešaka

Otklanjanje grešaka i otkrivanje grešaka
Otklanjanje grešaka i otkrivanje grešaka

Uglavnom, za svoje hobi projekte, gdje je to moguće, težim izgradnji reprezentativnog prototipa hardvera na osnovu kojeg se softver razvija, rijetko imam problema pri integraciji softvera u konačni hardver platforme.

Međutim, ovom prilikom naišao sam na čudnu isprekidanu grešku u kojoj bi neki fonemi zvučali, a drugi ne.

Nakon nekog početnog otklanjanja grešaka na PCB -u Speech Synth koristeći Arduino Uno za izvor fonema i dokazivanje da ova ploča radi, uzeo sam opseg u I2C linije između IoT PCB -a i Speech Synth PCB -a. Vidi gornju sliku 1.

Na tragovima se jasno vidi 'zub pile'/eksponencijalna ivica signala I2C.

To je obično pokazatelj da su vrijednosti podizanja I2C previsoke i sprječavaju oporavak mrežnog napona dovoljno brzo u otvorenom odvodnom krugu.

Kao "rad oko" paralelno sam uporedio dva smt otpornika R12 i R13 sa 10Ks da bih dao 4K7 i zasigurno je govorni sintetičar "oživeo"

Ova vrsta neuspjeha suprotna je onoj koja se može dogoditi prilikom otklanjanja grešaka u ovakvim projektima. Općenito, većina modula zasnovanih na I2C -u kupljenih od Ebaya obično dolazi s već postavljenim 10K ili 4K7 pull -upa. Ako namjeravate koristiti> 5 I2C modula, svaki sa 4K7 pull -upa, tada je ukupno opterećenje 940R što će biti preveliko za izlaznu fazu glavnog uređaja. Popravka bi bila uklanjanje lemljenja svih osim jednog niza otpornika na svakom modulu. Po mogućnosti onaj koji je fizički najudaljeniji od majstora.

Korisan savjet koji vrijedi imati na umu pri projektiranju elektronike s I2C uređajima.

Korak 10: Testiranje dizajna

Image
Image
Testiranje dizajna
Testiranje dizajna
Testiranje dizajna
Testiranje dizajna

Testiranje je provedeno pomoću dvije metodologije; Ručno i automatizirano.

Prvi, ručni i općenito korišteni tijekom početnog razvoja koda bio je korištenje MQTT Spy za vježbanje svih dostupnih pretplaćenih tema i provjeru objavljenih odgovora (prikazanih na slici 2 gore). Kako je ovo ručni proces, može napredovati i biti podložan greškama kako razvoj koda napreduje, iako ručno izvršavanje omogućava 100% pokrivenost.

MQTTSpy je odabran za ručno testiranje jer je odličan alat za ručno oblikovanje datog tereta i objavljivanje na bilo kojoj temi s lakoćom. Takođe prikazuje jasan dnevnik sa vremenskim žigom koji je vrlo koristan za otklanjanje grešaka (slika 3 gore).

Drugi, automatizirani pristup usvojen je kako je izvorni kod postao složeniji (> 3700 redova). Povećana složenost znači duže cikluse ručnog testiranja i složenije testove. Kako bi se poboljšala pouzdanost, determiniranost i kvaliteta testova, korišteno je automatizirano testiranje putem izvršitelja python testa (slika 1). Pogledajte korak 10 u ovom uputstvu o tome kako je uvedeno automatsko testiranje. Potpuna kopija automatiziranih testova korištenih u ovom Instructable -u dostupna je ovdje.

Videozapis automatske sekvence testa u radu prikazan je gore. Niz izvršava sljedeće korake;

  • Automatizirano putem MQTT -a
    • Povežite se na MQTT okosnicu i najavite 'System Ready'
    • Vježba Zelena LED dioda
    • Vježba Crvena LED dioda
    • Vježba Plava LED dioda
    • Provjerite radi li Digital Pot
    • Govorite koristeći foneme
    • Govorite koristeći heksadecimalne kodove za foneme
    • Govorite koristeći kodove za popravke
    • Malo doktora Who i Daleksa.
  • Ručno putem HTTP -a/Chromea
    • Vježba Plava LED dioda
    • Vježba Crvena LED dioda
    • Izgovarajte fiksne fraze 'Steven Quinn', 'System Ready' i 'Hello World'
    • Imajte HTTP server, poslužite

      • Detalji o čipu za sintetiziranje govora
      • Detalji o MQTT -u

Korak 11: Zaključak

Zaključak
Zaključak

Iako je bilo potrebno puno truda s datotekama, bušilicama itd., Posebno za rešetku zvučnika, mislim da je ishod estetski ugodan i zapakiran u lijepo, malo kućište. Mogao sam ga smanjiti, ali bilo bi potrebno otići na jednu PCB ploču, a namjerno sam je podijelio na dvije kako bih kasnije mogao ponovo koristiti PCB-e za druge projekte. Dakle, to je sretan kompromis.

Softver radi dobro, IoT uređaj je već duže vrijeme u stabilnom radu bez ikakvih problema.

Pratio sam temperaturu i vlažnost putem Grafane i upoređivao sa uređajem koji se nalazi zajedno. Dvije ambijentalne vrijednosti dobro su povezane, što znači da je kalibracija razumna (ili su barem slične).

Zaustavio sam implementaciju naredbe riječi ('WFD/SpeechTH/1/Word/Command') jer mi je ponestalo vremena i morao sam nastaviti dalje. Možda ću ovo ponovo posjetiti ako i kada postavim MySQL bazu podataka. Trenutno koristim InfluxDB.

Korak 12: Korištene reference

Za sastavljanje ovog Instructablea korišteni su sljedeći izvori; Izvorni kod za IoT Retro uređaj za sintezu govora (sadrži kopiju svega)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Napisao: Nick O'Leary
  • Svrha: Omogućava uređaju da objavi ili se pretplati na MQTT teme kod datog brokera
  • Sa:

DHT.h

  • Napisao: Adafruit
  • Svrha: Arduino biblioteka za DHT11DHT22, itd. Senzore temperature i vlažnosti
  • Sa:

Adafruit_AM2320.h/Adafruit_Sensor.h

  • Napisao: Adafruit
  • Svrha: Arduino biblioteka za AM2320, itd. Senzor temperature i vlažnosti
  • Sa:

MCP4561_DIGI_POT.h

  • Napisao: Steve Quinn
  • Namjena: Arduino biblioteka za digitalni potenciometar MCP4561
  • Sa:

Adafruit_MCP23017.h

  • Napisao: Steve Quinn
  • Svrha: Arduino biblioteka za MCP23017 I2C Port Expander. Ovo je GITHub vilica iz Adafruit-MCP23017-Arduino-Library, Adafruit.
  • Sa:

Za zabavu

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

Proizvodnja PCB -a

https://jlcpcb.com/

Instaliranje dodatnih Arduino biblioteka

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

Kako provjeriti i kalibrirati senzor vlažnosti

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

Tehnički list SP0256-AL2

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

Prodavnica govornih čipova

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

Arduino takmičenje 2019
Arduino takmičenje 2019
Arduino takmičenje 2019
Arduino takmičenje 2019

Drugoplasirani na Arduino takmičenju 2019

Preporučuje se: