Turinys:

Retro kalbos sintezė. Dalis: 12 daiktų internetas, namų automatika: 12 žingsnių (su paveikslėliais)
Retro kalbos sintezė. Dalis: 12 daiktų internetas, namų automatika: 12 žingsnių (su paveikslėliais)

Video: Retro kalbos sintezė. Dalis: 12 daiktų internetas, namų automatika: 12 žingsnių (su paveikslėliais)

Video: Retro kalbos sintezė. Dalis: 12 daiktų internetas, namų automatika: 12 žingsnių (su paveikslėliais)
Video: VIRTI KIAUŠINIAI 8 VALANDAS. KHAMINAS KAZANĖJE 10, 12, 24 VALANDOS GAMYBOS. RECEPTAS 2024, Liepa
Anonim
Image
Image
Retro kalbos sintezė. Dalis: 12 daiktų internetas, namų automatika
Retro kalbos sintezė. Dalis: 12 daiktų internetas, namų automatika

Šis straipsnis yra 12 -asis iš namų automatikos instrukcijų serijos, dokumentuojančios, kaip sukurti ir integruoti „IoT Retro Speech Synthesis Device“į esamą namų automatikos sistemą, įskaitant visas būtinas programinės įrangos funkcijas, kad būtų galima sėkmingai įdiegti buitinėje aplinkoje.

1 paveiksle pavaizduotas užbaigtas IoT kalbos sintezės įrenginys, o 2 paveiksle - visos prototipui naudojamos sudedamosios dalys, kurios buvo sumažintos formos koeficientu, kad patektų į galutinį produktą.

Vaizdo įraše parodyta, kaip prietaisas veikia (bandymo metu).

Įvadas

Kaip minėta aukščiau, šioje instrukcijoje pateikiama išsami informacija apie tai, kaip sukurti „IoT Retro Speech Synthesis“įrenginį, kuris pagrįstas „General Instruments SP0256-AL2“.

Pagrindinis jo tikslas yra pridėti „senosios mokyklos“balso sintezę prie daiktų interneto tinklo. Kodėl galite klausti „senosios mokyklos“? Na, nes aš buvau maždaug devintajame dešimtmetyje, kai šie daiktai buvo pirmą kartą pagaminti, ir aš sujungiau vieną su savo „BBC Micro“, todėl man yra tam tikra nostalgija aplink SP0256-AL2.

Man labiau patinka iššūkis - pabandyti išsiaiškinti, ką žemėje sako šis Daleko skambesio balsas, nei klausytis nuobodžių hipsteriško „Amazon“aido ar „Siri“tonų. Kur yra jūsų iššūkis?

O jau nekalbant apie tai, kad aš taip pat turiu „maišo krovinį“su „SP0256-AL2“IC.

Įrenginys taip pat gali nuskaityti vietinę temperatūrą ir drėgmę, todėl dar labiau išplečia mano esamos daiktų interneto infrastruktūros prijungimo prie MQTT/OpenHAB pagrįstą IoT tinklą, kuris išsamiai aprašytas šioje serijoje apie namų automatizavimą (HA), aplinką, remiantis pakartotinai naudojamu kodu, paimtu iš čia.

Jo esmė yra ESP8266-07, atsakingas už MQTT ryšius ir visų sistemos funkcijų valdymą (SD kortelės prieiga, LED valdymas, temperatūros/drėgmės jutimas, garsumo valdymas, kalbos sintezė). Įrenginys yra visiškai sukonfigūruojamas naudojant tekstinius failus, saugomus vietinę SD kortelę, nors kalibravimo ir tinklo saugumo parametrus taip pat galima užprogramuoti per nuotolinius MQTT leidinius.

Kokių dalių man reikia?

Medžiagų sąrašą rasite čia

Kokios programinės įrangos man reikia?

  • „Arduino IDE 1.6.9“,
  • „Arduino IDE“sukonfigūruotas programuoti ESP8266-07 (toks pat kaip šis). Tada sukonfigūruokite IDE, kaip nurodyta išsamiame aprašyme, pateiktame čia esančiame programinės įrangos eskize,
  • Python v3.5.2, jei norite naudoti automatinio bandymo galimybes, čia rasite išsamios informacijos

Kokių įrankių man reikia?

  • Mikroskopas bent x3 (skirtas SMT litavimui),
  • „Molex“jungties gofravimo įrankis (JST jungtims),
  • SMD lituoklis (su skysčio srauto rašikliu ir lydmetaliu su srautu),
  • Atsuktuvai (įvairūs),
  • Šilumos pistoletas,
  • Grąžtai (įvairūs),
  • Įmerkiamas rankinis įrankis,
  • Failai (įvairūs),
  • „Dremel“(įvairūs bitai),
  • Tvirta yda (maža ir didelė, kaip juodaodis ir denio darbininkas),
  • Skalpelis,
  • „Vernier“apkabos (naudojamos gamybai matuoti ir naudingos PCB komponentų dydžiams nustatyti),
  • Veržliarakčiai ir veržliarakčiai (įvairūs),
  • Stiprūs pincetai (SMT litavimui),
  • Jaunesnysis pjūklas,
  • Gręžtuvas (su įvairiais grąžtais),
  • Smulkios replės (smailios ir smaigalinės),
  • Nuplaunami pjaustytuvai,
  • DMM su girdimu tęstinumo tikrinimu,
  • Dviejų kanalų skaitmeninė apimtis (patogu derinant signalus)

Kokių įgūdžių man reikia?

  • Daug kantrybės,
  • Puikus rankų miklumas ir puikus rankų/akių koordinavimas,
  • Puikūs litavimo įgūdžiai,
  • Puikūs gamybos įgūdžiai,
  • Galimybė vizualizuoti trimis matmenimis,
  • Šiek tiek žinių apie programinės įrangos kūrimą naudojant „C“(jei norite suprasti šaltinio kodą),
  • Šiek tiek žinių apie „Python“(kaip įdiegti ir paleisti scenarijus, jei norite naudoti automatinį testavimą),
  • Žinios apie Arduino ir jo IDE,
  • Geros elektronikos žinios,
  • Tam tikras jūsų namų tinklo supratimas.

Apimtos temos

  • Vartotojo vadovas
  • Grandinės apžvalga
  • PCB gamyba ir surinkimas
  • Gamyba
  • Programinės įrangos sistemos apžvalga
  • Programinės įrangos apžvalga
  • Jutiklio kalibravimas
  • MQTT temų pavadinimo konvencija
  • Derinimas ir gedimų paieška
  • Dizaino bandymas
  • Išvada
  • Naudotos nuorodos

11 serijos nuorodos: „IoT Desktop Console“. Dalis: 11 daiktų internetas, namų automatika

1 žingsnis: vartotojo vadovas

Vartotojo vadovas
Vartotojo vadovas
Vartotojo vadovas
Vartotojo vadovas
Vartotojo vadovas
Vartotojo vadovas

Aukščiau esančiame 1 paveikslėlyje parodyta „Retro Speech Synthesizer“priekinė dalis, o 2 - gale.

Priekinis gaubtas

  1. Garsiakalbio grilis
  2. 3,5 mm ausinių lizdas: įkišus 3,5 mm lizdą, pagrindinis garsiakalbis išjungiamas.
  3. Raudonas šviesos diodas: šis šviesos diodas užsidega, kai tariamas žodis, kai kalba buvo pradėta naudojant HTTP užklausą.
  4. Mėlynas šviesos diodas: šis šviesos diodas užsidega, kai tariamas žodis, kai kalba buvo pradėta naudojant MQTT IoT užklausą.

Galinis gaubtas

  1. Reset mygtukas: naudojamas norint iš naujo nustatyti ESP8266-07 IoT įrenginį.
  2. Blykstės mygtukas: naudojant kartu su atstatymo mygtuku, ESP8266-07 gali vėl mirksėti.
  3. „WiFi“antenos kištukas (SMA kištukas): Išorinei „WiFi“antenai, kuri mažiausiai slopina RF kelią, nes uždarymas yra aliuminis.
  4. Išorinio programavimo prievadas: pašalinkite poreikį atsukti korpusą, kad galėtumėte pasiekti ESP8266-07 pakartotinio programavimo tikslais. ESP8266-07 programavimo kaiščiai buvo išvesti į išorinį programavimo prievadą. 3 paveikslėlyje yra programavimo adapteris.
  5. Žalias šviesos diodas: tai yra IoT sistemos šviesos diodas, naudojamas prietaiso diagnostinei būsenai ir įkrovimui bei veikimui parodyti.
  6. Išorinis temperatūros/drėgmės jutiklis (AM2320)
  7. SD kortelės lizdas: jame saugomi visi konfigūracijos/saugos duomenys kartu su žiniatinklio serverio puslapiais.
  8. 2,1 mm maitinimo lizdas 6vdc

2 žingsnis: grandinės apžvalga

Grandinės apžvalga
Grandinės apžvalga
Grandinės apžvalga
Grandinės apžvalga

„Retro Speech Synth“įrenginį sudaro dvi PCB;

  • „RetroSpeechSynthIoTBoard“: tai yra bendras, daugkartinio naudojimo ESP8266-07/12/12E/13 PCB
  • „RetroSpeechSynthBoard“: tai yra bendras SP0256-AL2 PCB

„Retro Speech Synth IoT Board“

Ši plokštė leidžia tiesiogiai lituoti ESP8266-07/12/12E/13 arba 0,1 žingsnio lizdus, kuriuose yra ESP8266 nešiklio PCB.

Plokštė buvo sukurta siekiant išplėsti savo įvestį/išvestį per I2C jungtį ir gali palaikyti 3v3 arba 5v maitinimo lygius per Q1, Q2, R8-13.

Jungtis prie plokštės pasiekiama naudojant vieną iš dviejų antraščių J2 ir J4, 8 krypčių DIL IDC juostą arba 5 krypčių JST/Molex.

U2 ir U3 3.3v ir 5v nuostatos dėl tiekimo laive. Arba, jei reikia didesnės srovės galios, nuoseklieji šuntavimo reguliatoriai gali būti prijungti atitinkamai per jungtis J10 ir J11.

J1 ir J3 jungtys palaiko išorinę SD kortelę per SPI. „J1“buvo sukurtas 8 krypčių „Molex“, o „J3“turi tiesioginį kaištį, skirtą kaiščių suderinamumui palaikyti, esantį SD lentos PCB plokštėje su 3v3 arba 5v palaikymu.

„Retro Speech Synth Board“

Šios plokštės valdymas atliekamas naudojant I2C 5v suderinamą jungtį per J1, J5 arba J6, 4 krypčių JST/Molex, 8 krypčių DIL IDC arba 8 krypčių IDC juostos jungtį.

U2 MPC23017 suteikia I2C lygiagrečią sąsają su U3 SP0256-AL2 ir šviesos diodais D1 (žalia), D2 (raudona) ir D3 (mėlyna). „Speech Synth“išvestis tiekiama į garso stiprintuvą CR1 TBA820M per analoginį katilą RV1 arba skaitmeninį puodą U1 MCP4561.

Skaitmeninis puodas U1 taip pat valdomas per 5v suderinamą I2C.

Pastaba: ESP8266-07 įrenginys buvo pasirinktas, nes jame yra integruota IPX RF jungtis, leidžianti prie aliuminio korpuso pridėti išorinę „WiFi“anteną.

3 žingsnis: PCB gamyba ir surinkimas

PCB gamyba ir surinkimas
PCB gamyba ir surinkimas
PCB gamyba ir surinkimas
PCB gamyba ir surinkimas
PCB gamyba ir surinkimas
PCB gamyba ir surinkimas
PCB gamyba ir surinkimas
PCB gamyba ir surinkimas

1 ir 2 paveikslėliuose pavaizduoti užbaigti ir laidiniai PCB mazgai, esantys ant aliuminio gaubto pagrindo.

Dvi PCB buvo sukurtos naudojant „Kicad v4.0.7“, pagamintą JLCPCB, ir aš surinkau ir parodyta aukščiau 3–13 paveikslėliuose.

4 žingsnis: gamyba

Gamyba
Gamyba
Gamyba
Gamyba
Gamyba
Gamyba

1 paveiksle pavaizduotas „Haynes“rankinis visų surenkamų dalių išdėstymas prieš galutinį surinkimą.

2… 5 paveikslėlyje pavaizduoti įvairūs kadrai gaminant korpusą su minimaliu atstumu.

5 veiksmas: programinės įrangos sistemos apžvalga

Programinės įrangos sistemos apžvalga
Programinės įrangos sistemos apžvalga
Programinės įrangos sistemos apžvalga
Programinės įrangos sistemos apžvalga

Šiame IoT retro kalbos sintezės įrenginyje yra šeši pagrindiniai programinės įrangos komponentai, kaip parodyta 1 paveikslėlyje aukščiau.

SD kortelė

Tai yra išorinė SD SPI „Flash Filing“sistema ir naudojama šiai informacijai saugoti (žr. 2 pav. Aukščiau);

  • Piktogramos ir „Speech Synth Configuration Home Page“index.htm: aptarnaujamas „IoT“įrenginio, kai jis negali prisijungti prie jūsų „IoT WiFi“tinklo (dažniausiai dėl neteisingos saugos informacijos arba pirmą kartą jį naudojant) ir suteikia vartotojui priemones nuotoliniu būdu sukonfigūruoti jutiklius, nereikia iš naujo paleisti naujo SD turinio. Jame taip pat yra index1.htm, mqtt.htm ir sp0256.htm, tai yra vietiniai tinklalapiai, pasiekiami per žiniatinklio naršyklę, leidžiančią ribotai valdyti kalbos sintezę per
  • Saugos informacija: joje saugoma informacija, kurią įjungus „IoT“įrenginys prisijungia prie jūsų „IoT WiFi“tinklo ir „MQTT Broker“. Informacija, pateikta per „Speech Synth Configuration Home Page“, įrašoma į šį failą („secvals.txt“).
  • Informacija apie kalibravimą: failuose esanti informacija („calvals1.txt“ir „calvals2.txt“) naudojama, jei reikia, kalibruoti vidinius temperatūros/drėgmės jutiklius. Kalibravimo konstantas galima įrašyti į „IoT“įrenginį naudojant MQTT komandas iš MQTT brokerio arba pakartotinai mirksint SD kortelę. „calvals1.txt“yra susijęs su AM2320 jutikliu, o „calvals2.txt“- su DHT22.
  • Vartotojo konfigūruojamos sistemos vertės: šiame faile esanti informacija („confvals.txt“), kurią pasirenka vartotojas, valdo tam tikrus sistemos atsakus, pvz., Pradinį skaitmeninio garsumo lygį, automatinį „paruoštą sistemai“pranešimą apie MQTT tarpininko prenumeratą ir kt.

mDNS serveris

Ši funkcija naudojama, kai „IoT“įrenginiui nepavyksta prisijungti prie „WiFi“tinklo kaip „WiFi“stoties, o jis tapo „WiFi“prieigos tašku, panašiu į vietinį „WiFi“maršrutizatorių. Tokio maršrutizatoriaus atveju paprastai prie jo prisijungtumėte įvesdami panašaus 192.168.1.1 IP adresą (paprastai atspausdintą ant etiketės, pritvirtintos prie dėžutės) tiesiai į naršyklės URL juostą, į kurią gausite prisijungimo puslapį vartotojo vardą ir slaptažodį, kad galėtumėte konfigūruoti įrenginį. Jei ESP8266-07 veikia AP režimu (prieigos taško režimu), įrenginys pagal numatytuosius nustatymus nurodo IP adresą 192.168.4.1, tačiau, kai veikia mDNS serveris, naršyklės URL juostoje turite įvesti tik žmonėms draugišką pavadinimą „SPEECHSVR.local“. žr. „Kalbos sintezės konfigūracijos pagrindinį puslapį“.

MQTT klientas

MQTT klientas suteikia visas reikalingas funkcijas; prisijunkite prie savo IoT tinklo MQTT brokerio, užsiprenumeruokite pasirinktas temas ir paskelbkite naudingus krovinius tam tikrai temai. Trumpai tariant, jame numatytos pagrindinės daiktų interneto funkcijos.

HTTP žiniatinklio serveris

Šis žiniatinklio serveris turi du tikslus;

  1. Jei „IoT“įrenginys negali prisijungti prie „WiFi“tinklo, kurio SSID, P/W ir tt yra apibrėžti SD kortelėje esančiame saugos informacijos faile, įrenginys taps prieigos tašku. Prisijungus prie „WiFi“tinklo, kurį teikia prieigos taškas, HTTP žiniatinklio serveris leidžia tiesiogiai prisijungti prie įrenginio ir pakeisti jo konfigūraciją naudojant HTTP žiniatinklio naršyklę, kurios tikslas yra aptarnauti „Kalbos sintezės konfigūraciją“. Pagrindinis puslapis “tinklalapis, kuris taip pat saugomas SD kortelėje.
  2. Kai „IoT Retro Speech Synthesis Device“prisijungs prie „WiFi“tinklo ir „MQTT“brokerio, jei prieiga prieinama, HTTP žiniatinklio serveris automatiškai pateiks HTTP tinklalapį, leidžiantį ribotai valdyti „IoT“įrenginį, kad būtų galima ištarti tam tikras fiksuotas frazes ir galimybę perjunkite du priekinius raudonus ir mėlynus šviesos diodus.

WiFi stotis

Ši funkcija suteikia „IoT“įrenginiui galimybę prisijungti prie vietinio „WiFi“tinklo naudojant saugos informacijos failo parametrus, be to jūsų „IoT“įrenginys negalės užsiprenumeruoti/paskelbti „MQTT Broker“.

„WiFi“prieigos taškas

Galimybė tapti „WiFi“prieigos tašku yra priemonė, kuria „IoT“įrenginys leidžia prisijungti prie jo ir keisti konfigūraciją per „WiFi“stotį ir naršyklę (pvz., „Safari“„Apple iPad“). Šis prieigos taškas transliuoja SSID = "SPEECHSYN" + paskutinius 6 IoT įrenginio MAC adreso skaitmenis. Šio uždaro tinklo slaptažodis išgalvotai pavadintas „PASSWORD“

6 veiksmas: programinės įrangos apžvalga

Programinės įrangos apžvalga
Programinės įrangos apžvalga
Programinės įrangos apžvalga
Programinės įrangos apžvalga
Programinės įrangos apžvalga
Programinės įrangos apžvalga

Preambulė

Norint sėkmingai surinkti šį šaltinio kodą, jums reikės vietinės kodo kopijos ir bibliotekų, aprašytų žemiau 12 veiksme, Naudotos nuorodos. Jei nesate tikri, kaip įdiegti „Arduino“biblioteką, eikite čia.

Apžvalga

Programinė įranga naudoja būsenos mašiną, kaip parodyta 1 paveikslėlyje aukščiau (visa šaltinio kopija mano „GitHub“saugykloje čia). Yra 5 pagrindinės būsenos, kaip nurodyta toliau;

  • INIT

    Ši inicijavimo būsena yra pirmoji būsena, įvesta po maitinimo įjungimo

  • NOCONFIG

    Ši būsena įvedama, jei po įjungimo aptinkamas netinkamas arba trūkstamas failas secvals.txt. Šios būsenos metu matomas konfigūracijos puslapis

  • LAUKIA NW

    Ši būsena yra laikina, įvesta, kol nėra „WiFi“tinklo ryšio

  • LAUKIA MQTT

    Ši būsena yra laikina, įvesta užmezgus „WiFi“tinklo ryšį ir kol nėra ryšio su „MQTT“tarpininku tame tinkle

  • AKTYVUS

    Tai yra įprasta veikimo būsena, įvesta sukūrus ir „WiFi“tinklo ryšį, ir „MQTT Broker“ryšį. Būtent šios būsenos metu „IQT Retro Speech Synthesis Device“temperatūra, šilumos indeksas ir drėgmė reguliariai skelbiami „MQTT Broker“. Šioje būsenoje matomas kalbos sintezės pagrindinis puslapis

Įvykiai, kontroliuojantys perėjimus tarp būsenų, aprašyti aukščiau esančiame 1 paveiksle. Perėjimus tarp būsenų taip pat reglamentuoja šie „SecVals“parametrai;

  • 1 -asis MQTT brokerio IP adresas. Taškinėje dešimtainėje formoje AAA. BBB. CCC. DDD
  • 2 -asis MQTT tarpininkų uostas. Sveiko skaičiaus forma.
  • Trečiasis „MQTT Broker“ryšys bando prisijungti prieš pereinant iš STA režimo į AP režimą. Sveiko skaičiaus forma.
  • 4 -asis „WiFi“tinklo SSID. Laisvos formos tekstu.
  • 5 -asis „WiFi“tinklo slaptažodis. Laisvos formos tekstu.

Kaip minėta aukščiau, jei „IoT“įrenginys negali prisijungti kaip „WiFi“stotis prie „WiFi“tinklo, kurio SSID ir P/W yra apibrėžti SD kortelėje esančiame secvals.txt, „IoT“įrenginys taps prieigos tašku. Prisijungęs prie šio prieigos taško, jis pateiks „Speech Synth Configuration Home Page“, kaip parodyta aukščiau 2 paveiksle (įvesdami „SPEECHSVR.local“arba 192.168.4.1 į naršyklės URL adreso juostą). Šis pagrindinis puslapis leidžia perkonfigūruoti „IoT Retro Speech Synthesis Device“per HTTP naršyklę.

Nuotolinė prieiga būdama AKTYVUS

Prisijungus prie „MQTT Broker“, įrenginį taip pat galima iš naujo kalibruoti ir perkonfigūruoti per MQTT teminius leidinius. Failas calvals.txt turi R/W prieigą, o secvals.txt - tik rašymo prieiga.

Taip pat, kaip minėta aukščiau, įjungus aktyvųjį režimą, galima pasiekti „Speech Synth“per HTTP sąsają į naršyklės URL adreso juostą įvedant „SPEECHSVR.local“arba 192.168.4.1. Ši HTTP sąsaja leidžia iš esmės valdyti kalbos sintezę. 3, 4 ir 5 paveikslėliai rodo galimus tinklalapius.

Naudotojo derinimas

Įkrovos metu „IoT“įrenginio žalioji sistema, esanti korpuso gale, pateikia tokį derinimo atsiliepimą;

  • 1 Trumpa blykstė: SD kortelėje nėra konfigūracijos failo (secvals.txt)
  • 2 Trumpi mirksėjimai: „IoT“įrenginys bando prisijungti prie „WiFi“tinklo
  • Nuolatinis apšvietimas: „IoT“įrenginys bando prisijungti prie „MQTT Broker“
  • Išjungta: įrenginys aktyvus.

„IoT Retro Speech Synthesis Device“funkcionalumas AKTYVOJE būsenoje

Būdamas AKTYVUS, ESP8266 įeina į nuolatinę kilpą, iškviečiant šias funkcijas; timer_update (), checkTemperatureAndHumidity () ir handleSpeech (). Grynasis rezultatas sukurtas taip, kad vartotojui būtų suteikta HTTP arba MQTT sąsaja, sklandžiai aptarnaujantį savo borto kalbos procesorių su fonemomis pagal pareikalavimą ir skelbiant vietines aplinkos parametrų vertes per MQTT.

Į šaltinio kodą įtrauktas išsamus visų temų prenumeratų ir publikacijų sąrašas, įskaitant naudingosios apkrovos vertes.

7 žingsnis: jutiklio kalibravimas

Jutiklio kalibravimas
Jutiklio kalibravimas

Kai „IoT“įrenginys įjungiamas, kaip įkrovos sekos dalis iš SD kortelės nuskaitomi du failai, pavadinti „cavals1.txt“ir „cavals2.txt“.

Šių failų turinys yra kalibravimo konstantos, kaip nurodyta aukščiau 1 pav.

  1. „cavals1.txt“: naudojamas išoriniame AM2320
  2. „cavals2.txt“: naudojamas vidiniame DHT22

Šios kalibravimo konstantos naudojamos koreguoti dviejų jutiklių rodmenis, kad jie atitiktų atskaitos prietaisą. Yra dar viena reikšmė, kuri apibrėžia kiekvieno prietaiso ataskaitų teikimo strategiją ir yra aprašyta toliau kartu su jutiklių kalibravimo procedūra.

Ataskaitų teikimo strategija

Šis parametras nustato, kaip nuotolinis jutiklis praneša apie vietinius aplinkos parametrų pokyčius. Jei pasirenkama vertė 0, nuotolinis jutiklis paskelbs visus matomus temperatūros ar drėgmės pokyčius kiekvieną kartą, kai nuskaitomas atitinkamas jutiklis (maždaug kas 10 sekundžių). Bet kokia kita vertė atidės pakeitimo paskelbimą 1… 60 minučių. Pakeitus šį parametrą, galima optimizuoti MQTT tinklo srautą. Reikėtų pažymėti, kad temperatūros ir drėgmės duomenys iš DHT22 skaitomi pakaitomis dėl jutiklio apribojimų.

Temperatūros kalibravimas

Norėdami kalibruoti temperatūros jutiklį, aš atlikiau tą patį procesą, kaip aprašyta čia, 4 veiksme, dar kartą naudojant paprastą y = mx+c ryšį. Kaip atskaitos prietaisą naudojau IoT temperatūrą, drėgmės jutiklį Nr. Jutiklio vertės nurodytos Celsijaus laipsniais.

Drėgmės kalibravimas

Kadangi neturiu galimybių tiksliai įrašyti ar net kontroliuoti vietinės aplinkos drėgmės, kalibruoti jutiklį, aš naudoju panašų metodą, kaip aprašyta aukščiau, 4 veiksme, dar kartą naudodamas jutiklį Nr. 1. Tačiau, kaip minėta aukščiau, neseniai internete radau puikų straipsnį, kuriame aprašoma, kaip kalibruoti drėgmės jutiklius. Galbūt kada nors ateityje išbandysiu šį metodą. Jutiklio reikšmės nurodytos %santykinės drėgmės amžiaus.

8 žingsnis: MQTT temų pavadinimo konvencija

MQTT temų pavadinimo konvencija
MQTT temų pavadinimo konvencija
MQTT temų pavadinimo konvencija
MQTT temų pavadinimo konvencija

Kaip minėta ankstesnėje instrukcijoje (čia), nusprendžiau temos pavadinimo susitarimą, aprašytą 1 paveiksle.

Būtent, „AccessMethod/DeviceType/WhichDevice/Action/SubDevice“Tai nėra tobula, tačiau leidžia naudoti naudingus filtrus, kad būtų matyti visi tam tikros parametrų temos jutiklių išėjimai, todėl galima lengvai palyginti, kaip parodyta 2 paveiksle, su MQTTSpy.

Šis projektas yra pirmasis atvejis, kai viename įrenginyje yra daugiau nei vienas tos pačios rūšies leidinio šaltinis. t.y. Du temperatūros/drėgmės jutikliai iš vidinių ir išorinių papildinių.

Jis taip pat palaiko pakankamai išplėstines logines funkcijų grupes tam tikrame daiktų interneto įrenginyje.

Įdiegdamas šias temas programinėje įrangoje, aš naudoju griežtai koduotas temų eilutes su fiksuotais, įterptais skaitiniais identifikatoriais kiekvienam įrenginiui, o ne dinamiškai kurdamas temas vykdymo metu, kad sutaupyčiau RAM ir išlaikyčiau aukštą našumą.

Pastaba: Jei nesate tikri, kaip naudoti „MQTTSpy“, skaitykite čia „MQTT brokerio nustatymas“. 2 dalis. Daiktų internetas, namų automatika “

9 veiksmas: derinimas ir gedimų paieška

Derinimas ir gedimų paieška
Derinimas ir gedimų paieška

Apskritai savo pomėgių projektams, kur įmanoma, esu linkęs sukurti reprezentatyvų aparatinės įrangos prototipą, pagal kurį sukurta programinė įranga, retai susiduriu su problemomis, kai integruoju programinę įrangą į galutinę platformos aparatinę įrangą.

Tačiau šia proga susidūriau su keistu protarpiniu gedimu, kai kai kurios fonemos skambėjo, o kitos - ne.

Po pradinio „Speech Synth PCB“derinimo naudojant „Arduino Uno“fonemoms gauti ir įrodyti, kad ši plokštė veikia, aš pasinaudojau I2C linijomis tarp IoT PCB ir Speech Synth PCB. Žr. 1 paveikslėlį aukščiau.

Ant pėdsakų galite aiškiai matyti „pjūklo dantį“/eksponentinį I2C signalo kraštą.

Paprastai tai rodo, kad I2C pritraukimo vertės yra per didelės, neleidžiančios pakankamai greitai atsigauti linijos įtampai atviroje nutekėjimo grandinėje.

„Atlikdamas darbą“lygiagrečiai su dviem smt traukiamaisiais rezistoriais R12 ir R13 su 10K, kad gautumėte 4K7 ir tikrai „Speech Synth“„įsiliepsnotų“

Šio tipo gedimai yra priešingi tam, kas gali nutikti derinant tokio tipo projektus. Apskritai dauguma „I2C“modulių, įsigytų iš „Ebay“, dažniausiai būna su 10K arba 4K7 pakėlimais. Jei ketinate naudoti> 5 I2C modulius, kurių kiekvienas turi 4K7 pakėlimus, tada bendra apkrova yra 940R, o tai bus per daug pagrindiniam išvesties etapui. Pataisymas būtų pašalinti kiekvieno modulio visų, išskyrus vieną, ištraukiamųjų rezistorių rinkinį. Pageidautina tas, kuris fiziškai yra labiausiai nutolęs nuo šeimininko.

Naudingas patarimas, kurio verta nepamiršti projektuojant elektroniką su I2C įrenginiais.

10 žingsnis: dizaino išbandymas

Image
Image
Dizaino bandymas
Dizaino bandymas
Dizaino bandymas
Dizaino bandymas

Bandymai buvo atlikti naudojant dvi metodikas; Rankinis ir automatinis.

Pirmasis, rankinis ir paprastai naudojamas pradinio kodo kūrimo metu, buvo „MQTT Spy“naudojimas visoms turimoms prenumeruojamoms temoms ir patikrinti paskelbtus atsakymus (pavaizduota 2 paveikslėlyje aukščiau). Kadangi tai rankinis procesas, kodo kūrimo metu gali užtrukti daug laiko ir gali atsirasti klaidų, nors rankinis vykdymas leidžia užtikrinti 100% aprėptį.

„MQTTSpy“buvo pasirinktas rankiniam bandymui, nes tai puikus įrankis rankiniu būdu formatuoti tam tikrą naudingą apkrovą ir lengvai ją paskelbti bet kuria tema. Jame taip pat rodomas aiškus, su laiku pažymėtas žurnalas, kuris yra labai naudingas derinant (3 pav. Aukščiau).

Antrasis, automatizuotas metodas buvo pritaikytas, nes šaltinio kodas tapo sudėtingesnis (> 3700 eilučių). Padidėjęs sudėtingumas reiškia ilgesnius rankinio bandymo ciklus ir sudėtingesnius bandymus. Siekiant pagerinti bandymų patikimumą, determinizmą ir kokybę, naudojant „python“testų vykdytoją buvo naudojamas automatinis testavimas (1 pav.). Žr. Šios instrukcijos 10 veiksmą, kaip buvo įvestas automatinis testavimas. Visą šioje instrukcijoje naudojamų automatinių testų kopiją galite rasti čia.

Vaizdo įrašas apie automatizuotą bandymų seką rodomas aukščiau. Seka atlieka šiuos veiksmus;

  • Automatizuota per MQTT

    • Prisijunkite prie MQTT pagrindo ir paskelbkite „Sistema paruošta“
    • Pratimai Žalia LED
    • Pratimas raudonas LED
    • Pratimų mėlynas LED
    • Patikrinkite, ar veikia „Digital Pot“
    • Kalbėkite naudodami fonemas
    • Kalbėkite fonemoms naudodami šešioliktainius kodus
    • Kalbėkite naudodami taisomųjų frazių kodus
    • Šiek tiek „Dr Who“ir „Daleks“linksmybių.
  • Rankiniu būdu per

    • Pratimų mėlynas LED
    • Pratimas raudonas LED
    • Kalbėkite fiksuotas frazes „Steven Quinn“, „System Ready“ir „Hello World“
    • Turėkite HTTP serverį, aptarnaukite

      • Išsami informacija apie „Speech Synth Chip“
      • Išsami informacija apie MQTT

11 žingsnis: Išvada

Išvada
Išvada

Nors reikėjo daug pastangų dėl failų ir grąžtų ir pan., Ypač kalbant apie garsiakalbio groteles, manau, kad rezultatas yra estetiškas ir supakuotas į gražų, mažą korpusą. Aš galėjau ją sumažinti, tačiau ją reikėjo sudėti į vieną PCB, ir aš sąmoningai ją padalinau į dvi dalis, kad vėliau galėčiau pakartotinai naudoti PCB kitiems projektams. Taigi tai laimingas kompromisas.

Programinė įranga veikia gerai, „IoT“įrenginys jau kurį laiką stabiliai veikia be jokių problemų.

Aš stebėjau temperatūrą ir drėgmę per „Grafana“ir lyginau su tuo pačiu įrenginiu. Abi aplinkos vertės gerai koreliavo, o tai reiškia, kad kalibravimas yra pagrįstas (arba bent jau yra panašus).

Nustojau įgyvendinti žodžių komandų („WFD/SpeechTH/1/Word/Command“), nes pritrūko laiko ir reikėjo judėti toliau. Galiu dar kartą apsilankyti, jei ir kai sukuriu „MySQL“duomenų bazę. Šiuo metu naudoju „InfluxDB“.

12 žingsnis: Naudotos nuorodos

Norint sudaryti šią instrukciją, buvo naudojami šie šaltiniai; „IoT Retro Speech Synthesis Device“šaltinio kodas (jame yra visko kopija)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Autorius: Nickas O'Leary
  • Tikslas: leidžia įrenginiui skelbti arba užsisakyti MQTT temas su tam tikru tarpininku
  • Iš:

DHT.h

  • Autorius: Adafruit
  • Tikslas: „Arduino“biblioteka, skirta DHT11DHT22 ir kt. Temperatūros ir drėgmės jutikliai
  • Iš:

„Adafruit_AM2320.h“/„Adafruit_Sensor.h“

  • Autorius: Adafruit
  • Tikslas: „Arduino“biblioteka, skirta AM2320 ir kt. Temperatūros ir drėgmės jutiklis
  • Iš:

MCP4561_DIGI_POT.h

  • Autorius: Steve Quinn
  • Tikslas: „Arduino“biblioteka, skirta skaitmeniniam potenciometrui MCP4561
  • Iš:

Adafruit_MCP23017.h

  • Autorius: Steve Quinn
  • Tikslas: „Arduino“biblioteka, skirta MCP23017 I2C prievado plėtikliui. Tai „Adafruit“„Adafruit-MCP23017-Arduino“bibliotekos „GITHub“šakutė.
  • Iš:

Pramogoms

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

PCB gamyba

https://jlcpcb.com/

Papildomų „Arduino“bibliotekų diegimas

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

Kaip patikrinti ir kalibruoti drėgmės jutiklį

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

SP0256-AL2 duomenų lapas

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

Kalbos lustų parduotuvė

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

„Arduino“konkursas 2019 m
„Arduino“konkursas 2019 m
„Arduino“konkursas 2019 m
„Arduino“konkursas 2019 m

Antroji vieta „Arduino“konkurse 2019 m

Rekomenduojamas: