Мазмұны:

Bluetooth смартфонмен басқарылатын ақылды жарықдиодты шам: 7 қадам
Bluetooth смартфонмен басқарылатын ақылды жарықдиодты шам: 7 қадам

Бейне: Bluetooth смартфонмен басқарылатын ақылды жарықдиодты шам: 7 қадам

Бейне: Bluetooth смартфонмен басқарылатын ақылды жарықдиодты шам: 7 қадам
Бейне: Xiaomi Yeelight Led үстел шамы - мидың жоқ шамы 2024, Қараша
Anonim
Image
Image
Bluetooth смартфонмен басқарылатын ақылды жарықдиодты шам
Bluetooth смартфонмен басқарылатын ақылды жарықдиодты шам

Мен әрқашан жарықтандыру құрылғыларын басқаруды армандаймын. Содан кейін біреу керемет түсті жарықдиодты шам жасады. Мен жақында Youtube -те Джозеф Кашаның жарықдиодты шамымен кездестім. Бұдан шабыт алып, мен заманауи дизайнды сақтай отырып, бірнеше функцияларды қосуды шештім.

Жоспар-Bluetooth модулін және WS2812B RGB адрестік диодты жолағын қосу арқылы шамды қолданушыға ыңғайлы ету. Бұл жарықтандырудың түсін тек смартфон қосымшасының көмегімен басқаруға мүмкіндік берді.

1 -қадам: материалдарды жинаңыз

Материалдарды жинаңыз
Материалдарды жинаңыз
Материалдарды жинаңыз
Материалдарды жинаңыз

Құралдар:

• Дәнекерлеу станциясы

• Жылытқыш үрлегіш

• Бұрғылау машинасы

• Дөңгелек аралау

• Джигсо

• Сым кескіш тістеуік

• Тар мұрынды қысқыштар

Материалдар:

• Мөлдір акрил тақтасы

• Жапон кипарис ағашы (немесе кез келген ағашты қолдануға болады, егер ол тұрақты және берік болса)

• Бұрандалар

• Тот баспайтын болаттан жасалған полюс немесе таяқша

• Сымдар (мен қызыл және қара сымды қолданамын)

• Пісіру қалайы

Электроника компоненттері:

• Ардуино Нано

• HC-05 Bluetooth модулі (мен оны қолдануды шештім, себебі WSP модуліне қарағанда кодтау оңай ESP8266)

• WS2812B адрестелетін RGB жарық диодты жолағы

• 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 сайтында төмендегі кодты көшіру үшін тым ұзақ болған жағдайда ұсындым;)

#қосу #қосу #қосу #ifdef _AVR_ #қосу #endif

SoftwareSerial BT (10, 11);

#LED_PIN 7 анықтау #NUM_LEDS анықтау 60 #ЖАРҚЫНДЫҚТЫ анықтау 200 #ЖЫЛДЫҚТЫ анықтау 10 #ДАСТЫРАА айқындау 0 #RAINBOW_SPEED 50 CRGB светодиодтарын анықтау [NUM_LEDS];

Adafruit_NeoPixel жолағы = 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;

жарамсыз орнату () {

FastLED.addLeds (leds, 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 ++) {leds = CRGB (255, 255, 255); FastLED.show (); } bool off = LOW; bool White = LOW; bool Blue = LOW; bool Қызыл = LOW; bool Green = LOW; bool Топаз = LOW; bool Lilac = LOW; bool Радуга = LOW; bool rgb = LOW; bool ende; if (BT.available ()) {a = (char) BT.read ();

егер (a == 'o')

{өшіру = ЖОҒАРЫ; BT.println («Светодиодтарды өшіру..»);

} басқа {

өшіру = LOW; } // =============================================== ===========================================

егер (a == 'w')

{Ақ = ЖОҒАРЫ; BT.println («Светодиодты ақ түске айналдыру»);

} басқа {

Ақ = LOW; } // =============================================== ===========================================

егер (a == 'b')

{Көк = ЖОҒАРЫ; BT.println («КӨКТІ ӨЗГЕРТУ»); } else {Blue = LOW; }

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

егер (a == 'r')

{Қызыл = ЖОҒАРЫ; BT.println («ҚЫЗЫЛҒА ӨЗГЕРУ»); } else {Red = LOW; }

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

егер (a == 'g')

{Жасыл = ЖОҒАРЫ; BT.println («ЖАСЫЛҒА ӨЗГЕРУ»); } else {Green = LOW; }

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

егер (a == 't')

{Топаз = жоғары; BT.println («ТОПАЗҒА ӨЗГЕРУ»); } else {Topaz = LOW; }

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

егер (a == 'l')

{Сирень = жоғары; BT.println («ЖЕЛІСІЗГЕ ӨЗГЕРУ»); } else {Lilac = LOW; }

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

егер (a == 'a')

{Радуга = Жоғары; BT.println («Радуга анимациясы»); } else {Rainbow = LOW; } // =============================================== ===========================================

егер (a == 'm')

{rgb = HIGH; BT.println («MIX COLORS»); } else {rgb = LOW; }} if (off == LOW &&OOld == HIGH) {delay (20); if (off == LOW) {showType = 0; // Өшірілген анимация 0 типті startShow (showType); }}

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

if (White == LOW && WhiteOld == HIGH) {

кешіктіру (20); if (White == LOW) {showType = 1; // 1 типті ақ анимация startShow (showType); }}

// ================================================ =========================================== if (Қызыл == ТӨМЕН && RedOld == HIGH) {кешіктіру (20); if (Red == LOW) {showType = 2; // Қызыл анимация 2 типті startShow (showType); }}

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

if (Green == LOW && GreenOld == HIGH) {

кешіктіру (20); if (Green == LOW) {showType = 3; // Жасыл анимация 3 типті startShow (showType); }} // ============================================== ============================================

if (Blue == LOW && BlueOld == HIGH) {

кешіктіру (20); if (Blue == LOW) {showType = 4; // Көк анимация 4 типті startShow (showType); }}

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

егер (Топаз == LOW && TopazOld == HIGH) {

кешіктіру (20); if (Топаз == ТӨМЕН) {showType = 5; // Topaz анимациясы Type 5 startShow (showType); }}

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

егер (Lilac == LOW & LilacOld == HIGH) {

кешіктіру (20); if (Lilac == LOW) {showType = 6; // Топаз анимациясы Type 6 startShow (showType); }} // ============================================== ============================================

егер (Rainbow == LOW && RainbowOld == HIGH) {

кешіктіру (20);

егер (кемпірқосақ == төмен) {

showType = 8; // Радуга анимациясы Type 8 startShow (showType); }}

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

егер (rgb == LOW && rgbOld == HIGH) {

кешіктіру (20);

егер (rgb == LOW) {

showType = 7; // Микс анимация түрі 7 rgb = HIGH;

startShow (showType);

} }

WhiteOld = Ақ;

RedOld = Қызыл; BlueOld = Көк; GreenOld = Жасыл; TopazOld = Топаз; LilacOld = сирень; offOld = өшірулі; RainbowOld = Радуга; rgbOld = rgb;

}

жарамсыз startShow (int i) {

қосқыш (i) {

0 жағдай: colorWipe (жолақ. Түс (0, 0, 0), SPEED); // Қара/өшіру

үзіліс;

1 -жағдай: strip.setBrightness (255); // Жарықтықты MAX мәніне өзгертеді

colorWipe (жолақ. Түс (255, 255, 255), ТЕЗ); // Ақ жолақ.setBrightness (BRIGHTNESS); // Жарықтықты әдепкі мәнге қайтару;

2 -жағдай: colorWipe (жолақ. Түс (255, 0, 0), SPEED); // Қызыл

үзіліс;

3 -жағдай: colorWipe (жолақ. Түс (0, 255, 0), SPEED); // Жасыл

үзіліс;

4 -жағдай: colorWipe (жолақ. Түс (0, 0, 255), SPEED); // Көк

үзіліс;

5 -жағдай: colorWipe (жолақ. Түс (0, 250, 255), SPEED); // Топаз

үзіліс;

6 -жағдай: colorWipe (жолақ. Түс (221, 130, 255), SPEED); // сирень

үзіліс; 7 -жағдай: colorWipe (жолақ. Түс (255, 0, 0), SPEED); // Red colorWipe (жолақ. Color (0, 255, 0), SPEED); // Green colorWipe (жолақ. Түс (0, 0, 255), SPEED); // Көк театрChase (жолақ. Color (0, 0, 127), SPEED); // Көк театрChase (жолақ. Color (127, 0, 0), SPEED); // Қызыл театрChase (жолақ. Color (0, 127, 0), SPEED); // Жасыл үзіліс;

8 -жағдай: кемпірқосақ циклы (25);

үзіліс; }} void colorWipe (uint32_t c, uint8_t күту) {үшін (uint16_t i = 0; i

жарамсыз кемпірқосақ циклы (uint8_t күту) {

uint16_t i, j;

for (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 teatrChase (uint32_t c, uint8_t күту) {

for (int j = 0; j <10; j ++) {// for (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) {қайтару жолағы. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; қайтару жолағы. Color (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; қайтару жолағы. Color (WheelPos * 3, 255 - WheelPos * 3, 0); }

6 -қадам: шамды басқару

Шамды басқару
Шамды басқару
Шамды басқару
Шамды басқару
Шамды басқару
Шамды басқару

Шамның түсін смартфон арқылы басқаруға болады.

Алдымен, Google Play Store немесе Apple App Store дүкенінен 'Bluetooth Terminal HC-05' деп аталатын қосымшаны орнату қажет.

Бұл жеке смартфон арқылы шамды басқаруға арналған қадамдар:

1. Смартфонда bluetooth қосыңыз.

2. 'HC-05 Bluetooth терминалы' қосымшасын ашыңыз.

3. Енді экранда жұптастырылған құрылғыларды көру керек. «HC-05» таңдаңыз.

4. Енді сіз смартфоныңызда «Arduino -ға қосылған» белгісін беретін қара экранды көре аласыз.

5. Міне, қызықты жері, егер мәтін ұясына 'b' терсеңіз, шам көк түске айналады. Міне шамға теруге болатын командалардың тізімі:

- ақ түс үшін

- көк үшін b

- g үшін жасыл

- қызыл түс үшін

- топаз үшін

- мен сирень үшін

- кемпірқосақ анимациясына арналған

- o өшіру үшін

Көңілді, дұрыс па?

6. Соңында, бірақ сіз жоғарыдағы суретте көрсетілгендей экранның астындағы түймені өзіңіз қалаған мәтінге теңшей аласыз.

7 -қадам: көңіл -күй шамынан рахат алыңыз

Көңіл -күй лампасынан рахат алыңыз !!
Көңіл -күй лампасынан рахат алыңыз !!
Көңіл -күй лампасынан рахат алыңыз !!
Көңіл -күй лампасынан рахат алыңыз !!
Көңіл -күй лампасынан рахат алыңыз !!
Көңіл -күй лампасынан рахат алыңыз !!

Сізге бұл нұсқаулық ұнайды деп үміттенемін. Бұл мен үшін өте қиын жоба болды, бірақ мен оны 14 жасымда аяқтадым. Болашақ жақсартулар үшін маған кері байланыс беріңіз.

Оқығаныңыз үшін рахмет және Рождество мерекесі!

Ұсынылған: