Sadržaj:

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

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

Video: Sinteza retro govora. Dio: 12 IoT, kućna automatizacija: 12 koraka (sa slikama)
Video: Часть 2 - Аудиокнига «Маленькая принцесса» Фрэнсис Ходжсон Бернетт 2024, Srpanj
Anonim
Image
Image
Sinteza retro govora. Dio: 12 IoT, kućna automatizacija
Sinteza retro 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 sustav kućne automatizacije, uključujući svu potrebnu softversku funkcionalnost koja omogućuje uspješnu primjenu u domaćem okruženju.

Slika 1 prikazuje dovršeni IoT govorni sintetizacijski 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 (tijekom testiranja).

Uvod

Kao što je gore spomenuto, ovaj Instructable detaljno opisuje način izrade IoT Retro uređaja za sintezu govora i temelji se na Općim instrumentima SP0256-AL2.

Njegova je primarna svrha dodati sintezu glasa 'old school' 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, a jednu sam spojio 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 što zaboga govori ovaj Dalekov zvučni glas nego slušanje prigušenih tonova hipsterske Amazonke ili Siri. Gdje je izazov u tome što vas pitam?

Oh, i da ne spominjem da također imam 'opterećenje vrećicom' IC-ova 'SP0256-AL2'.

Uređaj također može očitavati lokalnu temperaturu i vlagu, pa dodatno proširuje ambijentalnu opremu moje postojeće IoT infrastrukture koja se povezuje s IoT mrežom temeljenom na MQTT/OpenHAB detaljno opisanoj u ovoj seriji o kućnoj automatizaciji (HA), nadovezujući se na odavde preuzetu šifru.

U srcu mu je ESP8266-07 koji je odgovoran za MQTT komunikaciju i kontrolira sve funkcionalnosti sustava (pristup SD kartici, LED kontrola, mjerenje temperature/vlažnosti, kontrola glasnoće, sinteza govora). Uređaj je potpuno konfiguriran putem tekstualnih datoteka pohranjenih na lokalnu SD karticu, iako se kalibracijski i mrežni sigurnosni parametri 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 kako je navedeno u detaljnom opisu koji se nalazi na skici softvera ovdje,
  • Python v3.5.2 ako želite koristiti mogućnost automatskog testiranja, pojedinosti ovdje

Koji su mi alati potrebni?

  • Mikroskop najmanje x3 (za SMT lemljenje),
  • Alat za presovanje Molex konektora (za JST konektore),
  • SMD lemilica (s olovkom za tekući fluks i lemljenjem sa jezgrom od fluksa),
  • 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 u crnoj boji)
  • Skalpel,
  • Vernier čeljusti (koriste se za mjerenje izrade i korisne za dimenzioniranje komponenti PCB -a),
  • Ključevi i odvijači matica (različiti),
  • Jaka pinceta (za SMT lemljenje),
  • Junior Hacksaw,
  • Bušilica (s raznim svrdlima),
  • Kliješta za fino rezanje (šiljasti i kvrgavi nos),
  • Rezači za ispiranje,
  • DMM sa zvučnom provjerom kontinuiteta,
  • Dvokanalni digitalni opseg (zgodan za otklanjanje pogrešaka u signalima)

Koje vještine su mi potrebne?

  • Puno strpljenja,
  • Velika ručna spretnost i izvrsna koordinacija ruku i očiju,
  • Izvrsne vještine lemljenja,
  • Izvrsne vještine izrade,
  • Sposobnost vizualizacije u 3 dimenzije,
  • Nešto znanja o razvoju softvera s '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.

Tema završena

  • Korisnički priručnik
  • Pregled kruga
  • Proizvodnja i montaža PCB -a
  • Izrada
  • Pregled softverskog sustava
  • Pregled softvera
  • Kalibracija senzora
  • MQTT Konvencija o imenovanju tema
  • Otklanjanje pogrešaka i pronalaženje grešaka
  • Testiranje dizajna
  • Zaključak
  • Korištene reference

Serija LinksTo 11. dio: IoT stolna konzola. Dio: 11 IoT, kućna automatizacija

Korak 1: Korisnički priručnik

Korisnički priručnik
Korisnički priručnik
Korisnički priručnik
Korisnički priručnik
Korisnički priručnik
Korisnički priručnik

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

Prednja strana kućišta

  1. Zvučnik 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: 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žnji dio kućišta

  1. Gumb za resetiranje: Koristi se za hard reset ESP8266-07 IoT uređaja.
  2. Gumb za bljeskalicu: Kada se koristi zajedno s tipkom za poništavanje, omogućuje ponovno bljeskanje 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 odvrtanja kućišta kako biste dobili pristup ESP8266-07 radi ponovnog programiranja. Pinovi za programiranje ESP8266-07 izvedeni su na vanjski programski priključak. Slika 3 je programski adapter.
  5. Zelena LED: Ovo je svjetlo IoT sustava i koristi se za označavanje dijagnostičkog statusa uređaja te pokretanje i tijekom rada.
  6. Vanjski osjetnik temperature/vlage (AM2320)
  7. Utor za SD karticu: Sadrži sve konfiguracijske/sigurnosne podatke zajedno sa stranicama web poslužitelja.
  8. 2,1 mm utičnica za napajanje 6vdc

Korak 2: Pregled kruga

Pregled kruga
Pregled kruga
Pregled kruga
Pregled kruga

Uređaj Retro Speech Synth sastoji se od 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ćuje izravno lemljenje ESP8266-07/12/12E/13 ili 0,1 utičnih utičnica s nosačem ESP8266 prijenosne ploče.

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

Spajanje na ploču postiže 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 na brodskoj regulaciji opskrbe. Alternativno, ako je potreban veći kapacitet struje, vanjski 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 izravan pin za podršku kompatibilnosti pinova za standardnu PCB SD karticu s podrškom od 3v3 ili 5v.

Retro govorna sintetička ploča

Upravljanjem ovom pločom upravlja se putem I2C 5v kompatibilne veze putem J1, J5 ili J6, 4-smjernog JST/Molex-a, 8-smjernog DIL IDC ili 8-smjernog IDC konektora za vrpcu.

U2 MPC23017 pruža paralelno sučelje I2C za U3 SP0256-AL2 i LED D1 (zeleno), D2 (crveno) i D3 (plavo). Izlaz Speech Synth -a prenosi se na audio pojačalo CR1 TBA820M putem analognog ulaza RV1 ili digitalnog ulaza U1 MCP4561.

Digitalnim loncem U1 također se upravlja putem I2C kompatibilnog s 5v.

Napomena: Uređaj ESP8266-07 odabran je jer ima integrirani IPX RF priključak 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 koji se nalaze na aluminijskoj podlozi kućišta.

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

Korak 4: Izrada

Izrada
Izrada
Izrada
Izrada
Izrada
Izrada

Slika 1 prikazuje raspored svih montažnih dijelova u Haynesovom ručnom stilu prije konačne montaže.

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

Korak 5: Pregled softverskog sustava

Pregled softverskog sustava
Pregled softverskog sustava
Pregled softverskog sustava
Pregled softverskog sustava

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 pohranu 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 s vašom WiFi mrežom IoT (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, to su lokalno poslužene web stranice dostupne preko web preglednika dopuštajući 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 posrednikom MQTT. Podaci poslani putem 'Početna stranica za konfiguraciju sinhronizacije govora' zapisuju se u ovu datoteku ('secvals.txt').
  • Podaci o kalibraciji: Podaci sadržani u datotekama ('calvals1.txt' i 'calvals2.txt') koriste se za kalibriranje ugrađenih senzora temperature/vlažnosti ako je potrebno. Konstante kalibracije mogu se zapisati na IoT uređaj putem MQTT naredbi iz MQTT brokera ili ponovnim bljeskanjem SD kartice. 'calvals1.txt' odnosi se 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 odgovore sustava, poput početne razine digitalne glasnoće, automatske najave 'spreman za sustav' na pretplati na posrednika MQTT itd.

mDNS poslužitelj

Ova se funkcija poziva kada se IoT uređaj nije uspio povezati s vašom WiFi mrežom kao WiFi postajom 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 ispisane na naljepnici pričvršćenoj na okvir) izravno u URL traku preglednika, nakon čega biste primili stranicu za prijavu 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, no s mDNS poslužiteljem koji je pokrenut morate unijeti samo ljudsko ime 'SPEECHSVR.local' u URL traku preglednika kako biste pogledajte "Početna stranica za konfiguraciju sinhronizacije govora".

MQTT klijent

MQTT klijent pruža svu potrebnu funkcionalnost za; spojite se na svog MQTT brokera IoT mreže, pretplatite se na teme po svom izboru i objavite korisni teret na određenu temu. Ukratko, pruža osnovnu funkcionalnost IoT -a.

HTTP web poslužitelj

Ovaj web poslužitelj 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 s WiFi mrežom koju pruža pristupna točka, prisutnost HTTP web poslužitelja omogućuje vam izravno povezivanje s uređajem i promjenu njegove konfiguracije korištenjem HTTP web preglednika čija je svrha posluživanje 'Konfiguracije 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 s WiFi mrežom i posrednikom MQTT, ako mu se pristupi, HTTP web poslužitelj automatski će posluživati HTTP web stranicu dopuštajući ograničenu kontrolu IoT uređaja da izgovara izbor fiksnih fraza i mogućnost 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 pomoću parametara u datoteci sigurnosnih informacija, bez toga vaš IoT uređaj neće biti u mogućnosti pretplatiti se/objaviti na posredniku MQTT.

WiFi pristupna točka

Sposobnost da postanete WiFi pristupna točka način je na koji vam IoT uređaj omogućuje povezivanje s njim i unošenje promjena u konfiguraciju putem WiFi postaje i preglednika (poput Safarija na Apple iPadu). 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 knjižnice navedene u nastavku u koraku 12, Korištene reference. Ako niste sigurni kako instalirati Arduino knjižnicu, 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. Tijekom ovog stanja stranica za konfiguraciju je vidljiva

  • U ČEKANJU SZ

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

  • MQTT U ČEKANJU

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

  • AKTIVAN

    Ovo je normalno operativno stanje uneseno nakon što se uspostavi i WiFi mrežna veza i veza posrednika MQTT. U tom se stanju temperatura, indeks topline i vlaga na IoT Retro Speech Synthesis Device uređaju redovito objavljuju u MQTT posredniku. U tom je stanju 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;

  • 1. MQTT posrednička IP adresa. U decimalnom obliku s točkama AAA. BBB. CCC. DDD
  • 2. MQTT brokerska luka. U cjelobrojnom obliku.
  • 3. MQTT posrednik pokušava uspostaviti vezu prije prelaska iz STA načina u AP način. U cjelobrojnom obliku.
  • 4. SSID WiFi mreže. Tekst u slobodnom obliku.
  • 5. lozinka WiFi mreže. Tekst u slobodnom obliku.

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 spoji na ovu pristupnu točku, 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 s posrednikom MQTT također je moguće 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ćuje osnovnu kontrolu govora. Slike 3, 4 i 5 prikazuju dostupne web stranice.

Otklanjanje pogrešaka korisnika

Tijekom redoslijeda pokretanja, zeleni sustav IoT uređaja na stražnjoj strani kućišta daje sljedeće povratne informacije o otklanjanju pogrešaka;

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

Funkcionalnost IoT uređaja za sintezu govora u retroaktivnom stanju

Kad 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 kako bi korisniku predstavio HTTP ili MQTT sučelje, besprijekorno servisirao svoj ugrađeni govorni procesor s fonemima na zahtjev i objavio lokalne parametrijske vrijednosti okoline preko MQTT-a.

Sveobuhvatan popis svih pretplata na teme i publikacija, uključujući vrijednosti korisnog tereta, uključen je u izvorni kod.

Korak 7: Kalibracija senzora

Kalibracija senzora
Kalibracija senzora

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

Sadržaj ovih datoteka je konstanta kalibracije kako je gore prikazano na slici 1.

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

Ove konstante umjeravanja koriste se za podešavanje očitanja dobivenih s dva senzora kako bi se uskladile s referentnim uređajem. Postoji još jedna vrijednost koja definira strategiju izvješćivanja za svaki uređaj, a dolje je opisana zajedno s postupkom za kalibraciju senzora.

Strategija izvještavanja

Ovaj parametar određuje kako daljinski osjetnik izvještava o lokalnim parametarskim promjenama okoline. Ako je odabrana vrijednost 0, daljinski osjetnik će objaviti svaku promjenu temperature ili vlažnosti koju vidi svaki put kad 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ćuje optimizaciju MQTT mrežnog prometa. Valja napomenuti da se podaci o temperaturi i vlažnosti s DHT22 očitavaju naizmjenično zbog ograničenja senzora.

Kalibracija temperature

Za kalibriranje osjetnika 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 senzora su u Celzijevim stupnjevima.

Kalibracija vlažnosti

Kako ne posjedujem sredstva za točno bilježenje ili čak kontrolu lokalne vlažnosti okoline, za kalibriranje senzora upotrijebio 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 izvrstan č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 (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ćuje jednostavno uspoređivanje kao na slici 2 gore s MQTTSpy.

Ovaj je projekt prva instanca u kojoj jedan uređaj sadrži više izvora s istom vrstom publikacije. tj. Dva senzora temperature/vlažnosti, iz unutarnjih 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 softver koristio sam tvrdo kodirane nizove tema s fiksnim, ugrađenim numeričkim identifikatorima za svaki uređaj, za razliku od dinamičkog generiranja tema tijekom izvođenja kako bih uštedio na RAM -u i održao performanse visokim.

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

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

Otklanjanje pogrešaka i pronalaženje grešaka
Otklanjanje pogrešaka i pronalaženje grešaka

Općenito, za svoje hobi projekte, gdje je to moguće, nastojim izgraditi reprezentativni prototip hardvera na temelju kojeg se softver razvija. Rijetko imam problema pri integraciji softvera u konačni hardver platforme.

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

Nakon početnog ispravljanja pogreš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 PC -a Speech Synth. Vidi gornju sliku 1.

Na tragovima se jasno vidi 'zub pile'/eksponencijalni rub 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 okolo" paralelno sam usporedio dva smt otpornika R12 i R13 s 10Ks kako bih dobio 4K7 i zasigurno je govorni sintetičar "oživio"

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

Korisni savjet i vrijedan zapamtiti 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šten 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). Budući da je ovo ručni postupak, može napredovati i biti sklon pogreškama kako razvoj koda napreduje, iako ručno izvršavanje omogućuje 100% pokrivenost.

MQTTSpy je odabran za ručno testiranje jer je izvrstan alat za ručno oblikovanje zadanog tereta i njegovo objavljivanje na bilo kojoj temi s lakoćom. Također prikazuje jasan dnevnik s vremenskim žigom koji je vrlo koristan za otklanjanje pogrešaka (slika 3 gore).

Drugi, automatizirani pristup usvojen je jer je izvorni kod postao složeniji (> 3700 redaka). Povećana složenost znači duže cikluse ručnog testiranja i složenija ispitivanja. 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 automatizirano testiranje. Potpuna kopija automatiziranih testova korištenih u ovom Instructableu dostupna je ovdje.

Videozapis rada automatskog niza ispitivanja prikazan je gore. Niz izvršava sljedeće korake;

  • Automatizirano putem MQTT -a
    • Spojite 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 Digitalni lonac
    • Govorite koristeći foneme
    • Govorite pomoću heksadecimalnih kodova za foneme
    • Govorite pomoću kodova za popravke
    • Malo zabave dr. Who -a 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"
    • Posjedujte HTTP poslužitelj

      • Pojedinosti 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 i bušilicama itd. Posebno za rešetku zvučnika, mislim da je ishod estetski ugodan i upakiran u lijepo, malo kućište. Mogao sam ga smanjiti, ali bilo bi potrebno otići na jednu PCB i namjerno sam je podijelio na dvije kako bih kasnije mogao ponovno koristiti PCB-e za druge projekte. Dakle, to je sretan kompromis.

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

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

Nisam uspio implementirati naredbu riječi ('WFD/SpeechTH/1/Word/Command') jer mi je ponestalo vremena i morao sam nastaviti dalje. Možda ću ovo ponovno posjetiti ako i kad 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 Speech Synthesis Device (ovo sadrži kopiju svega)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Napisao: Nick O'Leary
  • Svrha: Omogućuje uređaju objavljivanje ili pretplatu na teme o MQTT -u kod danog brokera
  • S:

DHT.h

  • Napisao: Adafruit
  • Namjena: Arduino knjižnica za DHT11DHT22, itd. Senzore temperature i vlažnosti
  • S:

Adafruit_AM2320.h/Senzor Adafruit.h

  • Napisao: Adafruit
  • Namjena: Arduino knjižnica za AM2320, itd. Senzor temperature i vlage
  • S:

MCP4561_DIGI_POT.h

  • Napisao: Steve Quinn
  • Namjena: Arduino knjižnica za digitalni potenciometar MCP4561
  • S:

Adafruit_MCP23017.h

  • Napisao: Steve Quinn
  • Svrha: Arduino knjižnica za MCP23017 I2C Port Expander. Ovo je vilica GITHub iz Adafruit-MCP23017-Arduino-Library, Adafruit.
  • S:

Za zabavu

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

Proizvodnja PCB -a

https://jlcpcb.com/

Instaliranje dodatnih Arduino knjižnica

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

Tehnički list SP0256-AL2

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

Trgovina govornim čipovima

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

Arduino natjecanje 2019
Arduino natjecanje 2019
Arduino natjecanje 2019
Arduino natjecanje 2019

Drugoplasirani na Arduino natjecanju 2019

Preporučeni: