Съдържание:
- Стъпка 1: Необходим материал
- Стъпка 2: Електрическа схема
- Стъпка 3: Arduino код
- Стъпка 4: 3D отпечатване на основата на лампата
- Стъпка 5: Светодиоден прикачен файл
- Стъпка 6: Корпус на лампата
- Стъпка 7: Настройка
Видео: Smart Lamp (TCfD) - Rainbow + Music Visualizer: 7 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:54
Този проект е направен за курса Технология за концептуален дизайн в TUDelft
Крайният продукт е базова LED лампа ESP-32 и е свързан със сървъра. За прототипа лампата има две функции; ефект на дъга, който излъчва успокояващ цветен променлив блясък към заобикалящата го среда и на второ място визуализатор на звука, където LED пикселите „танцуват“според нивата на звука. Системата е свързана с wifi и потребителят може да избере какъв ефект иска от лампата чрез WIFI.
Евтиният микрочип ESP-32 ни предоставя мощни процесори, вграден сензор за зала, температурен сензор, сензор за докосване, а също и wifi и bluetooth. С това, макар че за този проект бяха избрани само два ефекта, значението на тази „интелигентна“лампа е неограничено. Той би бил използван за посочване на времето на потребителя или температурата на помещението, самата лампа може да действа като алармен спусък или може да даде успокояващ слънчев блясък до леглото си, симулиращ изгрев за приятно събуждане.
Стъпка 1: Необходим материал
Arduino esp32
Звуков сензор
Четирипосочен двупосочен конвертор на логическо ниво
Neopixel led 2m 60 led/m
Кабелни проводници
Микро USB кабел с адаптер
интернет връзка
Стъпка 2: Електрическа схема
Начертана е електрическа схема и съответно е направена схема, както е дадено в
диаграмата по -долу.
Стъпка 3: Arduino код
Тук първо беше направен код за визуализация. След това два примерни кода
; „Neoplxel RGBW starndtest“; и „simpleWebServerWifi“беше променен и интегриран в кода на визуализатора. Въпреки че кодът понякога все още има бъгове (произволен светодиод светва от време на време). Следващата итерация на кода (след като получим достатъчно време) ще бъде актуализирана.
#включва
#ifdef _AVR_
#включва
#endif
const int numReadings = 5;
int показания [numReadings];
int readIndex = 0;
int общо = 0;
int средно = 0;
int micPin = 33;
#дефинирайте ПИН 4
#дефинирайте NUM_LEDS 120
#дефинирайте ЯРКОСТ 100
Adafruit_NeoPixel strip = 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 status = WL_IDLE_STATUS;
WiFiServer сървър (80);
void setup ()
{
Serial.begin (9600); // инициализира серийна комуникация
pinMode (9, OUTPUT); // задаваме режим на LED извод
// проверете за наличието на щита:
if (WiFi.status () == WL_NO_SHIELD) {
Serial.println ("WiFi щит липсва");
while (вярно); // не продължавай
}
Низ 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;
}
}
void rainbow (uint8_t wait) {
uint16_t i, j;
за (j = 0; j <256; j ++) {
за (i = 0; i
strip.setPixelColor (i, Wheel ((i+j) & 255));
}
strip.show ();
забавяне (изчакване);
}
}
void визуализатор () {
общо = общо - показания [readIndex];
показания [readIndex] = analogRead (micPin);
общо = общо + показания [readIndex];
readIndex = readIndex + 1;
if (readIndex> = numReadings) {
readIndex = 0;
}
средно = общо / бройЧетения;
забавяне (1);
int микропиксел = (средно-100)/5;
Serial.println (micpixel);
if (micpixel> 0) {
{
за (int j = 0; j <= микропиксел; j ++)
strip.setPixelColor (j, (micpixel*2), 0, (90-micpixel), 0);
за (int j = микропиксел; 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 ();
}
}
void loop () {
{
WiFiClient клиент = server.available (); // слушаме за входящи клиенти
if (client) {// ако получите клиент, Serial.println ("нов клиент"); // отпечатва съобщение от серийния порт
Низ currentLine = ""; // създаваме низ за съхраняване на входящи данни от клиента
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 ("Тип съдържание: текст/html");
client.println ();
// съдържанието на HTTP отговора следва заглавката:
client.print ("Щракнете тук Включете ефекта на дъгата");
client.print ("Щракнете тук Включете визуализатора");
// HTTP отговорът завършва с друг празен ред:
client.println ();
// излиза от цикъла while:
прекъсване;
} else {// ако имате нов ред, изчистете currentLine:
currentLine = "";
}
} else if (c! = '\ r') {// ако имате нещо друго освен символ за връщане на каретка, currentLine += c; // добавяме го в края на текущата линия
}
// Проверете дали клиентската заявка е „GET /H“или „GET /L“:
if (currentLine.endsWith ("GET /R")) {
Дъга (10); // Ефектът на дъгата е включен
}
if (currentLine.endsWith ("GET /V")) {
Визуализатор (); // Визуализаторът е включен
}
}
}
// затваряме връзката:
client.stop ();
Serial.println ("клиентът не е свързан");
}
}
void printWifiStatus () {
// отпечатате SSID на мрежата, към която сте свързани:
Serial.print ("SSID:");
Serial.println (WiFi. SSID ());
// отпечатате IP адреса на вашия WiFi щит:
IP Адрес ip = WiFi.localIP ();
Serial.print ("IP адрес:");
Serial.println (ip);
// отпечатва силата на получения сигнал:
дълго rssi = WiFi. RSSI ();
Serial.print ("сила на сигнала (RSSI):");
Serial.print (rssi);
Serial.println ("dBm");
// отпечатайте къде да отидете в браузър:
Serial.print ( За да видите тази страница в действие, отворете браузър на
Serial.println (ip);
}
}
uint32_t Wheel (байт WheelPos) {
WheelPos = 255 - WheelPos;
if (WheelPos <85) {
обратна лента. Цвет (255 - WheelPos * 3, 0, WheelPos * 3, 0);
}
if (WheelPos <170) {
WheelPos -= 85;
обратна лента. Color (0, WheelPos * 3, 255 - WheelPos * 3, 0);
}
WheelPos -= 170;
обратна лента. Цвет (WheelPos * 3, 255 - WheelPos * 3, 0, 0);
}
uint8_t червено (uint32_t c) {
return (c >> 16);
}
uint8_t зелено (uint32_t c) {
return (c >> 8);
}
uint8_t синьо (uint32_t c) {
връщане (в);
}
}
//Serial.println(micpixel);
}
Стъпка 4: 3D отпечатване на основата на лампата
3D модел на основата на лампата беше измерен, проектиран и отпечатан с достатъчно големи размери, за да се поберат всички електрически компоненти в базовото отделение.
Стъпка 5: Светодиоден прикачен файл
Светодиодите бяха навити в картонена ролка и прикрепени с помощта на двустранна лента, в долната част е пробит отвор за преминаване на телта
Стъпка 6: Корпус на лампата
Направено е заграждение чрез намиране на прозрачна бутилка с подобна ширина като основата на лампата и височина като LED приставката. След това тя беше покрита с дебела хартия за по -добро разсейване на светлината. Като алтернатива е възможно да се използват матово стъкло или полупрозрачни пластмасови тръби като корпус на лампата.
Стъпка 7: Настройка
Всичко беше залепено и сглобено. И лампата беше готова за някои тестове !.
Препоръчано:
Laser Box Music Laser Light Show: 18 стъпки (със снимки)
Laser Box Music Laser Light Show: По -рано публикувах Instructable, в който се описва как да се използват компютърни твърди дискове, за да се направи музикално лазерно светлинно шоу. Реших да направя компактна версия, използвайки електрическа кутия и RC автомобилни двигатели. Преди да започна, вероятно трябва да ви кажа, че лазерът
Steampunk Pi Jukebox с Google Music: 11 стъпки (със снимки)
Steampunk Pi Jukebox Работи с Google Music: ВНИМАНИЕ !! Ако се опитате да направите подобен проект, разберете, че имате потенциала да попаднете на азбест в старо радио, обикновено, но не ограничено до някакъв вид топлозащита или изолация. Моля, направете свое собствено проучване и вземете предпазни мерки
Arduino Music Reactive Desktop Lamp: 8 стъпки (със снимки)
Arduino Music Reactive Desktop Lamp: Здравейте всички! В тази версия ще направим реактивна LED настолна лампа, използваща прости компоненти и някои основни програми за Arduino. Той прави впечатляващ ефект, при който светлината ще танцува под всички звуци и музика. Завърших този проект със съотборник
Crack Itunes Protected Music (премахване на DRM защита): 5 стъпки (със снимки)
Crack Itunes Protected Music (премахване на DRM защита): Музиката е била огромна част от обществото в миналото, но с технологиите е по -голяма от всякога! Най -бързият и лесен начин за получаване на музика в наши дни е чрез интернет („Интернет е комуникационен инструмент, използван по целия свят, където хората могат да дойдат заедно
Light Music Light Show (lpt Led): 6 стъпки (със снимки)
Light Music Light Show (lpt Led): Наистина просто & евтин лайт бар, захранван и контролиран от компютър (през lpt порт). Изграждането на това ще ви струва около 10-20 долара (имах безплатно кабела plexi и lpt, затова платих само 3 долара за факел и 3 долара за гайки и болтове) = убийте