Мазмуну:
- 1 -кадам: Материал керек
- 2 -кадам: Райондук диаграмма
- 3 -кадам: Arduino коду
- 4 -кадам: Чырактын базасын 3d басып чыгаруу
- 5 -кадам: Жетектөөчү тиркеме
- 6 -кадам: Лампа корпусу
- 7 -кадам: Орнотуу
Video: Smart Lamp (TCfD) - Rainbow + Music Visualizer: 7 кадам (Сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Бул долбоор TUDelftтеги Концепт Дизайн технологиясы курсу үчүн жасалган
Акыркы продукт-бул ESP-32 базалык LED чырагы жана серверге туташкан. Прототип үчүн чырактын эки функциясы бар; асан -үсөн эффекти, анын тегерегине карай жылтырак түс берет, экинчиден, LED пикселдери үн деңгээлине жараша "бийлейт". Система Wi -Fiга туташкан жана колдонуучу чырактан WIFI аркылуу каалаган эффектти тандай алат.
Арзан ESP-32 микрочипи бизге күчтүү процессорлорду, камтылган зал сенсорун, температура сенсорун, сенсордук сенсорду, ошондой эле wifi жана bluetooth мүмкүнчүлүктөрүн берет. Муну менен, бул долбоорго эки гана эффект тандалганына карабастан, бул "акылдуу" чырактын таасири чексиз. Бул колдонуучуга аба ырайын же бөлмө температурасын көрсөтүү үчүн колдонулат, чырак өзү ойготкуч катары иштей алат же керебеттин жанында күндүн чыгышын окшоштуруп, күндүн жарыгын жакшы ойготуу үчүн берет.
1 -кадам: Материал керек
Arduino esp32
Үн сенсору
Төрт тараптуу эки багыттуу логикалык деңгээлди алмаштыргыч
Neopixel 2м 60 лед/м жетти
Өткөргүч зымдар
Адаптери бар микро USB кабели
Интернет байланышы
2 -кадам: Райондук диаграмма
Райондук диаграмма түзүлүп, мында берилгендей схема түзүлдү
төмөндөгү диаграмма.
3 -кадам: Arduino коду
Бул жерде биринчи кезекте визуализатор коду жасалган. Андан кийин, эки мисал коду
; "Neoplxel RGBW starndtest"; жана "simpleWebServerWifi" визуализатор кодунун ичинде өзгөртүлүп, интеграцияланган. Код дагы деле кээде ката болсо да (туш келди LEDдин жарыгы маал -маалы менен). Коддун кийинки кайталанышы (биз жетиштүү убакыт алгандан кийин) жаңыртылат.
#кошуу
#ifdef _AVR_
#кошуу
#endif
const int numReadings = 5;
int readings [numReadings];
int readIndex = 0;
int total = 0;
int орточо = 0;
int micPin = 33;
#аныктоо PIN 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);
жараксыз орнотуу ()
{
Serial.begin (9600); // сериялык байланышты баштоо
pinMode (9, OUTPUT); // LED пин режимин коюңуз
// калкан бар экенин текшерүү:
эгер (WiFi.status () == WL_NO_SHIELD) {
Serial.println ("WiFi калканы жок");
while (true); // улантпа
}
String fv = WiFi.firmwareVersion ();
эгер (fv! = "1.1.0") {
Serial.println ("Камтылган программаны жаңыртыңыз");
}
// Wifi тармагына туташуу аракети:
while (status! = 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 ();
кечиктирүү (күтүү);
}
}
жараксыз визуализатор () {
total = total - окуулар [readIndex];
окуулар [readIndex] = analogRead (micPin);
total = total + readings [readIndex];
readIndex = readIndex + 1;
if (readIndex> = numReadings) {
readIndex = 0;
}
орточо = жалпы / numReadings;
кечигүү (1);
int micpixel = (орточо-100)/5;
Serial.println (микс пиксел);
эгер (микс пиксел> 0) {
{
үчүн (int j = 0; j <= микпиксел; 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 ();
}
}
эгер (микс <0) {
үчүн (int j = 0; j <= 20; j ++)
strip.setPixelColor (j, 0, 0, 50, 0);
strip.show ();
}
}
void loop () {
{
WiFiClient клиенти = server.available (); // келген кардарларды угуңуз
if (клиент) {// эгерде сиз кардар алсаңыз, Serial.println ("жаңы кардар"); // сериялык порттон билдирүү басып чыгаруу
String currentLine = ""; // кардардан келген маалыматтарды кармап туруу үчүн Стринг жасаңыз
while (client.connected ()) {// loop кардар туташып турганда
if (client.available ()) {// эгерде кардардан окула турган байттар болсо, char c = client.read (); // анда бир байтты окуңуз
Serial.write (c); // сериялык мониторду басып чыгарыңыз
if (c == '\ n') {// if byte a newline character
// эгерде учурдагы сап бош болсо, сизде эки жаңы сап белгиси бар.
// бул кардар 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 ("Бул жерге чыкылдатып, Rainbow эффектин күйгүзүңүз");
client.print ("Бул жерди чыкылдатыңыз Visualizerди күйгүзүңүз");
// HTTP жообу башка бош сап менен аяктайт:
client.println ();
// while циклинен чыгуу:
тыныгуу;
} else {// эгер сизде жаңы сап болсо, анда CurrentLine'ди тазалаңыз:
currentLine = "";
}
} else if (c! = '\ r') {// эгерде сизде вагондун артка кайтуу белгисинен башка эч нерсе жок болсо, currentLine += c; // аны currentLine аягына кошуу
}
// Кардардын суранычы "GET /H" же "GET /L" болгонун текшериңиз:
эгер (currentLine.endsWith ("Get /R")) {
Радуга (10); // Радуга таасири күйгүзүлдү
}
эгер (currentLine.endsWith ("GET /V")) {
Visualizer (); // Визуализатор күйгүзүлдү
}
}
}
// байланышты жабуу:
client.stop ();
Serial.println ("кардар ажыратылды");
}
}
жараксыз printWifiStatus () {
// тиркелген тармактын SSID'ин басып чыгаруу:
Serial.print ("SSID:");
Serial.println (WiFi. SSID ());
// WiFi калканыңыздын IP дарегин басып чыгарыңыз:
IPAddress ip = WiFi.localIP ();
Serial.print ("IP дареги:");
Serial.println (ip);
// алынган сигналдын күчүн басып чыгаруу:
узун rssi = WiFi. RSSI ();
Serial.print ("сигналдын күчү (RSSI):");
Serial.print (rssi);
Serial.println ("dBm");
// браузерде кайда барууну басып чыгаруу:
Serial.print ("Бул баракты иш жүзүндө көрүү үчүн https:// үчүн браузерди ачыңыз)";
Serial.println (ip);
}
}
uint32_t дөңгөлөк (байт WheelPos) {
WheelPos = 255 - WheelPos;
эгер (WheelPos <85) {
return strip. Color (255 - WheelPos * 3, 0, WheelPos * 3, 0);
}
эгер (WheelPos <170) {
WheelPos -= 85;
return strip. Color (0, WheelPos * 3, 255 - WheelPos * 3, 0);
}
WheelPos -= 170;
кайра тилке. Color (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 -кадам: Чырактын базасын 3d басып чыгаруу
Чырак базасынын 3d модели өлчөнүп, иштелип чыккан жана базалык бөлүмдүн ичиндеги бардык электр компоненттерине туура келгидей өлчөмдө басылган.
5 -кадам: Жетектөөчү тиркеме
Леддер картон түрмөккө оролуп, эки тараптуу скотч менен бекитилген, астынкы бөлүгүндө зымды өткөрүү үчүн тешик бургуланган
6 -кадам: Лампа корпусу
Тиркеме LED тиркемесинин туурасы чырактын негизине жана бийиктигине окшош тунук бөтөлкөнү табуу аркылуу жасалды. Бул жарыктын жакшы таралышы үчүн калың кагаз менен жабылган. Же болбосо, лампа корпусу катары аяздуу айнекти же тунук пластикалык түтүктөрдү колдонсо болот.
7 -кадам: Орнотуу
Бардыгы жабыштырылып, чогултулду. Ал эми лампа кээ бир сыноолорго даяр болчу!
Сунушталууда:
Translightion Board (Controllable Music Visualizer): 5 кадам
Translightion Board (Controllable Music Visualizer): Бул ыңгайлаштырылган жарык контроллери долбоору менен музыканы көздүн жоосун алган жарык шоусуна которуңуз. Ди -джейлер, кечелер жана 1: 1 шоулары үчүн эң сонун! Төмөндө демо жаңыртылды
Bluetooth менен Arduino Music Desk Lamp!: 9 кадам
Bluetooth менен Arduino Music Desk Lamp !: Саламатсызбы! Бул Нускамада мен жаркын нерсени курайын деп жатам! Сизди жаңы стол чырагым менен тааныштырайын! Анын кызыксыз столун ди -джейдин түнкү аттракционуна айлантуу үчүн арзан DIY чечими! Же жок болушу мүмкүн. Бирок мен ишендирем, акыркы продукт
LightBox Music Visualizer: 5 кадам (сүрөттөр менен)
LightBox Music Visualizer: LightBox телефонго же планшетке камтылган микрофонду колдонуп, музыкага дал келген кооз жарык моделдерин түзүү үчүн музыканы талдайт. Жөн эле колдонмону иштетип, телефонуңузду же планшетиңизди үн булагына жакын жерге коюңуз, ошондо сиздин кутуңуз элестетет
Arduino Music Reactive Desktop Lamp: 8 Steps (Сүрөттөр менен)
Arduino Music Reactive Desktop Lamp: Баарына салам! Бул курууда биз жөнөкөй компоненттерди жана кээ бир негизги Arduino программалоолорун колдонуп, реактивдүү LED стол чырагын жасайбыз. Бул жарык бардык үндөргө жана музыкага бийлей турган таасирдүү эффект түзөт. Мен бул долбоорду командалашым менен бирге бүтүрдүм
Nixie Tube Music Visualizer: 10 кадам (сүрөттөр менен)
Nixie Tube Music Visualizer: iTunesтин үстүндөгү кичинекей тилкелерден шыктандырылган гипноздоочу музыка визуализатору. Он төрт орус IN-13 Nixie bargraph түтүктөрү дисплей катары колдонулат. Ар бир никси түтүгүнүн күйүп турган узундугу белгилүү бир жыштыктын көлөмүн билдирет