Isi kandungan:
- Langkah 1: Kumpulkan Bahan
- Langkah 2: Membina Struktur Lampu
- Langkah 3: Bentuk 3D
- Langkah 4: Skema Komponen
- Langkah 5: Kod
- Langkah 6: Mengawal Lampu
- Langkah 7: Nikmati Lampu Mood Anda
Video: Lampu LED Pintar yang dikendalikan oleh Telefon Pintar Bluetooth: 7 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
Saya selalu bermimpi untuk mengawal peralatan pencahayaan saya. Kemudian seseorang membuat lampu LED berwarna-warni yang luar biasa. Saya baru-baru ini menemui Lampu LED oleh Joseph Casha di Youtube. Dengan terinspirasi olehnya, saya memutuskan untuk menambah beberapa fungsi sambil mengekalkan reka bentuk kontemporari.
Rancangannya adalah untuk menjadikan lampu menjadi lebih mesra pengguna dengan menambahkan Modul Bluetooth dan jalur LED WS2812B RGB. Ini memungkinkan untuk mengawal warna pencahayaan hanya dengan menggunakan aplikasi telefon pintar.
Langkah 1: Kumpulkan Bahan
Alat:
• Stesen Pematerian
• Pemanas Blower Gun
• Mesin gerudi
• Gergaji bulat
• Jigsaw
• Tang Pemotong Kawat
• Tang hidung sempit
Bahan:
• Papan Akrilik lut
• Kayu Cypress Jepun (atau anda boleh menggunakan kayu apa pun selagi ia cukup stabil dan kuat)
• Skru
• Tiang atau tongkat keluli tahan karat
• Wayar (saya menggunakan wayar merah dan hitam)
• Timah Pematerian
Komponen Elektronik:
• Arduino Nano
• Modul Bluetooth HC-05 (Saya memutuskan untuk menggunakan ini kerana kodnya lebih mudah daripada Modul Wifi ESP8266)
• Jalur LED RGB WS2812B yang Beralamat
• Modul Langkah LM2596
• Jack Power Barrel DC
Langkah 2: Membina Struktur Lampu
Dalam langkah ini, saya mempunyai dua cara untuk membina struktur kaedah kerja kayu-kayu dan kaedah pencetakan 3D. Saya menggunakan kaedah pertama. Sekiranya anda lebih suka membuatnya dengan pencetak 3D, jangan ragu untuk melangkah ke langkah 2 untuk model yang saya reka.
Untuk bahagian atas lampu, saya memanaskan dan membengkokkan papan akrilik ke sudut 90 ° seperti gambar di atas. Saya mengambil masa yang lama untuk membengkokkannya ke sudut dan arah yang sempurna.
Seterusnya, untuk bahagian bawah lampu. Malangnya … pada hari saya mengusahakan bahagian bawah lampu, saya terlupa sepenuhnya untuk mengambil gambar pembinaannya! Saya menyedari bahawa semasa saya menyelesaikan projek ini. Tetapi saya akan berusaha sebaik mungkin untuk memberi anda ukuran bahagian bawah lampu.
Pada asasnya, anda hanya perlu memotong empat blok kayu yang berukuran 13x6x2cm (LxHxW). Seterusnya, anda perlu memotong potongan seperti tangga di tepi kayu. Gambar akan ditunjukkan di atas.
Langkah 3: Bentuk 3D
Bagi sesiapa yang mempunyai pencetak 3D mereka sendiri, anda berada di langkah yang betul. Ini menjadikan lampu ini mesra pengguna.
Sejujurnya, ini adalah langkah paling sukar yang saya lakukan. Ini adalah perkara pertama yang saya buat setelah memasang perisian!
Saya menggunakan Sketchup Pro untuk merancang struktur lampu. Malangnya, saya tidak cukup mahir untuk merancang komponen dalamannya. Pautan ke model 3D saya ada dalam fail di bawah.
Langkah 4: Skema Komponen
Saya menggunakan Fritzing untuk membina skema komponen. Skema sebenarnya cukup mudah.
Langkah 5: Kod
Untuk pengekodan lampu suasana ini, saya menggunakan beberapa perpustakaan dari Arduino IDE. Perpustakaan akan disenaraikan di langkah 7.
Untuk kodnya, anda perlu mempunyai perisian Arduino itu sendiri. Saya akan memberikan pautan untuk memuat turun di sini.
Juga, lakaran atau kod akan ditunjukkan di bawah?
Saya juga memberikan fail untuk kod di Github.com sekiranya kod di bawah terlalu panjang untuk disalin di sini;)
#sertakan #sertakan #sertakan #ifdef _AVR_ #kemasukan #endif
SoftwareSerial BT (10, 11);
#define LED_PIN 7 #define NUM_LEDS 60 #define BRIGHTNESS 200 #define SPEED 10 #define SEGERA 0 # tentukan RAINBOW_SPEED 50 CRGB led [NUM_LEDS];
Jalur Adafruit_NeoPixel = Adafruit_NeoPixel (NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
bool offOld = RENDAH;
bool WhiteOld = RENDAH; bool RedOld = RENDAH; bool GreenOld = RENDAH; bool BlueOld = RENDAH; bool TopazOld = RENDAH; bool LilacOld = RENDAH; bool RainbowOld = RENDAH; bool rgbOld = RENDAH; int showType = 0;
batal persediaan () {
FastLED.addLeds (led, NUM_LEDS); //////////
BT.begin (9600);
BT.println ("Bersambung ke Arduino");
strip.setBrightness (CERAH);
jalur.begin ();
strip.show ();
}
char a;
gelung kosong () {
untuk (int i = 0; i <= 59; i ++) {leds = CRGB (255, 255, 255); FastLED.show (); } bool mati = RENDAH; bool Putih = RENDAH; bool Biru = RENDAH; bool Merah = RENDAH; bool Hijau = RENDAH; bool Topaz = RENDAH; bool Lilac = RENDAH; bool Rainbow = RENDAH; bool rgb = RENDAH; bool ende; jika (BT. tersedia ()) {a = (char) BT.read ();
jika (a == 'o')
{off = TINGGI; BT.println ("MENGHIDUPKAN LED..");
} lain {
mati = RENDAH; } // =============================================== ============================================
jika (a == 'w')
{Putih = TINGGI; BT.println ("TURNING LEDs WHITE");
} lain {
Putih = RENDAH; } // =============================================== ============================================
jika (a == 'b')
{Biru = TINGGI; BT.println ("MENGUBAH KE BLUE"); } lain {Biru = RENDAH; }
// ===========================================================================================
jika (a == 'r')
{Merah = TINGGI; BT.println ("MENGUBAH KE MERAH"); } lain {Merah = RENDAH; }
// ===========================================================================================
jika (a == 'g')
{Hijau = TINGGI; BT.println ("MENGUBAH KE HIJAU"); } lain {Hijau = RENDAH; }
// ===========================================================================================
jika (a == 't')
{Topaz = TINGGI; BT.println ("MENGUBAH TOPAZ"); } lain {Topaz = RENDAH; }
// ===========================================================================================
jika (a == 'l')
{Lilac = TINGGI; BT.println ("MENGUBAH KE LILAC"); } lain {Lilac = RENDAH; }
// ===========================================================================================
jika (a == 'a')
{Pelangi = TINGGI; BT.println ("ANIMASI RAINBOW"); } lain {Pelangi = RENDAH; } // =============================================== ============================================
jika (a == 'm')
{rgb = TINGGI; BT.println ("CAMPURAN WARNA"); } lain {rgb = RENDAH; }} jika (off == RENDAH && offOld == TINGGI) {kelewatan (20); jika (mati == RENDAH) {showType = 0; // Off animasi Jenis 0 startShow (showType); }}
// ===========================================================================================
jika (Putih == RENDAH && WhiteOld == TINGGI) {
kelewatan (20); jika (Putih == RENDAH) {showType = 1; // Animasi putih Jenis 1 startShow (showType); }}
// ================================================ =========================================== jika (Merah == RENDAH && RedOld == TINGGI) {kelewatan (20); jika (Merah == RENDAH) {showType = 2; // Animasi merah Jenis 2 startShow (showType); }}
// ===========================================================================================
jika (Hijau == RENDAH && GreenOld == TINGGI) {
kelewatan (20); jika (Hijau == RENDAH) {showType = 3; // Animasi hijau Jenis 3 startShow (showType); }} // ============================================== =============================================
jika (Biru == RENDAH && BlueOld == TINGGI) {
kelewatan (20); jika (Biru == RENDAH) {showType = 4; // Animasi biru Jenis 4 startShow (showType); }}
// ===========================================================================================
jika (Topaz == RENDAH && TopazOld == TINGGI) {
kelewatan (20); jika (Topaz == RENDAH) {showType = 5; // Topaz animasi Type 5 startShow (showType); }}
// ===========================================================================================
jika (Lilac == RENDAH && LilacOld == TINGGI) {
kelewatan (20); jika (Lilac == RENDAH) {showType = 6; // Topaz animasi Type 6 startShow (showType); }} // ============================================== =============================================
jika (Rainbow == RENDAH && RainbowOld == TINGGI) {
kelewatan (20);
jika (Pelangi == RENDAH) {
showType = 8; // Animasi pelangi Jenis 8 startShow (showType); }}
// ===========================================================================================
jika (rgb == RENDAH && rgbTua == TINGGI) {
kelewatan (20);
jika (rgb == RENDAH) {
showType = 7; // Campurkan animasi Jenis 7 rgb = TINGGI;
startShow (showType);
} }
WhiteOld = Putih;
RedOld = Merah; BlueOld = Biru; GreenOld = Hijau; TopazOld = Topaz; LilacOld = Lilac; offOld = mati; RainbowOld = Pelangi; rgbOld = rgb;
}
batal startShow (int i) {
beralih (i) {
kes 0: colorWipe (strip. Color (0, 0, 0), SPEED); // Hitam / mati
rehat;
kes 1: strip.setBrightness (255); // Menukar Kecerahan menjadi MAX
colorWipe (strip. Color (255, 255, 255), SEGERA); // Jalur putih.setBrightness (BRIGHTNESS); // Tetapkan semula kecerahan ke jeda nilai Lalai;
kes 2: colorWipe (strip. Color (255, 0, 0), SPEED); // Merah
rehat;
kes 3: colorWipe (strip. Color (0, 255, 0), SPEED); // Hijau
rehat;
kes 4: colorWipe (strip. Color (0, 0, 255), SPEED); // Biru
rehat;
kes 5: colorWipe (strip. Color (0, 250, 255), SPEED); // Topaz
rehat;
kes 6: colorWipe (strip. Color (221, 130, 255), SPEED); // Lilac
rehat; kes 7: colorWipe (strip. Color (255, 0, 0), SPEED); // Warna merahWipe (strip. Color (0, 255, 0), SPEED); // Warna hijauWipe (strip. Color (0, 0, 255), SPEED); // Teater biruChase (strip. Color (0, 0, 127), SPEED); // Teater biruChase (strip. Color (127, 0, 0), SPEED); // Red TheaterChase (strip. Color (0, 127, 0), SPEED); // Rehat hijau;
kes 8: Kitaran pelangi (25);
rehat; }} void colorWipe (uint32_t c, uint8_t waiting) {untuk (uint16_t i = 0; i
kekosongan pelangi kosong (uint8_tunggu) {
uint16_t i, j;
untuk (j = 0; j <256 * 10; j ++) {// 5 kitaran semua warna pada roda untuk (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); kelewatan (tunggu); }}
batal teaterChase (uint32_t c, uint8_t tunggu) {
untuk (int j = 0; j <10; j ++) {// lakukan 10 kitaran mengejar untuk (int q = 0; q <3; q ++) {untuk (int i = 0; i <strip.numPixels (); i = i + 3) {strip.setPixelColor (i + q, c); // hidupkan setiap piksel ketiga} strip.show ();
kelewatan (tunggu);
untuk (int i = 0; i <strip.numPixels (); i = i + 3) {strip.setPixelColor (i + q, 0); // matikan setiap piksel ketiga}}}}
uint32_t Wheel (byte WheelPos) {
WheelPos = 255 - WheelPos; jika (WheelPos <85) {jalur balik. Warna (255 - WheelPos * 3, 0, WheelPos * 3); } jika (WheelPos <170) {WheelPos - = 85; jalur balik. Warna (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos - = 170; jalur balik. Color (WheelPos * 3, 255 - WheelPos * 3, 0); }
Langkah 6: Mengawal Lampu
Warna lampu dapat dikawal dengan menggunakan telefon pintar anda.
Pertama, anda perlu memasang aplikasi yang dipanggil 'Bluetooth Terminal HC-05' dari Google Play Store atau Apple App Store.
Ini adalah langkah-langkah untuk mengawal lampu melalui telefon pintar anda sendiri:
1. Hidupkan bluetooth di telefon pintar anda.
2. Buka aplikasi iaitu 'Terminal Bluetooth HC-05'.
3. Anda kini harus melihat peranti berpasangan di skrin. Pilih 'HC-05'.
4. Sekarang anda dapat melihat layar hitam muncul di telefon pintar anda yang akan menunjukkan 'disambungkan ke Arduino'.
5. Inilah bahagian yang menyeronokkan, jika anda menaip 'b' di kotak teks, lampu akan berubah menjadi warna biru. Berikut adalah senarai arahan yang boleh anda taipkan untuk lampu:
- w untuk putih
- b untuk warna biru
- g untuk hijau
- r untuk merah
- t untuk topaz
- l untuk ungu
- untuk animasi pelangi
- o untuk dimatikan
Seronok kan?
6. Akhir sekali, anda juga boleh menyesuaikan butang di bawah skrin untuk teks yang anda inginkan seperti yang ditunjukkan pada gambar di atas.
Langkah 7: Nikmati Lampu Mood Anda
Saya harap anda menyukai Instructables ini. Ini adalah projek yang sangat mencabar bagi saya tetapi saya berjaya menyiapkannya sepenuhnya sebagai anak lelaki berusia 14 tahun. Jangan beri saya maklum balas untuk penambahbaikan masa depan.
Terima kasih kerana membaca dan Selamat Hari Krismas!
Disyorkan:
ESP 8266 Nodemcu Ws 2812 Neopixel LED MOOD Lampu yang Dikendalikan oleh Pelayan Web Tempatan: 6 Langkah
ESP 8266 Nodemcu Ws 2812 Neopixel LED MOOD Lampu Dikendalikan oleh Pelayan Web Tempatan: ESP 8266 Nodemcu Ws 2812 Neopixel LED MOOD Lampu LED Dikendalikan Menggunakan Server Web
ESP8266 RGB LED STRIP WIFI Control - NODEMCU Sebagai Alat Jauh IR untuk Jalur Led yang Dikendalikan Melalui Wifi - Kawalan Telefon Pintar STRIP LED RGB: 4 Langkah
ESP8266 RGB LED STRIP WIFI Control | NODEMCU Sebagai Alat Jauh IR untuk Jalur Led yang Dikendalikan Melalui Wifi | RGB LED STRIP Smartphone Control: Hai kawan-kawan dalam tutorial ini kita akan belajar bagaimana menggunakan nodemcu atau esp8266 sebagai remote IR untuk mengawal jalur LED RGB dan Nodemcu akan dikendalikan oleh telefon pintar melalui wifi. Jadi pada dasarnya anda dapat mengawal STRIP LED RGB dengan telefon pintar anda
Troli Beli-belah Pintar Dikendalikan Telefon Pintar: 7 Langkah
Keranjang Belanja Pintar Terkawal Telefon Pintar: Mengunjungi pusat membeli-belah boleh menyeronokkan. Tetapi menyeret Keranjang Belanja semasa anda mengisinya dengan sesuatu adalah sesuatu yang benar-benar menjengkelkan. Rasa sakit mendorongnya melalui lorong-lorong sempit itu, membuat belokan tajam! Jadi, inilah (jenis) tawaran yang anda
Retro-CM3: Konsol PERMAINAN yang dikendalikan oleh RetroPie yang Kuat: 8 Langkah (dengan Gambar)
Retro-CM3: Konsol PERMAINAN RetroPie yang Kuat: Instruksional ini diilhamkan oleh PiGRRL Zero, pembuat Gameboy Zero asli Wermy dan Konsol Permainan Dikendalikan GreatScottLab. Konsol permainan berasaskan RetroPie ini menggunakan raspberry pi zero (W) sebagai inti mereka. TETAPI, setelah saya membina beberapa
Papan Alphabet yang dikendalikan oleh aplikasi Diilhamkan oleh Stranger Things: 7 Langkah (dengan Gambar)
Papan Alphabet yang dikendalikan aplikasi yang Diilhamkan oleh Stranger Things: Ini bermula beberapa minggu yang lalu ketika cuba mencari tahu apa yang akan mendapat keponakan saya yang berusia sembilan tahun untuk Krismas. Abang saya akhirnya memberitahu saya bahawa dia adalah peminat besar Stranger Things. Saya langsung tahu apa yang saya mahu mendapatkannya, sesuatu yang