Innehållsförteckning:

Retro talsyntes. Del: 12 IoT, Hemautomation: 12 steg (med bilder)
Retro talsyntes. Del: 12 IoT, Hemautomation: 12 steg (med bilder)

Video: Retro talsyntes. Del: 12 IoT, Hemautomation: 12 steg (med bilder)

Video: Retro talsyntes. Del: 12 IoT, Hemautomation: 12 steg (med bilder)
Video: Экскурсия по современному замку-оазису с элементами воды и огня! 2024, Juli
Anonim
Image
Image
Retro talsyntes. Del: 12 IoT, Hemautomation
Retro talsyntes. Del: 12 IoT, Hemautomation

Den här artikeln är den 12: e i serien om hemautomation Instructables som dokumenterar hur man skapar och integrerar en IoT Retro Speech Synthesis -enhet i ett befintligt hemautomatiseringssystem, inklusive all nödvändig mjukvarufunktionalitet för att möjliggöra framgångsrik distribution i en hemmiljö.

Bild 1 visar den färdiga IoT -talsyntesenheten och bild 2 visar alla komponentdelar som används i prototypen som reducerades i formfaktorn för att gå in i slutprodukten.

Videon visar enheten i funktion (under testning).

Introduktion

Som nämnts ovan beskriver denna instruktionsbok hur man gör en IoT Retro-talsyntesenhet och är baserad på General Instruments SP0256-AL2.

Det främsta syftet är att lägga till "old school" röstsyntes till ett IoT -nätverk. Varför "old school" kan du fråga? Jo, eftersom jag var runt på 80-talet när dessa saker först tillverkades och jag kopplade en till min BBC Micro så för mig finns det en viss grad av nostalgi kring SP0256-AL2.

Jag föredrar mycket utmaningen att försöka ta reda på vad i världen som sägs av denna Dalek -klingande röst än att lyssna på dulcet -tonerna från ett hipster -Amazon -eko eller Siri. Var är utmaningen i att jag frågar dig?

Åh, för att inte tala om att jag också har en "väsklast" med "SP0256-AL2" IC: er liggande.

Enheten kan också avläsa lokal temperatur och luftfuktighet, så ytterligare utsträcker den omgivande instrumenteringen av min befintliga IoT -infrastruktur som ansluter till det MQTT/OpenHAB -baserade IoT -nätverket som beskrivs i denna serie om hemautomation (HA) och bygger på återanvänd kod härifrån.

I hjärtat är en ESP8266-07 som är ansvarig för MQTT-kommunikation och kontrollerar all systemfunktionalitet (åtkomst till SD-kort, LED-kontroll, temperatur/luftfuktighetsavkänning, volymkontroll, talsyntes). Enheten är fullt konfigurerbar via textfiler lagrade på en lokalt SD -kort, även om kalibrering och nätverkssäkerhetsparametrar också kan programmeras via fjärranslutna MQTT -publikationer.

Vilka delar behöver jag?

Se materialförslaget här

Vilken programvara behöver jag?

  • Arduino IDE 1.6.9,
  • Arduino IDE konfigurerad för att programmera ESP8266-07 (samma som detta). Konfigurera sedan IDE som anges i den detaljerade beskrivningen i programskissen här,
  • Python v3.5.2 om du vill använda den automatiska testfunktionen, detaljer här

Vilka verktyg behöver jag?

  • Mikroskop minst x3 (för SMT -lödning),
  • Molex -kontaktpressningsverktyg (för JST -kontakter),
  • SMD -lödkolv (med flytande flödespenna och flödeskärnlödning),
  • Skruvmejslar (olika),
  • Värmepistol,
  • Borrar (olika),
  • Försänkning handverktyg,
  • Filer (olika),
  • Dremel (olika bitar),
  • Robust skruvstycke (liten och stor, som en svart och däck arbetskamrat),
  • Skalpell,
  • Vernierkaliper (används för att mäta tillverkning och är användbara för dimensionering av PCB -komponenter),
  • Nycklar och mutterdragare (olika),
  • Stark pincett (för SMT -lödning),
  • Juniorsåg,
  • Borr (med olika borr),
  • Fin tång (spets och snus nos),
  • Spola fräsar,
  • DMM med hörbar kontinuitetskontroll,
  • Dubbel kanal digitalt omfång (praktiskt för felsökningssignaler)

Vilka färdigheter behöver jag?

  • Mycket tålamod,
  • Mycket manuell fingerfärdighet och utmärkt hand/öga -koordination,
  • Utmärkta lödkunskaper,
  • Utmärkta tillverkningskunskaper,
  • Möjligheten att visualisera i 3 dimensioner,
  • Viss kunskap om mjukvaruutveckling med 'C' (om du vill förstå källkoden),
  • Vissa kunskaper om Python (hur man installerar och kör skript om du vill använda den automatiska testningen),
  • Kunskap om Arduino och dess IDE,
  • Goda kunskaper i elektronik,
  • Viss förståelse för ditt hemnätverk.

Ämnen som behandlas

  • Användarmanual
  • Kretsöversikt
  • PCB -tillverkning och montering
  • Tillverkning
  • Programvaruöversikt
  • Programvaruöversikt
  • Sensorkalibrering
  • MQTT -ämnesnamnkonvention
  • Felsökning och felsökning
  • Testar designen
  • Slutsats
  • Referenser används

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

Steg 1: Användarmanual

Användarmanual
Användarmanual
Användarmanual
Användarmanual
Användarmanual
Användarmanual

Bild 1 ovan visar framsidan av Retro Speech Synthesizer och bild 2 på baksidan.

Kapsling fram

  1. Högtalargrill
  2. 3,5 mm hörlursuttag: Huvudhögtalaren är inaktiverad när 3,5 mm -uttag är isatt.
  3. Röd lysdiod: Denna lysdiod tänds medan ett ord talas när tal initierades via en HTTP -begäran.
  4. Blå lysdiod: Denna lysdiod tänds medan ett ord talas när tal initierades via en MQTT IoT -begäran.

Kapsling bak

  1. Återställningsknapp: Används för att hårdåterställa ESP8266-07 IoT-enheten.
  2. Blixtknapp: När den används tillsammans med återställningsknappen kan ESP8266-07 blinka igen.
  3. WiFi -antennplugg (SMA -kontakt): För extern WiFi -antenn som ger minst RF -dämpning eftersom stängningen är aluminium.
  4. Extern programmeringsport: För att ta bort behovet av att skruva loss höljet för att få åtkomst till ESP8266-07 för omprogrammeringsändamål. Programmeringsstiftet på ESP8266-07 har kommit ut till den externa programmeringsporten. Bild 3 är programmeringsadaptern.
  5. Grön lysdiod: Detta är IoT -systemets LED och används för att indikera enhetens diagnosstatus och starta upp och under drift.
  6. Extern temperatur-/fuktighetssensor (AM2320)
  7. SD -kortplats: Detta innehåller alla konfigurations-/säkerhetsdata tillsammans med webbserversidor.
  8. 2,1 mm matningsuttag 6vdc

Steg 2: Kretsöversikt

Kretsöversikt
Kretsöversikt
Kretsöversikt
Kretsöversikt

Retro Speech Synth -enheten består av två kretskort;

  • RetroSpeechSynthIoTBoard: Detta är en generisk, återanvändbar ESP8266-07/12/12E/13 PCB
  • RetroSpeechSynthBoard: Detta är en generisk SP0256-AL2 PCB

Retro Speech Synth IoT -kort

Detta kort möjliggör antingen direktlödning av en ESP8266-07/12/12E/13 eller 0,1 stigningsuttag som rymmer ett ESP8266 bärarkretskort.

Kortet har utformats för att utöka I/O: n över en I2C-anslutning och kan stödja antingen 3v3 eller 5v matningsnivåer via Q1, Q2, R8-13.

Anslutning till kortet uppnås via en av två rubriker J2 och J4, ett 8-vägs DIL IDC-band eller 5-vägs JST/Molex.

U2- och U3 -bestämmelse 3.3v och 5v om styrning av ombordmatning. Alternativt om större strömkapacitet krävs kan seriella shuntregulatorer ombord anslutas via kontakterna J10 respektive J11.

Kontaktdonen J1 och J3 erbjuder stöd för externt SD -kort över SPI. J1 har utformats för en 8-vägs Molex och J3 har direktstift för stöd för stiftkompatibilitet för ett SD-kortkort med antingen 3v3 eller 5v stöd.

Retro Speech Synth Board

Styrningen av detta kort är över en I2C 5v-kompatibel anslutning via J1, J5 eller J6, en 4-vägs JST/Molex, 8-vägs DIL IDC eller 8-vägs IDC-bandkontakt.

U2 MPC23017 tillhandahåller I2C till parallellt gränssnitt till U3 SP0256-AL2 och LEDS D1 (grön), D2 (röd) och D3 (blå). Utsignalen från Speech Synth matas till ljudförstärkaren CR1 TBA820M via antingen analog pott RV1 eller digital pott U1 MCP4561.

Digital Pot U1 styrs också via 5v -kompatibel I2C.

Obs: ESP8266-07-enheten valdes eftersom den har en integrerad IPX RF-kontakt som gör att en extern WiFi-antenn kan läggas till aluminiumhöljet.

Steg 3: Tillverkning och montering av kretskort

PCB -tillverkning och montering
PCB -tillverkning och montering
PCB -tillverkning och montering
PCB -tillverkning och montering
PCB -tillverkning och montering
PCB -tillverkning och montering
PCB -tillverkning och montering
PCB -tillverkning och montering

Bilderna 1 och 2 visar de färdiga och trådbundna PCB-underenheterna på aluminiumhöljesubstratet.

De två kretskorten är designade med Kicad v4.0.7, tillverkade av JLCPCB och monterade av mig och visade ovan bilder 3 till 13.

Steg 4: Tillverkning

Tillverkning
Tillverkning
Tillverkning
Tillverkning
Tillverkning
Tillverkning

Bild 1 visar en Haynes manuell utformning av alla prefabricerade delar före slutmontering.

Bild 2 … 5 visar olika bilder under tillverkningen av höljet med minimala avstånd.

Steg 5: Programvaruöversikt

Programvaruöversikt
Programvaruöversikt
Programvaruöversikt
Programvaruöversikt

Denna IoT Retro Speech Synthesis -enhet innehåller sex viktiga programvarukomponenter som visas på bild 1 ovan.

SD-kort

Detta är det externa SD SPI Flash Filing System och används för att hålla följande information (se bild 2 ovan);

  • Ikoner och "Speech Synth Configuration Home Page" index.htm: Serveras av IoT -enheten när den inte kan ansluta till ditt IoT WiFi -nätverk (vanligtvis på grund av felaktig säkerhetsinformation eller första gången) och ger användaren ett medel för att fjärrkonfigurera sensorerna utan att behöva återblixta nytt SD-innehåll. Det innehåller också index1.htm, mqtt.htm och sp0256.htm, dessa är de lokalt betjänade webbsidor som är tillgängliga via en webbläsare som tillåter begränsad kontroll av talsyntet över
  • Säkerhetsinformation: Den innehåller informationen som används vid uppstart av IoT -enheten för att ansluta till ditt IoT WiFi -nätverk och MQTT Broker. Information som skickas via "Speech Synth Configuration Home Page" skrivs till den här filen ("secvals.txt").
  • Kalibreringsinformation: Informationen i filerna ('calvals1.txt' och 'calvals2.txt') används för att kalibrera de inbyggda temperatur-/fuktsensorerna om det skulle behövas. Kalibreringskonstanter kan skrivas till IoT-enheten via MQTT-kommandon från en MQTT-mäklare eller genom att återblixta SD-kortet. 'calvals1.txt' avser AM2320 -sensorn och 'calvals2.txt' till DHT22.
  • Användarkonfigurerbara systemvärden: Informationen i denna fil ('confvals.txt'), vald av användaren, styr vissa systemsvar, till exempel initial digital volymnivå, automatiskt 'systemklar' meddelande om MQTT -mäklarabonnemang etc.

mDNS -server

Denna funktionalitet åberopas när IoT -enheten misslyckades med att ansluta till ditt WiFi -nätverk som en WiFi -station och istället har blivit en WiFi -åtkomstpunkt något som liknar en inhemsk WiFi -router. När det gäller en sådan router ansluter du vanligtvis till den genom att ange IP -adressen till något som 192.168.1.1 (vanligtvis tryckt på en etikett fäst på rutan) direkt i webbläsarens URL -fält, varefter du skulle få en inloggningssida för att komma in användarnamnet och lösenordet så att du kan konfigurera enheten. För ESP8266-07 i AP-läge (åtkomstpunktsläge) standardiseras enheten till IP-adressen 192.168.4.1, men med mDNS-servern igång behöver du bara ange det mänskliga namnet 'SPEECHSVR.local' i webbläsarens URL-fält för att se "Hemsida för talsynteskonfiguration".

MQTT -klient

MQTT -klienten tillhandahåller all nödvändig funktionalitet för att; anslut till din IoT -nätverk MQTT -mäklare, prenumerera på de ämnen du väljer och publicera nyttolast för ett visst ämne. Kort sagt tillhandahåller den IoT -kärnfunktionalitet.

HTTP -webbserver

Denna webbserver har två syften;

  1. Om IoT -enheten inte kan ansluta till WiFi -nätverket vars SSID, P/W etc. är definierat i säkerhetsinformationsfilen på SD -kortet, blir enheten en åtkomstpunkt. När den väl är ansluten till WiFi -nätverket som tillhandahålls av åtkomstpunkten kan närvaron av en HTTP -webbserver direkt ansluta till enheten och ändra dess konfiguration med hjälp av en HTTP -webbläsare. Startsidan som också finns på SD -kortet.
  2. När IoT Retro Speech Synthesis Device har anslutit till WiFi -nätverket och MQTT -mäklaren kommer HTTP -webbservern automatiskt att tillhandahålla en HTTP -webbsida om IoT -enheten talar ett urval av fasta fraser och möjligheten att cykla de två främre röda och blå lysdioderna.

WiFi -station

Denna funktion ger IoT -enheten möjlighet att ansluta till ett inhemskt WiFi -nätverk med parametrarna i säkerhetsinformationsfilen, utan detta kan din IoT -enhet inte prenumerera/publicera på MQTT -mäklaren.

WiFi -åtkomstpunkt

Möjligheten att bli en WiFi -åtkomstpunkt är ett sätt på vilket IoT -enheten låter dig ansluta till den och göra konfigurationsändringar via en WiFi -station och en webbläsare (t.ex. Safari på Apple iPad). Denna åtkomstpunkt sänder ett SSID = "SPEECHSYN" + de sista 6 siffrorna i MAC -adressen för IoT -enheten. Lösenordet för detta stängda nätverk heter fantasifullt 'LÖSENORD'

Steg 6: Programöversikt

Programvaruöversikt
Programvaruöversikt
Programvaruöversikt
Programvaruöversikt
Programvaruöversikt
Programvaruöversikt

Inledning

För att lyckas sammanställa denna källkod behöver du en lokal kopia av koden och biblioteken som beskrivs nedan i steg 12, Referenser används. Om du inte är säker på hur du installerar ett Arduino -bibliotek, gå hit.

Översikt

Programvaran använder tillståndsmaskinen enligt bild 1 ovan (fullständig kopia av källan i mitt GitHub-arkiv här). Det finns 5 huvudtillstånd enligt nedan;

  • I DET

    Detta initialiseringstillstånd är det första tillståndet som angavs efter uppstart

  • NOCONFIG

    Detta tillstånd anges om en ogiltig eller saknad secvals.txt -fil upptäcks efter uppstart. Under detta tillstånd är konfigurationssidan synlig

  • Väntar på NW

    Detta tillstånd är övergående, anges medan det inte finns någon WiFi -nätverksanslutning

  • Väntande MQTT

    Detta tillstånd är övergående, anges efter att en WiFi -nätverksanslutning har gjorts och även om det inte finns någon anslutning till en MQTT -mäklare på det nätverket

  • AKTIVA

    Detta är det normala driftsläget som anges när både en WiFi -nätverksanslutning och en MQTT Broker -anslutning har upprättats. Det är under detta tillstånd att temperaturen, värmeindexet och luftfuktigheten på IoT Retro Speech Synthesis Device regelbundet publiceras till MQTT Broker. I detta tillstånd är startsidan för talsyntes synlig

Händelserna som styr övergångar mellan tillstånd beskrivs i bild 1 ovan. Övergångar mellan stater styrs också av följande SecVals -parametrar;

  • Första MQTT -mäklarens IP -adress. I prickig decimalform AAA. BBB. CCC. DDD
  • 2: a MQTT -mäklarporten. I heltal.
  • Tredje MQTT -mäklaranslutningen försöker göra innan man byter från STA -läge till AP -läge. I heltal.
  • 4: e WiFi -nätverks -SSID. I fri form text.
  • 5: e WiFi -nätverkslösenordet. I fri form text.

Som nämnts ovan om IoT -enheten inte kan ansluta som WiFi -station till WiFi -nätverket som har SSID och P/W som definieras i secvals.txt som finns på SD -kortet blir IoT -enheten en åtkomstpunkt. När den väl är ansluten till den här åtkomstpunkten kommer den att visa "startsidan för talsynteskonfiguration" som visas ovan i bild 2 (genom att antingen ange "SPEECHSVR.local" eller 192.168.4.1 i webbläsarens webbadressadressfält). Denna hemsida möjliggör omkonfigurering av IoT Retro Speech Synthesis Device via en HTTP -webbläsare.

Fjärråtkomst medan den är i AKTIVT tillstånd

När den väl är ansluten till MQTT-mäklaren är det också möjligt att både kalibrera och omkonfigurera enheten via MQTT-ämnespublikationer. Filen calvals.txt har R/W -åtkomst och secvals.txt har skrivåtkomst exponerad.

Även som nämnts ovan är det en gång i det aktiva läget möjligt att komma åt talsynth via ett HTTP -gränssnitt genom att ange 'SPEECHSVR.local' eller 192.168.4.1 i webbläsarens webbadressfält. Detta HTTP -baserade gränssnitt möjliggör grundläggande kontroll av talsyntesen. Bilderna 3, 4 och 5 visar tillgängliga webbsidor.

Användarfelsökning

Under uppstartssekvensen ger IoT -enhetens gröna systemled på baksidan av höljet följande felsökningsåterkoppling;

  • 1 Kort blixt: Ingen konfigurationsfil finns på SD -kortet (secvals.txt)
  • 2 Korta blinkningar: IoT -enheten försöker ansluta till WiFi -nätverket
  • Kontinuerlig belysning: IoT -enheten försöker ansluta till MQTT Broker
  • Av: Enheten är aktiv.

IoT Retro -talsyntes -enhetens funktionalitet i AKTIVT tillstånd

Väl i ACTIVE -läget går ESP8266 in i en kontinuerlig loop som kallar följande funktioner; timer_update (), checkTemperatureAndHumidity () och handleSpeech (). Nettoresultatet har utformats för att ge användaren ett HTTP- eller MQTT-gränssnitt, utan problem att betjäna sin inbyggda talprocessor med fonem på begäran och publicera lokala omgivande parametriska värden över MQTT.

En omfattande lista över alla ämnesabonnemang och publikationer inklusive nyttolastvärden ingår i källkoden.

Steg 7: Sensorkalibrering

Sensorkalibrering
Sensorkalibrering

När IoT -enheten startas läses två filer med namnet 'cavals1.txt' och 'cavals2.txt' från SD -kortet som en del av startsekvensen.

Innehållet i dessa filer är kalibreringskonstanter som anges ovan i bild 1.

  1. 'cavals1.txt': Används av den externa AM2320
  2. 'cavals2.txt': Används av den interna DHT22

Dessa kalibreringskonstanter används för att justera avläsningarna från de två sensorerna för att anpassa dem till en referensanordning. Det finns ytterligare ett värde som definierar en rapporteringsstrategi för varje enhet och beskrivs nedan tillsammans med proceduren som följs för att kalibrera sensorerna.

Rapporteringsstrategi

Den här parametern bestämmer hur fjärrsensorn rapporterar eventuella parametriska förändringar i omgivningen. Om ett värde på 0 väljs kommer fjärrsensorn att publicera alla ändringar som det ser i temperaturen eller luftfuktigheten varje gång respektive sensor läses (ungefär var 10: e sekund). Alla andra värden kommer att försena publiceringen av en ändring med 1… 60 minuter. Genom att ändra denna parameter möjliggörs optimering av MQTT -nätverkstrafik. Det bör noteras att temperatur- och luftfuktighetsdata från DHT22 läses omväxlande på grund av sensorns begränsningar.

Temperaturkalibrering

För att kalibrera temperatursensorn följde jag samma process som beskrivs här steg 4, igen med ett enkelt y = mx+c -förhållande. Jag använde IoT -temperatur, fuktighetssensor #1 som referensenhet. Värden från sensorn är i grader celcius.

Luftfuktighetskalibrering

Eftersom jag inte har några möjligheter att exakt registrera eller till och med kontrollera lokal luftfuktighet, för att kalibrera sensorn, använde jag en liknande metod som ovan, steg 4, igen med sensor #1 som referens. Men ovanstående har jag nyligen hittat en utmärkt artikel på webben som beskriver hur man kalibrerar fuktsensorer. Jag kan mycket väl prova detta tillvägagångssätt någon gång i framtiden. Värden från sensorn är i %ålder av relativ luftfuktighet.

Steg 8: MQTT -ämnesnamnkonvention

MQTT -ämnesnamnkonvention
MQTT -ämnesnamnkonvention
MQTT -ämnesnamnkonvention
MQTT -ämnesnamnkonvention

Som nämnts i en tidigare instruerbar (här) bestämde jag mig för ämnesnamnkonventionen som beskrivs i bild 1 ovan.

Nämligen 'AccessMethod/DeviceType/WhichDevice/Action/SubDevice' Det är inte perfekt, men det gör det möjligt att använda användbara filter för att se alla sensorutgångar för ett givet parametriskt ämne, vilket gör det enkelt att jämföra som på bild 2 ovan med MQTTSpy.

Detta projekt är den första instansen där en enda enhet innehåller mer än en ursprungskälla för samma typ av publikation. dvs. Två temperatur/fuktighetsgivare, från interna och externa underenheter.

Det stöder också rimligt utökbara logiska grupperingar av funktioner inom en given IoT -enhet.

Vid implementering av dessa ämnen i programvara använde jag hårdkodade ämnessträngar med fasta, inbäddade numeriska identifierare för varje enhet i motsats till att dynamiskt generera ämnena vid körning för att spara på RAM och hålla prestanda hög.

Obs! Om du inte är säker på hur du använder MQTTSpy, se här 'Konfigurera en MQTT -mäklare. Del 2: IoT, Hemautomation '

Steg 9: Felsökning och felsökning

Felsökning och felsökning
Felsökning och felsökning

I stort, för mina hobbyprojekt, där det är möjligt tenderar jag att bygga en representativ hårdvaruprototyp som programvaran utvecklas mot. Jag har sällan några problem när jag integrerar programvaran i den slutliga plattformshårdvaran.

Men vid detta tillfälle stötte jag på ett konstigt intermittent fel där vissa fonem skulle låta ut men andra inte.

Efter en inledande felsökning av Speech Synth PCB med en Arduino Uno för att källa fonem och bevisa att detta kort fungerade, tog jag en räckvidd till I2C -linjerna mellan IoT PCB och Speech Synth PCB. Se bild 1 ovan.

Du kan tydligt se "sågtanden"/exponentiell kant till I2C -signalen på spåren.

Detta är vanligtvis en indikation på att I2C -uppdragningsvärdena är för höga som förhindrar att nätspänningen återhämtar sig tillräckligt snabbt i en öppen avloppskrets.

Som en `` work around '' parallelliserade jag de två smt -uppdragningsmotstånden R12 och R13 med 10Ks för att ge 4K7 och säker nog "Speech Synth" burst in life"

Denna typ av fel är motsatsen till vad som kan hända vid felsökning av den här typen av projekt. I allmänhet tenderar de flesta I2C -baserade modulerna köpta från Ebay att ha 10K eller 4K7 pull ups redan monterade. Om du tänker använda> 5 I2C -moduler, var och en med 4K7 pull -ups, är den totala belastningen 940R vilket blir för stort för masterns utgångssteg. Fixen skulle vara att avlödda alla utom en uppsättning uppdragningsmotstånd på varje modul. Helst den som är fysiskt längst bort från befälhavaren.

Ett användbart tips och värt att tänka på när du designar elektronik med I2C -enheter.

Steg 10: Testa designen

Image
Image
Testar designen
Testar designen
Testar designen
Testar designen

Testning utfördes med två metoder; Manuell och automatiserad.

Den första, manuella och allmänt använda under den första kodutvecklingen var att använda MQTT Spy för att utöva alla tillgängliga prenumerationsämnen och kontrollera de publicerade svaren (avbildad på bild 2 ovan). Eftersom detta är en manuell process kan det vara tidskrävande och utsatt för fel när kodutvecklingen fortskrider, även om manuell körning möjliggör 100% täckning.

MQTTSpy valdes för manuell testning eftersom det är ett utmärkt verktyg för att enkelt formatera en given nyttolast och enkelt publicera den till vilket ämne som helst. Det visar också en tydlig, tidsstämplad logg som är mycket användbar för felsökning (bild 3 ovan).

Den andra, automatiska metoden antogs eftersom källkoden blev mer komplex (> 3700 rader). Ökad komplexitet innebär längre manuella testcykler och mer komplexa tester. För att förbättra tillförlitligheten, determinismen och kvaliteten på tester användes automatiserad testning via en pythontestchef (bild 1). Se steg #10 i denna instruktion om hur automatiserade tester introducerades. En fullständig kopia av de automatiska testerna som används i denna instruktionsbok finns här.

En video av den automatiska testsekvensen i drift visas ovan. Sekvensen utför följande steg;

  • Automatiserat via MQTT

    • Anslut till MQTT -ryggraden och meddela 'System Ready'
    • Träna grön LED
    • Träna röd LED
    • Träna blå LED
    • Kontrollera att Digital Pot fungerar
    • Tala med fonem
    • Tala med hexkoder för fonem
    • Tala med hjälp av koder för fixfraser
    • Lite av Dr Who och Daleks kul.
  • Manuellt via
    • Träna blå LED
    • Träna röd LED
    • Tala fasta fraser "Steven Quinn", "System Ready" och "Hello World"
    • Ha HTTP -servern, servera
      • Detaljer om Speech Synth Chip
      • MQTT -detaljer

Steg 11: Slutsats

Slutsats
Slutsats

Även om det krävdes mycket ansträngning med filer och övningar etc. speciellt för högtalargallret, tycker jag att resultatet är estetiskt tilltalande och packas in i ett fint, litet hölje. Jag kunde ha gjort det mindre men det skulle behöva gå in på ett kretskort och jag delade det avsiktligt i två så att jag kunde återanvända kretskortet vid ett senare tillfälle för andra projekt. Så det är en lycklig kompromiss.

Programvaran fungerar bra, IoT -enheten har varit i stabil drift ganska länge nu utan problem.

Jag har övervakat temperaturen och luftfuktigheten via Grafana och jämfört med en samlokaliserad enhet. De två omgivande värdena har korrelerat bra, vilket innebär att kalibreringen är rimlig (eller åtminstone är de liknande).

Jag slutade med att implementera ordkommando ('WFD/SpeechTH/1/Word/Command') eftersom jag tog slut och behövde gå vidare. Jag kan mycket väl återbesöka detta om och när jag skapar en MySQL-databas. Just nu använder jag InfluxDB.

Steg 12: Referenser används

Följande källor användes för att sätta ihop denna instruerbara; Källkod för IoT Retro Speech Synthesis Device (denna innehåller en kopia av allt)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Av: Nick O'Leary
  • Syfte: Gör att enheten kan publicera eller prenumerera på MQTT -ämnen med en given mäklare
  • Från:

DHT.h

  • Av: Adafruit
  • Syfte: Arduino -bibliotek för DHT11DHT22, etc. Temp- och fuktsensorer
  • Från:

Adafruit_AM2320.h/Adafruit_Sensor.h

  • Av: Adafruit
  • Syfte: Arduino -bibliotek för AM2320, etc Temp & Fuktighetssensor
  • Från:

MCP4561_DIGI_POT.h

  • Av: Steve Quinn
  • Syfte: Arduino Library för MCP4561 digital potentiometer
  • Från:

Adafruit_MCP23017.h

  • Av: Steve Quinn
  • Syfte: Arduino -bibliotek för MCP23017 I2C Port Expander. Detta är en GITHub-gaffel från Adafruit-MCP23017-Arduino-Library, av Adafruit.
  • Från:

På skoj

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

PCB -tillverkning

https://jlcpcb.com/

Installera ytterligare Arduino -bibliotek

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

Hur man kontrollerar och kalibrerar en fuktsensor

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

SP0256-AL2 Datablad

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

Talchipsbutik

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

Arduino Contest 2019
Arduino Contest 2019
Arduino Contest 2019
Arduino Contest 2019

Tvåa i Arduino -tävlingen 2019

Rekommenderad: