Satura rādītājs:

Viedā lampa (TCfD) - varavīksne + mūzikas vizualizators: 7 soļi (ar attēliem)
Viedā lampa (TCfD) - varavīksne + mūzikas vizualizators: 7 soļi (ar attēliem)

Video: Viedā lampa (TCfD) - varavīksne + mūzikas vizualizators: 7 soļi (ar attēliem)

Video: Viedā lampa (TCfD) - varavīksne + mūzikas vizualizators: 7 soļi (ar attēliem)
Video: DZIEDI AR PUKŠU - "Es liela meita" dzied "Kraukšķīši" 2024, Novembris
Anonim
Image
Image
Ķēdes diagramma
Ķēdes diagramma

Šis projekts tiek veikts kursam Tehnoloģija koncepcijas projektēšanai TUDelft

Galaprodukts ir ESP-32 bāzes LED lampa un ir savienots ar serveri. Prototipam lampai ir divas funkcijas; varavīksnes efekts, kas izstaro nomierinošu krāsu maiņu pret apkārtni, un, otrkārt, skaņas vizualizators, kurā LED pikseļi “dejo” atbilstoši skaņas līmenim. Sistēma ir savienota ar wifi, un lietotājs, izmantojot WIFI, var izvēlēties, kādu efektu no lampas vēlas.

Lētā ESP-32 mikroshēma nodrošina mūs ar jaudīgiem procesoriem, iebūvētu zāles sensoru, temperatūras sensoru, pieskāriena sensoru, kā arī wifi un Bluetooth iespējas. Tādējādi šim projektam tika izvēlēti tikai divi efekti, taču šīs “viedās” lampas ietekme ir neierobežota. To izmantotu, lai norādītu lietotājam laika apstākļus vai telpas temperatūru, pati lampa var darboties kā trauksmes signāls, vai arī tā var dot nomierinošu saules gaismas spīdumu blakus jūsu gultai, simulējot saullēktu, lai iegūtu patīkamu pamodināšanas pieredzi.

1. darbība. Nepieciešamais materiāls

Arduino esp32

Skaņas sensors

Četru virzienu divvirzienu loģikas līmeņa pārveidotājs

Neopixel led 2m 60 led/m

Jumper vadi

Mikro USB kabelis ar adapteri

interneta pieslēgums

2. darbība: shēmas shēma

Tika uzzīmēta shēma un shēma izveidota atbilstoši norādītajam

diagrammu zemāk.

3. darbība: Arduino kods

Šeit vispirms tika izveidots vizualizatora kods. Tad divi koda piemēri

; “Neoplxel RGBW starndtest”; un “simpleWebServerWifi” tika modificēts un integrēts vizualizatora kodā. Lai gan kods dažkārt joprojām ir kļūdains (izlases gaismas diodes ik pa laikam iedegas). Nākamā koda atkārtošana (tiklīdz būs pietiekami daudz laika) tiks atjaunināta.

#iekļaut

#ifdef _AVR_

#iekļaut

#endif

const int numReadings = 5;

int rādījumi [numReadings];

int readIndex = 0;

int kopā = 0;

int vidēji = 0;

int micPin = 33;

#definējiet PIN 4

#define NUM_LEDS 120

#definējiet BRIGHTNESS 100

Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);

baits 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 };

#iekļaut

#iekļaut

char ssid = "tavs tīkls"; // jūsu tīkla SSID (nosaukums)

char pass = "secretPassword"; // jūsu tīkla parole

int keyIndex = 0; // jūsu tīkla atslēgas indeksa numurs (nepieciešams tikai WEP)

int statuss = WL_IDLE_STATUS;

WiFi servera serveris (80);

anulēts iestatījums ()

{

Sērijas sākums (9600); // inicializēt seriālo komunikāciju

pinMode (9, OUTPUT); // iestatiet LED tapas režīmu

// pārbaudiet vairoga klātbūtni:

ja (WiFi.status () == WL_NO_SHIELD) {

Serial.println ("WiFi vairogs nav pieejams");

kamēr (taisnība); // neturpini

}

String fv = WiFi.firmwareVersion ();

ja (fv! = "1.1.0") {

Serial.println ("Lūdzu, atjauniniet programmaparatūru");

}

// mēģiniet izveidot savienojumu ar Wifi tīklu:

while (statuss! = WL_CONNECTED) {

Serial.print ("Mēģinājums izveidot savienojumu ar tīklu ar nosaukumu:");

Serial.println (ssid); // izdrukāt tīkla nosaukumu (SSID);

// Savienojuma izveide ar WPA/WPA2 tīklu. Mainiet šo rindu, ja izmantojat atvērtu vai WEP tīklu:

statuss = WiFi.begin (ssid, pass);

// pagaidiet 10 sekundes, lai izveidotu savienojumu:

kavēšanās (10000);

}

server.begin (); // palaidiet tīmekļa serveri 80. portā

printWifiStatus (); // tagad esat izveidojis savienojumu, tāpēc izdrukājiet statusu

}

{

Sērijas sākums (9600);

strip.setBrightness (BRIGHTNESS);

strip.begin ();

strip.show (); // Inicializēt visus pikseļus, lai tie būtu izslēgti

pinMode (micPin, INPUT);

for (int thisReading = 0; thisReading <numReadings; thisReading ++) {

rādījumi [thisReading] = 0;

}

}

tukša varavīksne (pagaidiet) {{

uint16_t i, j;

par (j = 0; j <256; j ++) {

par (i = 0; i

strip.setPixelColor (i, ritenis ((i+j) & 255));

}

strip.show ();

aizkavēties (gaidīt);

}

}

void visualizer () {

kopā = kopā - rādījumi [readIndex];

rādījumi [readIndex] = analogRead (micPin);

kopā = kopā + rādījumi [readIndex];

readIndex = readIndex + 1;

if (readIndex> = numReadings) {

readIndex = 0;

}

vidējais = kopā / numReadings;

kavēšanās (1);

int micpixel = (vidēji-100)/5;

Serial.println (mikropikseļi);

ja (mikropikseļi> 0) {

{

par (int j = 0; j <= mikropikseļi; j ++)

strip.setPixelColor (j, (mikseļu pikseļi*2), 0, (90 mikseļi), 0);

par (int j = mikropikseļi; j <= NUM_LEDS; j ++)

strip.setPixelColor (j, 0, 0, 0, 0);

strip.show ();

}

}

ja (mikropikseļi <0) {

par (int j = 0; j <= 20; j ++)

strip.setPixelColor (j, 0, 0, 50, 0);

strip.show ();

}

}

void loop () {

{

WiFiClient klients = server.available (); // klausīties ienākošos klientus

ja (klients) {// ja iegūstat klientu, Serial.println ("jauns klients"); // izdrukājiet ziņojumu no seriālā porta

String currentLine = ""; // izveidojiet virkni, lai turētu ienākošos datus no klienta

while (client.connected ()) {// cilpa, kamēr klients ir savienots

if (client.available ()) {// ja no klienta ir nolasāmi baiti, char c = klients.lasīt (); // tad izlasiet baitu

Serial.write (c); // izdrukājiet to sērijas monitorā

ja (c == '\ n') {// ja baits ir jaunas rindas rakstzīme

// ja pašreizējā rinda ir tukša, jums ir divas jaunas rindas rakstzīmes pēc kārtas.

// tas ir klienta HTTP pieprasījuma beigas, tāpēc nosūtiet atbildi:

ja (currentLine.length () == 0) {

// HTTP galvenes vienmēr sākas ar atbildes kodu (piemēram, HTTP/1.1 200 OK)

// un satura veids, lai klients zinātu, kas nāk, tad tukša rinda:

client.println ("HTTP/1.1 200 OK");

client.println ("Satura tips: teksts/html");

klients.println ();

// HTTP atbildes saturs seko galvenei:

client.print ("Noklikšķiniet šeit Ieslēgt varavīksnes efektu");

client.print ("Noklikšķiniet šeit Ieslēgt vizualizētāju");

// HTTP atbilde beidzas ar citu tukšu rindu:

klients.println ();

// izlauzties no cikla cikla:

pārtraukums;

} cits {// ja esat ieguvis jaunu rindiņu, notīriet currentLine:

currentLine = "";

}

} cits if (c! = '\ r') {// ja jums ir kaut kas cits, izņemot karietes atgriešanas rakstzīmi, strāvaLīnija += c; // pievienojiet to pašreizējās rindas beigām

}

// Pārbaudiet, vai klienta pieprasījums bija "GET /H" vai "GET /L":

if (currentLine.endsWith ("GET /R")) {

Varavīksne (10); // Varavīksnes efekts ieslēgts

}

if (currentLine.endsWith ("GET /V")) {

Vizualizators (); // Vizualizators ir ieslēgts

}

}

}

// slēgt savienojumu:

client.stop ();

Serial.println ("klients atvienots");

}

}

void printWifiStatus () {

// izdrukājiet tā tīkla SSID, kuram esat pievienojies:

Serial.print ("SSID:");

Serial.println (WiFi. SSID ());

// izdrukājiet sava WiFi vairoga IP adresi:

IPAddress ip = WiFi.localIP ();

Serial.print ("IP adrese:");

Sērijas.println (ip);

// izdrukājiet saņemtā signāla stiprumu:

garš rssi = WiFi. RSSI ();

Serial.print ("signāla stiprums (RSSI):");

Sērijas nospiedums (rssi);

Serial.println ("dBm");

// drukājiet, kur doties pārlūkprogrammā:

Serial.print ( Lai redzētu šo lapu darbībā, atveriet pārlūkprogrammu uz

Sērijas.println (ip);

}

}

uint32_t ritenis (baits WheelPos) {

WheelPos = 255 - WheelPos;

ja (WheelPos <85) {

atgriešanas sloksne. Krāsa (255 - WheelPos * 3, 0, WheelPos * 3, 0);

}

ja (WheelPos <170) {

WheelPos -= 85;

atgriešanas sloksne. Krāsa (0, WheelPos * 3, 255 - WheelPos * 3, 0);

}

WheelPos -= 170;

atgriešanas sloksne. Krāsa (WheelPos * 3, 255 - WheelPos * 3, 0, 0);

}

uint8_t sarkans (uint32_t c) {

atgriešanās (c >> 16);

}

uint8_t zaļš (uint32_t c) {

atgriešanās (c >> 8);

}

uint8_t zils (uint32_t c) {

atgriešanās (c);

}

}

// Sērijas.println (mikropikseļi);

}

4. solis: lampas pamatnes drukāšana 3d

3d Lampas pamatnes drukāšana
3d Lampas pamatnes drukāšana

Tika izmērīts, izstrādāts un izdrukāts lampas pamatnes 3D modelis, kura izmēri ir pietiekami lieli, lai ietilptu visas elektriskās sastāvdaļas pamatnes nodalījumā.

5. solis: LED piestiprināšana

Led pielikums
Led pielikums

Ledus tinēja kartona ruļļos un piestiprināja, izmantojot divpusēju lenti, apakšējā daļā tika urbts caurums, lai vadu izlaistu cauri

6. solis: lampas korpuss

Lampas korpuss
Lampas korpuss

Korpuss tika izgatavots, atrodot caurspīdīgu pudeli, kuras platums ir līdzīgs luktura pamatnei un augstums kā LED stiprinājumam. Pēc tam tas tika pārklāts ar biezu papīru, lai labāk izkliedētu gaismu. Alternatīvi kā luktura korpusu var izmantot matētu stiklu vai caurspīdīgas plastmasas caurules.

7. darbība: iestatīšana

Uzstādīt
Uzstādīt

Viss tika salīmēts kopā un salikts. Un lampa bija gatava kādai pārbaudei !.

Ieteicams: