INHOUDSOPGAWE:

Retro spraaksintese. Deel: 12 IoT, tuisautomatisering: 12 stappe (met foto's)
Retro spraaksintese. Deel: 12 IoT, tuisautomatisering: 12 stappe (met foto's)

Video: Retro spraaksintese. Deel: 12 IoT, tuisautomatisering: 12 stappe (met foto's)

Video: Retro spraaksintese. Deel: 12 IoT, tuisautomatisering: 12 stappe (met foto's)
Video: Leap Motion SDK 2024, Julie
Anonim
Image
Image
Retro spraaksintese. Deel: 12 IoT, tuisautomatisering
Retro spraaksintese. Deel: 12 IoT, tuisautomatisering

Hierdie artikel is die 12de in 'n reeks oor tuisautomatiseringsinstruksies wat beskryf hoe u 'n IoT Retro -spraaksintese -toestel kan skep en integreer in 'n bestaande tuisautomatiseringstelsel, insluitend al die nodige sagtewarefunksionaliteit om die suksesvolle implementering binne 'n huishoudelike omgewing moontlik te maak.

Foto 1 toon die voltooide IoT -spraaksintoestel en prent 2 toon al die komponentdele wat in die prototipe gebruik is, wat die vormfaktor verminder het om in die finale produk in te gaan.

Die video wys die toestel in aksie (tydens toetsing).

Inleiding

Soos hierbo genoem, bevat hierdie instruksie hoe u 'n IoT-retro-spraaksintese-toestel kan maak, en is gebaseer op die General Instruments SP0256-AL2.

Die hoofdoel daarvan is om 'old school' -stemsintese by 'n IoT -netwerk te voeg. Waarom 'ou skool', vra u miskien? Omdat ek in die 80's was toe hierdie dinge vir die eerste keer vervaardig is en ek 'n koppelvlak aan my BBC Micro gehad het, so vir my is daar 'n mate van nostalgie rondom die SP0256-AL2.

Ek verkies die uitdaging om te probeer uitvind wat op aarde deur hierdie Dalek -klinkende stem gesê word, as om te luister na die dubbeltone van 'n hipster -Amazon -eggo of Siri. Waar is die uitdaging waarin ek jou vra?

Ag, en om nie te praat nie, ek het ook 'n 'saklading' van 'SP0256-AL2' IC's wat rondlê.

Die toestel kan ook die plaaslike temperatuur en humiditeit lees, en brei dus die omringende instrumentasie van my bestaande IoT -infrastruktuur uit wat aansluit by die MQTT/OpenHAB -gebaseerde IoT -netwerk, uiteengesit in hierdie reeks oor huishoudelike outomatisering (HA), voortgebou op hergebruikte kode wat hiervandaan geneem word.

Die kern daarvan is 'n ESP8266-07 wat verantwoordelik is vir MQTT-kommunikasie en die beheer van alle stelselfunksies (toegang tot SD-kaart, LED-beheer, temperatuur-/humiditeitswaarneming, volumebeheer, spraaksintese). Die toestel is volledig konfigureerbaar via tekslêers wat op 'n plaaslike SD -kaart, alhoewel kalibrasie- en netwerkbeveiligingsparameters ook via afgeleë MQTT -publikasies geprogrammeer kan word.

Watter onderdele het ek nodig?

Sien die materiaalbrief hier

Watter sagteware het ek nodig?

  • Arduino IDE 1.6.9,
  • Arduino IDE is gekonfigureer om die ESP8266-07 (dieselfde as hierdie) te programmeer. Stel dan die IDE op soos aangedui in die gedetailleerde beskrywing in die sagtewareskets hier,
  • Python v3.5.2, besonderhede hier as u die outomatiese toetsvermoë wil gebruik

Watter gereedskap het ek nodig?

  • Mikroskoop ten minste x3 (vir SMT soldeer),
  • Molex -koppelstukgereedskap (vir JST -verbindings),
  • SMD soldeerbout (met vloeibare vloeipen en soldeermiddel)
  • Skroewedraaiers (verskillende),
  • Hittegeweer,
  • Bore (verskillende),
  • Versink handgereedskap,
  • Lêers (verskillende),
  • Dremel (verskillende stukkies),
  • Stewige skroefdraad (klein en groot, soos 'n swart en dekmaat),
  • Skalpel,
  • Vernier kalipers (gebruik om die vervaardiging te meet en nuttig vir die grootte van PCB -komponente),
  • Moersleutels en moerbestuurders (diverse),
  • Sterk pincet (vir SMT soldeer),
  • Junior ystersaag,
  • Boor (met verskillende boorpunte),
  • Fyn tang (punt en snuit neus),
  • Spoel snyers,
  • DMM met hoorbare kontinuïteitstoets,
  • Dubbele kanaal digitale omvang (handig vir ontfoutingseine)

Watter vaardighede het ek nodig?

  • Baie geduld,
  • Baie handvaardigheid en uitstekende hand/oog -koördinasie,
  • Uitstekende soldeervaardighede,
  • Uitstekende vervaardigingsvaardighede,
  • Die vermoë om in 3 dimensies te visualiseer,
  • 'N Paar kennis van sagteware -ontwikkeling met' C '(as u die bronkode wil verstaan),
  • 'N Paar kennis van Python (hoe om scripts te installeer en uit te voer, as u die outomatiese toetsing wil gebruik),
  • Kennis van Arduino en sy IDE,
  • Goeie kennis van elektronika,
  • Beter begrip van u tuisnetwerk.

Onderwerpe gedek

  • Gebruikers gids
  • Kringoorsig
  • PCB vervaardiging en samestelling
  • Vervaardiging
  • Sagteware stelsel oorsig
  • Sagteware Oorsig
  • Sensor kalibrasie
  • MQTT -onderwerpbenoemingskonvensie
  • Ontfouting en foutopsporing
  • Die ontwerp toets
  • Afsluiting
  • Verwysings gebruik

Series LinksTo Part 11: IoT Desktop Console. Deel: 11 IoT, tuisautomatisering

Stap 1: Gebruikershandleiding

Gebruikers gids
Gebruikers gids
Gebruikers gids
Gebruikers gids
Gebruikers gids
Gebruikers gids

Foto 1 hierbo toon die voorkant van die Retro Speech Synthesizer en prent 2 die agterkant.

Omhulsel Voorkant

  1. Luidsprekerrooster
  2. 3.5 mm -koptelefoonaansluiting: die hoofluidspreker word afgeskakel as 'n 3,5 mm -aansluiting ingevoeg word.
  3. Rooi LED: Hierdie LED brand terwyl 'n woord gespreek word toe spraak via 'n HTTP -versoek begin is.
  4. Blou LED: Hierdie LED brand terwyl 'n woord gespreek word toe spraak via 'n MQTT IoT -versoek begin is.

Omhulsel agter

  1. Herstelknoppie: word gebruik om die ESP8266-07 IoT-toestel hard terug te stel.
  2. Flitsknoppie: As dit saam met die resetknop gebruik word, kan die ESP8266-07 herflits.
  3. WiFi -antenne -prop (SMA -prop): vir eksterne WiFi -antenne wat die minste RF -padvermindering bied, aangesien die sluiting aluminium is.
  4. Eksterne programmeringspoort: om die behoefte om die omhulsel los te skroef om toegang tot die ESP8266-07 te verkry vir herprogrammeringsdoeleindes, verwyder. Die programmeringspenne van die ESP8266-07 is na die eksterne programmeringspoort gebring. Foto 3 is die programmeringsadapter.
  5. Groen LED: Dit is die IoT -stelsel wat gelei word en word gebruik om die diagnostiese status van die toestel aan te dui en tydens opstart te begin.
  6. Eksterne temperatuur-/humiditeitsensor (AM2320)
  7. SD -kaartgleuf: dit bevat alle konfigurasie-/beveiligingsdata saam met webbedienerbladsye.
  8. 2.1 mm toevoer aansluiting 6vdc

Stap 2: Kringoorsig

Kringoorsig
Kringoorsig
Kringoorsig
Kringoorsig

Die Retro Speech Synth -toestel bestaan uit twee PCB's;

  • RetroSpeechSynthIoTBoard: Dit is 'n generiese, herbruikbare ESP8266-07/12/12E/13 PCB
  • RetroSpeechSynthBoard: Dit is 'n generiese SP0256-AL2 PCB

Retro Speech Synth IoT -bord

Hierdie bord maak voorsiening vir direkte soldeer van 'n ESP8266-07/12/12E/13 of 0.1 steekpunte wat 'n ESP8266-draer-PCB kan huisves.

Die bord is ontwerp om die I/O oor 'n I2C-verbinding uit te brei en kan 3v3 of 5v toevoervlakke ondersteun deur middel van Q1, Q2, R8-13.

Die verbinding met die bord word verkry deur een van twee kopstukke J2 en J4, 'n 8-weg DIL IDC-lint of 5-weg JST/Molex.

U2 en U3 voorsiening 3.3v en 5v op boord toevoer regulasie. As 'n groter stroomkapasiteit benodig word, kan 'n seriële shuntreguleerder buite boord via verbindings J10 en J11 onderskeidelik aangebring word.

Verbindings J1 en J3 bied eksterne SD -kaartondersteuning via SPI. J1 is ontwerp vir 'n 8-rigting Molex en J3 het 'n direkte pen vir ondersteuning vir pen-verenigbaarheid vir 'n standaard-kaartkaart met 3v3 of 5v ondersteuning.

Retro Speech Synth Board

Die beheer van hierdie bord is via 'n I2C 5v-voldoenende verbinding via J1, J5 of J6, 'n 4-weg JST/Molex, 8-weg DIL IDC of 8-weg IDC-lintaansluiting.

U2 MPC23017 bied die I2C tot parallelle koppelvlak aan U3 die SP0256-AL2 en LEDS D1 (groen), D2 (rooi) en D3 (blou). Die uitset van die Speech Synth word via die analoog pot RV1 of digitale pot U1 MCP4561 na die klankversterker CR1 TBA820M gevoer.

Digital Pot U1 word ook beheer deur middel van I2C wat 5v voldoen.

Opmerking: die ESP8266-07-toestel is gekies omdat dit 'n integrale IPX RF-aansluiting het, sodat 'n eksterne WiFi-antenne by die aluminiumomhulsel gevoeg kan word.

Stap 3: Vervaardiging en samestelling van PCB

PCB vervaardiging en samestelling
PCB vervaardiging en samestelling
PCB vervaardiging en samestelling
PCB vervaardiging en samestelling
PCB vervaardiging en samestelling
PCB vervaardiging en samestelling
PCB vervaardiging en samestelling
PCB vervaardiging en samestelling

Foto's 1 en 2 toon die voltooide en bedrade PCB-sub-samestellings op die aluminium omhulsel substraat.

Die twee PCB's is ontwerp met behulp van Kicad v4.0.7, vervaardig deur JLCPCB en deur my saamgestel en hierbo foto's 3 tot 13 getoon.

Stap 4: Vervaardiging

Vervaardiging
Vervaardiging
Vervaardiging
Vervaardiging
Vervaardiging
Vervaardiging

Foto 1 toon 'n Haynes -handmatige uitleg van al die voorafvervaardigde dele voor die finale montering.

Foto's 2 … 5 toon verskillende skote tydens die vervaardiging van die omhulsel met minimale speling.

Stap 5: Oorsig van sagteware stelsel

Sagteware stelsel oorsig
Sagteware stelsel oorsig
Sagteware stelsel oorsig
Sagteware stelsel oorsig

Hierdie IoT Retro -spraaksintese -apparaat bevat ses belangrike sagtewarekomponente soos in prent 1 hierbo getoon.

SD kaart

Dit is die eksterne SD SPI Flash Filing System en word gebruik om die volgende inligting te bewaar (sien prent 2 hierbo);

  • Ikone en 'Speech Synth Configuration Home Page' index.htm: bedien deur die IoT -toestel as dit nie met u IoT WiFi -netwerk kan koppel nie (gewoonlik as gevolg van verkeerde veiligheidsinligting of die eerste keer dat dit gebruik word) en bied die gebruiker 'n manier om die sensors op afstand te konfigureer sonder om nuwe SD-inhoud weer te laat flits. Dit bevat ook index1.htm, mqtt.htm en sp0256.htm, dit is die webbladsye wat plaaslik bedien word, toeganklik via 'n webblaaier, wat beperkte beheer van die spraaksintrale moontlik maak oor
  • Beveiligingsinligting: dit bevat die inligting wat deur die IoT -toestel gebruik word om aan te sluit op u IoT WiFi -netwerk en MQTT Broker. Inligting wat via die 'Speech Synth Configuration Home Page' ingedien word, word na hierdie lêer geskryf ('secvals.txt').
  • Kalibrasie-inligting: Die inligting in die lêers ('calvals1.txt' en 'calvals2.txt') word gebruik om die temperatuur-/humiditeitsensors aan boord te kalibreer indien nodig. Kalibrasie-konstantes kan via die MQTT-opdragte van 'n MQTT-makelaar na die IoT-toestel geskryf word of deur die SD-kaart weer te flits. 'calvals1.txt' het betrekking op die AM2320 -sensor en 'calvals2.txt' op die DHT22.
  • Gebruikers instelbare stelselwaardes: Die inligting in hierdie lêer ('confvals.txt'), gekies deur die gebruiker, beheer sekere stelselreaksies, soos aanvanklike digitale volume, outomatiese 'stelsel gereed' aankondiging oor MQTT -makelaarsintekening, ens.

mDNS -bediener

Hierdie funksie word gebruik wanneer die IoT -toestel nie as 'n WiFi -stasie met u WiFi -netwerk kon koppel nie en in plaas daarvan 'n WiFi -toegangspunt geword het, soortgelyk aan 'n huishoudelike WiFi -router. In die geval van so 'n router sou u tipies daarby konnekteer deur die IP -adres van iets soos 192.168.1.1 (gewoonlik gedruk op 'n etiket op die boks) direk in die URL -balk van u blaaier in te voer, waarna u 'n aanmeldingsbladsy sou ontvang om in te voer die gebruikersnaam en wagwoord sodat u die toestel kan instel. Vir die ESP8266-07 in AP-modus (toegangspuntmodus) is die toestel standaard op die IP-adres 192.168.4.1, maar as die mDNS-bediener werk, hoef u slegs die menslike vriendelike naam 'SPEECHSVR.local' in die URL-balk van die blaaier in te voer om sien die 'Speech Synth Configuration Home Page'.

MQTT -kliënt

Die MQTT -kliënt bied al die nodige funksies aan; maak verbinding met u IoT -netwerk MQTT -makelaar, teken in op die onderwerpe van u keuse en publiseer vragvragte vir 'n gegewe onderwerp. Dit bied kortliks IoT -kernfunksies.

HTTP -webbediener

Hierdie webbediener het twee doeleindes;

  1. As die IoT -toestel nie kan koppel aan die WiFi -netwerk waarvan die SSID, P/W ens gedefinieer is in die lêer vir sekuriteitsinligting op die SD -kaart nie, word die toestel 'n toegangspunt. As u eenmaal gekoppel is aan die WiFi -netwerk wat deur die toegangspunt verskaf word, kan u met die teenwoordigheid van 'n HTTP -webbediener direk aan die toestel koppel en die konfigurasie daarvan verander deur die gebruik van 'n HTTP -webblaaier. Tuisblad se webbladsy wat ook op die SD -kaart gehou word.
  2. Sodra die IoT Retro -spraaksintese -apparaat aan die WiFi -netwerk en MQTT -makelaar gekoppel is, sal die HTTP -webbediener outomaties 'n HTTP -webblad bedien, sodat beperkte beheer van die IoT -toestel 'n verskeidenheid vaste frases kan spreek en die vermoë om ry die twee voorste rooi en blou LED's.

WiFi -stasie

Hierdie funksie gee die IoT -toestel die moontlikheid om aan te sluit op 'n huishoudelike WiFi -netwerk met behulp van die parameters in die lêer vir sekuriteitsinligting, sonder dat u IoT -toestel nie op die MQTT Broker kan inteken/publiseer nie.

WiFi -toegangspunt

Die vermoë om 'n WiFi -toegangspunt te word, is 'n manier waarmee u met die IoT -toestel daaraan kan koppel en konfigurasieveranderings kan aanbring via 'n WiFi -stasie en 'n blaaier (soos Safari op die Apple iPad). Hierdie toegangspunt stuur 'n SSID = "SPEECHSYN" + die laaste 6 syfers van die MAC -adres van die IoT -toestel uit. Die wagwoord vir hierdie geslote netwerk word op 'n verbeeldingryke wyse 'PASSWORD' genoem

Stap 6: Sagteware -oorsig

Sagteware Oorsig
Sagteware Oorsig
Sagteware Oorsig
Sagteware Oorsig
Sagteware Oorsig
Sagteware Oorsig

Aanhef

Om hierdie bronkode suksesvol saam te stel, benodig u 'n plaaslike kopie van die kode en biblioteke wat hieronder uiteengesit word in stap 12, Gebruikte verwysings. As u nie seker is hoe u 'n Arduino -biblioteek moet installeer nie, gaan hierheen.

Oorsig

Die sagteware maak gebruik van die staatsmasjien soos op foto 1 hierbo getoon (volledige kopie van die bron in my GitHub-bewaarplek hier). Daar is 5 hooftoestande soos hieronder uiteengesit;

  • INIT

    Hierdie inisialiseringstoestand is die eerste toestand wat ingeskryf is nadat dit aangeskakel is

  • NOCONFIG

    Hierdie toestand word ingeskryf as 'n ongeldige of ontbrekende secvals.txt -lêer na aanskakeling opgespoor word. Tydens hierdie toestand is die Config -bladsy sigbaar

  • Hangende NW

    Hierdie toestand is van tydelike aard, aangegaan terwyl daar geen WiFi -netwerkverbinding bestaan nie

  • Hangende MQTT

    Hierdie toestand is van tydelike aard, aangegaan nadat 'n WiFi -netwerkverbinding tot stand gekom het, en alhoewel daar geen verbinding met 'n MQTT -makelaar op die netwerk bestaan nie

  • AKTIEF

    Dit is die normale bedryfstoestand wat aangegaan is sodra beide 'n WiFi -netwerkverbinding en 'n MQTT Broker -verbinding tot stand gekom het. Gedurende hierdie toestand word die temperatuur, hitte -indeks en humiditeit op die IoT Retro Speech Synthesis Device gereeld aan die MQTT Broker gepubliseer. In hierdie toestand is die Speech Synth -tuisblad sigbaar

Die gebeure wat oorgange tussen state beheer, word in prent 1 hierbo beskryf. Oorgange tussen state word ook beheer deur die volgende SecVals -parameters;

  • 1ste MQTT Broker IP -adres. In gestippelde desimale vorm AAA. BBB. CCC. DDD
  • 2de MQTT -makelaarshawe. In heelgetalvorm.
  • 3de MQTT -makelaarverbinding probeer maak voordat u van STA -modus na AP -modus oorskakel. In heelgetalvorm.
  • 4de WiFi -netwerk SSID. In vrye vorm teks.
  • 5de WiFi -netwerkwagwoord. In vrye vorm teks.

Soos hierbo genoem, as die IoT -toestel nie as 'n WiFi -stasie kan koppel aan die WiFi -netwerk wat SSID en P/W in secvals.txt op die SD -kaart gedefinieer het nie, word die IoT -toestel 'n toegangspunt. Sodra dit aan hierdie toegangspunt gekoppel is, sal dit die 'Speech Synth Configuration Home Page' wys soos hierbo in Pic 2 getoon (deur óf 'SPEECHSVR.local' óf 192.168.4.1 in die URL -adresbalk van u blaaiers in te voer). Hierdie tuisblad laat die herkonfigurasie van die IoT Retro -spraaksintese -toestel toe via 'n HTTP -blaaier.

Toegang op afstand in die aktiewe toestand

Sodra dit aan die MQTT-makelaar gekoppel is, is dit ook moontlik om die toestel te herkalibreer en te herkonfigureer via MQTT-onderwerppublikasies. Die lêer calvals.txt het R/W -toegang en secvals.txt het slegs toegang tot skryf.

Soos hierbo genoem, is dit ook moontlik om in die aktiewe modus toegang tot die Speech Synth te verkry via 'n HTTP -koppelvlak deur 'SPEECHSVR.local' of 192.168.4.1 in die URL -adresbalk van u blaaiers in te voer. Hierdie HTTP -gebaseerde koppelvlak maak voorsiening vir basiese beheer van die Speech Synth. Foto's 3, 4 en 5 wys die beskikbare webblaaie.

Ontfout van gebruikers

Tydens die opstartvolgorde gee die IoT -toestel se groen stelsel aan die agterkant van die omhulsel die volgende ontfoutingterugvoer;

  • 1 Kort flits: geen Config -lêer op SD -kaart nie (secvals.txt)
  • 2 Kort flitse: IoT -toestel probeer om aan te sluit op 'n WiFi -netwerk
  • Deurlopende beligting: IoT -toestel probeer om aan te sluit by MQTT Broker
  • Af: Toestel is aktief.

IoT Retro spraaksintese -apparaatfunksionaliteit in aktiewe toestand

Sodra dit in die AKTIEWE toestand is, betree die ESP8266 'n deurlopende lus wat die volgende funksies noem; timer_update (), checkTemperatureAndHumidity () en handleSpeech (). Die netto resultaat daarvan is ontwerp om die gebruiker 'n HTTP- of MQTT-koppelvlak te bied, om die ingeboude spraakverwerker naatloos aan te bied met foneme op aanvraag en om plaaslike parametriese waardes oor MQTT te publiseer.

'N Omvattende lys van alle onderwerpintekeninge en -publikasies, insluitend die vragwaarde, is ingesluit in die bronkode.

Stap 7: Sensorkalibrasie

Sensor kalibrasie
Sensor kalibrasie

As die IoT -toestel aanskakel, word twee lêers met die naam 'cavals1.txt' en 'cavals2.txt' van die SD -kaart gelees as deel van die opstartvolgorde.

Die inhoud van hierdie lêers is kalibreringskonstante soos hierbo in prent 1 aangedui.

  1. 'cavals1.txt': Gebruik deur die eksterne AM2320
  2. 'cavals2.txt': Word gebruik deur die interne DHT22

Hierdie kalibrasie -konstantes word gebruik om die metings wat van die twee sensors verkry is, aan te pas om dit in lyn te bring met 'n verwysingsapparaat. Daar is nog 'n ander waarde wat 'n verslagdoeningstrategie vir elke toestel definieer en word hieronder beskryf saam met die prosedure wat gevolg word om die sensors te kalibreer.

Verslagdoeningstrategie

Hierdie parameter bepaal hoe die afstandsensor enige omringende parametriese veranderinge daarby aanmeld. As 'n waarde van 0 gekies word, publiseer die afstandsensor elke verandering wat dit in die temperatuur of humiditeit sien, elke keer as die onderskeie sensor gelees word (ongeveer elke 10 sekondes). Enige ander waarde sal die publikasie van 'n verandering met 1 … 60 minute vertraag. Deur hierdie parameter te verander, word die MQTT -netwerkverkeer geoptimaliseer. Daar moet kennis geneem word dat temperatuur- en humiditeitsdata van die DHT22 afwisselend gelees word as gevolg van die beperking van die sensor.

Temperatuur kalibrasie

Om die temperatuursensor te kalibreer, het ek dieselfde proses gevolg soos in stap 4 uiteengesit, weer met behulp van 'n eenvoudige y = mx+c verhouding. Ek het IoT -temperatuur, humiditeitsensor #1 as verwysingsapparaat gebruik. Waardes van die sensor is in grade celcius.

Kalibrasie van humiditeit

Aangesien ek geen beskikbare middele het om die humiditeit van die omgewing akkuraat op te teken of selfs te beheer nie, het ek 'n soortgelyke benadering gebruik as die hierbo, stap 4, met behulp van sensor #1 as verwysing om die sensor te kalibreer. Maar bogenoemde het gesê: ek het onlangs 'n uitstekende artikel op die internet gevind wat beskryf hoe om humiditeitsensors te kalibreer. Ek sal hierdie metode moontlik een of ander tyd in die toekoms probeer. Waardes van die sensor is in %ouderdom van relatiewe humiditeit.

Stap 8: MQTT -onderwerpbenoemingskonvensie

MQTT -onderwerpbenoemingskonvensie
MQTT -onderwerpbenoemingskonvensie
MQTT -onderwerpbenoemingskonvensie
MQTT -onderwerpbenoemingskonvensie

Soos genoem in 'n vroeëre Instructable (hier), het ek besluit oor die onderwerpnaamkonvensie wat in prent 1 hierbo uiteengesit is.

Dit is naamlik 'AccessMethod/DeviceType/WhichDevice/Action/SubDevice', dit is nie perfek nie, maar dit maak dit moontlik om nuttige filters toe te pas om alle sensoruitsette vir 'n gegewe parametriese onderwerp te sien, sodat dit maklik kan vergelyk word soos op foto 2 hierbo met MQTTSpy.

Hierdie projek is die eerste keer dat 'n enkele toestel meer as een bron van dieselfde publikasie bevat. ie. Twee temperatuur-/humiditeitsensors, van interne en eksterne sub-toestelle.

Dit ondersteun ook redelik uitbreidbare logiese groeperings van funksies binne 'n gegewe IoT -toestel.

By die implementering van hierdie onderwerpe in sagteware het ek hardgekodeerde onderwerpsnare gebruik met vaste, ingebedde numeriese identifiseerders vir elke toestel, in teenstelling met die dinamiese opwekking van die onderwerpe op tyd, om RAM te bespaar en die prestasie hoog te hou.

Nota: as u nie seker is hoe u MQTTSpy moet gebruik nie, sien hier 'Opstel van 'n MQTT -makelaar. Deel 2: IoT, Home Automation '

Stap 9: Ontfouting en foutopsporing

Ontfouting en foutopsporing
Ontfouting en foutopsporing

Oor die algemeen is ek, waar moontlik, vir my stokperdjie -projekte geneig om 'n verteenwoordigende hardeware -prototipe te bou waarteen die sagteware ontwikkel word. Ek het selde probleme met die integrasie van die sagteware in die finale platformhardeware.

By hierdie geleentheid het ek egter op 'n vreemde afwisselende fout afgekom waardeur sommige foneme sou opklink, maar ander nie.

Na 'n aanvanklike ontfouting van die Speech Synth PCB met behulp van 'n Arduino Uno om foneme te verkry en te bewys dat hierdie bord werk, het ek 'n omvang geneem van die I2C -lyne tussen die IoT PCB en die Speech Synth PCB. Sien foto 1 hierbo.

U kan die 'saagtand'/eksponensiële rand na die I2C -sein op die spore duidelik sien.

Dit is gewoonlik 'n aanduiding dat die I2C -optelwaardes te hoog is, wat voorkom dat die netspanning vinnig genoeg herstel in 'n oop dreineringskring.

As 'n 'werk' het ek die twee smt optrekweerstande R12 en R13 met 10K's parallel gemaak om 4K7 te gee en seker dat die Speech Synth 'in life' uitgebars het

Hierdie tipe mislukking is die teenoorgestelde van wat kan gebeur as u hierdie tipe projekte ontfout. Oor die algemeen het die meeste I2C -modules wat by Ebay gekoop is, gewoonlik 10K of 4K7 pull -ups. As u van plan is om> 5 I2C -modules te gebruik, elk met 4K7 pull -ups, dan is die totale las 940R, wat te groot sal wees vir die uitvoerfase van die meester. Die oplossing sou wees om alles behalwe een stel optrekweerstands op elke module te ontsoldeer. Verkieslik die een wat fisies die verste weg van die meester is.

'N Nuttige wenk en die moeite werd om in gedagte te hou by die ontwerp van elektronika met I2C -toestelle.

Stap 10: Toets die ontwerp

Image
Image
Die ontwerp toets
Die ontwerp toets
Die ontwerp toets
Die ontwerp toets

Die toets is uitgevoer met behulp van twee metodologieë; Handmatig en outomaties.

Die eerste, handleiding en algemeen gebruik tydens die aanvanklike kodeontwikkeling, was die gebruik van MQTT Spy om al die beskikbare onderwerpe in te teken en die gepubliseerde antwoorde na te gaan (op foto 2 hierbo uitgebeeld). Aangesien dit 'n handmatige proses is, kan dit tydrowend en vatbaar wees vir foute namate kodeontwikkeling vorder, hoewel handmatige uitvoering 100% dekking moontlik maak.

MQTTSpy is gekies vir handmatige toetsing, want dit is 'n uitstekende hulpmiddel om 'n gegewe vrag met die hand te formateer en dit maklik met enige onderwerp te publiseer. Dit bevat ook 'n duidelike, tydstempelde logboek wat baie handig is vir ontfouting (foto 3 hierbo).

Die tweede, outomatiese benadering is aangeneem namate die bronkode meer kompleks geword het (> 3700 reëls). Verhoogde kompleksiteit beteken langer handmatige toetssiklusse en meer komplekse toetse. Om die betroubaarheid, determinisme en kwaliteit van toetse te verbeter, is outomatiese toetsing gebruik deur 'n python -toetsbestuurder (prent 1). Sien stap 10 in hierdie instruksie oor hoe outomatiese toetsing ingestel is. 'N Volledige afskrif van die outomatiese toetse wat in hierdie instruksie gebruik word, is hier beskikbaar.

'N Video van die outomatiese toetsvolgorde in werking word hierbo getoon. Die volgorde voer die volgende stappe uit;

  • Outomaties via MQTT

    • Koppel aan die MQTT -ruggraat en kondig 'System Ready' aan
    • Oefen groen LED
    • Oefen Rooi LED
    • Oefen blou LED
    • Kyk of Digital Pot werk
    • Praat met behulp van foneme
    • Praat met behulp van hex -kodes vir foneme
    • Praat met behulp van kodes vir regstellingsfrases
    • 'N Bietjie pret van Dr Who en die Daleks.
  • Handmatig via
    • Oefen blou LED
    • Oefen Rooi LED
    • Spreek vaste frases 'Steven Quinn', 'System Ready' en 'Hello World'
    • Het die HTTP -bediener, bedien

      • Besonderhede oor Speech Synth Chip
      • MQTT Besonderhede

Stap 11: Gevolgtrekking

Afsluiting
Afsluiting

Alhoewel dit baie moeite verg met lêers en bore, ens. Veral vir die luidsprekerrooster, dink ek die uitkoms is esteties aangenaam en verpak dit in 'n mooi, klein omhulsel. Ek kon dit kleiner gemaak het, maar ek sou op een PCB moes gaan, en ek het dit doelbewus in twee gesny sodat ek later die PCB's vir ander projekte kon hergebruik. Dit is dus 'n gelukkige kompromie.

Die sagteware werk goed, die IoT -toestel werk al geruime tyd sonder probleme.

Ek het via Grafana die temperatuur en humiditeit gemonitor en vergelyk met 'n toestel wat saam geleë is. Die twee omgewingswaardes korreleer goed, wat impliseer dat die kalibrasie redelik is (of ten minste dieselfde is).

Ek het opgehou om woordopdrag ('WFD/SpeechTH/1/Word/Command') te implementeer omdat ek nie meer tyd gehad het nie en verder moes gaan. Ek kan dit weer besoek as ek 'n MySQL-databasis opstel. Op die oomblik gebruik ek InfluxDB.

Stap 12: Gebruikte verwysings

Die volgende bronne is gebruik om hierdie Instructable saam te stel; Bronkode vir die IoT Retro Speech Synthesis Device (dit bevat 'n afskrif van alles)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Deur: Nick O'Leary
  • Doel: stel die toestel in staat om MQTT -onderwerpe met 'n gegewe makelaar te publiseer of in te teken
  • Van:

DHT.h

  • Deur: Adafruit
  • Doel: Arduino -biblioteek vir DHT11DHT22, ens Temp- en humiditeitsensors
  • Van:

Adafruit_AM2320.h/Adafruit_Sensor.h

  • Deur: Adafruit
  • Doel: Arduino -biblioteek vir AM2320, ens Temp & Humidity Sensor
  • Van:

MCP4561_DIGI_POT.h

  • Deur: Steve Quinn
  • Doel: Arduino -biblioteek vir MCP4561 digitale potensiometer
  • Van:

Adafruit_MCP23017.h

  • Deur: Steve Quinn
  • Doel: Arduino -biblioteek vir die MCP23017 I2C Port Expander. Dit is 'n GITHub-vurk van Adafruit-MCP23017-Arduino-biblioteek, deur Adafruit.
  • Van:

Vir die pret

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

PCB Vervaardiging

https://jlcpcb.com/

Die installering van ekstra Arduino -biblioteke

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

Hoe om 'n humiditeitsensor na te gaan en te kalibreer

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&utm_med5_255 /

SP0256-AL2 Gegevensblad

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

Spraakskyfieswinkel

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

Arduino -wedstryd 2019
Arduino -wedstryd 2019
Arduino -wedstryd 2019
Arduino -wedstryd 2019

Naaswenner in die Arduino -kompetisie 2019

Aanbeveel: