Съдържание:
- Стъпка 1: Съберете материалите
- Стъпка 2: Изграждане на структурата на лампата
- Стъпка 3: 3D фигурите
- Стъпка 4: Схемата на компонентите
- Стъпка 5: Кодът
- Стъпка 6: Управление на лампата
- Стъпка 7: Насладете се на лампата за настроение
Видео: Интелигентна LED лампа, управлявана от Bluetooth смартфон: 7 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Винаги мечтая да контролирам осветителните си уреди. Тогава някой направи невероятна цветна 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 принтер, вие сте в правилната стъпка. Това направи тази лампа лесна за употреба.
Честно казано, това беше най -трудната стъпка, която направих. Това е първото нещо, което направих веднага след инсталирането на софтуера!
Използвам 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-годишно момче. Дайте ми обратна връзка за бъдещи подобрения.
Благодаря за четенето и Весела Коледа!
Препоръчано:
Zwift Ambilight и интелигентна лампа за зона на сърдечната честота: 4 стъпки
Zwift Ambilight и лампа Smartbulb Zone Heart Rate Zone: Тук изграждаме малко ГОЛЯМО подобрение за Zwift. В края на краищата имате ambilight за по -голямо забавление при каране на тъмно. И имате лампа (Yeelight) за зоните на сърдечния ритъм. Използвам тук 2 Raspberry PI, ако искате само Yeelight, имате нужда само от 1 PI, ако
Интелигентна LED нощна лампа: 5 стъпки
Интелигентна LED нощна лампа: Имали ли сте някога опит да се събуждате през нощта, търсейки превключвателя на светлината? Тези дни свършиха, сега това устройство е интелигентна LED нощна лампа, която може да се включи с едно движение на ръката ви. Хората трябва да имат този интелигентен LE
Интелигентна количка за пазаруване, управлявана от смартфон: 7 стъпки
Интелигентна количка за пазаруване със смартфон: Посещението на търговски центрове може да бъде забавно. Но влаченето на количката за пазаруване, докато я пълните с неща, е нещо, което е направо досадно. Болката да го прокараш през тези тесни пътеки, да направиш тези резки завои! И така, ето (вид) оферта, която можете да
Лесна интелигентна лампа за $ 5 с уеб интерфейс за смартфон: 4 стъпки
Лесна интелигентна лампа за $ 5 с уеб интерфейс за смартфон: Здравейте! Казвам се Рафаел. Това е първият ми Instructable! Основният ми мотив за създаването на тази лампа е да помогна на живота на хора в неравностойно положение. Някой ден няма да имаме превключватели по стените или труднодостъпни щепсели, а по-скоро нашите смартфони за управление
Зелена LED лампа (управлявана със мигащ светодиод): 9 стъпки
Зелена LED лампа (контролирана със мигащ светодиод): Преди няколко години прочетох статия за осветлението в развиващите се страни, в която се казва, че 1,6 милиарда души нямат достъп до електричество и надеждният източник на осветление е ГОЛЯМ проблем за тях. Една канадска компания произвежда и разпространява lightin