Мазмұны:

Ақылды шам (TCfD) - кемпірқосақ + музыкалық визуализатор: 7 қадам (суреттермен)
Ақылды шам (TCfD) - кемпірқосақ + музыкалық визуализатор: 7 қадам (суреттермен)

Бейне: Ақылды шам (TCfD) - кемпірқосақ + музыкалық визуализатор: 7 қадам (суреттермен)

Бейне: Ақылды шам (TCfD) - кемпірқосақ + музыкалық визуализатор: 7 қадам (суреттермен)
Бейне: Ақылды шам 2024, Қараша
Anonim
Image
Image
Схема диаграммасы
Схема диаграммасы

Бұл жоба 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 басып шығару
Шамның негізін 3d басып шығару

Шам негізінің 3d моделі өлшенді, жобаланды және баспа бөлімінің ішіндегі барлық электрлік компоненттерді сыйдыратындай үлкен өлшемде басып шығарылды.

5 -қадам: Жарықдиодты бекіту

Жарықдиодты тіркеме
Жарықдиодты тіркеме

Светодиодтар картон орамасына оралып, екі жақты таспамен бекітілген, төменгі бөлігінде сымды өткізу үшін тесік бұрғыланды.

6 -қадам: Шам қоршауы

Шам қорабы
Шам қорабы

Қоршау жарық диодты қондырғы сияқты ені шам негізіне және биіктігіне ұқсас мөлдір бөтелкені табу арқылы жасалды. Жарықтың жақсы таралуы үшін оны қалың қағазбен жабады. Баламалы жағдайда, лампа корпусы ретінде аязды әйнекті немесе мөлдір пластикалық түтіктерді қолдануға болады.

7 -қадам: Орнату

Орнату
Орнату

Барлығы желімделіп, жиналды. Ал шам тестілеуге дайын болды!

Ұсынылған: