Turinys:

Sukurkite šviesumo modulį naudodami „AtHome“: 7 žingsniai
Sukurkite šviesumo modulį naudodami „AtHome“: 7 žingsniai

Video: Sukurkite šviesumo modulį naudodami „AtHome“: 7 žingsniai

Video: Sukurkite šviesumo modulį naudodami „AtHome“: 7 žingsniai
Video: 91 aprašo vaizdo įrašas Vieno šviesos diodo valdymas naudojant skaitmeninį išėjimą 2024, Lapkritis
Anonim
Sukurkite šviesumo modulį naudodami „AtHome“
Sukurkite šviesumo modulį naudodami „AtHome“

„AtHome“yra visiškai atviro šaltinio ir atviros aparatūros studentų projektas, kurį sukūrė grupė „AtHome“iš „Epitech“, kurio tikslas-sukurti kelių atskirų jutiklių modulių, sujungtų su savarankiškai priglobta duomenų baze, sprendimą, atskleidžiantį API, naudojamą išmaniojo telefono programai ir žiniatinklio programai tiekti. Moduliai stebi namo vidaus aplinką ir gali suteikti naudotojui vizualinį grįžtamąjį ryšį, nuo žalios (geros) iki raudonos (blogos), o perduotus duomenis vartotojas mato per serijinį modulio ryšį arba mūsų programas, jei jas naudojate.

Nors šis projektas vis dar aktyviai tobulinamas, pagrindinės mūsų modulių funkcijos dabar yra paruoštos ir tariamai lengvai naudojamos kuriant pasirinktinius modulius. Taigi, todėl siūlau jums pamatyti, kaip sukurti savo paprastą modulį naudojant šį šviesumo modulio pavyzdį.

Šie moduliai iš esmės yra sukurti su „Arduino“suderinama plokšte (dalinės „Arduino“šerdies turėtų pakakti, jei ji turi „Stream“, „Wire“ir „UART“srauto palaikymą), šviesos diodas (raudonas arba RGB), jei iškyla problema, jutiklis, maitinimo šaltinis (sieninis maitinimo šaltinis arba akumuliatorius) ir lazeriu supjaustytas dėklas.

Taip, tai tikrai nėra nauja, yra daug jutiklių projektų, tačiau tikimės, kad jums padės kitos funkcijos, tokios kaip sveikatos problemų aptikimas, bendravimas ir informacijos saugojimas savarankiškai priglobtame serveryje ir vizualizacijos programa. Arba jei norite tiesiog stebėti savo namus, paprastus projektus ar ne mažiau įdomius:)

1 žingsnis: Surinkite komponentus

Surinkimo komponentai
Surinkimo komponentai

Šiam projektui jums reikės kelių komponentų, kad sukurtumėte „AtHome“modulį:

  • 1x „Arduino“suderinama plokštė: čia aš naudosiu „Arduino UNO“(tačiau ji taip pat veikia su kitomis plokštėmis, tokiomis kaip „TI Launchpad“ir ESP8266 plokštės)
  • 1x jutiklis: naudosiu šviesumo jutiklį TSL2561 (palaikomų jutiklių sąrašą rasite mūsų bibliotekos dokumentuose)
  • 1x LED: čia naudosiu „Grove Chainable RGB“šviesos diodą (tačiau tai taip pat gali būti paprastas raudonas šviesos diodas arba „NeoPixel“)
  • Dupont laidai

Suderinamų komponentų sąrašą rasite mūsų projekto dokumentuose.

2 veiksmas: mūsų bibliotekos įdiegimas

Mūsų bibliotekos diegimas
Mūsų bibliotekos diegimas
Mūsų bibliotekos diegimas
Mūsų bibliotekos diegimas

Norėdami įdiegti mūsų biblioteką, turėsite atsisiųsti iš mūsų saugyklos (vėliau ją paskelbsime „Arduino IDE“sąraše ir „PlatformIO“) naudodami šią nuorodą:

gitlab.com/Woodbox/Framework/-/jobs/artifacts/master/download?job=deploy

Tada eikite į „Arduino IDE“ir pasirinkite „Eskizas> Įtraukti biblioteką> Pridėti. ZIP biblioteką …“. Tada pasirinkite ZIP failą pavadinimu „artifacts.zip“ir spustelėkite „Gerai“.

3 veiksmas: reikiamų bibliotekų diegimas

Reikiamų bibliotekų diegimas
Reikiamų bibliotekų diegimas
Reikiamų bibliotekų diegimas
Reikiamų bibliotekų diegimas
Reikiamų bibliotekų diegimas
Reikiamų bibliotekų diegimas

Kad mūsų biblioteka veiktų, jūsų kompiuteryje turi būti įdiegtos kitos bibliotekos:

  • Arkhipenko „TaskScheduler“biblioteka
  • SEEED „Studio Grove“skaitmeninio šviesos jutiklio biblioteka
  • „SEEED Studio Grove“grandininė RGB LED biblioteka
  • „Adafruit NeoPixel“biblioteka

Galite juos įdiegti per „Arduino IDE“bibliotekos tvarkyklę, eidami į „Eskizas“> „Įtraukti biblioteką“> „Tvarkyti bibliotekas…“.

Atsidariusiame naujame lange į baltą paieškos juostą įrašykite norimos įdiegti bibliotekos pavadinimą, tada spustelėkite jos bloką. Pasirodys mygtukas „Įdiegti“, tereikia jį spustelėti, o IDE jį atsisiųs ir įdiegs.

4 žingsnis: modulio surinkimas

Modulio surinkimas
Modulio surinkimas

Pradėsime nuo jutiklio. Prijunkite per laidą TSL2561 VCC kaištį prie „Arduino“5 V kaiščio, jutiklio GND kaištį prie vieno iš „Arduino“GND kaiščio ir jutiklio SDA ir SCL kaiščius prie „Arduino“SDA ir SCL kaiščių. Dabar baigėte!

Dabar prijunkite „Grove Chainable RGB LED“VCC kaištį prie „Arduino“5 V kaiščio ir šviesos diodo GND kaiščio prie antrojo „Arduino“GND. Jei esate „Arduino“kaip tik vienas 5V kaištis, galite naudoti duonos lentą, kad prijungtumėte „Arduino“5v prie + lentos + eilės ir prijungtumėte visus savo komponentus 5V kaiščius ant jo arba lituojate juos ant juostos arba naudokite „wago“jungtis ar ką tik norite. Dabar prijunkite savo šviesos diodo CI kaištį prie „Arduino“7 kaiščio ir šviesos diodo DI kaištį prie „Arduino“8 kaiščio. Jei neturite tokio šviesos diodo, nesijaudinkite, galima naudoti įmontuotą „Arduino“plokštės šviesos diodą arba klasikinį, tik šiek tiek pakeitus kodą.

5 žingsnis: parašykite šviesumo modulio eskizą

Šviesumo modulio eskizo rašymas
Šviesumo modulio eskizo rašymas

Sukurkime naują eskizą ir parašykime modulio kodą.

Jei nesidomite eskizo paaiškinimu, galite tiesiog nukopijuoti ir įklijuoti jį į „Arduino IDE“:

#įtraukti

naudojant LightModule = AtHomeModule; Srautas *srautai = {& Serijinis, nullptr}; GroveChainableLED:: Pins grovePins = {7, 8}; „GroveChainableLED“LED (& grovePins); LightModule *modulis = LightModule:: getInstance (); void setup () {// įdėkite čia savo sąrankos kodą, kad jis būtų paleistas vieną kartą: Serial.begin (9600); modulis-> setStreams (srautai); GroveDigitalLightSensor *lightSensor = naujas GroveDigitalLightSensor (); modulis-> setSensor (lightSensor); modulis-> setDisplay (& led); modulis-> sąranka (); } void loop () {// čia įdėkite pagrindinį kodą, kad jis būtų paleistas pakartotinai: module-> run (); }

Jei norite suprasti, ką daro šis kodas, galite perskaityti toliau pateiktą informaciją arba, jei nesidomite, galite pereiti tiesiai prie kito veiksmo.

Norėdami pradėti, į savo eskizą turime įtraukti savo biblioteką, parašydami šią eilutę eskizo viršuje:

#įtraukti

Dabar turime sukurti modulio objekto, kurį naudosime, slapyvardį. Jį galite pamatyti kaip dėžutę su keliais mygtukais, naudojamais jos komponentams pakeisti, paleisti, sustabdyti ir pan. Kadangi tai dėžutė, sukurta pagal šabloną (kaip ir įprastas šablonas, kurį naudojame projektams kaip žmonėms, jis turi pradinę bazę, o „Arduino“kompiliatorius sukuria galutinį kodą pagal jam suteiktus parametrus), apibrėždamas tipą, atspindintį jutiklio vertę ir jutiklių reikšmių, kurias norime išsaugoti atmintyje, skaičių, jis nurodytas pavadinime ir paprastai turėtų būti kartojamas kiekvieną kartą, kai norime jį naudoti. Tai šiek tiek erzina, todėl prie viso šio langelio pavadinimo susiesime naują pavadinimą, slapyvardį.

Tarkime, pavyzdžiui, noriu, kad šis langelis būtų pavadintas „LightModule“, nes jis bus naudojamas šviesumo stebėjimo moduliui įgyvendinti, o aš noriu išlaikyti tik 1 reikšmę vienu metu. Šviesumą liuksais kaip neatsiejamą tipą vaizduoja mūsų TSL2561 jutiklis, kurį kompiuteriai vaizduoja kaip uint16_t. Mūsų slapyvardis atrodys taip:

naudojant LightModule = AtHomeModule;

„naudojant“raktinis žodis reiškia, kad mes sukuriame slapyvardį, o pavadinimas, kurį jam suteikiame iškart, atitinka seką po simbolio „=“.

„AtHomeModule“yra tikrasis šio langelio pavadinimas, kuriam suteikiame naują pavadinimą, o parametrai, apibrėžiantys reikšmių atvaizdavimą ir atmintyje saugomų verčių skaičių, yra išvardyti tarp „“.

Dabar, kai vėliau naudosime pavadinimą „AtHomeModule“, „Arduino“žinos, kad tai reiškia visą pavadinimą „AtHomeModule“.

Jei norite, kad jūsų dėžutė atmintyje galėtų išsaugoti 5 vertes, o ne 1, jums tiesiog reikia pakeisti „1“į „5“ir „Arduino“sukurs jums kitokio tipo dėžutę, galinčią daryti tai, ko norite. Tačiau atminkite, kad jei modulis yra užprogramuotas siųsti savo vertes, kol nespėja efektyviai išmatuoti 5 jutiklio reikšmių, niekada nematysite, kad 5 iš jų būtų siunčiamos, nes jis siunčia tik naujas reikšmes po paskutinio įkėlimo.

Toliau turime sukurti rodyklių, kuriose yra rodyklių, esančių „Arduino“srautuose, kuriuos modulis naudoja bendravimui, masyvą, kurį visada užbaigia raktinis „nullptr“. Čia aš naudoju tik „Arduino“serijinį srautą, kuris bendrauja su kompiuteriu per USB prievadą, todėl masyvas atrodo taip:

Srautas *srautai = {& Serijinis, nullptr};

„*“Simbolis reiškia, kad tipas yra rodyklė (elemento vieta, o ne pats elementas), o „“skliausteliuose reiškia, kad „Arduino“tai yra masyvas, todėl galime pateikti kelias reikšmes.

Toliau turime sukurti savo LED. Norėdami tai padaryti, turime parašyti šias dvi eilutes;

GroveChainableLED:: Pins grovePins = {7, 8};

„GroveChainableLED“LED (& grovePins);

Jei neturite „Grove RGB“šviesos diodo, bet vis tiek norite vizualių atsiliepimų, galite tai padaryti paprasčiausiai pakeisdami eskizą. Pakeiskite dvi ankstesnes eilutes šia eilute:

Vienspalvis LED (LED_BUILTIN);

Šioje konfigūracijoje žalias įmontuotas šviesos diodas degs tol, kol stebima vertė bus tinkama sveikatai, ir išsijungs, kai ji nebebus sujungta. Jei pageidaujate, kad jis įsijungtų, kai jis nebeveikia (nes, pavyzdžiui, naudojate raudoną šviesos diodą, o ne žalią 13 kaištyje), galite naudoti šią eilutę:

Monochromatinis LED diodas (LED_BUILTIN, tiesa);

Kitas žingsnis yra sukurti mūsų modulį. Tai daroma pirmą kartą, kai gauname savo vietą atmintyje, paskambinę „getInstance“metodu, taip:

LightModule *modulis = LightModule:: getInstance ();

Tada turime nustatyti parametrus „Arduino“funkcijoje „setup ()“, pirmiausia inicijuodami „Serial“prievadą, kaip įprasta „Arduino“eskizuose:

Serial.begin (9600);

Mes sukuriame šviesos jutiklį rašydami šią eilutę:

GroveDigitalLightSensor *lightSensor = naujas GroveDigitalLightSensor ();

Tada mes liepiame savo moduliui naudoti mūsų rodyklių rinkinį „Arduino Stream“ir bendrauti per juos:

modulis-> setStreams (srautai);

Mes taip pat sakome savo moduliui, kad jis naudotų mūsų šviesos jutiklį, kad stebėtų šviesos intensyvumą ten, kur yra modulis:

modulis-> setSensor (lightSensor);

Mes sakome savo moduliui, kad jis naudotų mūsų šviesos diodą, kad suteiktų mums vizualinį atsiliepimą:

modulis-> setDisplay (& led);

Galiausiai mes sakome savo moduliui, kad jis yra pasirengęs atlikti bet kokią vidinę konfigūraciją, kurią reikia atlikti, iškviesdamas savo „sąrankos“funkciją:

modulis-> sąranka ();

Paskutinis mūsų žingsnis yra iškviesti mūsų modulio funkciją „run ()“, kuri yra sukurta taip, kad būtų iškviesta kiekvieną kartą kartojant „Arduino“funkcijos „ciklo“funkciją, įrašant šią eilutę funkcijos „kilpa“viduje:

modulis-> paleisti ();

Dabar mūsų eskizas pagaliau paruoštas įkelti į „Arduino“ir išbandyti mūsų modulį!

6 žingsnis: išbandykite „AtHome“modulį

Mūsų „AtHome“modulio testavimas
Mūsų „AtHome“modulio testavimas
Mūsų „AtHome“modulio testavimas
Mūsų „AtHome“modulio testavimas

Norėdami įkelti eskizą į „Arduino“, pasirinkite savo „Arduino UNO“plokštę, eidami į „Tools“> „Port“> „[COMx or/dev/x] (Arduino/Genuino UNO)“.

Paskutinis dalykas, tiesiog spustelėkite mygtuką „Įkelti“(apskritimo mygtukas su rodykle, nukreipta į dešinę, antroji įrankių juostos piktograma) ir įkelkite eskizą į savo lentą.

Padaryta! Dabar jūsų modulis turėtų veikti ir siunčia reikšmes į kompiuterį, matomas „Arduino“serijos monitoriuje. Tai galite patikrinti atidarę „Arduino“serijos monitorių meniu „Įrankiai“ir turėsite išvestį, panašią į antrąją šio veiksmo pavadinimo nuotrauką:)

7 žingsnis: modulio korpuso sukūrimas

Modulio dėklo kūrimas
Modulio dėklo kūrimas

Galite sukurti paprastą dėžutės dėklą savo moduliui, pjaudami jį lazeriu į 3 mm faneros lentą.

Norėdami gaminti dėžutes, mes naudojame makercase, norėdami paruošti norimų matmenų šabloną, kurį vėliau pritaikysime. Prie šio veiksmo rasite šviesumo modulio svg failą.

Tada tiesiog klijuokite veidus, išskyrus vieną, kad vėliau galėtumėte jį atidaryti, įdėkite grandinę į vidų ir įkiškite šviesos diodą į korpuso skylę (mes naudojame skaidrią juostą, kad užpildytume skylę ir išsklaidytume šviesą, be to, kad priklijuotumėte LED priekyje) iš jo).

Dabar tiesiog pridėkite bateriją, kad įjungtumėte „Arduino“, uždarykite dėklą ir jūsų modulis yra paruoštas ir turėtų atrodyti gerai:)

Rekomenduojamas: