Orodha ya maudhui:

Jenga Moduli ya Mwangaza na Nyumba ya Nyumbani: Hatua 7
Jenga Moduli ya Mwangaza na Nyumba ya Nyumbani: Hatua 7

Video: Jenga Moduli ya Mwangaza na Nyumba ya Nyumbani: Hatua 7

Video: Jenga Moduli ya Mwangaza na Nyumba ya Nyumbani: Hatua 7
Video: Один мир в новом мире с Хэнком Дерденом, исполнительным директором ForestPlanet 2024, Novemba
Anonim
Jenga Moduli ya Mwangaza na Nyumbani
Jenga Moduli ya Mwangaza na Nyumbani

AtHome ni mradi wa wanafunzi wa openource na openhardware kamili uliofanywa na kikundi AtHome kutoka Epitech, ikilenga kukuza suluhisho lililounganishwa la moduli kadhaa za sensorer zinazowasiliana na hifadhidata inayojishikilia inayoonyesha API inayotumika kulisha programu-tumizi ya smartphone na programu ya wavuti. Moduli hufuatilia mazingira ya ndani ya nyumba na zina uwezo wa kutoa maoni kwa mtumiaji, kutoka kijani (nzuri) hadi nyekundu (mbaya) na data inayoambukizwa inaonekana na mtumiaji kupitia mawasiliano ya serial ya moduli au maombi yetu ikiwa unatumia.

Ingawa mradi huu bado uko chini ya maendeleo ya kazi, utendaji wa kimsingi wa moduli zetu sasa uko tayari na inadhaniwa ni rahisi kutumia kukuza moduli maalum. Kwa hivyo, ndio sababu ninakupendekeza uone jinsi ya kujenga moduli yako rahisi na mfano huu wa moduli ya mwangaza.

Moduli hizi kimsingi zimejengwa na bodi inayotangamana na Arduino (msingi wa Arduino lazima uwe wa kutosha kwa muda mrefu ikiwa na Mkondo, Waya na usaidizi wa mkondo wa UART), LED (nyekundu moja au RGB) inageuka nyekundu ikiwa kuna suala, a sensor, usambazaji wa umeme (umeme-ukuta au betri) na kesi ya kukata laser.

Ndio, sio mpya, kuna miradi mingi ya sensorer lakini tunatumahi huduma zingine kama vile kugundua maswala ya kiafya, mawasiliano na uhifadhi wa habari kwenye seva inayojisimamia na matumizi ya taswira itakusaidia. Au ikiwa unataka tu kufuatilia nyumba yako, miradi rahisi au sio ya kupendeza:)

Hatua ya 1: Kukusanya Vipengele

Vipengele vya Kukusanya
Vipengele vya Kukusanya

Kwa mradi huu, utahitaji vifaa vichache kujenga moduli yako ya AtHome:

  • Bodi inayolingana ya 1x Arduino: Hapa nitatumia Arduino UNO (lakini pia inafanya kazi na bodi zingine kama vile TI Launchpads na bodi za ESP8266)
  • Sensor ya 1x: Nitatumia sensa ya mwangaza ya TSL2561 (orodha ya sensorer zinazoungwa mkono inapatikana kwenye hati ya maktaba yetu)
  • 1x imeongozwa: Nitatumia Grove Chainable RGB LED hapa (lakini pia inaweza kuwa nyekundu iliyoongozwa rahisi au NeoPixel)
  • Waya za Dupont

Orodha ya vifaa vinavyoendana inapatikana kwenye nyaraka za mradi wetu.

Hatua ya 2: Kusanikisha Maktaba yetu

Kufunga Maktaba Yetu
Kufunga Maktaba Yetu
Kufunga Maktaba Yetu
Kufunga Maktaba Yetu

Ili kusanikisha maktaba yetu, utahitaji kupakua kutoka kwa hazina yetu (tutaichapisha baadaye kwenye orodha ya Arduino IDE na PlatformIO) na kiunga hiki:

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

Kisha, nenda kwenye Arduino IDE na uchague "Mchoro> Jumuisha Maktaba> Ongeza Maktaba ya ZIP …". Kisha chagua faili ya zip inayoitwa "artifacts.zip" na bonyeza "OK".

Hatua ya 3: Kufunga Maktaba Inayohitajika

Kufunga Maktaba Inayohitajika
Kufunga Maktaba Inayohitajika
Kufunga Maktaba Inayohitajika
Kufunga Maktaba Inayohitajika
Kufunga Maktaba Inayohitajika
Kufunga Maktaba Inayohitajika

Ili kufanya kazi, maktaba yetu inahitaji maktaba zingine kuwekwa kwenye kompyuta yako:

  • Maktaba ya Arkhipenko TaskScheduler
  • SEEED Studio Grove Digital Light Sensor maktaba
  • SEEED Studio Grove Chainable RGB maktaba ya LED
  • Maktaba ya Adafruit NeoPixel

Unaweza kuziweka kupitia meneja wa maktaba ya Arduino IDE, kwa kuendelea "Mchoro"> "Jumuisha Maktaba"> "Dhibiti maktaba…".

Katika dirisha jipya ambalo litafunguliwa, andika kwenye upau mweupe wa utaftaji jina la maktaba unayotaka kusakinisha, kisha bonyeza kwenye kizuizi chake. Kitufe cha "Sakinisha" kitaonekana, unahitaji tu kubonyeza juu yake na IDE itapakua na kukusakinishia.

Hatua ya 4: Kukusanya Moduli

Kukusanya Moduli
Kukusanya Moduli

Tutaanza na sensorer. Unganisha kupitia waya pini ya VCC ya TSL2561 hadi pini ya 5V ya Arduino, pini ya GND ya sensorer kwa moja ya pini ya GND ya Arduino na pini za SDA na SCL za sensa kwa pini za SDA na SCL za Arduino. Sasa umemaliza!

Sasa, unganisha pini ya VCC ya Grove Chainable RGB LED kwa pini 5V ya Arduino na pini ya GND ya LED hadi GND ya pili ya Arduino. Ikiwa wewe ni Arduino kama pini moja tu ya 5V, unaweza kutumia ubao wa mkate kuunganisha 5v ya Arduino kwa safu + ya ubao wa mkate na kuunganisha vifaa vyako vyote 5V pini juu yake, au kuziunganisha pamoja kwenye kipande cha ubao au tumia viunganishi vya wago au chochote unachopendelea. Sasa, unganisha pini ya CI ya LED yako na pini 7 ya Arduino yako na pini ya DI ya LED yako kwa pini 8 ya Arduino yako. Ikiwa hauna LED kama hiyo, usijali, inawezekana kutumia LED iliyojengwa ya bodi yako ya Arduino au ile ya kawaida na mabadiliko kidogo tu ya nambari.

Hatua ya 5: Kuandika Mchoro wa Moduli ya Mwangaza

Kuandika Mchoro wa Moduli ya Mwangaza
Kuandika Mchoro wa Moduli ya Mwangaza

Wacha tuunde mchoro mpya na tuandike nambari ya moduli yetu.

Ikiwa haupendezwi na maelezo ya mchoro, unaweza tu kunakili na kubandika kwenye IDE yako ya Arduino:

# pamoja

kutumia LightModule = AtHomeModule; Mitiririko ya mito = {& Serial, nullptr}; GroveChainableLED:: Pini grovePins = {7, 8}; GroveChainableLED iliyoongozwa (& GrovePins); LightModule * moduli = LightModule:: getInstance (); kuanzisha batili () {// weka msimbo wako wa kusanidi hapa, ili uendeshe mara moja: Serial.begin (9600); moduli-> setStreams (mito); GroveDigitalLightSensor * lightSensor = mpya GroveDigitalLightSensor (); moduli-> setSensor (lightSensor); moduli-> setDisplay (& led); moduli-> kuanzisha (); } kitanzi batili () {// weka nambari yako kuu hapa, kuendesha mara kwa mara: moduli-> kukimbia (); }

Ikiwa unataka kuelewa yote nambari hii inafanya, unaweza kusoma yafuatayo au ikiwa haupendezwi, unaweza kuruka moja kwa moja kwa hatua inayofuata.

Kuanza, tunahitaji kujumuisha maktaba yetu kwenye mchoro wetu kwa kuandika mstari huu juu ya mchoro:

# pamoja

Sasa, tunahitaji kuunda jina la kitu cha moduli tutakachotumia. Unaweza kuiona kama sanduku na vifungo kadhaa vinavyotumiwa kubadilisha vifaa vyake, kuanza, kuizuia,… nk. Kama sanduku lililojengwa na templeti (kama templeti ya kawaida tunayotumia kwa miradi kama wanadamu, ina msingi wa kuanza na mkusanyaji wa Arduino huunda nambari ya mwisho kulingana na vigezo tunavyompa) kufafanua aina inayowakilisha thamani ya sensa na idadi ya maadili ya sensa tunayotaka kushikilia katika kumbukumbu, imeainishwa kwa jina lake na kawaida inapaswa kurudiwa kila wakati tunataka kuitumia. Ambayo inakera kidogo, ndiyo sababu tutahusisha jina mpya, jina, na jina kamili la sanduku hili.

Wacha tuseme kwa mfano nataka sanduku hili liitwe "LightModule", kwani litatumika kutekeleza moduli ya ufuatiliaji wa mwangaza na ninataka kuweka thamani 1 tu kwa wakati mmoja. Mwangaza unawakilishwa katika lux kama aina muhimu na sensa yetu ya TSL2561, ambayo inawakilishwa kama uint16_t na kompyuta. Jina letu litaonekana kama hii:

kutumia LightModule = AtHomeModule;

neno kuu la "kutumia" linamaanisha tunaunda jina na jina tunalipa tu baada ya kufanana na mlolongo baada ya herufi "=".

"AtHomeModule" ni jina halisi la sanduku hili tunatoa jina jipya, na vigezo vinavyoelezea uwakilishi wa thamani na idadi ya maadili yaliyohifadhiwa kwenye kumbukumbu imeorodheshwa kati ya "".

Sasa, tutakapotumia baadaye jina "AtHomeModule", Arduino atajua inahusu jina kamili "AtHomeModule".

Ikiwa unataka sanduku lako liwe na uwezo wa kuweka maadili 5 kwenye kumbukumbu badala ya 1, unahitaji tu kuchukua nafasi ya "1" na "5" na Arduino atazalishia aina tofauti ya sanduku inayoweza kufanya unachotaka. Kumbuka, hata hivyo, kwamba ikiwa moduli imewekwa kutuma maadili yake kabla ya kuwa na wakati wa kupima viwango 5 vya sensa, hautawahi kuona 5 kati yao ikitumwa kwani inatuma tu maadili mapya tangu upakiaji wa mwisho.

Ifuatayo, tunahitaji kuunda safu ya viashiria vyenye vidokezo kwenye mito ya Arduino inayotumiwa na moduli kuwasiliana, kila mara imekomeshwa na "nullptr" ya kitufe. Hapa, ninatumia mkondo wa "Serial" tu wa Arduino ambao unawasiliana na kompyuta na bandari ya USB, kwa hivyo safu inaonekana kama hii:

Mitiririko ya mito = {& Serial, nullptr};

Tabia ya "*" inamaanisha aina ni kiashiria (eneo la kipengee, sio kipengee yenyewe) na mabano "" inamaanisha katika Arduino ni safu, kwa hivyo tunaweza kuweka maadili kadhaa.

Ifuatayo, tunahitaji kuunda LED yetu. Ili kufanya hivyo, tunahitaji kuandika mistari miwili ifuatayo;

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

GroveChainableLED iliyoongozwa (& GrovePins);

Ikiwa huna Grove RGB LED lakini bado unataka maoni ya kuona, unaweza kuifanya na mabadiliko rahisi kwenye mchoro. Badilisha mistari miwili iliyopita na mstari huu:

MonochromaticLED iliyoongozwa (LED_BUILTIN);

Katika usanidi huu LED iliyojengwa kwa kijani itawasha ikiwa tu thamani inayofuatiliwa ni sawa kwa afya na itazimwa ikiwa nje ya dhamana. Ikiwa unapendelea kuiwasha ikiwa nje ya dhamana (kwa sababu unatumia kwa mfano LED nyekundu badala ya ile ya kijani kwenye pini 13) unaweza kutumia laini hii badala yake:

MonochromaticLED iliyoongozwa (LED_BUILTIN, kweli);

Hatua inayofuata ni kuunda moduli yetu yenyewe. Imefanywa mara ya kwanza kupata mahali katika kumbukumbu kwa kupiga njia ya "GetInstance", kama hii:

LightModule * moduli = LightModule:: getInstance ();

Halafu, tunahitaji kuweka vigezo katika kazi ya "kuanzisha ()" ya Arduino, tukianza na kuanzisha bandari ya "Serial" kama kawaida katika michoro za Arduino:

Serial. Kuanza (9600);

Tunaunda sensa ya nuru kwa kuandika laini hii:

GroveDigitalLightSensor * lightSensor = mpya GroveDigitalLightSensor ();

Kisha, tunaambia moduli yetu kutumia safu ya viashiria vyako kwenye Mkondo wa Arduino kuwasiliana kupitia hizo:

moduli-> setStreams (mito);

Tunaambia pia moduli yetu itumie sensorer yetu ya taa kufuatilia nguvu ya mwangaza ambapo moduli iko:

moduli-> setSensor (lightSensor);

Tunamwambia moduli yetu itumie LED yetu kutupatia maoni ya kuona:

moduli-> setDisplay (& led);

Mwishowe, tunaambia moduli yetu iko tayari kufanya usanidi wowote wa ndani ambao inahitaji kufanya kwa kuita kazi yake ya "kuanzisha":

moduli-> kuanzisha ();

Hatua yetu ya mwisho sasa ni kuita "run ()" kazi ya moduli yetu, ambayo imeundwa kuitwa katika kila upigaji wa kazi ya "kitanzi" cha Arduino kwa kuandika mstari huu ndani ya kazi ya "kitanzi":

moduli-> kukimbia ();

Sasa, mchoro wetu uko tayari kupakia kwenye Arduino na ujaribu moduli yetu!

Hatua ya 6: Kupima Moduli yetu ya Nyumbani

Kupima Moduli Yetu ya Nyumbani
Kupima Moduli Yetu ya Nyumbani
Kupima Moduli Yetu ya Nyumbani
Kupima Moduli Yetu ya Nyumbani

Ili kupakia mchoro kwa Arduino, chagua bodi yako ya Arduino UNO kwa kuingia "Zana"> "Bandari"> "[COMx au / dev / x] (Arduino / Genuino UNO)".

Jambo la mwisho, bonyeza tu kwenye kitufe cha "Pakia" (kitufe cha duara na mshale unaoelekea kulia, ikoni ya pili ya upau wa zana) kupakia mchoro kwenye ubao wako.

Imekwisha! Sasa moduli yako inapaswa kufanya kazi na kutuma maadili kwa kompyuta yako inayoonekana kwenye Serial Monitor ya Arduino. Unaweza kuiangalia kwa kufungua "Serial Monitor" ya Arduino kwenye menyu ya "Zana" na unapaswa kuwa na pato linaloonekana kama picha ya kichwa cha pili cha hatua hii:)

Hatua ya 7: Kuunda Kesi ya Moduli

Kuunda Kesi ya Moduli
Kuunda Kesi ya Moduli

Unaweza kujenga sanduku rahisi kwa moduli yako kwa kuikata laser kwenye ubao wa plywood wa 3mm.

Ili kutengeneza masanduku yetu ya sanduku, tunatumia makercase kuandaa templeti kwa vipimo unavyotaka ambavyo tunabadilisha baadaye. Utapata faili ya svg ya moduli ya mwangaza iliyoambatishwa na hatua hii.

Kisha gundi tu nyuso pamoja isipokuwa moja ili uweze kuifungua baadaye, weka mzunguko wako ndani na ushike LED kwenye shimo la kesi (tunatumia mkanda wa uwazi kujaza shimo na kueneza taa kwa kuongezea LED mbele yake).

Sasa ongeza tu betri kuwezesha Arduino yako, funga kesi na moduli yako iko tayari na inapaswa kuonekana nzuri:)

Ilipendekeza: