Съдържание:

Изградете модул за светене с AtHome: 7 стъпки
Изградете модул за светене с AtHome: 7 стъпки

Видео: Изградете модул за светене с AtHome: 7 стъпки

Видео: Изградете модул за светене с AtHome: 7 стъпки
Видео: 12 Storage Clothing and Rack Dress Ideas 2024, Ноември
Anonim
Изградете модул за светене с AtHome
Изградете модул за светене с AtHome

AtHome е студентски проект с отворен източник и отворен хардуер, направен от групата AtHome от Epitech, имащ за цел да разработи свързано решение от няколко отделни сензорни модула, комуникиращи със самостоятелно хоствана база данни, излагаща API, използван за захранване на приложение за смартфон и уеб приложение. Модулите наблюдават вътрешната среда на къщата и са в състояние да дадат визуална обратна връзка на потребителя, преминавайки от зелено (добро) към червено (лошо) и предаваните данни са видими от потребителя чрез серийната комуникация на модул или на нашите приложения, ако ги използвате.

Въпреки че този проект все още е в процес на активно развитие, основните функционалности на нашите модули вече са готови и се предполага, че са лесни за използване за разработване на персонализирани модули. И така, затова ви предлагам да видите как да изградите свой собствен прост модул с този пример за модул за светене.

Тези модули са основно изградени със съвместима с Arduino платка (частично ядро на Arduino трябва да е достатъчно, стига да има Stream, Wire и поддръжка на UART поток), LED (червен или RGB), който става червен в случай на проблем, a сензор, захранване (захранване на стена или батерия) и лазерно изрязан калъф.

Да, определено не е ново, има много проекти за сензори, но се надяваме, че други функции, като откриване на здравословни проблеми, комуникация и съхранение на информация на сървър, който се хоства самостоятелно, и приложение за визуализация ще ви помогнат. Или ако просто искате да наблюдавате къщата си, прости проекти или не по -малко интересни:)

Стъпка 1: Събиране на компоненти

Събиране на компоненти
Събиране на компоненти

За този проект ще ви трябват няколко компонента за изграждане на вашия AtHome модул:

  • 1x Arduino-съвместима платка: Тук ще използвам Arduino UNO (но тя работи и с други платки като TI Launchpads и ESP8266 платки)
  • 1x сензор: Ще използвам сензор за осветеност TSL2561 (списъкът на поддържаните сензори е достъпен в документацията на нашата библиотека)
  • 1x led: Тук ще използвам Grove Chainable RGB LED (но може да бъде и обикновен червен светодиод или NeoPixel)
  • Dupont проводници

Списъкът на съвместимите компоненти е наличен в документацията на нашия проект.

Стъпка 2: Инсталиране на нашата библиотека

Инсталиране на нашата библиотека
Инсталиране на нашата библиотека
Инсталиране на нашата библиотека
Инсталиране на нашата библиотека

За да инсталирате нашата библиотека, ще трябва да изтеглите от нашето хранилище (ще я публикуваме по -късно в списъка на IDE на Arduino и PlatformIO) с тази връзка:

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

След това отидете в Arduino IDE и изберете „Sketch> Include Library> Add. ZIP Library…“. След това изберете zip файла с име "artifacts.zip" и кликнете върху "OK".

Стъпка 3: Инсталиране на необходимите библиотеки

Инсталиране на задължителни библиотеки
Инсталиране на задължителни библиотеки
Инсталиране на задължителни библиотеки
Инсталиране на задължителни библиотеки
Инсталиране на задължителни библиотеки
Инсталиране на задължителни библиотеки

За да работи, нашата библиотека се нуждае от някои други библиотеки, които да бъдат инсталирани на вашия компютър:

  • Архипенко библиотека TaskScheduler
  • Библиотека за цифрови сензори за светлина SEEED Studio Grove
  • Видима RGB LED библиотека на SEEED Studio Grove
  • Библиотека Adapruit NeoPixel

Можете да ги инсталирате чрез библиотечния мениджър на Arduino IDE, като отидете на „Sketch“> „Include Library“> „Manage libraries …“.

В новия прозорец, който ще се отвори, напишете в бялата лента за търсене името на библиотеката, която искате да инсталирате, след което щракнете върху нейния блок. Ще се появи бутон „Инсталиране“, просто трябва да кликнете върху него и IDE ще го изтегли и инсталира вместо вас.

Стъпка 4: Сглобяване на модула

Сглобяване на модула
Сглобяване на модула

Ще започнем със сензора. Свържете чрез проводник VCC щифта на TSL2561 към 5V щифта на Arduino, GND щифта на сензора към един от GND щифта на Arduino и SDA и SCL щифтовете на сензора към SDA и SCL щифтовете на Arduino. Сега сте готови!

Сега свържете VCC щифта на Grove Chainable RGB LED към 5V щифта на Arduino и GND щифта на LED към втория GND на Arduino. Ако сте Arduino само като един 5V щифт, можете да използвате макет, за да свържете 5v на Arduino към + ред на макетната платка и да свържете всичките си компоненти 5V щифтове върху него, или да ги запоите заедно върху парче лента или използвайте wago конектори или каквото предпочитате. Сега свържете CI щифта на вашия LED към щифта 7 на вашия Arduino и DI щифта на вашия LED към щифта 8 на вашия Arduino. Ако нямате такъв светодиод, не се притеснявайте, възможно е да използвате вградения светодиод на вашата платка Arduino или класически такъв само с малка промяна в кода.

Стъпка 5: Написване на скица на модула Luminosity

Писане на скица на модула за светене
Писане на скица на модула за светене

Нека създадем нова скица и да напишем кода за нашия модул.

Ако обяснението на скицата не ви интересува, можете просто да я копирате и поставите във вашата Arduino IDE:

#включва

използвайки LightModule = AtHomeModule; Поток *потоци = {& Serial, nullptr}; GroveChainableLED:: Pins grovePins = {7, 8}; GroveChainableLED led (& grovePins); LightModule *модул = LightModule:: getInstance (); void setup () {// поставете вашия код за настройка тук, за да стартирате веднъж: Serial.begin (9600); module-> setStreams (потоци); GroveDigitalLightSensor *lightSensor = нов GroveDigitalLightSensor (); модул-> setSensor (lightSensor); модул-> setDisplay (& led); module-> setup (); } void loop () {// поставете основния си код тук, за да се изпълнява многократно: module-> run (); }

Ако искате да разберете какво прави този код, можете да прочетете следното или ако не се интересувате, можете да преминете директно към следващата стъпка.

За да започнем, трябва да включим нашата библиотека в нашата скица, като напишем този ред в горната част на скицата:

#включва

Сега трябва да създадем псевдоним на модулния обект, който ще използваме. Можете да го видите като кутия с няколко бутона, използвани за промяна на компонентите му, стартиране, спиране, … и т.н. Тъй като това е кутия, изградена от шаблон (като обичайния шаблон, който използваме за проекти като хора, той има начална база и компилаторът на Arduino изгражда крайния код въз основа на параметрите, които му даваме), дефиниращ типа, представляващ стойност на сензора и броя на стойностите на сензорите, които искаме да запазим в паметта, той е посочен в името му и обикновено трябва да се повтаря всеки път, когато искаме да го използваме. Което е малко досадно, затова ще свържем ново име, псевдоним, с пълното име на това поле.

Да кажем например, че искам това поле да се нарича "LightModule", тъй като ще се използва за внедряване на модул за наблюдение на яркостта и искам да запазя само 1 стойност наведнъж. Яркостта е представена в лукси като интегрален тип от нашия сензор TSL2561, който е представен като uint16_t от компютрите. Нашият псевдоним ще изглежда така:

използвайки LightModule = AtHomeModule;

ключовата дума „using“означава, че създаваме псевдоним и името, което му даваме веднага след това, съответства на последователността след знака „=“.

"AtHomeModule" е истинското име на това поле, което даваме ново име, а параметрите, определящи представянето на стойности и броя на стойностите, съхранявани в паметта, са изброени между "".

Сега, когато по -късно ще използваме името „AtHomeModule“, Arduino ще знае, че се отнася до пълното име „AtHomeModule“.

Ако искате вашата кутия да може да запазва 5 стойности в паметта вместо 1, просто трябва да замените "1" с "5" и Arduino ще генерира за вас различен тип кутия, способна да прави това, което искате. Имайте предвид обаче, че ако модулът е програмиран да изпраща своите стойности, преди да има време за ефективно измерване на 5 стойности на сензора, никога няма да видите 5 от тях да бъдат изпратени, тъй като изпраща само новите стойности от последното качване.

След това трябва да създадем масив от указатели, съдържащи указатели на Arduino потоци, използвани от модула за комуникация, винаги завършвани с keyworkd "nullptr". Тук използвам само потока "Serial" на Arduino, който комуникира с компютъра чрез USB порта, така че масивът изглежда така:

Поток *потоци = {& Serial, nullptr};

Символът "*" означава, че типът е указател (местоположението на елемента, а не самият елемент), а скобите "" означават в Arduino, че е масив, така че можем да поставим множество стойности.

След това трябва да създадем нашия светодиод. За да направим това, трябва да напишем следните два реда;

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

GroveChainableLED led (& grovePins);

Ако нямате Grove RGB LED, но все пак искате визуална обратна връзка, можете да го направите с проста промяна в скицата. Заменете двата предишни реда с този ред:

Монохроматичен LED (LED_BUILTIN);

В тази конфигурация зеленият вграден светодиод ще светне, докато наблюдаваната стойност е наред за здравето и ще се изключи, когато е извън връзката. Ако предпочитате да го включите, когато е извън връзката (защото използвате например червен светодиод вместо зеления на щифт 13), можете да използвате този ред вместо това:

Монохроматичен LED (LED_BUILTIN, вярно);

Следващата стъпка е да създадете самия наш модул. Това се прави за първи път, когато получим местоположението му в паметта, като извикаме метода "getInstance", по следния начин:

LightModule *модул = LightModule:: getInstance ();

След това трябва да зададем параметрите във функцията "setup ()" на Arduino, като започнем с инициализиране на порта "Serial" както обикновено в скиците на Arduino:

Serial.begin (9600);

Ние създаваме светлинния сензор, като напишем този ред:

GroveDigitalLightSensor *lightSensor = нов GroveDigitalLightSensor ();

След това казваме на нашия модул да използва нашия набор от указатели в Arduino Stream, за да комуникира чрез тях:

module-> setStreams (потоци);

Също така казваме на нашия модул да използва нашия светлинен сензор за наблюдение на интензитета на светлината, където е модулът:

модул-> setSensor (lightSensor);

Казваме на нашия модул да използва нашия светодиод, за да ни даде визуална обратна връзка:

модул-> setDisplay (& led);

И накрая, казваме на нашия модул, че е готов да направи всяка вътрешна конфигурация, която трябва да направи, като извика собствената си функция за настройка:

module-> setup ();

Последната ни стъпка сега е да извикаме функцията "run ()" на нашия модул, която е проектирана да се извиква при всяка итерация на функцията "loop" на Arduino, като напише този ред вътре във функцията "loop":

module-> run ();

Сега нашата скица най -накрая е готова за качване в Arduino и тестване на нашия модул!

Стъпка 6: Тестване на нашия AtHome модул

Тестване на нашия AtHome модул
Тестване на нашия AtHome модул
Тестване на нашия AtHome модул
Тестване на нашия AtHome модул

За да качите скицата в Arduino, изберете вашата Arduino UNO платка, като отидете в "Инструменти"> "Порт"> "[COMx или/dev/x] (Arduino/Genuino UNO)".

Последното нещо, просто кликнете върху бутона „Качване“(кръгъл бутон със стрелка, сочеща надясно, втората икона на лентата с инструменти), за да качите скицата във вашата дъска.

Готово е! Сега вашият модул трябва да работи и да изпраща стойности на вашия компютър, видими в серийния монитор на Arduino. Можете да го проверите, като отворите "Сериен монитор" на Arduino в менюто "Инструменти" и трябва да имате изход, изглеждащ като втората заглавна снимка на тази стъпка:)

Стъпка 7: Изграждане на калъф за модула

Изграждане на калъф за модула
Изграждане на калъф за модула

Можете да изградите обикновен калъф за вашия модул, като го изрежете с лазер в 3 мм дъска от шперплат.

За да направим нашите кутии, използваме makercase, за да подготвим шаблон с желаните размери, които персонализираме по -късно. Ще намерите svg файла на модула за яркост, прикрепен към тази стъпка.

След това просто залепете лицата заедно, с изключение на едно, за да можете да го отворите по -късно, поставете веригата си вътре и залепете светодиода в отвора на кутията (използваме прозрачна лента, за да запълним дупката и да разсеем светлината в допълнение, за да залепим светодиода отпред от него).

Сега просто добавете батерия, за да захранвате вашия Arduino, затворете кутията и вашият модул е готов и трябва да изглежда добре:)

Препоръчано: