Mundarija:
- 1 -qadam: Komponentlarni yig'ish
- 2 -qadam: Kutubxonamizni o'rnatish
- 3 -qadam: Kerakli kutubxonalarni o'rnatish
- 4 -qadam: Modulni yig'ish
- 5 -qadam: Yorqinlik moduli eskizini yozish
- 6 -qadam: AtHome modulini sinab ko'rish
- 7 -qadam: Modul uchun korpus yaratish
Video: AtHome yordamida yorug'lik modulini yarating: 7 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
AtHome-bu AtHome guruhi tomonidan Epitech kompaniyasi tomonidan ishlab chiqilgan, ochiq dasturli va ochiq dasturiy ta'minot talabalar loyihasi bo'lib, u smartfonlar ilovasi va veb-ilovalarni oziqlantirish uchun ishlatiladigan API-ni ochadigan, o'z-o'zidan joylashtirilgan ma'lumotlar bazasi bilan bog'langan bir nechta sensorlar modullarining ulangan echimini ishlab chiqishga qaratilgan. Modullar uyning ichki muhitini kuzatadi va foydalanuvchiga yashil (yaxshi) dan qizil (yomon) gacha vizual tarzda javob bera oladi va uzatilgan ma'lumotlar foydalanuvchi tomonidan modulning ketma -ket aloqasi orqali ko'rinadi. agar siz ulardan foydalansangiz, bizning ilovalarimiz.
Bu loyiha hali ham faol ishlab chiqilayotgan bo'lsa ham, bizning modullarimizning asosiy funktsiyalari hozirda tayyor bo'lib, ularni maxsus modullarni ishlab chiqish uchun ishlatish oson. Shunday qilib, men sizga yorqinlik moduli misolida o'zingizning oddiy modulingizni qanday yaratishni ko'rishni taklif qilaman.
Ushbu modullar asosan Arduino-ga mos keladigan taxtadan (Arduino-ning qisman yadrosi, agar Stream, Wire va UART oqimini qo'llab-quvvatlasa, etarli bo'lishi kerak), LED (qizil yoki RGB) muammo yuzaga kelganda qizilga aylanadi. Sensor, quvvat manbai (devor quvvat manbai yoki batareya) va lazer bilan kesilgan korpus.
Ha, bu yangilik emas, albatta, sensorlar loyihalari juda ko'p, lekin umid qilamizki, sog'liqni saqlash muammolarini aniqlash, o'z-o'zini boshqaradigan serverda ma'lumotlarni saqlash va ko'rish va vizualizatsiya kabi boshqa funktsiyalar sizga yordam beradi. Yoki agar siz o'z uyingizni kuzatishni xohlasangiz, oddiy loyihalar yoki qiziqroq:)
1 -qadam: Komponentlarni yig'ish
Ushbu loyiha uchun sizga AtHome modulini yaratish uchun bir nechta komponentlar kerak bo'ladi:
- 1x Arduino-ga mos keladigan taxta: Bu erda men Arduino UNO-dan foydalanaman (lekin u boshqa platalar bilan ham ishlaydi, masalan, TI Launchpads va ESP8266 platalari)
- 1x sensor: Men TSL2561 yorug'lik sensori ishlataman (qo'llab -quvvatlanadigan sensorlar ro'yxati kutubxonamiz hujjatlarida mavjud)
- 1x LED: Men bu erda Grove Chainable RGB LEDini ishlataman (lekin u oddiy qizil LED yoki NeoPixel ham bo'lishi mumkin)
- Dupont Wires
Mos keladigan komponentlar ro'yxati bizning loyihamiz hujjatlarida mavjud.
2 -qadam: Kutubxonamizni o'rnatish
Kutubxonamizni o'rnatish uchun siz bizning havzadan yuklab olishingiz kerak bo'ladi (biz uni keyinchalik Arduino IDE ro'yxati va PlatformIO da e'lon qilamiz), bu havola orqali:
gitlab.com/Woodbox/Framework/-/jobs/artifacts/master/download?job=deploy
Keyin Arduino IDE -ga o'ting va "Chizma> Kutubxonani qo'shish> ZIP kutubxonasini qo'shish …" -ni tanlang. Keyin "artifacts.zip" nomli zip faylini tanlang va "OK" tugmasini bosing.
3 -qadam: Kerakli kutubxonalarni o'rnatish
Ishlash uchun kutubxonamiz kompyuteringizga boshqa kutubxonalarni o'rnatishi kerak:
- Arkhipenko TaskScheduler kutubxonasi
- SEEED Studio Grove Digital Light Sensor kutubxonasi
- SEEED Studio Grove Chainable RGB LED kutubxonasi
- Adafruit NeoPixel kutubxonasi
Siz ularni Arduino IDE kutubxona menejeri orqali o'rnatishingiz mumkin, "Sketch"> "Kutubxonani qo'shish"> "Kutubxonalarni boshqarish …".
Ochilgan yangi oynada oq qidiruv satriga siz o'rnatmoqchi bo'lgan kutubxonaning nomini yozing va uning blokini bosing. "O'rnatish" tugmasi paydo bo'ladi, uni bosish kifoya, IDE esa uni yuklab oladi va siz uchun o'rnatadi.
4 -qadam: Modulni yig'ish
Biz sensordan boshlaymiz. TSL2561 VCC pinini Arduino -ning 5V piniga, sensorning GND pinini Arduino -ning GND piniga va sensorning SDA va SCL pinlariga Arduino -ning SDA va SCL pinlariga sim orqali ulang.. Endi ishingiz tugadi!
Endi Grove Chainable RGB LEDining VCC pinini Arduino -ning 5V piniga va LEDning GND pinini Arduino -ning ikkinchi GND -ga ulang. Agar siz Arduino -da faqat bitta 5V -pinli bo'lsangiz, siz Arduino -ning 5v -ni + taxtaning + qatoriga ulashingiz va unga barcha komponentlaringizni 5V -pinlarini ulashingiz yoki taxtaning bir qismiga lehimlashingiz mumkin. wago ulagichlaridan yoki xohlaganingizdan foydalaning. Endi LEDning CI pinini Arduino -ning 7 -piniga va LED -ning DI -pinini Arduino -ning 8 -piniga ulang. Agar sizda bunday LED bo'lmasa, xavotir olmang, Arduino kartangizning o'rnatilgan LEDini yoki kodni ozgina o'zgartirish bilan klassikasini ishlatish mumkin.
5 -qadam: Yorqinlik moduli eskizini yozish
Keling, yangi eskiz yaratamiz va modulimiz kodini yozamiz.
Agar siz eskizni tushuntirishga qiziqmasangiz, uni nusxalash va Arduino IDE -ga joylashtirishingiz mumkin:
#qo'shing
LightModule = AtHomeModule yordamida; Oqim *oqimlar = {& Serial, nullptr}; GroveChainableLED:: pinlar grovePins = {7, 8}; GroveChainableLED LED (& grovePins); LightModule *moduli = LightModule:: getInstance (); void setup () {// bir marta ishga tushirish uchun sozlash kodini bu erga qo'ying: Serial.begin (9600); modul-> setStreams (oqimlar); GroveDigitalLightSensor *lightSensor = yangi GroveDigitalLightSensor (); modul-> setSensor (lightSensor); modul-> setDisplay (& led); modul-> sozlash (); } void loop () {// qayta-qayta ishga tushirish uchun asosiy kodingizni bu erga qo'ying: module-> run (); }
Agar siz ushbu kod nima qilayotganini tushunmoqchi bo'lsangiz, quyidagilarni o'qishingiz mumkin yoki sizni qiziqtirmasa, to'g'ridan -to'g'ri keyingi bosqichga o'tishingiz mumkin.
Boshlash uchun biz eskizning yuqori qismiga ushbu qatorni yozib, o'z kutubxonamizni eskizga kiritishimiz kerak:
#qo'shing
Endi biz foydalanadigan modul ob'ektiga taxallus yaratishimiz kerak. Siz uni tarkibiy qismlarni o'zgartirish, ishga tushirish, to'xtatish va hk uchun ishlatiladigan bir nechta tugmachali quti sifatida ko'rishingiz mumkin. Bu shablon tomonidan qurilgan quti (biz odamlar sifatida loyihalar uchun foydalanadigan odatiy shablon kabi, u boshlang'ich bazaga ega va Arduino kompilyatori biz bergan parametrlarga asoslanib yakuniy kodni yaratadi) sensorning qiymatini va turini belgilaydi. biz xotirada saqlamoqchi bo'lgan sensorlar qiymatlarining soni, bu uning nomida ko'rsatilgan va har safar uni ishlatmoqchi bo'lganimizda takrorlanishi kerak. Bu biroz zerikarli, shuning uchun biz bu qutining to'liq nomi bilan yangi nom, taxallusni bog'laymiz.
Aytaylik, men bu qutiga "LightModule" nomini berishni xohlayman, chunki u yorqinlikni kuzatish modulini ishlatish uchun ishlatiladi va men bir vaqtning o'zida faqat 1 qiymatni saqlamoqchiman. Yorug'lik lyuksda TSL2561 sensori bilan ajralib turadi, u kompyuterlar tomonidan uint16_t sifatida ifodalanadi. Bizning taxallusimiz shunday bo'ladi:
LightModule = AtHomeModule yordamida;
"foydalanish" kalit so'zining ma'nosi, biz taxallus yaratamiz va unga berilgan nom "=" belgisidan keyingi ketma -ketlikka mos keladi.
"AtHomeModule" - bu qutining haqiqiy nomi, biz yangi nom beramiz va qiymatlar tasvirini va xotirada saqlanadigan qiymatlar sonini belgilaydigan parametrlar "" orasida ko'rsatilgan.
Endi, keyinroq "AtHomeModule" nomidan foydalansak, Arduino "AtHomeModule" to'liq nomiga tegishli ekanligini biladi.
Agar siz qutingiz 1 emas, 5 qiymatni xotirada saqlashini xohlasangiz, "1" ni "5" ga almashtirish kifoya va Arduino siz xohlagan narsani qila oladigan boshqa turdagi qutini yaratadi. E'tibor bering, agar modul sensorning 5 qiymatini samarali o'lchash uchun vaqt bo'lmaguncha o'z qiymatlarini yuborish uchun dasturlashtirilgan bo'lsa, siz ulardan 5 tasi yuborilganini hech qachon ko'rmaysiz, chunki u oxirgi yuklashdan keyin faqat yangi qiymatlarni yuboradi.
Keyinchalik, biz har doim keyworkd "nullptr" bilan tugatilgan, aloqa uchun modul tomonidan ishlatiladigan Arduino oqimlaridagi ko'rsatgichlarni o'z ichiga olgan ko'rsatgichlar qatorini yaratishimiz kerak. Bu erda men faqat USB port orqali kompyuter bilan bog'lanadigan Arduino -ning "ketma -ket" oqimini ishlataman, shuning uchun qator quyidagicha ko'rinadi:
Oqim *oqimlar = {& Serial, nullptr};
"*" Belgisi - bu ko'rsatgich (elementning o'zi emas, elementning joylashuvi) va "" qavslari Arduino -da bu massiv degan ma'noni anglatadi, shuning uchun biz bir nechta qiymatlarni qo'yishimiz mumkin.
Keyinchalik, biz LEDni yaratishimiz kerak. Buning uchun biz quyidagi ikkita qatorni yozishimiz kerak;
GroveChainableLED:: pinlar grovePins = {7, 8};
GroveChainableLED LED (& grovePins);
Agar sizda Grove RGB LED bo'lmasa -da, lekin siz hali ham vizual fikr bildirishni xohlasangiz, buni eskizni oddiy o'zgartirish orqali qilishingiz mumkin. Oldingi ikkita qatorni shu qatorga almashtiring:
Monoxromatik LEDli LED (LED_BUILTIN);
Bu konfiguratsiyada yashil o'rnatilgan LED, kuzatiladigan qiymat sog'liq uchun mos bo'lsa, yonadi va aloqa uzilib qolganda o'chadi. Agar siz uni zaryadsizlangan paytda yoqishni xohlasangiz (masalan, 13 -pindagi yashil chiroq o'rniga qizil LEDni ishlatayotgan bo'lsangiz), buning o'rniga bu qatorni ishlatishingiz mumkin:
Monoxromatik LED yoritgichli (LED_BUILTIN, to'g'ri);
Keyingi qadam, modulni o'zi yaratishdir. Biz birinchi marta "getInstance" usulini chaqirib, uning manzilini xotirada olamiz:
LightModule *moduli = LightModule:: getInstance ();
Keyin, biz Arduino eskizlarida odatdagidek "Serial" portini ishga tushirishdan boshlab, Arduino -ning "setup ()" funktsiyasida parametrlarni o'rnatishimiz kerak:
Serial.begin (9600);
Biz bu chiziqni yozib, yorug'lik sensori yaratamiz:
GroveDigitalLightSensor *lightSensor = yangi GroveDigitalLightSensor ();
Keyin biz o'z modulimizga Arduino Stream -dagi ko'rsatgichlarimizdan ular orqali muloqot qilish uchun aytamiz:
modul-> setStreams (oqimlar);
Shuningdek, biz modulga yorug'lik sensori yordamida yorug'lik intensivligini kuzatishni aytamiz:
modul-> setSensor (lightSensor);
Biz modulimizga LED -ni ishlatib, bizga vizual javob berishini aytamiz:
modul-> setDisplay (& led);
Nihoyat, biz o'z modulimizga o'z "sozlash" funktsiyasini chaqirib, har qanday ichki konfiguratsiyani bajarishga tayyorligini aytamiz:
modul-> sozlash ();
Bizning oxirgi qadamimiz - bu modulning "run ()" funktsiyasini chaqirish, u Arduino "loop" funktsiyasining har bir takrorlanishida chaqirilishi uchun mo'ljallangan bo'lib, bu qatorni "loop" funktsiyasiga yozib qo'yadi:
modul-> ishga tushirish ();
Endi bizning eskizimiz Arduino -ga yuklashga va modulimizni sinab ko'rishga tayyor!
6 -qadam: AtHome modulini sinab ko'rish
Eskizni Arduino -ga yuklash uchun "Asboblar"> "Port"> "[COMx yoki/dev/x] (Arduino/Genuino UNO)" bo'limiga o'ting va Arduino UNO kartasini tanlang.
Eskizni taxtangizga yuklash uchun oxirgi narsa - "Yuklab olish" tugmachasini (o'ng tomonga o'q bilan ko'rsatiladigan aylana tugmasi, asboblar panelidagi ikkinchi belgi) bosish.
Bajarildi! Endi sizning modulingiz ishlashi va Arduino Serial monitorida ko'rinadigan qiymatlarni kompyuteringizga yuborishi kerak. Siz buni "Asboblar" menyusidagi Arduino -ning "Serial monitorini" ochish orqali tekshirishingiz mumkin va sizda bu qadamning ikkinchi sarlavhali rasmiga o'xshash chiqish bo'lishi kerak:)
7 -qadam: Modul uchun korpus yaratish
Siz 3 mm kontrplak taxtasida lazer bilan kesish orqali modulingiz uchun oddiy quti qutisini yasashingiz mumkin.
Qutilar qutilarini tayyorlash uchun biz makercase yordamida shablonni kerakli o'lchamlarda tayyorlaymiz, keyin biz moslashtiramiz. Siz ushbu qadamga biriktirilgan nashrida modulining svg faylini topasiz.
Keyin yuzlarni bir -biriga yopishtiring, shundan keyingina siz uni ochishingiz mumkin, elektronni ichkariga joylashtiring va LEDni korpus teshigiga yopishtiring (biz teshikni to'ldirish uchun shaffof lentani ishlatamiz va LEDni old tomonga yopishtirib qo'yamiz) undan).
Endi Arduino -ni quvvatlantirish uchun batareyani qo'shing, korpusini yoping va modulingiz tayyor va yaxshi ko'rinishi kerak:)
Tavsiya:
YN160 Pro LED yoritgichli yorug'lik chiroqlari, o'zgaruvchan toklar va yorug'lik chiroqlari: 8 qadam
YN160 Pro LED yoritgichli yorug'lik manbai (AC)
Sirli yorug'lik qutisi (tungi yorug'lik): 4 qadam
Sirli yorug'lik qutisi (tungi yorug'lik): Va bu juda oson qiziqarli loyiha, bu loyiha https://www.instructables.com/id/Arduino-Traffic-L…, lekin men allaqachon Men asl saytning tuzilishini o'zgartirdim, men qo'shimcha yoritgichlar qo'shaman va uni to'plash uchun poyabzal qutisini ishlataman
O'zgaruvchan yorug'lik sezuvchi tungi yorug'lik: 8 qadam (rasmlar bilan)
O'zgaruvchan yorug'lik sezgichli tungi yorug'lik: Bu ko'rsatma qo'lda o'chirish uchun tungi yorug'lik sensori qanday buzilganligini ko'rsatadi. Diqqat bilan o'qing, har qanday ochiq sxemalarni yodda tuting va agar kerak bo'lsa, birlikni sinovdan o'tkazishdan oldin o'z hududingizni o'chiring
Yorug'lik sensori bilan harakatni faollashtiradigan yorug'lik tugmasi: 5 qadam
Yorug'lik sensori bilan harakatni faollashtiradigan yorug'lik tugmasi: Harakatlanuvchi yorug'lik tugmasi uyda ham, ofisda ham juda ko'p qo'llanmalarga ega. Biroq, bu yorug'lik sensori bilan jihozlanishning qo'shimcha afzalliklari bo'lib, bu yorug'lik faqat tunda yoqilishi mumkin
Sovuq katodli yorug'lik yordamida makro fotografiya yorug'lik manbai: 9 qadam (rasmlar bilan)
Sovuq katodli chiroqlar yordamida makro fotografiya yorug'lik manbai: Yengil chodir yordamida tortishish paytida past zichlikdagi yorug'lik manbai juda foydali. LCD ekranlarda topilgan CCFL (sovuq katodli lyuminestsent nur) bu maqsad uchun juda mos keladi. CCFL va unga tegishli yorug'lik tarqatuvchi panellarni singan lapto ichida topish mumkin