Sisällysluettelo:

Luo kirkkausmoduuli AtHomen avulla: 7 vaihetta
Luo kirkkausmoduuli AtHomen avulla: 7 vaihetta

Video: Luo kirkkausmoduuli AtHomen avulla: 7 vaihetta

Video: Luo kirkkausmoduuli AtHomen avulla: 7 vaihetta
Video: Simplicity | Interior Design 2024, Marraskuu
Anonim
Rakenna luminanssimoduuli AtHomen avulla
Rakenna luminanssimoduuli AtHomen avulla

AtHome on täysin avoimen lähdekoodin ja avoimen laitteiston opiskelijaprojekti, jonka Epitech-ryhmä AtHome on tehnyt ja jonka tavoitteena on kehittää yhdistetty ratkaisu useista yksittäisistä anturimoduuleista, jotka kommunikoivat itse isännöidyn tietokannan kanssa ja paljastavat älypuhelinsovelluksen ja verkkosovelluksen syöttämiseen käytettävän sovellusliittymän. Moduulit valvovat talon sisäympäristöä ja pystyvät antamaan käyttäjälle visuaalista palautetta vihreästä (hyvä) punaiseksi (huono), ja käyttäjä näkee lähetetyt tiedot moduulin sarjaliikenteen kautta tai sovelluksistamme, jos käytät niitä.

Vaikka tätä projektia kehitetään edelleen aktiivisesti, moduuliemme perustoiminnot ovat nyt valmiita ja oletettavasti helppokäyttöisiä mukautettujen moduulien kehittämiseen. Siksi ehdotan, että näet kuinka rakentaa oma yksinkertainen moduulisi tällä kirkkausmoduulin esimerkillä.

Nämä moduulit on pohjimmiltaan rakennettu Arduino-yhteensopivalle levylle (osittaisen Arduino-ytimen pitäisi riittää, kunhan siinä on Stream-, Wire- ja UART-stream-tuki), LED (punainen tai RGB), joka muuttuu punaiseksi ongelman sattuessa, anturi, virtalähde (seinävirtalähde tai akku) ja laserleikattu kotelo.

Kyllä, se ei todellakaan ole uusi, anturiprojekteja on paljon, mutta toivomme, että muut ominaisuudet, kuten terveysongelmien havaitseminen, viestintä ja tietojen tallentaminen itse isännöidylle palvelimelle ja visualisointisovellukselle, auttavat sinua. Tai jos haluat vain seurata kotiasi, yksinkertaisia projekteja tai yhtä mielenkiintoisia:)

Vaihe 1: Osien kerääminen

Osien kerääminen
Osien kerääminen

Tätä projektia varten tarvitset muutamia komponentteja AtHome -moduulin rakentamiseen:

  • 1x Arduino-yhteensopiva kortti: Tässä käytän Arduino UNO: ta (mutta se toimii myös muiden levyjen, kuten TI Launchpadien ja ESP8266-levyjen kanssa)
  • 1x anturi: Käytän TSL2561 -kirkkausanturia (tuettujen antureiden luettelo on kirjastomme dokumentaatiossa)
  • 1x led: Käytän tässä Grove Chainable RGB LEDiä (mutta se voi olla myös yksinkertainen punainen led tai NeoPixel)
  • Dupont -johdot

Luettelo yhteensopivista komponenteista löytyy projektimme dokumentaatiosta.

Vaihe 2: Kirjastomme asentaminen

Kirjastomme asentaminen
Kirjastomme asentaminen
Kirjastomme asentaminen
Kirjastomme asentaminen

Jos haluat asentaa kirjastomme, sinun on ladattava arkistostamme (julkaisemme sen myöhemmin Arduino IDE -luettelossa ja PlatformIO: ssa) tämän linkin avulla:

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

Siirry sitten Arduino IDE: hen ja valitse "Luonnos> Sisällytä kirjasto> Lisää. ZIP -kirjasto …". Valitse sitten zip -tiedosto nimeltä "artifacts.zip" ja napsauta "OK".

Vaihe 3: Tarvittavien kirjastojen asentaminen

Vaadittujen kirjastojen asentaminen
Vaadittujen kirjastojen asentaminen
Vaadittujen kirjastojen asentaminen
Vaadittujen kirjastojen asentaminen
Vaadittujen kirjastojen asentaminen
Vaadittujen kirjastojen asentaminen

Toimiakseen kirjastomme tarvitsee joidenkin muiden kirjastojen asennuksen tietokoneellesi:

  • Arkhipenko TaskScheduler -kirjasto
  • SEEED Studio Grove Digital Light Sensor -kirjasto
  • SEEED Studio Grove Chainable RGB LED -kirjasto
  • Adafruit NeoPixel -kirjasto

Voit asentaa ne Arduino IDE: n kirjastonhoitajan kautta valitsemalla "Sketch"> "Include Library"> "Manage Libraries…".

Kirjoita avautuvaan uuteen ikkunaan valkoiseen hakupalkkiin asennettavan kirjaston nimi ja napsauta sen lohkoa. "Asenna" -painike tulee näkyviin, sinun tarvitsee vain napsauttaa sitä ja IDE lataa sen ja asentaa sen puolestasi.

Vaihe 4: Moduulin kokoaminen

Moduulin kokoaminen
Moduulin kokoaminen

Aloitamme anturilla. Kytke johdon kautta TSL2561: n VCC -nasta Arduinon 5V -nastaan, anturin GND -nasta yhteen Arduinon GND -nastasta ja anturin SDA- ja SCL -nastat Arduinon SDA- ja SCL -nastoihin. Nyt olet valmis!

Liitä nyt Grove Chainable RGB LED: n VCC -nasta Arduinon 5 V: n napaan ja LED: n GND -nasta Arduinon toiseen GND: hen. Jos käytät Arduinoa vain yhtenä 5 V: n tapana, voit liittää Arduinon 5 V: n leipälaudan + leipälauta + -riville ja liittää kaikki komponentit 5 V: n nastat siihen tai juottaa ne yhteen nauhalle tai käytä wago -liittimiä tai mitä haluat. Liitä nyt LED -valon CI -nasta Arduinon nastaan 7 ja LED -valon DI -nasta Arduinon nastaan 8. Jos sinulla ei ole tällaista LED-valoa, älä huoli, voit käyttää Arduino-kortin sisäänrakennettua LED-valoa tai klassista LEDiä vain pienellä muutoksella koodissa.

Vaihe 5: Kirkkausmoduulin luonnoksen kirjoittaminen

Kirkkausmoduulin luonnoksen kirjoittaminen
Kirkkausmoduulin luonnoksen kirjoittaminen

Luodaan uusi luonnos ja kirjoitetaan moduulin koodi.

Jos et ole kiinnostunut luonnoksen selityksestä, voit kopioida ja liittää sen Arduino IDE -laitteeseesi:

#sisältää

käyttäen LightModule = AtHomeModule; Stream *stream = {& Sarja, nullptr}; GroveChainableLED:: Nastat grovePins = {7, 8}; GroveChainableLED -led (& grovePins); LightModule *module = LightModule:: getInstance (); void setup () {// laita asennuskoodi tähän, jotta se suoritetaan kerran: Serial.begin (9600); moduuli-> setStreams (virrat); GroveDigitalLightSensor *lightSensor = uusi GroveDigitalLightSensor (); moduuli-> setSensor (lightSensor); moduuli-> setDisplay (& led); moduuli-> asennus (); } void loop () {// laita pääkoodisi tänne toistettavaksi: module-> run (); }

Jos haluat ymmärtää kaiken, mitä tämä koodi tekee, voit lukea seuraavan tai jos et ole kiinnostunut, voit siirtyä suoraan seuraavaan vaiheeseen.

Aluksi meidän on sisällytettävä kirjasto luonnokseen kirjoittamalla tämä rivi luonnoksen yläosaan:

#sisältää

Nyt meidän on luotava alias käyttämämme moduuliobjektille. Voit nähdä sen laatikkona, jossa on useita painikkeita, joiden avulla voit muuttaa sen osia, käynnistää sen, pysäyttää sen … jne. Koska se on laatikko, joka on rakennettu mallilla (kuten tavallinen malli, jota käytämme projekteina ihmisinä, sillä on käynnistyspohja ja Arduinon kääntäjä rakentaa lopullisen koodin hänelle antamiemme parametrien perusteella), joka määrittää tyypin, joka edustaa anturin arvoa ja kuinka monta anturiarvoa haluamme säilyttää muistissa, se on määritetty sen nimessä ja se tulisi normaalisti toistaa joka kerta, kun haluamme käyttää sitä. Mikä on hieman ärsyttävää, siksi liitämme uuden nimen, aliaksen, tämän laatikon koko nimeen.

Oletetaan esimerkiksi, että haluan tämän laatikon nimeksi "LightModule", koska sitä käytetään kirkkaudenvalvontamoduulin toteuttamiseen ja haluan säilyttää vain yhden arvon kerrallaan. TSL2561 -anturi, jota tietokoneet edustavat uint16_t -ominaisuutena, valaisee luxeissa kiinteänä tyypinä. Aliaksemme näyttää tältä:

käyttäen LightModule = AtHomeModule;

"käyttämällä" -avainsana tarkoittaa, että luomme aliaksen ja nimi, jonka annamme sille heti, vastaa "=" -merkin jälkeistä järjestystä.

"AtHomeModule" on tämän laatikon oikea nimi, ja me annamme uuden nimen, ja parametrit, jotka määrittelevät arvon esityksen ja muistissa olevien arvojen määrän, on lueteltu välillä "".

Nyt kun käytämme myöhemmin nimeä "AtHomeModule", Arduino tietää sen viittaavan koko nimeen "AtHomeModule".

Jos haluat, että laatikkosi voi säilyttää 5 arvoa muistissa yhden sijasta, sinun tarvitsee vain korvata "1" arvolla "5" ja Arduino luo sinulle erityyppisen laatikon, joka pystyy tekemään mitä haluat. Huomaa kuitenkin, että jos moduuli on ohjelmoitu lähettämään arvonsa ennen kuin sillä on aikaa mitata tehokkaasti 5 anturin arvoa, et koskaan näe 5: tä niistä lähetettynä, koska se lähettää vain uudet arvot viimeisen latauksen jälkeen.

Seuraavaksi meidän on luotava joukko osoittimia, jotka sisältävät osoittimia Arduino -virroissa, joita moduuli käyttää kommunikointiin ja jotka aina lopettaa avaintyökalu "nullptr". Tässä käytän vain Arduinon "sarja" -virtaa, joka kommunikoi tietokoneen kanssa USB -portin kautta, joten ryhmä näyttää tältä:

Stream *stream = {& Sarja, nullptr};

"*" -Merkki tarkoittaa, että tyyppi on osoitin (elementin sijainti, ei itse elementti), ja "" suluissa tarkoittaa Arduinossa se on taulukko, joten voimme laittaa useita arvoja.

Seuraavaksi meidän on luotava LED. Tätä varten meidän on kirjoitettava seuraavat kaksi riviä;

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

GroveChainableLED -led (& grovePins);

Jos sinulla ei ole Grove RGB -valoa, mutta haluat silti visuaalista palautetta, voit tehdä sen yksinkertaisella luonnoksen muutoksella. Korvaa kaksi edellistä riviä tällä rivillä:

Yksivärinen LED -led (LED_BUILTIN);

Tässä kokoonpanossa vihreä sisäänrakennettu LED-valo syttyy niin kauan kuin valvottu arvo on terveydelle sopiva ja sammuu, kun se ei ole sidoksissa. Jos haluat sen kytkeytyvän päälle, kun se ei ole sidoksissa (koska käytät esimerkiksi punaista LEDiä vihreän sijasta nastassa 13), voit käyttää tätä riviä:

Yksivärinen LED -led (LED_BUILTIN, totta);

Seuraava askel on luoda moduuli itse. Se tehdään ensimmäisen kerran, kun saamme sen sijainnin muistiin kutsumalla "getInstance" -menetelmää, kuten tämä:

LightModule *module = LightModule:: getInstance ();

Sitten meidän on asetettava parametrit Arduinon "setup ()" -funktiossa aluksi alustamalla "Sarja" -portti tavalliseen tapaan Arduinon luonnoksissa:

Sarja.alku (9600);

Luomme valoanturin kirjoittamalla tämän rivin:

GroveDigitalLightSensor *lightSensor = uusi GroveDigitalLightSensor ();

Sitten kehotamme moduuliamme käyttämään Arduino Streamin osoiteryhmäämme kommunikoimaan niiden kautta:

moduuli-> setStreams (virrat);

Kehotamme myös moduuliamme käyttämään valotunnistinta valon voimakkuuden valvomiseen, kun moduuli on:

moduuli-> setSensor (lightSensor);

Kehotamme moduuliamme käyttämään LED -valoa antaakseen meille visuaalisen palautteen:

moduuli-> setDisplay (& led);

Lopuksi kerromme moduulille, että se on valmis tekemään kaikki tarvittavat sisäiset määritykset kutsumalla omaa "setup" -toimintoa:

moduuli-> asennus ();

Viimeinen vaiheemme on nyt kutsua moduulimme "run ()" -funktio, joka on suunniteltu kutsumaan joka kerta Arduinon "loop" -funktion iteraatiolla kirjoittamalla tämä rivi "loop" -funktion sisään:

moduuli-> run ();

Nyt luonnoksemme on vihdoin valmis ladattavaksi Arduinolle ja testattava moduuliamme!

Vaihe 6: AtHome -moduulin testaaminen

Testaamme AtHome -moduuliamme
Testaamme AtHome -moduuliamme
Testaamme AtHome -moduuliamme
Testaamme AtHome -moduuliamme

Voit lähettää luonnoksen Arduinolle valitsemalla Arduino UNO -korttisi valitsemalla "Työkalut"> "Portti"> "[COMx tai/dev/x] (Arduino/Genuino UNO)".

Viimeiseksi klikkaa "Lataa" -painiketta (ympyräpainike, jossa nuoli osoittaa oikealle, työkalupalkin toinen kuvake) ladataksesi luonnoksen taulullesi.

Se on tehty! Nyt moduulin pitäisi toimia ja lähettää arvot tietokoneellesi, jotka näkyvät Arduinon sarjamonitorissa. Voit tarkistaa sen avaamalla Arduinon "Sarjamonitori" "Työkalut" -valikosta ja sinulla pitäisi olla tulos, joka näyttää tämän vaiheen toiselta otsikkokuvalta:)

Vaihe 7: Kotelon rakentaminen moduulille

Kotelon rakentaminen moduulille
Kotelon rakentaminen moduulille

Voit rakentaa yksinkertaisen laatikkokotelon moduulillesi leikkaamalla sen laserilla 3 mm: n vanerilevyyn.

Laatikkokoteloiden valmistuksessa käytämme makercasea mallin halutun kokoiseksi, jota mukautamme myöhemmin. Löydät tähän vaiheeseen liitetyn kirkkausmoduulin svg -tiedoston.

Liimaa sitten kasvot yhteen lukuun ottamatta yhtä, jotta voit avata sen myöhemmin, laittaa virtapiirin sisälle ja kiinnittää LEDin kotelon reikään (käytämme läpinäkyvää teippiä reiän täyttämiseen ja hajottamaan valoa sen lisäksi, että kiinnitämme LED: n eteen siitä).

Lisää nyt vain akku Arduinon virtalähteeksi, sulje kotelo ja moduuli on valmis ja sen pitäisi näyttää hyvältä:)

Suositeltava: