Kazalo:

Retro sinteza govora. Del: 12 IoT, Domača avtomatizacija: 12 korakov (s slikami)
Retro sinteza govora. Del: 12 IoT, Domača avtomatizacija: 12 korakov (s slikami)

Video: Retro sinteza govora. Del: 12 IoT, Domača avtomatizacija: 12 korakov (s slikami)

Video: Retro sinteza govora. Del: 12 IoT, Domača avtomatizacija: 12 korakov (s slikami)
Video: Брайан Китинг и Ли Кронин: Жизнь во Вселенной 2024, November
Anonim
Image
Image
Retro sinteza govora. Del: 12 IoT, Domača avtomatizacija
Retro sinteza govora. Del: 12 IoT, Domača avtomatizacija

Ta članek je 12. v nizu o navodilih za avtomatizacijo doma, ki dokumentirajo, kako ustvariti in vključiti IoT Retro Speech Synthesis Device v obstoječi sistem za avtomatizacijo doma, vključno z vso potrebno programsko opremo, ki omogoča uspešno uvajanje v domačem okolju.

Na sliki 1 je prikazana dokončana naprava za sintetiziranje govora IoT, na sliki 2 pa so prikazani vsi sestavni deli, uporabljeni v prototipu, ki so bili v obliki faktorja zmanjšani za vstop v končni izdelek.

Video prikazuje napravo v akciji (med testiranjem).

Uvod

Kot je omenjeno zgoraj, ta Instructable podrobno opisuje, kako narediti IoT Retro Speech Synchhesis Device in temelji na splošnih instrumentih SP0256-AL2.

Njegov primarni namen je dodati sintezo glasu "stare šole" v omrežje IoT. Zakaj bi morda vprašali "stara šola"? No, ker sem bil nekje v 80. letih, ko so bile te stvari prvič izdelane, in eno sem povezal z mojim BBC Micro, tako da zame obstaja neka stopnja nostalgije okoli SP0256-AL2.

Raje imam izziv poskušati ugotoviti, kaj zares govori ta Dalekov zveneči glas, kot pa poslušanje dulcetnih tonov hipsterskega amazonskega odmeva ali Sirija. Kje je izziv v tem, da vas vprašam?

Oh, da ne omenjam, da imam naokoli tudi "obremenitev vrečk" IC "SP0256-AL2".

Naprava lahko odčita tudi lokalno temperaturo in vlago, zato dodatno razširi okolje, ki ga uporablja moja obstoječa infrastruktura interneta stvari, ki se povezuje z omrežjem IoT na osnovi MQTT/OpenHAB, ki je podrobno opisano v tej seriji o avtomatizaciji doma (HA), pri čemer temelji na od tu uporabljeni kodi.

V središču je ESP8266-07, ki je odgovoren za komunikacijo MQTT in nadzoruje vse sistemske funkcije (dostop do kartice SD, nadzor LED, zaznavanje temperature/vlažnosti, nadzor glasnosti, sinteza govora). Naprava je v celoti nastavljiva prek besedilnih datotek, shranjenih na lokalno kartico SD, čeprav je mogoče kalibracijske in varnostne parametre omrežja programirati tudi prek oddaljenih publikacij MQTT.

Katere dele potrebujem?

Materiale si oglejte tukaj

Kakšno programsko opremo potrebujem?

  • Arduino IDE 1.6.9,
  • Arduino IDE, konfiguriran za programiranje ESP8266-07 (enako kot ta). Nato konfigurirajte IDE, kot je navedeno v podrobnem opisu na skici programske opreme tukaj,
  • Python v3.5.2, če želite uporabiti zmožnost samodejnega testiranja, podrobnosti tukaj

Katera orodja potrebujem?

  • Mikroskop najmanj x3 (za spajkanje SMT),
  • Orodje za stiskanje priključkov Molex (za priključke JST),
  • Spajkalnik SMD (s peresom za tekoči fluks in spajkalnikom s fluksiranim polnjenjem),
  • Izvijači (različni),
  • Toplotna pištola,
  • Vrtalniki (različni),
  • Ročni pripomoček za umivalnik,
  • Datoteke (različne),
  • Dremel (različni koščki),
  • Robusten primež (majhen in velik, kot črn in dekliški sodelavec),
  • Skalpel,
  • Vernier čeljusti (uporabljajo se za merjenje izdelave in uporabne za dimenzioniranje komponent PCB),
  • Ključi in vijaki za matice (različni),
  • Močna pinceta (za spajkanje SMT),
  • Mladinska žaga,
  • Vrtalnik (z različnimi svedri),
  • Drobne klešče (s konicami in nosom),
  • Rezalniki za splakovanje,
  • DMM z zvočnim preverjanjem kontinuitete,
  • Dvokanalni digitalni obseg (priročno za odpravljanje napak)

Kakšne veščine potrebujem?

  • Veliko potrpljenja,
  • Velika mera ročne spretnosti in odlična koordinacija roke/oči,
  • Odlične sposobnosti spajkanja,
  • Odlične sposobnosti izdelave,
  • Sposobnost vizualizacije v treh dimenzijah,
  • Nekaj znanja o razvoju programske opreme z "C" (če želite razumeti izvorno kodo),
  • Nekaj znanja o Pythonu (kako namestiti in zagnati skripte, če želite uporabiti samodejno testiranje),
  • Poznavanje Arduina in njegove IDE,
  • Dobro poznavanje elektronike,
  • Nekaj razumevanja vašega domačega omrežja.

Zajete teme

  • Navodila za uporabo
  • Pregled vezja
  • Izdelava in montaža PCB
  • Izdelava
  • Pregled sistema programske opreme
  • Pregled programske opreme
  • Kalibracija senzorja
  • Konvencija o poimenovanju tem MQTT
  • Odpravljanje napak in iskanje napak
  • Testiranje oblikovanja
  • Zaključek
  • Uporabljene reference

Serija LinksTo 11. del: namizna konzola IoT. Del: 11 IoT, Domača avtomatizacija

Korak: Uporabniški priročnik

Navodila za uporabo
Navodila za uporabo
Navodila za uporabo
Navodila za uporabo
Navodila za uporabo
Navodila za uporabo

Slika 1 zgoraj prikazuje sprednji del sintetizatorja retro govora, slika 2 pa zadaj.

Sprednji del ohišja

  1. Zvočnik na žaru
  2. 3,5 mm priključek za slušalke: glavni zvočnik je onemogočen, ko je vstavljen priključek 3,5 mm.
  3. Rdeča LED: Ta lučka sveti med izgovarjanjem besede, ko je bil govor sprožen prek zahteve
  4. Modra LED: Ta LED sveti, medtem ko se beseda izgovarja, ko je bil govor sprožen prek zahteve MQTT IoT.

Ohišje zadaj

  1. Gumb za ponastavitev: Uporablja se za trdo ponastavitev naprave IoT ESP8266-07.
  2. Gumb za bliskavico: če ga uporabljate skupaj z gumbom za ponastavitev, lahko znova utripate ESP8266-07.
  3. Vtič antene WiFi (vtič SMA): Za zunanjo anteno WiFi, ki daje najmanjšo dušenje RF poti, saj je zapiralo aluminijasto.
  4. Zunanja vrata za programiranje: Če želite odstraniti potrebo po odvijanju ohišja, da dobite dostop do ESP8266-07 za namene ponovnega programiranja. Programski zatiči ESP8266-07 so bili izvlečeni na zunanja programska vrata. Slika 3 je programski vmesnik.
  5. Zelena LED: To je vodnik sistema IoT in se uporablja za prikaz diagnostičnega stanja naprave ter zagon in med delovanjem.
  6. Zunanji senzor temperature/vlažnosti (AM2320)
  7. Reža za kartico SD: vsebuje vse konfiguracijske/varnostne podatke skupaj s stranmi spletnega strežnika.
  8. 2,1 mm napajalna vtičnica 6vdc

2. korak: Pregled vezja

Pregled vezja
Pregled vezja
Pregled vezja
Pregled vezja

Naprava Retro Speech Synth vsebuje dva tiskana vezja;

  • RetroSpeechSynthIoTBoard: To je generična, za večkratno uporabo ESP8266-07/12/12E/13 PCB
  • RetroSpeechSynthBoard: To je generično tiskano vezje SP0256-AL2

Retro Speech Synth IoT plošča

Ta plošča omogoča bodisi neposredno spajkanje vtičnic ESP8266-07/12/12E/13 ali 0,1 , ki podpirajo nosilno tiskano vezje ESP8266.

Plošča je bila zasnovana za razširitev svojega V/I preko I2C povezave in lahko podpira napajalne ravni 3v3 ali 5v prek Q1, Q2, R8-13.

Povezava s ploščo je dosežena z enim od dveh glav J2 in J4, 8-smernim trakom DIL IDC ali 5-smernim JST/Molex.

Določbe U2 in U3 3.3v in 5v o krovni oskrbi. Če pa je potrebna večja tokovna zmogljivost, se lahko prek priključkov J10 oziroma J11 priključijo izvenkrmilni regulatorji serijskega krmiljenja.

Konektorja J1 in J3 ponujata podporo za zunanje kartice SD prek SPI. J1 je bil zasnovan za 8-smerni Molex, J3 pa ima neposreden zatič za podporo združljivosti zatičev za tiskano vezje SD kartice SD s podporo 3v3 ali 5v.

Retro govorna sintetična plošča

Nadzor te plošče je prek I2C 5v združljive povezave preko J1, J5 ali J6, 4-smernega JST/Molex, 8-smernega DIL IDC ali 8-smernega IDC tračnega priključka.

U2 MPC23017 zagotavlja paralelni vmesnik I2C za U3 SP0256-AL2 in LED D1 (zelena), D2 (rdeča) in D3 (modra). Izhod govornega sintetizatorja se napaja z avdio ojačevalnikom CR1 TBA820M prek analognega lonca RV1 ali digitalnega lonca U1 MCP4561.

Digitalni lonček U1 se upravlja tudi prek 5v skladnega I2C.

Opomba: Naprava ESP8266-07 je bila izbrana, saj ima vgrajen IPX RF konektor, ki omogoča dodajanje zunanje WiFi antene v aluminijasto ohišje.

Korak: Izdelava in montaža tiskanih vezij

Izdelava in montaža PCB
Izdelava in montaža PCB
Izdelava in montaža PCB
Izdelava in montaža PCB
Izdelava in montaža PCB
Izdelava in montaža PCB
Izdelava in montaža PCB
Izdelava in montaža PCB

Na slikah 1 in 2 sta prikazana zaključena in žičnata sklopa tiskanih vezij, ki se nahajajo na aluminijasti podlagi ohišja.

Dva tiskana vezja sta bila zasnovana z uporabo Kicada v4.0.7, proizvajalca JLCPCB, ki sem ga sestavil in prikazan zgoraj na slikah od 3 do 13.

4. korak: Izdelava

Izdelava
Izdelava
Izdelava
Izdelava
Izdelava
Izdelava

Slika 1 prikazuje Haynesovo ročno postavitev vseh montažnih delov pred končno montažo.

Slike 2… 5 prikazujejo različne posnetke med izdelavo ohišja z minimalnimi razdaljami.

5. korak: Pregled sistema programske opreme

Pregled sistema programske opreme
Pregled sistema programske opreme
Pregled sistema programske opreme
Pregled sistema programske opreme

Ta IoT Retro Speech Synthesis Device vsebuje šest ključnih programskih komponent, kot je prikazano na sliki 1 zgoraj.

SD kartice

To je zunanji sistem za shranjevanje bliskovnih sporočil SD SPI in se uporablja za shranjevanje naslednjih informacij (glej sliko 2 zgoraj);

  • Ikone in "Domača stran za nastavitev sinhronizacije govora" index.htm: vroči jo naprava IoT, ko se ne more povezati z vašim omrežjem WiFi IoT (običajno zaradi napačnih varnostnih podatkov ali prve uporabe) in uporabniku nudi sredstva daljinskega konfiguriranja senzorjev brez potrebe po ponovnem utripanju nove vsebine SD. Prav tako vsebuje indekse1.htm, mqtt.htm in sp0256.htm, to so lokalno strežene spletne strani, dostopne prek spletnega brskalnika, ki omogočajo omejen nadzor nad sintetizatorjem govora. prek
  • Varnostni podatki: Ta vsebuje podatke, ki jih naprava IoT vklopi za povezavo z vašim omrežjem WiFi IoT in posrednikom MQTT. Podatki, poslani prek 'Domače strani za nastavitev sinhronizacije govora', so zapisani v to datoteko ('secvals.txt').
  • Podatki o umerjanju: Podatki v datotekah („calvals1.txt“in „calvals2.txt“) se uporabijo za umerjanje senzorjev temperature/vlažnosti na vozilu, če je to potrebno. Kalibracijske konstante lahko na napravo IoT zapišete z ukazi MQTT posrednika MQTT ali s ponovnim utripanjem kartice SD. 'calvals1.txt' se nanaša na senzor AM2320 in 'calvals2.txt' na DHT22.
  • Sistemske vrednosti, ki jih lahko konfigurira uporabnik: Podatki v tej datoteki ('confvals.txt'), ki jih izbere uporabnik, nadzorujejo določene sistemske odzive, na primer začetno stopnjo digitalne glasnosti, samodejno napoved 'sistemsko pripravljeno' pri naročnini na posrednika MQTT itd.

strežnik mDNS

Ta funkcija se aktivira, ko se naprava IoT ne poveže z vašim omrežjem WiFi kot postajo WiFi in je namesto tega postala dostopna točka WiFi, podobna domačemu usmerjevalniku WiFi. V primeru takšnega usmerjevalnika se običajno povežete z njim tako, da vnesete naslov IP, na primer 192.168.1.1 (običajno natisnjen na nalepki, pritrjeni na polje), neposredno v vrstico URL brskalnika, nakar boste prejeli stran za prijavo uporabniško ime in geslo za konfiguracijo naprave. Za ESP8266-07 v načinu AP (način dostopne točke) je naprava privzeto nastavljena na naslov IP 192.168.4.1, vendar pri strežniku mDNS morate v vrstico URL brskalnika vnesti le prijazno ime 'SPEECHSVR.local'. glejte "Domača stran za konfiguracijo sinhronizacije govora".

Odjemalec MQTT

Odjemalec MQTT nudi vso potrebno funkcionalnost za; povežite se s svojim posrednikom MQTT v omrežju IoT, se naročite na izbrane teme in objavite koristne podatke za določeno temo. Na kratko določa osnovno funkcionalnost IoT.

Spletni strežnik

Ta spletni strežnik ima dva namena;

  1. Če se naprava IoT ne more povezati z omrežjem WiFi, katerega SSID, P/W itd. Je določeno v datoteki varnostnih informacij, shranjenih na kartici SD, bo naprava postala dostopna točka. Ko se povežete z omrežjem WiFi, ki ga omogoča dostopna točka, vam prisotnost spletnega strežnika HTTP omogoča neposredno povezavo z napravo in spreminjanje njene konfiguracije z uporabo spletnega brskalnika HTTP, katerega namen je postreči »Konfiguracijo sinhronizacije govora«. Spletna stran Domača stran, ki je shranjena tudi na kartici SD.
  2. Ko se naprava IoT Retro Speech Synthhesis Device poveže z omrežjem WiFi in posrednikom MQTT, če do nje dostopa, bo spletni strežnik HTTP samodejno postregel s spletno stranjo HTTP, kar omogoča omejen nadzor nad napravo IoT, da lahko izbere določene fraze in zmožnost ciklirajte dve sprednji rdeči in modri LED.

WiFi postaja

Ta funkcija daje napravi IoT možnost, da se poveže z domačim omrežjem WiFi z uporabo parametrov v datoteki varnostnih informacij, brez tega se vaša naprava IoT ne bo mogla naročiti/objaviti pri posredniku MQTT.

Dostopna točka WiFi

Sposobnost, da postanete dostopna točka WiFi, je sredstvo, s katerim vam naprava IoT omogoča povezavo z njo in spreminjanje konfiguracije prek postaje WiFi in brskalnika (na primer Safari na iPadu Apple). Ta dostopna točka oddaja SSID = "SPEECHSYN" + zadnjih 6 številk naslova MAC naprave IoT. Geslo za to zaprto omrežje se domiselno imenuje "GESLO"

6. korak: Pregled programske opreme

Pregled programske opreme
Pregled programske opreme
Pregled programske opreme
Pregled programske opreme
Pregled programske opreme
Pregled programske opreme

Preambula

Za uspešno sestavljanje te izvorne kode boste potrebovali lokalno kopijo kode in knjižnice, opisane spodaj v 12. koraku, Uporabljene reference. Če niste prepričani, kako namestiti knjižnico Arduino, pojdite sem.

Pregled

Programska oprema uporablja state-machine, kot je prikazano na sliki 1 zgoraj (celotna kopija vira v mojem skladišču GitHub tukaj). Spodaj je opisanih 5 glavnih stanj;

  • V

    To stanje inicializacije je prvo stanje, vneseno po vklopu

  • NOCONFIG

    To stanje se vnese, če po vklopu zazna neveljavno ali manjkajočo datoteko secvals.txt. V tem stanju je stran za konfiguracijo vidna

  • V ČAKANJU SZ

    To stanje je prehodno, vneseno, medtem ko ni omrežne povezave WiFi

  • PRIČAKAJ MQTT

    To stanje je prehodno, vnese se po vzpostavljeni povezavi z omrežjem WiFi, medtem ko v tem omrežju ni povezave z posrednikom MQTT

  • AKTIVNO

    To je običajno stanje delovanja, ki je vneseno, ko sta vzpostavljeni tako omrežna povezava WiFi kot povezava posrednika MQTT. V tem stanju se temperatura, toplotni indeks in vlažnost na IoT Retro Speech Synthesis Device redno objavljajo posredniku MQTT. V tem stanju je vidna domača stran govora Synth

Dogodki, ki nadzorujejo prehode med stanji, so opisani na sliki 1 zgoraj. Prehode med državami urejajo tudi naslednji parametri SecVals;

  • 1. IP naslov posrednika MQTT. V decimalni obliki s pikami AAA. BBB. CCC. DDD
  • 2. posredniško pristanišče MQTT. V celobrojni obliki.
  • Tretja povezava posrednika MQTT poskuša vzpostaviti pred prehodom iz načina STA v način AP. V celobrojni obliki.
  • 4. SSID omrežja WiFi. Besedilo v prosti obliki.
  • 5. geslo za omrežje WiFi. Besedilo v prosti obliki.

Kot je navedeno zgoraj, če se naprava IoT ne more povezati kot postaja WiFi z omrežjem WiFi, katere SSID in P/W sta definirana v secvals.txt, shranjenem na kartici SD, bo naprava IoT postala dostopna točka. Ko bo povezan s to dostopno točko, bo služil na "Domači strani za konfiguracijo sinhronizacije govora", kot je prikazano zgoraj na sliki 2 (z vnosom "SPEECHSVR.local" ali 192.168.4.1 v naslovno vrstico brskalnikov). Ta domača stran omogoča ponovno konfiguracijo IoT Retro Speech Synchhesis Device prek brskalnika

Oddaljeni dostop, medtem ko je v stanju AKTIVNO

Ko ste povezani z posrednikom MQTT, je možno tudi ponovno kalibrirati in znova konfigurirati napravo prek publikacij tem MQTT. Datoteka calvals.txt ima dostop R/W in secvals.txt ima izpostavljen dostop samo za pisanje.

Kot že omenjeno, je v aktivnem načinu mogoče dostopati do govora prek vmesnika HTTP tako, da v naslovno vrstico brskalnikov vnesete »SPEECHSVR.local« ali 192.168.4.1. Ta vmesnik, ki temelji na HTTP, omogoča osnovni nadzor nad sintetizatorjem govora. Slike 3, 4 in 5 prikazujejo razpoložljive spletne strani.

Odpravljanje napak uporabnikov

Med zagonskim zaporedjem zelena naprava IoT naprave, ki vodi na zadnji strani ohišja, daje naslednje povratne informacije o odpravljanju napak;

  • 1 Kratek utrip: Na kartici SD ni datoteke Config (secvals.txt)
  • 2 Kratki utripi: Naprava IoT se poskuša povezati z omrežjem WiFi
  • Neprekinjeno osvetljevanje: Naprava IoT se poskuša povezati z posrednikom MQTT
  • Izklopljeno: naprava je aktivna.

Funkcija naprave IoT Retro Synthesis Speech Synthesis v ACTIVE stanju

Ko je v stanju ACTIVE, ESP8266 vstopi v stalno zanko, ki kliče naslednje funkcije; timer_update (), checkTemperatureAndHumidity () in handleSpeech (). Neto rezultat je bil zasnovan tako, da uporabniku predstavi vmesnik HTTP ali MQTT, brezhibno servisira vgrajeni govorni procesor s fonemi na zahtevo in objavi lokalne parametrične vrednosti okolja prek MQTT.

V izvorni kodi je obsežen seznam vseh naročnin na teme in publikacij, vključno z vrednostmi koristnega bremena.

7. korak: Umerjanje senzorja

Kalibracija senzorja
Kalibracija senzorja

Ko se naprava IoT vklopi, se s kartice SD kot del zagonskega zaporedja prebereta dve datoteki z imenom 'cavals1.txt' in 'cavals2.txt'.

Vsebina teh datotek je kalibracijska konstanta, kot je prikazano zgoraj na sliki 1.

  1. 'cavals1.txt': Uporablja ga zunanji AM2320
  2. 'cavals2.txt': Uporablja ga notranji DHT22

Te umeritvene konstante se uporabljajo za prilagoditev odčitkov, pridobljenih s senzorjev, da jih uskladijo z referenčno napravo. Obstaja še ena vrednost, ki opredeljuje strategijo poročanja za vsako napravo in je opisana spodaj skupaj s postopkom za umerjanje senzorjev.

Strategija poročanja

Ta parameter določa, kako daljinski senzor poroča o vseh lokalnih parametričnih spremembah okolja. Če je izbrana vrednost 0, bo daljinski senzor objavil vsako spremembo temperature ali vlažnosti ob vsakem branju ustreznega senzorja (približno vsakih 10 sekund). Vsaka druga vrednost bo objavo spremembe odložila za 1… 60 minut. Sprememba tega parametra omogoča optimizacijo omrežnega prometa MQTT. Upoštevati je treba, da se podatki o temperaturi in vlažnosti iz DHT22 berejo izmenično zaradi omejitev senzorja.

Umerjanje temperature

Za umerjanje temperaturnega senzorja sem sledil istemu postopku, kot je opisan tukaj, korak 4, spet z uporabo preproste relacije y = mx+c. Kot referenčno napravo sem uporabil IoT Temperature, Humidity Sensor #1. Vrednosti senzorja so v stopinjah Celzija.

Kalibracija vlažnosti

Ker nimam sredstev za natančno beleženje ali celo nadzor lokalne vlažnosti okolja, sem za kalibracijo senzorja uporabil podoben pristop kot pri zgornjem koraku 4, pri čemer sem spet uporabil senzor #1 kot referenco. Kakorkoli že rečeno, sem pred kratkim na spletu našel odličen članek, ki opisuje, kako umeriti senzorje vlažnosti. Ta pristop bom morda poskusil kdaj v prihodnosti. Vrednosti senzorja so v %starosti relativne vlažnosti.

8. korak: Konvencija o poimenovanju tem MQTT

Konvencija o poimenovanju tem MQTT
Konvencija o poimenovanju tem MQTT
Konvencija o poimenovanju tem MQTT
Konvencija o poimenovanju tem MQTT

Kot je bilo omenjeno v prejšnjem Instructable (tukaj), sem se ustavil pri konvenciji o poimenovanju tem, opisani na sliki 1 zgoraj.

Namreč, 'AccessMethod/DeviceType/WhichDevice/Action/SubDevice' Ni popoln, vendar omogoča uporabo uporabnih filtrov za ogled vseh izhodov senzorjev za dano parametrično temo, kar omogoča enostavno primerjavo, kot je na sliki 2 zgoraj, z MQTTSpy.

Ta projekt je prvi primer, ko ena naprava vsebuje več kot en izvorni vir iste vrste publikacije. tj. Dva senzorja temperature/vlažnosti, iz notranjih in zunanjih podnaprav.

Prav tako podpira razumno razširljive logične skupine funkcionalnosti znotraj določene naprave IoT.

Pri izvajanju teh tem v programski opremi sem uporabil trdo kodirane nizove tem s fiksnimi, vgrajenimi številskimi identifikatorji za vsako napravo, v nasprotju z dinamičnim ustvarjanjem tem med izvajanjem, da bi prihranili RAM in ohranili visoko zmogljivost.

Opomba: Če niste prepričani, kako uporabljati MQTTSpy, glejte tukaj 'Nastavitev posrednika MQTT. 2. del: IoT, domača avtomatizacija '

9. korak: Odpravljanje napak in iskanje napak

Odpravljanje napak in iskanje napak
Odpravljanje napak in iskanje napak

Na splošno za svoje hobi projekte, kjer je to mogoče, nagibam k izdelavi reprezentativnega prototipa strojne opreme, na podlagi katerega se razvija programska oprema, redko imam težave pri integraciji programske opreme v končno strojno opremo platforme.

Vendar sem ob tej priložnosti naletel na čudno občasno napako, pri kateri bi se nekateri fonemi slišali, drugi pa ne.

Po nekaj začetnih odpravljanju napak PCB -ja Speech Synth z uporabo Arduino Uno za pridobivanje fonemov in dokazovanje, da ta plošča deluje, sem se dotaknil linij I2C med PCB IoT in PCB Speech Synth. Glej sliko 1 zgoraj.

Na sledovih lahko jasno vidite "žagin zob"/eksponentni rob signala I2C.

To ponavadi kaže, da so vrednosti dviga I2C previsoke, kar preprečuje, da bi se omrežna napetost dovolj hitro obnovila v odprtem odtočnem krogu.

Kot "delo okrog" sem vzporedno z dvema smt vlečnima uporoma R12 in R13 z 10Ks dal 4K7 in zagotovo je govorni sintetičar "zaživel"

Ta vrsta napake je v nasprotju s tem, kar se lahko zgodi pri odpravljanju napak pri teh vrstah projektov. Na splošno večina modulov, ki temeljijo na I2C, kupljenih pri Ebayu, ponavadi prihaja z že nameščenimi vlečnimi elementi 10K ali 4K7. Če nameravate uporabiti> 5 modulov I2C, od katerih ima vsak 4K7 izvleke, je skupna obremenitev 940R, kar bo preveliko za izhodno stopnjo glavnega. Rešitev bi bila odstraniti lemljenje vseh, razen enega niza upogibnih uporov na vsakem modulu. Po možnosti tisti, ki je fizično najbolj oddaljen od poveljnika.

Koristni nasvet, ki ga je treba upoštevati pri načrtovanju elektronike z napravami I2C.

10. korak: Preizkusite zasnovo

Image
Image
Testiranje oblikovanja
Testiranje oblikovanja
Testiranje oblikovanja
Testiranje oblikovanja

Testiranje je potekalo po dveh metodologijah; Ročno in avtomatizirano.

Prva, ročna in na splošno uporabljena med začetnim razvojem kode je bila uporaba MQTT Spy za vadbo vseh razpoložljivih naročenih tem in preverjanje objavljenih odgovorov (prikazano na sliki 2 zgoraj). Ker je to ročni postopek, je lahko z razvojem kode dolgotrajen in nagnjen k napakam, čeprav ročna izvedba omogoča 100% pokritost.

MQTTSpy je bil izbran za ročno testiranje, ker je odlično orodje za ročno oblikovanje določenega tovora in ga z lahkoto objavi v kateri koli temi. Prikazuje tudi jasen dnevnik s časovnim žigom, ki je zelo uporaben za odpravljanje napak (slika 3 zgoraj).

Drugi, avtomatiziran pristop je bil sprejet, ko je izvorna koda postala bolj zapletena (> 3700 vrstic). Večja zapletenost pomeni daljše cikle ročnega testiranja in bolj zapletene teste. Za izboljšanje zanesljivosti, determinizma in kakovosti testov je bilo uporabljeno avtomatizirano testiranje prek vodje preskusa python (slika 1). O tem, kako je bilo uvedeno avtomatizirano testiranje, glejte 10. korak v tem navodilu. Celotna kopija avtomatiziranih testov, uporabljenih v tem navodilu, je na voljo tukaj.

Videoposnetek samodejnega preskusnega zaporedja v delovanju je prikazan zgoraj. Zaporedje izvede naslednje korake;

  • Avtomatizirano prek MQTT

    • Povežite se s hrbtenico MQTT in objavite "System Ready"
    • Vaja Zelena LED
    • Vaja Rdeča LED
    • Vaja Modra LED
    • Preverite delovanje digitalnega lonca
    • Govorite s pomočjo fonemov
    • Govorite s šestnajstiškimi kodami za foneme
    • Govorite s kodami za popravke
    • Malo zabave dr. Who in Daleksa.
  • Ročno prek
    • Vaja Modra LED
    • Vaja Rdeča LED
    • Izgovarjajte fiksne fraze "Steven Quinn", "System Ready" in "Hello World"
    • Poskrbite za strežnik
      • Podrobnosti o čipu za sintetiziranje govora
      • Podrobnosti o MQTT

11. korak: Zaključek

Zaključek
Zaključek

Čeprav je bilo potrebno veliko truda pri datotekah, vajah itd., Zlasti za rešetko zvočnikov, se mi zdi rezultat estetsko prijeten in zapakiran v lepo, majhno ohišje. Lahko bi ga zmanjšal, vendar bi moral iti na eno tiskano vezje in namerno sem ga razdelil na dva, da bi lahko pozneje ponovno uporabil tiskane vezje za druge projekte. Gre torej za srečen kompromis.

Programska oprema deluje dobro, naprava IoT že kar nekaj časa deluje brez težav.

Temperaturo in vlago sem spremljal prek Grafane in primerjal s sočasno locirano napravo. Obe okoljski vrednosti sta dobro povezani, kar pomeni, da je kalibracija smiselna (ali sta si vsaj podobni).

Pri izvajanju besednega ukaza ('WFD/SpeechTH/1/Word/Command') mi ni uspelo, ker mi je zmanjkalo časa in sem moral nadaljevati. Morda bom to ponovno obiskal, če in ko bom postavil bazo podatkov MySQL. Trenutno uporabljam InfluxDB.

12. korak: Uporabljene reference

Za sestavo tega Instructable so bili uporabljeni naslednji viri; Izvorna koda za IoT Retro Speech Synchhesis Device (ta vsebuje kopijo vsega)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Avtor: Nick O'Leary
  • Namen: napravi omogoča objavo ali naročanje na teme MQTT pri danem posredniku
  • Iz:

DHT.h

  • Avtor: Adafruit
  • Namen: Arduino knjižnica za DHT11DHT22 itd. Senzorje temperature in vlažnosti
  • Iz:

Adafruit_AM2320.h/Adafruit_Sensor.h

  • Avtor: Adafruit
  • Namen: Arduino knjižnica za AM2320 itd. Senzor za temperaturo in vlažnost
  • Iz:

MCP4561_DIGI_POT.h

  • Avtor: Steve Quinn
  • Namen: Knjižnica Arduino za digitalni potenciometer MCP4561
  • Iz:

Adafruit_MCP23017.h

  • Avtor: Steve Quinn
  • Namen: Knjižnica Arduino za razširjevalnik vrat MCP23017 I2C. To je vilica GITHub iz Adafruit-MCP23017-Arduino-Library, Adafruit.
  • Iz:

Za zabavo

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

Izdelava PCB

https://jlcpcb.com/

Namestitev dodatnih knjižnic Arduino

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

Kako preveriti in umeriti 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_e_m_e_m_e_e_m_e_m_e_m_e_m_e_m_e_e_m_e_70_e_m_e_e_m_e_m /

Tehnični list SP0256-AL2

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

Trgovina z govornimi žetoni

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

Natečaj Arduino 2019
Natečaj Arduino 2019
Natečaj Arduino 2019
Natečaj Arduino 2019

Podprvak na tekmovanju Arduino 2019

Priporočena: