Sadržaj:

Izgradite modul svjetline sa AtHome: 7 koraka
Izgradite modul svjetline sa AtHome: 7 koraka

Video: Izgradite modul svjetline sa AtHome: 7 koraka

Video: Izgradite modul svjetline sa AtHome: 7 koraka
Video: Architecture Kata #1 - Разбор с экспертом [Как работает настоящий Solution Architect] #ityoutubersru 2024, Novembar
Anonim
Izgradite modul svjetline sa AtHome -om
Izgradite modul svjetline sa AtHome -om

AtHome je studentski projekt s otvorenim izvorom i otvorenim hardverskim programom koji je napravila grupa AtHome iz Epitecha, s ciljem razvoja povezanog rješenja 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. Zato vam predlažem da vidite kako izgraditi svoj vlastiti jednostavan modul s ovim primjerom modula svjetline.

Ovi moduli su u osnovi izgrađeni od Arduino kompatibilne ploče (djelomično Arduino jezgro bi trebalo biti dovoljno sve dok ima podršku za Stream, Wire i UART stream), LED (crvena ili RGB) koja postaje crvena u slučaju problema, a senzor, izvor napajanja (zidno napajanje ili baterija) i laserski izrezana futrola.

Da, definitivno nije novo, ima mnogo projekata sa senzorima, ali nadamo se da će vam pomoći i druge značajke, poput otkrivanja zdravstvenih problema, komunikacije i pohrane podataka na serveru koji se sama hostira, te aplikacije za vizualizaciju. Ili ako samo želite nadzirati 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 izgradnju 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 (lista podržanih senzora dostupna je u dokumentaciji naše biblioteke)
  • 1x LED: Ovdje ću koristiti Grove Chainable RGB LED (ali to može biti i obična crvena LED ili NeoPixel)
  • Dupont Wires

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

Korak 2: Instaliranje naše biblioteke

Instaliranje naše biblioteke
Instaliranje naše biblioteke
Instaliranje naše biblioteke
Instaliranje naše biblioteke

Da biste instalirali našu biblioteku, morate preuzeti sa našeg spremišta (objavit ćemo je kasnije na Arduino IDE listi i PlatformIO) sa 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 biblioteka

Instaliranje potrebnih biblioteka
Instaliranje potrebnih biblioteka
Instaliranje potrebnih biblioteka
Instaliranje potrebnih biblioteka
Instaliranje potrebnih biblioteka
Instaliranje potrebnih biblioteka

Za rad, našoj biblioteci trebaju biti instalirane neke druge biblioteke na vašem računaru:

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

Možete ih instalirati putem upravitelja biblioteke 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 na njen blok. Pojavit će se gumb "Instaliraj", samo trebate kliknuti na njega i IDE će ga preuzeti i instalirati umjesto vas.

Korak 4: Sklapanje modula

Sklapanje modula
Sklapanje modula

Počećemo sa senzorom. Spojite žicom VCC pin TSL2561 na 5V pin Arduina, GND pin senzora na jedan od GND pina Arduina i SDA i SCL pinova senzora na SDA i SCL pinove Arduina. Sada ste završili!

Sada spojite VCC pin na 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 povezivanje 5V Arduina s + redom matične ploče i na njega spojiti sve svoje 5 komponentne pinove ili ih lemiti zajedno na komad kartona ili koristite wago konektore ili šta god želite. Sada spojite CI pin vaše 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 luminoznosti

Pisanje skice modula luminoznosti
Pisanje skice modula luminoznosti

Kreirajmo 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:

#include

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

Ako želite razumjeti sve što ovaj kod radi, možete pročitati sljedeće ili ako vas ne zanima, 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 red na vrhu skice:

#include

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. 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 kompajler Arduina gradi konačni kod na osnovu parametara koje mu dajemo) definirajući tip koji predstavlja vrijednost senzora i broj vrijednosti senzora koje želimo zadržati u memoriji, naveden je u nazivu i obično bi se trebao ponavljati svaki put kada 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 ovo polje zove "LightModule", jer će se koristiti za implementaciju modula za praćenje svjetline i želim zadržati samo jednu vrijednost odjednom. Svjetlost je u luksima predstavljena kao integralni tip pomoću našeg senzora TSL2561, koji su računari predstavljeni kao uint16_t. Naš pseudonim će izgledati ovako:

pomoću LightModule = AtHomeModule;

ključna riječ "using" znači da stvaramo pseudonim, a ime koje mu damo odmah nakon toga odgovara nizu iza znaka "=".

"AtHomeModule" je pravi naziv ove kutije koju dajemo novom imenu, a parametri koji definiraju predstavljanje vrijednosti i broj vrijednosti koje se čuvaju u memoriji navedeni su između "".

Sada, kada ćemo kasnije koristiti naziv "AtHomeModule", Arduino će znati da se odnosi na puno ime "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. Imajte na umu, međutim, 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 njih poslanih jer šalje samo nove vrijednosti od zadnjeg otpremanja.

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

Prijenos *streams = {& Serijski, nullptr};

Znak "*" znači da je tip pokazivač (lokacija elementa, a ne sam element), a "" zagrade u Arduinu označavaju niz, pa možemo postaviti 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 ovom linijom:

JednobojnoLED LED (LED_BUILTIN);

U ovoj konfiguraciji zelena ugrađena LED lampica će se paliti sve dok je nadzirana vrijednost u redu za zdravlje i gasit će se kad nestane veze. Ako više volite da se uključi kad je van veze (jer koristite, na primjer, crvenu LED umjesto zelene na pinu 13), možete upotrijebiti ovu liniju:

JednobojnoLED LED (LED_BUILTIN, tačno);

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 *module = LightModule:: getInstance ();

Zatim moramo postaviti parametre u "setup ()" funkciji Arduina, započinjući inicijalizacijom "Serijskog" porta kao i obično u Arduino skicama:

Serial.begin (9600);

Senzor svjetla stvaramo pisanjem ove linije:

GroveDigitalLightSensor *lightSensor = novi GroveDigitalLightSensor ();

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

module-> setStreams (streams);

Takođe 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 kako bi nam dao vizualnu povratnu informaciju:

module-> setDisplay (& led);

Na kraju, govorimo našem modulu da je spreman za bilo koju internu konfiguraciju 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 ove linije 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

Za postavljanje skice 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 na dugme "Upload" (dugme za krug sa strelicom koja pokazuje desno, druga ikona na traci sa alatkama) 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

Izgradnja kućišta za modul
Izgradnja kućišta za modul

Možete izraditi jednostavnu kutiju za vaš modul 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 luminosity koja je priložena ovom koraku.

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 sprijeda) toga).

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

Preporučuje se: