Tartalomjegyzék:

Személyes asszisztens: 9 lépés (képekkel)
Személyes asszisztens: 9 lépés (képekkel)

Videó: Személyes asszisztens: 9 lépés (képekkel)

Videó: Személyes asszisztens: 9 lépés (képekkel)
Videó: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Július
Anonim
Image
Image
Személyi asszisztens
Személyi asszisztens

Ebben az oktatóanyagban megmutatom, hogyan használhatod fel az ESP8266 erejét, a kreativitást a szoftvertervezésben és a programozásban, hogy valami menő és tanulságos legyen.

Személyes asszisztensnek neveztem el, mivel zsebméretű, beszél veled, és egy hasznos és (persze) néhány hasznos (de még mindig jó) információt nyújt az időjárásról, az időről és a dátumról, a Gmail -üzenetekről, az élőszülésről és halálozási arány stb.

Próbáltam egyszerűbbé tenni a tervezést. A készülék két felhasználói felülettel rendelkezik. Egy fizikai nyomógomb és egy webalapú alkalmazás, amelyet a felhasználó webböngészőn keresztül érhet el, és módosíthatja az eszköz beállításait és konfigurációját.

Ennek a projektnek a fő összetevői a mikrokontroller és a zenelejátszó modul. Mikrovezérlőnk (NodeMCU) WiFi technológiát használ, hogy csatlakozzon egy internetkapcsolattal rendelkező hozzáférési ponthoz; így megkaphatja a szükséges adatokat, feldolgozhatja, és megmondja a zenelejátszónak (DFPlayer Mini), hogy mikor melyik MP3 fájlt kell lejátszani.

Egyelőre ennyit kell tudnia. A következő lépésekben részletesebb információkat adok, ne aggódjon.

1. lépés: Szükséges alkatrészek

Szükséges alkatrészek
Szükséges alkatrészek
  • NodeMCU ESP-12E (CP2102 USB-soros interfész)
  • DFPlayer Mini
  • SPST pillanatnyi nyomógomb
  • 8 ohmos 2 wattos hangszóró
  • Micro SD kártya (néhány kilobájtra lesz szüksége, így a kapacitás nem számít)
  • Csavarok és anyák

    • M3 anyák (x6)
    • M3 csavarok - 23 mm (x4)
    • M3 csavarok - 15 mm (x2)
  • 1N4148 jel dióda (x1)
  • Ellenállások

    • 1K ellenállás (x1)
    • 10K ellenállás (x2)

Más részek:

  • NYÁK (megrendelhet egy prototípust online, vagy felkeresheti a helyi boltot)
  • Lézerrel vágott akril lap

    • 2 mm vastag átlátszó lap
    • 2,8 mm vastagságú két különböző színű lap (narancs és zöld, piros és zöld, ez rajtad múlik, és a színek nem számítanak)
  • Bármilyen 5 voltos (legalább) 1 amper mikro USB töltő (a készülék bekapcsolásához)

2. lépés: Hogyan működik?

Hogyan működik
Hogyan működik
Hogyan működik
Hogyan működik

Rendben, szeretnék részletesebb információt adni a szoftver működéséről.

A szoftver néhány szolgáltatásból áll. Minden szolgáltatásnak saját moduljai vannak. (A szolgáltatást osztálynak, moduljait pedig módszereinek tekintheti). Minden modul végrehajtható objektumnak tekinthető. Tehát a szoftverünk néhány futtatható objektumból áll.

Íme néhány szolgáltatás és alszolgáltatás vagy azok moduljai:

  • Gmail

    Olvasatlan üzenetek

  • Időjárás

    • Aktuális hőmérséklet
    • Mai állapot
    • Ma alacsony / magas
    • Holnapi állapot
    • Holnap Alacsony / Magas
    • Csapadék előrejelzés
    • Napfelkelte naplemente
  • Idő

    • Aktuális idő
    • Mostani dátum
  • Születés és halál

    • Világszületés
    • Világhalál

Van egy kör alakú sor, amely modulokat tartalmaz. Műveleti sornak hívjuk. Mondtam, hogy minden modul végrehajtható objektum. Tehát, amikor megnyomja az eszköz nyomógombját, az a műveletsorba néz, és végrehajtja a következő modult (vagy objektumot).

Szerkesztheti a működési sor tagjait a webes felhasználói felületen, amelyet később elmagyarázok. Egyelőre mondok egy példát. Tekintsük a jelenlegi műveletsort a következőképpen:

QUEUE (olvasatlan üzenetek | Csapadék előrejelzés | Jelenlegi idő)

Ha megnyomja a nyomógombot, az olvasatlan üzeneteket végre kell hajtani.

QUEUE (olvasatlan üzenetek | Csapadék előrejelzés | Jelenlegi idő)

Tehát az eszköz az általa gyűjtött adatokat (itt a Google Mail API feedből leolvasott olvasatlan üzeneteinek számát) fogja használni. De hogyan? Itt a NodeMCU megmondja az MP3 modulnak, hogy mikor kell lejátszania, melyik MP3 darabot, hogy értelmes mondatot alkosson. Ennek elérése érdekében különböző sorokat, időzítőket és algoritmusokat terveztem. (Ha Ön c ++ fickó, és szereti a mikrokontrollereket, tanulmányozhatja magának a kódot.)

Tehát, hallani fogja, a készülék beszélni kezd: 4 olvasatlan üzenet van a gmail postaládájában.

Ha ismét megnyomja a nyomógombot, a következő modul Csapadék -előrejelzés lesz, amelyet kezelni kell.

QUEUE (olvasatlan üzenetek | Csapadék előrejelzés | Jelenlegi idő)

Tehát hallani fog valami ilyesmit: Ne felejtsd el az esernyődet, holnap eső lesz. És így tovább. Például, ha holnap csapadék van, és esik az eső, és nem havazik, akkor számíthat arra, hogy "holnap eső is lehetséges", "hozzon saját napsütést, holnap esős", "tut, tut, holnap esőnek tűnik", vagy…

Hogyan kapunk különböző adatokat az egyes szolgáltatásokról?

  • Gmail

    Olvasatlan üzenetek A Google -nak van egy hatékony API -ja, amellyel elérheti különböző szolgáltatásait, beleértve a Gmailt. Biztonsági okokból azonban különböző hitelesítési és engedélyezési módszerekre van szüksége, mint például az OAuth. Az ESP8266 nem olyan hatékony különböző bonyolult hash algoritmusok futtatásához. Tehát egy régebbi és egyszerű bejelentkezési technológiát használtam a gmail postafiók eléréséhez. Ez a Google Atom Feed, amelyet az RSS -olvasók is használhatnak. HTTP -kérést küldünk a gmail feed elérésére, és a válasz XML formátumú. Tehát megszámoljuk az olvasatlan üzenetek számát, és felhasználjuk programunkban

  • A Yahoo Weather API segítségével különböző időjárási információkat kapunk. A közelmúltban a Google -hoz hasonlóan a Yahoo is megváltoztatta Weather API -ját, ezért az adatok eléréséhez OAuth szabványokat kell használnia. Sajnos az ESP8266 nem tudja kezelni bonyolultságát, ezért trükköt fogunk használni a probléma megoldására. Ahelyett, hogy közvetlenül elérnénk a Yahoo Weather API -t, kérésünket egy szerver egyéni fájljába küldjük. Fájlunk adatokat kap a Yahoo Weather -től, és egyszerűen elküldi nekünk.

    • A holnapi állapot megmondja, hogy holnap melegebb vagy hidegebb van -e, mint ma, vagy ha nincs észszerű hőmérsékletváltozás. Ennek elérése érdekében összehasonlítjuk a "ma alacsony / magas" értéket a "holnap alacsony / magas" értékkel. A programkönyvtár fájljában ellenőrizheti, hogyan írtam ezt az algoritmust, és hogyan működik.
    • Csapadék -előrejelzés Ha megnézi a Yahoo Weather dokumentációját, láthatja az Állapotkódok táblázatot. Mint mondja, az állapotkódokat használják a válaszban az aktuális feltételek leírására. A holnapi állapotkódokat és azok jelentését felhasználva megtudjuk, lesz -e csapadék, eső vagy hó.
  • A TimeNTP jelentése: Network Time Protocol. Ez egy hálózati protokoll a számítógépes rendszerek közötti óraszinkronizáláshoz. Mivel rendelkezünk internet -hozzáféréssel, egy NTP -ügyfelet használunk, hogy időt nyerjünk az NTP -kiszolgálóról, és szinkronizáljuk azt az ESP8266 belső időzítővel (például azzal, amelyet millis () -al használ, ha Arduino -s fickó vagy).
  • Születés és halál A nap elejétől kiszámítjuk a születések és halálozások számát (az NTP kliensnek köszönhetően egyszerű a nap eleje óta eltelt másodpercek száma). A világ születési és halálozási arányait használtam az ökológiából.

3. lépés: A szoftver beállítása

Állítsa be a szoftvert
Állítsa be a szoftvert

Az Arduino IDE segítségével töltjük fel programunkat a NodeMCU -ba. A legújabb Arduino IDE -t letöltheti és telepítheti hivatalos webhelyéről:

Mielőtt elkezdené, be kell állítania az Arduino IDE -t a Nodemcu számára. Itt nem mondom el a lépéseket, mert lehet, hogy nem a témáról szól. De követheti ennek a kiváló oktatási utasításnak a lépéseit és magyarázatát.

Programunknak van néhány könyvtári függősége. Mi az a szoftverfüggőség?

A függőség egy széles szoftverfejlesztési kifejezés, amelyet akkor használnak, amikor egy szoftver egy másikra támaszkodik.

Itt található az Arduino könyvtárak listája, amelyekre szüksége van a számítógépen a Personal Assistant program összeállításához:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • NTPClient

Egyenként letöltheti őket a Github oldaláról, majd kibonthatja a zip fájlokat az Arduino könyvtár könyvtárába. Az útvonala a rendszeren a következő: C: / Users [felhasználónév] Documents / Arduino

Írtam egy könyvtárat, hogy tisztán tartsam a kódot és elkerüljem a bonyolultságot. Töltse le a PersonalAssistant-Library.zip fájlt, és bontsa ki az Arduino könyvtár könyvtárába. Akárcsak az előző három könyvtár esetében.

YahooWeather.php fájl

Mivel az ESP8266 nem elég erős a hash -algoritmusok végrehajtásához, nem használhatjuk közvetlenül HTTP -kérések küldésére a Yahoo Weather API -ra, az OAuth szabványok alapján. Tehát egy fájlt fogunk használni az eszközünk és a Yahoo Weather API között. Letöltheti a YahooWeather.zip fájlt, kicsomagolhatja, és a YahooWeather.php fájlt egy webszerverre helyezheti. Például, ha domainje az example.com, és a fájlt az api könyvtárba helyezi, akkor az api végpontja example.com/api/YahooWeather.php lesz. Időjárási adatkéréseket küld erre a végpontra.

A programvázlat és az FFS (Flash fájlrendszer)

A NodeMCU kártya 4 MB flash fájlrendszerrel rendelkezik az adatok tárolására. Tehát, ha megvan, miért ne használhatnánk?

Emlékszel, amikor azt mondtam, hogy eszközünk két felhasználói felülettel rendelkezik? A magányos nyomógomb mellett a második felhasználói felületünk egy egyszerű webes alkalmazás. Ezzel az alkalmazással módosíthatja a műveletsort az egyes modulok engedélyezésével / letiltásával, a szolgáltatási beállítások vagy az eszközkonfiguráció megváltoztatásával, például a WiFi SSID és jelszó beállításával. Mindezeket a fájlokat a NodeMCU Flash fájlrendszerben tároljuk, és egy könnyű webszervert futtatunk a böngészőjük felhasználói kéréseinek kezelésére.

A konfigurációs fájl szerkesztése

Töltse le a PersonalAssistant-Sketch.zip fájlt, és bontsa ki valahol a számítógépén. Nyissa meg a config.json fájlt, amely a következő helyen található:

PersonalAssistant/data/config.json

Bármilyen szöveg- vagy kódszerkesztőt használhat, például Jegyzettömb, Jegyzettömb ++, Atom stb. Ezeket a mezőket módosíthatja:

  • Gmail

    • felhasználónév: a Gmail -felhasználóneve a @gmail.com címmel
    • jelszó: a Gmail jelszava
  • Időjárás

    • woeid: az a hely, amelyről időjárási információkat szeretne kapni. a WOEID (Where On Earth IDentifier) egy hivatkozási azonosító, amelyet a Yahoo használ a helymeghatározáshoz. Ezen a linken keresést végezhet a WOEID helyeken.
    • api: ez az API végpontja. A link a yahooweather.php fájlhoz.
    • appId, fogyasztóKulcs és fogyasztói titok: A Yahoo Weather API eléréséhez létre kell hoznia egy projektet a Yahoo fejlesztői oldalán. Ez megadja az API használatához szükséges fogyasztói kulcsot és titkot. A kezdéshez keresse fel a Yahoo Weather Developer oldalt, és hozzon létre egy APP -t.
  • Időzóna

    időzóna: adja meg az időzónát a tartózkodási helye alapján. Ez lehet pozitív vagy negatív lebegő szám, mértékegysége pedig óra

  • WiFi

    • ssid: a hálózat SSID -je.
    • jelszó: a hálózati jelszó. A NodeMCU az ssid és a jelszó használatával csatlakozik a wifi hálózathoz.

A programvázlat és az FFS adatok feltöltése

Csatlakoztassa a NodeMCU-t a számítógéphez mikro-USB-USB kábel segítségével.

Most nyissa meg a PersonalAssistant.ino fájlt, amely a következő helyen található:

PersonalAssistant/PersonalAssistant.ino

Az Arduino IDE-ben az Eszközök> Fórum menüben válassza a NodeMCU 1.0 (ESP-12E modul) lehetőséget. Az Eszközök> Port menüben válassza ki a megfelelő portot. Ez a NodeMCU -t jelenti.

Most válassza az Eszközök> ESP8266 Sketch Data Upload lehetőséget, ezzel az adatmappa tartalma feltöltődik az ESP8266 -ba. Várjon néhány pillanatot, amíg befejeződik. Ezután válassza a Vázlat> Feltöltés lehetőséget, vagy egyszerűen nyomja meg a billentyűzet Ctrl + U gombjait a program feltöltésének megkezdéséhez. Várjon, amíg megjelenik a "feltöltés kész" üzenet.

4. lépés: A Micro SD kártya beállítása

Az MP3 fájlok tárolásához micro SD kártyát használunk. A NodeMCU dönti el, hogy melyik fájlt mikor kell lejátszani, és a DFPlayer Mini segít neki értelmes mondat létrehozásában az MP3 fájlok dekódolásával.

Az Amazon Polly segítségével generáltam a szükséges hangdarabokat.

Az Amazon Polly olyan szolgáltatás, amely a szöveget élethű beszédsé alakítja, lehetővé téve olyan alkalmazások létrehozását, amelyek beszélnek, és teljesen új kategóriákat építenek fel a beszédet támogató termékek számára.

Ne feledje, eszközünk nem használja az Amazon Polly API -t a dinamikus beszédhez. Van néhány statikus offline hangrészletünk, és ezeket összerakva különböző mondatokat készítünk.

Ezt az oldalt MP3 fájlok létrehozására használtam. A kiválasztott hangkimenet amerikai angol / salli volt.

Csak annyit kell tennie, hogy letölti a microSD.zip fájlt, majd kicsomagolja azt a micro SD kártyára. A 78 szükséges MP3 fájlt tartalmazza.

Valószínűleg a Micro SD kártya és adapter is jár hozzá. Helyezze be a Micro SD kártyát az adapterébe, és csatlakoztassa a laptopjához. Ha számítógépe nem támogatja a kártyaolvasást, akkor használjon külső kártyaolvasót.

5. lépés: A vázlatok tervezése és a NYÁK beállítása

A rajzok tervezése és a NYÁK beállítása
A rajzok tervezése és a NYÁK beállítása
A rajzok tervezése és a NYÁK beállítása
A rajzok tervezése és a NYÁK beállítása
A rajzok tervezése és a NYÁK beállítása
A rajzok tervezése és a NYÁK beállítása
A rajzok tervezése és a NYÁK beállítása
A rajzok tervezése és a NYÁK beállítása

A sémát és a táblát az Autodesk EAGLE segítségével terveztem. SCH és BRD fájlokat is felvettem a PersonalAssistant-PCB.zip fájlba. Könnyedén szerkesztheti és / vagy elküldheti egy helyi vagy online NYÁK -gyártónak, hogy megrendelje és beszerezze a táblát.

Még egy dolog, amit meg kell említeni, az ESP8266 3.3V, míg a DFPlayer Mini 5V -ban működik. Mivel ennek a két modulnak soros interfészen keresztül kell beszélnie egymással, nem tudjuk közvetlenül csatlakoztatni az 5 voltos kimenetet egy 3,3 voltos bemenethez, mivel ez károsítja az ESP8266 készüléket. Szükségünk lesz tehát szintváltásra 5v -ról 3.3v -ra. Ennek megvalósításához jelződiódát és 10K ellenállást használunk.

6. lépés: Forrasztás

Forrasztani
Forrasztani
Forrasztani
Forrasztani

A tábla összeszerelése meglehetősen egyszerű, mivel van néhány összetevője. Kövesse az 5. lépés sematikus és táblázatos kialakítását, hogy minden elem könnyen a megfelelő helyre kerüljön.

Az ellenállások és a dióda forrasztásával kezdtem, mivel kicsik. Könnyedén levághatja a szükségtelen farkukat drótvágóval. Fentről lefelé 1K, 10K és 10K ellenállást kell elhelyezni.

Nem kell forrasztania az összes NodeMCU és DFPlayer Mini tűt a NYÁK -on. Elég a csapok forrasztása egy útvonallal.

Ne feledje, a hangszórók és a diódák polaritással rendelkeznek. Egy hangszóró és egy dióda van a komponensekben. A dióda esetében a fekete vonallal rendelkező oldal a negatív oldala vagy a katód.

7. lépés: A ház

A Melléklet
A Melléklet
A Melléklet
A Melléklet
A Melléklet
A Melléklet

Úgy döntöttem, hogy kreatív módon tervezek egy díszes házat. A tervezés során aggódtam a furcsa alakja miatt, de végül nem volt olyan rossz. Legalább úgy néz ki, mint egy zongora, és remek érzés a kezedben tartani!

A 6 arcú klasszikus hatszögletű köb alak helyett többrétegű burkolatot terveztem. Alulról felfelé minden réteg lefekszik az alsó rétegre. (L0 -tól L6 -ig neveztem el őket, alulról felfelé)

Színek és vastagság

A legerősebb kontraszt létrehozásához két kiegészítő színt használhat, például:

  • Piros és zöld
  • Kék és narancssárga
  • Sárga és lila
  • Kék és sárga

A felső réteghez átlátszó akrilt használtam, így láthatja a készülék belsejét.

A felső réteg (6. réteg) vastagságának 2 mm-nek kell lennie. A többi réteg vastagságának (0–5. Réteg) 4 mm-nek kell lennie. Ha 2,8 mm -es akrilpajzsot szeretne használni, mint én, akkor nincs probléma. De az eltoláshoz két sorozatot kell kivágni az 1. és a 3. rétegből.

A szekrény összeszereléséhez kezdje az alsó rétegből (L0). Tegye rá a táblát, használja a rövidebb csavarokat, és húzza meg az anyákkal. Most rögzítheti a négy hosszabb csavart a 0 réteg aljáról. Valami toronyhoz hasonló. Ezután könnyedén folytathatja más rétegek felszerelését rájuk.

Megjegyzés: Használhat opcionális alátétet az alsó réteg és a lap között.

Információs szövegeket is hozzáadtam az eszközportokhoz (tápellátás és micro SD kártya). A felső rétegre lézergravírozást használhat.

CDR és DXF fájlformátumokat is szerepeltettem. Letöltheti, szerkesztheti és lézervágáshoz használhatja.

8. lépés: Hozzáférés a webalapú felhasználói felülethez

Web alapú felhasználói felület elérése
Web alapú felhasználói felület elérése

Kapcsolja be a készüléket

Az eszközt bármilyen 5 V -os micro USB töltővel töltheti fel. Csatlakoztassa a mikro USB -t az eszköz tápportjához, azaz a NodeMCU mikro USB bemenetéhez.

Hozzáférés a felhasználói interakcióhoz

Emlékszel, hogy néhány fájlt feltöltöttünk az ESP8266 Flash fájlrendszerbe? Ideje használni. Csak az ESP8266 -hoz rendelt IP -címre van szüksége a hálózaton. Az IP -cím megtalálásának számos módja van. Néhányat felsorolok itt:

  • Az útválasztó konfigurációs oldalán, valahol a DHCP -bérleti listában láthatja a hálózaton lévő IP -címekkel rendelkező eszközök listáját.
  • A Microsoft Windows és a macOS rendszerben olyan parancsokat futtathat, mint az arp -a a terminálon.
  • Androidon és iOS -on használhat olyan alkalmazásokat, mint a Fing. (Android / iOS)
  • Linux alatt olyan eszközöket használhat, mint az Nmap.

Miután megtalálta az IP -címet, nyissa meg a webböngésző segítségével. A modulok engedélyezésével / letiltásával módosíthatja a működési sort.

9. lépés: Utolsó gondolatok

Ez a projekt nagyon idő- és energiaigényes volt. Sok további opciót adhat hozzá a Személyes asszisztenshez. Néhány részt nyitva hagytam a jövőbeli fejlesztések számára. Néhány rész, például:

  1. További szolgáltatások és modulok hozzáadása. Például számolás, kockadobás vagy érme feldobása.
  2. A hálózathoz való csatlakozás után az eszköz meg tudja mondani az IP -címet. Ezt az opciót hozzáadva egyszerűsítheti az IP -cím keresési folyamatát.
  3. A WiFi beállítások megváltoztatásának lehetőségének hozzáadása a webalapú vezérlőpulton.
  4. A szolgáltatásbeállítások megváltoztatásának lehetőségének hozzáadása a webalapú vezérlőpulton. (A HTML -űrlapjuk készen áll. A kéréseket kezelni kell)
  5. További hangválaszok hozzáadása az eszköz különböző állapotaiban.
  6. Bejelentkezési oldal hozzáadása a webalapú vezérlőpulthoz. Ezt úgy teheti meg, hogy cookie -kat ad hozzá / hasonlít össze a HTTP fejlécekben.

És szeretném tudni az Ön elképzeléseit erről a tanulságosról.:)

Ajánlott: