Sisukord:

Nutikas lamp (TCfD) - vikerkaar + muusika visualiseerija: 7 sammu (piltidega)
Nutikas lamp (TCfD) - vikerkaar + muusika visualiseerija: 7 sammu (piltidega)

Video: Nutikas lamp (TCfD) - vikerkaar + muusika visualiseerija: 7 sammu (piltidega)

Video: Nutikas lamp (TCfD) - vikerkaar + muusika visualiseerija: 7 sammu (piltidega)
Video: Ну, наконец-то дождались ► 1 Прохождение Elden Ring 2024, November
Anonim
Image
Image
Lülitusskeem
Lülitusskeem

See projekt on tehtud kursusel Technology for Concept Design TUDelftis

Lõpptoode on ESP-32 LED-lamp ja see on serveriga ühendatud. Prototüübi jaoks on lambil kaks funktsiooni; vikerkaare efekt, mis kiirgab ümbritsevat ümbritsevat värvi rahustavalt ja teiseks heli visualiseerija, kus LED -pikslid “tantsivad” vastavalt helitasemele. Süsteem on ühendatud wifi -ga ja kasutaja saab WIFI kaudu lambist valida, millist efekti ta soovib.

Odav ESP-32 mikrokiip pakub meile võimsaid protsessoreid, sisseehitatud halliandurit, temperatuuriandurit, puutetundlikku sensorit ning ka wifi ja bluetooth-funktsiooni. Sellega seoses, kuigi selle projekti jaoks valiti ainult kaks efekti, on selle „nutika” lambi mõju piiritu. Seda kasutatakse kasutajale ilmastiku või toatemperatuuri näitamiseks, lamp ise võib olla alarmi käivitaja või see võib anda teie voodi kõrval päikesetõusu simuleeriva päikesekiirguse, mis annab meeldiva äratuskogemuse.

Samm: vajalik materjal

Arduino esp32

Heliandur

Neljasuunaline kahesuunaline loogika taseme muundur

Neopixel led 2m 60 led/m

Jumper juhtmed

Micro USB kaabel koos adapteriga

internetiühendus

Samm: vooluahela skeem

Joonistati skeem ja tehti vastavalt skeemile skeem

diagramm allpool.

Samm: Arduino kood

Siin tehti kõigepealt visualiseerija kood. Seejärel kaks näidiskoodi

; "Neoplxel RGBW starndtest"; ja “simpleWebServerWifi” muudeti ja integreeriti visualiseerija koodi. Kuigi kood on kohati ikka lollakas (juhuvalgusti süttib aeg -ajalt). Järgmist koodi kordamist (kui saame piisavalt aega) värskendatakse.

#kaasake

#ifdef _AVR_

#kaasake

#endif

const int numReadings = 5;

int näidud [numReadings];

int readIndex = 0;

int kokku = 0;

int keskmine = 0;

int micPin = 33;

#defineeri PIN 4

#defineeri NUM_LEDS 120

#defineerige Heledus 100

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

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

#kaasake

#kaasake

char ssid = "teie võrk"; // teie võrgu SSID (nimi)

char pass = "secretPassword"; // teie võrgu parool

int keyIndex = 0; // teie võrguvõtme registrinumber (vajalik ainult WEP -i jaoks)

int olek = WL_IDLE_STATUS;

WiFi -serveri server (80);

tühine seadistus ()

{

Seriaalne algus (9600); // jadaühenduse initsialiseerimine

pinMode (9, VÄLJUND); // määrake LED -pin -režiim

// kontrollige kilbi olemasolu:

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

Serial.println ("WiFi -kilp puudub");

samas (tõsi); // ärge jätkake

}

String fv = WiFi.firmwareVersion ();

kui (fv! = "1.1.0") {

Serial.println ("Palun uuendage püsivara");

}

// proovige WiFi -võrguga ühendust luua:

while (olek! = WL_CONNECTED) {

Serial.print ("Võrguga ühenduse loomise katse:");

Serial.println (ssid); // printige võrgu nimi (SSID);

// Ühendus WPA/WPA2 võrguga. Muutke seda rida, kui kasutate avatud või WEP -võrku.

staatus = WiFi.begin (ssid, pass);

// oodake ühenduse loomiseks 10 sekundit:

viivitus (10000);

}

server.begin (); // käivitage veebiserver pordil 80

printWifiStatus (); // olete nüüd ühendatud, nii et printige olek välja

}

{

Seriaalne algus (9600);

strip.setBrightness (BRIGHTNESS);

riba.algus ();

strip.show (); // Initsialiseeri kõik pikslid olekusse „väljas”

pinMode (micPin, INPUT);

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

näidud [thisReading] = 0;

}

}

tühi vikerkaar (uint8_t oota) {

uint16_t i, j;

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

jaoks (i = 0; i

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

}

strip.show ();

viivitus (oota);

}

}

tühine visualiseerija () {

kokku = kokku - näidud [readIndex];

näidud [readIndex] = analogRead (micPin);

kokku = kokku + näitu [readIndex];

readIndex = readIndex + 1;

if (readIndex> = numReadings) {

readIndex = 0;

}

keskmine = kokku / numReadings;

viivitus (1);

int mikropiksel = (keskmine-100)/5;

Serial.println (mikropiksel);

kui (mikropiksel> 0) {

{

jaoks (int j = 0; j <= mikropiksel; j ++)

strip.setPixelColor (j, (mikropikslit*2), 0, (90-mikropikslit), 0);

jaoks (int j = mikropiksel; j <= NUM_LEDS; j ++)

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

strip.show ();

}

}

kui (mikropiksel <0) {

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

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

strip.show ();

}

}

void loop () {

{

WiFiClient klient = server.available (); // kuulake sissetulevaid kliente

if (klient) {// kui saate kliendi, Serial.println ("uus klient"); // prindib sõnumi välja jadapordist

String currentLine = ""; // teha string kliendilt saabuvate andmete hoidmiseks

while (client.connected ()) {// silmus, kui klient on ühendatud

if (client.available ()) {// kui kliendilt on baite lugeda, char c = klient.lugemine (); // loe siis baiti

Serial.write (c); // printige see välja jadamonitor

if (c == '\ n') {// kui bait on uue rea märk

// kui praegune rida on tühi, saad kaks uut rea märki järjest.

// see on kliendi HTTP -päringu lõpp, nii et saatke vastus:

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

// HTTP päised algavad alati vastusekoodiga (nt HTTP/1.1 200 OK)

// ja sisutüüp, et klient teaks, mis tuleb, siis tühi rida:

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

client.println ("Sisu tüüp: tekst/html");

klient.println ();

// HTTP vastuse sisu järgneb päisele:

client.print ("Vajuta siia Lülita vikerkaare efekt sisse");

client.print ("Vajuta siia Lülita visualiseerija sisse");

// HTTP vastus lõpeb teise tühja reaga:

klient.println ();

// aja silmusest välja murda:

murda;

} else {// kui teil on uus rida, siis tühjendage currentLine:

currentLine = "";

}

} else if (c! = '\ r') {// kui teil on midagi muud kui vankri tagastamise märk, praegune rida += c; // lisage see praeguse rea lõppu

}

// Kontrollige, kas klienditaotlus oli "GET /H" või "GET /L":

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

Vikerkaar (10); // Vikerkaare efekt sisse lülitatud

}

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

Visualiseerija (); // Visualizer on sisse lülitatud

}

}

}

// sulgege ühendus:

klient.peatus ();

Serial.println ("klient on lahti ühendatud");

}

}

void printWifiStatus () {

// printige võrgu SSID, millega olete ühendatud:

Serial.print ("SSID:");

Serial.println (WiFi. SSID ());

// printige oma WiFi kilbi IP -aadress:

IPAdd ip = WiFi.localIP ();

Serial.print ("IP -aadress:");

Seeria.println (ip);

// printige vastuvõetud signaali tugevus:

pikk rssi = WiFi. RSSI ();

Serial.print ("signaali tugevus (RSSI):");

Serial.print (rssi);

Serial.println ("dBm");

// printige brauserisse, kuhu minna:

Serial.print ( Selle lehe toimimise nägemiseks avage brauser aadressile

Seeria.println (ip);

}

}

uint32_t ratas (bait WheelPos) {

WheelPos = 255 - WheelPos;

kui (WheelPos <85) {

tagastusriba. Värv (255 - WheelPos * 3, 0, WheelPos * 3, 0);

}

kui (WheelPos <170) {

WheelPos -= 85;

tagastusriba. Värv (0, WheelPos * 3, 255 - WheelPos * 3, 0);

}

WheelPos -= 170;

tagastusriba. Värv (WheelPos * 3, 255 - WheelPos * 3, 0, 0);

}

uint8_t punane (uint32_t c) {

tagasitulek (c >> 16);

}

uint8_t roheline (uint32_t c) {

tagasitulek (c >> 8);

}

uint8_t sinine (uint32_t c) {

tagasipöördumine (c);

}

}

//Seriaalne.println (mikropiksel);

}

Samm 4: 3d Lambi aluse printimine

3d Lambi aluse printimine
3d Lambi aluse printimine

Mõõdeti, kujundati ja trükiti lambialuse 3D -mudel, mille mõõtmed olid piisavalt suured, et mahutada kõik aluskambri sees olevad elektrilised komponendid.

5. samm: LED -i kinnitamine

Led manus
Led manus

Led keriti papist rulli ja kinnitati kahepoolse teibiga, puuriti alumisse auku juhtme läbimiseks

6. samm: lambi korpus

Lambikarp
Lambikarp

Korpus valmistati läbipaistva pudeli leidmisega, mille laius oli lambi alusega sama ja kõrgus LED -kinnitusega. Seejärel kaeti see valguse paremaks hajutamiseks paksu paberiga. Alternatiivina on võimalik lambikorpuseks kasutada mattklaasi või poolläbipaistvaid plasttorusid.

Samm 7: seadistamine

Seadistamine
Seadistamine

Kõik liimiti kokku ja pandi kokku. Ja lamp oli mõneks testimiseks valmis !.

Soovitan: