Mundarija:

Bluetooth Smartfon tomonidan boshqariladigan Smart LED chiroq: 7 qadam
Bluetooth Smartfon tomonidan boshqariladigan Smart LED chiroq: 7 qadam

Video: Bluetooth Smartfon tomonidan boshqariladigan Smart LED chiroq: 7 qadam

Video: Bluetooth Smartfon tomonidan boshqariladigan Smart LED chiroq: 7 qadam
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Iyul
Anonim
Image
Image
Bluetooth Smartfon tomonidan boshqariladigan Smart LED chiroq
Bluetooth Smartfon tomonidan boshqariladigan Smart LED chiroq

Men har doim yorug'lik asboblarimni boshqarishni orzu qilaman. Keyin kimdir aql bovar qilmaydigan rangli LED chiroqni yasadi. Men yaqinda Youtube -da Jozef Kashaning LED lampasini uchratdim. Bundan ilhomlanib, men zamonaviy dizaynni saqlab, bir nechta funktsiyalarni qo'shishga qaror qildim.

Reja, Bluetooth modulini va manzilga mos keladigan WS2812B RGB LED tasmasini qo'shish orqali chiroqni yanada qulayroq qilishdir. Bu faqat smartfon ilovasi yordamida yorug'lik rangini boshqarishga imkon berdi.

1 -qadam: Materiallarni yig'ish

Materiallarni yig'ing
Materiallarni yig'ing
Materiallarni yig'ing
Materiallarni yig'ing

Asboblar:

• Lehimlash stantsiyasi

• Isitgich puflagichi

• Matkap mashinasi

• Dumaloq arra

• Jigsaw

• Tel kesuvchi penseler

• Burun qisqichlari

Materiallar:

• Shaffof akril taxta

• Yapon Cypress yog'och (yoki har qanday yog'ochdan foydalanish mumkin, agar u mustahkam va mustahkam bo'lsa)

• vintlardek

• Zanglamas po'latdan yasalgan qutb yoki tayoq

• Simlar (men qizil va qora simlardan foydalanaman)

• Kalay lehim

Elektron komponentlar:

• Arduino Nano

• Bluetooth moduli HC-05 (men buni ishlatishga qaror qildim, chunki kodlash Wifi ESP8266 moduliga qaraganda osonroq)

• WS2812B manzilli RGB LED tasmasi

• LM2596 pastga tushirish moduli

• DC Barrel Power Jack

2 -qadam: Chiroq tuzilishini qurish

Chiroq tuzilishini qurish
Chiroq tuzilishini qurish
Chiroq tuzilishini qurish
Chiroq tuzilishini qurish

Bu bosqichda menda chiroqni tuzilishini qurishning ikkita usuli bor- yog'ochga ishlov berish usuli va 3D bosib chiqarish usuli. Men birinchi usuldan foydalanaman. Agar siz buni 3D printer yordamida qilishni xohlasangiz, men ishlab chiqargan modelning 2 -bosqichiga o'ting.

Chiroqning yuqori qismi uchun men akril taxtani yuqorida ko'rsatilgan 90 ° burchakka qizdiraman va egaman. Men uni mukammal burchakka va yo'nalishga burishim uchun ancha vaqt kerak bo'ladi.

Keyinchalik, chiroqning pastki qismi uchun. Afsuski … men chiroqning pastki qismida ishlayotgan kun, men konstruksiyani suratga olishni umuman unutib qo'ydim! Men buni loyihani tugatganimda tushundim. Lekin men sizga chiroqning pastki qismini o'lchashni ta'minlash uchun qo'limdan kelganicha harakat qilaman.

Asosan, siz 13x6x2 sm (LxHxW) o'lchamdagi to'rtta yog'och blokni kesishingiz kerak. Keyinchalik, siz yog'och chetida zinapoyaga o'xshash kesishingiz kerak. Rasm yuqorida ko'rsatiladi.

3 -qadam: 3D shakllari

3D shakllari
3D shakllari
3D shakllari
3D shakllari

O'z 3D printeriga ega bo'lgan har bir kishi uchun siz to'g'ri qadamdasiz. Bu chiroqni foydalanuvchilarga qulay qilib qo'ydi.

Rostini aytsam, bu men qilgan eng qiyin qadam edi. Bu dasturiy ta'minotni o'rnatgandan so'ng darhol qilgan birinchi ishim!

Men chiroq tuzilishini loyihalash uchun Sketchup Pro -dan foydalanaman. Afsuski, men uning ichki qismini loyihalashda mohir emasman. Mening 3D modelimga havola quyidagi faylda.

4 -qadam: Komponentlarning sxemasi

Komponentlarning sxemasi
Komponentlarning sxemasi

Men komponentlarni sxemasini tuzishda Fritzingdan foydalanaman. Sxemasi aslida juda oson.

5 -qadam: Kod

Kodeks
Kodeks

Ushbu kayfiyat chiroqini kodlash uchun men Arduino IDE ba'zi kutubxonalaridan foydalandim. Kutubxonalar 7 -bosqichda ro'yxatga olinadi.

Kodni olish uchun siz Arduino dasturiga ega bo'lishingiz kerak. Men bu erga yuklab olish havolasini beraman.

Shuningdek, eskiz yoki kod quyida ko'rsatiladimi?

Quyidagi kod bu erdan nusxa ko'chirish uchun juda uzun bo'lsa, men ham Github.com saytidagi kod uchun faylni taqdim qildim;)

#include #include #include #ifdef _AVR_ #include #endif

SoftwareSerial BT (10, 11);

#LED_PIN 7ni belgilang #NUM_LEDSni belgilang 60 #Yorqinlikni belgilang 200 #tezligini aniqlang 10 #ZAMONA aniqlang 0 #RAINBOW_SPEEDni aniqlang 50 CRGB led [NUM_LEDS];

Adafruit_NeoPixel tasmasi = Adafruit_NeoPixel (NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);

bool offOld = LOW;

bool WhiteOld = LOW; bool RedOld = LOW; bool GreenOld = LOW; bool BlueOld = LOW; bool TopazOld = LOW; bool LilacOld = LOW; bool RainbowOld = LOW; bool rgbOld = LOW; int showType = 0;

bo'sh o'rnatish () {

FastLED.addLeds (LEDlar, NUM_LEDS); //////////

BT.begin (9600);

BT.println ("Arduino bilan bog'langan");

strip.setBrightness (Yorqinligi);

strip.begin ();

strip.show ();

}

char a;

void loop () {

uchun (int i = 0; i <= 59; i ++) {leds = CRGB (255, 255, 255); FastLED.show (); } bool off = LOW; bool Oq = LOW; bool Moviy = LOW; bool Qizil = LOW; bool Green = LOW; bool Topaz = LOW; bool Lilac = LOW; bool Kamalak = LOW; bool rgb = LOW; bool ende; agar (BT.available ()) {a = (char) BT.read ();

agar (a == 'o')

{o'chirilgan = YUQORI; BT.println ("LEDlarni O'chirish..");

} boshqa {

o'chirilgan = LOW; } // ============================================== ==========================================

agar (a == 'w')

{Oq = YUQORI; BT.println ("LEDlarni oq rangga burish");

} boshqa {

Oq = LOW; } // ============================================== ==========================================

agar (a == 'b')

{Moviy = YUQORI; BT.println ("KO'ZGA O'ZGARTIRISH"); } else {Moviy = LOW; }

// ===========================================================================================

agar (a == 'r')

{Qizil = YUQORI; BT.println ("Qizilga o'zgartirish"); } boshqa {Qizil = LOW; }

// ===========================================================================================

agar (a == 'g')

{Yashil = YUQORI; BT.println ("Yashilga o'zgartirish"); } boshqa {Yashil = LOW; }

// ===========================================================================================

agar (a == 't')

{Topaz = YUQORI; BT.println ("TOPAZNI O'ZGARTIRISH"); } boshqa {Topaz = LOW; }

// ===========================================================================================

agar (a == 'l')

{Lilak = YUQORI; BT.println ("LILAKA OZGARISH"); } boshqa {Lilac = LOW; }

// ===========================================================================================

agar (a == 'a')

{Kamalak = YUQORI; BT.println ("Rainbow animatsiyasi"); } else {Kamalak = LOW; } // ============================================== ==========================================

agar (a == 'm')

{rgb = YUQORI; BT.println ("MIX COLORS"); } boshqa {rgb = LOW; }} if (off == LOW && offOld == HIGH) {delay (20); if (off == LOW) {showType = 0; // O'chirilgan animatsiya 0 startShow (showType) yozing; }}

// ===========================================================================================

agar (Oq == LOW && WhiteOld == YUQORI) {

kechikish (20); agar (Oq == LOW) {showType = 1; // 1 -toifali oq animatsiya startShow (showType); }}

// =============================================== ========================================== if (Qizil == LOW && RedOld == YUQORI) {kechiktirish (20); agar (Qizil == LOW) {showType = 2; // 2 -turdagi qizil animatsiya startShow (showType); }}

// ===========================================================================================

agar (Yashil == LOW && GreenOld == YUQORI) {

kechikish (20); agar (Yashil == LOW) {showType = 3; // 3 -turdagi startShow (showType) yashil animatsiyasi; }} // ============================================= ============================================

agar (Moviy == LOW && BlueOld == YUQORI) {

kechikish (20); agar (Moviy == LOW) {showType = 4; // Moviy animatsiya 4 -turdagi startShow (showType); }}

// ===========================================================================================

agar (Topaz == LOW && TopazOld == YUQORI) {

kechikish (20); agar (Topaz == LOW) {showType = 5; // Topaz animatsiyasi 5 -turdagi startShow (showType); }}

// ===========================================================================================

agar (Lilak == LOW && LilacOld == YUQORI) {

kechikish (20); agar (Lilac == LOW) {showType = 6; // Topaz animatsiyasi 6 -turdagi startShow (showType); }} // ============================================= ============================================

agar (Rainbow == LOW && RainbowOld == HIGH) {

kechikish (20);

agar (Kamalak == LOW) {

showType = 8; // Kamalak animatsiyasi 8 -toifa startShow (showType); }}

// ===========================================================================================

agar (rgb == LOW && rgbOld == HIGH) {

kechikish (20);

agar (rgb == LOW) {

showType = 7; // Mix animatsiya turi 7 rgb = HIGH;

startShow (showType);

} }

WhiteOld = Oq;

RedOld = Qizil; BlueOld = Moviy; GreenOld = Yashil; TopazOld = Topaz; LilacOld = Lilac; offOld = o'chirilgan; RainbowOld = Kamalak; rgbOld = rgb;

}

void startShow (int i) {

kalit (i) {

0 holat: colorWipe (tasma. Rang (0, 0, 0), SPEED); // Qora/o'chirilgan

tanaffus;

1 -holat: strip.setBrightness (255); // Yorqinlikni MAX ga o'zgartiradi

colorWipe (tasma. Rang (255, 255, 255), Zudlik bilan); // Oq chiziq.setBrightness (YORGILIK); // Yorqinlikni standart qiymat tanaffusiga qaytarish;

2 -holat: colorWipe (tasma. Rang (255, 0, 0), SPEED); // Qizil

tanaffus;

3 -holat: colorWipe (tasma. Rang (0, 255, 0), SPEED); // Yashil

tanaffus;

4 -holat: colorWipe (tasma. Rang (0, 0, 255), SPEED); // Moviy

tanaffus;

5 -holat: colorWipe (tasma. Rang (0, 250, 255), SPEED); // Topaz

tanaffus;

6 -holat: colorWipe (tasma. Rang (221, 130, 255), SPEED); // Lilak

tanaffus; 7 -holat: colorWipe (tasma. Rang (255, 0, 0), SPEED); // Red colorWipe (strip. Color (0, 255, 0), SPEED); // Yashil colorWipe (tasma. Rang (0, 0, 255), SPEED); // Moviy teatrChase (strip. Color (0, 0, 127), SPEED); // Moviy teatrChase (strip. Color (127, 0, 0), SPEED); // Qizil teatrChase (strip. Color (0, 127, 0), SPEED); // Yashil tanaffus;

8 -holat: RainbowCycle (25);

tanaffus; }} void colorWipe (uint32_t c, uint8_t kuting) {for (uint16_t i = 0; i

yaroqsiz kamalak tsikli (uint8_t kutmang) {

uint16_t i, j;

for (j = 0; j <256*10; j ++) {// g'ildirakdagi barcha ranglarning 5 tsikli uchun (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); kechiktirish (kutish); }}

void teatrChase (uint32_t c, uint8_t kuting) {

for (int j = 0; j <10; j ++) {// (int q = 0; q <3; q ++) {uchun (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // har uchinchi pikselni} strip.show () ga aylantiring;

kechiktirish (kutish);

uchun (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // har uchinchi pikselni o'chiring}}}}

uint32_t g'ildirak (bayt WheelPos) {

WheelPos = 255 - WheelPos; if (WheelPos <85) {qaytish chizig'i. Color (255 - WheelPos * 3, 0, WheelPos * 3); } agar (WheelPos <170) {WheelPos -= 85; Qaytish chizig'i Rang (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; Qaytish chizig'i Rang (WheelPos * 3, 255 - WheelPos * 3, 0); }

6 -qadam: Chiroqni boshqarish

Chiroqni boshqarish
Chiroqni boshqarish
Chiroqni boshqarish
Chiroqni boshqarish
Chiroqni boshqarish
Chiroqni boshqarish

Smartfon yordamida chiroq rangini boshqarish mumkin.

Birinchidan, siz Google Play Store yoki Apple App Store-dan "Bluetooth Terminal HC-05" deb nomlangan ilovani o'rnatishingiz kerak.

O'zingizning smartfoningiz orqali chiroqni boshqarish uchun qadamlar:

1. Smartfoningizda bluetooth -ni yoqing.

2. "Bluetooth terminali HC-05" bo'lgan ilovani oching.

3. Endi siz ekranda juftlangan qurilmalarni ko'rishingiz kerak. "HC-05" ni tanlang.

4. Endi siz smartfoningizda "Arduino -ga ulangan" degan yozuvni ko'rsatadigan qora ekran paydo bo'lishini ko'rishingiz mumkin.

5. Mana, qiziqarli qism, agar matn qutisiga 'b' yozsangiz, chiroq ko'k rangga aylanadi. Chiroq uchun yozishingiz mumkin bo'lgan buyruqlar ro'yxati:

- oq uchun w

- ko'k uchun b

- yashil uchun g

- r uchun

- topaz uchun

- lilak uchun

- kamalak animatsiyasi uchun

- o o'chirish uchun

Qiziq, to'g'rimi?

6. Oxirgi, lekin hech bo'lmaganda, siz yuqoridagi rasmda ko'rsatilgandek, ekran ostidagi tugmani kerakli matnga moslashtirishingiz mumkin.

7 -qadam: Kayfiyatingizdan zavqlaning !

Kayfiyatingiz chiroqidan rohatlaning !!
Kayfiyatingiz chiroqidan rohatlaning !!
Kayfiyatingiz chiroqidan rohatlaning !!
Kayfiyatingiz chiroqidan rohatlaning !!
Kayfiyatingiz chiroqidan rohatlaning !!
Kayfiyatingiz chiroqidan rohatlaning !!

Umid qilamanki, sizga bu ko'rsatma yoqadi. Bu men uchun juda qiyin loyiha edi, lekin men uni 14 yoshli bola sifatida tugatishga muvaffaq bo'ldim. Menga kelgusidagi yaxshilanishlar haqida fikr bildiring.

O'qiganingiz uchun tashakkur va Rojdestvo bilan!

Tavsiya: