Teine IoT ilmajaam: 8 sammu
Teine IoT ilmajaam: 8 sammu
Anonim
Veel üks IoT ilmajaam
Veel üks IoT ilmajaam
Veel üks IoT ilmajaam
Veel üks IoT ilmajaam
Veel üks IoT ilmajaam
Veel üks IoT ilmajaam
Veel üks IoT ilmajaam
Veel üks IoT ilmajaam

Järgmine oli minu isale sünnipäevakingitus; inspireeritud teisest Instructable'ist, mida ma nägin ja kavatsesin esialgu tõestada talle kui iseehituskomplekti. Kuid alustades koos temaga selle projekti kallal töötamist, mõistsin väga kiiresti, et esialgne õpetus, mis kingitust inspireeris, oli aegunud ja et paljude teiste veebipõhiste õpetuste selgitustes oli olulisi lünki. Seetõttu otsustasin avaldada veel ühe IoT ilmajaama, mida loodetavasti oleks lihtne järgida vormi algusest lõpuni.

Lisaks näitab see juhend, kuidas sensori näitude jälgimiseks ja salvestamiseks kasutada Blynkit, Google'i arvutustabeleid või mõlemat. Veelgi enam, Google'i arvutustabelite kirjed kirjutatakse otse lehele (ilma kolmanda osapoole teenuse kaudu).

Stevensoni ekraani osas on Internetis saadaval palju, mida saab 3D-printida nt. https://www.thingiverse.com/thing:1718334. Ma tugin selle juhendi jaoks sellele.

Stevensoni ekraan on "instrumentide varjualune on meteoroloogiliste instrumentide varjualune või ümbris sademete ja väliste allikate otsese soojuskiirguse eest, võimaldades samal ajal õhul nende ümber vabalt liikuda." (Vikipeedia).

Osad

  • Wemos LolIn - NodeMCU v3 (1,43 USD)
  • BME280 (temperatuuri-, rõhu- ja niiskusandur) (2,40 USD)
  • 6V 1000mA päikesepaneel (9,96 USD)
  • 5V 1A Micro USB 18650 liitiumaku laadimisplaadi laadija moodul+kaitse kahefunktsiooniga TP4056 (0,99 USD)
  • 4x 1,2 V laetavad NiMH akud
  • Akuhoidik (4x AA, kõrvuti ja otsast otsani)
  • Micro USB -pistiku pistik
  • Kaablisidemed
  • 3x tiibmutrid
  • Varras või luudapulk
  • Epoksü ja/või superliim (tagantjärele mõeldes oleks räni paremini toiminud)

Tarkvara

  • Blynk App
  • Google'i arvutustabelid (kui soovite juurdepääsu ajaloolistele andmetele)
  • EasyEDA (skeemi joonistamiseks)
  • Arduino IDE

Tööriistad

  • Jootekolb
  • Jootma
  • Termokahanevad torud
  • 3D printer
  • Liimipüstol

Samm: 3D -printimine - Stevensoni ekraan

3D -printimine - Stevensoni ekraan
3D -printimine - Stevensoni ekraan
3D -printimine - Stevensoni ekraan
3D -printimine - Stevensoni ekraan
3D -printimine - Stevensoni ekraan
3D -printimine - Stevensoni ekraan

Nagu juba mainitud, laadige failid alla aadressilt https://www.thingiverse.com/thing:1718334 ja printige vajalikud bitid. Paigaldusjuhised leiate ka ülaltoodud lingilt. Tegin mõned muudatused (vt märkusi allpool).

Trükitud osad on:

  • Top_Cover_for_m3_tapping.stl
  • Middle_Ring.stl (x5)
  • Middle_Ring_bottom.stl (x1, STL ülal)
  • Solid_Plate.stl (x1)
  • Solid_Plate_Base.stl (x1)
  • Pole_Mount_1in_Round.stl
  • Sensor_Grid.stl
  • Electronics_Mount.stl
  • My_Solar_Cell_Mount.stl (x2, STL lisatud ülal)

Kokkupaneku järjekord on järgmine:

  • Keerake augud
  • Keerake M3 vardad keermestatud pistikupesadesse
  • Top_Cover
  • Solid_Plate
  • Keskmised_rõngad
  • Libistage Sensor_Grid
  • Electronics_Mount
  • Solid_Plate_Bottom
  • Pole_Mount
  • My_Solar_Cell_Mounts epoksitakse Top_Coveri ülaossa

Puurisin tahketesse plaatidesse augud, et päikesepaneelil olev laadimiskaabel saaks ühendada laadijaga ja seejärel üks, et kaabel saaks juhtida kontrollerist Sensor_Gridi andurini.

Pärast valmimist programmeeriti andur iga 60 minuti järel järgmisi näitu:

  • Temperatuur
  • Niiskus
  • Rõhk

Märkused

  • Kohandasin päikesepatareide aluseid, et need sobiksid paremini päikesepatarei hoidmiseks.
  • Paigaldasin elektroonika Pole_Mount ja Solid_Plate vahele. See ei pakkunud elektroonikale head kaitset. Seetõttu muutsin Solid_Plate'i nii, et sellel oleks seelik, mis seejärel tühimiku sulgeks ja seeläbi elektroonikale paremat kaitset pakuks. Mõned ülaltoodud fotod on tehtud enne selle muudatuse tegemist.
  • Minu epoksiid maandus ja ei hoidnud päikesepaneeli, mille seejärel superliimiga uuesti kinnitasin. Ma arvan, et ma pean räni kasutama.

2. samm: vooluring

Ringkond
Ringkond
Ringkond
Ringkond

Ühendage vooluring skeemil näidatud viisil, paigaldades LoLin ja BME280 3D-prinditud võrgule, nagu fotol näidatud.

BME280 -> LiLon

  • VCC -> 3.3V
  • GND -> GND
  • SCL -> D1
  • SDA -> D2

LiLon -> LiLon

D0 -> RST (seda on vaja kontrolleri äratamiseks sügavast unest, kuid see tuleb ühendada alles pärast koodi laadimist kontrollerile)

MÄRGE

Mul oli väljakutseid sobiva LiLoni aku hankimisel. Samuti ei õnnestunud mul millegipärast VIN -i kaudu toita. Seetõttu töötasin järgmiselt:

  • Väljund TP4056 -st ühendati Male USB -pistikuga, mis seejärel ühendati plaadi toiteks USB -pesasse.
  • TP4056 B- ja B+ ühendati AA patareihoidjaga, mis hoidis NiMH akusid.

3. samm: asjade internet - Blynk

IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk
IoT - Blynk

"Blynk on riistvaraagnostiline IoT-platvorm, millel on kohandatavad mobiilirakendused, privaatne pilv, reeglite mootor ja seadmehalduse analüüside juhtpaneel." Põhimõtteliselt võimaldab see Interneti kaudu turvaliselt hallata ja jälgida kaugandureid kõikjalt maailmast. Kuigi kommertsteenus, sisaldab iga konto 2000 tasuta krediiti. Krediidid võimaldavad teil anduri või anduritega siduda erinevaid mõõtureid, kuvasid, märguandeid jne. Kuigi tellimuste hinnakujundus jääb harrastaja eelarve eelarvest välja, piisab tasuta krediitidest sellise lihtsa projekti jaoks nagu see.

Teenuse kasutamise alustamiseks peate esmalt oma telefoni/seadmesse alla laadima rakenduse Blynk, looma ja konto (või logima sisse olemasoleva kontoga) ning seejärel looma uue projekti järgmiselt.

  • Valige oma riistvara
  • Andke oma projektile nimi (antud juhul kasutasin "Ilmajaama").
  • Klõpsake "Loo"
  • Seejärel saate e-postiga autentimiskoodi.

Te ei pea vajalikke vidinaid lisama. Oma 2000 tasuta krediidiga lisasin järgmise:

  • 3 näidikut
  • 1 supergraafik

Mõõdikud ja diagrammid seadistati lisatud fotode järgi, igaühele määrati oma virtuaalne tihvt, mida koodis hiljem kasutatakse.

Kui seaded on tehtud, saab kuupäeva kogumise alustamiseks vajutada üleval paremal asuvat esitusnuppu.

Lisateavet vt

docs.blynk.cc/#getting-started.

Samm: kood - Arduino IDE ettevalmistamine

Selle projekti lõpuleviimiseks tuleb Arduino IDE -sse lisada järgmised teegid:

  • https://github.com/adafruit/Adafruit_BME280_Library (temperatuuri, rõhu ja niiskuse anduri vajadus)
  • https://github.com/adafruit/Adafruit_Sensor
  • https://github.com/esp8266/Arduino (see annab teile juurdepääsu ESP8266 tahvlile)
  • https://github.com/blynkkk/blynk-library/releases/tag/v0.6.1 (Blynki raamatukogu)
  • https://github.com/electronicsguy/ESP8266/tree/master/HTTPSRedirect (Google'i arvutustabelitega ühenduse loomiseks on vaja

Arduino IDE raamatukogude installimise juhised leiate aadressilt

Minu riistvara seaded on järgmised:

  • Tahvel: NodeMCU 1.0 (ESP-12E moodul)
  • Üleslaadimiskiirus: 115200

Kui kasutate lisatud koodi järgmistes sammudes, vaadake alati koodi lisatud märkuste kohta järgmist.

  • Wifi SID
  • Wifi parool
  • Blynk autoriseerimisvõti
  • Google Scripti ID
  • Google'i arvutustabeli jagamisvõti

5. samm: kood - Blynk

Ma võitlesin aastaid, et oma BME280 andur tööle saada, kuni leidsin näite, mis sisaldas järgmist rida.

staatus = bme.begin (0x76); // Minu kasutatava anduri I2C aadress on 0x76

Tundub, et mul oli vaja anduri aadress määrata. Kui olin seda teinud, töötas kõik hästi.

Blynkil on tõesti kena mobiilne kasutajaliides, kuid sellel on siiski järgmised piirangud:

  • Ainult 2000 tasuta krediiti, projektid, mis nõuavad rohkem kui see, nõuavad kallist igakuist tellimust (kui te ei hostita ega halda oma Blynk -serverit).
  • Kui te ei hostita oma Blynk -serverit, ei saa te ajaloolisi andmeid eksportida.

Ülaltoodud põhjustel vaatasin, kuidas saaksin oma andmete kogumise protsessi Google'i lehele integreerida. Seda käsitletakse järgmises osas.

6. toiming: kood - Google'i arvutustabelid

Kood - Google'i arvutustabelid
Kood - Google'i arvutustabelid
Kood - Google'i arvutustabelid
Kood - Google'i arvutustabelid
Kood - Google'i arvutustabelid
Kood - Google'i arvutustabelid

Näitude salvestamiseks, et saaksite hiljem ajaloolisi andmeid analüüsida, peate need kirjutama mingisse andmebaasi. Teek HTTPSRedirect võimaldab meil seda teha, kirjutades oma andmed Google'i lehele.

Selle lähenemisviisi peamised piirangud on järgmised:

  • Puudub kena mobiilikasutaja liides
  • Google'i arvutustabelis võib olla kuni 400 000 lahtrit. Selle projekti puhul pole see suur probleem, sest selle piiri saavutamiseks kulub veidi üle 11 aasta.

Google'i leht on seadistatud järgmiselt.

Looge kahe lehega Google'i leht.

Leht 1: Andmed

Andmeleht vajab 4 veergu, st kuupäev/kellaaeg, temperatuur, niiskus, rõhk (veerud A kuni D). Vormindage veerud sobivalt nt. Veerg A on "Kuupäeva aeg", nii et kuupäev ja kellaaeg kuvatakse lahtrites.

Leht 2: Armatuurlaud

Looge armatuurlaua leht lisatud fotode järgi, sisestades allpool loetletud valemid:

  • B2: = loendus (andmed! B: B) -1
  • B3: = B1+TIMEVALUE (CONCATENATE ("00:", tekst (G7, "0"))))
  • B6: = päring (andmed! A2: D, "Vali B järjekord A desc limit 1" järgi)
  • C6: = päring (andmed! A2: D, "Vali C järjekord A desc limit 1 järgi")
  • D6: = päring (andmed! A2: D, "Vali D järjekord A desc limit 1 järgi")
  • B8: = päring (andmed! A2: D, "Valige tellimus B -desc limit 1")
  • C8: = päring (andmed! A2: D, "Valige tellimus C -desc limit 1 järgi")
  • D8: = päring (andmed! A2: D, "Valige tellimus D -desc limit 1")
  • B9: = päring (andmed! A2: D, "Vali B -järjekord B -desc limit 1")
  • C9: = päring (andmed! A2: D, "Vali C -järjekord C -kirjelduse piirangu 1 järgi")
  • D9: = päring (andmed! A2: D, "Vali D järjestus D -piirangu 1 järgi")
  • B11: = päring (andmed! A2: D, "Valige A, kus B ei ole nulljärjestus B -ga asc limit 1")
  • C11: = päring (andmed! A2: D, "Valige A, kus C ei ole nulljärjestus C asc limiidi 1 järgi")
  • D11: = päring (andmed! A2: D, "Valige A, kus D ei ole nulljärjestus D asc limiidi 1 järgi")
  • B12: = päring (andmed! A2: D, "Vali B, kus B ei ole nulljärjestus B asc limit 1 järgi")
  • C12: = päring (andmed! A2: D, "Valige C, kus C ei ole nulljärjestus C asc limiidi 1 järgi")
  • D12: = päring (andmed! A2: D, "Valige D, kus D ei ole nulljärjestus D asc limiidi 1 järgi")
  • G3: = 4+B2*4+29+17
  • G4: = (G2-G3)/G2
  • G6: = G2/4 G8: = G7*G6
  • G9: = (G8/60)/24
  • G10: = G9/365
  • G11: = ((((((G2-G3)/4)*G7)/60)/24/365)

Google'i arvutustabelites võib olla kuni 400 000 lahtrit. Seda kasutatakse koos asjaoluga, et igal lugemisel kasutatakse 4 lahtrit, et arvutada, kui palju ruumi on alles ja millal see otsa saab.

Võimalik, et neid valemeid saab parandada. Ma tegin siin kahte asja, st õppisin päringuvalemit tundma ja kirjutasin seejärel ka mõne valemi nii, et see aitaks mul nende taga olevat loogikat meelde jätta.

"Diagrammiredaktori" ekraanipilt näitab temperatuuri graafiku põhiseadistusi. Teised graafikud loodi sama seadistust kasutades. Ainus erinevus graafikute vahel oli vertikaaltelje minimaalsed väärtused (leitavad vahekaardi kohandamine alt). Kohandamiskaardil on ka muud sätted, nagu juurdepääsunimed, graafiku pealkirjad jne.

Vajame nüüd Google'i skripti, mis võimaldab meil oma andmeid URL -i helistades kirjutada.

Skripti loomine

Märkige Google'i lehe lehe URL -i võti märkide „d /” ja „ / edit” vahele. See on teie-teie-Google'i-lehe jagamise võti-ja seda on vaja allolevas koodis.

Järgmisena avage Tööriistad> Skriptiredaktor ja looge Google App Script, kleepides koodi lisatud GS -faili. Värskendage var ss = SpreadsheetApp.openByUrl ("https://docs.google.com/spreadsheets/d/-Your-Google-Sheet-Sharing-Key–/edit"); teie jagamisvõtme kajastamiseks.

Nüüd avaldage skript, minnes Avalda> Juuruta veebirakendusena.

Kopeerige praeguse veebirakenduse URL ja salvestage see kuhugi, nagu vajate GScriptID (-Your-Google-Script-ID–) ekstraheerimiseks. GScriptID on string "s /" ja " / exec?" Vahel. Veenduge, et rakendusel „Igaüks, isegi anonüümne” oleks juurdepääs rakendusele. Selle protsessi käigus palutakse teil anda mõned õigused. On oluline, et te neid annaksite.

Märkus. Kui muudate oma koodi, peate looma projekti uue versiooni ja selle avaldama, vastasel juhul tabate endiselt sama vana koodi.

Nüüd saate skripti testida, sirvides lehte https://script.google.com/macros/s/-Your-Google-Script-ID–/exec?Temperature=10&Humidity=11&Pressure=12. Iga kord, kui seda linki värskendate, tuleb Google'i lehele lisada uus kirje.

See ülaltoodud on võetud järgmisest õpetusest: https://embedded-lab.com/blog/post-data-google-sheets-using-esp8266/. See õpetus on aga aegunud ja seetõttu on järgmises jaotises seotud Arduino koodi muudetud, et see sobiks uusimate HTTPSRedirecti teekidega.

Arduino kood

Vaadake lisatud koodi.

7. samm: kood - Blynk ja Google'i arvutustabelid

Mõlema maailma parimate võimaluste saamiseks võite kombineerida nii Blynk kui ka Google'i arvutustabelite koodi.

Vaadake lisatud koodi.

8. samm: viimased kommentaarid

Lõplikud kommentaarid
Lõplikud kommentaarid
Lõplikud kommentaarid
Lõplikud kommentaarid

Ükski ülaltoodutest ei ole minu ideed, vaid pigem projekt, mis põhineb teiste ideedel ja tööl. Mulle on meeldinud see ühte kohta kokku tõmmata. kasutades erinevaid tehnoloogiaid ja tööriistu suurepärase lõbusa ja praktilise projekti jaoks. Eriti meeldis mulle õppida, kuidas oma näiteid Google'i arvutustabelisse salvestada. Selle eest soovin tänada ElectronicsGuyt (Sujay Phadke).

Värskenda

Pärast selle projekti lõpetamist pidin muutma oma traadita ühenduse seadeid. Töötasin nüüd teise arvuti kallal. Pärast muudatuste üleslaadimist lakkas projekt töötamast. Pärast mõningaid tõrkeotsinguid jõudsin järeldusele, et sügava une funktsioon ei tööta. Ma viisin projekti koju tagasi ja laadisin selle sinna (sama koodi kasutades) ja see töötas. Seetõttu olen jõudnud järeldusele, et minu lisatud raamatukogudes peab midagi muutunud olema. Seepärast lisasin käesolevasse jaotisse raamatukogud, mis on praegu minu koduarvutis; juhuks, kui keegi teine selle probleemiga kokku puutub.

Soovitan: