Egyszerű adatnapló létrehozása a RIOT (valós idejű tárgyak internetével) keretrendszerrel

7. IQRF Gateways and Cloud (Július 2019).

$config[ads_text] not found
Anonim

Egyszerű adatnapló létrehozása a RIOT (valós idejű tárgyak internetével) keretrendszerrel


A RIOT, a valós idejű tárgyak internete egy olyan keretrendszer, amely az ESP8266 mikrokontrollerek egyszerű használatát szolgálja. Ebben a projektben bemutatjuk a RIOT egyszerűségét olyan adatgyűjtő létrehozásával, amely a PC-kiszolgáló alkalmazásán grafikonon ábrázolja a fényszinteket.

Bevezetés

Az utolsó RIOT projektben megtudtuk, hogyan lehet egy egyszerű RIOT szervert létrehozni egy Windows PC-n és egy egyszerű RIOT klienst, amelynek LED-je a szerver be- és kikapcsolható. Ebből a projektből láthattuk, hogy a RIOT potenciálisan lehetővé teszi bármely olyan rendszert, amelynek UART portja internetes eszközvé válik.

Ebben a projektben megnézzük az ügyfél-kiszolgáló kommunikációt, ahol az ügyfél egy LDR / ellenállásosztóból származó feszültségleolvasást vesz fel, majd ezt az adatot egy olyan grafikonra írja le, amely a szerveren megtalálható (VB.net-ben írt). Nagyon ajánlott az előző projekt végrehajtása, mielőtt megpróbálná a projektet, mert a kód és a vázlatos beállítások része újrahasznosítható, de kevés magyarázattal.

Megjegyzés: A RIOT nevet RIOTOUS néven hívják, és megtalálható a //www.riotousframework.com címen

Előfeltételek és szoftverek összeállításához

Ahhoz, hogy a RIOT megfelelően működjön a kliens oldalon, egy adott AT és SDK verziót kell használni. Az AT verziónak 1.1.0.0-nak kell lennie, és az SDK verziónak 1.5.4-nek kell lennie. A korábbi verziók hibákat okoznak a kapcsolatok bezárásakor, és a későbbi verziók hiányosak vagy hibásak. A RIOT ügyféloldali keret követelményeinek megismeréséhez kattintson ide.

A projekt összeállításához szükség lesz:

  • Microchip IDE 8.92
  • Microchip C18 fordító
  • Visual Studio Express 2012

Továbbá, olvassa végig az előző projektet ebben a sorozatban a RIOT megértéséhez.

A séma

Ebben a projektben a PIC18F25K20 (PDF), a 3.3V-os mikrokontrolleren található ADC modult kell használni. 3.3V-os eszközt használnak, mivel maga az ESP8266 egy 3.3V-os eszköz, ezért nem kell logikai szintű fordítót beiktatnunk.

Egy extra kondenzátor került a 3.3V-os vonalra (C5) a szabályozó közelében, hogy segítse a nagyfrekvenciás zaj eltávolítását az elektromos hálózaton.

A projekt vázlata. kattints a kinagyításhoz

Ügyféloldali kód

Ügyféloldali kódunk első feladata a beépített ADC periféria helyes beállítása. Analóg leolvasásunkat RA0-ban találjuk, így a következő kódot használjuk annak érdekében, hogy ez a pólus működjön analóg bemenetként, kapcsolja be az ADC-t és állítsa be az ADC-t. Az alábbi telepítési kód a belső oszcillátort is a maximális sebesség (16MHz) és az x4 PLL számára állítja be. Ez a kód megtalálható a setup.h.

Az ügyfélvezérlőnk következő kódszáma a RIOT konfigurációja, amely magában foglalja az ISR létrehozását, az UART modul konfigurálását és a RIOT-nak az UART-on keresztül történő adatküldés módját. Ezt a kódot (amely a RIOT-nak mondja az UART modul használatát) kódolja Önt, és be van helyezve a IoT_ClientFramework.c fájlba.

Ez az ISR kód megmondja a RIOT-nak, hogy új bájt érkezett, és frissíti az állami gépet a RIOT keretrendszerben.

Az ügyfél konfigurálásával itt az ideje beállítani az eszköz kimenetét, inicializálni a RIOT-ot, csatlakozni egy Wi-Fi hálózathoz, majd csatlakozni egy RIOT szerverhez.

Most itt az ideje az adatnaplózás megkezdésére! Ügyfeleink minden alkalommal gyakran olvasnak a RA0-ból (néhány olvasás másodpercenként, bár ezt megváltoztathatja, ha akarod), majd továbbítja az olvasást a RIOT szerverre. Az időzítés jobb lenne az időzítő modul perifériáinak használatával, de az egyszerűség kedvéért ez a példa egy egyszerű késleltetési hurkot használ. A késleltetési hurkot itt lehet használni, mert a RIOT frissítése UART vételi interrupt használatával történik, amely elsőbbséget élvez a fő futási kód fölött.

A késleltetés befejezése után egy analóg-digitális konverziót kezdeményez a GO bit beállítása az ADCON0 regiszterben. Az ADC modul törli a GO bitet az olvasás megkezdése után, így amíg az ADCON0bits.GO véget nem ér, amíg az ADC eredmény készen van. Az ADC eredmény készen tartásával az eredmény felső 8 bitjét átmásoljuk az adatBuff-tömbbe (1-es méret), majd elküldjük az egy byte-ot a szerverünknek. Az 1-es méretű tömböt azért használják, mert az adatok egy tömbre mutató mutató használatával kerülnek elküldésre a RIOT keretrendszerre (ez egy tömb bájtjának forrása lehet).

Az alábbiakban találhatók a PIC18F25K20 konfigurációs értékei (a nem megfelelő hardverkonfiguráció a problémák közös forrása a mikrokontrollerprojektekben).

Szerveroldali kód

Ugyanúgy, mint az ügyfél oldali kódjában, az előző projekt kódjának többségét újrahasznosítjuk (konkrétan az alkalmazás elrendezését, a kiszolgáló konfigurációját és a tickert, amely az új adatok kliensekről történő ellenőrzésére szolgál, és meghatározza, hogy mely ügyfelek még mindig csatlakoztatva). Az alkalmazás és az előző projektalkalmazás közötti különbség a LED parancsgombok és a diagram objektum eltávolítása.

De először egy gyors feljegyzést a VB: VB.net (a Visual Studio 2012 IDE-vel együtt) az egyik leghasznosabb nyelvnek kell lennie, amelyet valaha használtam. A projekt megkezdése előtt, és nem természetes programozó, aggódtam, hogyan hozhatnék létre grafikus alkalmazást grafikus képességekkel. Amint kiderül, a VB.net tartalmaz egy diagram objektumot, amely teljesen tökéletes a munkához. Egy egyszerű húzás a fő formában két vagy három sornyi beállítási kóddal olyan képességeket rajzol, amelyek kihívást jelentenek egy olyan nyelven, mint a C vagy a C ++ (azonban úgy gondolom, ez a kényelem maga a .net keret lesz, szemben a nyelvre, mivel a C # vizuális stúdióban is kiváló nyelv).

Tehát az első dolog, amit csinálunk, egy diagramot kell hozzáadni az űrlapunkhoz, amelyet az eszközkészlet> Adatok> Diagram eszközzel megyünk. Innen átméretezheti a diagramterületet, megváltoztathatja a színsémát és még sok mást.

A VB.net objektumainak egyik hűvös tulajdonsága, hogy automatikusan konfigurálják és konfigurálják azokat a konfigurációs fájlokban, amelyekkel nem kell foglalkoznunk. Ehelyett csak aggódnunk kell a terület elszámolásával, új adatkészlet létrehozásával, majd a nyers adatok ábrázolásával, amint bejövünk! Mielőtt eljutunk magunk előtt és elkezdjük manipulálni a diagram objektumot, meg kell adnunk a RIOT szerverosztályt. A RIOT jövőbeni verziói lehetővé teszik a RIOT összes konfigurációját a funkciók használatával, de mostantól a konfiguráció a VB fájlok szerkesztésével történik. Csak egy sort kell szerkeszteni a Server.vb-ben, vagyis a 114-es sorban, amely megköveteli, hogy a felhasználó megadja a gép helyi IP-címét. Valamilyen oknál fogva nem tudtam ezt elérni a localhost használatával.

Visszatérve a grafikonobjektumhoz, törölni a gráfot és létrehozni egy új adatsorozatot meglehetősen triviális. Ez akkor történik, ha megnyomjuk a szerverindító gombot.

Most, hogy a grafikon készen áll az adatok ábrázolására és a kiszolgáló inicializálására, itt az ideje, hogy bejöjjön az ügyfelekbe beérkező adatok, törölje az elérhető adatjelet, és rajzolja az adatokat a diagramra.

Gyors megjegyzés: Az alábbi vizuális stúdióalkalmazás és videó azt mutatja, hogy a grafikon "loggedLight" címkével van ellátva, ahol az adatok valójában az "aláírt" értéket képviselik. Ez a potenciométer konfigurációjának köszönhető, és könnyen rögzíthető a 256 (max) rögzített leolvasás levonásával. Ez a naplózott fényt a naplózott sötétség helyett.

BOM

Rész

Sematikus hivatkozás

Mennyiség

PIC18F25K20

IC1

1

AMS1117 3.3V szabályozó

IC2

1

ESP8266 ESP-01

ESP8266

1

1 kΩ ellenállás

R3, R4

2

5, 6 kΩ ellenállás

R2

1

10 kΩ ellenállás

R5

1

LDR

R1

1

VEZETTE

D1, D2

2

100 nF kondenzátor

C1, C2, C4, C5

4

22 μF kondenzátor

C3

1

A projekt futása

Mint az előző projektben is, az áramkört egy kenyérlemezre építjük. Észrevehetjük, hogy az AMS1117 egy olyan IC-csomagban található, amely nagyon barátságtalan a kenyérsüteményeken. Ez a megoldás könnyen megoldható a nagy lap levágásával, majd a készülék egy darab csíklemezre forrasztásával. Innen egy 3-pólusú egyenes fejléc csatlakoztatható TO-220-szerű csomag létrehozásához.

RIOT adatgyűjtő kódja

A projektben lévő projekt videója

összefoglalás

Ez a projekt bemutatja, hogy kevés erőfeszítésre van szükség ahhoz, hogy egy adatrögzítőt létrehozhasson néhány egyszerű részből és egy ingyenes szoftvercsomagot a legtöbb otthoni számítógéphez. Ez a projekt könnyen bővíthető különböző típusú érzékelők (hőmérséklet, páratartalom stb.) Használatára. Emellett nemcsak az adatok egyszerű ábrázolására korlátozódnak; a későbbi elemzéshez egy fájlt is el lehet tárolni.

A következő RIOT projektben megvizsgáljuk az eszközök közötti kommunikációt, ahol az ügyfél üzeneteket küld a másik ügyfélnek a RIOT szerveren keresztül.

Adja meg ezt a projektet magának! Szerezd meg a BOM-ot.