Indholdsfortegnelse:

Personlig assistent: 9 trin (med billeder)
Personlig assistent: 9 trin (med billeder)

Video: Personlig assistent: 9 trin (med billeder)

Video: Personlig assistent: 9 trin (med billeder)
Video: Стильная Мужская Стрижка 2023 Пошагово дома | Уроки стрижек Евы Лорман | Как стричь Мужские стрижки 2024, Juli
Anonim
Image
Image
Personlig assistent
Personlig assistent

I denne instruktive vil jeg vise dig, hvordan du kan bruge kraften i ESP8266, kreativitet inden for software design og programmering, til at lave noget sejt og lærerigt.

Jeg kaldte den Personal Assistant, fordi den er i størrelse, taler til dig og kan giver dig nogle nyttige og (selvfølgelig) et par ikke nyttige (men stadig fede) oplysninger om vejr, tid og dato, gmail -beskeder, levende fødsel og dødsfald og så videre.

Jeg forsøgte at holde designet enkelt. Enheden har to brugergrænseflader. En fysisk trykknap og et webbaseret program, som brugeren kan få adgang til ved hjælp af en webbrowser og ændre enhedens indstillinger og konfiguration.

Hvordan fungerer det? Hovedkomponenterne i dette projekt er en mikrokontroller og et musikafspillermodul. Vores mikrokontroller (NodeMCU) bruger WiFi -teknologi til at oprette forbindelse til et adgangspunkt med internetforbindelse; så den kan hente de nødvendige data, behandle den og fortæller musikafspilleren (DFPlayer Mini) hvornår, hvilken MP3 -fil der skal afspilles.

For nu er det alt hvad du behøver at vide. Jeg vil give dig mere detaljerede oplysninger i de næste trin, så bare rolig.

Trin 1: Nødvendige dele

Nødvendige dele
Nødvendige dele
  • NodeMCU ESP-12E (CP2102 USB-til-serielt interface)
  • DFPlayer Mini
  • SPST øjeblikkelig trykknap
  • 8 Ohm 2 Watt højttaler
  • Micro SD -kort (Du skal bruge et par kilobyte, så kapaciteten er ligegyldig)
  • Møtrikker og bolte

    • M3 møtrikker (x6)
    • M3 Bolte - 23 mm (x4)
    • M3 Bolte - 15 mm (x2)
  • 1N4148 Signaldiode (x1)
  • Modstande

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

Andre dele:

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

    • 2 mm tykt klart ark
    • 2,8 mm tykkelse to forskellige farver ark (orange og grøn, rød og grøn, det er op til dig og farverne er ligegyldige)
  • 5 volt (mindst) 1 ampere mikro -USB -oplader (for at tænde enheden)

Trin 2: Sådan fungerer det

Hvordan det virker
Hvordan det virker
Hvordan det virker
Hvordan det virker

Okay, jeg vil give dig mere detaljerede oplysninger om, hvordan softwaren fungerer.

Softwaren består af nogle tjenester. Hver service har sine egne moduler. (Du kan betragte en tjeneste som en klasse og dens moduler som dens metoder). Hvert modul kan betragtes som et eksekverbart objekt. Så vores software består af nogle eksekverbare objekter.

Her har vi nogle tjenester og undertjenester eller deres moduler:

  • Gmail

    Ulæste meddelelser

  • Vejr

    • Nuværende temperatur
    • Dagens stand
    • I dag Lav / Høj
    • I morgen tilstand
    • I morgen Lav / Høj
    • Nedbør Prognose
    • Solopgang solnedgang
  • Tid

    • Nuværende tid
    • Nuværende dato
  • Fødsel & død

    • Verdens fødsel
    • Verdensdød

Der er en cirkulær kø, der indeholder moduler i den. Vi kalder det Operation Queue. Jeg sagde, at hvert modul er et eksekverbart objekt. Så når du trykker på trykknappen på enheden, ser den ind i driftskøen og udfører det næste modul (eller objekt).

Du kan redigere medlemmerne af operationskøen i den webbaserede brugergrænseflade, som jeg vil forklare senere. For nu vil jeg give dig et eksempel. Overvej den aktuelle driftskø som denne:

KØ (ulæste meddelelser | Nedbørsprognose | Aktuel tid)

Du trykker på trykknappen, ulæste meddelelser skal udføres.

KØ (ulæste meddelelser | Nedbørsprognose | Aktuel tid)

Så enheden vil bruge de data, den har indsamlet (her, antallet af dine ulæste meddelelser, der er hentet fra Google Mail API -feed) til at tale til dig. Men hvordan? Her vil NodeMCU fortælle MP3 -modulet, hvornår det skal afspille hvilket MP3 -stykke der skal laves en meningsfuld sætning. For at opnå dette har jeg designet forskellige køer, timere og algoritmer. (Hvis du er en c ++ fyr og kan lide mikrokontrollere, kan du selv undersøge koden.)

Så du vil høre, enheden begynder at tale: Du har 4 ulæste meddelelser i din gmail -indbakke.

Du trykker på trykknappen igen, næste modul er Precipitation Forecast, der skal håndteres.

KØ (ulæste meddelelser | Nedbørsprognose | Aktuel tid)

Så vil du høre noget i stil med: Glem ikke din paraply, det regner i morgen. Og så videre … Endnu en cool ting: For nogle moduler (som nedbørsprognoser) kan du forvente tilfældige sætninger for de samme tilstande. For eksempel, hvis der i morgen er nedbør, og det er regn, og ikke sne, kan du forvente "der er mulighed for regn i morgen", "tag dit eget solskin, det regner i morgen", "tut, tut, ligner regn til i morgen", eller…

Hvordan får vi forskellige data for hver service?

  • Gmail

    Ulæste meddelelser Google har en kraftfuld API, som du kan få adgang til sine forskellige tjenester, herunder Gmail. Men af sikkerhedsmæssige årsager har du brug for forskellige godkendelses- og autorisationsmetoder som OAuth. ESP8266 er ikke så kraftfuld til at køre forskellige komplicerede hash -algoritmer. Så jeg brugte en ældre og enkel login-teknologi til at få adgang til gmail-indbakke. Det er Google Atom Feed, der også kan bruges af RSS -læsere. Vi sender en HTTP -anmodning for at få adgang til gmail -feed, og dets svar er i XML -format. Så vi tæller antallet af ulæste meddelelser og bruger det i vores program

  • Vi bruger Yahoo Weather API til at få forskellige vejroplysninger. For nylig, ligesom Google, har Yahoo ændret sin Weather API, så du bliver nødt til at bruge OAuth -standarder for at få adgang til dens data. Desværre kan ESP8266 ikke håndtere dens kompleksitet, så vi vil bruge et trick til at løse problemet. I stedet for at få adgang til Yahoo Weather API direkte, sender vi vores anmodning til en brugerdefineret fil på en server. Vores fil får data fra Yahoo Weather og sender dem simpelthen til os.

    • I morgen vil tilstanden i morgen fortælle dig, om morgenen er varmere eller koldere end i dag, eller der, hvis der ikke vil være nogen fornuftig ændring i temperaturen. Vi sammenligner "i dag lav / høj" med "i morgen lav / høj" for at opnå dette. Du kan kontrollere, hvordan jeg skrev denne algoritme, og hvordan den fungerer i programmets biblioteksfil.
    • Nedbørsprognose Hvis du tjekker Yahoo Weather -dokumentation, kan du se tabel over betingelseskoder. Som det står, bruges betingelseskoder i svaret til at beskrive de aktuelle forhold. Vi vil bruge morgendagens tilstandskoder og deres betydning for at finde ud af, om der kommer nedbør, og er det regn eller sne.
  • TimeNTP står for Network Time Protocol. Det er en netværksprotokol til ur -synkronisering mellem computersystemer. Da vi har internetadgang, vil vi bruge en NTP -klient til at få tid fra en NTP -server og synkronisere den på tværs af ESP8266 intern timer (som den du bruger den med millis (), hvis du er en Arduino -fyr).
  • Fødsel og død Vi vil beregne antallet af fødsler og dødsfald fra begyndelsen af dagen (Takket være NTP -klient er det let at få antal sekunder siden begyndelsen af dagen). Jeg brugte verdens fødsels- og dødsfrekvenser fra økologi.

Trin 3: Konfigurer softwaren

Opsætning af softwaren
Opsætning af softwaren

Vi vil bruge Arduino IDE til at uploade vores program til NodeMCU. Du kan downloade og installere den nyeste Arduino IDE fra deres officielle websted:

Inden du starter, skal du konfigurere Arduino IDE til Nodemcu. Jeg vil ikke fortælle dig trinene her, for det kan være uden for emnet. Men du kan følge trinene og forklaringerne på denne fremragende instruerbare.

Vores program har nogle bibliotekafhængigheder. Hvad er en softwareafhængighed?

Afhængighed er et bredt softwareteknisk udtryk, der bruges til at referere, når et stykke software er afhængigt af et andet.

Her er en liste over Arduino -biblioteker, du skal have på din computer for at kunne kompilere programmet Personal Assistant:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTPClient

Du kan downloade dem en efter en fra deres Github -side og derefter udpakke zip -filerne til biblioteket i Arduino -biblioteket. Dens sti på dit system er: C: / Users [dit-brugernavn] Documents / Arduino

Jeg skrev et bibliotek for at holde koden ren og undgå kompleksitet. Download filen PersonalAssistant-Library.zip og udpak den til Arduino bibliotekskatalog. Ligesom hvad du gjorde for de tre biblioteker før.

YahooWeather.php -fil

Da ESP8266 ikke er kraftfuld nok til at udføre hash -algoritmer, kan vi ikke bruge det direkte til at sende HTTP -anmodninger til Yahoo Weather API, baseret på OAuth -standarder. Så vi vil bruge en fil mellem vores enhed og Yahoo Weather API. Du kan downloade YahooWeather.zip -fil, udtrække den og lægge YahooWeather.php -filen på en webserver. For eksempel hvis dit domæne er example.com, og du lægger filen i api -bibliotek, bliver dit api -slutpunkt example.com/api/YahooWeather.php Du sender anmodninger om vejrdata til dette slutpunkt.

Programskitsen og FFS (Flash File System)

Dit NodeMCU -kort har et 4 MB flashfilsystem til lagring af data. Så når vi har det, hvorfor ikke bruge det?

Kan du huske, da jeg sagde, at vores enhed har to brugergrænseflader? Udover den ensomme trykknap er vores anden brugergrænseflade en simpel webbaseret applikation. Med denne applikation kan du manipulere driftskøen ved at aktivere / deaktivere hvert modul, ændre serviceindstillinger eller enhedskonfiguration, f.eks. At indstille WiFi SSID og adgangskode. Vi gemmer alle disse filer i NodeMCU Flash File System og kører en let webserver til håndtering af brugeranmodninger fra deres webbrowser.

Redigering af konfigurationsfil

Download filen PersonalAssistant-Sketch.zip og udpak den et sted på din computer. Åbn filen config.json, som er placeret:

PersonalAssistant/data/config.json

Du kan bruge en hvilken som helst tekst- eller kode -editor som f.eks. Notesblok, notesblok ++, Atom osv. Filen er en json -datastruktur, så det er et menneskeligt læseligt nøgle / værdipar, og du kan nemt redigere det. Du kan ændre disse felter:

  • Gmail

    • brugernavn: dit Gmail -brugernavn med dets @gmail.com
    • password: din Gmail -adgangskode
  • Vejr

    • woeid: det sted, du vil modtage vejrinformation for. WOEID (Where On Earth IDentifier) er en referenceidentifikator, som Yahoo bruger til placering. Du kan udføre en søgning på WOEID -steder i dette link.
    • api: det er API -slutpunktet. Linket til din yahooweather.php -fil.
    • appId, consumerKey og consumerSecret: For at få adgang til Yahoo Weather API skal du oprette et projekt på Yahoo -udviklersiden. Dette giver dig en forbrugernøgle og hemmelighed, der er nødvendig for at bruge API'en. For at komme i gang skal du besøge Yahoo Weather Developer -siden og oprette en APP.
  • Tidszone

    tidszone: indtast tidszone baseret på din placering. Det kan være et positivt eller negativt float -tal, og dets enhed er timer

  • Trådløst internet

    • ssid: SSID for dit netværk.
    • password: dit netværksadgangskode. NodeMCU bruger ssid og adgangskode til at oprette forbindelse til dit wifi -netværk.

Upload af programskitse og FFS -data

Tilslut NodeMCU til din computer ved hjælp af et mikro-USB til USB-kabel.

Åbn nu filen PersonalAssistant.ino, som er placeret:

PersonalAssistant/PersonalAssistant.ino

I Arduino IDE skal du vælge NodeMCU 1.0 (ESP-12E-modul) fra Værktøjer> Board og vælge den korrekte port fra Værktøjer> Port. Det repræsenterer din NodeMCU.

Vælg nu Værktøjer> ESP8266 Sketch Data Upload, dette vil uploade indholdet af datamappen til ESP8266. Vent et øjeblik, indtil det er færdigt. Vælg derefter Skitse> Upload eller tryk blot på Ctrl + U -knapperne på dit tastatur for at begynde at uploade programmet. Vent, indtil du ser meddelelsen "upload er udført".

Trin 4: Konfigurer Micro SD -kortet

Vi bruger et micro SD -kort til at gemme MP3 -filstykker. Det er NodeMCU, der beslutter, hvilken fil der skal afspilles på hvilket tidspunkt, og DFPlayer Mini hjælper ham med at lave en meningsfuld sætning ved at afkode MP3 -filerne.

Jeg brugte Amazon Polly til at generere de stemmestykker, jeg havde brug for.

Amazon Polly er en service, der gør tekst til naturtro tale, så du kan oprette applikationer, der taler, og opbygge helt nye kategorier af taleaktiverede produkter.

Glem ikke, vores enhed bruger ikke Amazon Polly API til at tale dynamisk. Vi har nogle statiske offline stemmestykker, og ved at sætte dem sammen laver vi forskellige sætninger.

Jeg brugte dette websted til at generere MP3 -filer. Jeg valgte stemme output var amerikansk engelsk / Salli.

Det eneste du skal gøre er at downloade microSD.zip -fil og derefter pakke den ud på dit micro SD -kort. Den indeholder alle de 78 nødvendige MP3 -filer.

Sandsynligvis medfølger dit Micro SD -kort og adapter. Du kan indsætte dit Micro SD -kort i adapteren og vedhæfte det til din bærbare computer. Hvis din computer ikke understøtter kortlæsning, skal du bruge en ekstern kortlæser.

Trin 5: Design af skemaerne og opsætning af printkortet

Design af skemaerne og opsætning af printkortet
Design af skemaerne og opsætning af printkortet
Design af skemaerne og opsætning af printkortet
Design af skemaerne og opsætning af printkortet
Design af skemaerne og opsætning af printkortet
Design af skemaerne og opsætning af printkortet
Design af skemaerne og opsætning af printkortet
Design af skemaerne og opsætning af printkortet

Jeg har designet skematikken og tavlen ved hjælp af Autodesk EAGLE. Jeg har inkluderet både SCH- og BRD-filer i PersonalAssistant-PCB.zip. Du kan nemt redigere og / eller sende det til en lokal eller online PCB -producent for at bestille og få dit board.

En ting mere at nævne er, at ESP8266 fungerer i 3.3v, mens DFPlayer Mini fungerer i 5v. Da disse to moduler skal tale med hinanden via et serielt interface, kan vi ikke direkte tilslutte en 5v udgang til en 3,3v indgang, da det beskadiger din ESP8266. Så vi skal bruge en niveaukonvertering fra 5v til 3,3v. Vi bruger en signaldiode og en 10K modstand til at få det til at ske.

Trin 6: Lod det op

Lod det op
Lod det op
Lod det op
Lod det op

Montering af tavlen er ret enkel, da du har et par komponenter. Følg skematisk og tavledesign i trin 5 for nemt at sætte hvert element på det korrekte sted.

Jeg startede med at lodde modstandene og dioden, da de er små. Du kan nemt klippe deres unødvendige haler ved hjælp af en trådskærer. Fra top til bund skal du sætte 1K, 10K og 10K modstand.

Du behøver ikke at lodde alle NodeMCU- og DFPlayer Mini -benene på printkortet. Lodning af stifterne med en sti er nok.

Glem ikke, højttalere og dioder har polaritet. Du har en højttaler og en diode i dine komponenter. For dioden er siden med en sort linje dens negative side eller katoden.

Trin 7: Vedlægget

Indhegningen
Indhegningen
Indhegningen
Indhegningen
Indhegningen
Indhegningen

Jeg besluttede at designe et smukt kabinet på en kreativ måde. Jeg var bekymret for dens underlige form under designet, men i sidste ende var det ikke så slemt. Det ligner i hvert fald et flygel og føles godt at holde i hånden!

I stedet for den klassiske hexahedron-kubikform med 6 ansigter designede jeg et flerlags kabinet. Fra bund til top lægger hvert lag sig på sit nederste lag. (Jeg kaldte dem L0 til L6, fra bund til top)

Farver og tykkelse

Du kan bruge to komplementære farver til at skabe den stærkeste kontrast, f.eks.:

  • Rød og grøn
  • Blå og orange
  • Gul og lilla
  • Blå og gul

Jeg brugte klar akryl til det øverste lag, så du kan se inde i enheden.

Tykkelsen af det øverste lag (lag-6) skal være 2 mm. Tykkelsen af de andre lag (lag-0 til lag-5) skal være 4 mm. Hvis du vil bruge et 2,8 mm akrylskærm, som jeg gjorde, er der ikke noget problem. Men du skal skære to serier fra lag-1 og lag-3 til forskydning.

For at samle kabinettet, start fra bundlaget (L0). Sæt brættet på det, brug de kortere bolte, og stram det med møtrikkerne. Du kan nu vedhæfte de fire længere bolte fra bunden af laget-0. Noget som et tårn. Så kan du let fortsætte med at montere andre lag på dem.

Bemærk: Du kan bruge en valgfri skive mellem bundlaget og brættet.

Jeg har også tilføjet infotekster til enhedsporte (strøm og micro SD -kort). Du kan bruge lasergravering på øverste lag.

Jeg har inkluderet både CDR- og DXF -filformater. Du kan downloade dem, redigere dem og bruge dem til laserskæring.

Trin 8: Adgang til webbaseret brugergrænseflade

Adgang til webbaseret brugergrænseflade
Adgang til webbaseret brugergrænseflade

Tænd for enheden

Du kan tænde enheden ved hjælp af en hvilken som helst 5v mikro -USB -oplader. Tilslut mikro -USB til enhedens strømport, det vil sige mikro -USB -indgangen på din NodeMCU.

Få adgang til User Interace

Kan du huske, at vi har uploadet nogle filer til ESP8266 Flash File System? Det er tid til at bruge det. Alt du behøver er den IP -adresse, der er tildelt ESP8266 på netværket. Der er mange forskellige måder at finde IP -adressen på. Jeg vil liste nogle af dem her:

  • På din routers konfigurationsside, et eller andet sted i DHCP Leasingliste, kan du se liste over enheder med deres IP -adresser i dit netværk.
  • I Microsoft Windows og macOS kan du køre kommandoer som arp -a i terminal.
  • I Android og iOS kan du bruge applikationer som Fing. (Android / iOS)
  • I Linux kan du bruge værktøjer som Nmap.

Når du har fundet IP -adresse, skal du åbne den ved hjælp af din webbrowser. Du kan manipulere driftskø ved at aktivere / deaktivere moduler.

Trin 9: Endelige tanker

Dette projekt var meget tidskrævende og energikrævende. Du kan tilføje mange flere muligheder til Personal Assistant. Jeg har ladet nogle dele stå åbne til fremtidig udvikling. Nogle dele som:

  1. Tilføjelse af flere tjenester og modul. For eksempel at tælle tal, kaste en terning eller vende en mønt.
  2. Efter tilslutning til netværk kan enheden tale IP -adressen. Du kan tilføje denne mulighed for at forenkle processen med at finde IP -adresse.
  3. Tilføjelse af muligheden for at ændre WiFi -indstillinger i webbaseret kontrolpanel.
  4. Tilføjelse af muligheden for at ændre serviceindstillinger i webbaseret kontrolpanel. (Deres html -formular er klar. Du skal håndtere anmodninger)
  5. Tilføjelse af flere stemmesvar i forskellige tilstande på enheden.
  6. Tilføjelse af en login -side til webbaseret kontrolpanel. Du kan gøre dette ved at tilføje / sammenligne cookies i HTTP -overskriftslinjer.

Og jeg ville elske at vide dine ideer om dette instruerbare.:)

Anbefalede: