Tartalomjegyzék:

A Raspberry Pi-Arduino-SignalR otthoni automatizálási központ: 11 lépés (képekkel)
A Raspberry Pi-Arduino-SignalR otthoni automatizálási központ: 11 lépés (képekkel)

Videó: A Raspberry Pi-Arduino-SignalR otthoni automatizálási központ: 11 lépés (képekkel)

Videó: A Raspberry Pi-Arduino-SignalR otthoni automatizálási központ: 11 lépés (képekkel)
Videó: How to build a robot arm with .NET 7, Raspberry Pi, Blazor, and SignalR 2024, Július
Anonim
A Raspberry Pi-Arduino-SignalR otthoni automatizálási központ
A Raspberry Pi-Arduino-SignalR otthoni automatizálási központ

Néhány itt és itt közzétett előzetes IBLE -m nyomán ez a projekt megteszi az első lépést a funkcionális otthoni automatizálási központ alapverziójának felépítése felé.

Több különböző technológiát használtam annak érdekében, hogy megértsem, hogyan használhatom fel mindazt, amit a múltban tanultam, és azokat az új dolgokat, amelyeket a napok folyamán tovább tanulok.

Ezért ez az Automation Hub a következő összetevőkből áll:

Egy SQL Server 2012 adatbázis, amely:

  • az előre meghatározott infravörös (IR) kódok listáját tárolja egy táblázatban egy egyedi "kódkulccsal" együtt
  • a kódkulcsokat intuitív módon (a felhasználó) nevezi el, hogy azonosítsa a hozzájuk tartozó IR -kódok célját

Valós idejű ASP. NET SignalR Hub webalkalmazás, amely:

  • várja és fogadja a "kódkulcsokat" parancsként a HTML -ügyféllel szemben álló felhasználótól
  • amikor megkapja, csatlakozik az SQL adatbázishoz, és lekér egy IR kódot a mellékelt kódkulccsal
  • továbbítja a lekért IR kódot egy Python SignalR kliensnek

A felhasználó a HTML SignalR Dashboard ügyféllel néz szembe, amely:

  • a jQuery SignalR Client API -n keresztül egyedi kódkulcsot közöl a Hubgal
  • az irányítópult minden gombja egy egyedi kódkulcsot jelent az SQL adatbázis táblájában

A Raspberry Pi 2.0 -n futó Python SignalR háttérszolgáltatás, amely:

  • IR -kódokat kap parancsként a Hub -tól
  • megkeresi a határolókat az IR -kódban, és a nagyon hosszú kódot szegmensekre bontja
  • soros porton keresztül kommunikál az Arduino -val, és egymás után írja ki az egyes szegmenseket

Egy Arduino infravörös vázlat, amely:

  • várja és fogadja az egyes IR kód szegmenseket a soros porton keresztül
  • összeállítja a kódszegmenseket egy IR kód puffertömbbe
  • csomagolja a puffert egy IR Transmit parancsba az IRLib Arduino könyvtár használatával

Ha a célkészülék az infravörös adó közelében van, akkor a készülék (reagálhat) az Arduino által továbbított IR jelre

JEGYZET

Bár a jelen demonstrációban használt célkészülék reagál az infravörös jelekre, érdemes elolvasni a másik IBLE -m ezt a részét azokból az okokból, amelyek miatt azt állítom, hogy a készülék reagálhat az infravörös jelre.

Ideje tekerni.

1. lépés: Amire szüksége van, mielőtt szüksége van rá

Amire szüksége van, mielőtt amire szüksége van
Amire szüksége van, mielőtt amire szüksége van
Amire szüksége van, mielőtt azt, amire szüksége van
Amire szüksége van, mielőtt azt, amire szüksége van
Amire szüksége van, mielőtt azt, amire szüksége van
Amire szüksége van, mielőtt azt, amire szüksége van

Ez az oktatható utasítás a korábban elvégzett munkák egy részével elindul, ami az utolsó IBLE -t is eredményezte.

Mielőtt tehát belevágnánk abba, hogy mire van szükségünk ehhez az IBLE -hez, javasoljuk, hogy olvassa el ezt az oktatóanyagot, amelyből megtudhatja, hogyan:

  1. Felállították az Arduino IRLib infravörös könyvtárat
  2. Az IBLE -ben használt IR -kódok rögzítése IR -vevő használatával
  3. Hogyan használták a rögzített IR -kódokat a célberendezés IR -adó segítségével történő vezérléséhez

Az IBLE befejezése után telepítettem egy ASP. NET IR Code Recorder webes alkalmazást, amely:

  • Fogadja el a rögzített IR -kódot és az intuitíven megnevezett kódkulcsot egy webes űrlapon keresztül
  • Bontsa a nagyon hosszú IR -kódot 64 karakternél rövidebb szegmensekre, hogy az Arduino Uno soros pufferhatára alatt maradjon
  • A kódok utolsó szegmensét előre "E" -vel kell rögzíteni, amely jelzi az Arduino számára, hogy megkapta a kód utolsó szegmensét
  • Mindegyik szegmenst egy csőhatároló választja el egymástól, mielőtt újra összeszerelné egy hosszú zsinórra
  • Végül a szegmentált IR -kódot és annak kódkulcsát egy SQL Server 2012 adatbázisban tárolták

Ez az SQL adatbázis képezi az IBLE -ben kidolgozott Home Automation Hub egyik összetevőjét.

JEGYZET

Az IR Code Recorder webes alkalmazás nem képezi a vitát az alábbi okok miatt:

  • Manuálisan rögzítheti a kódokat az Arduino Sketch használatával, feloszthatja őket csövekkel határolt szakaszokra, és tárolhatja őket az adatbázisban anélkül, hogy bonyolult webalkalmazást kellene létrehoznia.
  • Ettől az IBLE -től eltérően az IR felvevő az Arduino és a Raspberry Pi közötti kommunikációra összpontosít

Ezért a projekt részletei egy másik IBLE témája lennének

2. lépés: Amire szüksége van - a hardver

Amire szüksége van - a hardver
Amire szüksége van - a hardver
Amire szüksége van - a hardver
Amire szüksége van - a hardver

Működő Raspberry Pi 2.0 - Javaslom az Ubuntu Mate telepítését, mivel gazdagabb funkciókkal rendelkezik, beleértve az OpenLibre Office -t, amely egyébként nélkülözhetetlen volt ennek az oktathatónak a dokumentálásához, ott a Raspberry Pi -n.

Ezenkívül a Pi -nek szüksége lesz a következő külső elemekre:

  • Az Arduino Uno prototípus -platform vagy egy klón
  • Infravörös LED -ek - Három lábú márkát használtam az Amazon.com webhelyről
  • 330 vagy 220 ohmos ellenállások-a 220-at (piros-piros-barna színkód) használtam, mert több kéznél volt
  • A szokásos kenyértábla, csatlakozók és egy számítógép, amelyen az Arduino Environment telepítve van
  • Tesztjelölt - például a mindenütt jelenlévő Samsung LED -monitor távirányítóval

3. lépés: Amire szüksége van - a szoftver

Az összes alkatrész összeállításához a következő szoftver telepítést kell telepíteni és futtatni:

A Raspberry Pi -n a következőket kell telepítenie:

  • Az Arduino IDE - a vázlat elkészítéséhez és az UNO -hoz való villogásához
  • A Python modul Arduino számára - az UNO és a Pi közötti soros kommunikációhoz
  • A Python SignalR klienskönyvtár - Az itt található utasításokra hivatkozhat

Windows gép a következő fejlesztői környezettel telepítve:

  • A Microsoft Visual Studio Express 2013 ingyenes kiadása a SignalR Hub és a Web kliens alkalmazás létrehozásához
  • Az SQL Server 2012 Express ingyenes kiadása a háttér-adatbázis tervezéséhez és felépítéséhez

A Windows Internet Information Server (IIS) tárhelye:

  • Miután a SignalR Hub és a webes ügyfél felépítésre és tesztelésre került, telepíteni kell őket egy helyi IIS kiszolgálóra
  • Esetemben egy régi, Windows 7 rendszert futtató laptopot tervezek használni az otthoni hálózatomon

JEGYZET

Minden utasítás vonatkozik a Python 2.7.x verzióra. A 3.0 -s verzió újraírást igényelhet

4. lépés: Az SQL Server adatbázis

Az SQL Server adatbázis
Az SQL Server adatbázis

A mellékelt vázlat az alkalmazásban használt alapvető SQL Server adatbázis szerkezetét mutatja, és csak két táblázatot tartalmaz.

Táblázat AutoHubCode

A táblázat két fontos oszlopa a következő:

AutoCodeKey - tárolja a kódkulcs felhasználóbarát nevét

Mindegyik kódkulcsot egy automatizálási ügyfél továbbítja - esetünkben egy HTML gomb egy weboldalról

AutoCodeVal - tárolja a nyers IR kódsorozatot

Ez a tényleges IR -kód, amelyet a SignalR Hub válaszul küld vissza az ügyfélnek

Ebben az esetben a Hubhoz folyamatosan kommunikáló Python -ügyfél megkapja az IR -kódsorozatot, és a soros porton keresztül továbbítja az Arduino UNO -nak

Táblázat AutoHubLog

  • Naplózza az automatizálási ügyfél által kért kódot.
  • Ez egy intézkedés annak nyomon követésére, hogy ki és mikor használta a rendszert, és milyen kódot kért

Mint már említettük, az SQL Server 2012 -t használtam választott adatbázis -platformként. Ezt az egyszerű dizájnt újra létrehozhatja egy másik adatbázis -platformon, például MySQL, Oracle stb.

Ennek ellenére az adatbázis létrehozásához szükséges SQL -parancsfájlt csatoltuk ide

JEGYZET

  1. A SignalR Hub kódját úgy tervezték, hogy csatlakozzon egy SQL Server 2012 adatbázishoz
  2. Egy másik adatbázissal való együttműködés azt jelentené, hogy a Hubot más adatbázis -illesztőprogram használatára kell módosítani

5. lépés: Az ASP. NET SignalR Hub webes alkalmazás

Az ASP. NET SignalR Hub webes alkalmazás
Az ASP. NET SignalR Hub webes alkalmazás
Az ASP. NET SignalR Hub webes alkalmazás
Az ASP. NET SignalR Hub webes alkalmazás

Az ASP. NET SignalR Hub webes alkalmazás együttesen a következő komponensekből áll, a mellékelt vázlat szerint:

1. szakasz - A SignalR Hub, amely fogadja az ügyféltől érkező kéréseket és válaszol rájuk

2., 4. szakasz - A HTML -ügyfél weboldala és stíluslapja, amelyek együttesen alkotják az automatizálási rendszer elejét, és parancsokat adnak ki az Automation Hub számára

3. szakasz - A jQuery SignalR API -k, amelyeket a HTML -ügyfél használ az Automation Hubhoz való kommunikációhoz

5. szakasz - A SignalR Hub nem kommunikál közvetlenül az adatbázissal. Ezt az Entity Framework segítségével generált köztes osztályokon keresztül teszi

Ezek az osztályok kivonják az adatbázis részleteit a kezelőfelületből

6. szakasz - Az adatbázis szolgáltatásosztály, amely az Entity Framework osztályok használatával segíti az olvasási -írási műveletek végrehajtását az SQL adatbázisban (korábban leírtak)

Az ASP. NET és a SignalR a Microsoft technológiái, és ez az oktatóanyag végigvezeti Önt egy egyszerű SignalR alkalmazás felépítésén és telepítésén.

Amit itt építettem, az ebből az oktatóanyagból megszerzett alapokra épül. Telepítéskor az alkalmazásnak hasonlónak kell lennie a második képen látható weboldalhoz

MEGJEGYZÉS A KÓDON

Csatoltunk egy ZIP -fájlt, amely tartalmazza a kód lecsupaszított verzióját

A mappaszerkezet a vizuális ábrán látható módon van - azonban az összes keretosztály és jQuery -parancsfájl eltávolításra került a melléklet méretének csökkentése érdekében

A javaslat szerint ezt a kódot útmutatóként kell használni, mert amikor új SignalR webes alkalmazást hoz létre a fenti oktatóanyag linkre kattintva, a rendszer automatikusan hozzáadja a legújabb jQuery könyvtárakat és ASP. NET keretosztályokat.

Ezenkívül módosítani kell az index.html oldalon található jQuery -szkriptekre való hivatkozásokat, hogy azok tükrözzék a jQuery SignalR ügyfélkönyvtárak legújabb verzióját, amely automatikusan hozzáadásra kerül a webes alkalmazás létrehozásakor.

Végül a kapcsolati karakterláncot meg kell változtatni, hogy illeszkedjen az adatbázisához a Web.config* nevű fájlokban

6. lépés: A Python SignalR szolgáltatás ügyfél

A Python SignalR szolgáltatás ügyfél
A Python SignalR szolgáltatás ügyfél

Míg a HTML SignalR Client elülső felhasználói felület, a Python Client egy hátsó szolgáltatást nyújtó alkalmazás, amelynek fő feladata, hogy megkapja a Hub által továbbított IR -kódot, és soros kommunikáción keresztül eljuttassa az Arduino UNO -hoz.

A mellékelt kód magától értetődő, és kellően dokumentálva van annak működésének leírásához

Amint az az összetett képernyőképen látható, a HTML -ügyfél és a Python Service -ügyfél a következőképpen kommunikál a SignalR Hubon keresztül:

  1. Az automatizálási rendszer felhasználója parancsot ad a Hubnak egy gombnyomással
  2. Minden gombhoz hozzá van rendelve az infravörös kulcs kódja, és amikor rákattint, ez a kód továbbításra kerül a hubhoz
  3. A Hub megkapja ezt a kódot, csatlakozik az adatbázishoz, lekéri a nyers IR jelkódot, és visszaküldi azt az összes csatlakoztatott ügyfélnek

    Ezzel egyidejűleg a Hub bejegyzést rögzít az AutoHubLog adatbázis táblájában, amely rögzíti a kódot és a távoli ügyfelek által kért dátumot és időt

  4. A Python szolgáltatási ügyfél megkapja az IR kódot, és továbbítja az Arduino UNO -nak további feldolgozás céljából

7. lépés: Az Arduino UNO IR átviteli vázlata és kódja

Az Arduino UNO IR átviteli vázlata és kódja
Az Arduino UNO IR átviteli vázlata és kódja
Az Arduino UNO IR átviteli vázlata és kódja
Az Arduino UNO IR átviteli vázlata és kódja
Az Arduino UNO IR átviteli vázlata és kódja
Az Arduino UNO IR átviteli vázlata és kódja

Az ábrán látható Arduino áramkör nagyon egyszerű ehhez a rendszerhez, ezért röviden leírjuk:

  • A színtelen IR LED -et be kell kötni az UNO digitális PIN 3 kódjához - ez az IRLib Arduino könyvtár követelménye
  • Az okokat a távirányító klónozásáról szóló korábbi IBLE -m ismerteti az IRLib könyvtárhoz kapcsolódó részben
  • A Digital PIN 4 -hez csatlakoztatott zöld LED vizuális jelzőfény, amely akkor világít, ha az UNO megkapta az IR -kód minden szakaszát a Raspberry Pi -n futó Python -klienstől.
  • A LED világítása megerősíti, hogy a Soros kommunikáció a Raspberry Pi és az UNO között működik
  • A soros kommunikáció engedélyezéséhez az UNO csatlakozik a Raspberry Pi -hez az USB porton keresztül
  • A mellékelt Arduino vázlatot kellően megjegyzik annak funkciójának leírásához
  • A kód tetején található megjegyzések azt is leírják, hogyan kell bekötni az áramkört

JEGYZET

A gyakorlatban az Arduino és a Pi közösen csatlakoztatható egy olyan erős USB -hubhoz, amely elég erős ahhoz, hogy a Pi -t, az Arduino -t vezesse, és erős jelet is továbbítson az IR LED -en keresztül

8. lépés: A rendszer csatlakoztatása és tesztelése

A rendszer csatlakoztatása és tesztelése
A rendszer csatlakoztatása és tesztelése
A rendszer csatlakoztatása és tesztelése
A rendszer csatlakoztatása és tesztelése
A rendszer csatlakoztatása és tesztelése
A rendszer csatlakoztatása és tesztelése
  1. Az ASP. NET SignalR Hub, a HTML -ügyfél és az SQL Server 2012 adatbázis együttes létrehozása és telepítése a helyi otthoni hálózaton található Internet Information Server (IIS) rendszerbe
  2. A webes alkalmazás eléréséhez nyissa meg a HTML SignalR klienst HTTP -n keresztül

    ennek az oldalnak az URL -je általában a https:// az Ön számítógépe: port_száma/

  3. Kattintson a vezérlőpult egyik gombjára, és ha az alkalmazás helyesen lett telepítve, a Hub válaszul visszaadja az IR -kódot, és megjeleníti azt a kezelőpanel melletti szürke panelen

    Emlékezik! A kódokat be kell töltenie az adatbázisába az infravörös vevőkönyvtár beállításával és a kódok rögzítésével az előző IBLE -ben leírtak szerint

  4. Csatlakoztassa az Arduino -t a Raspberry Pi -hez USB -n keresztül - nyissa meg az Arduino IDE -t a Pi -n, és győződjön meg arról, hogy az UNO képes kapcsolatot létesíteni a Pi -vel

    ezek az Arduino bemutató cikkek segítenek abban, hogy ezt elég gyorsan elérje

  5. Nyissa meg a Python -kódot, és hajtsa végre a következő módosításokat a környezetének megfelelően

    • az UNO soros portjának címe, amelyet a 4. lépésből nyert
    • a SignalR hub URL -je, hogy megfeleljen a 2. lépésben megadott helyi URL -nek - ebben a példában ez a https:// yourComputer: port_number/signalr
  6. Végül nyissa meg az Arduino vázlatot az Arduino IDE -ben a Raspberry Pi -n, és villanja fel az UNO -nak
  7. Helyezze az áramkört tartó kenyértáblát a vezérelni kívánt készülék közelébe - az infravörös LED -nek világos látómezővel kell rendelkeznie a készülék infravörös portjával.
  8. Indítsa el a Python programot a Raspberry Pi -n a Python IDLE eszköztár F5 gombjának megnyomásával
  9. Térjen vissza a HTML ügyfélprogram Vezérlőpultjához (2. lépés), és kattintson egy gombra (például Bekapcsolás vagy Hangerő növelése)

Ha a rendszert helyesen állította be, akkor képesnek kell lennie arra, hogy előhozza a telefonon vagy táblagépen található HTML -ügyféloldalt, és a HTML -ügyféloldal gombjaival vezérelhesse készülékét.

9. lépés: A rendszer működésben

A rendszer működésben
A rendszer működésben
A rendszer működésben
A rendszer működésben
A rendszer működésben
A rendszer működésben
A rendszer működésben
A rendszer működésben

A fenti látványkonfiguráció bemutatja a Home Automation System működését a beállítás után.

Az IBLE közzététele óta kibővítettem a felületet, és rögzítettem néhány IR -kódot a VIZIO LED TV -ből

Amint a gyári TV távirányítóval párhuzamosan látható az első képen, ennek a távirányítónak néhány alapvető funkciója beépült a táblagépemen keresztül elérhető webes felhasználói felületbe

A későbbi látványterveken a táblagép látható az előtérben, a hátsó TV pedig válaszol a webes felületről kiadott parancsokra:

  1. Kikapcsolás parancs - A TV kikapcsol
  2. Bekapcsolás parancs - A TV bekapcsol, és a képernyő bekapcsolásakor megjelenik a "V" logó
  3. Némítás BE parancs - Vízszintes sáv jelenik meg a hangszóró némításával

Valamennyi teszt során a tablet képernyőjén a műszerfal melletti szürke terület megjeleníti az ügyfél által kiadott parancsot és a távoli SignalR Hub által visszaküldött választ

10. lépés: Az automatizálási rendszer és a kapcsolódó javítások javítása

Ez a rendszer kibővíthető további, különböző rendszerekből rögzített kódok hozzáadásával. Bár ez a rész egyszerű, két másik tényezőt is figyelembe kell vennie.

1. javítás (gyors): Különböző hosszúságú IR jelekkel való munka

  1. A különböző rendszerek IR -kódjai különböző hosszúságúak, akár ugyanazon gyártó két terméke között.

    Például ebben az esetben a LED TV IR -kód tömbhossza 67, míg a Samsung Sound Baré 87 körül van

  2. Ami azt jelenti, hogy ha először bekapcsolom a Sound Bar -t, akkor az Arduino -vázlat IR -puffer tömbjét 87 kódot tartalmazó IR -kódsorozat tölti ki
  3. Ezt követően, ha bekapcsolnám a LED TV -t, az csak 67 kóddal töltené meg az IR Buffer tömböt, de az előző műveletből származó maradék 20 kód továbbra is kb.

Az eredmény? A LED TV nem kapcsol be, mert az IR Code Buffer megsérült az extra 20 kóddal, amelyeket nem tisztítottak meg az előző műveletből!

1. javítás (a könnyű kiút, nem ajánlott)

Módosítsa az Arduino vázlatot az alábbiak szerint:

Módosítsa a következő függvényhívásokat a loop () {} függvényben

sendIRCode ();

továbbítaniIRCode (c);

Végezze el a fenti funkció aláírásának módosítását:

void broadcastIRCode (int codeLen) {// A RAWBUF konstans kóddal helyettesített codeLen IRTransmitter. IRSendRaw:: send (IRCodeBuffer, codeLen, 38); }

Bár ez egyszerű, a tömb soha nem teljesen törlődik, ezért ez nem túl tiszta megoldás

2. javítás (nem nehéz, ajánlott)

Nyújtson be egy további változót az Arduino Sketch tetején, a megjegyzések szakasz után:

unsigned int EMPTY_INT_VALUE;

Adja hozzá ezt a setup () függvény tetejéhez:

// Az üres, előjel nélküli egész változó természetes állapotának rögzítéseEMPTY_INT_VALUE = IRCodeBuffer [0];

Görgessen lefelé, és adjon hozzá egy új függvényt a vázlathoz közvetlenül az lähetésIRCode () függvény után:

void clearIRCodeBuffer (int codeLen) {// Törölje az összes kódot a tömbből // MEGJEGYZÉS: a tömb elemeinek 0-ra állítása nem megoldás! for (int i = 1; i <= codeLen; i ++) {IRCodeBuffer [i-1] = EMPTY_INT_VALUE;}}

Végül hívja meg a fenti új függvényt a loop () függvény alábbi helyén:

// Visszaállítás - Folytatja az olvasást a Serial PortclearIRCodeBuffer (c);…

Ez tisztább megközelítés, mivel valójában alaphelyzetbe állítja az IR Buffer tömb összes olyan helyét, amelyet a legutóbbi IR Code jel töltött ki, anélkül, hogy bármit is a véletlenre bízna.

2. fejlesztés (több érintett): Ismétlődő infravörös jeltovábbítás bizonyos eszközöknél

Néhány eszköz ugyanazt a jelet többször is elküldi, hogy válaszoljon. Példa: Ebben az esetben a Samsung Sound Bar előírja, hogy ugyanazt a kódot kétszer kell elküldeni 1 másodperces szünetekkel

A Fix in Concept -ről itt már szó esett, mivel ez egy kicsit többet érint, és tesztelést igényel

Az ismétlési funkció hozzáadása az Ardunio Sketch -hez azt jelenti, hogy villognia kell a Vázlatot minden alkalommal, amikor új eszközt ad hozzá az otthoni automatizálási rendszeréhez

Ehelyett a javítás hozzáadása a HTML SignalR ügyfélhez és a Python SignalR Service alkalmazáshoz sokkal rugalmasabbá teszi a megoldást. És ezt elvileg a következőképpen lehetne elérni:

Módosítsa a SignalR HTML klienst, hogy ismétlődő információkat továbbítson a Hubnak

Nyissa meg az index.html fájlt, és illessze be az ismétlődő értéket a HTML gombba, így:

value = "SMSNG-SB-PWR-ON" értékből "=" SMSNG-SB-PWR-ON_2_1000 lesz

Ahol 2 az ismétlési érték és 1000 a késleltetési érték ezredmásodpercben a két ismétlőjel között

Ha erre a gombra kattint, a SignalR hub megkapja a kulcskódot+az ismétlés_spec

Módosítsa a SignalR Server oldali módszereket, hogy csak a kulcskódot elemezze:

  • Használja a Kulcskódot, hogy a szokásos módon lekérje az IR kódot az adatbázisból
  • A kulcskód+Repeat_Spec és az IRCode továbbítása a SingalR ügyfeleknek a szokásos módon

Módosítsa a Python SignalR Service alkalmazást, hogy jeleket küldjön az Ismétlés értékek használatával:

Nyissa meg a Python klienst, és módosítsa a következő két funkciót:

def print_command_from_hub (buttonId, cmdSrc):

# elemezze az ismétlődő kódot a buttonId értékből

def sendToArduino (IRSignalCode, delim, endPrefix):

# állítson be egy ideig, vagy hogy a hurok továbbítsa a jelet a kívánt frekvencián

  • Így az Arduino -t nem kell többször felvillanni
  • Ebbe a rendszerbe tetszőleges számú ismétlődési frekvencia beépíthető
  • Ezenkívül, ha az UNO -t használja, akkor a Vázlat mérete korlátozott!

11. lépés: Ismert problémák és biztonsági aggályok

Ahogy az első alkalommal épített rendszerek esetében, ennek is van néhány problémája, amelyek a tesztelés során derültek ki.

1. probléma: A parancsok gyors egymás utáni elindítása, a gombok kattintása között kevesebb, mint egy másodperc késéssel a rendszer nem reagált, miután az első néhány alkalommal válaszolt.

  • A Python SignalR ügyfél újraindítása visszaállítja a rendszert a normál működésre
  • Azonnali megoldás lehet a nem kívánt hibakeresési kimenetek eltávolítása mind a Python SignalR Client -ből, mind az Arduino Sketchből, és ismételje meg ezeket a teszteket
  • Egy másik hely, ahol meg kell vizsgálni, maga a soros kommunikáció lenne - lehetséges lenne kód hozzáadása a puffer gyors kiürítéséhez?

Ennek ellenére észrevettem, hogy a TV -m nem reagál jól a gyári távirányítóra - ezért a televízió infravörös kommunikációjának természete is hozzájárulhat.

2. probléma: A HTML képernyő nem reagál a gombok kattintására hosszú inaktivitás után

Általában az oldal frissítése megoldja ezt a viselkedést - ennek oka azonban továbbra sem világos

BIZTONSÁGI ÉRDEKEK

Ezt a rendszert csak helyi (otthoni) hálózati használatra tervezték, és nem rendelkezik az interneten keresztül történő használathoz szükséges biztonsági biztosítékokkal

Ezért javasoljuk, hogy a SignalR Hub telepítse a helyi/otthoni hálózat helyi gépére

Köszönöm, hogy elolvasta az IBLE -t, és remélem jól szórakozik!

Ajánlott: