Mundarija:
- 1 -qadam: Materiallarni yig'ish
- 2 -qadam: Chiroq tuzilishini qurish
- 3 -qadam: 3D shakllari
- 4 -qadam: Komponentlarning sxemasi
- 5 -qadam: Kod
- 6 -qadam: Chiroqni boshqarish
- 7 -qadam: Kayfiyatingizdan zavqlaning !
Video: Bluetooth Smartfon tomonidan boshqariladigan Smart LED chiroq: 7 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
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
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
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
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
Men komponentlarni sxemasini tuzishda Fritzingdan foydalanaman. Sxemasi aslida juda oson.
5 -qadam: Kod
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
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 !
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:
Smartfon tomonidan boshqariladigan cheksiz soat: 5 qadam (rasmlar bilan)
Smartfon tomonidan boshqariladigan cheksiz soat: Men Instructables -da Infinity Mirrors va Infinity Clock -ning ko'plab loyihalarini ko'rdim, shuning uchun men o'zimni yasashga qaror qildim. Bu boshqalardan unchalik farq qilmasligi mumkin … lekin men buni o'zim qildim, shunday! Agar siz buni bilmasangiz: cheksizlik nima
Mumiya chiroq - WiFi boshqariladigan aqlli chiroq: 5 qadam (rasmlar bilan)
Mumiy chiroq - WiFi boshqariladigan aqlli chiroq: Taxminan 230 ming yil oldin, odamlar olovni boshqarishni o'rgandilar, bu uning turmush tarzida katta o'zgarishlarga olib keladi, chunki u tunda ishlay boshladi, shuningdek, olovdan. Aytishimiz mumkinki, bu ichki yoritishning boshlanishi. Endi men
Smartfon tomonidan boshqariladigan Bluetooth LEDlari (jonli musiqani sinxronlashtirish bilan): 7 qadam
Smartfon bilan boshqariladigan Bluetooth LEDlari (Live Music Sync bilan): Men har doim qurilish ishlarini yaxshi ko'raman, chunki men kollejdagi yangi yotoqxonada dahshatli yorug'lik borligini bilganimdan so'ng, uni biroz zo'rlashga qaror qildim. *** OGOHLANTIRISH *** bu loyiha mening sozlamalarim bilan bir xil darajada, siz munosib miqdordagi elementlar bilan ishlaysiz
Android telefon/planshet tomonidan boshqariladigan Arduino 4WD Rover Bluetooth: 5 qadam
Android telefon/planshet tomonidan boshqariladigan Arduino 4WD Rover Bluetooth: Arduino 4WD bluetooth bilan boshqariladigan roverBu Arduino bilan ishlab chiqarilgan oddiy 4WD roverdir, u Android telefon yoki planshet yordamida Bluetooth orqali boshqariladi. Ushbu dastur yordamida siz tezlikni boshqarishingiz mumkin (Arduino pwm yordamida), uni ishga tushiring
ARDUINO YUN tomonidan boshqariladigan ROOMBA STEFANO DALL'OLIO tomonidan Wifi ilovasi orqali: 4 qadam (rasmlar bilan)
AROMINO YUN tomonidan boshqariladigan ROOMBA Wifi ilovasi orqali STEFANO DALL'OLIO: Ushbu qo'llanmada men ARDUINO YUN -ni Roomba -ga Wi -Fi orqali ulash uchun kodni ulashaman. Kod va ilovani to'liq Stefano Dall yaratgan va ishlab chiqqan. Olio.Mening Roomba - bu Roomba 620, lekin siz xuddi shu kodni boshqa Roomb uchun ishlatishingiz mumkin