Vienkāršā datu reģistrētāja izveide ar RIOT (reālā lietojumu internets) sistēmu

Prezentāciju veidošanas apmācības (Aprīlis 2019).

Anonim

Vienkāršā datu reģistrētāja izveide ar RIOT (reālā lietojumu internets) sistēmu


RIOT, reālā lietojumu internets, ir sistēma, kas izstrādāta, lai viegli lietotu ESP8266 ar mikrokontrolleru palīdzību. Šajā projektā mēs parādīsim RIOT vienkāršību, izveidojot datu ierakstītāju, kas datora servera lietojumprogrammā parādīs gaismas līmeņus grafikā.

Ievads

Pēdējā RIOT projektā mēs iemācījāmies izveidot vienkāršu RIOT serveri uz Windows PC un vienkāršu RIOT klientu, kuru LED varētu ieslēgt un izslēgt no servera. No šī projekta mēs varējām redzēt, ka RIOT potenciāli ļauj jebkurai sistēmai ar UART portu pārveidot par interneta iespējotu ierīci.

Šajā projektā mēs aplūkosim klienta-servera komunikāciju, kur klients ņems sprieguma nolasījumus no LDR / rezistoru dalītāju, un pēc tam nolasīsit šos datus grafikā, kuru var atrast serverī (rakstīts VB.net). Pirms šī projekta mēģinājuma ieteicams iepriekš izskatīt projektu, jo koda un shematiskas iestatīšanas daļas tiks pārstrādātas, bet ar nelielu skaidrojumu.

Piezīme. Tagad RIOT tiek saukts par RIOTOUS, un to var atrast vietnē //www.riotousframework.com

Priekšnosacījumi un programmatūra kompilēšanai

Lai RIOT pareizi darbotos klienta pusē, jāizmanto īpaša AT un SDK versija. AT versijai jābūt 1.1.0.0 un SDK versijai jābūt 1.5.4. Iepriekšējām versijām ir bugs, kad aizverot savienojumus, un jaunākajām versijām ir vai nu trūkstošs, vai buggy kods. Lai uzzinātu RIOT klienta puses sistēmas prasības, noklikšķiniet šeit.

Lai sastādītu projektu, jums būs nepieciešams:

  • Mikročipa IDE 8.92
  • Microchip C18 kompilators
  • Visual Studio Express 2012

Arī pārliecinieties, lai izlasītu iepriekšējo projektu šajā sērijā, lai pilnībā paskaidrotu, kas RIOT ir.

Shematisks

Šajā projektā mums jāizmanto ADC modulis, kas atrodams uz PIC18F25K20 (PDF), 3.3V mikrokontrolleru. 3.3V ierīce tiek izmantota, jo pati ESP8266 ir 3.3V ierīce, tādēļ mums nav nepieciešams iekļaut loģikas līmeņa tulkotāju.

Papildu kondensators ir iekļauts 3.3V līnijā (C5) regulatora tuvumā, lai palīdzētu novērst augstfrekvences troksni strāvas līnijā.

Projekta shematisks. Noklikšķiniet, lai palielinātu

Klienta puses kods

Pirmais mūsu klienta puses koda uzdevums ir pareizi uzstādīt borta ADC perifēriju. Mūsu analogais lasījums ir atrodams RA0, tāpēc mēs izmantojam šādu kodu, lai iegūtu šo PIN darbību kā analogo ievade, ieslēdz ADC un konfigurētu ADC. Tālāk norādītais iestatīšanas kods konfigurē iekšējo oscilatoru maksimālajam ātrumam (16MHz) un x4 PLL. Šis kods ir atrodams setup.h.

Nākamais koda punkts, kas nepieciešams mūsu klientu kontrolierī, ir RIOT konfigurācija, kas ietver ISR izveidi, UART moduļa konfigurēšanu un RIOT paziņojumu, kā nosūtīt datus, izmantojot UART. Šis kods (kas RIOT pastāstīja, kā lietot UART moduli) tiek kodēts ar jums un ievietots IoT_ClientFramework.c.

Šis ISR kods RIOT paziņo, ka ir saņemts jauns baits, un tas atjaunina arī valsts iekārtu RIOT sistēmā.

Pēc klienta konfigurēšanas ir pienācis laiks iestatīt ierīces izvades, inicializēt RIOT, izveidot savienojumu ar Wi-Fi tīklu un pēc tam izveidot savienojumu ar RIOT serveri.

Tagad ir pienācis laiks uzsākt datu reģistrēšanu! Mūsu klients ņems rādījumus no RA0 ik pēc tik bieži (daži rādījumi sekundē, lai gan jūs to varat mainīt, ja vēlaties), un pēc tam nododat lasījumu RIOT serverim. Laiks būtu labāk izdarīts, izmantojot vienu no taimera moduļa perifērijas ierīcēm, taču vienkāršības labad šajā piemērā tiks izmantota vienkārša kavēšanās cilpa. Šeit var izmantot aizkavēšanās cilpu, jo RIOT tiek atjaunināts, izmantojot UART saņemto pārtraukumu, kas ir prioritārs nekā galvenais darbības kods.

Kad aizkavēšanās ir pabeigta, tiek sākta analogā-ciparu konversija, iestatot GO bitu ADCON0 reģistrā. ADC modulis dzēš GO bitu pēc lasīšanas, tāpēc, kamēr (ADCON0bits.GO) nenoteiktā laikā tiks izveidots cilpas, līdz ADC rezultāts būs gatavs. Kad ADC rezultāts ir gatavs, mēs pārsūtām rezultātu augšējos 8 bitus datu bāzu masīvā (1. lielums) un pēc tam nosūta to vienam baitam uz mūsu serveri. Tiek izmantots 1. lieluma masīvs, jo dati tiek nosūtīti uz RIOT sistēmu, izmantojot rādītāju uz masīvu (tas ir, lai masīva plūsmu varētu nosūtīt baitiem).

Zemāk ir konfigurācijas vērtības PIC18F25K20 (nepareiza aparatūras konfigurācija ir kopīgs problēmu avots mikrokontrolleru projektos).

Servera puses kods

Tāpat kā klienta pusē esošajā kodā, mēs pārstrādājam lielāko daļu no iepriekšējā projekta koda (konkrēti, programmas izkārtojumu, servera konfigurāciju un svārsts, kas tiek izmantots, lai pārbaudītu jaunus klienta datus un noteiktu, kuri klienti ir joprojām savienots) Atšķirība starp šo lietojumprogrammu un iepriekšējo projekta pieteikumu ir LED komandu pogas un diagrammas objekta noņemšana.

Bet, vispirms, ātra piezīme par VB: VB.net (kopā ar Visual Studio 2012 IDE) ir jābūt vienai no praktiskākajām valodām, kādas es jebkad ir izmantojis. Pirms šī projekta, nevis kā dabisks programmētājs, man bija bažas par to, kā es izveidoju GUI lietojumprogrammu ar grafisko spēju. Kā izrādās, VB.net ietver diagrammas objektu, kas ir pilnīgi ideāls darbam. Vienkāršā vilkšana / nomešana galvenajā formā ar divu vai trīs iestatīšanas koda rindiņām izpaužas jums iespēju izveidot grafikus, kas būtu grūtāk tādā valodā kā C vai C ++ (tomēr es uzskatu, ka šī ērtība var būt. Neto sistēma kā pretēja uz valodu, jo Visual C # ir arī lieliska valoda, ja to izmanto Visual Studio).

Tāpēc pirmā lieta, ko mēs darīsim, ir pievienot mūsu veidlapu diagrammu, kas tiek veikta, dodoties uz rīku kopu> Dati> Diagramma. No turienes jūs varat mainīt diagrammas apgabalu, mainīt krāsu shēmu un vēl daudz vairāk.

Viena atdzist lieta par objektiem VB.net ir tas, ka tie tiek automātiski inicializēti un konfigurēti konfigurācijas failā, ar kuru mums nav jāuztraucas. Tā vietā mums ir jāuztraucas tikai par apgabala noskaidrošanu, jaunu datu sērijas izveidi un pēc tam neapstrādātu datu uzņemšanu, kā tas notiek! Pirms mēs izietamies priekšā un sākam manipulēt ar diagrammas objektu, mums ir jākonfigurē RIOT servera klase. RIOT nākotnes versijas ļaus veikt visu RIOT konfigurāciju, izmantojot funkcijas, taču tagad konfigurācija tiek veikta, rediģējot VB failus. Servera.vb rediģē tikai vienu līniju, ti, 114. rindiņu, kurā lietotājam ir jāievada ierīces vietējā IP adrese. Kādu iemeslu dēļ es nevarēju to paveikt, izmantojot vietējo pieslēgumu.

Atgriežoties diagrammas objektā, grafika noņemšana un jaunas datu sērijas izveide ir diezgan nenozīmīga. Tas tiks darīts, kad nospiedīsim pogu servera startēšanas.

Tagad, kad diagramma ir gatava datu nolasīšanai, un serveris ir inicializēts, ir pienācis laiks, lai saņemtu ienākošos datus no klientiem, notīrītu pieejamos datus un atzīmētu datus diagrammā.

Ātrā piezīme: vizuālā studija programma un videoklips zemāk parāda diagrammu kā apzīmējumu "loggedLight", kur faktiski dati ir "loggedDarkeness". Tas ir saistīts ar potenciometra konfigurāciju un to var viegli noteikt, atņemot ierakstu no 256 (max). Tas dotu pieslēgto gaismu, nevis piesaistīto tumsu.

BOM

Daļa

Shematisks atsauce

Daudzums

PIC18F25K20

IC1

1

AMS1117 3.3V regulators

IC2

1

ESP8266 ESP-01

ESP8266

1

1 kΩ pretestība

R3, R4

2

5, 6 kΩ pretestība

R2

1

10 kΩ pretestība

R5

1

LDR

R1

1

LED

D1, D2

2

100 nF kondensators

C1, C2, C4, C5

4

22 μF kondensators

C3

1

Projekta sākšana

Tāpat kā iepriekšējā projektā, mēs konstruēsim ķēdi uz mēroga. Jūs varat pamanīt, ka AMS1117 ir IC iepakojumā, kas ir ļoti nedraudzīgs ar plauktiem. To ir viegli atrisināt, nogriežot lielo cilni un pēc tam lodēšanas ierīci ar strēles loksnes gabalu. No turienes, lai izveidotu TO-220 līdzīgu paketi, var pieslēgt 3-pin tiešo galveni.

RIOT datu reģistrētāja kods

Projekta video darbībā

Kopsavilkums

Šis projekts parāda, cik maz ir jāstrādā, lai izveidotu datu reģistrētāju no dažām vienkāršām daļām un bezmaksas programmatūras pakotni, kas pieejama lielākajai daļai mājas datoru. Šo projektu var viegli paplašināt lietošanai ar dažādu veidu sensoriem (temperatūra, mitrums utt.). Arī jūs ne tikai plānojat datus; jūs to arī varētu saglabāt failā, lai veiktu turpmāku analīzi.

Nākamajā RIOT projektā mēs aplūkosim komunikāciju starp ierīcēm, kur klients nosūtīs ziņojumus citam klientam, izmantojot RIOT serveri.

Dodiet šim projektam pašiem sevi! Iegūstiet BOM.