Innholdsfortegnelse:

Personlig assistent: 9 trinn (med bilder)
Personlig assistent: 9 trinn (med bilder)

Video: Personlig assistent: 9 trinn (med bilder)

Video: Personlig assistent: 9 trinn (med bilder)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Juli
Anonim
Image
Image
Personlig assistent
Personlig assistent

I denne instruksen skal jeg vise deg hvordan du kan bruke kraften til ESP8266, kreativitet i programvaredesign og programmering, til å lage noe kult og lærerikt.

Jeg kalte den Personlig assistent, fordi den er i lommestørrelse, snakker med deg, og kan gi deg nyttig, og (selvfølgelig) noen ikke nyttig (men fortsatt kul) informasjon om vær, tid og dato, gmail -meldinger, levende fødsel og dødsrater og etc.

Jeg prøvde å holde designet enkelt. Enheten har to brukergrensesnitt. En fysisk trykknapp og et nettbasert program, som brukeren kan få tilgang til ved hjelp av en nettleser og endre enhetsinnstillinger og konfigurasjon.

Hvordan fungerer det? Hovedkomponentene i dette prosjektet er en mikrokontroller og en musikkspillermodul. Vår mikrokontroller (NodeMCU) bruker WiFi -teknologi for å koble til et tilgangspunkt med internettforbindelse; slik at den kan få de nødvendige dataene, behandle den og forteller Music Player (DFPlayer Mini) når, hvilken MP3 -fil som skal spilles av.

For nå er det alt du trenger å vite. Jeg vil gi deg mer detaljert informasjon i de neste trinnene, så ikke bekymre deg.

Trinn 1: Nødvendige deler

Nødvendige deler
Nødvendige deler
  • NodeMCU ESP-12E (CP2102 USB-til-serielt grensesnitt)
  • DFPlayer Mini
  • SPST øyeblikkelig trykknapp
  • 8 Ohm 2 Watt høyttaler
  • Micro SD -kort (Du trenger noen få kilobyte, så kapasiteten spiller ingen rolle)
  • Muttere og bolter

    • M3 nøtter (x6)
    • M3 Bolter - 23 mm (x4)
    • M3 Bolter - 15 mm (x2)
  • 1N4148 Signaldiode (x1)
  • Motstander

    • 1K motstand (x1)
    • 10K motstand (x2)

Andre deler:

  • PCB (du kan bestille en prototype online eller besøke en lokal butikk)
  • Laserskåret akrylark

    • 2 mm tykt klart ark
    • 2,8 mm tykkelse to forskjellige farger ark (oransje og grønt, rødt og grønt, det er opp til deg og fargene spiller ingen rolle)
  • 5 volt (minst) 1 ampere mikro -USB -lader (for å slå på enheten)

Trinn 2: Slik fungerer det

Hvordan det fungerer
Hvordan det fungerer
Hvordan det fungerer
Hvordan det fungerer

Ok, jeg vil gi deg mer detaljert informasjon om hvordan programvaren fungerer.

Programvaren består av noen tjenester. Hver tjeneste har sine egne moduler. (Du kan betrakte en tjeneste som en klasse og dens moduler som dens metoder). Hver modul kan betraktes som et kjørbart objekt. Så, vår programvare består av noen kjørbare objekter.

Her har vi noen tjenester og undertjenester eller deres moduler:

  • Gmail

    Uleste meldinger

  • Vær

    • Gjeldende temperatur
    • Dagens tilstand
    • I dag Lav / Høy
    • Tilstand i morgen
    • I morgen Lav / Høy
    • Nedbør Værmelding
    • Soloppgang solnedgang
  • Tid

    • Nåværende tid
    • Dagens dato
  • Fødsel og død

    • Verdens fødsel
    • Verdens død

Det er en sirkulær kø som inneholder moduler i den. Vi kaller det Operation Queue. Jeg sa, hver modul er et kjørbart objekt. Så når du trykker på trykknappen på enheten, ser den inn i operasjonskøen og utfører den neste modulen (eller objektet).

Du kan redigere medlemmene av operasjonskøen i det nettbaserte brukergrensesnittet som jeg vil forklare senere. For nå skal jeg gi deg et eksempel. Vurder gjeldende driftskø som denne:

KØ (uleste meldinger | Nedbørsprognose | Nåværende tid)

Du trykker på trykknappen, uleste meldinger bør utføres.

KØ (uleste meldinger | Nedbørsprognose | Nåværende tid)

Så enheten vil bruke dataene den samlet inn (her, antall uleste meldinger som er hentet fra Google Mail API -feed) for å snakke med deg. Men hvordan? Her vil NodeMCU fortelle MP3 -modulen når den skal spille hvilket MP3 -stykke som skal lage en meningsfull setning. For å oppnå dette har jeg designet forskjellige køer, tidtakere og algoritmer. (Hvis du er en c ++ - fyr og liker mikrokontrollere, kan du studere koden selv.)

Så du vil høre at enheten begynner å snakke: Du har 4 uleste meldinger i Gmail -innboksen din.

Du trykker på trykknappen igjen, neste modul vil være Precipitation Forecast som bør håndteres.

KØ (uleste meldinger | Nedbørsprognose | Nåværende tid)

Så, du vil høre, noe sånt som: Ikke glem paraplyen din, det regner i morgen. Og så videre … Nok en kul ting: For noen moduler (som nedbørsvarsel) kan du forvente tilfeldige setninger for de samme tilstandene. For eksempel, hvis det er nedbør i morgen og det er regn, og ikke snø, kan du forvente "det er mulighet for regn i morgen", "ta med ditt eget solskinn, det regner i morgen", "tut, tut, ser ut som regn for i morgen", eller…

Hvordan får vi forskjellige data for hver tjeneste?

  • Gmail

    Uleste meldinger Google har et kraftig API som du kan få tilgang til sine forskjellige tjenester, inkludert Gmail. Men for sikkerhets skyld trenger du forskjellige autentiserings- og autorisasjonsmetoder som OAuth. ESP8266 er ikke så kraftig å kjøre forskjellige kompliserte hash -algoritmer. Så jeg brukte en eldre og enkel påloggingsteknologi for å få tilgang til Gmail-innboksen. Det er Google Atom Feed som også kan brukes av RSS -lesere. Vi sender en HTTP -forespørsel for å få tilgang til gmail -feed, og svaret er i XML -format. Så vi teller antall uleste meldinger og bruker det i programmet vårt

  • Vi bruker Yahoo Weather API for å få forskjellig værinformasjon. Nylig, akkurat som Google, har Yahoo endret Weather API, så du må bruke OAuth -standarder for å få tilgang til dataene. Dessverre kan ikke ESP8266 håndtere kompleksiteten, så vi vil bruke et triks for å løse problemet. I stedet for å få tilgang til Yahoo Weather API direkte, sender vi vår forespørsel til en egendefinert fil på en server. Filen vår mottar data fra Yahoo Weather og sender dem bare til oss.

    • I morgen vil tilstanden i morgen fortelle deg om morgenen er varmere eller kaldere enn i dag, eller om det ikke vil være noen fornuftig temperaturendring. Vi sammenligner "i dag lav / høy" med "i morgen lav / høy" for å oppnå dette. Du kan sjekke hvordan jeg skrev denne algoritmen og hvordan den fungerer i programbibliotekfilen.
    • Nedbørsprognose Hvis du sjekker Yahoo Vær -dokumentasjon, kan du se tabellen Tilstandskoder. Som det står, brukes tilstandskoder i svaret for å beskrive de nåværende forholdene. Vi vil bruke morgendagens tilstandskoder og deres betydning for å finne ut om det kommer nedbør og om det er regn eller snø.
  • TimeNTP står for Network Time Protocol. Det er en nettverksprotokoll for klokkesynkronisering mellom datasystemer. Siden vi har internettilgang, vil vi bruke en NTP -klient til å få tid fra en NTP -server, og synkronisere den med ESP8266 interne timer (som den du bruker den med millis () hvis du er en Arduino -fyr).
  • Fødsel og død Vi vil beregne antall fødsler og dødsfall fra begynnelsen av dagen (Takket være NTP -klienten er det enkelt å få antall sekunder siden begynnelsen av dagen). Jeg brukte verdens fødsels- og dødsrater fra økologi.

Trinn 3: Sett opp programvaren

Sett opp programvaren
Sett opp programvaren

Vi vil bruke Arduino IDE til å laste opp programmet vårt til NodeMCU. Du kan laste ned og installere den nyeste Arduino IDE fra deres offisielle nettsted:

Før du starter, må du konfigurere Arduino IDE for Nodemcu. Jeg skal ikke fortelle deg trinnene her, fordi det kan være utenfor temaet. Men du kan følge trinnene og forklaringene på denne utmerkede instruerbare.

Programmet vårt har noen bibliotekavhengigheter. Hva er en programvareavhengighet?

Avhengighet er et bredt programvareteknisk begrep som brukes for å referere når en programvare er avhengig av en annen.

Her er en liste over Arduino -biblioteker du må ha på datamaskinen din for å kunne kompilere Personal Assistant -programmet:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTPClient

Du kan laste dem ned en etter en fra Github -siden, og deretter pakke ut zip -filene til bibliotekkatalogen i Arduino. Banen på systemet ditt er: C: / Users [ditt brukernavn] Documents / Arduino

Jeg skrev et bibliotek for å holde koden ren og unngå kompleksitet. Last ned filen PersonalAssistant-Library.zip og pakk den ut til Arduino bibliotekskatalog. Akkurat som det du gjorde for de tre bibliotekene før.

YahooWeather.php -fil

Siden ESP8266 ikke er kraftig nok til å utføre hash -algoritmer, kan vi ikke bruke den direkte til å sende HTTP -forespørsler til Yahoo Weather API, basert på OAuth -standarder. Så vi vil bruke en fil mellom enheten vår og Yahoo Weather API. Du kan laste ned YahooWeather.zip -fil, pakke den ut og sette YahooWeather.php -filen på en webserver. For eksempel hvis domenet ditt er example.com og du legger filen i api -katalogen, blir api -endepunktet example.com/api/YahooWeather.php Du sender forespørsler om værdata til dette endepunktet.

Programskissen og FFS (Flash File System)

NodeMCU -kortet har et 4 MB flashfilsystem for lagring av data. Så når vi har det, hvorfor ikke bruke det?

Husker du da jeg sa at enheten vår har to brukergrensesnitt? Ved siden av den ensomme trykknappen er vårt andre brukergrensesnitt et enkelt nettbasert program. Med denne applikasjonen kan du manipulere operasjonskøen ved å aktivere / deaktivere hver modul, endre serviceinnstillinger eller enhetskonfigurasjon, for eksempel å sette WiFi SSID og passord. Vi lagrer alle disse filene i NodeMCU Flash File System, og kjører en lett webserver for å håndtere brukerforespørsler fra nettleseren.

Redigerer konfigurasjonsfil

Last ned filen PersonalAssistant-Sketch.zip og pakk den ut et sted på datamaskinen. Åpne filen config.json som ligger:

PersonalAssistant/data/config.json

Du kan bruke hvilken som helst tekst- eller koderedigerer som notisblokk, notisblokk ++, Atom, etc. Filen er en json -datastruktur, så det er et lesbart nøkkel- / verdipar, og du kan enkelt redigere det. Du kan endre disse feltene:

  • Gmail

    • brukernavn: Gmail -brukernavnet ditt med @gmail.com
    • passord: Gmail -passordet ditt
  • Vær

    • woeid: stedet du vil motta værinformasjon for. WOEID (Where On Earth IDentifier) er en referanseidentifikator som Yahoo bruker for posisjon. Du kan utføre et søk på WOEID -steder i denne lenken.
    • api: det er API -endepunktet. Koblingen til din yahooweather.php -fil.
    • appId, consumerKey og consumerSecret: for å få tilgang til Yahoo Weather API må du opprette et prosjekt på Yahoo -utviklersiden. Dette vil gi deg en forbrukernøkkel og hemmelighet som er nødvendig for å bruke API. For å komme i gang, besøk Yahoo Weather Developer -siden og Opprett en APP.
  • Tidssone

    tidssone: angi tidssone basert på posisjonen din. Det kan være et positivt eller negativt float -tall, og enheten er timer

  • WiFi

    • ssid: SSID for nettverket ditt.
    • passord: nettverkspassordet ditt. NodeMCU bruker ssid og passord for å koble til wifi -nettverket ditt.

Laster opp programskisse og FFS -data

Koble NodeMCU til datamaskinen din ved hjelp av en mikro-USB til USB-kabel.

Åpne nå filen PersonalAssistant.ino som ligger:

PersonalAssistant/PersonalAssistant.ino

I Arduino IDE, fra Verktøy> Kort, velg NodeMCU 1.0 (ESP-12E-modul). Fra Verktøy> Port velger du riktig port. Det representerer NodeMCU.

Velg nå Verktøy> ESP8266 Sketch Data Upload, dette vil laste opp innholdet i datamappen til ESP8266. Vent et øyeblikk til det er ferdig. Velg deretter Skisse> Last opp eller bare trykk Ctrl + U -knappene på tastaturet for å begynne å laste opp programmet. Vent til du ser meldingen "opplasting er fullført".

Trinn 4: Sett opp Micro SD -kortet

Vi bruker et micro SD -kort for å lagre MP3 -filbitene. Det er NodeMCU som bestemmer hvilken fil som skal spilles til på hvilket tidspunkt, og DFPlayer Mini hjelper ham med å lage en meningsfull setning ved å dekode MP3 -filene.

Jeg brukte Amazon Polly til å generere stemmestykkene jeg trengte.

Amazon Polly er en tjeneste som gjør tekst til naturtro tale, slik at du kan lage programmer som snakker og bygge helt nye kategorier av taleaktiverte produkter.

Ikke glem, enheten bruker ikke Amazon Polly API for å snakke dynamisk. Vi har noen statiske offline stemmestykker, og ved å sette dem sammen lager vi forskjellige setninger.

Jeg brukte dette nettstedet til å generere MP3 -filer. Stemmeutgangen jeg valgte var amerikansk engelsk / Salli.

Det eneste du trenger å gjøre er å laste ned microSD.zip -filen og deretter pakke den ut i micro SD -kortet. Den inneholder alle de 78 nødvendige MP3 -filene.

Sannsynligvis kommer Micro SD -kortet med og adapter. Du kan sette inn Micro SD -kortet i adapteren og koble det til den bærbare datamaskinen. Hvis datamaskinen ikke støtter kortlesing, bør du bruke en ekstern kortleser.

Trinn 5: Utforme skjemaene og sette opp kretskortet

Utforme skjemaene og sette opp kretskortet
Utforme skjemaene og sette opp kretskortet
Utforme skjemaene og sette opp kretskortet
Utforme skjemaene og sette opp kretskortet
Utforme skjemaene og sette opp kretskortet
Utforme skjemaene og sette opp kretskortet
Utforme skjemaene og sette opp kretskortet
Utforme skjemaene og sette opp kretskortet

Jeg har designet skjemaet og styret ved hjelp av Autodesk EAGLE. Jeg har inkludert både SCH- og BRD-filer i PersonalAssistant-PCB.zip. Du kan enkelt redigere og / eller sende det til en lokal eller online PCB -produsent for å bestille og få brettet ditt.

En ting til å nevne er at ESP8266 fungerer på 3,3v mens DFPlayer Mini fungerer i 5v. Siden disse to modulene trenger å snakke med hverandre gjennom et serielt grensesnitt, kan vi ikke direkte koble en 5v -utgang til en 3,3v -inngang da det skader ESP8266. Så vi trenger en nivåkonvertering fra 5v til 3.3v. Vi bruker en signaldiode og en 10K motstand for å få det til.

Trinn 6: Lodde opp

Lodde opp
Lodde opp
Lodde opp
Lodde opp

Montering av brettet er ganske enkelt ettersom du har noen få komponenter. Følg skjematisk design og brettdesign i trinn 5 for enkelt å sette hvert element på riktig sted.

Jeg begynte med å lodde motstandene og dioden, da de er små. Du kan enkelt klippe de unødvendige halene ved hjelp av en trådkutter. Fra topp til bunn bør du sette 1K, 10K og 10K motstand.

Du trenger ikke lodde alle NodeMCU- og DFPlayer Mini -pinnene på kretskortet. Lodding av pinnene med en bane er nok.

Ikke glem, høyttalere og dioder har polaritet. Du har en høyttaler og en diode i komponentene. For dioden er siden med en svart linje dens negative side eller katoden.

Trinn 7: Vedlegget

Vedlegget
Vedlegget
Vedlegget
Vedlegget
Vedlegget
Vedlegget

Jeg bestemte meg for å designe et fancy kabinett på en kreativ måte. Jeg var bekymret for den rare formen under designet, men på slutten var det ikke så ille. Det ser i hvert fall ut som et flygel og føles godt å holde i hånden!

I stedet for den klassiske hexahedron-kubikkformen med 6 ansikter, designet jeg et flerlags kabinett. Fra bunn til topp legger hvert lag seg på det nedre laget. (Jeg kalte dem L0 til L6, fra bunn til topp)

Farger og tykkelse

Du kan bruke to komplementære farger for å få den sterkeste kontrasten, for eksempel:

  • Rødt og grønt
  • Blå og oransje
  • Gul og lilla
  • Blå og gul

Jeg brukte klar akryl for det øverste laget, slik at du kan se inne i enheten.

Tykkelsen på topplaget (lag-6) skal være 2 mm. Tykkelsen på de andre lagene (lag-0 til lag-5) skal være 4 mm. Hvis du vil bruke et 2,8 mm akrylskjerm, som jeg gjorde, er det ikke noe problem. Men du må kutte to serier fra lag-1 og lag-3 for forskyvningen.

For å montere kabinettet, start fra det nederste laget (L0). Sett brettet på det, bruk de kortere boltene, og stram det med mutrene. Du kan nå feste de fire lengre boltene fra bunnen av laget-0. Noe som et tårn. Da kan du enkelt fortsette å montere andre lag på dem.

Merk: Du kan bruke en valgfri skive mellom bunnlaget og brettet.

Jeg har også lagt til infotekster for enhetsporter (strøm- og mikro -SD -kort). Du kan bruke lasergravering på topplaget.

Jeg har inkludert både CDR og DXF filformater. Du kan laste dem ned, redigere dem og bruke dem til laserskjæring.

Trinn 8: Få tilgang til nettbasert brukergrensesnitt

Få tilgang til nettbasert brukergrensesnitt
Få tilgang til nettbasert brukergrensesnitt

Slå på enheten

Du kan slå på enheten ved hjelp av en hvilken som helst 5v mikro -USB -lader. Koble mikro -USB til enhetens strømport, det vil si mikro -USB -inngangen på NodeMCU.

Få tilgang til brukergrensesnittet

Husker du at vi lastet opp noen filer til ESP8266 Flash File System? Det er på tide å bruke den. Alt du trenger er IP -adressen som er tilordnet ESP8266 på nettverket. Det er mange forskjellige måter å finne IP -adressen på. Jeg vil liste noen av dem her:

  • På ruterens konfigurasjonsside, et eller annet sted i DHCP -leasinglisten, kan du se listen over enheter med deres IP -adresser i nettverket ditt.
  • I Microsoft Windows og macOS kan du kjøre kommandoer som arp -a i terminalen.
  • I Android og iOS kan du bruke programmer som Fing. (Android / iOS)
  • I Linux kan du bruke verktøy som Nmap.

Etter å ha funnet IP -adressen, åpner du den ved hjelp av nettleseren din. Du kan manipulere driftskøen ved å aktivere / deaktivere moduler.

Trinn 9: Avsluttende tanker

Dette prosjektet var tidkrevende og energikrevende. Du kan legge til mange flere alternativer til Personal Assistant. Jeg har latt noen deler stå åpne for fremtidig utvikling. Noen deler som:

  1. Legger til flere tjenester og modul. For eksempel telle tall, kaste en terning eller vende en mynt.
  2. Etter tilkobling til nettverk kan enheten snakke IP -adressen. Du kan legge til dette alternativet for å forenkle prosessen med å finne IP -adressen.
  3. Legger til muligheten til å endre WiFi -innstillinger i nettbasert kontrollpanel.
  4. Legger til muligheten til å endre serviceinnstillinger i nettbasert kontrollpanel. (HTML -skjemaet deres er klart. Du må håndtere forespørsler)
  5. Legger til flere stemmesvar i forskjellige tilstander på enheten.
  6. Legger til en påloggingsside for nettbasert kontrollpanel. Du kan gjøre dette ved å legge til / sammenligne informasjonskapsler i HTTP -overskriftslinjer.

Og jeg vil gjerne vite ideene dine om dette instruerbare.:)

Anbefalt: