Sadržaj:

Izradite modul svjetline sa AtHome: 7 koraka
Izradite modul svjetline sa AtHome: 7 koraka

Video: Izradite modul svjetline sa AtHome: 7 koraka

Video: Izradite modul svjetline sa AtHome: 7 koraka
Video: P36 SMARTWATCH: что нужно знать // технический обзор 2024, Studeni
Anonim
Izgradite modul svjetline s AtHomeom
Izgradite modul svjetline s AtHomeom

AtHome je studentski projekt s otvorenim izvorom i otvorenim hardverom koji je izradila grupa AtHome iz Epitecha, a ima za cilj razviti povezano rješenje od nekoliko pojedinačnih senzorskih modula koji komuniciraju s bazom podataka koja se samostalno hostira i otkriva API koji se koristi za hranjenje aplikacije na pametnom telefonu i web aplikacije. Moduli nadziru unutarnje okruženje kuće i mogu dati vizualnu povratnu informaciju korisniku, prelazeći sa zelenog (dobro) na crveno (loše), a prenesene podatke korisnik vidi putem serijske komunikacije modula ili na naše aplikacije ako ih koristite.

Iako je ovaj projekt još uvijek u aktivnom razvoju, osnovne funkcionalnosti naših modula sada su spremne i navodno ih je lako koristiti za razvoj prilagođenih modula. Dakle, zato vam predlažem da vidite kako izgraditi vlastiti jednostavan modul s ovim primjerom modula svjetline.

Ovi moduli su u osnovi izgrađeni od ploče kompatibilne s Arduinom (djelomična Arduino jezgra trebala bi biti dovoljna sve dok ima podršku za Stream, Wire i UART stream), LED (crvena ili RGB) koja postaje crvena u slučaju problema, a senzor, napajanje (zidno napajanje ili baterija) i laserski izrezano kućište.

Da, definitivno nije novo, ima mnogo projekata senzora, ali nadamo se da bi vam druge značajke, poput otkrivanja zdravstvenih problema, komunikacije i pohrane podataka na poslužitelju koji se sama hostira i aplikacije za vizualizaciju, mogle pomoći. Ili ako samo želite pratiti svoju kuću, jednostavne projekte ili ništa manje zanimljive:)

Korak 1: Skupljanje komponenti

Skupljanje komponenti
Skupljanje komponenti

Za ovaj projekt trebat će vam nekoliko komponenti za izradu vašeg AtHome modula:

  • 1x Arduino kompatibilna ploča: Ovdje ću koristiti Arduino UNO (ali radi i s drugim pločama, poput TI Launchpada i ESP8266 ploča)
  • 1x senzor: Koristit ću senzor za osvjetljenje TSL2561 (popis podržanih senzora dostupan je u dokumentaciji naše biblioteke)
  • 1x LED: Ovdje ću upotrijebiti Grove Chainable RGB LED (ali to može biti i običan crveni LED ili NeoPixel)
  • Dupont žice

Popis kompatibilnih komponenti dostupan je u dokumentaciji našeg projekta.

Korak 2: Instaliranje naše knjižnice

Instaliranje naše knjižnice
Instaliranje naše knjižnice
Instaliranje naše knjižnice
Instaliranje naše knjižnice

Da biste instalirali našu biblioteku, morate je preuzeti s našeg spremišta (objavit ćemo je kasnije na Arduino IDE popisu i PlatformIO) s ovom vezom:

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

Zatim idite u Arduino IDE i odaberite "Sketch> Include Library> Add. ZIP Library …". Zatim odaberite zip datoteku pod nazivom "artifacts.zip" i kliknite na "OK".

Korak 3: Instaliranje potrebnih knjižnica

Instaliranje potrebnih knjižnica
Instaliranje potrebnih knjižnica
Instaliranje potrebnih knjižnica
Instaliranje potrebnih knjižnica
Instaliranje potrebnih knjižnica
Instaliranje potrebnih knjižnica

Za rad, našoj knjižnici trebaju biti instalirane neke druge knjižnice na vašem računalu:

  • Biblioteka TaskScheduler Arkhipenko
  • Knjižnica digitalnih senzora svjetlosti SEEED Studio Grove
  • SEEED Studio Grove Changing RGB LED biblioteka
  • Knjižnica Adafruit NeoPixel

Možete ih instalirati putem upravitelja knjižnice Arduino IDE -a, idite na "Sketch"> "Include Library"> "Manage libraries …".

U novom prozoru koji će se otvoriti upišite u bijelu traku za pretraživanje naziv biblioteke koju želite instalirati, a zatim kliknite njezin blok. Pojavit će se gumb "Instaliraj", samo ga morate kliknuti i IDE će ga preuzeti i instalirati umjesto vas.

Korak 4: Sastavljanje modula

Sastavljanje modula
Sastavljanje modula

Počet ćemo sa senzorom. Spojite žicom VCC pin TSL2561 na 5V pin Arduina, GND pin senzora na jedan od GND pina Arduina te SDA i SCL pinove senzora na SDA i SCL pinove Arduina. Sada ste gotovi!

Sada spojite VCC iglu Grove Chainable RGB LED na 5V pin Arduina i GND pin LED diode na drugi GND Arduina. Ako ste Arduino kao samo jedan pin od 5 V, možete upotrijebiti matičnu ploču za spajanje 5V Arduina na + red ploče i na njega spojiti sve svoje 5 -pinske pinove komponenti ili ih lemiti zajedno na komad kartona ili koristite wago konektore ili što god želite. Sada spojite CI pin svoje LED diode na pin 7 vašeg Arduina, a DI pin vaše LED diode na pin 8 vašeg Arduina. Ako nemate takvu LED diodu, ne brinite, moguće je koristiti ugrađenu LED diodu vaše Arduino ploče ili klasičnu sa samo malom promjenom koda.

Korak 5: Pisanje skice modula Luminosity

Pisanje skice modula Luminosity
Pisanje skice modula Luminosity

Napravimo novu skicu i napišite kod za naš modul.

Ako vas objašnjenje skice ne zanima, možete ga samo kopirati i zalijepiti u svoj Arduino IDE:

#uključi

pomoću LightModule = AtHomeModule; Stream *streams = {& Serijski, nullptr}; GroveChainableLED:: Igle grovePins = {7, 8}; GroveChainableLED vodio (& grovePins); LightModule *modul = LightModule:: getInstance (); void setup () {// ovdje postavite svoj kod za postavljanje, da biste ga jednom pokrenuli: Serial.begin (9600); module-> setStreams (potoci); GroveDigitalLightSensor *lightSensor = novi GroveDigitalLightSensor (); module-> setSensor (lightSensor); module-> setDisplay (& led); module-> setup (); } void loop () {// ovdje unesite svoj glavni kod za višestruko pokretanje: module-> run (); }

Ako želite razumjeti sve što ovaj kod radi, možete pročitati sljedeće ili ako niste zainteresirani, možete prijeći izravno na sljedeći korak.

Za početak, moramo uključiti našu biblioteku u skicu tako što ćemo napisati ovaj redak na vrhu skice:

#uključi

Sada moramo stvoriti pseudonim za objekt modula koji ćemo koristiti. Možete ga vidjeti kao okvir s nekoliko gumba koji se koriste za promjenu njegovih komponenti, pokretanje, zaustavljanje, itd. Itd. Budući da je to kutija izgrađena predloškom (kao i uobičajeni predložak koji koristimo za projekte kao ljudi, ima početnu bazu i prevoditelj Arduina gradi konačni kod na temelju parametara koje mu dajemo) definirajući vrstu koja predstavlja vrijednost senzora i broj vrijednosti senzora koje želimo zadržati u memoriji, naveden je u nazivu i normalno bi se trebao ponavljati svaki put kad ga želimo koristiti. Što je pomalo neugodno, zato ćemo s punim imenom ovog okvira pridružiti novo ime, alias.

Recimo, na primjer, želim da se ovaj okvir zove "LightModule", jer će se koristiti za implementaciju modula za praćenje svjetline i želim zadržati samo 1 vrijednost odjednom. Svjetlost je predstavljena u luksima kao integralni tip pomoću našeg senzora TSL2561, koji su računala predstavljeni kao uint16_t. Naš će pseudonim izgledati ovako:

pomoću LightModule = AtHomeModule;

ključna riječ "using" znači da stvaramo pseudonim, a naziv koji mu dajemo odmah nakon toga odgovara slijedu iza znaka "=".

"AtHomeModule" pravi je naziv ovog okvira koji dajemo novi naziv, a parametri koji definiraju predstavljanje vrijednosti i broj vrijednosti pohranjenih u memoriji navedeni su između "".

Kad ćemo kasnije koristiti naziv "AtHomeModule", Arduino će znati da se odnosi na puni naziv "AtHomeModule".

Ako želite da vaša kutija može zadržati 5 vrijednosti u memoriji umjesto 1, samo trebate zamijeniti "1" sa "5" i Arduino će za vas generirati drugu vrstu kutije koja može raditi ono što želite. Međutim, imajte na umu da ako je modul programiran za slanje svojih vrijednosti prije nego što ima vremena za učinkovito mjerenje 5 vrijednosti senzora, nikada nećete vidjeti 5 od njih poslanih jer šalje samo nove vrijednosti od zadnjeg prijenosa.

Zatim moramo stvoriti niz pokazivača koji sadrže pokazivače na Arduino tokove koje modul koristi za komunikaciju, uvijek završava keyworkd "nullptr". Ovdje koristim samo "Serijski" tok Arduina koji komunicira s računalom putem USB priključka, pa niz izgleda ovako:

Stream *streams = {& Serijski, nullptr};

Znak "*" znači da je tip pokazivač (mjesto elementa, a ne sam element), a "" zagrade u Arduinu označavaju niz, pa možemo staviti više vrijednosti.

Zatim moramo stvoriti našu LED diodu. Da bismo to učinili, moramo napisati sljedeća dva retka;

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

GroveChainableLED vodio (& grovePins);

Ako nemate Grove RGB LED, ali i dalje želite vizualnu povratnu informaciju, to možete učiniti jednostavnom promjenom skice. Zamijenite dva prethodna retka ovim retkom:

JednobojnoLED LED (LED_BUILTIN);

U ovoj konfiguraciji zelena ugrađena LED žaruljica će se paliti sve dok je nadzirana vrijednost u redu za zdravlje i isključit će se kad nestane veze. Ako više volite da se uključi kad nema veze (jer koristite, na primjer, crvenu LED umjesto zelenu na pinu 13), možete upotrijebiti ovaj redak:

JednobojnoLED LED (LED_BUILTIN, istina);

Sljedeći korak je stvaranje samog našeg modula. To se radi prvi put kada dobijemo njegovu lokaciju u memoriji pozivanjem metode "getInstance", ovako:

LightModule *modul = LightModule:: getInstance ();

Zatim moramo postaviti parametre u "setup ()" funkciji Arduina, počevši inicijalizacijom "Serijskog" porta kao i obično u Arduino skicama:

Serial.begin (9600);

Senzor svjetla izrađujemo pisanjem ove linije:

GroveDigitalLightSensor *lightSensor = novi GroveDigitalLightSensor ();

Zatim govorimo našem modulu da koristi naš niz pokazivača na Arduino Streamu za komunikaciju putem njih:

module-> setStreams (potoci);

Također kažemo našem modulu da koristi naš svjetlosni senzor za praćenje intenziteta svjetla gdje je modul:

module-> setSensor (lightSensor);

Kažemo našem modulu da koristi LED za vizualnu povratnu informaciju:

module-> setDisplay (& led);

Na kraju, govorimo našem modulu da je spreman za obavljanje bilo koje interne konfiguracije koja mu je potrebna pozivanjem vlastite funkcije "setup":

module-> setup ();

Naš posljednji korak je sada pozvati funkciju "run ()" našeg modula, koja je dizajnirana za pozivanje pri svakoj iteraciji "loop" funkcije Arduina pisanjem ovog retka unutar "loop" funkcije:

module-> run ();

Sada je naša skica konačno spremna za postavljanje na Arduino i testiranje našeg modula!

Korak 6: Testiranje našeg AtHome modula

Testiranje našeg AtHome modula
Testiranje našeg AtHome modula
Testiranje našeg AtHome modula
Testiranje našeg AtHome modula

Da biste skicu prenijeli na Arduino, odaberite svoju Arduino UNO ploču tako što ćete otići u "Alati"> "Port"> "[COMx ili/dev/x] (Arduino/Genuino UNO)".

Za kraj, samo kliknite gumb "Učitaj" (gumb zaokruži sa strelicom koja pokazuje desno, druga ikona na alatnoj traci) da biste učitali skicu na svoju ploču.

Gotovo je! Sada bi vaš modul trebao raditi i slati vrijednosti na vaše računalo vidljive u serijskom monitoru Arduina. To možete provjeriti otvaranjem "Serijskog monitora" Arduina u izborniku "Alati" i trebali biste imati izlaz koji izgleda kao druga naslovna slika ovog koraka:)

Korak 7: Izrada kućišta za modul

Izrada kućišta za modul
Izrada kućišta za modul

Jednostavnu kutiju za svoj modul možete izgraditi laserskim rezanjem u šperploču od 3 mm.

Za izradu kutija koristimo makercase za pripremu predloška željenih dimenzija koje kasnije prilagođavamo. Naći ćete svg datoteku modula za svjetlinu u prilogu ovog koraka.

Zatim samo zalijepite lica, osim jednog, tako da ga kasnije možete otvoriti, umetnite strujni krug unutra i zalijepite LED diodu u rupu kućišta (mi koristimo prozirnu traku da popunimo rupu i raspršimo svjetlo, a LED zalijepimo ispred toga).

Sada samo dodajte bateriju za napajanje svog Arduina, zatvorite kućište i vaš modul je spreman i trebao bi izgledati dobro:)

Preporučeni: