Mundarija:

AtHome yordamida yorug'lik modulini yarating: 7 qadam
AtHome yordamida yorug'lik modulini yarating: 7 qadam

Video: AtHome yordamida yorug'lik modulini yarating: 7 qadam

Video: AtHome yordamida yorug'lik modulini yarating: 7 qadam
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Noyabr
Anonim
AtHome yordamida yorqinlik modulini yarating
AtHome yordamida yorqinlik modulini yarating

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

Komponentlarni yig'ish
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

Bizning kutubxonani o'rnatish
Bizning kutubxonani o'rnatish
Bizning kutubxonani o'rnatish
Bizning kutubxonani 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

Kerakli kutubxonalarni o'rnatish
Kerakli kutubxonalarni o'rnatish
Kerakli kutubxonalarni o'rnatish
Kerakli kutubxonalarni o'rnatish
Kerakli kutubxonalarni o'rnatish
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

Modulni yig'ish
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

Yorqinlik moduli eskizini yozish
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

AtHome modulini sinovdan o'tkazish
AtHome modulini sinovdan o'tkazish
AtHome modulini sinovdan o'tkazish
AtHome modulini sinovdan o'tkazish

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

Modul uchun korpus yaratish
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: