Sisukord:

Retro kõne süntees. Osa: 12 asjade Interneti, koduautomaatika: 12 sammu (piltidega)
Retro kõne süntees. Osa: 12 asjade Interneti, koduautomaatika: 12 sammu (piltidega)

Video: Retro kõne süntees. Osa: 12 asjade Interneti, koduautomaatika: 12 sammu (piltidega)

Video: Retro kõne süntees. Osa: 12 asjade Interneti, koduautomaatika: 12 sammu (piltidega)
Video: ТРИ БЛЮДА НА НОВЫЙ ГОД 2024. Салат из капусты. Салат с Печенью! ЗАКУСКА С КАРТОШКОЙ И СЕЛЕДКОЙ 2024, Juuli
Anonim
Image
Image
Retro kõne süntees. Osa: 12 asjade Interneti, koduautomaatika
Retro kõne süntees. Osa: 12 asjade Interneti, koduautomaatika

See artikkel on 12. koduse automatiseerimise juhiste seerias, mis dokumenteerib, kuidas luua ja integreerida IoT Retro kõnesünteesi seadet olemasolevasse koduautomaatikasüsteemi, mis sisaldab kõiki vajalikke tarkvara funktsioone, et võimaldada koduses keskkonnas edukalt juurutada.

Joonisel 1 on valminud IoT kõnesüntesaator ja pildil 2 on näha kõik prototüübis kasutatud komponendid, mis on lõpptootesse minekuks vähendatud.

Video näitab seadet töökorras (testimise ajal).

Sissejuhatus

Nagu eespool mainitud, kirjeldatakse selles juhendis üksikasjalikult, kuidas teha IoT retro kõnesünteesi seadet ja see põhineb üldinstrumentidel SP0256-AL2.

Selle peamine eesmärk on lisada vana kooli häälsüntees IoT võrku. Miks võite küsida "vana kooli"? Noh, kuna ma olin umbes 80ndatel, kui neid asju esmakordselt toodeti, ja ühendasin ühe oma BBC Microga, nii et minu jaoks on SP0256-AL2 ümber teatud nostalgia.

Ma eelistan palju rohkem väljakutset, kui püüan aru saada, mida see Daleki kõlav hääl ütleb, kui kuulata hipsterliku Amazonase kaja või Siri tuimaid toone. Kus on väljakutse selles, et ma küsin?

Oh, ja rääkimata sellest, et mul on ka kotitäis SP0256-AL2 IC-sid.

Seade on võimeline lugema ka kohalikku temperatuuri ja niiskust, nii et see laiendab veelgi minu olemasoleva IoT -infrastruktuuri ümbritsevat mõõtevahendit MQTT/OpenHAB -põhise IoT -võrguga, mida kirjeldatakse selles koduautomaatika (HA) seerias, tuginedes siit võetud korduvkasutatavale koodile.

Selle südames on ESP8266-07, mis vastutab MQTT-side ja kõigi süsteemi funktsioonide (SD-kaardi juurdepääs, LED-juhtimine, temperatuuri/niiskuse tuvastamine, helitugevuse reguleerimine, kõnesüntees) eest. Seade on täielikult konfigureeritav tekstifailide kaudu, mis on salvestatud kohalikku SD -kaarti, kuigi kalibreerimist ja võrgu turvalisuse parameetreid saab programmeerida ka MQTT kaugväljaannete kaudu.

Milliseid osi ma vajan?

Materjalide nimekirja vaata siit

Millist tarkvara ma vajan?

  • Arduino IDE 1.6.9,
  • Arduino IDE on konfigureeritud programmeerima ESP8266-07 (sama mis see). Seejärel konfigureerige IDE, nagu on näidatud siinse tarkvarajoonise üksikasjalikus kirjelduses,
  • Python v3.5.2, kui soovite kasutada automaatset testimisvõimalust, vaadake üksikasju siit

Milliseid tööriistu ma vajan?

  • Mikroskoop vähemalt x3 (SMT jootmiseks),
  • Molexi pistiku pressimistööriist (JST pistikute jaoks),
  • SMD jootekolb (vedeliku vooliku ja pliiatsiga joodisega),
  • Kruvikeerajad (erinevad),
  • Soojuspüstol,
  • Puurid (erinevad),
  • Süvistatava käe tööriist,
  • Failid (erinevad),
  • Dremel (erinevad bitid),
  • Tugev pahe (väike ja suur, nagu mustanahaline töökaaslane),
  • Skalpell,
  • Vernier pidurisadulad (kasutatakse valmistamise mõõtmiseks ja kasulikud PCB komponentide suuruse määramiseks),
  • Mutrivõtmed ja mutrijuhid (erinevad),
  • Tugevad pintsetid (SMT jootmiseks),
  • Noorem rauasaag,
  • Puur (erinevate puuridega),
  • Peened tangid (terav ja ninaga),
  • Loputuslõikurid,
  • DMM koos kuuldava järjepidevuse kontrolliga,
  • Kahe kanaliga digitaalne ulatus (mugav signaalide silumiseks)

Milliseid oskusi mul vaja on?

  • Palju kannatust,
  • Suur käteosavus ja suurepärane käte/silmade koordinatsioon,
  • Suurepärased jootmisoskused,
  • Suurepärased valmistamisoskused,
  • Võimalus visualiseerida kolmes mõõtmes,
  • Teatud teadmised tarkvaraarendusest tähega „C” (kui soovite lähtekoodi mõista),
  • Mõned teadmised Pythoni kohta (kuidas skripte installida ja käivitada, kui soovite kasutada automaatset testimist),
  • Teadmised Arduino ja selle IDE kohta,
  • Häid teadmisi elektroonikast,
  • Mõningane arusaam teie koduvõrgust.

Kaetud teemad

  • Kasutusjuhend
  • Ahela ülevaade
  • PCB tootmine ja kokkupanek
  • Valmistamine
  • Tarkvara süsteemi ülevaade
  • Tarkvara ülevaade
  • Anduri kalibreerimine
  • MQTT teemade nimetamise konventsioon
  • Silumine ja vigade otsimine
  • Disaini testimine
  • Järeldus
  • Kasutatud viited

Seeria lingid 11. osa: IoT -töölaua konsool. Osa: 11 IoT, koduautomaatika

1. samm: kasutusjuhend

Kasutusjuhend
Kasutusjuhend
Kasutusjuhend
Kasutusjuhend
Kasutusjuhend
Kasutusjuhend

Ülaltoodud pildil 1 on kujutatud retro kõnesüntesaatori esiosa ja pildil 2 tagakülg.

Korpus ees

  1. Kõlar Grill
  2. 3,5 mm kõrvaklappide pesa: 3,5 mm pistiku sisestamisel on peakõlar keelatud.
  3. Punane LED: see LED süttib sõna rääkimise ajal, kui kõne algatati HTTP -päringu kaudu.
  4. Sinine LED: see LED süttib sõna rääkimise ajal, kui kõne algatati MQTT IoT päringu kaudu.

Korpus taga

  1. Lähtestamisnupp: kasutatakse ESP8266-07 IoT-seadme kõvaks lähtestamiseks.
  2. Välgunupp: kui seda kasutatakse koos lähtestusnupuga, võimaldab ESP8266-07 uuesti vilkuda.
  3. WiFi -antenni pistik (SMA -pistik): välise WiFi -antenni jaoks, mis vähendab kõige vähem RF -tee sumbumist, kuna sulgur on alumiiniumist.
  4. Väline programmeerimisport: eemaldage vajadus korpust lahti keerata, et pääseda juurde ESP8266-07 uuesti programmeerimise eesmärgil. ESP8266-07 programmeerimispoldid on viidud välise programmeerimisporti. Pilt 3 on programmeerimisadapter.
  5. Roheline LED: see on IoT -süsteemi LED ja seda kasutatakse seadme diagnostilise oleku ja käivitamise ning töötamise ajal.
  6. Väline temperatuuri/niiskuse andur (AM2320)
  7. SD -kaardi pesa: see sisaldab kõiki konfiguratsiooni- ja turbeandmeid koos veebiserveri lehtedega.
  8. 2,1 mm toitepistik 6vdc

2. samm: ahela ülevaade

Ahela ülevaade
Ahela ülevaade
Ahela ülevaade
Ahela ülevaade

Retro Speech Synth seade sisaldab kahte PCBd;

  • RetroSpeechSynthIoTBoard: See on üldine, korduvkasutatav ESP8266-07/12/12E/13 PCB
  • RetroSpeechSynthBoard: See on üldine SP0256-AL2 trükkplaat

Retro Speech Synth IoT Board

See plaat võimaldab kas ESP8266-07/12/12E/13 otsest jootmist või 0,1 sammuga pistikupesasid, mis sisaldavad ESP8266 kandjaplaati.

Tahvel oli mõeldud I/O laiendamiseks üle I2C ühenduse ja võib toetada kas 3v3 või 5v toitetaset Q1, Q2, R8-13 kaudu.

Ühendus plaadiga saavutatakse ühe kahe päise J2 ja J4, 8-suunalise DIL IDC lindi või 5-suunalise JST/Molexi kaudu.

U2 ja U3 varustus 3.3v ja 5v pardal. Teise võimalusena, kui on vaja suuremat vooluvõimsust, võib pardavälise seeria šundi regulaatorid ühendada vastavalt pistikutega J10 ja J11.

Pistikud J1 ja J3 pakuvad SPI kaudu välist SD -kaardi tuge. J1 on mõeldud 8-suunaliseks Molexiks ja J3-l on otsene tihvt tihvtidega ühilduvuse tugi riiulilt eemaldatavale SD-kaardi trükkplaadile, millel on kas 3v3 või 5v tugi.

Retro kõne kõnelaud

Selle plaadi juhtimine toimub üle I2C 5v ühilduva ühenduse J1, J5 või J6 kaudu, 4-suunalise JST/Molexi, 8-suunalise DIL IDC või 8-suunalise lintpistiku kaudu.

U2 MPC23017 pakub I2C paralleelset liidest U3-ga SP0256-AL2 ja LED-idega D1 (roheline), D2 (punane) ja D3 (sinine). Kõnesünteesi väljund suunatakse CR1 TBA820M helivõimendisse kas analoogpoti RV1 või digitaalse poti U1 MCP4561 kaudu.

Digitaalset potti U1 juhitakse ka 5v ühilduva I2C kaudu.

Märkus: ESP8266-07 seade valiti, kuna sellel on integreeritud IPX RF-pistik, mis võimaldab alumiiniumkorpusele lisada välise WiFi-antenni.

Samm: trükkplaatide tootmine ja kokkupanek

PCB tootmine ja kokkupanek
PCB tootmine ja kokkupanek
PCB tootmine ja kokkupanek
PCB tootmine ja kokkupanek
PCB tootmine ja kokkupanek
PCB tootmine ja kokkupanek
PCB tootmine ja kokkupanek
PCB tootmine ja kokkupanek

Piltidel 1 ja 2 on näidatud alumiiniumist korpuse substraadil asuvad valmis ja juhtmega PCB alakoostud.

Mõlemad PCB -d on loodud kasutades Kicad v4.0.7, tootja JLCPCB ja minu kokkupandud ja näidatud piltide 3 kuni 13 kohal.

4. samm: valmistamine

Valmistamine
Valmistamine
Valmistamine
Valmistamine
Valmistamine
Valmistamine

Joonisel 1 on kujutatud kõigi kokkupandavate osade Haynesi käsitsi stiilipaigutus enne lõplikku kokkupanekut.

Pildid 2… 5 näitavad erinevaid kaadreid korpuse valmistamise ajal minimaalsete vahedega.

Samm 5: Tarkvarasüsteemi ülevaade

Tarkvara süsteemi ülevaade
Tarkvara süsteemi ülevaade
Tarkvara süsteemi ülevaade
Tarkvara süsteemi ülevaade

See IoT retro kõnesünteesi seade sisaldab kuut tarkvara põhikomponenti, nagu on näidatud ülaltoodud pildil 1.

SD -kaart

See on väline SD SPI välklambisüsteem ja seda kasutatakse järgmise teabe hoidmiseks (vt pilt 2 ülal);

  • Ikoonid ja kõnesünteesi konfiguratsiooni avaleht index.htm: seda teenindab IoT -seade, kui see ei saa teie IoT WiFi -võrguga ühendust luua (tavaliselt vale turvateabe või esmakordse kasutamise tõttu) ja pakub kasutajale vahendeid andurite kaugkonfigureerimine ilma uue SD-sisu uuesti välklamata. See sisaldab ka indekseid1.htm, mqtt.htm ja sp0256.htm, need on kohapeal teenindatavad veebilehed, millele pääseb juurde veebibrauseri kaudu, võimaldades kõnesünteesi piiratud kontrolli üle
  • Turvateave: see hoiab teavet, mida IoT -seade kasutab teie IoT WiFi -võrgu ja MQTT -maakleriga ühenduse loomisel. Kõne sünteesi konfiguratsiooni avalehe kaudu esitatud teave kirjutatakse sellesse faili ('secvals.txt').
  • Kalibreerimisteave: failides sisalduvat teavet („calvals1.txt” ja „calvals2.txt”) kasutatakse vajadusel rongisisese temperatuuri/niiskuse andurite kalibreerimiseks. Kalibreerimiskonstante saab IoT-seadmesse kirjutada MQTT-maakleri MQTT-käskude kaudu või SD-kaardi uuesti vilkumisega. „calvals1.txt” puudutab andurit AM2320 ja „calvals2.txt” DHT22.
  • Kasutaja konfigureeritavad süsteemiväärtused: selles failis sisalduv teave ('confvals.txt'), mille kasutaja on valinud, juhib teatud süsteemi vastuseid, nagu esialgne digitaalne helitugevus, automaatne süsteemivalmis teatis MQTT maakleritellimuse kohta jne.

mDNS -server

Seda funktsiooni kasutatakse siis, kui asjade Interneti -seadmel ei õnnestunud teie WiFi -võrguga WiFi -jaamana ühendust luua ja selle asemel on sellest saanud WiFi -pöörduspunkt, mis sarnaneb kodumaise WiFi -ruuteriga. Sellise ruuteri puhul ühendaksite sellega tavaliselt ühenduse, sisestades 192.168.1.1 IP -aadressi (tavaliselt trükitud kasti külge kinnitatud sildile) otse oma brauseri URL -i ribale, mille järel saate sisenemiseks sisselogimislehe kasutajanime ja parooli, et saaksite seadet konfigureerida. ESP8266-07 AP-režiimis (pääsupunkti režiimis) kasutab seade vaikimisi IP-aadressi 192.168.4.1, kuid kui mDNS-server töötab, peate brauseri URL-i ribale sisestama ainult inimsõbraliku nime „SPEECHSVR.local”. vaadake 'Kõnesünteesi konfiguratsiooni kodulehte'.

MQTT klient

MQTT klient pakub kõiki vajalikke funktsioone; ühendage oma Interneti -võrgu MQTT maakler, tellige oma valitud teemad ja avaldage antud teema jaoks kasulikud koormused. Lühidalt, see sätestab IoT põhifunktsioonid.

HTTP veebiserver

Sellel veebiserveril on kaks eesmärki;

  1. Kui IoT -seade ei saa ühenduse luua WiFi -võrguga, mille SSID, P/W jne on SD -kaardil hoitavas turvateabe failis määratletud, muutub seade juurdepääsupunktiks. Kui olete pöörduspunkti pakutava WiFi -võrguga ühendatud, võimaldab HTTP -veebiserver olemasoleva seadmega otse ühenduse luua ja muuta selle konfiguratsiooni HTTP -veebibrauseri abil, mille eesmärk on teenindada kõnesünteesi konfiguratsiooni Kodulehe veebileht, mida hoitakse ka SD -kaardil.
  2. Kui IoT Retro kõnesünteesiseade on WiFi -võrgu ja MQTT -vahendajaga ühenduse loonud, teenindab HTTP -veebiserver juurdepääsu korral automaatselt HTTP -veebilehe, mis võimaldab piiratud kontrolli IoT -seadme üle, et rääkida valik fikseeritud fraase ja võimalus lülitage sisse kaks eesmist punast ja sinist LED -i.

WiFi jaam

See funktsioon võimaldab IoT -seadmel ühenduse luua koduse WiFi -võrguga, kasutades turvateabe faili parameetreid, ilma selleta ei saa teie IoT -seade MQTT maaklerit tellida/avaldada.

WiFi pääsupunkt

Võimalus saada WiFi pääsupunktiks on vahend, mille abil IoT -seade võimaldab teil sellega ühenduse luua ja konfiguratsiooni muuta WiFi -jaama ja brauseri kaudu (näiteks Safari Apple iPadis). See pääsupunkt edastab SSID = "SPEECHSYN" + IoT -seadme MAC -aadressi 6 viimast numbrit. Selle suletud võrgu parooli nimi on kujutlusvõimeline "PASSWORD"

6. samm: tarkvara ülevaade

Tarkvara ülevaade
Tarkvara ülevaade
Tarkvara ülevaade
Tarkvara ülevaade
Tarkvara ülevaade
Tarkvara ülevaade

Preambul

Selle lähtekoodi edukaks kompileerimiseks vajate koodi kohalikku koopiat ja teeke, mis on kirjeldatud allpool 12. sammus, Kasutatud viited. Kui te pole kindel, kuidas Arduino raamatukogu installida, minge siia.

Ülevaade

Tarkvara kasutab olekumasinat, nagu on näidatud pildil 1 (allika täielik koopia minu GitHubi hoidlas siin). Allpool on kirjeldatud 5 peamist olekut;

  • SELLES

    See lähtestamisolek on esimene olek, mis sisestati pärast sisselülitamist

  • NOCONFIG

    See olek sisestatakse, kui pärast sisselülitamist tuvastatakse kehtetu või puuduv fail secvals.txt. Selles olekus on konfiguratsioonileht nähtav

  • Ootel NW

    See olek on ajutine, sisestatud, kui WiFi -võrguühendus puudub

  • Ootel MQTT

    See olek on ajutine, sisestatakse pärast WiFi -võrguühenduse loomist ja kuigi sellel võrgul puudub ühendus MQTT maakleriga

  • AKTIIVNE

    See on tavaline tööolek, mis sisestatakse pärast WiFi -võrguühenduse ja MQTT Brokeri ühenduse loomist. Just selle oleku ajal avaldatakse IQ Retro kõnesünteesi seadme temperatuur, soojusindeks ja niiskus regulaarselt MQTT maaklerile. Selles olekus on kõnesünteesi avaleht nähtav

Sündmusi, mis kontrollivad olekute vahelist üleminekut, on kirjeldatud ülaltoodud pildil 1. Üleminekuid olekute vahel reguleerivad ka järgmised SecValsi parameetrid;

  • 1. MQTT maakleri IP -aadress. Täpilise kümnendkoha kujul AAA. BBB. CCC. DDD
  • 2. MQTT maaklerisadam. Täisarvulisel kujul.
  • 3. MQTT Brokeri ühendus üritab teha enne STA -režiimilt AP -režiimile üleminekut. Täisarvulisel kujul.
  • 4. WiFi võrgu SSID. Vabas vormis tekstis.
  • Viies WiFi -võrgu parool. Vabas vormis tekstis.

Nagu eespool mainitud, kui IoT -seade ei saa WiFi -jaamana WiFi -võrguga ühendust luua, kelle SSID ja P/W on määratletud SD -kaardil hoitavates failides secvals.txt, muutub IoT -seade juurdepääsupunktiks. Kui see juurdepääsupunktiga ühendatakse, teenib see kõnesünteesi konfiguratsiooni avalehte, nagu on näidatud pildil 2 (sisestades brauseri URL -i aadressiribale kas „SPEECHSVR.local” või 192.168.4.1). See koduleht võimaldab IoT Retro kõnesünteesiseadme HTTP -brauseri kaudu uuesti konfigureerida.

Kaugjuurdepääs aktiivse oleku ajal

Pärast MQTT Brokeriga ühendamist on võimalik seadet ka uuesti kalibreerida ja uuesti konfigureerida MQTT teemaväljaannete kaudu. Failil calvals.txt on R/W juurdepääs ja secvals.txt on ainult kirjutamisõigus.

Samuti, nagu eespool mainitud, on aktiivsel režiimil võimalik kõnesünteesile juurde pääseda HTTP -liidese kaudu, sisestades brauseri URL -i aadressiribale 'SPEECHSVR.local' või 192.168.4.1. See HTTP -põhine liides võimaldab kõnesünteesi põhijuhtimist. Pildid 3, 4 ja 5 näitavad saadaolevaid veebilehti.

Kasutaja silumine

Käivitamisjärjekorra ajal annab korpuse tagaküljel asuv IoT -seadme roheline süsteem järgmise silumisetagasiside;

  • 1 Lühike välk: SD -kaardil ei ole konfiguratsioonifaili (secvals.txt)
  • 2 Lühikesed vilkumised: Interneti -seade üritab WiFi -võrguga ühendust luua
  • Pidev valgustus: IoT -seade üritab ühendust luua MQTT Brokeriga
  • Väljas: seade on aktiivne.

IoT retro kõnesünteesi seadme funktsionaalsus AKTIIVSES olekus

ACTIVE olekusse siseneb ESP8266 pidevasse tsüklisse, mis kutsub järgmisi funktsioone; timer_update (), checkTemperatureAndHumidity () ja handleSpeech (). Selle tulemus on loodud esitama kasutajale HTTP- või MQTT-liidest, teenindama sujuvalt oma pardal asuvat kõneprotsessorit foneemidega ja avaldama kohalikud ümbritseva keskkonna parameetriväärtused MQTT-s.

Lähtekood sisaldab kõiki teemade tellimusi ja väljaandeid, sealhulgas kasulikku koormust.

7. samm: anduri kalibreerimine

Anduri kalibreerimine
Anduri kalibreerimine

IoT -seadme sisselülitamisel loetakse SD -kaardilt alglaadimisjärjestuse osana kaks faili nimega „cavals1.txt” ja „cavals2.txt”.

Nende failide sisu on kalibreerimiskonstandid, nagu on näidatud ülal pildil 1.

  1. 'cavals1.txt': kasutab väline AM2320
  2. 'cavals2.txt': kasutab sisemine DHT22

Neid kalibreerimiskonstante kasutatakse kahelt andurilt saadud näitude reguleerimiseks, et viia need võrdlusseadmega vastavusse. On veel üks väärtus, mis määratleb iga seadme aruandlusstrateegia ja mida kirjeldatakse allpool koos andurite kalibreerimise protseduuriga.

Aruandlusstrateegia

See parameeter määrab, kuidas kaugandur teatab ümbritsevatest parameetrimuutustest. Kui valite väärtuse 0, avaldab kaugandur kõik temperatuuri või niiskuse muutused iga kord, kui vastavat andurit loetakse (umbes iga 10 sekundi järel). Mis tahes muu väärtus lükkab muudatuse avaldamise 1… 60 minuti võrra edasi. Selle parameetri muutmine võimaldab optimeerida MQTT võrguliiklust. Tuleb märkida, et DHT22 temperatuuri ja niiskuse andmeid loetakse anduri piirangute tõttu vaheldumisi.

Temperatuuri kalibreerimine

Temperatuurianduri kalibreerimiseks järgisin sama protsessi, nagu on kirjeldatud siin, 4. sammus, kasutades uuesti lihtsat y = mx+c suhet. Kasutasin võrdlusseadmena IoT temperatuuri, niiskusandurit #1. Anduri väärtused on Celsiuse kraadides.

Niiskuse kalibreerimine

Kuna mul ei ole vahendeid kohaliku keskkonna niiskuse täpseks salvestamiseks või isegi kontrollimiseks, kasutasin anduri kalibreerimiseks sarnast lähenemist ülaltoodud sammuga 4, kasutades uuesti võrdlusandurit nr 1. Eespool öeldust olen siiski leidnud hiljuti veebist suurepärase artikli, mis kirjeldab niiskuseandurite kalibreerimist. Ma võin seda lähenemist kunagi tulevikus proovida. Anduri väärtused on suhtelise niiskuse %vanuses.

8. samm: MQTT teemade nimetamise konventsioon

MQTT teemade nimetamise konventsioon
MQTT teemade nimetamise konventsioon
MQTT teemade nimetamise konventsioon
MQTT teemade nimetamise konventsioon

Nagu varasemas juhendis (siin) mainitud, otsustasin ülaltoodud pildil 1 kirjeldatud teemade nimetamise kokkuleppele.

Nimelt, "AccessMethod/DeviceType/WhichDevice/Action/SubDevice" See pole täiuslik, kuid see võimaldab kasutada kasulikke filtreid, et näha kõiki parameetrilise teema andurite väljundeid, võimaldades seega hõlpsat võrdlust, nagu ülaltoodud pildil 2, MQTTSpy abil.

See projekt on esimene juhtum, kus üks seade sisaldab rohkem kui ühte sama tüüpi väljaande päritoluallikat. st. Kaks temperatuuri/niiskuse andurit, nii sisemistelt kui ka välistelt alaseadmetelt.

Samuti toetab see mõistlikult laiendatavaid funktsionaalseid loogilisi rühmitusi antud asjade Interneti seadmes.

Nende teemade rakendamisel tarkvaras kasutasin iga seadme jaoks kõvasti kodeeritud teemastringe koos fikseeritud, manustatud numbriliste identifikaatoritega, mitte teemade dünaamiliseks genereerimiseks käitusajal, et säästa RAM -i ja hoida jõudlust kõrgel.

Märkus. Kui te pole kindel, kuidas MQTTSpy kasutada, vaadake siit 'MQTT maakleri seadistamine'. Osa 2: IoT, koduautomaatika

9. samm: silumine ja vigade otsimine

Silumine ja vigade otsimine
Silumine ja vigade otsimine

Üldiselt kipun oma hobiprojektide jaoks võimaluse korral ehitama tüüpilist riistvara prototüüpi, mille vastu tarkvara on välja töötatud. Mul on harva probleeme tarkvara integreerimisel lõplikku platvormi riistvarasse.

Sel korral puutusin aga kokku kummalise vahelduva veaga, mille tõttu mõned foneemid kõlaksid, teised aga mitte.

Pärast kõnesünteesi PCB esialgset silumist, kasutades Arduino Unot, et hankida foneemid ja tõestada, et see plaat töötab, kasutasin I2T jooni IoT PCB ja kõnesünteesi PCB vahel. Vaata pilti 1 ülal.

Jälgedel on selgelt näha "saehammas"/I2C signaali eksponentsiaalne serv.

See on tavaliselt märk sellest, et I2C tõmbeväärtused on liiga kõrged, mis takistab liinipinge taastumist piisavalt kiiresti avatud äravooluahelas.

„Töötlemisel” võrdlesin kahte smt tõmbetakistit R12 ja R13 10K -ga, et anda 4K7 ja kindlasti kõnesüntees „puhkas ellu”

Seda tüüpi tõrge on vastupidine sellele, mis võib juhtuda seda tüüpi projektide silumisel. Üldiselt on enamikul Ebayst ostetud I2C -põhistel moodulitel juba 10K või 4K7 pull -up. Kui kavatsete kasutada> 5 I2C moodulit, millest igaühel on 4K7 tõstejõud, on üldine koormus 940R, mis on ülemvõimsuse jaoks liiga suur. Paranduseks oleks iga mooduli kõigi peale ühe tõmbetakistite komplekti jootmine. Soovitavalt see, kes meistrist füüsiliselt kõige kaugemal on.

Kasulik nõuanne ja seda tasub silmas pidada I2C seadmetega elektroonika kujundamisel.

10. samm: disaini testimine

Image
Image
Disaini testimine
Disaini testimine
Disaini testimine
Disaini testimine

Testimine viidi läbi kahe metoodika abil; Käsitsi ja automatiseeritud.

Esimene, käsiraamat ja üldine koodide esialgne väljatöötamine oli MQTT Spy kasutamine kõigi saadaolevate tellitud teemade kasutamiseks ja avaldatud vastuste kontrollimiseks (joonisel 2). Kuna see on käsitsi tehtav protsess, võib see koodi väljatöötamise käigus aeganõudev olla ja vigadele kalduv, kuigi käsitsi täitmine võimaldab 100% ulatuses katvust.

MQTTSpy valiti käsitsi testimiseks, kuna see on suurepärane vahend antud koormuse käsitsi vormindamiseks ja selle hõlpsaks avaldamiseks mis tahes teemal. Samuti kuvatakse selge ajatemplitega logi, mis on silumiseks väga kasulik (pilt 3 ülal).

Teine, automatiseeritud lähenemisviis võeti kasutusele, kui lähtekood muutus keerulisemaks (> 3700 rida). Suurenenud keerukus tähendab pikemaid käsitsi testimistsükleid ja keerukamaid teste. Testide usaldusväärsuse, determinismi ja kvaliteedi parandamiseks kasutati automaatset testimist pythoni testijuhi kaudu (pilt 1). Vaadake selle juhendi 10. sammu automaatse testimise juurutamise kohta. Selles juhendis kasutatud automatiseeritud testide täielik koopia on saadaval siin.

Ülal on näidatud video töötava automaatse testimise järjestusest. Järjestus täidab järgmisi samme;

  • Automatiseeritud MQTT kaudu

    • Ühendage MQTT selgrooga ja kuulutage "Süsteem valmis"
    • Harjutus Roheline LED
    • Harjutus Punane LED
    • Harjutus Sinine LED
    • Kontrollige, kas Digital Pot töötab
    • Rääkige foneemide abil
    • Rääkige foneemide heksakoodide abil
    • Rääkige parandusfraaside koodide abil
    • Natuke Dr Who ja Daleksi lõbu.
  • Käsitsi HTTP/Chrome'i kaudu

    • Harjutus Sinine LED
    • Harjutus Punane LED
    • Rääkige fikseeritud fraase „Steven Quinn”, „System Ready” ja „Hello World”
    • Kas teil on HTTP -server, teenige üles

      • Kõnesünteesi kiibi üksikasjad
      • MQTT üksikasjad

Samm 11: Järeldus

Järeldus
Järeldus

Kuigi failide ja puuride jms jaoks kulus palju vaeva, eriti kõlarivõre puhul, arvan, et tulemus on esteetiliselt meeldiv ja mahub kenasse väikesesse korpusesse. Oleksin võinud selle väiksemaks muuta, kuid oleks pidanud minema ühele trükkplaadile ja lõhkusin selle meelega kaheks, et saaksin hiljem PCB-sid teiste projektide jaoks uuesti kasutada. Nii et see on õnnelik kompromiss.

Tarkvara töötab hästi, IoT -seade on juba mõnda aega stabiilselt töötanud ilma probleemideta.

Olen Grafana kaudu temperatuuri ja niiskust jälginud ning kõrvuti paikneva seadmega võrrelnud. Mõlemad ümbritsevad väärtused on hästi korreleerunud, mis tähendab, et kalibreerimine on mõistlik (või vähemalt need on sarnased).

Lõpetasin sõna käsu ('WFD/SpeechTH/1/Word/Command') rakendamise, sest mul oli aeg otsa saanud ja pidin edasi liikuma. Ma võin seda uuesti külastada, kui ja kui seadistan MySQL-i andmebaasi. Praegu kasutan InfluxDB -d.

12. samm: kasutatud viited

Selle juhendi koostamiseks kasutati järgmisi allikaid; IoT retro kõnesünteesi seadme lähtekood (see sisaldab koopiat kõigest)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Autor: Nick O'Leary
  • Eesmärk: võimaldab seadmel avaldada või tellida MQTT teemasid antud maakleriga
  • Siit:

DHT.h

  • Autor: Adafruit
  • Eesmärk: Arduino raamatukogu DHT11DHT22 jms temperatuuri ja niiskuse andurite jaoks
  • Alates:

Adafruit_AM2320.h/Adafruit_Sensor.h

  • Autor: Adafruit
  • Eesmärk: Arduino raamatukogu AM2320 jaoks jne Temperatuuri ja niiskuse andur
  • Siit:

MCP4561_DIGI_POT.h

  • Autor: Steve Quinn
  • Eesmärk: Arduino raamatukogu digitaalse potentsiomeetri MCP4561 jaoks
  • Alates:

Adafruit_MCP23017.h

  • Autor: Steve Quinn
  • Eesmärk: Arduino raamatukogu MCP23017 I2C pordilaiendi jaoks. See on Adafruit-i Adafruit-MCP23017-Arduino-raamatukogu GITHubi kahvel.
  • Alates:

Lõbu pärast

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

PCB tootmine

https://jlcpcb.com/

Täiendavate Arduino raamatukogude installimine

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

Niiskusanduri kontrollimine ja kalibreerimine

https://www.allaboutcircuits.com/projects/how-to-check-and-calibrate-a-humidity-sensor/ /

SP0256-AL2 andmeleht

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

Kõnekiipide pood

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

Arduino võistlus 2019
Arduino võistlus 2019
Arduino võistlus 2019
Arduino võistlus 2019

Arduino võistluse 2019 teine koht

Soovitan: