Innholdsfortegnelse:

Bygg en lysstyrke -modul med AtHome: 7 trinn
Bygg en lysstyrke -modul med AtHome: 7 trinn

Video: Bygg en lysstyrke -modul med AtHome: 7 trinn

Video: Bygg en lysstyrke -modul med AtHome: 7 trinn
Video: Курятник для несушек своими руками за 4 дня!!! Как построить курятник! 2024, November
Anonim
Bygg en lysstyrke -modul med AtHome
Bygg en lysstyrke -modul med AtHome

AtHome er et fullt prosjekt med åpen kildekode og åpen maskinvare laget av gruppen AtHome fra Epitech, som tar sikte på å utvikle en tilkoblet løsning av flere individuelle sensormoduler som kommuniserer med en egen hostet database som avslører et API som brukes til å mate en smarttelefonapplikasjon og en webapplikasjon. Modulene overvåker innemiljøet i et hus og er i stand til å gi en visuell tilbakemelding til brukeren, som går fra grønt (godt) til rødt (dårlig), og de overførte dataene er synlige for brukeren gjennom seriell kommunikasjon av en modul eller på applikasjonene våre hvis du bruker dem.

Selv om dette prosjektet fortsatt er under en aktiv utvikling, er grunnfunksjonene til modulene våre nå klare og tilsynelatende enkle å bruke for å utvikle tilpassede moduler. Så derfor foreslår jeg at du ser hvordan du bygger din egen enkle modul med dette eksempelet på lysstyrkesmodul.

Disse modulene er i utgangspunktet bygget med et Arduino-kompatibelt kort (en delvis Arduino-kjerne bør være nok så lenge den har Stream, Wire og en UART stream-støtte), en LED (rød eller RGB) som blir rød i tilfelle problemer sensor, en strømforsyning (veggstrømforsyning eller batteri) og et laserskåret etui.

Ja, det er definitivt ikke nytt, det er mange sensorprosjekter, men vi håper andre funksjoner som oppdagelse av helseproblemer, kommunikasjon og lagring av informasjon på en server som er vert for seg selv og visualiseringsprogram vil hjelpe deg. Eller hvis du bare vil overvåke huset ditt, enkle prosjekter eller ikke mindre interessant:)

Trinn 1: Samle komponenter

Samlekomponenter
Samlekomponenter

For dette prosjektet trenger du noen få komponenter for å bygge AtHome -modulen:

  • 1x Arduino-kompatibelt brett: Her bruker jeg en Arduino UNO (men det fungerer også med andre brett som TI Launchpads og ESP8266 boards)
  • 1x sensor: Jeg bruker en TSL2561 lysstyrkesensor (listen over støttede sensorer er tilgjengelig i dokumentasjonen til biblioteket vårt)
  • 1x led: Jeg bruker en Grove Chainable RGB LED her (men det kan også være en enkel rød led eller en NeoPixel)
  • Dupont Wires

Listen over kompatible komponenter er tilgjengelig i dokumentasjonen til prosjektet vårt.

Trinn 2: Installere biblioteket vårt

Installere vårt bibliotek
Installere vårt bibliotek
Installere vårt bibliotek
Installere vårt bibliotek

For å installere biblioteket vårt må du laste ned fra vårt depot (vi publiserer det senere på Arduino IDE -listen og PlatformIO) med denne lenken:

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

Gå deretter inn i Arduino IDE og velg "Skisse> Inkluder bibliotek> Legg til. ZIP -bibliotek …". Velg deretter zip -filen med navnet "artifacts.zip" og klikk på "OK".

Trinn 3: Installere nødvendige biblioteker

Installere nødvendige biblioteker
Installere nødvendige biblioteker
Installere nødvendige biblioteker
Installere nødvendige biblioteker
Installere nødvendige biblioteker
Installere nødvendige biblioteker

For å fungere må biblioteket vårt installere noen andre biblioteker på datamaskinen din:

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

Du kan installere dem gjennom biblioteksjefen for Arduino IDE, ved å gå til "Sketch"> "Inkludere bibliotek"> "Administrer biblioteker …".

I det nye vinduet som åpnes, skriver du navnet på biblioteket du vil installere i den hvite søkefeltet, og klikker deretter på blokken. En "Installer" -knapp vil dukke opp, du trenger bare å klikke på den, og IDE vil laste den ned og installere den for deg.

Trinn 4: Montering av modulen

Montering av modulen
Montering av modulen

Vi begynner med sensoren. Koble en VCC -pinne på TSL2561 til en 5V -pinne på Arduino, en GND -pinne på sensoren til en av GND -pinnen på Arduino og SDA- og SCL -pinnene på sensoren til SDA- og SCL -pinnene på Arduino.. Nå er du ferdig!

Koble nå VCC -pinnen til Grove Chainable RGB LED til 5V -pinnen på Arduino og GND -pinnen til LED -en til den andre GND på Arduino. Hvis du er Arduino som bare en 5V -pinne, kan du bruke et brødbrett for å koble 5v på Arduino til en + rad på brødbrettet og koble alle komponentene dine 5V -pinner på den, eller lodde dem sammen på et stykke stripboard eller bruk wago -kontakter eller hva du foretrekker. Koble nå CI -pinnen til LED -en din til pinnen 7 på din Arduino og DI -pinnen på din LED til pinnen 8 på din Arduino. Hvis du ikke har en slik LED, ikke bekymre deg, det er mulig å bruke den innebygde LED-en på ditt Arduino-kort eller en klassisk med bare en liten endring i koden.

Trinn 5: Skrive Luminosity Module Sketch

Skriver Luminosity Module Sketch
Skriver Luminosity Module Sketch

La oss lage en ny skisse og skrive koden for modulen vår.

Hvis du ikke er interessert i forklaringen på skissen, kan du bare kopiere og lime den inn i Arduino IDE:

#inkludere

bruker LightModule = AtHomeModule; Stream *streams = {& Serial, nullptr}; GroveChainableLED:: Pins grovePins = {7, 8}; GroveChainableLED led (& grovePins); LightModule *modul = LightModule:: getInstance (); void setup () {// legg oppsettskoden her for å kjøre en gang: Serial.begin (9600); module-> setStreams (streams); GroveDigitalLightSensor *lightSensor = ny GroveDigitalLightSensor (); modul-> setSensor (lightSensor); modul-> setDisplay (& led); modul-> oppsett (); } void loop () {// legg hovedkoden din her for å kjøre gjentatte ganger: module-> run (); }

Hvis du vil forstå alt hva denne koden gjør, kan du lese følgende, eller hvis du ikke er interessert, kan du hoppe direkte til neste trinn.

For å begynne må vi inkludere biblioteket vårt i skissen vår ved å skrive denne linjen øverst i skissen:

#inkludere

Nå må vi lage et alias til modulobjektet vi skal bruke. Du kan se det som en boks med flere knapper som brukes til å endre komponentene, starte den, stoppe den, osv. Siden det er en eske bygget av en mal (som vanlig mal vi bruker til prosjekter som mennesker, har den en startbase og kompilatoren til Arduino bygger den endelige koden basert på parametere vi gir ham) som definerer typen som representerer en sensorverdi og antall sensorverdier vi vil beholde i minnet, det er spesifisert i navnet og bør normalt gjentas hver gang vi vil bruke det. Noe som er litt irriterende, derfor knytter vi et nytt navn, et alias, til hele navnet på denne boksen.

La oss for eksempel si at jeg vil at denne boksen skal hete "LightModule", siden den vil bli brukt til å implementere en lysstyrkeovervåkingsmodul, og jeg vil beholde bare 1 verdi om gangen. Lysstyrken er representert i lux som en integrert type av vår TSL2561 -sensor, som er representert som en uint16_t av datamaskiner. Vårt alias vil se slik ut:

bruker LightModule = AtHomeModule;

søkeordet "bruk" betyr at vi oppretter et alias, og navnet vi gir det like etter tilsvarer sekvensen etter "=" -tegnet.

"AtHomeModule" er det virkelige navnet på denne boksen vi gir et nytt navn, og parametrene som definerer verdirepresentasjonen og antall verdier som er lagret i minnet er oppført mellom "".

Når vi senere skal bruke navnet "AtHomeModule", vil Arduino vite at det refererer til det fulle navnet "AtHomeModule".

Hvis du vil at boksen din skal beholde 5 verdier i minnet i stedet for 1, trenger du bare å erstatte "1" med "5", og Arduino vil generere en annen type boks for deg som kan gjøre det du vil. Vær imidlertid oppmerksom på at hvis modulen er programmert til å sende sine verdier før den har tid til effektivt å måle 5 verdier for sensoren, vil du aldri se 5 av dem sendes, da den bare sender de nye verdiene siden forrige opplasting.

Deretter må vi lage en rekke pekere som inneholder pekere på Arduino -strømmer som modulen bruker til å kommunisere, alltid avsluttet av keyworkd "nullptr". Her bruker jeg bare den "serielle" strømmen til Arduino som kommuniserer med datamaskinen via USB -porten, så matrisen ser slik ut:

Stream *streams = {& Serial, nullptr};

"*" Tegnet betyr at typen er en peker (elementets plassering, ikke elementet selv) og "" parentesene betyr at det i Arduino er en matrise, så vi kan sette flere verdier.

Deretter må vi lage vår LED. For å gjøre dette må vi skrive følgende to linjer;

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

GroveChainableLED led (& grovePins);

Hvis du ikke har en Grove RGB LED, men fortsatt vil ha en visuell tilbakemelding, kan du gjøre det med en enkel endring i skissen. Erstatt de to foregående linjene med denne linjen:

Monokromatisk LED -LED (LED_BUILTIN);

I denne konfigurasjonen vil den grønne innebygde lysdioden slås på så lenge den overvåkte verdien er ok for helsen og slås av når den er borte. Hvis du foretrekker å slå den på når den er borte (fordi du for eksempel bruker en rød LED i stedet for den grønne på pinne 13), kan du bruke denne linjen i stedet:

MonochromaticLED LED (LED_BUILTIN, true);

Det neste trinnet er å lage vår modul selv. Det er gjort første gang vi får plasseringen i minnet ved å ringe "getInstance" -metoden, slik:

LightModule *modul = LightModule:: getInstance ();

Deretter må vi sette parametrene i "setup ()" -funksjonen til Arduino, og begynner med å initialisere "Serial" -porten som vanlig i Arduino -skisser:

Serial.begin (9600);

Vi lager lyssensoren ved å skrive denne linjen:

GroveDigitalLightSensor *lightSensor = ny GroveDigitalLightSensor ();

Deretter forteller vi modulen vår å bruke vårt utvalg av pekere på Arduino Stream for å kommunisere gjennom dem:

module-> setStreams (streams);

Vi forteller også modulen vår å bruke lyssensoren til å overvåke lysintensiteten der modulen er:

modul-> setSensor (lightSensor);

Vi forteller modulen vår å bruke vår LED for å gi oss en visuell tilbakemelding:

modul-> setDisplay (& led);

Til slutt forteller vi modulen vår at den er klar til å gjøre enhver intern konfigurasjon den trenger å gjøre ved å kalle sin egen "oppsett" -funksjon:

modul-> oppsett ();

Vårt siste trinn er nå å kalle "run ()" -funksjonen til modulen vår, som er designet for å bli kalt ved hver iterasjon av "loop" -funksjonen til Arduino ved å skrive denne linjen inne i "loop" -funksjonen:

modul-> run ();

Nå er skissen vår endelig klar til å laste opp til Arduino og teste modulen vår!

Trinn 6: Testing av vår AtHome -modul

Testing av vår AtHome -modul
Testing av vår AtHome -modul
Testing av vår AtHome -modul
Testing av vår AtHome -modul

For å laste opp skissen til Arduino, velg Arduino UNO -kortet ved å gå i "Verktøy"> "Port"> "[COMx eller/dev/x] (Arduino/Genuino UNO)".

Det siste, bare klikk på "Last opp" -knappen (sirkelknappen med en pil som peker til høyre, det andre ikonet på verktøylinjen) for å laste opp skissen i brettet ditt.

Det er gjort! Nå skal modulen din fungere og sende verdier til datamaskinen din synlig i Serial Monitor of Arduino. Du kan sjekke det ved å åpne "Serial Monitor" av Arduino i "Verktøy" -menyen, og du bør ha en utgang som ser ut som det andre tittelbildet i dette trinnet:)

Trinn 7: Bygg en sak for modulen

Bygg en sak for modulen
Bygg en sak for modulen

Du kan bygge en enkel eske for modulen din ved å laserskjære den i en 3 mm kryssfinerplank.

For å lage boksene våre bruker vi makercase til å forberede en mal med de ønskede dimensjonene som vi tilpasser senere. Du finner svg -filen til lysstyrkesmodulen vedlagt dette trinnet.

Lim deretter ansiktene sammen bortsett fra en slik at du kan åpne den senere, sette kretsen inne og stikke LED -en i hullet på saken (vi bruker gjennomsiktig tape for å fylle hullet og spre lyset i tillegg til å holde LED -en foran av det).

Bare legg til et batteri for å drive Arduino, lukk saken og modulen er klar og skal se bra ut:)

Anbefalt: