projektov

Ustvarjanje enostavnega podatkovnega zapisovalnika z okvirjem RIOT (Realtime Internet of Things)

Python Web Apps with Flask by Ezra Zigmond (December 2018).

Anonim

Ustvarjanje enostavnega podatkovnega zapisovalnika z okvirjem RIOT (Realtime Internet of Things)


RIOT, Realtime Internet of Things, je okvir, ki omogoča enostavno uporabo ESP8266 z mikrokontrolerji. V tem projektu bomo prikazali preprostost RIOT-a z ustvarjanjem podatkovnega zapisovalnika, ki bo na grafikon na strežniškem računalniku prikazal ravni svetlobe.

Uvod

V zadnjem projektu RIOT smo se naučili, kako ustvariti preprost strežnik RIOT na računalniku z operacijskim sistemom Windows in preprostim odjemalcem RIOT, katerega LED lahko vklopi in izklopi strežnik. Iz tega projekta smo lahko videli, da RIOT potencialno omogoča, da se kateri koli sistem z UART vmesnikom pretvori v internetno omogočeno napravo.

V tem projektu bomo pregledali komunikacijo med odjemalcem in strežnikom, kjer bo odjemalec odjemal napetost od ločilnika LDR / upor in jih nato na grafu, ki ga lahko najdete na strežniku (na VB.net) Zelo priporočljivo je, da pred projektom preidete skozi prejšnji projekt, ker bodo dele kode in shematične nastavitve reciklirani, vendar z malo razlag.

Opomba: RIOT se zdaj imenuje RIOTOUS in je na voljo na //www.riotousframework.com

Predpogoji in programska oprema za sestavljanje

Za pravilno delovanje RIOT na strani odjemalca je treba uporabiti posebno različico AT in SDK. Različica AT mora biti 1.1.0.0, različica SDK pa mora biti 1.5.4. V prejšnjih različicah so pri zatvaranju povezav hroži, poznejše pa imajo manjkajočo ali napačno kodo. Če želite izvedeti zahteve okvirja stranke RIOT, kliknite tukaj.

Za pripravo projekta boste potrebovali:

  • Microchip IDE 8.92
  • Prevajalnik Microchip C18
  • Visual Studio Express 2012

Prav tako se prepričajte, da preberete prejšnji projekt v tej seriji za popolno razlago, kaj je RIOT.

Shematski

V tem projektu moramo uporabiti ADC modul, ki ga najdemo na PIC18F25K20 (PDF), 3.3V mikrokontrolerju. Naprava 3.3V se uporablja, ker je sam ESP8266 naprava 3.3V, zato nam ni treba vključiti prevajalca na nivoju logike.

Dodaten kondenzator je bil vključen v linijo 3.3V (C5) blizu regulatorja, da bi pomagal pri odstranjevanju visokofrekvenčnega hrupa na daljnovodu.

Shematski projekt. Klikni za povečavo

Koda na strani odjemalca

Prva naloga naše kode na strani odjemalca je pravilna nastavitev periferne ADC na vozilu. Naš analogni odčitek najdemo na RA0, zato smo uporabili naslednjo kodo, da bi ta pin lahko deloval kot analogni vhod, vklopite ADC in konfigurirate ADC. Spodnja nastavitvena koda tudi nastavi notranji oscilator za največjo hitrost (16MHz) in x4 PLL. Ta koda najdete v setup.h.

Naslednji kos kode, ki je potreben v našem krmilniku odjemalca, je konfiguracija RIOT-a, ki vključuje izdelavo ISR-ja, konfiguriranje modula UART in sporočanje RIOT-u, kako poslati podatke prek UART-a. To kodo (ki pove RIOTu, kako uporabljati UART modul) je kodirana z vami in je vstavljena v IoT_ClientFramework.c.

Ta koda ISR pove RIOT, da je bil sprejet nov bajt in da posodobi državni stroj v okvirih RIOT.

S stranko je konfiguriran, je čas, da nastavite izhode naprave, inicializirate RIOT, povežete z omrežjem Wi-Fi in se nato povežete s strežnikom RIOT.

Zdaj je čas za zagon podatkov! Naša stranka bo odčitala od RA0 tako pogosto (nekaj odčitkov na sekundo, čeprav lahko to spremenite, če želite) in nato oddajanje branja strežniku RIOT. Timing bi bilo bolje narediti z enim od perifernih modulov časovnega modula, toda zaradi preprostosti bo ta primer uporabil preprosto zanko za zakasnitev. Tu lahko uporabite zanko za zakasnitev, ker se posodobi RIOT z uporabo prekinitve prejema UART, ki ima prednost pred glavno kodo.

Ko zakasnitev zaključi, se z nastavitvijo bitov GO v registru ADCON0 sproži analogno-digitalna pretvorba. ADC modul bo počistil GO bit, ko bo odčitan, tako da medtem ko (ADCON0bits.GO) zanič neomejeno, dokler ADC rezultat ni pripravljen. Z rezultatom ADC smo pripravili zgornje 8 bitov rezultata v matriko DataBuff (velikost 1) in nato pošljemo ta en sam bajt na naš strežnik. Uporablja se množica velikosti 1, ker se podatki pošljejo v okvir RIOT z uporabo kazalca na matriko (to je mogoče, da se lahko pošlje tok bajtov v matriki).

Spodaj so konfiguracijske vrednosti za PIC18F25K20 (nepravilna konfiguracija strojne opreme je pogost vir napak v projektih mikrokrmilnikov).

Strežniška stran

Tako kot v kodi stranke, bomo večino kode iz prejšnjega projekta reciklirali (natančneje, postavitev aplikacije, konfiguracijo strežnika in ticker, ki se uporablja za preverjanje novih podatkov od strank in ugotavljanje, katere stranke še vedno povezan). Razlika med to aplikacijo in prejšnjo prijavo projekta je odstranitev ukaznih gumbov LED in predmeta grafikona.

Ampak najprej, hitra zabava na VB: VB.net (skupaj z Visual Studio 2012 IDE) mora biti eden od najbolj praktičnih jezikov, ki sem jih kdaj uporabil. Preden sem projektiral in ni bil naravni programer, me je skrbelo, kako bi ustvaril grafično aplikacijo z grafičnimi zmogljivostmi. Izkazalo se je, da VB.net vključuje grafični predmet, ki je popolnoma primeren za delo. Preprost povleci / spusti v glavno obliko z dvema ali tremi vrsticami nastavitvene kode dobite grafične sposobnosti, ki bi bile bolj zahtevne v jeziku, kot je C ali C + + (vendar menim, da je ta priročnost lahko sam okvir .net v jezik kot vizualni C # je tudi odličen jezik, kadar se uporablja v Visual Studiou).

Torej, prva stvar, ki jo bomo naredili, je dodati grafikon v našo obliko, ki se naredi tako, da gre v orodno vrstico> Podatki> Grafikon. Od tam lahko spremenite velikost območja grafikona, spremenite barvno shemo in še veliko več.

Ena kul stvar o predmetih v VB.net je, da se samodejno inicializirajo in konfigurirajo v konfiguracijski datoteki, za katero se nam ni treba truditi. Namesto tega moramo skrbeti samo za čiščenje območja, ustvarjanje nove serije podatkov in načrtovanje neobdelanih podatkov, kot je na primer! Preden se lotimo pred nami in začnemo z manipulacijo z grafičnim objektom, moramo konfigurirati razred strežnika RIOT. Prihodnje različice RIOT bodo omogočile, da se vsa konfiguracija RIOT-a opravi z uporabo funkcij, vendar za zdaj konfiguriramo z urejanjem datotek VB. V storitvi Server.vb je treba urejati samo eno vrstico, to je vrstica 114, ki od uporabnika zahteva, da vnese lokalni IP-naslov naprave. Iz nekega razloga tega nisem mogel doseči z uporabo lokalnega gostitelja.

Vrnitev na predmet grafikona, čiščenje grafikona in ustvarjanje novih podatkovnih nizov je precej nepomembno. To bomo storili, ko pritisnemo gumb za zagon strežnika.

Zdaj, ko je graf pripravljen za načrtovanje podatkov in strežnik je bil inicializiran, je čas, da dobite vhodne podatke od strank, izbrišete zastave, ki so na voljo, in podatke zajemate na grafikonu.

Hitro opozorilo: Aplikacija vizualnega studia in videoposnetek spodaj prikazujeta grafikon, ki je označen kot "loggedLight", kjer podatki dejansko pomenijo "loggedDarkeness". To je posledica konfiguracije potenciometra in ga je mogoče enostavno določiti tako, da se odčitavanje zapisa odšteje od 256 (max). To bi dalo prijavljeno luč namesto zapisane teme.

BOM

Del

Shematski sklic

Količina

PIC18F25K20

IC1

1

AMS1117 3.3V Regulator

IC2

1

ESP8266 ESP-01

ESP8266

1

1 kΩ Resistor

R3, R4

2

5.6 kΩ uporov

R2

1

10 kΩ uporov

R5

1

LDR

R1

1

LED

D1, D2

2

100 nF Kondenzator

C1, C2, C4, C5

4

22 μF Kondenzator

C3

1

Pridobivanje projekta

Kot v prejšnjem projektu bomo zgradili vezje na krožniku. Morda boste opazili, da je AMS1117 v paketu IC, ki je zelo neprijazen s ploščami. To je enostavno rešiti z odrezovanjem velikega jezička in spajkanjem naprave na del deske. Od tam se lahko poveže 3-pinski ravni glavi, da se ustvari paket, podoben TO-220.

Pretvarjanje neprijaznega paketa v prijazno različico!

Sestavite projekt MPLAB in programirajte PIC (po možnosti v načinu izdaje) in zaženite program VB.net. Če vse gre dobro, se strežniška aplikacija ne bi smela zrušiti, ko kliknete »Start Server« in odjemalec naj začne teči takoj, ko se uporabi napajanje. Na koncu mora biti naročnik sposoben vključiti LED indikatorje, ko se najprej poveže z izbranim omrežjem Wi-Fi in nato s strežnikom RIOT. Ko se stranka poveže, bi morali videti, da graf na strežniku začne napolniti z branjem iz LDR.

Koda zapisovalnika podatkov RIOT

Video projekt v akciji

Povzetek

Ta projekt prikazuje, kako malo truda potrebujemo za ustvarjanje podatkovnega zapisovalnika iz nekaj preprostih delov in brezplačnega programskega paketa, ki je na voljo večini domačih računalnikov. Ta projekt je mogoče enostavno razširiti za uporabo z različnimi tipi senzorjev (temperatura, vlaga itd.). Prav tako niste omejeni zgolj na načrtovanje podatkov; lahko jo tudi shranite v datoteko za nadaljnjo analizo.

V naslednjem projektu RIOT bomo preučili komunikacijo med napravami, kjer bo odjemalec pošiljal sporočila drugim strežnikom preko strežnika RIOT.

Dajte ta projekt poskusiti sami! Pridobi BOM.