Мазмуну:

Bluetooth Smartphone көзөмөлдөгөн Smart LED чырагы: 7 кадам
Bluetooth Smartphone көзөмөлдөгөн Smart LED чырагы: 7 кадам

Video: Bluetooth Smartphone көзөмөлдөгөн Smart LED чырагы: 7 кадам

Video: Bluetooth Smartphone көзөмөлдөгөн Smart LED чырагы: 7 кадам
Video: Ар бир кыймылды көзөмөлдөгөн сааттар. Таң маанай 2024, Июль
Anonim
Image
Image
Bluetooth Smartphone көзөмөлдөгөн Smart LED чырагы
Bluetooth Smartphone көзөмөлдөгөн Smart LED чырагы

Мен ар дайым жарык берүүчү шаймандарымды башкарууну кыялданам. Анан кимдир бирөө укмуштуудай түстүү LED чырак жасады. Мен жакында Youtubeдан Жозеф Кашанын LED чырагын көрдүм. Андан шыктануу менен мен заманбап дизайнды сактоо менен бир нече функцияларды кошууну чечтим.

План Bluetooth модулун жана даректүү WS2812B RGB LED тилкесин кошуу менен чыракты колдонуучуга ыңгайлуу кылуу. Бул смартфондун тиркемесин колдонуу менен жарыктын түсүн башкарууга мүмкүндүк берди.

1 -кадам: материалдарды чогултуу

Материалдарды чогултуу
Материалдарды чогултуу
Материалдарды чогултуу
Материалдарды чогултуу

Куралдар:

• Лайкоо станциясы

• Жылыткычтын үйлөөчү пистолети

• Бургулоочу машина

• Циркулярдык араа

• Jigsaw

• Wire Cutter Pense

• Кууш мурун

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

• Тунук Акрил Такта

• Жапан кипарис жыгач (же туруктуу жана жетишерлик күчтүү болгон жыгачты колдонсоңуз болот)

• Бурамалар

• Дат баспас болоттон жасалган полюс же таяк

• Зымдар (мен кызыл жана кара зымды колдоном)

• Калай калай

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

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

• Bluetooth модулу HC-05 (мен муну колдонууну чечтим, анткени коддоо Wifi модулуна караганда ESP8266)

• WS2812B даректүү RGB LED тилкеси

• LM2596 баскыч модулу

• DC Barrel Power Jack

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 leds [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 Red = LOW; bool Green = LOW; Bool = LOW; bool Lilac = LOW; bool Rainbow = LOW; bool rgb = LOW; bool ende; if (BT.available ()) {a = (char) BT.read ();

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

{off = HIGH; BT.println ("LED ди өчүрүү..");

} башка {

өчүрүү = ТӨМӨН; } // ============================================== ===========================================

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

{White = HIGH; BT.println ("LED ди акка айлантуу");

} башка {

Ак = LOW; } // ============================================== ===========================================

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

{Blue = HIGH; BT.println ("КӨККӨ ӨЗГӨРҮҮ"); } else {Blue = LOW; }

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

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

{Red = HIGH; BT.println ("КЫЗЫЛГА ӨЗГӨРҮҮ"); } else {Red = LOW; }

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

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

{Green = HIGH; BT.println ("ЖАШЫЛГА ӨЗГӨРҮҮ"); } else {Green = LOW; }

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

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

{Топаз = ЖОГОРУ; BT.println ("ТОПАЗГА ӨЗГӨРҮҮ"); } else {Topaz = LOW; }

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

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

{Lilac = HIGH; BT.println ("ЛИЛЯККА ӨЗГӨРҮҮ"); } else {Lilac = LOW; }

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

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

{Rainbow = HIGH; BT.println ("RAINBOW ANIMATION"); } else {Rainbow = LOW; } // ============================================== ===========================================

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

{rgb = HIGH; BT.println ("MIX COLORS"); } else {rgb = LOW; }} if (off == LOW &&Ond == HIGH) {delay (20); if (off == LOW) {showType = 0; // Өчүрүү анимациясы 0 startShow (showType); }}

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

эгер (White == LOW && WhiteOld == HIGH) {

кечигүү (20); if (White == LOW) {showType = 1; // Ак анимация Type 1 startShow (showType); }}

// =============================================== ========================================== if (Red == LOW && RedOld == HIGH) {delay (20); if (Red == LOW) {showType = 2; // Кызыл анимация 2 Түр 2 startShow (showType); }}

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

эгер (Green == LOW && GreenOld == HIGH) {

кечигүү (20); if (Green == LOW) {showType = 3; // Жашыл анимация 3 -тип startShow (showType); }} // ============================================= ============================================

эгер (Blue == LOW && BlueOld == HIGH) {

кечигүү (20); if (Blue == LOW) {showType = 4; // Көк анимация 4 -тип startShow (showType); }}

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

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

кечигүү (20); if (Топаз == ТӨМӨН) {showType = 5; // Топаз анимациясы 5 -тип startShow (showType); }}

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

эгер (Сирень == LOW && LilacOld == БИЙИК) {

кечигүү (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; // Mix анимациясы Type 7 rgb = HIGH;

startShow (showType);

} }

WhiteOld = White;

RedOld = Кызыл; BlueOld = Blue; GreenOld = Green; TopazOld = Топаз; LilacOld = Сирень; offOld = өчүрүү; RainbowOld = Радуга; rgbOld = rgb;

}

void startShow (int i) {

которуу (i) {

case 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); // Жашыл

тыныгуу;

case 4: colorWipe (strip. Color (0, 0, 255), SPEED); // Көк

тыныгуу;

5 -жагдай: colorWipe (strip. Color (0, 250, 255), SPEED); // Топаз

тыныгуу;

6 -жагдай: colorWipe (strip. Color (221, 130, 255), SPEED); // Сирень

тыныгуу; case 7: colorWipe (strip. Color (255, 0, 0), SPEED); // Red colorWipe (strip. Color (0, 255, 0), SPEED); // Green colorWipe (strip. Color (0, 0, 255), SPEED); // Көк театрChase (strip. Color (0, 0, 127), SPEED); // Көк театрChase (тилке. Color (127, 0, 0), SPEED); // Red TheaterChase (strip. Color (0, 127, 0), SPEED); // Жашыл тыныгуу;

учурда 8: rainbowCycle (25);

тыныгуу; }} void colorWipe (uint32_t c, uint8_t күтүү) {үчүн (uint16_t i = 0; i

void rainbowCycle (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 ++) {// (int q = 0; q <3; q ++) {үчүн (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // ар бир үчүнчү пикселди} strip.show () күйгүзүү;

кечиктирүү (күтүү);

үчүн (int i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // ар бир үчүнчү пикселди өчүрүү}}}}

uint32_t дөңгөлөк (байт 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; кайтуу тилкеси. Color (WheelPos * 3, 255 - WheelPos * 3, 0); }

6 -кадам: Лампаны башкаруу

Лампаны башкаруу
Лампаны башкаруу
Лампаны башкаруу
Лампаны башкаруу
Лампаны башкаруу
Лампаны башкаруу

Лампанын түсүн смартфонуңуздун жардамы менен башкарса болот.

Биринчиден, Google Play Store же Apple App Store'дон 'Bluetooth Terminal HC-05' деп аталган колдонмону орнотушуңуз керек.

Бул чыракты жеке смартфонуңуз аркылуу башкаруунун кадамдары:

1. Смартфонуңузда bluetooth'ду күйгүзүңүз.

2. 'Bluetooth терминалы HC-05' болгон колдонмону ачыңыз.

3. Сиз азыр экранда жупташкан түзмөктөрдү көрүшүңүз керек. 'HC-05' тандаңыз.

4. Эми смартфонуңузда "Arduino менен туташкан" дегенди көрсөтө турган кара экран пайда болгонун көрө аласыз.

5. Мына, кызыктуу жери, эгер сиз текст кутусуна 'b' деп жазсаңыз, лампа көк түскө айланат. Бул жерде чыракка жаза турган буйруктун тизмеси:

- w үчүн ак

- б көк үчүн

- g жашыл үчүн

- кызыл үчүн

- топаз үчүн

- л сирень үчүн

- асан -үсөн анимациясы үчүн

- о өчүрүү үчүн

Кызык, туурабы?

6. Акыркы, бирок жок дегенде, сиз дагы экрандын астындагы баскычты каалаган текстке ыңгайлаштырып, жогорудагы сүрөттө көрсөтүлгөндөй кылып өзгөртө аласыз.

7 -кадам: Көңүл чырагыңыздан ырахат алыңыз

Көңүл чырагыңыздан ырахат алыңыз !!
Көңүл чырагыңыздан ырахат алыңыз !!
Көңүл чырагыңыздан ырахат алыңыз !!
Көңүл чырагыңыздан ырахат алыңыз !!
Көңүл чырагыңыздан ырахат алыңыз !!
Көңүл чырагыңыздан ырахат алыңыз !!

Бул Instructables сизге жагат деп үмүттөнөм. Бул мен үчүн абдан татаал долбоор болчу, бирок мен аны 14 жашымда толугу менен бүтүрүүгө жетиштим. Мага келечектеги жакшыртуулар үчүн бир аз пикир калтырыңыз.

Окуганыңыз үчүн рахмат жана Рождество менен!

Сунушталууда: