Sisällysluettelo:

Retro -puhesynteesi. Osa: 12 IoT, kotiautomaatio: 12 vaihetta (kuvilla)
Retro -puhesynteesi. Osa: 12 IoT, kotiautomaatio: 12 vaihetta (kuvilla)

Video: Retro -puhesynteesi. Osa: 12 IoT, kotiautomaatio: 12 vaihetta (kuvilla)

Video: Retro -puhesynteesi. Osa: 12 IoT, kotiautomaatio: 12 vaihetta (kuvilla)
Video: VIERAUS GYPSY RESIDENCESSA NÄYTTELY MODERNISTA ARKKITEKTUURISTA SUUNNITELTUSTA JA KORISTETTUSTA 2024, Heinäkuu
Anonim
Image
Image
Retro -puhesynteesi. Osa: 12 IoT, kodin automaatio
Retro -puhesynteesi. Osa: 12 IoT, kodin automaatio

Tämä artikkeli on 12. kotiautomaation Instructables -sarjassa, jossa dokumentoidaan IoT Retro Speech Synthesis Device -laitteen luominen ja integroiminen olemassa olevaan kodin automaatiojärjestelmään, joka sisältää kaikki tarvittavat ohjelmistotoiminnot onnistuneen käyttöönoton mahdollistamiseksi kotitalousympäristössä.

Kuvassa 1 esitetään valmis IoT -puhesyntetisaattori ja kuvassa 2 kaikki prototyypissä käytetyt komponentit, jotka vähennettiin lopputuotteeseen.

Videossa näkyy laite toiminnassa (testauksen aikana).

Johdanto

Kuten edellä mainittiin, tässä oppaassa kerrotaan, miten IoT Retro -puhesynteesilaite tehdään, ja se perustuu yleisiin instrumentteihin SP0256-AL2.

Sen ensisijainen tarkoitus on lisätä "vanhan koulun" puhesynteesi IoT -verkkoon. Miksi saatat kysyä "vanhaa koulua"? No, koska olin noin 80-luvulla, kun nämä asiat valmistettiin ensimmäisen kerran ja liitin yhden BBC Micro -laitteeseeni, joten SP0256-AL2: ta ympäröi minulle jonkin verran nostalgiaa.

Pidän paljon parempana haastetta yrittää selvittää, mitä ihmettä tämä Dalekin kuuloinen ääni sanoo kuin kuunnella hipsterisen Amazonin kaiun tai Sirin tylyjä ääniä. Missä on haaste, kun kysyn sinulta?

Ja puhumattakaan, että minulla on myös "pussikuorma" SP0256-AL2-IC: itä.

Laite pystyy myös lukemaan paikallisen lämpötilan ja kosteuden, joten se laajentaa edelleen olemassa olevan IoT -infrastruktuurini ympäröivää instrumentointia, joka kytkeytyy MQTT/OpenHAB -pohjaiseen IoT -verkkoon, joka on kuvattu tässä kodin automaatiota (HA) koskevassa sarjassa, perustuen täältä otettuun uudelleenkäytettyyn koodiin.

Sen ytimessä on ESP8266-07, joka vastaa MQTT-viestinnästä ja kaikkien järjestelmän toimintojen ohjaamisesta (SD-kortin käyttö, led-ohjaus, lämpötilan/kosteuden tunnistaminen, äänenvoimakkuuden säätö, puhesynteesi).laite on täysin konfiguroitavissa paikallista SD -korttia, vaikka kalibrointi- ja verkkoturvaparametrit voidaan ohjelmoida myös MQTT -etäjulkaisujen kautta.

Mitä osia tarvitsen?

Katso materiaaliluettelo täältä

Mitä ohjelmistoja tarvitsen?

  • Arduino IDE 1.6.9,
  • Arduino IDE on määritetty ohjelmoimaan ESP8266-07 (sama kuin tämä). Määritä sitten IDE tässä kuvatussa ohjelmistoluonnoksessa olevan yksityiskohtaisen kuvauksen mukaisesti,
  • Python v3.5.2, jos haluat käyttää automaattista testaustoimintoa, lisätietoja tästä

Mitä työkaluja tarvitsen?

  • Mikroskooppi vähintään x3 (SMT -juotos),
  • Molex -liittimen puristustyökalu (JST -liittimille),
  • SMD -juotosrauta (nestevuotokynällä ja juoksevalla juotoksella),
  • Ruuvimeisselit (erilaisia),
  • Kuuma pyssy,
  • Porat (erilaiset),
  • Upotettava käsityökalu,
  • Tiedostot (erilaiset),
  • Dremel (erilaiset bitit),
  • Vankka ruuvi (pieni ja suuri, kuten musta ja decker työkaveri),
  • Leikkuuveitsi,
  • Vernier -jarrusatulat (käytetään valmistuksen mittaamiseen ja hyödyllisiä PCB -komponenttien mitoitukseen),
  • Jakoavaimet ja mutterinväännimet (erilaisia),
  • Vahvat pinsetit (SMT -juottamiseen),
  • Junior Hacksaw,
  • Pora (erilaisilla poranterillä),
  • Hienot pihdit (kärki ja nokka)
  • Huuhteluleikkurit,
  • DMM ja jatkuvan jatkuvuuden tarkastus,
  • Kaksikanavainen digitaalinen laajuus (kätevä signaalien virheenkorjaukseen)

Mitä taitoja tarvitsen?

  • Paljon kärsivällisyyttä,
  • Paljon kädentaitoja ja erinomainen käden/silmän koordinaatio,
  • Erinomaiset juotostaidot,
  • Erinomaiset valmistustaidot,
  • Kyky visualisoida kolmessa ulottuvuudessa,
  • Jonkin verran tietoa ohjelmistokehityksestä C: llä (jos haluat ymmärtää lähdekoodin),
  • Jonkin verran tietoa Pythonista (komentosarjojen asentaminen ja suorittaminen, jos haluat käyttää automaattista testausta),
  • Tieto Arduinosta ja sen IDE: stä
  • Hyvä elektroniikan tuntemus,
  • Hieman ymmärrystä kotiverkostasi.

Käsitellyt aiheet

  • Ohjekirja
  • Piirin yleiskatsaus
  • Piirilevyjen valmistus ja kokoonpano
  • Valmistus
  • Ohjelmistojärjestelmän yleiskatsaus
  • Ohjelmiston yleiskatsaus
  • Anturin kalibrointi
  • MQTT -aiheen nimeämiskokous
  • Virheenkorjaus ja vianetsintä
  • Suunnittelun testaaminen
  • Johtopäätös
  • Käytetyt viitteet

Sarjan linkit Osaan 11: IoT -työpöytäkonsoli. Osa: 11 IoT, kodin automaatio

Vaihe 1: Käyttöopas

Ohjekirja
Ohjekirja
Ohjekirja
Ohjekirja
Ohjekirja
Ohjekirja

Yllä olevassa kuvassa 1 on Retro -puhesyntetisaattorin etuosa ja kuvassa 2 takana.

Kotelo edessä

  1. Kaiutingrilli
  2. 3,5 mm: n kuulokeliitäntä: Pääkaiutin poistetaan käytöstä, kun 3,5 mm: n liitin on liitetty.
  3. Punainen LED: Tämä merkkivalo palaa, kun sanaa puhutaan, kun puhe aloitettiin HTTP -pyynnön kautta.
  4. Sininen LED: Tämä merkkivalo palaa, kun sanaa puhutaan, kun puhe aloitettiin MQTT IoT -pyynnön kautta.

Kotelo takana

  1. Palautuspainike: Käytetään ESP8266-07 IoT -laitteen nollaamiseen.
  2. Salamapainike: Käytettäessä yhdessä nollauspainikkeen kanssa ESP8266-07 voi vilkkua uudelleen.
  3. WiFi -antennipistoke (SMA -pistoke): Ulkoiselle WiFi -antennille, joka vähentää vähiten RF -reitin vaimennusta, koska sulkija on alumiinia.
  4. Ulkoinen ohjelmointiportti: poistaa tarpeen irrottaa kotelo, jotta pääset käsiksi ESP8266-07-ohjelmaan uudelleen ohjelmointia varten. ESP8266-07: n ohjelmointitapit on tuotu ulkoiseen ohjelmointiporttiin. Kuva 3 on ohjelmointisovitin.
  5. Vihreä LED: Tämä on IoT -järjestelmän led, jota käytetään osoittamaan laitteen diagnostiikkatila ja käynnistys ja käytön aikana.
  6. Ulkoinen lämpötila-/kosteusanturi (AM2320)
  7. SD -korttipaikka: Tämä sisältää kaikki kokoonpano- ja suojaustiedot sekä verkkopalvelinsivut.
  8. 2,1 mm: n virtaliitin 6vdc

Vaihe 2: Piirin yleiskatsaus

Piirin yleiskatsaus
Piirin yleiskatsaus
Piirin yleiskatsaus
Piirin yleiskatsaus

Retro Speech Synth -laite käsittää kaksi PCB: tä;

  • RetroSpeechSynthIoTBoard: Tämä on yleinen, uudelleenkäytettävä ESP8266-07/12/12E/13 PCB
  • RetroSpeechSynthBoard: Tämä on yleinen SP0256-AL2-piirilevy

Retro Speech Synth IoT Board

Tämä kortti mahdollistaa joko juottamisen suoraan ESP8266-07/12/12E/13 tai 0,1 tuuman pistorasioihin, joissa on ESP8266-kantaja-PCB.

Levy on suunniteltu laajentamaan I/O: ta I2C-liitännän kautta ja voi tukea joko 3v3- tai 5v-syöttötasoja Q1, Q2, R8-13 kautta.

Liitäntä piirilevyyn saavutetaan yhdellä kahdesta otsikosta J2 ja J4, 8-suuntaisesta DIL IDC -nauhasta tai 5-suuntaisesta JST/Molexista.

U2 ja U3 säännökset 3.3v ja 5v aluksella. Vaihtoehtoisesti, jos tarvitaan suurempaa virtakapasiteettia, ulkopuoliset sarjaohjaussäätimet voidaan kiinnittää liittimien J10 ja J11 kautta.

Liittimet J1 ja J3 tarjoavat ulkoisen SD -kortin tuen SPI: n kautta. J1 on suunniteltu 8-suuntaiselle Molexille, ja J3: ssa on suora tappi nastan yhteensopivuuden tukemiseksi hyllyltä poistetulle SD-kortille, jossa on joko 3v3- tai 5v-tuki.

Retro Speech Synth Board

Tätä korttia ohjataan I2C 5v -yhteydellä J1, J5 tai J6, 4-tie JST/Molex, 8-suuntainen DIL IDC tai 8-tie IDC nauhaliitin.

U2 MPC23017 tarjoaa I2C-rinnakkaisliitännän U3: lle SP0256-AL2 ja LEDit D1 (vihreä), D2 (punainen) ja D3 (sininen). Speech Synthin lähtö syötetään CR1 TBA820M -vahvistimeen joko analogisen potin RV1 tai digitaalisen potin U1 MCP4561 kautta.

Digital Pot U1: tä ohjataan myös 5v -yhteensopivan I2C: n kautta.

Huomautus: ESP8266-07-laite valittiin, koska siinä on sisäänrakennettu IPX RF -liitin, joka mahdollistaa ulkoisen WiFi-antennin lisäämisen alumiinikoteloon.

Vaihe 3: Piirilevyjen valmistus ja kokoaminen

Piirilevyjen valmistus ja kokoonpano
Piirilevyjen valmistus ja kokoonpano
Piirilevyjen valmistus ja kokoonpano
Piirilevyjen valmistus ja kokoonpano
Piirilevyjen valmistus ja kokoonpano
Piirilevyjen valmistus ja kokoonpano
Piirilevyjen valmistus ja kokoonpano
Piirilevyjen valmistus ja kokoonpano

Kuvissa 1 ja 2 esitetään valmiit ja langalliset piirilevyosakokoonpanot, jotka sijaitsevat alumiinikotelon alustalla.

Kaksi piirilevyä suunniteltiin käyttäen Kicad v4.0.7 -tuotetta, jonka on valmistanut JLCPCB ja jonka olen koonnut ja joka on esitetty kuvien 3-13 yläpuolella.

Vaihe 4: Valmistus

Valmistus
Valmistus
Valmistus
Valmistus
Valmistus
Valmistus

Kuvassa 1 esitetään kaikkien esivalmistettujen osien Haynesin manuaalinen tyylipaino ennen lopullista asennusta.

Kuvissa 2… 5 on esitetty erilaisia laukauksia kotelon valmistuksen aikana, ja niiden välykset ovat vähäiset.

Vaihe 5: Ohjelmistojärjestelmän yleiskatsaus

Ohjelmistojärjestelmän yleiskatsaus
Ohjelmistojärjestelmän yleiskatsaus
Ohjelmistojärjestelmän yleiskatsaus
Ohjelmistojärjestelmän yleiskatsaus

Tämä IoT Retro -puhesynteesilaite sisältää kuusi keskeistä ohjelmistokomponenttia, kuten kuvassa 1 on esitetty.

Sd-kortti

Tämä on ulkoinen SD SPI Flash -arkistointijärjestelmä ja sitä käytetään seuraavien tietojen säilyttämiseen (katso kuva 2 yllä);

  • Kuvakkeet ja 'Speech Synth Configurationin kotisivu' index.htm: IoT -laite palvelee sitä, kun se ei pysty muodostamaan yhteyttä IoT -WiFi -verkkoon (yleensä virheellisten suojaustietojen tai ensimmäisen käyttökerran vuoksi) ja tarjoaa käyttäjälle keinot Anturien etäkonfigurointi ilman uuden SD-sisällön uudelleen salamointia. Se sisältää myös index1.htm, mqtt.htm ja sp0256.htm, nämä ovat paikallisesti palveltuja verkkosivuja, jotka ovat käytettävissä web-selaimen kautta ja mahdollistavat puhesyntetin rajoitetun hallinnan HTTP: n kautta.
  • Suojaustiedot: Tämä sisältää tiedot, joita IoT -laite käyttää käynnistettäessä muodostaakseen yhteyden IoT -WiFi -verkkoon ja MQTT Brokeriin. Speech Synth Configurationin kotisivun kautta lähetetyt tiedot kirjoitetaan tähän tiedostoon ('secvals.txt').
  • Kalibrointitiedot: Tiedostojen sisältämiä tietoja ('calvals1.txt' ja 'calvals2.txt') käytetään tarvittaessa kalibroimaan sisäiset lämpötila-/kosteusanturit. Kalibrointivakiot voidaan kirjoittaa IoT-laitteeseen MQTT-komentojen kautta MQTT-välittäjältä tai vilkuttamalla SD-korttia uudelleen. "calvals1.txt" koskee AM2320 -anturia ja "calvals2.txt" DHT22: ta.
  • Käyttäjän konfiguroitavat järjestelmäarvot: Tämän tiedoston sisältämät tiedot ('confvals.txt'), jonka käyttäjä on valinnut, ohjaavat tiettyjä järjestelmän vastauksia, kuten digitaalisen äänenvoimakkuuden alkuperäinen taso, automaattinen järjestelmävalmiusilmoitus MQTT -välittäjätilauksesta jne.

mDNS -palvelin

Tätä toimintoa käytetään, kun IoT -laite ei ole muodostanut yhteyttä WiFi -verkkoon WiFi -asemana ja siitä on tullut WiFi -tukiasema, joka muistuttaa kotimaista WiFi -reititintä. Tällaisessa reitittimessä muodostat yleensä yhteyden siihen kirjoittamalla esimerkiksi 192.168.1.1: n IP -osoitteen (joka on yleensä painettu laatikkoon kiinnitettyyn tarraan) suoraan selaimesi URL -palkkiin, jonka jälkeen saat kirjautumissivun syötettäväksi käyttäjätunnus ja salasana, joiden avulla voit määrittää laitteen. ESP8266-07 AP-tilassa (tukiasematilassa) laitteen oletusarvo on IP-osoite 192.168.4.1, mutta mDNS-palvelimen ollessa käynnissä sinun on syötettävä vain ihmisystävällinen nimi SPEECHSVR.local selaimen URL-palkkiin katso 'Speech Synth Configurationin kotisivu'.

MQTT -asiakas

MQTT -asiakas tarjoaa kaikki tarvittavat toiminnot; muodosta yhteys IoT -verkon MQTT -välittäjään, tilaa haluamasi aiheet ja julkaise tietyn aiheen hyötykuormia. Lyhyesti sanottuna se sisältää IoT -ydintoimintoja.

HTTP -verkkopalvelin

Tällä verkkopalvelimella on kaksi tarkoitusta;

  1. Jos IoT -laite ei pysty muodostamaan yhteyttä WiFi -verkkoon, jonka SSID, P/W jne. On määritetty SD -kortin suojaustiedostossa, laitteesta tulee tukiasema. Kun yhteys on muodostettu tukiaseman tarjoamaan WiFi -verkkoon, HTTP -verkkopalvelimen avulla voit muodostaa yhteyden suoraan laitteeseen ja muuttaa sen kokoonpanoa HTTP -verkkoselaimen avulla, ja sen tarkoituksena on palvella 'Speech Synth Configuration Kotisivun verkkosivu, joka on myös SD -kortilla.
  2. Kun IoT Retro -puhesynteesilaite on muodostanut yhteyden WiFi -verkkoon ja MQTT -välittäjään, jos se on käytössä, HTTP -verkkopalvelin palvelee automaattisesti HTTP -verkkosivun, joka sallii IoT -laitteen rajoitetun hallinnan puhuakseen tiettyjä kiinteitä lauseita ja mahdollisuuden käynnistä kaksi punaista ja sinistä LED -valoa.

WiFi -asema

Tämä toiminto antaa IoT -laitteelle mahdollisuuden muodostaa yhteys kotimaiseen WiFi -verkkoon käyttämällä tietotiedoston parametreja, ilman tätä IoT -laitteesi ei voi tilata/julkaista MQTT -välittäjää.

WiFi -tukiasema

Kyky tulla WiFi -yhteyspisteeksi on keino, jolla IoT -laitteen avulla voit muodostaa yhteyden siihen ja tehdä muutoksia asetuksiin WiFi -aseman ja selaimen (kuten Safarin kautta Apple iPadissa) kautta. Tämä tukiasema lähettää SSID = "SPEECHSYN" + IoT -laitteen MAC -osoitteen kuusi viimeistä numeroa. Tämän suljetun verkon salasana on mielikuvituksellisesti nimeltään PASSWORD

Vaihe 6: Ohjelmiston yleiskatsaus

Ohjelmiston yleiskatsaus
Ohjelmiston yleiskatsaus
Ohjelmiston yleiskatsaus
Ohjelmiston yleiskatsaus
Ohjelmiston yleiskatsaus
Ohjelmiston yleiskatsaus

Johdanto

Tämän lähdekoodin kääntämiseksi tarvitset paikallisen kopion koodista ja kirjastoista, jotka on kuvattu alla vaiheessa 12, Käytetyt viitteet. Jos et ole varma, miten Arduino -kirjasto asennetaan, siirry tähän.

Yleiskatsaus

Ohjelmisto käyttää tilakonetta, kuten kuvassa 1 on esitetty (koko lähde GitHub-arkistossani täältä). Alla on kuvattu viisi päätilaa;

  • SEN SISÄLLÄ

    Tämä alustustila on ensimmäinen tila, joka syötetään käynnistyksen jälkeen

  • NOCONFIG

    Tämä tila syötetään, jos käynnistyksen jälkeen havaitaan virheellinen tai puuttuva secvals.txt -tiedosto. Tässä tilassa asetussivu on näkyvissä

  • ODOTETTU NYT

    Tämä tila on väliaikainen, syötetty, vaikka WiFi -verkkoyhteyttä ei ole

  • MÄÄRÄ MQTT

    Tämä tila on ohimenevä, syötetään sen jälkeen, kun WiFi -verkkoyhteys on muodostettu, ja vaikka ei ole yhteyttä MQTT -välittäjään kyseisessä verkossa

  • AKTIIVINEN

    Tämä on normaali toimintatila, joka syötetään, kun sekä WiFi -verkkoyhteys että MQTT Broker -yhteys on muodostettu. Tässä tilassa IoT Retro -puhesynteesilaitteen lämpötila, lämpöindeksi ja kosteus julkaistaan säännöllisesti MQTT Brokerille. Tässä tilassa Speech Synthin kotisivu on näkyvissä

Tapahtumat, jotka ohjaavat tilojen välisiä siirtymiä, on kuvattu yllä olevassa kuvassa 1. Siirtymisiä tilojen välillä säätelevät myös seuraavat SecVals -parametrit;

  • Ensimmäinen MQTT -välittäjän IP -osoite. Pisteviiva desimaalimuodossa AAA. BBB. CCC. DDD
  • Toinen MQTT -välittäjäportti. Kokonaisluku muodossa.
  • Kolmas MQTT Broker -yhteys yrittää tehdä ennen siirtymistä STA -tilasta AP -tilaan. Kokonaisluku muodossa.
  • 4. WiFi -verkon SSID. Vapaassa muodossa.
  • Viides WiFi -verkon salasana. Vapaassa muodossa.

Kuten edellä mainittiin, jos IoT -laite ei pysty muodostamaan yhteyttä WiFi -asemana WiFi -verkkoon, jonka SSID ja P/W on määritetty SD -kortille tallennetussa secvals.txt -tiedostossa, IoT -laitteesta tulee tukiasema. Kun se on muodostanut yhteyden tähän tukiasemaan, se näyttää 'Speech Synth Configuration -kotisivun', kuten yllä kuvassa 2 (kirjoittamalla selaimesi URL -osoitepalkkiin joko 'SPEECHSVR.local' tai 192.168.4.1). Tämä kotisivu mahdollistaa IoT Retro Speech Synthesis Device -laitteen uudelleenkonfiguroinnin HTTP -selaimen kautta.

Etäkäyttö ACTIVE -tilassa

Kun laite on yhdistetty MQTT Brokeriin, on mahdollista sekä kalibroida että konfiguroida laite uudelleen MQTT-aihejulkaisujen kautta. Tiedostolla calvals.txt on R/W -käyttöoikeus ja secvals.txt -tiedostossa on vain kirjoitusoikeus.

Kuten edellä mainittiin, myös aktiivisessa tilassa on mahdollista käyttää puhesyntettä HTTP -liitännän kautta kirjoittamalla selaimesi URL -osoitepalkkiin SPEECHSVR.local tai 192.168.4.1. Tämä HTTP -pohjainen käyttöliittymä mahdollistaa puhesyntetin perusohjauksen. Kuvissa 3, 4 ja 5 näkyvät käytettävissä olevat verkkosivut.

Käyttäjän virheenkorjaus

Käynnistysjakson aikana kotelon takaosassa oleva IoT -laitteen vihreä järjestelmä antaa seuraavan virheenkorjauspalautteen;

  • 1 Lyhyt salama: SD -kortilla ei ole määritystiedostoa (secvals.txt)
  • 2 Lyhyet välähdykset: IoT -laite yrittää muodostaa yhteyden WiFi -verkkoon
  • Jatkuva valaistus: IoT -laite yrittää muodostaa yhteyden MQTT Brokeriin
  • Ei pala: Laite on aktiivinen.

IoT Retro -puhesynteesilaitteen toiminta ACTIVE -tilassa

ACTIVE -tilassa ESP8266 siirtyy jatkuvaan silmukkaan, joka kutsuu seuraavia toimintoja; timer_update (), checkTemperatureAndHumidity () ja handleSpeech (). Sen nettotulos on suunniteltu esittämään käyttäjälle HTTP- tai MQTT-käyttöliittymä, joka palvelee saumattomasti puheprosessoriaan foneemeilla ja julkaisee paikallisia ympäristön parametriarvoja MQTT: n kautta.

Lähdekoodissa on kattava luettelo kaikista aiheiden tilauksista ja julkaisuista, mukaan lukien hyötykuorman arvot.

Vaihe 7: Anturin kalibrointi

Anturin kalibrointi
Anturin kalibrointi

Kun IoT -laite käynnistyy, osana käynnistysjaksoa SD -kortilta luetaan kaksi tiedostoa nimeltä 'cavals1.txt' ja 'cavals2.txt'.

Näiden tiedostojen sisältö on kalibrointivakioita, kuten yllä kuvassa 1.

  1. 'cavals1.txt': Ulkoinen AM2320 käyttää
  2. 'cavals2.txt': Sisäinen DHT22 käyttää

Näitä kalibrointivakioita käytetään säätämään kahdesta anturista saadut lukemat, jotta ne ovat yhdenmukaisia vertailulaitteen kanssa. On vielä yksi arvo, joka määrittelee raportointistrategian kullekin laitteelle, ja se on kuvattu alla yhdessä anturien kalibrointimenettelyn kanssa.

Raportointistrategia

Tämä parametri määrittää, miten etäanturi raportoi mahdolliset ympäristön parametriset muutokset sille paikallisesti. Jos arvo 0 on valittu, etäanturi julkaisee havaitsemansa lämpötilan tai kosteuden muutokset aina, kun vastaava anturi luetaan (noin 10 sekunnin välein). Mikä tahansa muu arvo viivästyttää muutoksen julkaisemista 1… 60 minuuttia. Tämän parametrin muokkaaminen mahdollistaa MQTT -verkkoliikenteen optimoinnin. On huomattava, että lämpötila- ja kosteustiedot DHT22 -laitteesta luetaan vuorotellen anturin rajoitusten vuoksi.

Lämpötilan kalibrointi

Kalibroin lämpötila -anturin noudattamalla samaa prosessia kuin tässä vaiheessa 4, käyttäen jälleen yksinkertaista y = mx+c -suhdetta. Käytin IoT -lämpötilaa, kosteusanturia #1 vertailulaitteena. Anturin arvot ovat celsiusasteita.

Kosteuden kalibrointi

Koska minulla ei ole keinoja tallentaa tai edes hallita paikallista ympäristön kosteutta tarkasti, kalibroidaan anturia käytin samanlaista lähestymistapaa kuin edellä tässä vaiheessa 4, käyttäen jälleen anturia #1 vertailuna. Kuitenkin edellä mainittu, olen äskettäin löytänyt verkosta erinomaisen artikkelin, joka kuvaa kosteusantureiden kalibrointia. Voin kokeilla tätä lähestymistapaa joskus tulevaisuudessa. Anturin arvot ovat suhteellisen kosteuden prosenttiosuudessa.

Vaihe 8: MQTT -aiheen nimeämiskäytäntö

MQTT -aiheen nimeämiskokous
MQTT -aiheen nimeämiskokous
MQTT -aiheen nimeämiskokous
MQTT -aiheen nimeämiskokous

Kuten aiemmin mainitussa Instructable -ohjelmassa (tässä) mainittiin, päädyin yllä kuvassa 1 esitettyyn aiheiden nimeämiskäytäntöön.

Nimittäin "AccessMethod/DeviceType/WhichDevice/Action/SubDevice" Se ei ole täydellinen, mutta se mahdollistaa hyödyllisten suodattimien käytön kaikkien anturilähtöjen näyttämiseksi tietylle parametriselle aiheelle, mikä mahdollistaa helpon vertailun kuten kuvassa 2 MQTTSpy: n kanssa.

Tämä projekti on ensimmäinen tapaus, jossa yksi laite sisältää useamman kuin yhden lähteen samantyyppisestä julkaisusta. eli. Kaksi lämpötila-/kosteusanturia sisäisistä ja ulkoisista alilaitteista.

Se tukee myös kohtuullisesti laajennettavia loogisia toimintojen ryhmittelyjä tietyssä IoT -laitteessa.

Toteuttaessani näitä aiheita ohjelmistossa käytin kovakoodattuja aihemerkkijonoja, joissa oli kiinteät, upotetut numeeriset tunnisteet kullekin laitteelle, toisin kuin aiheiden dynaaminen luominen ajon aikana RAM -muistin säästämiseksi ja suorituskyvyn pitämiseksi korkealla.

Huomautus: Jos et ole varma MQTTSpy: n käytöstä, katso täältä MQTT -välittäjän määrittäminen. Osa 2: IoT, kodin automaatio '

Vaihe 9: Virheenkorjaus ja vianetsintä

Virheenkorjaus ja vianetsintä
Virheenkorjaus ja vianetsintä

Yleensä harrastusprojekteissani pyrin mahdollisuuksien mukaan rakentamaan edustavan laitteisto -prototyypin, jota vastaan ohjelmisto on kehitetty. Minulla on harvoin ongelmia ohjelmiston integroinnissa lopulliseen alustan laitteistoon.

Kuitenkin tällä kertaa törmäsin outoon ajoittaiseen vikaan, jossa jotkut foneemit kuulostivat, mutta toiset eivät.

Kun Speech Synth -piirilevyn debuggausta käytettiin jonkin aikaa Arduino Unon avulla foneemien hankkimiseen ja tämän levyn toimivuuden osoittamiseen, otin laajuuden IoT -piirilevyn ja puhesyntetopiirilevyn välisiin I2C -linjoihin. Katso kuva 1 yllä.

Näet selvästi `` sahahampaan ''/eksponentiaalisen reunan I2C -signaaliin jäljet.

Tämä on yleensä osoitus siitä, että I2C -nostoarvot ovat liian korkeat, mikä estää verkkojännitteen palautumisen riittävän nopeasti avoimessa tyhjennyspiirissä.

"Työskentelemällä" rinnastin kaksi smt -ylösvetovastusta R12 ja R13 10K: n kanssa, jotta 4K7 ja varmasti puhesyntti "puhkesivat elämään"

Tämäntyyppinen epäonnistuminen on päinvastainen kuin mitä voi tapahtua, kun virheenkorjataan tämäntyyppisiä projekteja. Yleensä useimmissa Ebaystä ostetuissa I2C -pohjaisissa moduuleissa on yleensä jo asennettu 10K- tai 4K7 -vedin. Jos aiot käyttää> 5 I2C -moduulia, joissa jokaisessa on 4K7 -nosto, kokonaiskuormitus on 940R, mikä on liian suuri isännän lähtövaiheelle. Korjaus olisi purkaa kaikki paitsi yksi sarja ylösvetovastuksia jokaisesta moduulista. Mieluiten se, joka on fyysisesti kauimpana päälliköstä.

Hyödyllinen vinkki ja kannattaa pitää mielessä, kun suunnittelet elektroniikkaa I2C -laitteilla.

Vaihe 10: Suunnittelun testaaminen

Image
Image
Suunnittelun testaaminen
Suunnittelun testaaminen
Suunnittelun testaaminen
Suunnittelun testaaminen

Testaus suoritettiin käyttäen kahta menetelmää; Manuaalinen ja automatisoitu.

Ensimmäinen, manuaalinen ja yleisesti käytetty alkukoodin kehitystyössä oli MQTT Spyn käyttäminen kaikkien käytettävissä olevien tilattujen aiheiden harjoittamiseen ja julkaistujen vastausten tarkistamiseen (kuvattu kuvassa 2 yllä). Koska tämä on manuaalinen prosessi, se voi olla aikaa vievää ja altis virheille koodin kehittämisen edetessä, vaikka manuaalinen suoritus mahdollistaa 100% kattavuuden.

MQTTSpy valittiin manuaaliseen testaukseen, koska se on erinomainen työkalu tietyn hyötykuorman manuaaliseen muotoiluun ja julkaisemiseen mistä tahansa aiheesta helposti. Se näyttää myös selkeän, aikaleimatun lokin, joka on erittäin hyödyllinen virheenkorjauksessa (kuva 3 yllä).

Toinen, automaattinen lähestymistapa otettiin käyttöön, kun lähdekoodista tuli monimutkaisempi (> 3700 riviä). Lisääntynyt monimutkaisuus tarkoittaa pidempiä manuaalisia testaussyklejä ja monimutkaisempia testejä. Testien luotettavuuden, determinismin ja laadun parantamiseksi käytettiin automaattista testausta python -testijohtajan kautta (kuva 1). Katso tämän ohjeen vaihe 10, miten automaattinen testaus otettiin käyttöön. Täysi kopio tässä ohjekirjassa käytetyistä automaattisista testeistä on saatavana täältä.

Video yllä olevasta automaattisesta testisekvenssistä on esitetty yllä. Sekvenssi suorittaa seuraavat vaiheet;

  • Automatisoitu MQTT: n kautta
    • Muodosta yhteys MQTT -runkoon ja ilmoita "Järjestelmävalmis"
    • Harjoitus Vihreä LED
    • Harjoitus Punainen LED
    • Harjoitus sininen LED
    • Tarkista, että Digital Pot toimii
    • Puhu fonemien avulla
    • Puhu foneemien heksadesimaalikoodeilla
    • Puhu käyttämällä korjauslausekkeiden koodeja
    • Vähän tohtori Who ja Daleks hauskaa.
  • Manuaalisesti HTTP/Chromen kautta
    • Harjoitus sininen LED
    • Harjoitus Punainen LED
    • Puhu kiinteitä lauseita 'Steven Quinn', 'System Ready' ja 'Hello World'
    • Onko HTTP -palvelin, palvella
      • Speech Synth Chipin yksityiskohdat
      • MQTT Tiedot

Vaihe 11: Johtopäätös

Johtopäätös
Johtopäätös

Vaikka tiedostojen ja porakoneiden jne. Käyttö vaati paljon vaivaa erityisesti kaiutinritilän osalta, mielestäni tulos on esteettisesti miellyttävä ja pakataan mukavaan, pieneen koteloon. Olisin voinut pienentää sitä, mutta sen olisi pitänyt mennä yhdelle piirilevylle, ja hajosin sen tarkoituksella kahteen, jotta voisin käyttää piirilevyjä myöhemmin muihin hankkeisiin. Joten se on onnellinen kompromissi.

Ohjelmisto toimii hyvin, IoT -laite on ollut vakaassa toiminnassa jo jonkin aikaa ilman ongelmia.

Olen seurannut lämpötilaa ja kosteutta Grafanan kautta ja vertaillut samaan laitteeseen. Nämä kaksi ympäristön arvoa ovat korreloineet hyvin, mikä tarkoittaa, että kalibrointi on kohtuullinen (tai ainakin ne ovat samanlaisia).

Lopetin sanakomennon ('WFD/SpeechTH/1/Word/Command') toteuttamisen, koska aika loppui ja minun piti jatkaa. Voin käydä uudelleen tässä, jos ja kun perustan MySQL-tietokannan. Käytän tällä hetkellä InfluxDB: tä.

Vaihe 12: Käytetyt viitteet

Seuraavia lähteitä käytettiin tämän Instructable -ohjelman yhdistämisessä; IoT Retro Speech Synthesis Device -laitteen lähdekoodi (tämä sisältää kopion kaikesta)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Kirjailija: Nick O'Leary
  • Tarkoitus: Antaa laitteen julkaista tai tilata MQTT -aiheita tietyn välittäjän kanssa
  • Lähde:

DHT.h

  • Lähettäjä: Adafruit
  • Tarkoitus: Arduino -kirjasto DHT11DHT22: lle jne. Lämpö- ja kosteusanturit
  • Lähde:

Adafruit_AM2320.h/Adafruit_Sensor.h

  • Lähettäjä: Adafruit
  • Tarkoitus: Arduino -kirjasto AM2320: lle jne. Lämpö- ja kosteusanturi
  • Lähde:

MCP4561_DIGI_POT.h

  • Kirjailija: Steve Quinn
  • Tarkoitus: Arduino -kirjasto MCP4561 -digitaaliselle potentiometrille
  • Lähde:

Adafruit_MCP23017.h

  • Kirjailija: Steve Quinn
  • Tarkoitus: Arduino -kirjasto MCP23017 I2C -portin laajentimelle. Tämä on Adafruit-valmistajan Adafruit-MCP23017-Arduino-Libraryn GITHub-haarukka.
  • Lähde:

Huvin vuoksi

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

PCB -valmistus

https://jlcpcb.com/

Muiden Arduino -kirjastojen asentaminen

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

Kosteusanturin tarkistaminen ja kalibrointi

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

SP0256-AL2 tuotetiedot

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

Puhelastukauppa

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

Arduino -kilpailu 2019
Arduino -kilpailu 2019
Arduino -kilpailu 2019
Arduino -kilpailu 2019

Toinen sija Arduino -kilpailussa 2019

Suositeltava: