Innholdsfortegnelse:

Retro talesyntese. Del: 12 IoT, hjemmeautomatisering: 12 trinn (med bilder)
Retro talesyntese. Del: 12 IoT, hjemmeautomatisering: 12 trinn (med bilder)

Video: Retro talesyntese. Del: 12 IoT, hjemmeautomatisering: 12 trinn (med bilder)

Video: Retro talesyntese. Del: 12 IoT, hjemmeautomatisering: 12 trinn (med bilder)
Video: 15 УСТОЙЧИВОГО ДОМА, СОЗДАННОГО С СТИЛЕМ И ИЗУЧЕНИЕМ 2024, Juli
Anonim
Image
Image
Retro talesyntese. Del: 12 IoT, hjemmeautomatisering
Retro talesyntese. Del: 12 IoT, hjemmeautomatisering

Denne artikkelen er den 12. i en serie om hjemmeautomatisering Instructables som dokumenterer hvordan du oppretter og integrerer en IoT Retro Speech Synthesis Device i et eksisterende hjemmeautomatiseringssystem, inkludert all nødvendig programvarefunksjonalitet for å muliggjøre en vellykket distribusjon i hjemmemiljø.

Bilde 1 viser den ferdige IoT -talesyntesenheten og Bilde 2 viser alle komponentdelene som ble brukt i prototypen, og som ble redusert formfaktor for å gå inn i sluttproduktet.

Videoen viser enheten i bruk (under testing).

Introduksjon

Som nevnt ovenfor beskriver denne instruksjonsboken hvordan du lager en IoT Retro Speech Synthesis Device og er basert på General Instruments SP0256-AL2.

Hovedformålet er å legge til 'old school' stemmesyntese i et IoT -nettverk. Hvorfor 'old school' kan du spørre? Vel, fordi jeg var rundt på 80-tallet da disse tingene først ble produsert og jeg grensesnittet en til min BBC Micro, så for meg er det en viss grad av nostalgi rundt SP0256-AL2.

Jeg foretrekker mye utfordringen med å prøve å finne ut hva i all verden blir sagt av denne Dalek -klingende stemmen enn å lytte til dulcet -tonene fra et hipster Amazon -ekko eller Siri. Hvor er utfordringen i det jeg spør deg?

Oh, og for ikke å nevne at jeg også har en 'bagelast' med 'SP0256-AL2' ICer som ligger rundt.

Enheten er også i stand til å lese lokal temperatur og luftfuktighet, så ytterligere utvidelse av omgivelsesinstrumenteringen til min eksisterende IoT -infrastruktur som kobles til det MQTT/OpenHAB -baserte IoT -nettverket som er beskrevet i denne serien om hjemmeautomatisering (HA), og bygger på gjenbrukt kode hentet herfra.

I hjertet er en ESP8266-07 som er ansvarlig for MQTT-kommunikasjon og kontroll av all systemfunksjonalitet (tilgang til SD-kort, LED-kontroll, temperatur/fuktighetsregistrering, volumkontroll, talesyntese). Enheten er fullt konfigurerbar via tekstfiler lagret på en lokalt SD -kort, men kalibrering og nettverkssikkerhetsparametere kan også programmeres via eksterne MQTT -publikasjoner.

Hvilke deler trenger jeg?

Se materialforslaget her

Hvilken programvare trenger jeg?

  • Arduino IDE 1.6.9,
  • Arduino IDE konfigurert til å programmere ESP8266-07 (samme som dette). Konfigurer deretter IDE som angitt i den detaljerte beskrivelsen i programvareskissen her,
  • Python v3.5.2 hvis du ønsker å bruke den automatiske testfunksjonen, detaljer her

Hvilke verktøy trenger jeg?

  • Mikroskop minst x3 (for SMT -lodding),
  • Molex -krympeverktøy (for JST -kontakter),
  • SMD loddejern (med flytende flusspenn og lodd med flusskjerne),
  • Skrutrekkere (forskjellige),
  • Varmepistol,
  • Øvelser (forskjellige),
  • Forsenkbart håndverktøy,
  • Filer (forskjellige),
  • Dremel (forskjellige biter),
  • Robust skruestikke (liten og stor, som en svart og dekk arbeidsvenn),
  • Skalpell,
  • Vernier -kalipre (brukes til å måle fabrikasjon og være nyttige for dimensjonering av PCB -komponenter),
  • Skiftenøkler og muttere (forskjellige),
  • Sterke pinsetter (for SMT -lodding),
  • Junior baufil,
  • Drill (med forskjellige borekroner),
  • Fin tang (spiss og snus nese),
  • Skyll kuttere,
  • DMM med hørbar kontinuitetskontroll,
  • Dual channel digital scope (praktisk for feilsøkingssignaler)

Hvilke ferdigheter trenger jeg?

  • Mye tålmodighet,
  • Mye manuell fingerferdighet og utmerket hånd/øye -koordinasjon,
  • Utmerkede loddeferdigheter,
  • Utmerkede fabrikasjonskunnskaper,
  • Evnen til å visualisere i 3 dimensjoner,
  • Litt kunnskap om programvareutvikling med 'C' (hvis du vil forstå kildekoden),
  • Litt kunnskap om Python (hvordan du installerer og kjører skript, hvis du vil bruke den automatiserte testen),
  • Kunnskap om Arduino og dens IDE,
  • God kunnskap om elektronikk,
  • Litt forståelse for hjemmenettverket ditt.

Emner dekket

  • Brukermanual
  • Kretsoversikt
  • PCB -produksjon og montering
  • Fabrikasjon
  • Oversikt over programvaresystem
  • Oversikt over programvare
  • Sensorkalibrering
  • MQTT -emnekonvensjon
  • Feilsøking og feilsøking
  • Tester designet
  • Konklusjon
  • Referanser brukt

Series LinksTo Part 11: IoT Desktop Console. Del: 11 IoT, hjemmeautomatisering

Trinn 1: Brukerhåndbok

Brukermanual
Brukermanual
Brukermanual
Brukermanual
Brukermanual
Brukermanual

Bilde 1 ovenfor viser forsiden av Retro Speech Synthesizer og bilde 2 bak.

Kapsling foran

  1. Høyttalergrill
  2. 3,5 mm øretelefonkontakt: Høyttaleren er deaktivert når en 3,5 mm kontakt er satt inn.
  3. Rød LED: Denne LED -lampen lyser mens et ord blir sagt når talen ble startet via en HTTP -forespørsel.
  4. Blå LED: Denne LED -lampen lyser mens et ord blir sagt når talen ble startet via en MQTT IoT -forespørsel.

Kapsling bak

  1. Tilbakestillingsknapp: Brukes til å hardt tilbakestille ESP8266-07 IoT-enheten.
  2. Flash-knapp: Når den brukes sammen med Reset-knappen, kan ESP8266-07 blinker på nytt.
  3. WiFi -antenneplugg (SMA -plugg): For ekstern WiFi -antenne som gir minst RF -banedempning da lukkingen er aluminium.
  4. Ekstern programmeringsport: For å fjerne behovet for å skru av kabinettet for å få tilgang til ESP8266-07 for omprogrammeringsformål. Programmeringspinnene til ESP8266-07 er brakt ut til den eksterne programmeringsporten. Bilde 3 er programmeringsadapteren.
  5. Grønn LED: Dette er IoT -systemledningen og brukes til å indikere diagnosestatus for enheten og starte opp og mens den er i bruk.
  6. Ekstern temperatur-/fuktighetssensor (AM2320)
  7. SD -kortspor: Dette inneholder alle konfigurasjons-/sikkerhetsdata sammen med webserversider.
  8. 2,1 mm forsyningskontakt 6vdc

Trinn 2: Kretsoversikt

Kretsoversikt
Kretsoversikt
Kretsoversikt
Kretsoversikt

Retro Speech Synth -enheten består av to PCB -er;

  • RetroSpeechSynthIoTBoard: Dette er en generisk, gjenbrukbar ESP8266-07/12/12E/13 PCB
  • RetroSpeechSynthBoard: Dette er en generisk SP0256-AL2 PCB

Retro Speech Synth IoT Board

Dette kortet tillater enten direkte lodding av en ESP8266-07/12/12E/13 eller 0,1 pitch-stikkontakter som rommer en ESP8266 bærerkrets.

Brettet ble designet for å utvide I/O-en over en I2C-tilkobling og kan støtte enten 3v3 eller 5v forsyningsnivåer via Q1, Q2, R8-13.

Tilkobling til brettet oppnås via en av to overskrifter J2 og J4, et 8-veis DIL IDC-bånd eller 5-veis JST/Molex.

U2 og U3 bestemmelse 3.3v og 5v om forsyningsregulering om bord. Alternativt hvis større strømkapasitet er nødvendig, kan serielle shuntregulatorer ombord festes via henholdsvis kontaktene J10 og J11.

Kontaktene J1 og J3 tilbyr ekstern SD -kortstøtte over SPI. J1 er designet for en 8-veis Molex, og J3 har direkte pin for støtte for kompatibilitet med pin for SD-kort på hyllen med enten 3v3 eller 5v støtte.

Retro Speech Synth Board

Kontrollen av dette kortet er over en I2C 5v-kompatibel tilkobling via J1, J5 eller J6, en 4-veis JST/Molex, 8-veis DIL IDC eller 8-veis IDC-båndkontakt.

U2 MPC23017 gir I2C til parallelt grensesnitt til U3 SP0256-AL2 og LEDS D1 (grønn), D2 (rød) og D3 (blå). Utgangen fra Speech Synth mates til lydforsterker CR1 TBA820M via enten analog pott RV1 eller digital pott U1 MCP4561.

Digital Pot U1 styres også via 5v -kompatibel I2C.

Merk: ESP8266-07-enheten ble valgt fordi den har en integrert IPX RF-kontakt som gjør det mulig å legge til en ekstern WiFi-antenne i aluminiumskapslingen.

Trinn 3: Produksjon og montering av kretskort

PCB -produksjon og montering
PCB -produksjon og montering
PCB -produksjon og montering
PCB -produksjon og montering
PCB -produksjon og montering
PCB -produksjon og montering
PCB -produksjon og montering
PCB -produksjon og montering

Bildene 1 og 2 viser de ferdige og kablede PCB-underenhetene som er plassert på aluminiumskapslingsunderlaget.

De to PCB -ene ble designet ved hjelp av Kicad v4.0.7, produsert av JLCPCB og satt sammen av meg og vist over bilder 3 til 13.

Trinn 4: Fremstilling

Fabrikasjon
Fabrikasjon
Fabrikasjon
Fabrikasjon
Fabrikasjon
Fabrikasjon

Bilde 1 viser en Haynes manuell stiloppsett av alle prefabrikkerte deler før sluttmontering.

Bildene 2… 5 viser forskjellige bilder under fremstillingen av kabinettet med minimale klaring.

Trinn 5: Oversikt over programvaresystem

Oversikt over programvaresystem
Oversikt over programvaresystem
Oversikt over programvaresystem
Oversikt over programvaresystem

Denne IoT Retro Speech Synthesis Device inneholder seks viktige programvarekomponenter som vist på bilde 1 ovenfor.

SD kort

Dette er det eksterne SD SPI Flash Filing System og brukes til å holde følgende informasjon (se bilde 2 ovenfor);

  • Ikoner og 'Speech Synth Configuration Startside' index.htm: Vises av IoT -enheten når den ikke kan koble til IoT WiFi -nettverket (vanligvis på grunn av feil sikkerhetsinformasjon eller første gangs bruk) og gir brukeren et middel for å konfigurere sensorene eksternt uten å måtte blinke nytt SD-innhold på nytt. Det inneholder også index1.htm, mqtt.htm og sp0256.htm, dette er de lokalt betjente nettsidene som er tilgjengelige via en nettleser som gir begrenset kontroll over talesynten over
  • Sikkerhetsinformasjon: Denne inneholder informasjonen som brukes ved oppstart av IoT -enheten for å koble til IoT WiFi -nettverket og MQTT -megleren. Informasjon som sendes via startsiden for "Speech Synth Configuration", skrives til denne filen ("secvals.txt").
  • Kalibreringsinformasjon: Informasjonen i filene ('calvals1.txt' og 'calvals2.txt') brukes til å kalibrere innebygde temperatur-/fuktighetssensorer om det skulle være nødvendig. Kalibreringskonstanter kan skrives til IoT-enheten via MQTT-kommandoer fra en MQTT-megler eller ved å blinke SD-kortet på nytt. 'calvals1.txt' gjelder AM2320 -sensoren og 'calvals2.txt' til DHT22.
  • Brukerkonfigurerbare systemverdier: Informasjonen i denne filen ('confvals.txt'), valgt av brukeren, kontrollerer visse systemresponser, for eksempel første digitale volumnivå, automatisk 'systemklar' kunngjøring om MQTT meglerabonnement etc.

mDNS -server

Denne funksjonaliteten påkalles når IoT -enheten ikke klarte å koble seg til WiFi -nettverket som en WiFi -stasjon og i stedet har blitt et WiFi -tilgangspunkt, noe som ligner på en innenlandsk WiFi -ruter. I tilfelle av en slik ruter vil du vanligvis koble til den ved å skrive inn IP -adressen til noe som 192.168.1.1 (vanligvis skrevet på en etikett festet i boksen) direkte i nettleserens nettleser, hvoretter du vil motta en påloggingsside for å gå inn brukernavnet og passordet slik at du kan konfigurere enheten. For ESP8266-07 i AP-modus (tilgangspunktmodus) er enheten standard til IP-adressen 192.168.4.1, men med mDNS-serveren i gang trenger du bare å skrive det menneskelige navnet 'SPEECHSVR.local' i nettleserens URL-linje for å se startsiden for "Speech Synth Configuration".

MQTT -klient

MQTT -klienten gir all nødvendig funksjonalitet til; koble til din IoT -nettverk MQTT -megler, abonner på temaene du ønsker og publiser nyttelast til et gitt emne. Kort sagt gir den IoT -kjernefunksjonalitet.

HTTP -webserver

Denne webserveren har to formål;

  1. Hvis IoT -enheten ikke kan koble til WiFi -nettverket hvis SSID, P/W etc. er definert i sikkerhetsinformasjonsfilen på SD -kortet, blir enheten et tilgangspunkt. Når den er koblet til WiFi -nettverket fra tilgangspunktet, lar tilstedeværelsen av en HTTP -webserver deg direkte koble til enheten og endre konfigurasjonen ved bruk av en HTTP -nettleser. Hjemmeside 'webside som også finnes på SD -kortet.
  2. Når IoT Retro Speech Synthesis Device har koblet seg til WiFi -nettverket og MQTT -megler, vil HTTP -webserveren automatisk få tilgang til en HTTP -nettside for å snakke et utvalg faste setninger og muligheten til å sykle de to røde og blå lysdiodene foran.

WiFi -stasjon

Denne funksjonaliteten gir IoT -enheten muligheten til å koble til et hjemlig WiFi -nettverk ved hjelp av parametrene i sikkerhetsinformasjonsfilen, uten dette vil ikke IoT -enheten din kunne abonnere/publisere til MQTT -megleren.

WiFi tilgangspunkt

Muligheten til å bli et WiFi -tilgangspunkt er et middel der IoT -enheten lar deg koble til den og gjøre konfigurasjonsendringer via en WiFi -stasjon og en nettleser (for eksempel Safari på Apple iPad). Dette tilgangspunktet sender en SSID = "SPEECHSYN" + de siste 6 sifrene i MAC -adressen til IoT -enheten. Passordet for dette lukkede nettverket heter fantasifullt 'PASSORD'

Trinn 6: Oversikt over programvare

Oversikt over programvare
Oversikt over programvare
Oversikt over programvare
Oversikt over programvare
Oversikt over programvare
Oversikt over programvare

Innledning

For å kunne kompilere denne kildekoden trenger du en lokal kopi av koden og bibliotekene beskrevet nedenfor i trinn 12, Referanser brukt. Hvis du ikke er sikker på hvordan du installerer et Arduino -bibliotek, gå hit.

Oversikt

Programvaren bruker state-maskinen som vist på bilde 1 ovenfor (full kopi av kilden i mitt GitHub-depot her). Det er 5 hovedstater som beskrevet nedenfor;

  • I DET

    Denne initialiseringstilstanden er den første tilstanden som ble angitt etter oppstart

  • NOCONFIG

    Denne tilstanden angis hvis en ugyldig eller manglende secvals.txt -fil oppdages etter oppstart. Under denne tilstanden er konfigurasjonssiden synlig

  • VENTER NV

    Denne tilstanden er forbigående, angitt mens det ikke finnes noen WiFi -nettverkstilkobling

  • VENTENDE MQTT

    Denne tilstanden er forbigående, angitt etter at en WiFi -nettverkstilkobling er opprettet, og mens det ikke er noen forbindelse til en MQTT -megler på det nettverket

  • AKTIV

    Dette er den normale driftstilstanden som angis når både en WiFi -nettverkstilkobling og en MQTT -meglerforbindelse er etablert. Det er i denne tilstanden at temperaturen, varmeindeksen og fuktigheten på IoT Retro Speech Synthesis Device regelmessig blir publisert til MQTT Broker. I denne tilstanden er startsiden for talsyntese synlig

Hendelsene som kontrollerer overganger mellom tilstander er beskrevet på bilde 1 ovenfor. Overganger mellom stater styres også av følgende SecVals -parametere;

  • Første MQTT -megler IP -adresse. I stiplet desimalform AAA. BBB. CCC. DDD
  • 2. MQTT meglerhavn. I heltall -form.
  • Tredje MQTT -meglerforbindelse prøver å gjøre før du bytter fra STA -modus til AP -modus. I heltall -form.
  • Fjerde WiFi -nettverks -SSID. I fri form tekst.
  • 5. WiFi -nettverkspassord. I fri form tekst.

Som nevnt ovenfor, hvis IoT -enheten ikke kan koble seg til en WiFi -stasjon som WiFi -nettverk som har SSID og P/W som er definert i secvals.txt på SD -kortet, vil IoT -enheten bli et tilgangspunkt. Når den er koblet til dette tilgangspunktet, vil den vise "startsiden for talesynthkonfigurasjon" som vist ovenfor på bilde 2 (ved å skrive inn enten "SPEECHSVR.local" eller 192.168.4.1 i nettleserens adresselinje). Denne hjemmesiden tillater omkonfigurering av IoT Retro Speech Synthesis Device via en HTTP -nettleser.

Ekstern tilgang mens den er i AKTIV

Når den er koblet til MQTT-megleren, er det også mulig å både kalibrere og omkonfigurere enheten via MQTT-emnepublikasjoner. Filen calvals.txt har R/W -tilgang og secvals.txt har skrivebeskyttet tilgang.

Som nevnt ovenfor er det en gang i aktiv modus det mulig å få tilgang til talesynten via et HTTP -grensesnitt ved å skrive inn 'SPEECHSVR.local' eller 192.168.4.1 i nettleserens adresselinje. Dette HTTP -baserte grensesnittet gir grunnleggende kontroll over talesyntesen. Bildene 3, 4 og 5 viser nettsidene som er tilgjengelige.

Brukerfeilsøking

Under oppstartsekvensen gir IoT -enhetens grønne systemlys på baksiden av kabinettet følgende tilbakemelding om feilsøking;

  • 1 Kort blits: Ingen konfigurasjonsfil ligger på SD -kortet (secvals.txt)
  • 2 korte blink: IoT -enheten prøver å koble seg til WiFi -nettverket
  • Kontinuerlig belysning: IoT -enheten prøver å koble seg til MQTT Broker
  • Av: Enheten er aktiv.

IoT Retro Talesyntese Enhetsfunksjonalitet i AKTIV tilstand

Når den er i AKTIV tilstand går ESP8266 inn i en kontinuerlig sløyfe som kaller følgende funksjoner; timer_update (), checkTemperatureAndHumidity () og handleSpeech (). Nettoresultatet som er designet for å gi brukeren et HTTP- eller MQTT-grensesnitt, sømløst betjene den innebygde taleprosessoren med fonemer på forespørsel og publisere lokale parametriske verdier over MQTT.

En omfattende liste over alle temaabonnementer og publikasjoner inkludert nyttelastverdier er inkludert i kildekoden.

Trinn 7: Sensorkalibrering

Sensorkalibrering
Sensorkalibrering

Når IoT -enheten slås på, leses to filer som heter 'cavals1.txt' og 'cavals2.txt' fra SD -kortet som en del av oppstartssekvensen.

Innholdet i disse filene er kalibreringskonstanter som angitt ovenfor på bilde 1.

  1. 'cavals1.txt': Brukes av den eksterne AM2320
  2. 'cavals2.txt': Brukes av den interne DHT22

Disse kalibreringskonstantene brukes til å justere avlesningene hentet fra de to sensorene for å bringe dem på linje med en referanseenhet. Det er en ytterligere verdi som definerer en rapporteringsstrategi for hver enhet og er beskrevet nedenfor sammen med prosedyren som ble fulgt for å kalibrere sensorene.

Rapporteringsstrategi

Denne parameteren bestemmer hvordan den eksterne sensoren rapporterer eventuelle parametriske endringer i omgivelsene lokalt. Hvis verdien er valgt 0, vil den eksterne sensoren publisere eventuelle endringer den ser i temperaturen eller fuktigheten hver gang den respektive sensoren leses (ca. hvert 10. sekund). Enhver annen verdi vil forsinke publiseringen av en endring med 1… 60 minutter. Endring av denne parameteren gir mulighet for optimalisering av MQTT -nettverkstrafikk. Det bør bemerkes temperatur- og fuktighetsdata fra DHT22 leses vekselvis på grunn av begrensninger i sensoren.

Temperaturkalibrering

For å kalibrere temperatursensoren fulgte jeg den samme prosessen som beskrevet i trinn 4, igjen ved å bruke et enkelt y = mx+c -forhold. Jeg brukte IoT -temperatur, fuktighetssensor #1 som referanseenhet. Verdier fra sensoren er i grader celcius.

Fuktighetskalibrering

Siden jeg ikke har noen midler til å registrere eller til og med kontrollere lokal luftfuktighet, kalibrerte jeg sensoren. Men det ovennevnte sa, jeg har nylig funnet en utmerket artikkel på nettet som beskriver hvordan man kalibrerer fuktighetssensorer. Jeg kan godt prøve denne tilnærmingen en gang i fremtiden. Verdier fra sensoren er i %alder av relativ fuktighet.

Trinn 8: MQTT -emnekonvensjon

MQTT -emnekonvensjon
MQTT -emnekonvensjon
MQTT -emnekonvensjon
MQTT -emnekonvensjon

Som nevnt i en tidligere Instructable (her) bestemte jeg meg for temaet navngivningskonvensjon som er skissert i bilde 1 ovenfor.

Nemlig 'AccessMethod/DeviceType/WhichDevice/Action/SubDevice' Det er ikke perfekt, men det gjør det mulig å bruke nyttige filtre for å se alle sensorutganger for et gitt parametrisk emne og dermed muliggjøre enkel sammenligning som på bilde 2 ovenfor med MQTTSpy.

Dette prosjektet er den første forekomsten der en enkelt enhet inneholder mer enn én kilde til samme type publikasjon. dvs. To temperatur-/fuktighetssensorer, fra interne og eksterne underenheter.

Den støtter også rimelig utvidbare logiske grupperinger av funksjonalitet innenfor en gitt IoT -enhet.

Ved implementering av disse emnene i programvare brukte jeg hardkodede emnestrenger med faste, innebygde numeriske identifikatorer for hver enhet i motsetning til dynamisk generering av emnene ved kjøretid for å spare på RAM og holde ytelsen høy.

Merk: Hvis du ikke er sikker på hvordan du bruker MQTTSpy, se her 'Konfigurere en MQTT -megler. Del 2: IoT, hjemmeautomatisering '

Trinn 9: Finne og feilsøke

Feilsøking og feilsøking
Feilsøking og feilsøking

Stort sett, for mine hobbyprosjekter, der det er mulig, har jeg en tendens til å bygge en representativ maskinvareprototype som programvaren er utviklet mot. Jeg har sjelden noen problemer når jeg integrerer programvaren i den endelige plattformmaskinvaren.

Ved denne anledningen kom jeg imidlertid over en merkelig periodisk feil der noen fonemer ville høres ut, men andre ville ikke.

Etter noen innledende feilsøking av Speech Synth PCB ved bruk av en Arduino Uno for å kilde fonemer og bevise at dette kortet fungerte, tok jeg et omfang til I2C -linjene mellom IoT PCB og Speech Synth PCB. Se bilde 1 ovenfor.

Du kan tydelig se "såntannen"/eksponentiell kant til I2C -signalet på sporene.

Dette er vanligvis en indikasjon på at I2C pull up -verdiene er for høye som forhindrer at nettspenningen blir rask nok i en åpen dreneringskrets.

Som et "arbeid rundt" parallelt jeg med de to smt -trekkmotstandene R12 og R13 med 10K for å gi 4K7 og sikkert "Speech Synth" brast ut i livet"

Denne typen feil er det motsatte av det som kan skje ved feilsøking av denne typen prosjekter. Generelt har de fleste I2C -baserte modulene kjøpt fra Ebay en tendens til å ha 10K eller 4K7 pull ups som allerede er montert. Hvis du har tenkt å bruke> 5 I2C -moduler, hver med 4K7 pull -ups, så er den totale belastningen 940R som vil være for stor for utgangstrinnet til masteren. Fixen ville være å avlodde alle unntatt ett sett med opptrekksmotstander på hver modul. Helst den som er fysisk lengst unna mesteren.

Et nyttig tips og verdt å huske på når du designer elektronikk med I2C -enheter.

Trinn 10: Testing av designet

Image
Image
Tester designet
Tester designet
Tester designet
Tester designet

Testingen ble utført ved hjelp av to metoder; Manuell og automatisert.

Den første, manuelle og vanligvis brukte under den første kodeutviklingen var å bruke MQTT Spy for å trene alle de tilgjengelige abonnementstemaene og sjekke de publiserte svarene (vist på bilde 2 ovenfor). Siden dette er en manuell prosess, kan det være tidkrevende og utsatt for feil etter hvert som kodeutviklingen utvikler seg, selv om manuell kjøring muliggjør 100% dekning.

MQTTSpy ble valgt for manuell testing fordi det er et utmerket verktøy for å formatere en gitt nyttelast for hånd og enkelt publisere den til ethvert emne. Den viser også en tydelig, tidsstemplet logg som er veldig nyttig for feilsøking (bilde 3 ovenfor).

Den andre, automatiserte tilnærmingen ble vedtatt ettersom kildekoden ble mer kompleks (> 3700 linjer). Økt kompleksitet betyr lengre manuelle testsykluser og mer komplekse tester. For å forbedre påliteligheten, determinismen og kvaliteten på testene, ble automatisert testing brukt via en python -testansvarlig (bilde 1). Se trinn 10 i denne veiledningen om hvordan automatisert testing ble introdusert. En full kopi av de automatiserte testene som brukes i denne instruksjonsboken er tilgjengelig her.

En video av den automatiserte testsekvensen i drift er vist ovenfor. Sekvensen utfører følgende trinn;

  • Automatisert via MQTT

    • Koble til MQTT -ryggraden og kunngjør 'System Ready'
    • Tren grønn LED
    • Treningsrød LED
    • Treningsblå LED
    • Sjekk Digital Pot fungerer
    • Snakk med fonemer
    • Snakk med hex -koder for fonemer
    • Snakk ved hjelp av koder for reparasjonsfraser
    • Litt av Dr Who og Daleks moro.
  • Manuelt via
    • Treningsblå LED
    • Treningsrød LED
    • Snakk faste setninger 'Steven Quinn', 'System Ready' og 'Hello World'
    • Ha HTTP -serveren, server opp

      • Detaljer om Speech Synth Chip
      • MQTT Detaljer

Trinn 11: Konklusjon

Konklusjon
Konklusjon

Selv om det krevde mye innsats med filer og øvelser etc. spesielt for høyttalergitteret, synes jeg resultatet er estetisk tiltalende og pakker seg inn i et fint, lite kabinett. Jeg kunne ha gjort det mindre, men det ville ha trengt å gå på ett PCB, og jeg brøt det bevisst i to slik at jeg kunne bruke PCB-ene på et senere tidspunkt til andre prosjekter. Så det er et lykkelig kompromiss.

Programvaren fungerer bra, IoT -enheten har vært i stabil drift ganske lenge nå uten problemer.

Jeg har overvåket temperatur og fuktighet via Grafana og sammenlignet med en samlokalisert enhet. De to omgivelsesverdiene har korrelert godt, noe som tyder på at kalibreringen er rimelig (eller i det minste er de like).

Jeg sluttet å implementere ordkommando ('WFD/SpeechTH/1/Word/Command') fordi jeg gikk tom for tid og måtte fortsette. Jeg kan godt besøke dette igjen hvis og når jeg setter opp en MySQL-database. Akkurat nå bruker jeg InfluxDB.

Trinn 12: Referanser brukt

Følgende kilder ble brukt til å sette denne instruksen sammen; kildekoden for IoT Retro Speech Synthesis Device (denne inneholder en kopi av alt)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Av: Nick O'Leary
  • Formål: Lar enheten publisere eller abonnere på MQTT -emner med en gitt megler
  • Fra:

DHT.h

  • Av: Adafruit
  • Formål: Arduino -bibliotek for DHT11DHT22, osv. Temp- og fuktighetssensorer
  • Fra:

Adafruit_AM2320.h/Adafruit_Sensor.h

  • Av: Adafruit
  • Formål: Arduino -bibliotek for AM2320, etc Temp & Fuktighetssensor
  • Fra:

MCP4561_DIGI_POT.h

  • Av: Steve Quinn
  • Formål: Arduino Library for MCP4561 digitalt potensiometer
  • Fra:

Adafruit_MCP23017.h

  • Av: Steve Quinn
  • Formål: Arduino Library for MCP23017 I2C Port Expander. Dette er en GITHub-gaffel fra Adafruit-MCP23017-Arduino-Library, av Adafruit.
  • Fra:

For moro skyld

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

PCB -produksjon

https://jlcpcb.com/

Installere flere Arduino -biblioteker

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

Hvordan sjekke og kalibrere en fuktighetssensor

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 Datablad

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

Talebrikksbutikk

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

Arduino -konkurransen 2019
Arduino -konkurransen 2019
Arduino -konkurransen 2019
Arduino -konkurransen 2019

Runner Up i Arduino -konkurransen 2019

Anbefalt: