Satura rādītājs:

Retro runas sintēze. Daļa: 12 IoT, mājas automatizācija: 12 soļi (ar attēliem)
Retro runas sintēze. Daļa: 12 IoT, mājas automatizācija: 12 soļi (ar attēliem)

Video: Retro runas sintēze. Daļa: 12 IoT, mājas automatizācija: 12 soļi (ar attēliem)

Video: Retro runas sintēze. Daļa: 12 IoT, mājas automatizācija: 12 soļi (ar attēliem)
Video: ZEITGEIST: MOVING FORWARD | OFFICIAL RELEASE | 2011 2024, Jūlijs
Anonim
Image
Image
Retro runas sintēze. Daļa: 12 IoT, mājas automatizācija
Retro runas sintēze. Daļa: 12 IoT, mājas automatizācija

Šis raksts ir 12. sērija par mājas automatizācijas instrukcijām, kas dokumentē, kā izveidot un integrēt IoT Retro runas sintēzes ierīci esošā mājas automatizācijas sistēmā, ieskaitot visas nepieciešamās programmatūras funkcijas, lai nodrošinātu veiksmīgu izvietošanu vietējā vidē.

1. attēlā redzama pabeigta IoT runas sintezatora ierīce, bet 2. attēlā - visas prototipā izmantotās detaļas, kuras tika samazinātas, lai nonāktu galaproduktā.

Video parāda ierīci darbībā (pārbaudes laikā).

Ievads

Kā minēts iepriekš, šajā pamācībā ir sīki aprakstīts, kā izveidot IoT retro runas sintēzes ierīci, un tās pamatā ir vispārējie instrumenti SP0256-AL2.

Tā galvenais mērķis ir pievienot “vecās skolas” balss sintēzi IoT tīklam. Kāpēc jūs jautājat, kāpēc tā ir “vecā skola”? Nu, tāpēc, ka es biju apmēram 80. gados, kad šīs lietas pirmo reizi tika ražotas, un es saslēdzu vienu ar savu BBC Micro, tāpēc man ir zināma nostaļģija ap SP0256-AL2.

Es daudz vairāk dodu priekšroku izaicinājumam - mēģināt saprast, ko uz zemes saka šī Daleka skanīgā balss, nekā klausīties hipsterīga Amazones atbalss vai Siri blāvos toņos. Kur ir tas izaicinājums, ko es jums jautāju?

Ak, un nemaz nerunājot par to, ka man ir arī “maisa krava” ar “SP0256-AL2” IC.

Ierīce spēj arī nolasīt vietējo temperatūru un mitrumu, tāpēc vēl vairāk paplašina manas esošās IoT infrastruktūras apkārtējās vides mērījumus MQTT/OpenHAB balstītajā IoT tīklā, kas sīki aprakstīts šajā sērijā par mājas automatizāciju (HA), pamatojoties uz atkārtoti izmantoto kodu, kas ņemts no šejienes.

Tās centrā ir ESP8266-07, kas ir atbildīgs par MQTT sakariem un visas sistēmas funkcionalitātes kontroli (piekļuve SD kartei, LED vadība, temperatūras/mitruma noteikšana, skaļuma kontrole, runas sintēze). Ierīce ir pilnībā konfigurējama, izmantojot teksta failus, kas saglabāti vietējā SD karte, lai gan kalibrēšanas un tīkla drošības parametrus var ieprogrammēt arī, izmantojot attālās MQTT publikācijas.

Kādas detaļas man ir vajadzīgas?

Materiālu sarakstu skatīt šeit

Kāda programmatūra man ir nepieciešama?

  • Arduino IDE 1.6.9,
  • Arduino IDE ir konfigurēts programmēt ESP8266-07 (tāds pats kā šis). Pēc tam konfigurējiet IDE, kā norādīts detalizētajā aprakstā, kas sniegts programmatūras skicē,
  • Python v3.5.2, ja vēlaties izmantot automātiskās pārbaudes iespējas, sīkāku informāciju skatiet šeit

Kādi rīki man ir nepieciešami?

  • Mikroskops vismaz x3 (SMT lodēšanai),
  • Molex savienotāja gofrēšanas instruments (JST savienotājiem),
  • SMD lodāmurs (ar šķidruma plūsmas pildspalvu un lodēšanas serdi),
  • Skrūvgrieži (dažādi),
  • Siltuma lielgabals,
  • Urbji (dažādi),
  • Iegremdējams rokas instruments,
  • Faili (dažādi),
  • Dremel (dažādi uzgaļi),
  • Izturīgs vice (mazs un liels, piemēram, melns un klāja darba biedrs),
  • Skalpelis,
  • Vernier suporti (izmanto ražošanas mērīšanai un noderīgi PCB sastāvdaļu izmēru noteikšanai),
  • Uzgriežņu atslēgas un uzgriežņu uzgriežņi (dažādi),
  • Spēcīgas pincetes (SMT lodēšanai),
  • Jaunākais zāģis,
  • Urbis (ar dažādiem urbjiem),
  • Smalkas knaibles (ar smailu un smailu degunu),
  • Skalošanas griezēji,
  • DMM ar skaņas nepārtrauktības pārbaudi,
  • Divkanālu digitālais tvērums (ērts signālu atkļūdošanai)

Kādas prasmes man vajadzīgas?

  • Daudz pacietības,
  • Liela roku veiklība un lieliska roku/acu koordinācija,
  • Lieliskas lodēšanas prasmes,
  • Teicamas ražošanas prasmes,
  • Spēja vizualizēt 3 dimensijās,
  • Dažas zināšanas par programmatūras izstrādi, izmantojot “C” (ja vēlaties saprast avota kodu),
  • Dažas zināšanas par Python (kā instalēt un palaist skriptus, ja vēlaties izmantot automātisko testēšanu),
  • Zināšanas par Arduino un tā IDE,
  • Labas zināšanas elektronikā,
  • Zināšanas par jūsu mājas tīklu.

Tēmas, uz kurām attiecas

  • Lietotāja rokasgrāmata
  • Ķēdes pārskats
  • PCB ražošana un montāža
  • Izgatavošana
  • Programmatūras sistēmas pārskats
  • Programmatūras pārskats
  • Sensora kalibrēšana
  • Konvencija par tēmu nosaukšanu MQTT
  • Atkļūdošana un kļūdu meklēšana
  • Dizaina pārbaude
  • Secinājums
  • Izmantotās atsauces

Sērijas saites 11. daļai: IoT darbvirsmas konsole. Daļa: 11 IoT, mājas automatizācija

1. darbība: lietotāja rokasgrāmata

Lietotāja rokasgrāmata
Lietotāja rokasgrāmata
Lietotāja rokasgrāmata
Lietotāja rokasgrāmata
Lietotāja rokasgrāmata
Lietotāja rokasgrāmata

1. attēlā redzama retro runas sintezatora priekšpuse, bet 2. attēlā - aizmugure.

Korpuss priekšpusē

  1. Skaļruņu grils
  2. 3,5 mm austiņu ligzda: galvenais skaļrunis ir atspējots, ja ir ievietota 3,5 mm ligzda.
  3. Sarkana gaismas diode: Šī gaismas diode iedegas, kamēr tiek runāts vārds, kad runa tika uzsākta, izmantojot HTTP pieprasījumu.
  4. Zils LED: Šis gaismas diode iedegas, kamēr tiek runāts vārds, kad runa tika uzsākta, izmantojot MQTT IoT pieprasījumu.

Korpuss aizmugurē

  1. Atiestatīšanas poga: izmanto, lai grūti atiestatītu ESP8266-07 IoT ierīci.
  2. Zibspuldzes poga: lietojot kopā ar atiestatīšanas pogu, ļauj atkārtoti mirgot ESP8266-07.
  3. WiFi antenas spraudnis (SMA spraudnis): ārējai WiFi antenai, kas nodrošina vismazāko RF ceļa vājināšanos, jo aizdare ir alumīnija.
  4. Ārējās programmēšanas ports: lai novērstu nepieciešamību atskrūvēt korpusu, lai piekļūtu ESP8266-07 atkārtotas programmēšanas nolūkos. ESP8266-07 programmēšanas tapas ir izvestas uz ārējo programmēšanas portu. 3. attēls ir programmēšanas adapteris.
  5. Zaļā gaismas diode: šī ir IoT sistēmas gaismas diode, un to izmanto, lai norādītu ierīces diagnostikas statusu un sāknēšanu un darbības laikā.
  6. Ārējais temperatūras/mitruma sensors (AM2320)
  7. SD kartes slots: tas satur visus konfigurācijas/drošības datus kopā ar tīmekļa servera lapām.
  8. 2,1 mm barošanas ligzda 6vdc

2. darbība: shēmas pārskats

Ķēdes pārskats
Ķēdes pārskats
Ķēdes pārskats
Ķēdes pārskats

Ierīce Retro Speech Synth sastāv no diviem PCB;

  • RetroSpeechSynthIoTBoard: Šī ir vispārīga, atkārtoti lietojama ESP8266-07/12/12E/13 PCB
  • RetroSpeechSynthBoard: Šī ir vispārīga SP0256-AL2 PCB

Retro runas sintezēšanas IoT padome

Šī plate ļauj vai nu tieši lodēt ESP8266-07/12/12E/13, vai 0,1 collu slīpuma kontaktligzdas, kas paredzētas ESP8266 nesēja PCB.

Tāfele tika izstrādāta, lai paplašinātu tās I/O, izmantojot I2C savienojumu, un var atbalstīt 3 vai 3 vai 5 voltu barošanas līmeņus, izmantojot Q1, Q2, R8-13.

Savienojumu ar plāksni var panākt, izmantojot vienu no divām galvenēm J2 un J4, 8 virzienu DIL IDC lenti vai 5 virzienu JST/Molex.

U2 un U3 noteikumi 3.3v un 5v uz kuģa piegādes regulēšanu. Alternatīvi, ja ir nepieciešama lielāka strāvas jauda, seriālos šunta regulētājus var pievienot, izmantojot attiecīgi savienotājus J10 un J11.

Savienotāji J1 un J3 piedāvā ārēju SD karšu atbalstu, izmantojot SPI. J1 ir paredzēts astoņvirzienu Molex, un J3 ir tieša tapa tapas saderības atbalstam, kas atrodas pie plaukta esošās SD kartes PCB ar 3v3 vai 5v atbalstu.

Retro runas sintezēšanas padome

Šīs plates vadība tiek veikta, izmantojot I2C 5v atbilstošu savienojumu, izmantojot J1, J5 vai J6, četrvirzienu JST/Molex, 8 virzienu DIL IDC vai 8 virzienu IDC lentes savienotāju.

U2 MPC23017 nodrošina I2C paralēlo saskarni ar U3 SP0256-AL2 un gaismas diodēm D1 (zaļa), D2 (sarkana) un D3 (zila). Speech Synth izeja tiek padota audio pastiprinātājam CR1 TBA820M, izmantojot analogo podu RV1 vai digitālo podu U1 MCP4561.

Digitālo podu U1 kontrolē arī ar 5V saderīgu I2C.

Piezīme: ESP8266-07 ierīce tika izvēlēta, jo tai ir integrēts IPX RF savienotājs, kas ļauj alumīnija korpusam pievienot ārēju WiFi antenu.

3. solis: PCB ražošana un montāža

PCB ražošana un montāža
PCB ražošana un montāža
PCB ražošana un montāža
PCB ražošana un montāža
PCB ražošana un montāža
PCB ražošana un montāža
PCB ražošana un montāža
PCB ražošana un montāža

1. un 2. attēlā parādīti pabeigtie un vadu PCB mezgli, kas atrodas uz alumīnija korpusa pamatnes.

Abas PCB tika izstrādātas, izmantojot Kicad v4.0.7, ko ražoja JLCPCB un es samontēju un parādīts iepriekš no 3. līdz 13. attēlam.

4. solis: izgatavošana

Izgatavošana
Izgatavošana
Izgatavošana
Izgatavošana
Izgatavošana
Izgatavošana

1. attēlā parādīts visu saliekamo detaļu Haynes manuālais stila izkārtojums pirms galīgās montāžas.

Attēli 2… 5 parāda dažādus kadrus korpusa izgatavošanas laikā ar minimālu atstarpi.

5. darbība: programmatūras sistēmas pārskats

Programmatūras sistēmas pārskats
Programmatūras sistēmas pārskats
Programmatūras sistēmas pārskats
Programmatūras sistēmas pārskats

Šī IoT retro runas sintēzes ierīce satur sešus galvenos programmatūras komponentus, kā parādīts 1. attēlā.

SD karte

Šī ir ārējā SD SPI zibspuldzes kartotēkas sistēma, un to izmanto šādas informācijas glabāšanai (skat. 2. attēlu);

  • Ikonas un “Runas sintezēšanas konfigurācijas sākumlapa” index.htm: to nodrošina IoT ierīce, ja tā nevar izveidot savienojumu ar jūsu IoT WiFi tīklu (parasti nepareizas drošības informācijas vai pirmās lietošanas dēļ) un nodrošina lietotājam līdzekļus Lai attālināti konfigurētu sensorus bez nepieciešamības atkārtoti uzliesmot jaunu SD saturu. Tam ir arī indeksi1.htm, mqtt.htm un sp0256.htm, šīs ir lokāli apkalpotas tīmekļa lapas, kas pieejamas tīmekļa pārlūkprogrammā, ļaujot ierobežotā veidā kontrolēt runas sintezatoru. izmantojot
  • Drošības informācija: tajā ir informācija, ko IoT ierīce ieslēdz, lai izveidotu savienojumu ar jūsu IoT WiFi tīklu un MQTT Broker. Informācija, kas iesniegta, izmantojot runas sintezēšanas konfigurācijas mājas lapu, tiek ierakstīta šajā failā (“secvals.txt”).
  • Kalibrēšanas informācija: failos ietvertā informācija (“calvals1.txt” un “calvals2.txt”) tiek izmantota, lai nepieciešamības gadījumā kalibrētu iebūvēto temperatūras/mitruma sensoru. Kalibrēšanas konstantes var ierakstīt IoT ierīcē, izmantojot MQTT starpnieka MQTT komandas vai atkārtoti mirgot SD karti. “calvals1.txt” attiecas uz sensoru AM2320 un “calvals2.txt” uz DHT22.
  • Lietotāja konfigurējamas sistēmas vērtības: šajā failā esošā informācija ('confvals.txt'), ko izvēlējies lietotājs, kontrolē noteiktas sistēmas atbildes, piemēram, sākotnējo digitālā skaļuma līmeni, automātisku paziņojumu par sistēmas gatavību MQTT brokera abonementā utt.

mDNS serveris

Šī funkcija tiek izmantota, ja IoT ierīcei nav izdevies izveidot savienojumu ar jūsu WiFi tīklu kā WiFi staciju un tā vietā tā ir kļuvusi par WiFi piekļuves punktu, kas ir līdzīgs vietējam WiFi maršrutētājam. Šāda maršrutētāja gadījumā jūs parasti izveidojat savienojumu ar to, ievadot IP adresi, piemēram, 192.168.1.1 (parasti uzdrukāts uz lodziņa piestiprinātas etiķetes), tieši pārlūkprogrammas URL joslā, pēc kuras jūs saņemsiet pieteikšanās lapu, lai ievadītu lietotājvārdu un paroli, lai varētu konfigurēt ierīci. ESP8266-07 AP režīmā (piekļuves punkta režīmā) ierīces noklusējuma IP adrese ir 192.168.4.1, taču, darbojoties mDNS serverim, pārlūkprogrammas URL joslā ir jāievada tikai cilvēkiem draudzīgs nosaukums “SPEECHSVR.local”. skatiet 'Runas sintezēšanas konfigurācijas sākumlapu'.

MQTT klients

MQTT klients nodrošina visu nepieciešamo funkcionalitāti; izveidojiet savienojumu ar savu IoT tīkla MQTT brokeri, abonējiet izvēlētās tēmas un publicējiet konkrētās tēmas derīgās slodzes. Īsāk sakot, tas nodrošina IoT pamatfunkcijas.

HTTP tīmekļa serveris

Šim tīmekļa serverim ir divi mērķi;

  1. Ja IoT ierīce nevar izveidot savienojumu ar WiFi tīklu, kura SSID, P/W utt. Ir definēts SD kartē esošajā drošības informācijas failā, ierīce kļūs par piekļuves punktu. Kad ir izveidots savienojums ar piekļuves punkta nodrošināto WiFi tīklu, HTTP tīmekļa servera klātbūtne ļauj tieši izveidot savienojumu ar ierīci un mainīt tās konfigurāciju, izmantojot HTTP tīmekļa pārlūkprogrammu, kuras mērķis ir kalpot runas sintezēšanas konfigurācijai. Mājas lapas tīmekļa vietne, kas tiek glabāta arī SD kartē.
  2. Kad IoT Retro runas sintēzes ierīce ir izveidojusi savienojumu ar WiFi tīklu un MQTT brokeri, ja tam piekļūst, HTTP tīmekļa serveris automātiski apkalpos HTTP tīmekļa lapu, ļaujot ierobežotai IoT ierīces kontrolei izrunāt fiksētas frāzes un iespēju ieslēdziet divas priekšējās sarkanās un zilās gaismas diodes.

WiFi stacija

Šī funkcionalitāte dod IoT ierīcei iespēju izveidot savienojumu ar vietējo WiFi tīklu, izmantojot drošības informācijas faila parametrus, bez tā jūsu IoT ierīce nevarēs abonēt/publicēt MQTT brokeri.

WiFi piekļuves punkts

Iespēja kļūt par WiFi piekļuves punktu ir līdzeklis, ar kuru IoT ierīce ļauj jums izveidot savienojumu ar to un veikt izmaiņas konfigurācijā, izmantojot WiFi staciju un pārlūkprogrammu (piemēram, Safari Apple iPad ierīcē). Šis piekļuves punkts pārraida SSID = "SPEECHSYN" + IoT ierīces MAC adreses pēdējos 6 ciparus. Šī slēgtā tīkla parole ir iedomāti nosaukta par PASSWORD

6. darbība: programmatūras pārskats

Programmatūras pārskats
Programmatūras pārskats
Programmatūras pārskats
Programmatūras pārskats
Programmatūras pārskats
Programmatūras pārskats

Preambula

Lai veiksmīgi apkopotu šo avota kodu, jums būs nepieciešama koda vietējā kopija un bibliotēkas, kas aprakstītas 12. darbībā, Izmantotās atsauces. Ja neesat pārliecināts, kā instalēt Arduino bibliotēku, dodieties šeit.

Pārskats

Programmatūra izmanto stāvokļa mašīnu, kā parādīts 1. attēlā (pilna avota kopija manā GitHub repozitorijā šeit). Ir 5 galvenie stāvokļi, kā izklāstīts zemāk;

  • TAJĀ

    Šis inicializācijas stāvoklis ir pirmais stāvoklis, kas ievadīts pēc ieslēgšanas

  • NOCONFIG

    Šis stāvoklis tiek ievadīts, ja pēc ieslēgšanas tiek konstatēts nederīgs vai trūkstošs fails secvals.txt. Šajā stāvoklī ir redzama konfigurācijas lapa

  • GAIDA ZR

    Šis stāvoklis ir pārejošs, ievadīts, kamēr nav WiFi tīkla savienojuma

  • GAIDA MQTT

    Šis stāvoklis ir pārejošs, tas tiek ievadīts pēc tam, kad ir izveidots WiFi tīkla savienojums, un, kamēr šajā tīklā nav savienojuma ar MQTT brokeri

  • AKTĪVS

    Tas ir normāls darbības stāvoklis, kas ievadīts, tiklīdz ir izveidots gan WiFi tīkla savienojums, gan MQTT Broker savienojums. Tieši šajā stāvoklī MQTT brokerim regulāri tiek publicēta temperatūra, siltuma indekss un mitrums IoT Retro runas sintēzes ierīcē. Šajā stāvoklī ir redzama runas sintezēšanas sākumlapa

Notikumi, kas kontrolē pārejas starp stāvokļiem, ir aprakstīti 1. attēlā iepriekš. Pārejas starp valstīm nosaka arī šādi SecVals parametri;

  • 1. MQTT brokera IP adrese. Punktveida decimālā formā AAA. BBB. CCC. DDD
  • 2. MQTT brokeru osta. Vesela skaitļa formā.
  • Trešais MQTT Broker savienojums mēģina izveidot pirms pārslēgšanās no STA režīma uz AP režīmu. Vesela skaitļa formā.
  • 4. WiFi tīkla SSID. Brīvā formā.
  • Piektā WiFi tīkla parole. Brīvā formā.

Kā minēts iepriekš, ja IoT ierīce nevar izveidot savienojumu ar WiFi staciju ar WiFi tīklu, kura SSID un P/W ir definēts failā secvals.txt, kas atrodas SD kartē, IoT ierīce kļūs par piekļuves punktu. Kad būs izveidots savienojums ar šo piekļuves punktu, tas parādīs runas sintezēšanas konfigurācijas sākumlapu, kā parādīts 2. attēlā (pārlūkprogrammas URL adreses joslā ievadot SPEECHSVR.local vai 192.168.4.1). Šī mājas lapa ļauj atkārtoti konfigurēt IoT Retro runas sintēzes ierīci, izmantojot HTTP pārlūkprogrammu.

Attālā piekļuve, atrodoties AKTĪVĀ stāvoklī

Kad ir izveidots savienojums ar MQTT brokeri, ir iespējams gan atkārtoti kalibrēt, gan pārkonfigurēt ierīci, izmantojot MQTT tēmu publikācijas. Failam calvals.txt ir R/W piekļuve, un secvals.txt ir atklāta tikai rakstīšanas piekļuve.

Tāpat kā minēts iepriekš, aktīvajā režīmā ir iespējams piekļūt runas sintezācijai, izmantojot HTTP saskarni, pārlūkprogrammas URL adreses joslā ievadot “SPEECHSVR.local” vai 192.168.4.1. Šis uz HTTP balstītais interfeiss ļauj vienkārši kontrolēt runas sintezēšanu. 3., 4. un 5. attēlā ir redzamas pieejamās tīmekļa lapas.

Lietotāja atkļūdošana

Sāknēšanas secībā IoT ierīces zaļā sistēma, kas novietota korpusa aizmugurē, sniedz šādu atkļūdošanas atgriezenisko saiti;

  • 1 Īsa zibspuldze: SD kartē nav konfigurācijas faila (secvals.txt)
  • 2 Īsi mirgo: IoT ierīce mēģina izveidot savienojumu ar WiFi tīklu
  • Nepārtraukts apgaismojums: IoT ierīce mēģina izveidot savienojumu ar MQTT Broker
  • Izslēgts: ierīce ir aktīva.

IoT Retro runas sintēzes ierīces funkcionalitāte AKTĪVĀ stāvoklī

Kad AKTĪVĀ stāvoklī, ESP8266 ievada nepārtrauktu cilpu, izsaucot šādas funkcijas; timer_update (), checkTemperatureAndHumidity () un handleSpeech (). Tā tīrais rezultāts ir paredzēts, lai lietotājam parādītu HTTP vai MQTT saskarni, nemanāmi apkalpotu tā iebūvēto runas procesoru ar fonēmām pēc pieprasījuma un publicētu vietējās apkārtējās vides parametru vērtības, izmantojot MQTT.

Avota kodā ir iekļauts visaptverošs visu tēmu abonementu un publikāciju saraksts, ieskaitot lietderīgās slodzes vērtības.

7. solis: Sensora kalibrēšana

Sensora kalibrēšana
Sensora kalibrēšana

Ieslēdzot IoT ierīci, sāknēšanas secības ietvaros no SD kartes tiek nolasīti divi faili ar nosaukumu “cavals1.txt” un “cavals2.txt”.

Šo failu saturs ir kalibrēšanas konstantes, kā norādīts iepriekš 1. attēlā.

  1. 'cavals1.txt': izmanto ārējais AM2320
  2. 'cavals2.txt': izmanto iekšējais DHT22

Šīs kalibrēšanas konstantes tiek izmantotas, lai pielāgotu no diviem sensoriem iegūtos rādījumus, lai tie atbilstu atsauces ierīcei. Ir vēl viena vērtība, kas nosaka pārskatu sniegšanas stratēģiju katrai ierīcei un ir aprakstīta zemāk kopā ar sensoru kalibrēšanas procedūru.

Ziņošanas stratēģija

Šis parametrs nosaka, kā tālvadības sensors ziņo par jebkurām apkārtējās vides parametru izmaiņām. Ja ir izvēlēta vērtība 0, tālvadības sensors publicēs visas izmaiņas, ko tā redz temperatūrā vai mitrumā katru reizi, kad tiek nolasīts attiecīgais sensors (apmēram ik pēc 10 sekundēm). Jebkura cita vērtība aizkavēs izmaiņu publicēšanu par 1… 60 minūtēm. Šī parametra modificēšana ļauj optimizēt MQTT tīkla trafiku. Jāatzīmē, ka temperatūras un mitruma dati no DHT22 tiek nolasīti pārmaiņus sensora ierobežojumu dēļ.

Temperatūras kalibrēšana

Lai kalibrētu temperatūras sensoru, es izpildīju to pašu procesu, kas aprakstīts šeit, 4. solī, atkal izmantojot vienkāršu y = mx+c attiecību. Kā atsauces ierīci es izmantoju IoT temperatūru, mitruma sensoru #1. Sensora vērtības ir norādītas pēc Celsija grādiem.

Mitruma kalibrēšana

Tā kā man nav līdzekļu, lai precīzi reģistrētu vai pat kontrolētu vietējo apkārtējā gaisa mitrumu, lai kalibrētu sensoru, es izmantoju līdzīgu pieeju iepriekš aprakstītajai 4. darbībai, atkal izmantojot sensoru #1 kā atsauci. Tomēr iepriekš teiktais, es nesen tīmeklī atradu lielisku rakstu, kurā aprakstīts, kā kalibrēt mitruma sensorus. Es varētu kādreiz nākotnē izmēģināt šo pieeju. Sensora vērtības ir relatīvā mitruma %vecumā.

8. solis: MQTT tēmu nosaukšanas konvencija

Konvencija par tēmu nosaukšanu MQTT
Konvencija par tēmu nosaukšanu MQTT
Konvencija par tēmu nosaukšanu MQTT
Konvencija par tēmu nosaukšanu MQTT

Kā minēts iepriekšējā pamācībā (šeit), es atrisināju tēmas nosaukšanas konvenciju, kas aprakstīta 1. attēlā.

Proti, "AccessMethod/DeviceType/WhichDevice/Action/SubDevice" Tas nav ideāls, taču tas ļauj izmantot noderīgus filtrus, lai redzētu visas sensora izejas noteiktā parametru tēmā, tādējādi ļaujot viegli salīdzināt, kā parādīts 2. attēlā ar MQTTSpy.

Šis projekts ir pirmais gadījums, kad vienā ierīcē ir vairāki viena veida publikāciju izcelsmes avoti. ti. Divi temperatūras/mitruma sensori no iekšējām un ārējām apakšierīcēm.

Tas arī atbalsta pietiekami paplašināmas loģiskas funkcionalitātes grupas noteiktā IoT ierīcē.

Īstenojot šīs tēmas programmatūrā, es izmantoju grūti kodētas tēmu virknes ar fiksētiem, iegultiem ciparu identifikatoriem katrai ierīcei, nevis dinamiski ģenerējot tēmas izpildes laikā, lai ietaupītu RAM un saglabātu augstu veiktspēju.

Piezīme. Ja neesat pārliecināts, kā izmantot MQTTSpy, skatiet šeit 'MQTT brokera iestatīšana'. 2. daļa: IoT, mājas automatizācija”

9. darbība: atkļūdošana un kļūdu meklēšana

Atkļūdošana un kļūdu meklēšana
Atkļūdošana un kļūdu meklēšana

Kopumā saviem hobiju projektiem, ja iespējams, es mēdzu izveidot reprezentatīvu aparatūras prototipu, pret kuru programmatūra ir izstrādāta, man reti rodas problēmas, integrējot programmatūru galīgajā platformas aparatūrā.

Tomēr šajā gadījumā es saskāros ar dīvainu periodisku kļūdu, kuras dēļ dažas fonēmas skanēja, bet citas ne.

Pēc sākotnējās Speech Synth PCB atkļūdošanas, izmantojot Arduino Uno, lai iegūtu fonēmas un pierādītu, ka šī plate darbojas, es izmantoju I2C līnijas starp IoT PCB un Speech Synth PCB. Skatīt 1. attēlu iepriekš.

Uz pēdām var skaidri redzēt “zāģa zobu”/eksponenciālo malu līdz I2C signālam.

Tas parasti norāda, ka I2C pievilkšanas vērtības ir pārāk augstas, neļaujot līnijas spriegumam atjaunoties pietiekami ātri atvērtā kanalizācijas ķēdē.

Kā “darbs apkārt” es paralēlēju divus smt pull up rezistorus R12 un R13 ar 10K, lai iegūtu 4K7 un, protams, runas sintēze “iedzīvojās”

Šāda veida kļūmes ir pretējas tam, kas var notikt, atkļūdojot šāda veida projektus. Parasti lielākajai daļai no I2C balstītajiem moduļiem, kas iegādāti no ebay, mēdz būt jau uzstādīti 10K vai 4K7 pievilkšanas mehānismi. Ja plānojat izmantot> 5 I2C moduļus, katrs ar 4K7 pull up, tad kopējā slodze ir 940R, kas būs pārāk liela priekšnieka izvades stadijai. Labojums būtu atdalīt visus moduļus, izņemot vienu uzvilkšanas rezistoru komplektu katrā modulī. Vēlams to, kurš fiziski atrodas vistālāk no meistara.

Noderīgs padoms un vērts to paturēt prātā, veidojot elektroniku ar I2C ierīcēm.

10. darbība: dizaina pārbaude

Image
Image
Dizaina pārbaude
Dizaina pārbaude
Dizaina pārbaude
Dizaina pārbaude

Pārbaude tika veikta, izmantojot divas metodikas; Manuāli un automatizēti.

Pirmā, manuālā un parasti izmantotā sākotnējā koda izstrādes laikā bija MQTT Spy izmantošana, lai izmantotu visas pieejamās abonētās tēmas un pārbaudītu publicētās atbildes (attēlots 2. attēlā iepriekš). Tā kā šis ir manuāls process, koda izstrādes gaitā tas var būt laikietilpīgs un pakļauts kļūdām, lai gan manuāla izpilde nodrošina 100% pārklājumu.

MQTTSpy tika izvēlēts manuālai pārbaudei, jo tas ir lielisks rīks, lai ar rokām formatētu noteiktu lietderīgo slodzi un to viegli publicētu jebkurā tēmā. Tas parāda arī skaidru žurnālu ar laika zīmogu, kas ir ļoti noderīgs atkļūdošanai (3. attēls iepriekš).

Otra, automatizēta pieeja tika izmantota, jo avota kods kļuva sarežģītāks (> 3700 rindas). Palielināta sarežģītība nozīmē ilgākus manuālos testēšanas ciklus un sarežģītākus testus. Lai uzlabotu pārbaužu uzticamību, determinismu un kvalitāti, tika izmantota automatizēta testēšana, izmantojot python testu vadītāju (1. attēls). Skatiet 10. darbību šajā pamācībā par to, kā tika ieviesta automatizētā testēšana. Pilna šajā instrukcijā izmantoto automatizēto testu kopija ir pieejama šeit.

Iepriekš ir parādīts video par automātiskās pārbaudes secību. Secība veic šādas darbības;

  • Automatizēts, izmantojot MQTT

    • Pievienojieties MQTT mugurkaulam un paziņojiet par “System Ready”
    • Vingrinājums Zaļā gaismas diode
    • Vingrinājums Sarkana gaismas diode
    • Exercise Blue LED
    • Pārbaudiet, vai Digital Pot darbojas
    • Runājiet, izmantojot fonēmas
    • Runājiet, izmantojot fonēm heksadecimālos kodus
    • Runājiet, izmantojot labotus frāžu kodus
    • Nedaudz Dr Who un Daleks jautri.
  • Manuāli, izmantojot

    • Vingrinājuma zilā gaismas diode
    • Vingrinājums Sarkana gaismas diode
    • Runājiet fiksētas frāzes “Stīvens Kvins”, “Sistēma gatava” un “Sveika pasaule”
    • Ir HTTP serveris, apkalpo

      • Sīkāka informācija par runas sintezēšanas mikroshēmu
      • Sīkāka informācija par MQTT

11. solis. Secinājums

Secinājums
Secinājums

Lai gan tas prasīja daudz pūļu ar failiem un urbjiem utt., Īpaši skaļruņu režģim, es domāju, ka rezultāts ir estētiski pievilcīgs un iesaiņots jaukā, nelielā korpusā. Es būtu varējis to samazināt, bet tam vajadzēja iet uz vienu PCB, un es to apzināti sadalīju divās daļās, lai vēlāk varētu atkārtoti izmantot PCB citiem projektiem. Tātad tas ir laimīgs kompromiss.

Programmatūra darbojas labi, IoT ierīce jau ilgu laiku ir stabili darbojusies bez problēmām.

Esmu uzraudzījis temperatūru un mitrumu, izmantojot Grafana, un salīdzinājis ar ierīci, kas atrodas līdzās. Abas apkārtējās vērtības ir labi korelējušas, kas nozīmē, ka kalibrēšana ir pamatota (vai vismaz tās ir līdzīgas).

Es pārtraucu īstenot vārdu komandu ('WFD/SpeechTH/1/Word/Command'), jo man pietrūka laika un man vajadzēja turpināt. Es varu to vēlreiz apmeklēt, ja un kad es izveidoju MySQL datu bāzi. Šobrīd es izmantoju InfluxDB.

12. darbība. Izmantotās atsauces

Lai apkopotu šo pamācību, tika izmantoti šādi avoti; IoT Retro runas sintēzes ierīces avota kods (tajā ir visa kopija)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Autors: Niks O'Līrijs
  • Mērķis: Ļauj ierīcei publicēt vai abonēt MQTT tēmas ar noteiktu starpnieku
  • No:

DHT.h

  • Autors: Adafruit
  • Mērķis: Arduino bibliotēka DHT11DHT22 utt. Temperatūras un mitruma sensori
  • No:

Adafruit_AM2320.h/Adafruit_Sensor.h

  • Autors: Adafruit
  • Mērķis: Arduino bibliotēka AM2320 utt. Temperatūras un mitruma sensors
  • No:

MCP4561_DIGI_POT.h

  • Autors: Stīvs Kvins
  • Mērķis: Arduino bibliotēka digitālajam potenciometram MCP4561
  • No:

Adafruit_MCP23017.h

  • Autors: Stīvs Kvins
  • Mērķis: Arduino bibliotēka MCP23017 I2C portu paplašinātājam. Šī ir GITHub dakša no Adafruit-MCP23017-Arduino-Library, no Adafruit.
  • No:

Prieka pēc

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

PCB ražošana

https://jlcpcb.com/

Papildu Arduino bibliotēku instalēšana

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

Kā pārbaudīt un kalibrēt mitruma sensoru

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

SP0256-AL2 datu lapa

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

Runas mikroshēmu veikals

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

Arduino konkurss 2019
Arduino konkurss 2019
Arduino konkurss 2019
Arduino konkurss 2019

Otrā vieta Arduino konkursā 2019

Ieteicams: