فهرست مطالب:
- مرحله 1: مواد مورد نیاز
- مرحله 2: نمودار مدار
- مرحله 3: کد آردوینو
- مرحله 4: چاپ سه بعدی پایه لامپ
- مرحله 5: پیوست Led
- مرحله 6: محفظه لامپ
- مرحله 7: راه اندازی
تصویری: لامپ هوشمند (TCfD) - Rainbow + Music Visualizer: 7 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
این پروژه برای دوره فناوری برای طراحی مفهوم در TUDelft انجام می شود
محصول نهایی یک لامپ LED پایه ESP-32 است و به سرور متصل است. برای نمونه اولیه ، لامپ دارای دو عملکرد است. جلوه ای رنگین کمان که درخشندگی آرامش بخش را به محیط اطراف منتقل می کند و در مرحله دوم تجسم کننده صدا است که پیکسل های LED با توجه به سطح صدا "می رقصند". سیستم به وای فای متصل است و کاربر می تواند از طریق WIFI انتخاب کند که از لامپ چه جلوه ای می خواهد.
میکروچیپ ارزان ESP-32 پردازنده های قدرتمند ، سنسور داخلی داخلی ، سنسور دما ، سنسور لمسی و همچنین وای فای و بلوتوث را در اختیار ما قرار می دهد. با این وجود ، در حالی که فقط دو جلوه برای این پروژه انتخاب شد ، مفهوم این لامپ "هوشمند" نامحدود است. برای نشان دادن آب و هوا به کاربر یا دمای اتاق ، چراغ می تواند به عنوان یک زنگ هشدار عمل کند یا می تواند تابش نور خورشید را در کنار تخت شما برای شبیه سازی طلوع آفتاب برای یک تجربه خوب بیداری ایجاد کند.
مرحله 1: مواد مورد نیاز
آردوینو esp32
سنسور صدا
مبدل سطح منطق چهار جهته دو طرفه
رهبری Neopixel 2m 60 led/m
سیم های بلوز
کابل میکرو USB با آداپتور
اتصال اینترنت
مرحله 2: نمودار مدار
یک نمودار مدار رسم شد و مدار مطابق شکل زیر ساخته شد
نمودار زیر
مرحله 3: کد آردوینو
در اینجا ، ابتدا کد تجسم کننده ساخته شد. سپس ، دو کد نمونه
؛ "neoplxel RGBW starndtest"؛ و “simpleWebServerWifi” اصلاح شد و در کد تجسم کننده ادغام شد. اگرچه گاهی اوقات کد هنوز اشکال دارد (چراغ رهبری تصادفی هر از گاهی روشن می شود). تکرار بعدی کد (هنگامی که زمان کافی به دست آوردیم) به روز می شود.
#عبارتند از
#ifdef _AVR_
#عبارتند از
#اندیف
const int numReadings = 5؛
int خواندن [numReadings] ؛
int readIndex = 0؛
int کل = 0؛
int متوسط = 0؛
int micPin = 33 ؛
#پین 4 را تعریف کنید
#تعریف NUM_LEDS 120
#روشنایی را 100 تعریف کنید
نوار Adafruit_NeoPixel = Adafruit_NeoPixel (NUM_LEDS ، PIN ، NEO_GRBW + NEO_KHZ800) ؛
بایت 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 };
#عبارتند از
#عبارتند از
char ssid = "yourNetwork"؛ // SSID شبکه شما (نام)
char pass = "secretPassword"؛ // رمز شبکه شما
int keyIndex = 0؛ // شماره فهرست کلید شبکه شما (فقط برای WEP لازم است)
وضعیت int = WL_IDLE_STATUS؛
سرور WiFiServer (80) ؛
void setup ()
{
Serial.begin (9600)؛ // برقراری ارتباط سریالی
pinMode (9 ، OUTPUT) ؛ // حالت پین LED را تنظیم کنید
// وجود سپر را بررسی کنید:
if (WiFi.status () == WL_NO_SHIELD) {
Serial.println ("سپر WiFi موجود نیست") ؛
در حالی که (درست) ؛ // ادامه نده
}
رشته fv = WiFi.firmwareVersion ()؛
if (fv! = "1.1.0") {
Serial.println ("لطفاً سیستم عامل را ارتقا دهید") ؛
}
// تلاش برای اتصال به شبکه Wifi:
while (وضعیت! = WL_CONNECTED) {
Serial.print ("تلاش برای اتصال به شبکه با نام:") ؛
Serial.println (ssid)؛ // چاپ نام شبکه (SSID) ؛
// اتصال به شبکه WPA/WPA2. در صورت استفاده از شبکه باز یا WEP این خط را تغییر دهید:
status = WiFi.begin (ssid ، pass) ؛
// برای اتصال 10 ثانیه صبر کنید:
تاخیر (10000) ؛
}
server.begin ()؛ // سرور وب را روی پورت 80 راه اندازی کنید
printWifiStatus ()؛ // اکنون متصل هستید ، بنابراین وضعیت را چاپ کنید
}
{
Serial.begin (9600)؛
strip.setBrightness (BRIGHTNESS) ؛
strip.begin ()؛
strip.show ()؛ // مقداردهی اولیه همه پیکسل ها به حالت "خاموش"
pinMode (micPin ، INPUT) ؛
for (int thisReading = 0؛ thisReading <numReadings؛ thisReading ++) {
خواندن [thisReading] = 0 ؛
}
}
رنگین کمان خالی (uint8_t صبر کنید) {
uint16_t i، j؛
برای (j = 0 ؛ j <256 ؛ j ++) {
برای (i = 0 ؛ i
strip.setPixelColor (i ، Wheel ((i+j) & 255)) ؛
}
strip.show ()؛
تأخیر (صبر) ؛
}
}
void visualizer () {
مجموع = مجموع - خواندن [readIndex] ؛
خواندن [readIndex] = analogRead (micPin) ؛
مجموع = مجموع + خوانش [readIndex] ؛
readIndex = readIndex + 1 ؛
if (readIndex> = numReadings) {
readIndex = 0 ؛
}
متوسط = مجموع / numReadings؛
تأخیر (1) ؛
int micpixel = (متوسط 100)/5 ؛
Serial.println (میکرو پیکسل) ؛
if (micpixel> 0) {
{
برای (int j = 0 ؛ j <= micpixel ؛ j ++)
strip.setPixelColor (j ، (micpixel*2) ، 0 ، (90-micpixel) ، 0) ؛
برای (int j = micpixel ؛ j <= NUM_LEDS ؛ j ++)
strip.setPixelColor (j، 0، 0، 0، 0)؛
strip.show ()؛
}
}
if (micpixel <0) {
برای (int j = 0 ؛ j <= 20 ؛ j ++)
strip.setPixelColor (j، 0، 0، 50، 0)؛
strip.show ()؛
}
}
حلقه خالی () {
{
مشتری WiFiClient = server.available ()؛ // به مشتریان ورودی گوش دهید
if (client) {// اگر مشتری دریافت کردید ،
Serial.println ("مشتری جدید") ؛ // پیام را از پورت سریال چاپ کنید
string currentLine = ""؛ // ایجاد یک String برای نگهداری داده های دریافتی از سرویس گیرنده
while (client.connected ()) {// حلقه در حالی که مشتری متصل است
if (client.available ()) {// اگر بایت هایی برای خواندن از مشتری وجود دارد ،
char c = client.read ()؛ // پس یک بایت بخوانید
Serial.write (c)؛ // آن را از مانیتور سریال چاپ کنید
if (c == '\ n') {// اگر بایت یک کاراکتر جدید خط باشد
// اگر خط فعلی خالی است ، دو کاراکتر خط جدید در یک ردیف دارید.
// این پایان درخواست مشتری HTTP است ، بنابراین یک پاسخ ارسال کنید:
if (currentLine.length () == 0) {
// سرصفحه های HTTP همیشه با یک کد پاسخ شروع می شوند (به عنوان مثال HTTP/1.1 200 OK)
// و نوع محتوا تا مشتری بداند چه اتفاقی می افتد ، سپس یک خط خالی:
client.println ("HTTP/1.1 200 OK") ؛
client.println ("نوع محتوا: text/html")؛
client.println ()؛
// محتوای پاسخ HTTP از سرصفحه زیر پیروی می کند:
client.print ("اینجا را کلیک کنید روشن کردن اثر رنگین کمان") ؛
client.print ("اینجا را کلیک کنید روشن کردن ویژوالایزر")؛
// پاسخ HTTP با یک خط خالی دیگر به پایان می رسد:
client.println ()؛
// از حلقه while خارج شوید:
زنگ تفريح؛
} else {// اگر خط جدیدی دارید ، CurrentLine را پاک کنید:
currentLine = ""؛
}
} else if (c! = '\ r') {// اگر به جز کاراکتر بازگشت کالسکه چیز دیگری دارید ،
currentLine += c؛ // آن را به انتهای currentLine اضافه کنید
}
// بررسی کنید که آیا درخواست مشتری "GET /H" یا "GET /L" بوده است:
if (currentLine.endsWith ("GET /R")) {
رنگین کمان (10) ؛ // جلوه رنگین کمان روشن شد
}
if (currentLine.endsWith ("GET /V")) {
Visualizer ()؛ // Visualizer روشن است
}
}
}
// بستن اتصال:
client.stop ()؛
Serial.println ("اتصال مشتری قطع شده است")؛
}
}
void printWifiStatus () {
// SSID شبکه ای که به آن متصل هستید را چاپ کنید:
Serial.print ("SSID:")؛
Serial.println (WiFi. SSID ()) ؛
// آدرس IP سپر WiFi خود را چاپ کنید:
IPAddress ip = WiFi.localIP ()؛
Serial.print ("آدرس IP:") ؛
Serial.println (ip)؛
// قدرت سیگنال دریافتی را چاپ کنید:
long rssi = WiFi. RSSI ()؛
Serial.print ("قدرت سیگنال (RSSI):")؛
Serial.print (rssi) ؛
Serial.println ("dBm") ؛
// چاپ کنید که در مرورگر کجا بروید:
Serial.print ("برای مشاهده این صفحه در عمل ، مرورگری را به آدرس https:// باز کنید") ؛
Serial.println (ip)؛
}
}
uint32_t Wheel (byte WheelPos) {
WheelPos = 255 - WheelPos ؛
if (WheelPos <85) {
نوار بازگشت. رنگ (255 - WheelPos * 3 ، 0 ، WheelPos * 3 ، 0) ؛
}
if (WheelPos <170) {
WheelPos -= 85 ؛
نوار بازگشت. رنگ (0 ، WheelPos * 3 ، 255 - WheelPos * 3 ، 0) ؛
}
WheelPos -= 170 ؛
نوار بازگشت. رنگ (WheelPos * 3 ، 255 - WheelPos * 3 ، 0 ، 0) ؛
}
uint8_t قرمز (uint32_t c) {
بازگشت (c >> 16) ؛
}
uint8_t سبز (uint32_t c) {
بازگشت (c >> 8) ؛
}
uint8_t آبی (uint32_t c) {
بازگشت (ج) ؛
}
}
//Serial.println(micpixel) ؛
}
مرحله 4: چاپ سه بعدی پایه لامپ
یک مدل سه بعدی از پایه لامپ اندازه گیری ، طراحی و چاپ شد با ابعادی به اندازه کافی بزرگ که بتواند همه اجزای الکتریکی داخل محفظه پایه را در خود جای دهد.
مرحله 5: پیوست Led
Led's در رول مقوایی پیچیده شد و با استفاده از نوار دو طرفه متصل شد ، سوراخی در قسمت زیرین برای عبور سیم از طریق آن ایجاد شد
مرحله 6: محفظه لامپ
یک محفظه با پیدا کردن یک بطری شفاف با عرض مشابه پایه چراغ و ارتفاع پیوست LED ساخته شد. سپس برای پخش بهتر نور با کاغذ ضخیم پوشانده شد. از طرف دیگر ، ممکن است از شیشه مات یا لوله های پلاستیکی شفاف به عنوان محفظه لامپ استفاده کنید.
مرحله 7: راه اندازی
همه چیز به هم چسبیده و جمع شد. و لامپ برای آزمایش آماده بود !.
توصیه شده:
RGB Led Strip Bluetooth Controller V3 + Music Sync + Ambient Light Control: 6 مرحله (همراه با تصاویر)
RGB Led Strip Bluetooth Controller V3 + Music Sync + Ambient Light Control: این پروژه از آردوینو برای کنترل نوار LED RGB با تلفن شما از طریق بلوتوث استفاده می کند. می توانید رنگ را تغییر دهید ، چراغ ها را با موسیقی همگام سازی کنید یا آنها را به طور خودکار برای روشنایی محیط تنظیم کنید
نحوه جمع آوری کیت 3D Light Cube 8x8x8 Blue LED MP3 Music Spectrum از Banggood.com: 10 مرحله (همراه با تصاویر)
طرز جمع آوری کیت 3D Light Cube 8x8x8 Blue LED MP3 Music Spectrum از Banggood.com: این چیزی است که ما در حال ساخت آن هستیم: کیت 3D Light Cube Kit 8x8x8 Blue LED MP3 Music Spectrum اختیاری از محفظه هیئت مدیره اکریلیک شفاف اگر این مکعب LED را دوست دارید ، ممکن است بخواهید به کانال YouTube من بروید ، جایی که من مکعب های LED ، روبات ها ، اینترنت اشیا ، چاپ سه بعدی و
Muscle MIDI Music !: 7 مرحله (همراه با تصاویر)
موسیقی عضلانی MIDI بسازید !: هر زمان که سیستم عصبی شما نیاز به انجام حرکتی دارد ، سیگنال های الکتریکی کوچکی را از طریق نورون ها برای کنترل ماهیچه های شما ارسال می کند. تکنیک الکترومیوگرافی (EMG) به ما امکان می دهد این سیگنال های الکتریکی را تقویت و اندازه گیری کنیم. علاوه بر اینکه
LightBox Music Visualizer: 5 مرحله (همراه با تصاویر)
LightBox Music Visualizer: LightBox از میکروفون داخلی تلفن یا رایانه لوحی شما برای تجزیه و تحلیل موسیقی برای ایجاد الگوهای نوری زیبا متناسب با موسیقی استفاده می کند. فقط برنامه را راه اندازی کنید ، تلفن یا رایانه لوحی خود را در جایی نزدیک منبع صدا قرار دهید ، و جعبه شما تصویر را
Nixie Tube Music Visualizer: 10 مرحله (همراه با تصاویر)
Nixie Tube Music Visualizer: تجسم کننده موسیقی هیپنوتیزم کننده با الهام از نوارهای کوچک بالای iTunes. چهارده لوله بارگراف IN-13 روسی نیکسی به عنوان صفحه نمایش استفاده می شود. طول روشن شدن هر لوله نیکسی نشان دهنده حجم یک فرکانس معین در مو