Isi kandungan:
- Langkah 1: Bahan Diperlukan
- Langkah 2: Rajah Litar
- Langkah 3: Kod Arduino
- Langkah 4: 3d Mencetak Pangkalan Lampu
- Langkah 5: Lekapan Led
- Langkah 6: Penutup Lampu
- Langkah 7: Persediaan
Video: Lampu Pintar (TCfD) - Pelangi + Muzik Visualizer: 7 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:12
Projek ini dilakukan untuk kursus Teknologi untuk Reka Bentuk Konsep di TUDelft
Produk Akhir adalah lampu LED asas ESP-32 dan disambungkan ke pelayan. Untuk prototaip, lampu mempunyai dua fungsi; kesan pelangi yang memancarkan warna yang menenangkan beralih cahaya ke persekitarannya dan kedua visualiser suara di mana piksel LED "menari" mengikut tahap bunyi. Sistem ini disambungkan ke wifi dan pengguna dapat memilih kesan apa yang mereka inginkan dari lampu melalui WIFI.
Microchip ESP-32 yang murah menyediakan kita dengan pemproses yang kuat, sensor ruang dalaman, sensor suhu, sensor sentuh dan juga kemampuan wifi dan bluetooth. Dengan ini, Walaupun hanya dua kesan yang dipilih untuk projek ini, Implikasi lampu "pintar" ini tidak terbatas. Ini akan digunakan untuk menunjukkan cuaca kepada pengguna, atau suhu ruangan, lampu itu sendiri dapat berfungsi sebagai pencetus penggera atau dapat memberikan cahaya matahari yang menenangkan di sebelah tempat tidur anda yang meniru matahari terbit untuk pengalaman bangun tidur yang menyenangkan.
Langkah 1: Bahan Diperlukan
Arduino esp32
Sensor bunyi
Penukar Tahap Logik Dua Hala empat arah
Neopixel led 2m 60 led / m
Wayar pelompat
Kabel USB mikro dengan penyesuai
sambungan internet
Langkah 2: Rajah Litar
Gambarajah litar dilukis dan litar dibuat sesuai seperti yang diberikan di
rajah di bawah.
Langkah 3: Kod Arduino
Di sini, kod visualisasi pertama dibuat. Kemudian, dua contoh kod
; "Neoplxel RGBW starndtest"; dan "simpleWebServerWifi" telah diubah dan disatukan dalam kod visualizer. Walaupun kodnya kadang-kadang masih banyak kereta (lampu led secara rawak dari semasa ke semasa). Pengulangan kod seterusnya (setelah kita mendapat cukup masa) akan dikemas kini.
#sertakan
#ifdef _AVR_
#sertakan
#endif
const int numReadings = 5;
bacaan int [numReadings];
int readIndex = 0;
jumlah int = 0;
rata-rata int = 0;
int micPin = 33;
#tentukan PIN 4
#tentukan NUM_LEDS 120
#tentukan KECERGASAN 100
Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);
bait neopix_gamma = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 24, 24, 25, 25, 26, 27, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36, 37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 85, 86, 87, 89, 90, 92, 93, 95, 96, 98, 99, 101, 102, 104, 105, 107, 109, 110, 112, 114, 115, 117, 119, 120, 122, 124, 126, 127, 129, 131, 133, 135, 137, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 167, 169, 171, 173, 175, 177, 180, 182, 184, 186, 189, 191, 193, 196, 198, 200, 203, 205, 208, 210, 213, 215, 218, 220, 223, 225, 228, 231, 233, 236, 239, 241, 244, 247, 249, 252, 255 };
#sertakan
#sertakan
char ssid = "yourNetwork"; // SSID rangkaian anda (nama)
char pass = "secretPassword"; // kata laluan rangkaian anda
int keyIndex = 0; // nombor indeks kunci rangkaian anda (hanya diperlukan untuk WEP)
status int = WL_IDLE_STATUS;
Pelayan WiFiServer (80);
persediaan tidak sah ()
{
Serial.begin (9600); // memulakan komunikasi bersiri
pinMode (9, OUTPUT); // tetapkan mod pin LED
// periksa kehadiran perisai:
jika (WiFi.status () == WL_NO_SHIELD) {
Serial.println ("Perisai WiFi tidak ada");
sementara (benar); // jangan teruskan
}
Rentetan fv = WiFi.firmwareVersion ();
jika (fv! = "1.1.0") {
Serial.println ("Sila tingkatkan firmware");
}
// percubaan untuk menyambung ke rangkaian Wifi:
sementara (status! = WL_CONNECTED) {
Serial.print ("Mencuba untuk menyambung ke Rangkaian bernama:");
Serial.println (ssid); // cetak nama rangkaian (SSID);
// Sambungkan ke rangkaian WPA / WPA2. Tukar baris ini jika menggunakan rangkaian terbuka atau WEP:
status = WiFi.begin (ssid, lulus);
// tunggu 10 saat untuk sambungan:
kelewatan (10000);
}
pelayan.begin (); // mulakan pelayan web di port 80
printWifiStatus (); // anda berhubung sekarang, jadi cetak statusnya
}
{
Serial.begin (9600);
strip.setBrightness (CERAH);
jalur.begin ();
strip.show (); // Memulakan semua piksel untuk 'mati'
pinMode (micPin, INPUT);
untuk (int thisReading = 0; thisReading <numReadings; thisReading ++) {
bacaan [thisReading] = 0;
}
}
kekosongan pelangi (uint8_tunggu) {
uint16_t i, j;
untuk (j = 0; j <256; j ++) {
untuk (i = 0; i
strip.setPixelColor (i, Wheel ((i + j) & 255));
}
strip.show ();
kelewatan (tunggu);
}
}
visualizer kekosongan () {
total = total - bacaan [readIndex];
bacaan [readIndex] = analogRead (micPin);
total = jumlah + bacaan [readIndex];
readIndex = readIndex + 1;
jika (readIndex> = numReadings) {
bacaIndex = 0;
}
purata = jumlah / bilanganBacaan;
kelewatan (1);
int micpixel = (purata-100) / 5;
Serial.println (micpixel);
jika (micpixel> 0) {
{
untuk (int j = 0; j <= micpixel; j ++)
strip.setPixelColor (j, (micpixel * 2), 0, (90-micpixel), 0);
untuk (int j = micpixel; j <= NUM_LEDS; j ++)
strip.setPixelColor (j, 0, 0, 0, 0);
strip.show ();
}
}
jika (micpixel <0) {
untuk (int j = 0; j <= 20; j ++)
strip.setPixelColor (j, 0, 0, 50, 0);
strip.show ();
}
}
gelung kosong () {
{
Pelanggan WiFiClient = server.available (); // dengarkan pelanggan yang masuk
jika (pelanggan) {// jika anda mendapat pelanggan, Serial.println ("pelanggan baru"); // mencetak mesej keluar dari port bersiri
String currentLine = ""; // buat String untuk menyimpan data masuk dari klien
while (client.connected ()) {// gelung semasa pelanggan bersambung
if (client.available ()) {// jika ada bait untuk dibaca dari klien, char c = client.read (); // baca bait, kemudian
Serial.write (c); // mencetak monitor bersiri
if (c == '\ n') {// jika bait adalah watak barisan baru
// jika baris semasa kosong, anda mendapat dua watak baris baru berturut-turut.
// itulah akhir permintaan HTTP klien, jadi kirimkan respons:
jika (currentLine.length () == 0) {
// Header HTTP selalu bermula dengan kod respons (mis. HTTP / 1.1 200 OK)
// dan jenis kandungan supaya pelanggan tahu apa yang akan datang, kemudian baris kosong:
client.println ("HTTP / 1.1 200 OK");
client.println ("Jenis kandungan: teks / html");
pelanggan.println ();
// kandungan respons HTTP mengikuti tajuk:
client.print ("Klik di sini Hidupkan kesan Pelangi");
client.print ("Klik di sini Hidupkan Visualizer");
// Respons HTTP diakhiri dengan baris kosong yang lain:
pelanggan.println ();
// keluar dari gelung sementara:
rehat;
} lain {// jika anda mendapat talian baru, kemudian kosongkan currentLine:
currentLine = "";
}
} lain jika (c! = '\ r') {// jika anda mendapat apa-apa selain watak pengembalian kereta, currentLine + = c; // tambahkannya ke hujung talian semasa
}
// Periksa untuk mengetahui apakah permintaan pelanggan adalah "GET / H" atau "GET / L":
jika (currentLine.endsWith ("GET / R")) {
Pelangi (10); // Kesan pelangi dihidupkan
}
jika (currentLine.endsWith ("GET / V")) {
Visualizer (); // Visualizer dihidupkan
}
}
}
// tutup sambungan:
pelanggan.stop ();
Serial.println ("pelanggan terputus");
}
}
batal cetakWifiStatus () {
// cetak SSID rangkaian yang dilampirkan kepada anda:
Serial.print ("SSID:");
Serial.println (WiFi. SSID ());
// cetak alamat IP perisai WiFi anda:
IPAddress ip = WiFi.localIP ();
Serial.print ("Alamat IP:");
Bersiri.println (ip);
// cetak kekuatan isyarat yang diterima:
panjang rssi = WiFi. RSSI ();
Serial.print ("kekuatan isyarat (RSSI):");
Serial.print (rssi);
Serial.println ("dBm");
// mencetak tempat untuk pergi dalam penyemak imbas:
Serial.print ( Untuk melihat halaman ini beraksi, buka penyemak imbas ke
Bersiri.println (ip);
}
}
uint32_t Wheel (byte WheelPos) {
WheelPos = 255 - WheelPos;
jika (WheelPos <85) {
jalur balik. Warna (255 - WheelPos * 3, 0, WheelPos * 3, 0);
}
jika (WheelPos <170) {
WheelPos - = 85;
jalur pengembalian. Warna (0, WheelPos * 3, 255 - WheelPos * 3, 0);
}
WheelPos - = 170;
jalur balik. Color (WheelPos * 3, 255 - WheelPos * 3, 0, 0);
}
uint8_t merah (uint32_t c) {
kembali (c >> 16);
}
uint8_t hijau (uint32_t c) {
kembali (c >> 8);
}
uint8_t biru (uint32_t c) {
pulangan (c);
}
}
//Serial.println(micpixel);
}
Langkah 4: 3d Mencetak Pangkalan Lampu
Model 3d dari dasar lampu diukur, dirancang dan dicetak dengan dimensi yang cukup besar untuk memuat semua komponen elektrik di dalam ruang asas.
Langkah 5: Lekapan Led
Led digulung dalam gulungan kadbod dan dilampirkan menggunakan pita dua sisi, lubang digerudi di bahagian bawah untuk melewati wayar
Langkah 6: Penutup Lampu
Penutup dibuat dengan mencari botol lutsinar dengan lebar yang sama dengan dasar lampu dan tinggi seperti lampiran LED. Ini kemudian ditutup dengan kertas tebal untuk penyebaran cahaya yang lebih baik. Sebagai alternatif, adalah mungkin untuk menggunakan kaca buram atau tiub plastik lut sebagai penutup lampu.
Langkah 7: Persediaan
Semuanya dilekatkan dan dipasang. Lampu sudah siap untuk beberapa ujian !.
Disyorkan:
Pemasangan Siling Bintang Fiber Optik Muzik Muzik: 11 Langkah (dengan Gambar)
Pemasangan Muzik Reaktif Fiber Optic Star Ceiling: Mahukan sekeping galaksi di rumah anda? Ketahui bagaimana ia dibuat di bawah! Selama bertahun-tahun ia adalah projek impian saya dan akhirnya Ia selesai. Ia memerlukan sedikit masa untuk diselesaikan, tetapi hasil akhirnya begitu memuaskan sehingga saya yakin ia berbaloi. Sedikit
Pembesar suara Bluetooth Dengan Visualizer Muzik: 10 Langkah (dengan Gambar)
Pembesar suara Bluetooth Dengan Visualizer Muzik: Dalam arahan ini, saya akan menunjukkan kepada anda bagaimana saya membina Pembesar Suara Bluetooth ini yang mempunyai alat visualisasi muzik di bahagian atas. Ia kelihatan sangat keren dan menjadikan detik mendengar lagu anda lebih hebat. Anda boleh memutuskan sama ada anda mahu menghidupkan visualizer atau tidak
Muzik Reaktif Cahaya -- Cara Membuat Muzik Reaktif Cahaya Muzik Super Sederhana untuk Membuat Desktop Hebat .: 5 Langkah (dengan Gambar)
Muzik Reaktif Cahaya || Cara Membuat Muzik Reaktif Cahaya Muzik Super Sederhana untuk Membuat Desktop Yang Hebat: Hai apa lagi, Hari ini kita akan membina projek yang sangat menarik. Hari ini kita akan membina cahaya reaktif muzik. Led akan mengubah kecerahannya mengikut bass yang sebenarnya merupakan isyarat audio frekuensi rendah. Ia sangat mudah untuk dibina. Kami akan
Lampu Krismas DIY Tetapkan untuk Muzik - Lampu Rumah Koreografi: 15 Langkah (dengan Gambar)
Lampu Krismas DIY Ditetapkan ke Muzik - Lampu Rumah Koreografi: Lampu Krismas DIY Diatur Ke Muzik - Lampu Rumah Koreografi Ini BUKAN DIY pemula. Anda memerlukan pemahaman yang tegas mengenai elektronik, litar, pengaturcaraan ASAS dan kecerdasan umum mengenai keselamatan elektrik. DIY ini untuk orang yang berpengalaman jadi
Kotak Xmas: Lampu Krismas dan Muzik Arduino / ioBridge yang Dikendalikan Internet dan Pertunjukan Muzik: 7 Langkah
Xmas-box: Arduino / ioBridge Internet Controlled Christmas Lights and Music Show: Projek xmas-box saya terdiri daripada lampu Krismas dan pertunjukan muzik yang dikendalikan oleh internet Lagu Krismas boleh diminta secara dalam talian yang kemudian dimasukkan dalam barisan dan dimainkan mengikut urutan yang diminta. Muzik disebarkan pada stat FM