Innehållsförteckning:

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

Video: Personlig assistent: 9 steg (med bilder)

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

I denna instruerbara, ska jag visa dig hur du kan använda kraften i ESP8266, kreativitet i programvarudesign och programmering, för att göra något coolt och lärorikt.

Jag namngav den Personal Assistant, eftersom den är i fickformat, pratar med dig och kan ger dig användbar, och (naturligtvis) några inte användbar (men fortfarande cool) information om väder, tid och datum, gmail -meddelanden, levande födelse och dödstal och så vidare

Jag försökte hålla designen enkel. Enheten har två användargränssnitt. En fysisk tryckknapp och ett webbaserat program som användaren kan komma åt den med en webbläsare och ändra enhetens inställningar och konfiguration.

Huvudkomponenterna i detta projekt är en mikrokontroller och en musikspelarmodul. Vår mikrokontroller (NodeMCU) använder WiFi -teknik för att ansluta till en åtkomstpunkt med internetanslutning; så att den kan få nödvändiga data, bearbeta den och berättar för musikspelaren (DFPlayer Mini) när vilken MP3 -fil som ska spelas upp.

För nu är det allt du behöver veta. Jag kommer att ge dig mer detaljerad information i nästa steg, så oroa dig inte.

Steg 1: Delar som behövs

Delar som behövs
Delar som behövs
  • NodeMCU ESP-12E (CP2102 USB-till-seriellt gränssnitt)
  • DFPlayer Mini
  • SPST tillfällig tryckknapp
  • 8 Ohm 2 Watt högtalare
  • Micro SD -kort (du behöver några kilobyte, så kapaciteten spelar ingen roll)
  • Muttrar och bultar

    • M3 -muttrar (x6)
    • M3 Bultar - 23 mm (x4)
    • M3 Bultar - 15 mm (x2)
  • 1N4148 Signaldiod (x1)
  • Motstånd

    • 1K motstånd (x1)
    • 10K motstånd (x2)

Andra delar:

  • PCB (du kan beställa en prototyp online eller besöka en lokal butik)
  • Laserskuren akrylark

    • 2 mm tjockt klart ark
    • 2,8 mm tjocklek två olika färger ark (orange och grönt, rött och grönt, det är upp till dig och färgerna spelar ingen roll)
  • 5 volt (minst) 1 ampere mikro -USB -laddare (för att starta enheten)

Steg 2: Hur det fungerar

Hur det fungerar
Hur det fungerar
Hur det fungerar
Hur det fungerar

Okej, jag vill ge dig mer detaljerad information om hur programvaran fungerar.

Programvaran består av vissa tjänster. Varje tjänst har sina egna moduler. (Du kan betrakta en tjänst som en klass och dess moduler som dess metoder). Varje modul kan betraktas som ett körbart objekt. Så vår programvara består av några körbara objekt.

Här har vi några tjänster och underservice eller deras moduler:

  • Gmail

    Olästa meddelanden

  • Väder

    • Nuvarande temperatur
    • Dagens skick
    • Idag låg / hög
    • Imorgon skick
    • Imorgon låg / hög
    • Nederbördsprognos
    • Soluppgång solnedgång
  • Tid

    • Aktuell tid
    • Dagens datum
  • Födelse & död

    • Världsfödelse
    • Världsdöd

Det finns en cirkulär kö som innehåller moduler i den. Vi kallar det Operation Queue. Jag sa att varje modul är ett körbart objekt. Så när du trycker på tryckknappen på enheten tittar den in i operationskön och kör nästa modul (eller objekt).

Du kan redigera medlemmarna i operationskön i det webbaserade användargränssnittet som jag kommer att förklara senare. För tillfället ska jag ge dig ett exempel. Tänk på aktuell driftkö som följande:

KÖ (Olästa meddelanden | Nederbördsprognos | Aktuell tid)

Du trycker på tryckknappen, Olästa meddelanden bör köras.

KÖ (Olästa meddelanden | Nederbördsprognos | Aktuell tid)

Så enheten kommer att använda data som den samlat in (här, antalet olästa meddelanden som hämtats från Google Mail API -flöde) för att tala till dig. Men hur? Här kommer NodeMCU att berätta för MP3 -modulen när den ska spela vilken MP3 -bit som ska göra en meningsfull mening. För att uppnå detta har jag utformat olika köer, timers och algoritmer. (Om du är en c ++ -kille och gillar mikrokontroller kan du studera koden själv.)

Så, du kommer att höra, enheten börjar prata: Du har 4 olästa meddelanden i din Gmail -inkorg.

Du trycker på tryckknappen igen, nästa modul är Precipitation Forecast som bör hanteras.

KÖ (Olästa meddelanden | Nederbördsprognos | Aktuell tid)

Så, du kommer att höra, något i stil med: Glöm inte ditt paraply, det regnar i morgon. Och så vidare … En cool sak till: för vissa moduler (som nederbördsprognos) kan du förvänta dig slumpmässiga meningar för samma tillstånd. Till exempel, om det är nederbörd i morgon och det är regn, och inte snö, kan du förvänta dig "det finns möjlighet för regn i morgon", "ta med ditt eget solsken, det är regn imorgon", "tut, tut, ser ut som regn för morgondagen", eller…

Hur får vi olika data för varje tjänst?

  • Gmail

    Olästa meddelanden Google har ett kraftfullt API som du kan komma åt dess olika tjänster inklusive Gmail. Men av säkerhetsskäl behöver du olika autentiserings- och auktoriseringsmetoder som OAuth. ESP8266 är inte så kraftfullt att köra olika komplicerade hash -algoritmer. Så jag använde en äldre och enkel inloggningsteknik för att komma åt gmail-inkorg. Det är Google Atom Feed som också kan användas av RSS -läsare. Vi skickar en HTTP -begäran om åtkomst till gmail -flöde och dess svar är i XML -format. Så vi räknar antalet olästa meddelanden och använder det i vårt program

  • Vi använder Yahoo Weather API för att få olika väderinformation. Nyligen, precis som Google, har Yahoo ändrat sitt Weather API, så du måste använda OAuth -standarder för att komma åt dess data. Tyvärr kan ESP8266 inte hantera dess komplexitet, så vi kommer att använda ett trick för att lösa problemet. Istället för att komma åt Yahoo Weather API direkt skickar vi vår begäran till en anpassad fil på en server. Vår fil hämtar data från Yahoo Weather och skickar den helt enkelt till oss.

    • Tomorrow Condition I morgon skickar meddelandet om morgondagen är varmare eller kallare än idag, eller om det inte kommer att bli någon vettig temperaturförändring. Vi jämför "idag låg / hög" med "i morgon låg / hög" för att uppnå detta. Du kan kontrollera hur jag skrev den här algoritmen och hur den fungerar i programmets biblioteksfil.
    • Om du kontrollerar Yahoo väderdokumentation kan du se tabellen Villkorskoder. Som det står används tillståndskoder i svaret för att beskriva de nuvarande förhållandena. Vi kommer att använda morgondagens tillståndskoder och deras betydelser för att ta reda på om det kommer någon nederbörd och är det regn eller snö.
  • TimeNTP står för Network Time Protocol. Det är ett nätverksprotokoll för klocksynkronisering mellan datorsystem. Eftersom vi har tillgång till Internet kommer vi att använda en NTP -klient för att få tid från en NTP -server och synkronisera den med ESP8266 intern timer (som den du använder den med millis () om du är en Arduino -kille).
  • Födelse och död Vi beräknar antalet födda och dödsfall från början av dagen (Tack vare NTP -klienten är det enkelt att få antal sekunder sedan början av dagen). Jag använde världens födelse- och dödsfrekvenser från ekologi.

Steg 3: Installera programvaran

Installera programvaran
Installera programvaran

Vi kommer att använda Arduino IDE för att ladda upp vårt program till NodeMCU. Du kan ladda ner och installera den senaste Arduino IDE från deras officiella webbplats:

Innan du börjar måste du konfigurera Arduino IDE för Nodemcu. Jag ska inte berätta stegen här, för det kan vara utanför ämnet. Men du kan följa stegen och förklaringarna till denna utmärkta instruerbara.

Vårt program har några bibliotekberoenden. Vad är ett mjukvaruberoende?

Beroende är en bred mjukvaruteknisk term som används för att referera när en programvara förlitar sig på en annan.

Här är en lista över Arduino -bibliotek du måste ha på din dator för att kunna kompilera programmet Personal Assistant:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTPClient

Du kan ladda ner dem en efter en från deras Github -sida och extrahera sedan zip -filerna till Arduino -bibliotekskatalogen. Dess sökväg på ditt system är: C: / Users [ditt användarnamn] Documents / Arduino

Jag skrev ett bibliotek för att hålla koden ren och undvika komplexitet. Ladda ner filen PersonalAssistant-Library.zip och extrahera den till Arduino bibliotekskatalog. Precis som du gjorde för de tre biblioteken tidigare.

YahooWeather.php -fil

Eftersom ESP8266 inte är tillräckligt kraftfull för att utföra hash -algoritmer kan vi inte använda den direkt för att skicka HTTP -förfrågningar till Yahoo Weather API, baserat på OAuth -standarder. Så vi kommer att använda en fil mellan vår enhet och Yahoo Weather API. Du kan ladda ner YahooWeather.zip -fil, extrahera den och lägga YahooWeather.php -filen på en webbserver. Till exempel om din domän är example.com och du lägger filen i api -katalogen blir din api -slutpunkt exempel.com/api/YahooWeather.php Du skickar väderdataförfrågningar till denna slutpunkt.

Programskissen och FFS (Flash File System)

Ditt NodeMCU -kort har ett 4 MB flashfilsystem för lagring av data. Så, när vi har det, varför inte använda det?

Kommer du ihåg när jag sa att vår enhet har två användargränssnitt? Förutom den ensamma tryckknappen är vårt andra användargränssnitt ett enkelt webbaserat program. Med den här applikationen kan du manipulera driftkön genom att aktivera / inaktivera varje modul, ändra serviceinställningar eller enhetskonfiguration, som att ställa in WiFi SSID och lösenord. Vi kommer att lagra alla dessa filer i NodeMCU Flash File System och köra en lätt webbserver för att hantera användarförfrågningar från deras webbläsare.

Redigera konfigurationsfil

Ladda ner filen PersonalAssistant-Sketch.zip och extrahera den någonstans i din dator. Öppna filen config.json som ligger:

PersonalAssistant/data/config.json

Du kan använda valfri text- eller kodredigerare som anteckningsblock, anteckningsblock ++, Atom, etc. Filen är en json -datastruktur, så det är läsbart för mänskligt nyckel / värde och du kan enkelt redigera det. Du kan ändra dessa fält:

  • Gmail

    • användarnamn: ditt Gmail -användarnamn med @gmail.com
    • lösenord: ditt Gmail -lösenord
  • Väder

    • woid: platsen du vill få väderinformation för. WOEID (Where On Earth IDentifier) är en referensidentifierare som används av Yahoo för plats. Du kan utföra en sökning på WOEID -platser i denna länk.
    • api: det är API -slutpunkten. Länken till din yahooweather.php -fil.
    • appId, consumerKey och consumerSecret: för att komma åt Yahoo Weather API måste du skapa ett projekt på Yahoo -utvecklarsidan. Detta ger dig en konsumentnyckel och hemlighet som behövs för att använda API: et. För att komma igång, besök Yahoo Weather Developer -sidan och Skapa en APP.
  • Tidszon

    tidszon: ange tidszon baserat på din plats. Det kan vara ett positivt eller negativt flottörtal och dess enhet är timmar

  • WiFi

    • ssid: SSID för ditt nätverk.
    • lösenord: ditt nätverkslösenord. NodeMCU använder ssid och lösenord för att ansluta till ditt wifi -nätverk.

Ladda upp programskiss och FFS -data

Anslut NodeMCU till din dator med en mikro-USB till USB-kabel.

Öppna nu filen PersonalAssistant.ino som ligger:

PersonalAssistant/PersonalAssistant.ino

I Arduino IDE, från Verktyg> Kort, välj NodeMCU 1.0 (ESP-12E-modul). Från Verktyg> Port väljer du rätt port. Det representerar din NodeMCU.

Välj nu Verktyg> ESP8266 Sketch Data Upload, detta laddar upp innehållet i datamappen till ESP8266. Vänta några minuter tills det är klart. Välj sedan Sketch> Upload eller tryck på Ctrl + U -knapparna på tangentbordet för att börja ladda upp programmet. Vänta tills du ser meddelandet "uppladdningen är klar".

Steg 4: Installera Micro SD -kortet

Vi använder ett micro SD -kort för att lagra MP3 -filbitarna. Det är NodeMCU som bestämmer vilken fil som ska spelas vid vilken tid och DFPlayer Mini hjälper honom att skapa en meningsfull mening genom att avkoda MP3 -filerna.

Jag använde Amazon Polly för att skapa de röststycken jag behövde.

Amazon Polly är en tjänst som förvandlar text till verklighetstrogat tal, så att du kan skapa program som talar och bygga helt nya kategorier av talaktiverade produkter.

Glöm inte att vår enhet inte använder Amazon Polly API för att tala dynamiskt. Vi har några statiska offline röststycken, och genom att sätta ihop dem gör vi olika meningar.

Jag använde denna webbplats för att generera MP3 -filer. Röstutmatningen jag valde var amerikansk engelska / Salli.

Det enda du behöver göra är att ladda ner microSD.zip -filen och sedan extrahera den till ditt micro SD -kort. Den innehåller alla 78 nödvändiga MP3 -filer.

Förmodligen kommer ditt Micro SD -kort med och en adapter. Du kan sätta in ditt Micro SD -kort i adaptern och fästa det på din bärbara dator. Om din dator inte stöder kortläsning bör du använda en extern kortläsare.

Steg 5: Designa schemat och konfigurera kretskortet

Utforma schemat och konfigurera kretskortet
Utforma schemat och konfigurera kretskortet
Utforma schemat och konfigurera kretskortet
Utforma schemat och konfigurera kretskortet
Utforma schemat och konfigurera kretskortet
Utforma schemat och konfigurera kretskortet
Utforma schemat och konfigurera kretskortet
Utforma schemat och konfigurera kretskortet

Jag har designat schemat och styrelsen med hjälp av Autodesk EAGLE. Jag har inkluderat både SCH- och BRD-filer i PersonalAssistant-PCB.zip. Du kan enkelt redigera och / eller skicka den till en lokal eller online PCB -tillverkare för att beställa och hämta ditt bräda.

Ytterligare en sak att nämna är att ESP8266 fungerar i 3.3v medan DFPlayer Mini fungerar i 5v. Eftersom dessa två moduler behöver prata med varandra via ett seriellt gränssnitt kan vi inte direkt ansluta en 5v -utgång till en 3,3v -ingång eftersom det skadar din ESP8266. Så vi kommer att behöva en nivåkonvertering från 5v till 3,3v. Vi använder en signaldiod och ett 10K -motstånd för att få det att hända.

Steg 6: Löd upp det

Löd upp det
Löd upp det
Löd upp det
Löd upp det

Att montera brädet är ganska enkelt eftersom du har några komponenter. Följ schemat och tavlan i steg 5 för att enkelt placera varje objekt på rätt plats.

Jag började med att löda motstånden och dioden, eftersom de är små. Du kan enkelt klippa deras onödiga svansar med en trådskärare. Från topp till botten bör du sätta 1K, 10K och 10K motstånd.

Du behöver inte löda alla NodeMCU- och DFPlayer Mini -stiften på kretskortet. Lödning av stiften med en bana är tillräckligt.

Glöm inte att högtalare och dioder har polaritet. Du har en högtalare och en diod i dina komponenter. För dioden är sidan med en svart linje dess negativa sida eller katoden.

Steg 7: Kapslingen

Kapslingen
Kapslingen
Kapslingen
Kapslingen
Kapslingen
Kapslingen

Jag bestämde mig för att designa ett fint hölje på ett kreativt sätt. Jag var orolig för dess konstiga form under designen, men i slutet var det inte så illa. Det ser åtminstone ut som en flygel och känns bra att hålla i handen!

Istället för den klassiska hexahedron-kubikformen med 6 ansikten, konstruerade jag ett hölje i flera lager. Från botten till toppen ligger varje lager på sitt nedre lager. (Jag namngav dem L0 till L6, från botten till toppen)

Färger och tjocklek

Du kan använda två kompletterande färger för att skapa den starkaste kontrasten, som:

  • Rött och grönt
  • Blå och orange
  • Gul och lila
  • Blå och gul

Jag använde klar akryl för det översta lagret, så att du kan se inuti enheten.

Tjockleken på det översta lagret (lager-6) ska vara 2 mm. Tjockleken på de andra lagren (lager-0 till lager-5) ska vara 4 mm. Om du vill använda en 2,8 mm akrylsköld, som jag gjorde, är det inga problem. Men du måste klippa två serier från lager-1 och lager-3 för förskjutningen.

För att montera höljet, börja från bottenlagret (L0). Sätt på brädet på det, använd de kortare bultarna och dra åt det med muttrarna. Du kan nu fästa de fyra längre bultarna från botten av lagret-0. Något som ett torn. Då kan du enkelt fortsätta att montera andra lager på dem.

Obs: Du kan använda en valfri bricka mellan bottenlagret och brädan.

Jag har också lagt till infotekster för enhetsportar (ström- och mikro -SD -kort). Du kan använda lasergravering på översta lagret.

Jag har inkluderat både CDR- och DXF -filformat. Du kan ladda ner dem, redigera dem och använda dem för laserskärning.

Steg 8: Öppna webbaserat användargränssnitt

Åtkomst till webbaserat användargränssnitt
Åtkomst till webbaserat användargränssnitt

Slå på enheten

Du kan slå på enheten med en 5v mikro -USB -laddare. Anslut mikro -USB till enhetens strömport, det vill säga mikro -USB -ingången på din NodeMCU.

Öppna User Interace

Kommer du ihåg att vi laddade upp några filer till ESP8266 Flash File System? Det är dags att använda den. Allt du behöver är IP -adressen som tilldelats ESP8266 i nätverket. Det finns många olika sätt att hitta IP -adressen. Jag listar några av dem här:

  • På din routers konfigurationssida, någonstans i DHCP -hyreslistan, kan du se en lista över enheter med deras IP -adresser i ditt nätverk.
  • I Microsoft Windows och macOS kan du köra kommandon som arp -a i terminalen.
  • I Android och iOS kan du använda applikationer som Fing. (Android / iOS)
  • I Linux kan du använda verktyg som Nmap.

När du har hittat IP -adress öppnar du den med din webbläsare. Du kan manipulera driftkön genom att aktivera / inaktivera moduler.

Steg 9: Slutliga tankar

Detta projekt var mycket tidskrävande och energikrävande. Du kan lägga till många fler alternativ till Personal Assistant. Jag har lämnat några delar öppna för framtida utveckling. Några delar som:

  1. Lägger till fler tjänster och moduler. Till exempel räkna siffror, kasta en tärning eller vända ett mynt.
  2. Efter anslutning till nätverket kan enheten tala IP -adressen. Du kan lägga till det här alternativet för att förenkla processen att hitta IP -adress.
  3. Lägger till möjligheten att ändra WiFi -inställningar i webbaserad kontrollpanel.
  4. Lägger till möjligheten att ändra serviceinställningar i webbaserad kontrollpanel. (Deras html -formulär är klart. Du måste hantera förfrågningar)
  5. Lägga till fler röstsvar i olika tillstånd på enheten.
  6. Lägga till en inloggningssida för webbaserad kontrollpanel. Du kan göra detta genom att lägga till / jämföra cookies i HTTP -rubrikrader.

Och jag skulle gärna vilja veta dina idéer om detta instruerbara.:)

Rekommenderad: