Indholdsfortegnelse:

Retro talesyntese. Del: 12 IoT, hjemmeautomatisering: 12 trin (med billeder)
Retro talesyntese. Del: 12 IoT, hjemmeautomatisering: 12 trin (med billeder)

Video: Retro talesyntese. Del: 12 IoT, hjemmeautomatisering: 12 trin (med billeder)

Video: Retro talesyntese. Del: 12 IoT, hjemmeautomatisering: 12 trin (med billeder)
Video: Автомобильный кемпинг на морозе с собакой - палатка на крыше 2024, November
Anonim
Image
Image
Retro talesyntese. Del: 12 IoT, hjemmeautomatisering
Retro talesyntese. Del: 12 IoT, hjemmeautomatisering

Denne artikel er den 12. i en serie om hjemmeautomatisering Instructables, der dokumenterer, hvordan man opretter og integrerer en IoT Retro Speech Synthesis -enhed i et eksisterende hjemmeautomatiseringssystem, herunder alle de nødvendige softwarefunktioner for at muliggøre en vellykket implementering i hjemmet.

Billede 1 viser den færdige IoT -talesyntesenhed og Billede 2 viser alle de komponentdele, der blev brugt i prototypen, og som blev formfaktorreduceret til at gå ind i det endelige produkt.

Videoen viser enheden i aktion (under test).

Introduktion

Som nævnt ovenfor beskriver denne instruktionsvejledning, hvordan man laver en IoT Retro Speech Synthesis Device og er baseret på General Instruments SP0256-AL2.

Det primære formål er at tilføje 'old school' stemmesyntese til et IoT -netværk. Hvorfor 'old school' kan du spørge? Jo, fordi jeg var omkring i 80'erne, da disse ting først blev fremstillet, og jeg tilsluttede en til min BBC Micro, så for mig er der en vis grad af nostalgi omkring SP0256-AL2.

Jeg foretrækker meget udfordringen med at prøve at finde ud af, hvad i alverden der bliver sagt af denne Dalek -klingende stemme, end at lytte til dulcet -tonerne fra et hipster -Amazon -ekko eller Siri. Hvor er udfordringen i det, jeg spørger dig?

Åh, og for ikke at nævne, har jeg også en 'poselast' af 'SP0256-AL2' IC'er liggende.

Enheden er også i stand til at aflæse lokal temperatur og luftfugtighed, så den forlænger yderligere omgivelsesinstrumenteringen af min eksisterende IoT -infrastruktur, der tilslutter sig det MQTT/OpenHAB -baserede IoT -netværk, der er beskrevet i denne serie om hjemmeautomatisering (HA), og bygger på genbrugskode taget herfra.

I hjertet er en ESP8266-07, der er ansvarlig for MQTT-kommunikation og styring af al systemfunktionalitet (adgang til SD-kort, LED-kontrol, temperatur/fugtighedsregistrering, lydstyrkekontrol, talesyntese). Enheden er fuldt konfigurerbar via tekstfiler, der er gemt på en lokale SD -kort, selvom kalibrerings- og netværkssikkerhedsparametre også kan programmeres via eksterne MQTT -publikationer.

Hvilke dele har jeg brug for?

Se styklisten her

Hvilken software har jeg brug for?

  • Arduino IDE 1.6.9,
  • Arduino IDE konfigureret til at programmere ESP8266-07 (samme som denne). Konfigurer derefter IDE'en som angivet i den detaljerede beskrivelse i softwareskitsen her,
  • Python v3.5.2, hvis du ønsker at bruge den automatiserede testfunktion, detaljer her

Hvilke værktøjer har jeg brug for?

  • Mikroskop mindst x3 (til SMT -lodning),
  • Molex stikpresningsværktøj (til JST -stik),
  • SMD loddejern (med flydende flux pen og flux cored loddemetal),
  • Skruetrækkere (forskellige),
  • Varmepistol,
  • Boremaskiner (forskellige),
  • Forsænket håndværktøj,
  • Filer (forskellige),
  • Dremel (forskellige bits),
  • Robust skruestik (lille og stor, som en sort og decker arbejdskammerat),
  • Skalpel,
  • Vernier calipre (bruges til at måle fremstilling og nyttige til dimensionering af PCB -komponenter),
  • Skruenøgler og møtrikdrivere (forskellige),
  • Kraftig pincet (til SMT lodning),
  • Junior Hacksav,
  • Bor (med forskellige bor),
  • Fin tang (spids og snub nosed),
  • Skylskærere,
  • DMM med hørbar kontinuitetskontrol,
  • Dual channel digitalt omfang (praktisk til fejlsøgningssignaler)

Hvilke færdigheder har jeg brug for?

  • En masse tålmodighed,
  • Meget manuel fingerfærdighed og fremragende hånd/øje -koordination,
  • Fremragende loddeevner,
  • Fremragende fremstillingsevner,
  • Evnen til at visualisere i 3 dimensioner,
  • Noget kendskab til softwareudvikling med 'C' (hvis du vil forstå kildekoden),
  • Noget kendskab til Python (hvordan man installerer og kører scripts, hvis man vil bruge den automatiserede test),
  • Kendskab til Arduino og dens IDE,
  • Godt kendskab til elektronik,
  • En vis forståelse for dit hjemmenetværk.

Emner dækket

  • Brugermanual
  • Kredsløbsoversigt
  • Fremstilling og montering af printkort
  • Fremstilling
  • Oversigt over softwaresystem
  • Softwareoversigt
  • Sensorkalibrering
  • MQTT -emnekonvention
  • Fejlfinding og fejlfinding
  • Test af designet
  • Konklusion
  • Referencer brugt

Serie LinksTo Del 11: IoT Desktop Console. Del: 11 IoT, hjemmeautomatisering

Trin 1: Brugervejledning

Brugermanual
Brugermanual
Brugermanual
Brugermanual
Brugermanual
Brugermanual

Billede 1 ovenfor viser forsiden af Retro Speech Synthesizer og billede 2 den bageste.

Kabinet foran

  1. Højttalergrill
  2. 3,5 mm øretelefonstik: Højttaleren er deaktiveret, når der er isat 3,5 mm stik.
  3. Rød LED: Denne LED lyser, mens der bliver talt et ord, når talen blev startet via en HTTP -anmodning.
  4. Blå lysdiode: Denne lysdiode lyser, mens et ord bliver talt, når talen blev startet via en MQTT IoT -anmodning.

Kabinet bag

  1. Nulstillingsknap: Bruges til at nulstille ESP8266-07 IoT-enheden hårdt.
  2. Flashknap: Når den bruges sammen med nulstillingsknappen, kan ESP8266-07 blinke igen.
  3. WiFi -antennestik (SMA -stik): Til ekstern WiFi -antenne, der giver den mindste RF -støddæmpning, da lukningen er aluminium.
  4. Ekstern programmeringsport: For at fjerne behovet for at skrue kabinettet af for at få adgang til ESP8266-07 til genprogrammeringsformål. Programmeringsstifterne på ESP8266-07 er bragt til den eksterne programmeringsport. Billede 3 er programmeringsadapteren.
  5. Grøn LED: Dette er IoT -systemets LED og bruges til at angive enhedens diagnostiske status og starte op og mens den er i drift.
  6. Ekstern temperatur-/fugtighedsføler (AM2320)
  7. SD -kortplads: Dette gemmer alle konfigurations-/sikkerhedsdata sammen med webserversider.
  8. 2,1 mm forsyningsstik 6vdc

Trin 2: Oversigt over kredsløb

Kredsløbsoversigt
Kredsløbsoversigt
Kredsløbsoversigt
Kredsløbsoversigt

Retro Speech Synth -enheden består af to printkort;

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

Retro Speech Synth IoT Board

Dette kort giver mulighed for enten direkte lodning af et ESP8266-07/12/12E/13 eller 0,1 pitch-stik med plads til et ESP8266-bærerkort.

Kortet er designet til at udvide det I/O over en I2C-forbindelse og kan understøtte enten 3v3 eller 5v forsyningsniveauer via Q1, Q2, R8-13.

Tilslutning til brættet opnås via en af to overskrifter J2 og J4, et 8-vejs DIL IDC-bånd eller 5-vejs JST/Molex.

U2 og U3 bestemmelse 3.3v og 5v om forsyningsregulering om bord. Alternativt, hvis der kræves større strømkapacitet, kan off -line serielle shuntregulatorer tilsluttes via henholdsvis stik J10 og J11.

Stikkene J1 og J3 tilbyder ekstern SD -kort understøttelse via SPI. J1 er designet til en 8-vejs Molex, og J3 har direkte pin til understøttelse af stiftkompatibilitet til et SDB-kort PCB med enten 3v3 eller 5v understøttelse.

Retro Speech Synth Board

Kontrol af dette kort er over en I2C 5v-kompatibel forbindelse via J1, J5 eller J6, en 4-vejs JST/Molex, 8-vejs DIL IDC eller 8-vejs IDC-båndstik.

U2 MPC23017 leverer I2C til parallel interface til U3 SP0256-AL2 og LEDS D1 (grøn), D2 (rød) og D3 (blå). Udgangen fra Speech Synth føres til lydforstærker CR1 TBA820M via enten analog pot RV1 eller digital pot U1 MCP4561.

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

Bemærk: ESP8266-07-enheden blev valgt, da den har et integreret IPX RF-stik, der gør det muligt at tilføje en ekstern WiFi-antenne til aluminiumskabinettet.

Trin 3: Fremstilling og montering af printkort

Fremstilling og montering af printkort
Fremstilling og montering af printkort
Fremstilling og montering af printkort
Fremstilling og montering af printkort
Fremstilling og montering af printkort
Fremstilling og montering af printkort
Fremstilling og montering af printkort
Fremstilling og montering af printkort

Billeder 1 og 2 viser de færdige og kabelforbundne PCB-underenheder, der er placeret på aluminiumskabinetsunderlaget.

De to printkort blev designet ved hjælp af Kicad v4.0.7, fremstillet af JLCPCB og samlet af mig og vist ovenfor billeder 3 til 13.

Trin 4: Fremstilling

Fremstilling
Fremstilling
Fremstilling
Fremstilling
Fremstilling
Fremstilling

Billede 1 viser et Haynes manuelt layout af alle de præfabrikerede dele før slutmontering.

Billeder 2… 5 viser forskellige billeder under fremstillingen af kabinettet med minimale afstand.

Trin 5: Oversigt over softwaresystem

Oversigt over softwaresystem
Oversigt over softwaresystem
Oversigt over softwaresystem
Oversigt over softwaresystem

Denne IoT Retro Speech Synthesis Device indeholder seks centrale softwarekomponenter som vist på billede 1 ovenfor.

SD kort

Dette er det eksterne SD SPI Flash Filing System og bruges til at gemme følgende oplysninger (se billede 2 ovenfor);

  • Ikoner og 'Speech Synth Configuration Startside' index.htm: Vises af IoT -enheden, når den ikke kan oprette forbindelse til dit IoT WiFi -netværk (normalt på grund af forkerte sikkerhedsoplysninger eller første gangs brug) og giver brugeren et middel for ekstern konfiguration af sensorerne uden behov for at blinke nyt SD-indhold igen. Det indeholder også index1.htm, mqtt.htm og sp0256.htm, disse er de lokalt serverede websider, der er tilgængelige via en webbrowser, der tillader begrænset kontrol af talesyntesen over
  • Sikkerhedsoplysninger: Indeholder de oplysninger, der bruges ved opstart af IoT -enheden til at oprette forbindelse til dit IoT WiFi -netværk og MQTT Broker. Oplysninger, der indsendes via 'Speech Synth Configuration Home Page', skrives til denne fil ('secvals.txt').
  • Kalibreringsoplysninger: Oplysningerne i filerne ('calvals1.txt' og 'calvals2.txt') bruges til at kalibrere de indbyggede temperatur/fugtighedsfølere, hvis det er nødvendigt. Kalibreringskonstanter kan skrives til IoT-enheden via MQTT-kommandoer fra en MQTT-mægler eller ved at genblinke SD-kortet. 'calvals1.txt' vedrører AM2320 -sensoren og 'calvals2.txt' til DHT22.
  • Brugerkonfigurerbare systemværdier: Oplysningerne i denne fil ('confvals.txt'), valgt af brugeren, styrer visse systemresponser, f.eks. Det indledende digitale lydstyrkeniveau, automatisk 'systemklar' meddelelse om MQTT -mæglerabonnement osv.

mDNS -server

Denne funktionalitet påberåbes, når IoT -enheden ikke har kunnet oprette forbindelse til dit WiFi -netværk som en WiFi -station og i stedet er blevet et WiFi -adgangspunkt, der ligner en indenlandsk WiFi -router. I tilfælde af en sådan router ville du typisk oprette forbindelse til den ved at indtaste IP -adressen på noget som 192.168.1.1 (normalt trykt på en etiket påsat boksen) direkte i din browsers URL -bar, hvorefter du vil modtage en login -side for at indtaste brugernavnet og adgangskoden, så du kan konfigurere enheden. For ESP8266-07 i AP-tilstand (Access Point-tilstand) er enheden standard til IP-adressen 192.168.4.1, men med mDNS-serveren kørende skal du kun indtaste det menneskelige navn 'SPEECHSVR.local' i browserens URL-bjælke for at se 'Speech Synth Configuration Startside'.

MQTT -klient

MQTT -klienten giver al den nødvendige funktionalitet til; oprette forbindelse til din IoT -netværk MQTT -mægler, abonnere på de emner, du ønsker, og offentliggøre nyttelast til et givet emne. Det giver kort sagt IoT -kernefunktionalitet.

HTTP -webserver

Denne webserver har to formål;

  1. Hvis IoT -enheden ikke kan oprette forbindelse til WiFi -netværket, hvis SSID, P/W osv. Er defineret i sikkerhedsinformationsfilen på SD -kortet, bliver enheden et adgangspunkt. Når den er tilsluttet WiFi -netværket, der leveres af adgangspunktet, giver tilstedeværelsen af en HTTP -webserver dig mulighed for direkte at oprette forbindelse til enheden og ændre dens konfiguration ved brug af en HTTP -webbrowser, hvis formål er at betjene 'Speech Synth Configuration' Hjemmeside 'webside, som også findes på SD -kortet.
  2. Når IoT Retro Speech Synthesis Device har oprettet forbindelse til WiFi -netværket og MQTT -mægler, vil HTTP -webserveren automatisk få adgang til en HTTP -webside, hvis der er adgang til den, til at tale et udvalg af faste sætninger og mulighed for at cyklus de to forreste røde og blå lysdioder.

WiFi -station

Denne funktionalitet giver IoT -enheden mulighed for at oprette forbindelse til et hjemligt WiFi -netværk ved hjælp af parametrene i sikkerhedsinformationsfilen, uden dette vil din IoT -enhed ikke kunne abonnere/udgive til MQTT Broker.

WiFi -adgangspunkt

Muligheden for at blive et WiFi -adgangspunkt er et middel, hvorved IoT -enheden giver dig mulighed for at oprette forbindelse til den og foretage konfigurationsændringer via en WiFi -station og en browser (f.eks. Safari på Apple iPad). Dette adgangspunkt sender et SSID = "SPEECHSYN" + de sidste 6 cifre i MAC -adressen på IoT -enheden. Adgangskoden til dette lukkede netværk hedder fantasifuldt 'PASSWORD'

Trin 6: Oversigt over software

Softwareoversigt
Softwareoversigt
Softwareoversigt
Softwareoversigt
Softwareoversigt
Softwareoversigt

Præambel

For at kunne kompilere denne kildekode skal du bruge en lokal kopi af koden og bibliotekerne beskrevet i trin 12, Referencer brugt. Hvis du ikke er sikker på, hvordan du installerer et Arduino -bibliotek, skal du gå her.

Oversigt

Softwaren gør brug af statsmaskinen som vist på billede 1 ovenfor (fuld kopi af kilden i mit GitHub-depot her). Der er 5 hovedtilstande som beskrevet nedenfor;

  • I DET

    Denne initialiseringstilstand er den første tilstand, der indtastes efter opstart

  • NOCONFIG

    Denne tilstand indtastes, hvis der efter opstart registreres en ugyldig eller manglende secvals.txt -fil. Under denne tilstand er konfigurationssiden synlig

  • VENTENDE NV

    Denne tilstand er forbigående, indtastet, mens der ikke findes nogen WiFi -netværksforbindelse

  • VENTENDE MQTT

    Denne tilstand er forbigående, indtastes efter at der er oprettet en WiFi -netværksforbindelse, og mens der ikke findes nogen forbindelse til en MQTT -mægler på dette netværk

  • AKTIV

    Dette er den normale driftstilstand, der indtastes, når både en WiFi -netværksforbindelse og en MQTT Broker -forbindelse er etableret. Det er i denne tilstand, at temperatur, varmeindeks og fugtighed på IoT Retro Speech Synthesis Device regelmæssigt offentliggøres til MQTT Broker. I denne tilstand er startsiden for talsyntese synlig

Begivenhederne, der styrer overgange mellem stater, er beskrevet i billede 1 ovenfor. Overgange mellem stater er også styret af følgende SecVals -parametre;

  • 1. MQTT Broker IP -adresse. I stiplet decimalform AAA. BBB. CCC. DDD
  • 2. MQTT -mæglerhavn. I heltal form.
  • 3. MQTT -mæglerforbindelse forsøger at oprette, før der skiftes fra STA -tilstand til AP -tilstand. I heltal form.
  • 4. WiFi -netværks -SSID. I fri form tekst.
  • 5. WiFi -netværksadgangskode. I fri form tekst.

Som nævnt ovenfor, hvis IoT -enheden ikke er i stand til at oprette forbindelse som WiFi -station til WiFi -netværket, hvis SSID og P/W er defineret i secvals.txt på SD -kortet, bliver IoT -enheden et adgangspunkt. Når den er forbundet til dette adgangspunkt, vil den vise 'Startside for talesynthkonfiguration' som vist ovenfor i Pic 2 (ved at indtaste enten 'SPEECHSVR.local' eller 192.168.4.1 i din browsers URL -adresselinje). Denne hjemmeside tillader omkonfiguration af IoT Retro Speech Synthesis Device via en HTTP -browser.

Fjernadgang, mens den er i AKTIV tilstand

Når den først er forbundet til MQTT-mægleren, er det også muligt at både kalibrere og omkonfigurere enheden via MQTT-emnepublikationer. Filen calvals.txt har R/W -adgang, og secvals.txt har skrivebeskyttet adgang blotlagt.

Også som nævnt ovenfor er det en gang i den aktive tilstand muligt at få adgang til talesynthen via et HTTP -interface ved at indtaste 'SPEECHSVR.local' eller 192.168.4.1 i din browsers URL -adresselinje. Denne HTTP -baserede grænseflade muliggør grundlæggende kontrol af talesyntesen. Billeder 3, 4 og 5 viser de tilgængelige websider.

Brugerfejl

Under opstartsekvensen giver IoT -enhedens grønne System -LED bag på kabinettet følgende fejlfindingsfeedback;

  • 1 Kort flash: Ingen konfigurationsfil findes på SD -kort (secvals.txt)
  • 2 korte blink: IoT -enheden forsøger at oprette forbindelse til WiFi -netværket
  • Kontinuerlig belysning: IoT -enhed forsøger at oprette forbindelse til MQTT Broker
  • Slukket: Enheden er aktiv.

IoT Retro Speech Synthesis Device Functionality in ACTIVE State

Når den er i AKTIV tilstand, går ESP8266 ind i en kontinuerlig sløjfe, der kalder følgende funktioner; timer_update (), checkTemperatureAndHumidity () og handleSpeech (). Nettoresultatet, der er designet til at præsentere brugeren for en HTTP- eller MQTT-grænseflade, problemfrit servicere sin indbyggede taleprocessor med fonemer på forespørgsel og offentliggøre lokale parametriske værdier over MQTT.

En omfattende liste over alle emneabonnementer og publikationer inklusive nyttelastværdier er inkluderet i kildekoden.

Trin 7: Sensorkalibrering

Sensorkalibrering
Sensorkalibrering

Når IoT -enheden tændes, læses to filer med navnet 'cavals1.txt' og 'cavals2.txt' fra SD -kortet som en del af startsekvensen.

Indholdet af disse filer er kalibreringskonstanter som angivet ovenfor i billede 1.

  1. 'cavals1.txt': Bruges af den eksterne AM2320
  2. 'cavals2.txt': Bruges af den interne DHT22

Disse kalibreringskonstanter bruges til at justere de aflæsninger, der er hentet fra de to sensorer, for at bringe dem på linje med en referenceindretning. Der er en yderligere værdi, der definerer en rapporteringsstrategi for hver enhed og er beskrevet nedenfor sammen med den procedure, der følges for at kalibrere sensorerne.

Rapporteringsstrategi

Denne parameter bestemmer, hvordan fjernsensoren rapporterer eventuelle omgivende parametriske ændringer lokalt. Hvis der vælges en værdi på 0, vil fjernsensoren offentliggøre enhver ændring, den ser i temperaturen eller fugtigheden, hver gang den respektive sensor læses (ca. hvert 10. sekund). Enhver anden værdi forsinker offentliggørelsen af en ændring med 1… 60 minutter. Ændring af denne parameter muliggør optimering af MQTT -netværkstrafik. Det skal bemærkes, at temperatur- og fugtighedsdata fra DHT22 læses skiftevis på grund af sensorens begrænsninger.

Temperaturkalibrering

For at kalibrere temperatursensoren fulgte jeg den samme proces som beskrevet her trin 4, igen ved hjælp af en simpel y = mx+c relation. Jeg brugte IoT -temperatur, luftfugtighedssensor #1 som referenceenhed. Værdier fra sensoren er i grader celcius.

Fugtighedskalibrering

Da jeg ikke har nogen midler til at registrere eller endda kontrollere lokal luftfugtighed, kalibrerede jeg sensoren, og jeg brugte en lignende tilgang til ovenstående trin 4, igen ved hjælp af sensor #1 som reference. Men ovenstående sagde, jeg har for nylig fundet en glimrende artikel på nettet, der beskriver, hvordan man kalibrerer fugtighedsfølere. Jeg kan godt prøve denne fremgangsmåde engang i fremtiden. Værdier fra sensoren er i %alder af relativ luftfugtighed.

Trin 8: MQTT -emnekonvention

MQTT -emnekonvention
MQTT -emnekonvention
MQTT -emnekonvention
MQTT -emnekonvention

Som nævnt i en tidligere instruerbar (her) besluttede jeg mig for emnet navngivningskonvention, der er skitseret i billede 1 ovenfor.

Nemlig 'AccessMethod/DeviceType/WhichDevice/Action/SubDevice' Det er ikke perfekt, men det gør det muligt at anvende nyttige filtre for at se alle sensorudgange for et givet parametrisk emne, hvilket gør det let at sammenligne som i billede 2 ovenfor med MQTTSpy.

Dette projekt er den første instans, hvor en enkelt enhed indeholder mere end én kilde til samme publikationstype. dvs. To temperatur-/fugtighedsfølere, fra interne og eksterne underenheder.

Det understøtter også rimeligt udvidelige logiske grupperinger af funktionalitet inden for en given IoT -enhed.

Ved implementering af disse emner i software brugte jeg hårdt kodede emnestrenge med faste, integrerede numeriske identifikatorer for hver enhed i modsætning til dynamisk at generere emnerne i løbetid for at spare på RAM og holde ydeevnen høj.

Bemærk: Hvis du ikke er sikker på, hvordan du bruger MQTTSpy, se her 'Opsætning af en MQTT -mægler. Del 2: IoT, hjemmeautomatisering '

Trin 9: Fejlfinding og fejlfinding

Fejlfinding og fejlfinding
Fejlfinding og fejlfinding

I det store og hele, for mine hobbyprojekter, hvor det er muligt, har jeg en tendens til at bygge en repræsentativ hardwareprototype, som softwaren er udviklet imod. Jeg har sjældent problemer med at integrere softwaren i den sidste platformhardware.

Imidlertid stødte jeg ved denne lejlighed på en mærkelig intermitterende fejl, hvorved nogle fonemer ville lyde ud, men andre ikke ville.

Efter en indledende fejlfinding af Speech Synth PCB ved hjælp af en Arduino Uno til kilde fonemer og bevise, at dette board fungerede, tog jeg et omfang til I2C -linjerne mellem IoT PCB og Speech Synth PCB. Se billede 1 ovenfor.

Du kan tydeligt se 'savtanden'/eksponentiel kant til I2C -signalet på sporene.

Dette er normalt en indikation på, at I2C pull up -værdierne er for høje, hvilket forhindrer, at netspændingen genopretter hurtigt nok i et åbent afløbskredsløb.

Som en 'work around' paralleliserede jeg de to smt pull up -modstande R12 og R13 med 10K'er for at give 4K7 og helt sikkert Speech Synth 'brast ud i livet'

Denne form for fiasko er det modsatte af, hvad der kan ske ved fejlfinding af denne type projekter. Generelt kommer de fleste I2C -baserede moduler, der er købt fra Ebay, med 10K eller 4K7 pull ups, der allerede er monteret. Hvis du har til hensigt at bruge> 5 I2C -moduler, hver med 4K7 pull -ups, så er den samlede belastning 940R, hvilket vil være for stort til masterens outputfase. Rettelsen ville være at aflodde alle undtagen et sæt pull-up-modstande på hvert modul. Helst den, der er fysisk længst væk fra mesteren.

Et nyttigt tip og værd at huske på, når du designer elektronik med I2C -enheder.

Trin 10: Test af designet

Image
Image
Test af designet
Test af designet
Test af designet
Test af designet

Testningen blev udført ved hjælp af to metoder; Manuel og automatiseret.

Den første, manuelle og generelt anvendte under den første kodeudvikling var at bruge MQTT Spy til at udøve alle de tilgængelige abonnerede emner og kontrollere de offentliggjorte svar (afbildet i billede 2 ovenfor). Da dette er en manuel proces, kan det være tidskrævende og udsat for fejl, efterhånden som kodeudviklingen skrider frem, selvom manuel udførelse muliggør 100% dækning.

MQTTSpy blev valgt til manuel test, fordi det er et glimrende værktøj til håndformatering af en given nyttelast og let offentliggøre den til ethvert emne. Det viser også en klar, tidsstemplet log, som er meget nyttig til fejlfinding (billede 3 ovenfor).

Den anden, automatiserede tilgang blev vedtaget, da kildekoden blev mere kompleks (> 3700 linjer). Øget kompleksitet betyder længere manuelle testcyklusser og mere komplekse tests. For at forbedre testernes pålidelighed, determinisme og kvalitet blev automatiseret test brugt via en python -testchef (billede 1). Se trin #10 i denne vejledning om, hvordan automatiseret test blev introduceret. En fuld kopi af de automatiserede test, der bruges i denne instruktionsbog, er tilgængelig her.

En video af den automatiserede testsekvens i drift er vist ovenfor. Sekvensen udfører følgende trin;

  • Automatiseret via MQTT

    • Opret forbindelse til MQTT -rygrad og annoncér 'System Ready'
    • Motion grøn LED
    • Træn rød LED
    • Træn blå LED
    • Kontroller, at Digital Pot fungerer
    • Tal ved hjælp af fonemer
    • Tal ved hjælp af hex -koder til fonemer
    • Tal ved hjælp af koder til rettelsesfraser
    • En lille smule Dr Who og Daleks sjov.
  • Manuelt via
    • Træn blå LED
    • Træn rød LED
    • Tal faste sætninger 'Steven Quinn', 'System Ready' og 'Hello World'
    • Få HTTP -serveren, server

      • Detaljer om Speech Synth Chip
      • MQTT detaljer

Trin 11: Konklusion

Konklusion
Konklusion

Selvom det krævede en stor indsats med filer og øvelser osv. Specielt til højttalergitteret, synes jeg, at resultatet er æstetisk tiltalende og pakker sig ind i et flot, lille kabinet. Jeg kunne have gjort det mindre, men det ville have været nødvendigt at gå på et PCB, og jeg brød det bevidst i to, så jeg senere kunne genbruge printkortene til andre projekter. Så det er et lykkeligt kompromis.

Softwaren fungerer godt, IoT -enheden har været i stabil drift i et stykke tid nu uden problemer.

Jeg har overvåget temperatur og fugtighed via Grafana og sammenlignet med en co-lokaliseret enhed. De to omgivende værdier har korreleret godt, hvilket indebærer, at kalibreringen er rimelig (eller i det mindste ligner de).

Jeg stoppede med at implementere ordkommando ('WFD/SpeechTH/1/Word/Command'), fordi jeg løb tør for tid og skulle videre. Jeg kan godt besøge dette igen, hvis og når jeg opretter en MySQL-database. Lige nu bruger jeg InfluxDB.

Trin 12: Anvendte referencer

Følgende kilder blev brugt til at sammensætte denne instruktør sammen; Kildekode til IoT Retro Speech Synthesis Device (dette indeholder en kopi af alt)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Af: Nick O'Leary
  • Formål: Gør det muligt for enheden at udgive eller abonnere på MQTT -emner med en given mægler
  • Fra:

DHT.h

  • Af: Adafruit
  • Formål: Arduino -bibliotek til DHT11DHT22 osv. Temp- og fugtighedssensorer
  • Fra:

Adafruit_AM2320.h/Adafruit_Sensor.h

  • Af: Adafruit
  • Formål: Arduino -bibliotek til AM2320 osv. Temp- og luftfugtighedssensor
  • Fra:

MCP4561_DIGI_POT.h

  • Af: Steve Quinn
  • Formål: Arduino -bibliotek til digitalt potentiometer MCP4561
  • Fra:

Adafruit_MCP23017.h

  • Af: Steve Quinn
  • Formål: Arduino -bibliotek til MCP23017 I2C Port Expander. Dette er en GITHub-gaffel fra Adafruit-MCP23017-Arduino-Library, af Adafruit.
  • Fra:

For sjov

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

Fremstilling af PCB

https://jlcpcb.com/

Installation af yderligere Arduino -biblioteker

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

Sådan kontrolleres og kalibreres en fugtighedssensor

https://www.allaboutcircuits.com/projects/how-to-check-and-calibrate-a-humidity-sensor/?utm_source=All+Amout+Circuits+Members&utm_campaign=ffeee38e54-EMAIL_CAMPAIGN_2017_12_06_utm_med5_255_54_51_54_51_51_54_54_56_56_56_05_05_05_05_05_05_05_05_05_057_56_05_05_05_05_05_05_09_09_05_09_09_09_05_05_09_05_05_05_05_09_07_09_57_07_57 /

SP0256-AL2 Datablad

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

Tale Chips Shop

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

Arduino konkurrence 2019
Arduino konkurrence 2019
Arduino konkurrence 2019
Arduino konkurrence 2019

Runner Up i Arduino Contest 2019

Anbefalede: