Съдържание:

Интелигентна LED лампа, управлявана от Bluetooth смартфон: 7 стъпки
Интелигентна LED лампа, управлявана от Bluetooth смартфон: 7 стъпки

Видео: Интелигентна LED лампа, управлявана от Bluetooth смартфон: 7 стъпки

Видео: Интелигентна LED лампа, управлявана от Bluetooth смартфон: 7 стъпки
Видео: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Декември
Anonim
Image
Image
Интелигентна LED лампа, управлявана от Bluetooth смартфон
Интелигентна LED лампа, управлявана от Bluetooth смартфон

Винаги мечтая да контролирам осветителните си уреди. Тогава някой направи невероятна цветна LED лампа. Наскоро попаднах на LED лампа от Джоузеф Каша в Youtube. Вдъхновен от него, реших да добавя няколко функции, като същевременно запазя съвременния дизайн.

Планът е да направим лампата по-удобна за потребителя, като добавим Bluetooth модул и адресируема WS2812B RGB LED лента. Това направи възможно контролирането на цвета на осветлението само с помощта на приложение за смартфон.

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

Съберете материалите
Съберете материалите
Съберете материалите
Съберете материалите

Инструменти:

• Поялна станция

• Пистолет за нагревател

• Пробивна машина

• Циркулярен трион

• Мозайката

• клещи за рязане на тел

• Клещи с тесен нос

Материали:

• Прозрачна акрилна дъска

• Японско кипарисово дърво (или можете да използвате всяко дърво, стига да е стабилно и достатъчно силно)

• Винтове

• Полюс или пръчка от неръждаема стомана

• Проводи (използвам червен и черен проводник)

• Калай за запояване

Електронни компоненти:

• Arduino Nano

• Bluetooth модул HC-05 (реших да използвам това, тъй като е по-лесно да се кодира от Wifi модул ESP8266)

• WS2812B Адресируема RGB LED лента

• Модул за понижаване LM2596

• DC барел захранващ жак

Стъпка 2: Изграждане на структурата на лампата

Изграждане на структурата на лампата
Изграждане на структурата на лампата
Изграждане на структурата на лампата
Изграждане на структурата на лампата

В тази стъпка имам два начина за изграждане на структурата на метода за дървообработване на лампата и метода за 3D печат. Използвам първия метод. Ако предпочитате да го направите с помощта на 3D принтер, не се колебайте да преминете към стъпка 2 за модела, който проектирах.

За горната част на лампата загрявам и огъвам акрилната дъска под ъгъл 90 °, както е показано по -горе. Отнема доста време, за да го огъна до такъв перфектен ъгъл и посока.

След това за долната част на лампата. За съжаление … в деня, в който работя върху долната част на лампата, напълно забравих да снимам конструкцията! Разбрах това, когато завърших този проект. Но ще се постарая да ви дам измерването на долната част на лампата.

По принцип просто трябва да изрежете четири дървени блока с размери 13x6x2cm (LxHxW). След това трябва да изрежете стъпаловиден разрез по ръба на дървото. Картината ще бъде показана по -горе.

Стъпка 3: 3D фигурите

3D фигурите
3D фигурите
3D фигурите
3D фигурите

За всеки, който има собствен 3D принтер, вие сте в правилната стъпка. Това направи тази лампа лесна за употреба.

Честно казано, това беше най -трудната стъпка, която направих. Това е първото нещо, което направих веднага след инсталирането на софтуера!

Използвам Sketchup Pro за проектиране на структурата на лампата. За съжаление не съм достатъчно умел да проектирам интериорния компонент. Връзката към моя 3D модел е във файла по -долу.

Стъпка 4: Схемата на компонентите

Схемата на компонентите
Схемата на компонентите

Използвам Fritzing за конструиране на схемите на компонентите. Схемата всъщност е доста лесна.

Стъпка 5: Кодът

Кодът
Кодът

За кодирането на тази лампа за настроение използвах някои библиотеки от Arduino IDE. Библиотеките ще бъдат изброени на стъпка 7.

За кода трябва да имате самия софтуер Arduino. Ще дам линка за изтегляне тук.

Също така, скицата или кодът ще бъдат показани по -долу?

Предоставих и файла за кода в Github.com в случай, че кодът по -долу е твърде дълъг за копиране тук;)

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

SoftwareSerial BT (10, 11);

#define LED_PIN 7 #define NUM_LEDS 60 #define BRIGHTNESS 200 #define SPEED 10 #define IMMEDIALY 0 #define RAINBOW_SPEED 50 CRGB светодиоди [NUM_LEDS];

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

bool offOld = LOW;

bool WhiteOld = НИСКО; bool RedOld = НИСКО; bool GreenOld = НИСКО; bool BlueOld = НИСКО; bool TopazOld = НИСКО; bool LilacOld = НИСКО; bool RainbowOld = НИСКО; bool rgbOld = НИСКО; int showType = 0;

void setup () {

FastLED.addLeds (светодиоди, NUM_LEDS); //////////

BT.begin (9600);

BT.println ("Свързан с Arduino");

strip.setBrightness (BRIGHTNESS);

strip.begin ();

strip.show ();

}

char a;

void loop () {

for (int i = 0; i <= 59; i ++) {светодиоди = CRGB (255, 255, 255); FastLED.show (); } bool off = LOW; bool Бяло = НИСКО; bool Blue = НИСКО; bool Red = НИСКО; bool Зелено = НИСКО; bool Topaz = НИСКО; bool Люляк = НИСКО; bool Rainbow = НИСКО; bool rgb = НИСКО; bool ende; ако (BT.available ()) {a = (char) BT.read ();

ако (a == 'o')

{off = HIGH; BT.println ("ИЗКЛЮЧВАНЕ на светодиодите..");

} else {

изключено = НИСКО; } // ================================================= ============================================

ако (a == 'w')

{Бяло = ВИСОКО; BT.println ("ВЪРТАНЕ НА светодиодите БЯЛ");

} else {

Бяло = НИСКО; } // ================================================= ============================================

ако (a == 'b')

{Синьо = ВИСОКО; BT.println ("ПРОМЯНА НА СИНЕ"); } else {Синьо = НИСКО; }

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

ако (a == 'r')

{Червено = ВИСОКО; BT.println ("ПРОМЯНА НА ЧЕРВЕНО"); } else {Red = LOW; }

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

ако (a == 'g')

{Зелено = ВИСОКО; BT.println ("ПРОМЯНА НА ЗЕЛЕНО"); } else {Зелено = НИСКО; }

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

ако (a == 't')

{Топаз = ВИСОК; BT.println ("ПРОМЯНА НА TOPAZ"); } else {Топаз = НИСКО; }

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

ако (a == 'l')

{Люляк = ВИСОК; BT.println ("ПРОМЯНА НА ЛИЛАК"); } else {Lilac = LOW; }

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

ако (a == 'a')

{Rainbow = HIGH; BT.println ("ДЪГОВА АНИМАЦИЯ"); } else {Rainbow = LOW; } // ================================================= ============================================

ако (a == 'm')

{rgb = ВИСОК; BT.println ("СМЕСИ ЦВЕТОВЕ"); } else {rgb = LOW; }} if (off == LOW && offOld == HIGH) {забавяне (20); if (off == LOW) {showType = 0; // Изключена анимация Тип 0 startShow (showType); }}

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

if (Бяло == НИСКО && WhiteOld == ВИСОКО) {

забавяне (20); if (Бяло == НИСКО) {showType = 1; // Бяла анимация Тип 1 startShow (showType); }}

// ================================================ =========================================== ако (Червено == НИСКО && RedOld == HIGH) {забавяне (20); if (Червено == НИСКО) {showType = 2; // Червена анимация Тип 2 startShow (showType); }}

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

if (Зелено == LOW && GreenOld == HIGH) {

забавяне (20); if (Зелено == LOW) {showType = 3; // Зелена анимация Тип 3 startShow (showType); }} // ============================================== ===============================================

if (Синьо == НИСКО && BlueOld == ВИСОКО) {

забавяне (20); if (Синьо == НИСКО) {showType = 4; // Синя анимация Тип 4 startShow (showType); }}

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

if (Topaz == LOW && TopazOld == HIGH) {

забавяне (20); if (Topaz == LOW) {showType = 5; // Topaz анимация Тип 5 startShow (showType); }}

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

if (Lilac == LOW && LilacOld == HIGH) {

забавяне (20); if (Люляк == LOW) {showType = 6; // Topaz анимация Тип 6 startShow (showType); }} // ============================================== ===============================================

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

забавяне (20);

if (Rainbow == LOW) {

showType = 8; // Дъгова анимация Тип 8 startShow (showType); }}

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

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

забавяне (20);

if (rgb == LOW) {

showType = 7; // Смесена анимация Тип 7 rgb = HIGH;

startShow (showType);

} }

WhiteOld = Бяло;

RedOld = Червено; BlueOld = Синьо; GreenOld = Зелено; TopazOld = Топаз; LilacOld = Люляк; offOld = изключено; RainbowOld = Rainbow; rgbOld = rgb;

}

void startShow (int i) {

превключвател (i) {

случай 0: colorWipe (strip. Color (0, 0, 0), SPEED); // Черно/изключено

прекъсване;

случай 1: strip.setBrightness (255); // Променя яркостта на MAX

colorWipe (strip. Color (255, 255, 255), ВЕДНАГА); // Бяла лента.setBrightness (BRIGHTNESS); // Нулиране на яркостта до стойност по подразбиране;

случай 2: colorWipe (strip. Color (255, 0, 0), SPEED); // Червен

прекъсване;

случай 3: colorWipe (strip. Color (0, 255, 0), SPEED); // Зелено

прекъсване;

случай 4: colorWipe (strip. Color (0, 0, 255), SPEED); // Син

прекъсване;

случай 5: colorWipe (strip. Color (0, 250, 255), SPEED); // Топаз

прекъсване;

случай 6: colorWipe (strip. Color (221, 130, 255), SPEED); // Люляк

прекъсване; случай 7: colorWipe (strip. Color (255, 0, 0), SPEED); // Червен цвятWipe (strip. Color (0, 255, 0), SPEED); // Зелен colorWipe (strip. Color (0, 0, 255), SPEED); // Син театърChase (strip. Color (0, 0, 127), SPEED); // Син театърChase (strip. Color (127, 0, 0), SPEED); // Червен театърChase (strip. Color (0, 127, 0), SPEED); // Зелена пауза;

случай 8: rainbowCycle (25);

прекъсване; }} void colorWipe (uint32_t c, uint8_t чакане) {for (uint16_t i = 0; i

void rainbowCycle (uint8_t чакане) {

uint16_t i, j;

за (j = 0; j <256*10; j ++) {// 5 цикъла на всички цветове на колелото за (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); забавяне (изчакване); }}

void TheaterChase (uint32_t c, uint8_t чакане) {

for (int j = 0; j <10; j ++) {// направете 10 цикъла на преследване за (int q = 0; q <3; q ++) {for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // включваме всеки трети пиксел} strip.show ();

забавяне (изчакване);

for (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // изключваме всеки трети пиксел}}}}

uint32_t Wheel (байт WheelPos) {

WheelPos = 255 - WheelPos; if (WheelPos <85) {return strip. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; обратна лента. Color (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; обратна лента. Цвет (WheelPos * 3, 255 - WheelPos * 3, 0); }

Стъпка 6: Управление на лампата

Управление на лампата
Управление на лампата
Управление на лампата
Управление на лампата
Управление на лампата
Управление на лампата

Цветът на лампата може да се контролира с помощта на вашия смартфон.

Първо, трябва да инсталирате приложението, наречено „Bluetooth терминал HC-05“от Google Play Store или Apple App Store.

Ето стъпките за управление на лампата чрез вашия собствен смартфон:

1. Включете Bluetooth в смартфона си.

2. Отворете приложението, което е „Bluetooth терминал HC-05“.

3. Сега трябва да видите сдвоените устройства на екрана. Изберете „HC-05“.

4. Сега можете да видите черен екран се появява във вашия смартфон, който ще показва „свързан с Arduino“.

5. Ето забавната част, ако въведете „b“в текстовото поле, лампата ще се превърне в син цвят. Ето списъка с командите, които можете да въведете за лампата:

- w за бяло

- b за синьо

- g за зелено

- r за червено

- t за топаз

- l за люляк

- a за анимация на дъгата

- o за изключване

Забавно нали?

6. Не на последно място, можете също да персонализирате бутона под екрана до желания от вас текст, както е показано на снимката по -горе.

Стъпка 7: Насладете се на лампата за настроение

Насладете се на лампата си за настроение !!
Насладете се на лампата си за настроение !!
Насладете се на лампата си за настроение !!
Насладете се на лампата си за настроение !!
Насладете се на лампата си за настроение !!
Насладете се на лампата си за настроение !!

Надявам се този Instructables да ви хареса. Това беше много предизвикателен проект за мен, но успях да го завърша напълно като 14-годишно момче. Дайте ми обратна връзка за бъдещи подобрения.

Благодаря за четенето и Весела Коледа!

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