Turinys:

Atviro kodo duomenų kaupiklis (OPENSDL): 5 žingsniai (su paveikslėliais)
Atviro kodo duomenų kaupiklis (OPENSDL): 5 žingsniai (su paveikslėliais)

Video: Atviro kodo duomenų kaupiklis (OPENSDL): 5 žingsniai (su paveikslėliais)

Video: Atviro kodo duomenų kaupiklis (OPENSDL): 5 žingsniai (su paveikslėliais)
Video: CS50 2015 - Week 7 2024, Lapkritis
Anonim
Atvirojo kodo duomenų kaupiklis (OPENSDL)
Atvirojo kodo duomenų kaupiklis (OPENSDL)
Atvirojo kodo duomenų kaupiklis (OPENSDL)
Atvirojo kodo duomenų kaupiklis (OPENSDL)
Atvirojo kodo duomenų kaupiklis (OPENSDL)
Atvirojo kodo duomenų kaupiklis (OPENSDL)

Šio projekto tikslas-suprojektuoti, sukurti ir išbandyti nebrangią pastatų eksploatacinių savybių vertinimo tyrimų matavimo sistemą, apimančią bent temperatūrą, santykinę drėgmę, apšvietimą ir išplėsiančią papildomus jutiklius, bei sukurti šių prietaisų prototipą..

Taip sukuriama pritaikyta ir prieinama sistema, leidžianti suinteresuotosioms šalims efektyviai ir nebrangiai atlikti matavimus, reikalingus pastato eksploatacijos vertinimui, registruojant kelis aplinkos parametrus vienu metu. Sukurtas atviro kodo duomenų kaupiklis (OPENSDL) buvo lyginamas su HOBO U12-012 duomenų kaupikliu. Ši parduodama analoginė sistema gali išmatuoti 3 parametrus, būtent temperatūrą, RH ir apšvietimą, ir vieną išorinį kanalą kitų tipų jutikliams. Bet kuriam kitam parametrui matuoti reikalingas kitoks jutiklis. Matuojamų parametrų charakteristikos apsiriboja patentuota aparatine ir programine įranga, todėl sistema apriboja tam tikrų parametrų matavimą su konkrečiu tikslumu. HOBO U12-012 kainuoja apie 13 000 ₹ (185 USD), o OPENSDL kainuoja 4 605 ₹ (66 USD), o tai yra beveik trečdalis komercinio atitikmens.

Atviro kodo duomenų kaupiklis, skirtas temperatūrai, RH ir šviesos lygiui (apšvietimui) stebėti naudojant „Arduino Uno“.

Reikalingas laikas: 2-3 valandos litavimui, 5 valandos pakavimui (4 valandos - 3D spausdinimas ir 1 valanda pjovimui lazeriu) Reikalingi įgūdžiai: litavimas, mažai žinių apie programavimą ir elektroniką

Reikalingos dalys:

  1. „Arduino Uno“su kabeliu
  2. Duomenų kaupiklio skydas
  3. CR1220 monetų elementų baterija
  4. BME280 temperatūros drėgmės slėgio jutiklio išjungimo plokštė
  5. TSL2561 šviesos jutiklio išjungimo plokštė
  6. ESP01-8266 „Wi-Fi“modulis
  7. RJ-9 kištukinė ir moteriška jungtis
  8. „Arduino“skydo krovimo antraštės
  9. SD atminties kortelė (bet kokia talpa)
  10. Vektorinė lenta (26 x 18 skylių)
  11. 8 AA baterijos Baterijų laikiklis

Reikalingi įrankiai:

  • Lituoklis (35W)
  • Lituoklis
  • Vielos pjaustytuvas
  • Gofravimo įrankis
  • Multimetras

Reikalinga programinė įranga: „Arduino IDE“(1.0.5 arba naujesnė)

Naudojamos „Arduino“bibliotekos:

  • Laidų biblioteka
  • „SparkFun TSL2561“biblioteka
  • „Cactus BME280“multisensorinė biblioteka
  • SD kortelių biblioteka
  • SPI biblioteka
  • RTC biblioteka

Pastaba: „BME280“jutiklis yra labai tikslus „Bosch“temperatūros, santykinės drėgmės ir slėgio jutiklis. Panašiai DS1307 yra tikslus realaus laiko laikrodis iš „Maxim“, o TSL2561 yra tikslus šviesos jutiklis. Šiems produktams yra pigesnių ir ne tokių tikslių alternatyvų, tačiau ši pamoka skirta žmonėms, kurie norėjo surinkti duomenis pastatų eksploatacinių savybių vertinimui ir pastatų stebėjimo programoms, reikalaujančioms didelio tikslumo ir tikslumo. Tai reiškia, kad bet kokia konkreti aparatinės įrangos sąranka ir programinės įrangos sąranka (bibliotekos, programos kodas) buvo griežtai skirta tik nurodytiems produktams.

1 žingsnis: Surinkimas

Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas

Duomenų kaupiklio skydą galima lengvai sukrauti ant „Arduino Uno“plokštės. Šis skydas suteikia duomenų registravimo galimybes (laiko saugojimą ir duomenų saugojimą). Skydas turėjo būti sukrautas. CR1220 monetos elementų baterija turėjo būti įdėta į apvalią angą, kad laikrodis veiktų net tada, kai „Arduino“yra išjungtas. SD atminties kortelė turi būti įdėta į pridedamą kortelės angą. Unikalus pritaikytas skydas buvo sukurtas naudojant RJ-9 jungčių kaiščius ir „Arduino“skydo krovimo antraštes. Atitinkamos antraštės buvo lituojamos atitinkamose vietose, kad skydas puikiai tilptų ant „Arduino“plokštės. „Arduino“turi 18 kaiščių vienoje pusėje ir 14 kaiščių kitoje pusėje. Antraštės su tuo pačiu kaiščių skaičiumi buvo naudojamos tuo pačiu atstumu (18 kaiščių), kaip ir „Arduino“. Likusi papildoma erdvė greta antraščių buvo panaudota RJ-9 jungčiai įdėti.

Antraštės buvo geriausias būdas naudoti reikiamus kaiščius, tačiau jie vis dar buvo prieinami kitiems komponentams. Naudojami jutikliai atitinka I2C ryšio protokolą, kuriam reikalingi 4 „Arduino“kaiščiai, būtent: SDA (taip pat galima įsigyti kaip A4), SCL (taip pat galima įsigyti kaip A5), 3.3V ir GND. Keturi laidai, išeinantys iš RJ-9 jungties, buvo lituojami į šiuos keturis antraštės kaiščius. Reikalingas RJ-9 jungčių skaičius priklauso nuo jutiklių skaičiaus. Šiame projekte buvo naudojamos 3 RJ-9 jungtys (dvi BME280 ir viena TSL2561). Keturi laidai, išeinantys iš RJ-9 jungties, buvo pažymėti spalvomis, o kiekvienas spalvotas laidas buvo paskirtas tam tikru kaiščiu visoms RJ-9 jungtims. Reikia pažymėti, kad skirtingų RJ-9 dalių spalvos kodas gali skirtis. Tokiu atveju reikia pažymėti laido vietą ant jungties. Po litavimo RJ-9 jungtis buvo priklijuota prie vektorinės plokštės naudojant „Feviqwik“, kad ji būtų pritvirtinta prie paviršiaus. Šias jungtis galima patikrinti naudojant multimetro tęstinumo režimą. Tęstinumo režimu multimetras turėtų rodyti nulinį pasipriešinimą. Prijunkite vieną iš multimetro zondų prie lituoto kaiščio, o kitą-prie RJ-9 jungties viduje esančio kaiščio. Multimetras turėtų skleisti toną, o tai reiškia, kad lydmetalio jungtys yra tinkamos, o jungtys padarytos tinkamai. Jei tonas neskleidžiamas, patikrinkite litavimo jungtis. Panašiai lituokite RJ-9 jungtį tais pačiais laidais, jungiančiais tas pačias skylutes jutiklio pertraukimo plokštėse, ty A4, A5, 3.3V ir GND. BME280 jutiklis palaiko du I2C adresus, tai reiškia, kad du BME280 jutikliai gali būti prijungti prie to paties valdiklio vienu metu. Tai darydami, vieno jutiklio adresas turi būti pakeistas sujungiant jutiklio lituoklius. ESP-01 belaidžio ryšio mikroschemai reikėjo šių ryšių su „Arduino“.

ESP-01 --------- Arduino Uno

10 -------------------- TX

11 -------------------- RX

Vcc ---------------- CH_PD

Vcc ------------------- Vcc

GND ----------------- GND

Pastaba:- Siekiant pagerinti baterijos veikimo laiką, buvo pašalinti keli „Arduino Uno“šviesos diodai. Maitinimo indikatoriaus LED, RX ir TX šviesos diodai buvo pašalinti, kaitinant litavimo siūles ir stumiant šviesos diodą žnyplėmis.

2 veiksmas: nustatykite IDE ir bibliotekas

Prieš pradėdami programuoti, turite atsisiųsti „Arduino IDE“(integruotą kūrimo aplinką). Programavimas buvo atliktas šioje platformoje. Skirtingos bibliotekos turėjo sąveikauti su skirtingais OPENSDL komponentais. Pateiktiems komponentams buvo naudojamos šios bibliotekos.

Komponentas ------------------------------------------------- -------------- Biblioteka

BME280 temperatūros ir drėgmės jutiklis --------------------------------- Cactus_io_BME280_I2C.h

Šviesos sensorius------------------------------------------------ ---------------- „SparkFun TSL2561.h“

Laikrodis realiuoju laiku ----------------------------------------------- ------------- RTClib.h

SD kortelės lizdas ----------------------------------------------- ------------- SD.h

I2C jungtis ------------------------------------------------ ------------- Viela.h

Atskira biblioteka ryšiui su ESP01 nereikalinga, nes į „Arduino“įkeltas kodas turi AT komandas, kurios siunčiamos į nuoseklųjį monitorių, iš kurio ESP-01 priima instrukcijas. Taigi iš esmės AT komandos, kuriomis paleidžiamas ESP01, spausdinamos į serijinį monitorių, kurias ESP-01 priima kaip įvesties komandą. Norėdami įdiegti šias bibliotekas, jas atsisiuntę atidarykite „Arduino IDE“, eikite į „Eskizas“-> „Įtraukti biblioteką“-> „Pridėti. Zip biblioteką“ir pasirinkite atsisiųstas bibliotekas.

3 žingsnis: Sistemos programavimas

Sistemos programavimas
Sistemos programavimas

Prieš programuodami OPENSDL, prijunkite „Arduino“prie nešiojamojo kompiuterio. Prisijungę eikite į Įrankiai -> Prievadas ir pasirinkite COM prievadą, prie kurio prijungtas OPENSDL. Taip pat įsitikinkite, kad skiltyje Įrankiai -> Lentos yra pasirinktas „Arduino Uno“.

OPENSDL buvo sukurtas dirbti dviem režimais. Pirmuoju režimu jis saugo duomenis SD kortelėje duomenų kaupiklio skydelyje. Antruoju režimu jis siunčia duomenis internetu į svetainę naudodamas „Wi-Fi“mikroschemą ESP-01. Abiejų režimų programa skiriasi. Šios kodo eilutės gali būti tiesiogiai nukopijuotos ir įklijuotos „Arduino IDE“redaktoriuje ir tiesiogiai naudojamos. Įvedę kodą, turime atlikti keletą pritaikymų pagal savo poreikius:

  1. Rankiniu būdu pakeiskite vėlavimo vertę (1000) kodo pabaigoje, kad pakeistumėte registravimo intervalą. Reikšmė 1000 reiškia intervalą milisekundėmis.
  2. Redaguokite kodo eilutę, kuri sako mySensorData = SD.open ("Logged01.csv", FILE_WRITE); ir pakeiskite „Logged01“norimo failo pavadinimo failo pavadinimu. Failo plėtinį taip pat galima pakeisti pakeičiant.csv plėtinį iškart po failo pavadinimo.
  3. Kalibravimo lygtis, pasiekta nustatant koreliaciją tarp pagrindinio/etaloninio jutiklio ir BME280, kiekvienam jutikliui skirsis. Pakeiskite šią kodo eilutę jutiklių kalibravimo lygtimi: Serial.print ((1.0533*t2) -2.2374)-jutikliui, kurio numatytasis adresas (0x77), kur t2 yra vertė, nuskaityta iš temperatūros jutiklio.

Buvo sukurta atskira programa, skirta užprogramuoti antrąjį galimą OPENSDL režimą, ty belaidę sistemą. ESP-01 turi būti prijungtas prie OPENSDL pagal jungtis, kaip paaiškinta 2 veiksme. Užbaigus ryšius, prijunkite „Arduino“prie nešiojamojo kompiuterio ir įkelkite tuščią eskizą į „Arduino“. Įjunkite ESP-01 į atnaujinimo režimą ir atnaujinkite programinę-aparatinę įrangą į naujausią turimą naujinimą. Atnaujinę, būtinai prijunkite „Arduino“atstatymo kaištį prie 3,3 V kaiščio, kuris apeina „Arduino“įkrovos tvarkyklę

4 žingsnis: gamyba

Gamyba
Gamyba
Gamyba
Gamyba
Gamyba
Gamyba

Apsaugai ir estetikai pagerinti buvo sukurtas OPENSDL gaubtas. Korpusai buvo sukurti naudojant 3D spausdinimą naudojant PLA medžiagą, o mikrovaldiklio korpusas - pjaustant lazeriu MDF lakštą ir klijuojant gabalus. 3D spausdinti modeliai buvo sukurti naudojant „SketchUp“programinę įrangą, o 2D dxf brėžiniai pjovimui lazeriu sukurti naudojant „AutoCAD“.

Norint spausdinti 3D, STL failai, sukurti naudojant „SketchUp“, buvo atidaryti ir patikrinti naudojant „Ultimaker Cura 3.2.1“programinę įrangą. Įsitikinkite, kad naudojama PLA medžiaga, o naudojamo spausdintuvo antgalis skirtas 0,4 mm spausdinimui. 3D spausdintuvo konstrukcinei plokštei gali prireikti klijų, kad priklijuotų 3D spausdintą objektą. Tačiau kai spausdinimas baigtas, klijai sukuria stiprų sukibimą tarp spausdinamo objekto ir konstrukcijos plokštės.

5 žingsnis: kodas

Kodas (.ino failai) sukurtas veikti naudojant „Arduino IDE“programinę įrangą. Čia yra nuoroda į mano „Github“puslapį, kuriame rasite kodą ir kitą informaciją.

github.com/arihant93/OPENSDL

Nedvejodami užduokite klausimus apie projektą.

Dėkoju.

Rekomenduojamas: