Innholdsfortegnelse:
- Trinn 1: Samle komponenter
- Trinn 2: Installere biblioteket vårt
- Trinn 3: Installere nødvendige biblioteker
- Trinn 4: Montering av modulen
- Trinn 5: Skrive Luminosity Module Sketch
- Trinn 6: Testing av vår AtHome -modul
- Trinn 7: Bygg en sak for modulen
Video: Bygg en lysstyrke -modul med AtHome: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
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
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
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
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
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
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
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
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:
Arduino Nano -klokke med adaptiv lysstyrke ved bruk av prototype PCB fra NextPCB.com: 11 trinn
Arduino Nano Clock With Adaptive Brightness Using Prototype PCB From NextPCB.com: Alle ville ha en klokke som viser tid og dato sammen Så i dette prosjektet skal jeg vise deg hvordan du kan bygge en arduino nano klokke med adaptiv lysstyrke ved hjelp av RTC og et design PCB fra NextPCB
TESS-W natthimmels lysstyrke fotometer: 8 trinn (med bilder)
TESS-W Night Sky Brightness Photometer: TESS-W er et fotometer designet for å måle og kontinuerlig overvåke natthimmels lysstyrke for lysforurensningsstudier. Det ble opprettet under STARS4ALL H2020 European Project med en åpen design (maskinvare og programvare). TESS-W fotometer
Diskret vekslende analog LED Fader med lineær lysstyrke kurve: 6 trinn (med bilder)
Diskret vekslende analog LED Fader med lineær lysstyrke kurve: De fleste kretsene for å falme/dimme en LED er digitale kretser som bruker en PWM -utgang fra en mikrokontroller. Lysstyrken til LED -en kontrolleres ved å endre driftssyklusen til PWM -signalet. Snart oppdager du at når du endrer arbeidssyklusen lineært
Lys opp LED -skilt (lysstyrke aktivert): 4 trinn (med bilder)
Lys opp LED -skilt (lysstyrke aktivert): I denne instruksjonsboken har jeg dokumentert hvordan jeg bygger et LED -skilt med en mørke / lyssensor og en innebygd PWM -dimmerkrets. Jeg kjedet meg over julen og loddet sammen et raskt prosjekt inspirert av youtube introvideo introer for &G;
Lag en lommelykt med justerbar lysstyrke !: 5 trinn
Lag en lommelykt med justerbar lysstyrke !: Bare gjør den, enten den er for å lete etter eller skynde seg ut, perfekt og lommestørrelse