Daftar Isi:
- Langkah 1: Bahan yang Dibutuhkan
- Langkah 2: Diagram Sirkuit
- Langkah 3: Kode Arduino
- Langkah 4: Mencetak Dasar Lampu 3d
- Langkah 5: Led Lampiran
- Langkah 6: Kandang Lampu
- Langkah 7: Pengaturan
Video: Smart Lamp (TCfD) - Rainbow + Music Visualizer: 7 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:58
Proyek ini dilakukan untuk kursus Teknologi untuk Desain Konsep di TUDelft
Produk akhir adalah lampu LED dasar ESP-32 dan terhubung ke server. Untuk prototipe, lampu memiliki dua fungsi; efek pelangi yang memancarkan cahaya pergeseran warna yang menenangkan ke sekelilingnya dan kedua, visualisator suara di mana piksel LED "menari" sesuai dengan tingkat suara. Sistem terhubung ke wifi dan pengguna dapat memilih efek apa yang mereka inginkan dari lampu melalui WIFI.
Microchip ESP-32 yang murah memberi kami prosesor yang kuat, sensor hall inbuilt, sensor suhu, sensor sentuh dan juga kemampuan wifi dan bluetooth. Dengan ini, Sementara hanya dua efek yang dipilih untuk proyek ini, Implikasi dari lampu "pintar" ini tidak terbatas. Ini akan digunakan untuk menunjukkan cuaca kepada pengguna, atau suhu ruangan, lampu itu sendiri dapat bertindak sebagai pemicu alarm atau dapat memberikan cahaya matahari yang menenangkan di sebelah tempat tidur Anda yang mensimulasikan matahari terbit untuk pengalaman bangun yang menyenangkan.
Langkah 1: Bahan yang Dibutuhkan
Arduino esp32
Sensor suara
Konverter Level Logika Dua Arah empat arah
Neopiksel dipimpin 2m 60 led/m
Kabel jumper
Kabel USB mikro dengan adaptor
koneksi internet
Langkah 2: Diagram Sirkuit
Sebuah diagram sirkuit digambar dan sirkuit dibuat sesuai seperti yang diberikan dalam
diagram di bawah ini.
Langkah 3: Kode Arduino
Di sini, pertama-tama kode visualizer dibuat. Kemudian, dua contoh kode
;“pengujian bintang neoplxel RGBW”; dan “simpleWebServerWifi” telah dimodifikasi dan diintegrasikan dalam kode visualizer. Meskipun kodenya kadang-kadang masih bermasalah (led secara acak menyala dari waktu ke waktu). Iterasi kode berikutnya (setelah kami mendapatkan cukup waktu) akan diperbarui.
#termasuk
#ifdef _AVR_
#termasuk
#berakhir jika
const int numBacaan = 5;
int bacaan[numReadings];
int indeks baca = 0;
int jumlah = 0;
int rata-rata = 0;
int micPin = 33;
#tentukan PIN 4
#tentukan NUM_LEDS 120
#menentukan KECERAHAN 100
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);
byte 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 };
#termasuk
#termasuk
char ssid = "Jaringan Anda"; // SSID jaringan Anda (nama)
char pass = "kata sandi rahasia"; // kata sandi jaringan Anda
int indeks kunci = 0; // Nomor indeks kunci jaringan Anda (hanya diperlukan untuk WEP)
int status = WL_IDLE_STATUS;
Server WiFiServer (80);
batalkan pengaturan()
{
Serial.begin(9600); // inisialisasi komunikasi serial
pinMode(9, OUTPUT); // atur mode pin LED
// periksa keberadaan perisai:
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield tidak ada");
sementara (benar); // jangan lanjutkan
}
String fv = WiFi.firmwareVersion();
jika (fv != "1.1.0") {
Serial.println("Mohon upgrade firmware");
}
// coba sambungkan ke jaringan Wifi:
sementara (status != WL_CONNECTED) {
Serial.print("Mencoba terhubung ke Jaringan bernama: ");
Serial.println(ssid); // cetak nama jaringan (SSID);
// Hubungkan ke jaringan WPA/WPA2. Ubah baris ini jika menggunakan jaringan terbuka atau WEP:
status = WiFi.begin(ssid, pass);
// tunggu 10 detik untuk koneksi:
penundaan (10000);
}
server.mulai(); // mulai server web pada port 80
printWifiStatus(); // Anda terhubung sekarang, jadi cetak statusnya
}
{
Serial.begin(9600);
strip.setBrightness(KECERAHAN);
strip.mulai();
strip.tampilkan(); // Inisialisasi semua piksel ke 'mati'
pinMode(micPin, INPUT);
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
bacaan[Bacaan ini] = 0;
}
}
void pelangi(uint8_t tunggu) {
uint16_t i, j;
untuk(j=0; j<256; j++) {
untuk(i=0; i
strip.setPixelColor(i, Roda((i+j) & 255);
}
strip.tampilkan();
tunda (tunggu);
}
}
kekosongan visualisator(){
total = total - bacaan[readIndex];
bacaan[readIndex] = analogRead(micPin);
total = total + bacaan[readIndex];
readIndex = readIndex + 1;
if (readIndex >= numReadings) {
bacaIndeks = 0;
}
rata-rata = total / angkaBacaan;
penundaan (1);
int micpixel = (rata-rata-100)/5;
Serial.println(mikpiksel);
if (mikpiksel > 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.tampilkan();
}
}
if (mikpiksel < 0) {
untuk(int j=0; j<=20; j++)
strip.setPixelColor(j, 0, 0, 50, 0);
strip.tampilkan();
}
}
lingkaran kosong() {
{
Klien WiFiClient = server.available(); // dengarkan klien yang masuk
if (klien) { // jika Anda mendapatkan klien, Serial.println("klien baru"); // mencetak pesan dari port serial
String arusLine = ""; // membuat String untuk menampung data yang masuk dari klien
while (client.connected()) { // loop saat klien terhubung
if (client.available()) { // jika ada byte untuk dibaca dari klien, char c = klien.baca(); // baca satu byte, lalu
Serial.tulis(c); // print di serial monitor
if (c == '\n') { // jika byte adalah karakter baris baru
// jika baris saat ini kosong, Anda mendapatkan dua karakter baris baru berturut-turut.
// itulah akhir dari permintaan HTTP klien, jadi kirim tanggapan:
if (currentLine.length() == 0) {
// Header HTTP selalu dimulai dengan kode respons (mis. HTTP/1.1 200 OK)
// dan tipe konten sehingga klien tahu apa yang akan terjadi, lalu baris kosong:
client.println("HTTP/1.1 200 Oke");
client.println("Tipe-konten:teks/html");
klien.println();
// isi dari respon HTTP mengikuti header:
client.print("Klik disini Nyalakan efek Pelangi");
client.print("Klik disini Nyalakan Visualizer");
// Respons HTTP diakhiri dengan baris kosong lainnya:
klien.println();
// keluar dari perulangan while:
merusak;
} else { // jika Anda mendapatkan baris baru, hapus baris saat ini:
baris saat ini = "";
}
} else if (c != '\r') { // jika Anda mendapatkan yang lain selain karakter carriage return, garis saat ini += c; // tambahkan ke akhir baris saat ini
}
// Periksa untuk melihat apakah permintaan klien adalah "GET /H" atau "GET /L":
if (currentLine.endsWith("GET /R")) {
Pelangi (10); // Efek pelangi diaktifkan
}
if (currentLine.endsWith("GET /V")) {
Visualisasi(); // Visualizer dihidupkan
}
}
}
// tutup koneksi:
klien.berhenti();
Serial.println("klien terputus");
}
}
batal printWifiStatus() {
// cetak SSID jaringan tempat Anda terhubung:
Serial.print("SSID: ");
Serial.println(WiFi. SSID());
// cetak alamat IP pelindung WiFi Anda:
IPaddress ip = WiFi.localIP();
Serial.print("Alamat IP: ");
Serial.println(ip);
// cetak kekuatan sinyal yang diterima:
rssi panjang = WiFi. RSSI();
Serial.print("kekuatan sinyal (RSSI):");
Serial.print(rssi);
Serial.println("dBm");
// cetak ke mana harus pergi di browser:
Serial.print( Untuk melihat halaman ini beraksi, buka browser ke
Serial.println(ip);
}
}
Roda uint32_t(byte WheelPos) {
WheelPos = 255 - WheelPos;
if(Pos Roda < 85) {
kembali strip. Warna(255 - WheelPos * 3, 0, WheelPos * 3, 0);
}
if(Pos Roda < 170) {
WheelPos -= 85;
kembali strip. Warna(0, WheelPos * 3, 255 - WheelPos * 3, 0);
}
WheelPos -= 170;
kembali strip. Warna(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) {
kembali (c);
}
}
//Serial.println(micpixel);
}
Langkah 4: Mencetak Dasar Lampu 3d
Model dasar lampu 3d diukur, dirancang, dan dicetak dengan dimensi yang cukup besar untuk memuat semua komponen listrik di dalam kompartemen dasar.
Langkah 5: Led Lampiran
Led digulung dalam gulungan karton dan direkatkan menggunakan selotip dua sisi, sebuah lubang dibor di bagian bawah untuk melewati kawat
Langkah 6: Kandang Lampu
Sebuah enklosur dibuat dengan menemukan botol transparan dengan lebar yang sama sebagai dasar lampu dan tinggi sebagai lampiran LED. Ini kemudian ditutup dengan kertas tebal untuk difusi cahaya yang lebih baik. Sebagai alternatif, dimungkinkan untuk menggunakan kaca buram atau tabung plastik tembus pandang sebagai penutup lampu.
Langkah 7: Pengaturan
Semuanya direkatkan dan dirakit. Dan lampu sudah siap untuk beberapa pengujian!.
Direkomendasikan:
RGB Led Strip Bluetooth Controller V3 + Music Sync + Ambient Light Control: 6 Langkah (dengan Gambar)
RGB Led Strip Bluetooth Controller V3 + Music Sync + Ambient Light Control: Proyek ini menggunakan arduino untuk mengontrol strip led RGB dengan ponsel Anda melalui bluetooth. Anda dapat mengubah warna, menyinkronkan lampu dengan musik, atau membuatnya otomatis menyesuaikan dengan pencahayaan sekitar
LightBox Music Visualizer: 5 Langkah (dengan Gambar)
LightBox Music Visualizer: LightBox menggunakan mikrofon internal ponsel atau tablet Anda untuk menganalisis musik guna menghasilkan pola cahaya indah yang sesuai dengan musik. Cukup mulai aplikasinya, letakkan ponsel atau tablet Anda di suatu tempat di dekat sumber suara, dan kotak Anda akan memvisualisasikan
Bluetooth Speaker Dengan Music Visualizer: 10 Langkah (dengan Gambar)
Speaker Bluetooth Dengan Visualizer Musik: Dalam instruksi ini, saya akan menunjukkan kepada Anda bagaimana saya membuat Speaker Bluetooth ini yang memiliki visualisator musik di bagian atas. Kelihatannya sangat keren dan membuat momen mendengarkan lagu Anda lebih dahsyat. Anda dapat memutuskan apakah Anda ingin mengaktifkan visualizer atau tidak
Music Visualizer (osiloskop): 4 Langkah (dengan Gambar)
Music Visualizer (osiloskop): Visualizer musik ini menyediakan cara terbaik untuk menambah kedalaman pengalaman musik Anda, dan cukup mudah untuk dibuat. Ini juga mungkin berguna sebagai osiloskop sebenarnya untuk beberapa aplikasi, semua yang diperlukan adalah: -sebuah crt tua (hampir semua b&am
Nixie Tube Music Visualizer: 10 Langkah (dengan Gambar)
Nixie Tube Music Visualizer: Visualizer musik yang menghipnotis yang terinspirasi oleh bar kecil di bagian atas iTunes. Empat belas tabung bargraph Rusia IN-13 Nixie digunakan sebagai tampilan. Panjang setiap tabung nixie menyala mewakili volume frekuensi tertentu di mu