Мазмұны:
- 1 -қадам: Қажетті материал
- 2 -қадам: схема
- 3 -қадам: Arduino коды
- 4 -қадам: Шамның негізін 3d басып шығару
- 5 -қадам: Жарықдиодты бекіту
- 6 -қадам: Шам қоршауы
- 7 -қадам: Орнату
Бейне: Ақылды шам (TCfD) - кемпірқосақ + музыкалық визуализатор: 7 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:27
Бұл жоба TUDelft -те тұжырымдамалық дизайн технологиясы курсына арналған
Соңғы өнім-бұл ESP-32 негізгі жарықдиодты шам және серверге қосылған. Прототип үшін шамның екі функциясы бар; тыныштандыратын түс шығаратын кемпірқосақ әсері, екіншіден жарық диодты пикселдер дыбыс деңгейіне сәйкес «билейді». Жүйе Wi -Fi желісіне қосылған және пайдаланушы WIFI арқылы шамнан қандай әсер қалайтынын таңдай алады.
Арзан ESP-32 микрочипі бізге қуатты процессорлар, кіріктірілген зал сенсоры, температура сенсоры, сенсорлық сенсор, сонымен қатар wifi және bluetooth мүмкіндіктерін ұсынады. Бұл жобаға тек екі эффект таңдалғанымен, бұл «ақылды» шамның әсері шексіз. Ол пайдаланушыға ауа райын немесе бөлменің температурасын көрсету үшін пайдаланылады, шамның өзі дабыл құралы бола алады немесе сіздің төсегіңіздің жанында күннің шығуын елестетіп, жақсы ояну үшін күн сәулесін түсіреді.
1 -қадам: Қажетті материал
Arduino esp32
Дыбыс сенсоры
Төрт бағытты екі бағытты логикалық деңгей түрлендіргіші
Неопиксель 2м 60 светодиод/м
Өткізгіш сымдар
Адаптері бар шағын USB кабелі
Интернет байланысы
2 -қадам: схема
Схема берілгендей схема жасалды және сәйкесінше схема жасалды
төмендегі диаграмма.
3 -қадам: Arduino коды
Мұнда алдымен визуализатор коды жасалды. Содан кейін екі мысал код
«Neoplxel RGBW starndtest»; және «simpleWebServerWifi» визуализатор кодына өзгертілді және біріктірілді. Кейде код әлі де қате болса да (кездейсоқ жарық шамдары мезгіл -мезгіл жанып тұрады). Кодтың келесі қайталануы (біз жеткілікті уақыт алғаннан кейін) жаңартылады.
#қосу
#ifdef _AVR_
#қосу
#endif
const int numReadings = 5;
int оқулары [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 = «сіздің желі»; // сіздің желі SSID (аты)
char pass = «secretPassword»; // сіздің желі құпия сөзіңіз
int keyIndex = 0; // сіздің желілік кілт Индекс нөмірі (тек WEP үшін қажет)
int күйі = WL_IDLE_STATUS;
WiFiServer сервері (80);
жарамсыз орнату ()
{
Serial.begin (9600); // сериялық байланысты инициализациялау
pinMode (9, OUTPUT); // жарықдиодты түйреуіш режимін орнатыңыз
// қалқанның болуын тексеріңіз:
егер (WiFi.status () == WL_NO_SHIELD) {
Serial.println («WiFi қалқаны жоқ»);
while (true); // жалғастырмаңыз
}
Жол fv = WiFi.firmwareVersion ();
егер (fv! = «1.1.0») {
Serial.println («Микробағдарламаны жаңартыңыз»);
}
// Wifi желісіне қосылу әрекеті:
уақыт (күй! = WL_CONNECTED) {
Serial.print («Мына желіге қосылу әрекеті:»);
Serial.println (ssid); // желі атауын басып шығару (SSID);
// WPA/WPA2 желісіне қосылу. Ашық немесе WEP желісін қолдансаңыз, бұл жолды өзгертіңіз:
күй = 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;
}
орташа = жиынтық / санОқулар;
кешіктіру (1);
int micpixel = (орташа-100)/5;
Serial.println (микс пиксел);
егер (микс пиксел> 0) {
{
үшін (int j = 0; j <= миксиксель; j ++)
strip.setPixelColor (j, (*2 пиксель), 0, (90-пиксель), 0);
үшін (int j = микс пиксел; 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 («жаңа клиент»); // хабарламаны сериялық порттан басып шығарыңыз
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 («Мазмұн түрі: мәтін/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 («клиент ажыратылды»);
}
}
жарамсыз 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 Wheel (байт WheelPos) {
WheelPos = 255 - WheelPos;
егер (WheelPos <85) {
қайтару жолағы Түс (255 - WheelPos * 3, 0, WheelPos * 3, 0);
}
егер (WheelPos <170) {
WheelPos -= 85;
қайтару жолағы. 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(icpixel);
}
4 -қадам: Шамның негізін 3d басып шығару
Шам негізінің 3d моделі өлшенді, жобаланды және баспа бөлімінің ішіндегі барлық электрлік компоненттерді сыйдыратындай үлкен өлшемде басып шығарылды.
5 -қадам: Жарықдиодты бекіту
Светодиодтар картон орамасына оралып, екі жақты таспамен бекітілген, төменгі бөлігінде сымды өткізу үшін тесік бұрғыланды.
6 -қадам: Шам қоршауы
Қоршау жарық диодты қондырғы сияқты ені шам негізіне және биіктігіне ұқсас мөлдір бөтелкені табу арқылы жасалды. Жарықтың жақсы таралуы үшін оны қалың қағазбен жабады. Баламалы жағдайда, лампа корпусы ретінде аязды әйнекті немесе мөлдір пластикалық түтіктерді қолдануға болады.
7 -қадам: Орнату
Барлығы желімделіп, жиналды. Ал шам тестілеуге дайын болды!
Ұсынылған:
Музыкалық ритмді жарықдиодты шам: 9 қадам (суреттермен)
Музыкалық ырғақтың жарықдиодты шамы: Бұл жобада біз микрофон мен BC547 тақтасында және ПХД -де музыкалық ырғақты жарықдиодты жарық диодын жасаймыз, онда жарық диодты шамдар музыка ырғағымен жыпылықтайды. Микрофон музыканың ырғағын сезеді және электр пульті
Музыкалық шам W/ Arduino: 6 қадам
Музыкалық шам W/ Arduino: Бұл мен және менің серіктесім (Адриан Калво) біздің университет курстарының бірінде жасаған жоба. Жоба Arduino негізіндегі музыкалық қораптан тұрады. Музыка пьезо -зуммер арқылы ойнатылады, үндері біз білетін 8 биттікке ұқсас. Қорап с
Трансляциондық тақта (басқарылатын музыкалық визуализатор): 5 қадам
Трансляциондық тақта (басқарылатын музыкалық визуализатор): осы реттелетін жарық контроллері жобасымен музыканы жарқыраған жарық шоуына аударыңыз. Ди -джейлерге, кештерге және 1: 1 шоуларына тамаша! Төменде демо жаңартылды
Arduino көмегімен музыкалық визуализатор: 5 қадам
Arduino көмегімен музыкалық визуализатор: интерактивті музыкалық визуализатор құрамдас бөліктеріLM338T x5Потенциометр x2 (1k және 10k) 1N4006 диод x5Конденсатор x2 (1uF және 10uF) резисторлар x3 (416, 10k және 1k) Aux сплиттері
Музыкалық визуализатор (осциллограф): 4 қадам (суреттермен)
Музыкалық визуализатор (осциллограф): Бұл музыкалық визуализатор сіздің музыканың тәжірибесіне тереңдік қосудың тамаша әдісін ұсынады және оны құрастыру өте оңай. Бұл сонымен қатар кейбір қосымшалар үшін нақты осциллограф ретінде пайдалы болуы мүмкін: -ескі crt (барлығы дерлік