Obsah:

Inteligentná lampa (TCfD) - Rainbow + Music Visualizer: 7 krokov (s obrázkami)
Inteligentná lampa (TCfD) - Rainbow + Music Visualizer: 7 krokov (s obrázkami)

Video: Inteligentná lampa (TCfD) - Rainbow + Music Visualizer: 7 krokov (s obrázkami)

Video: Inteligentná lampa (TCfD) - Rainbow + Music Visualizer: 7 krokov (s obrázkami)
Video: Светильник колонка c беспроводной зарядкой 2024, November
Anonim
Image
Image
Schéma zapojenia
Schéma zapojenia

Tento projekt je vypracovaný pre kurz Technológia pre koncepčný dizajn na TUDelft

Konečným výrobkom je základná LED žiarovka ESP-32 a je pripojená k serveru. Pre prototyp má lampa dve funkcie; dúhový efekt, ktorý vyžaruje upokojujúcu žiaru s meniacimi sa farbami do svojho okolia, a za druhé zvukový vizualizér, kde pixely LED „tancujú“podľa úrovní zvuku. Systém je pripojený k wifi a užívateľ si môže cez WIFI vybrať, aký efekt od žiarovky chce.

Lacný mikročip ESP-32 nám poskytuje výkonné procesory, vstavaný Hallov senzor, teplotný senzor, dotykový senzor a tiež možnosti wifi a bluetooth. Aj keď boli pre tento projekt zvolené iba dva efekty, implikácia tejto „inteligentnej“žiarovky je neobmedzená. Použije sa na označenie počasia používateľovi alebo teploty v miestnosti. Samotná lampa môže pôsobiť ako spúšť alarmu alebo môže dať upokojujúce slnečné svetlo vedľa vašej postele a simulovať východ slnka pre príjemný zážitok z prebúdzania.

Krok 1: Potrebný materiál

Arduino esp32

Zvukový senzor

Štvorsmerový obojsmerný prevodník logickej úrovne

Neopixelová LED 2m 60 LED/m

Prepojovacie vodiče

Micro USB kábel s adaptérom

pripojenie k internetu

Krok 2: Schéma zapojenia

Bola nakreslená schéma zapojenia a podľa toho bol vytvorený obvod

diagram nižšie.

Krok 3: Arduino kód

Tu bol najskôr vytvorený kód vizualizéra. Potom dva príklady kódu

; „Hviezdicový test neoplxel RGBW“; a „simpleWebServerWifi“boli upravené a integrované do kódu vizualizéra. Aj keď je kód občas chybný (čas od času sa rozsvieti náhodné LED). Ďalšia iterácia kódu (akonáhle budeme mať dostatok času) bude aktualizovaná.

#zahrnúť

#ifdef _AVR_

#zahrnúť

#koniec Ak

const int numReadings = 5;

int čítania [numReadings];

int readIndex = 0;

int celkom = 0;

int priemer = 0;

int micPin = 33;

#definovať PIN 4

#define NUM_LEDS 120

#define BRIGHTNESS 100

Pásik Adafruit_NeoPixel = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);

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

#zahrnúť

#zahrnúť

char ssid = "vaša Sieť"; // SSID vašej siete (názov)

char pass = "secretPassword"; // heslo do siete

int keyIndex = 0; // váš sieťový kľúč Indexové číslo (potrebné iba pre WEP)

int status = WL_IDLE_STATUS;

Server WiFiServer (80);

neplatné nastavenie ()

{

Serial.begin (9600); // inicializácia sériovej komunikácie

pinMode (9, VÝSTUP); // nastavenie režimu pin LED

// skontrolujte prítomnosť štítu:

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

Serial.println („WiFi štít nie je k dispozícii“);

while (pravda); // nepokračuj

}

Reťazec fv = WiFi.firmwareVersion ();

if (fv! = "1.1.0") {

Serial.println („Aktualizujte firmvér“);

}

// pokus o pripojenie k sieti Wifi:

while (status! = WL_CONNECTED) {

Serial.print ("Pokus o pripojenie k sieti s názvom:");

Serial.println (ssid); // vytlač názov siete (SSID);

// Pripojenie k sieti WPA/WPA2. Ak používate otvorenú alebo WEP sieť, zmeňte tento riadok:

status = WiFi.begin (ssid, pass);

// počkajte 10 sekúnd na pripojenie:

oneskorenie (10 000);

}

server.begin (); // spustenie webového servera na porte 80

printWifiStatus (); // ste pripojení, vytlačte si stav

}

{

Serial.begin (9600);

strip.setBrightness (BRIGHTNESS);

strip.begin ();

strip.show (); // Inicializácia všetkých pixelov na „vypnuté“

pinMode (micPin, INPUT);

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

hodnoty [thisReading] = 0;

}

}

prázdna dúha (uint8_t čakať) {

uint16_t i, j;

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

pre (i = 0; i

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

}

strip.show ();

oneskorenie (čakanie);

}

}

void visualizer () {

celkom = celkom - hodnoty [readIndex];

hodnoty [readIndex] = analogRead (micPin);

celkom = celkom + namerané hodnoty [readIndex];

readIndex = readIndex + 1;

if (readIndex> = numReadings) {

readIndex = 0;

}

priemer = celkom / početČítaní;

oneskorenie (1);

int micpixel = (priemer-100)/5;

Serial.println (micpixel);

if (micpixel> 0) {

{

pre (int j = 0; j <= micpixel; j ++)

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

pre (int j = micpixel; j <= NUM_LEDS; j ++)

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

strip.show ();

}

}

if (micpixel <0) {

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

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

strip.show ();

}

}

prázdna slučka () {

{

Klient WiFiClient = server.available (); // počúvajte prichádzajúcich klientov

if (client) {// if you get a client, Serial.println („nový klient“); // vytlačte správu zo sériového portu

Reťazec currentLine = ""; // vytvorte reťazec na uchovávanie prichádzajúcich údajov od klienta

while (client.connected ()) {// slučka, kým je klient pripojený

if (client.available ()) {// ak existujú bajty na čítanie od klienta, char c = client.read (); // tak prečítaj bajt

Serial.write (c); // vytlačte si sériový monitor

if (c == '\ n') {// ak je bajt znakom nového riadka

// ak je aktuálny riadok prázdny, máte za sebou dva znaky nového riadku.

// tým sa požiadavka HTTP klienta končí, preto pošlite odpoveď:

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

// Hlavičky HTTP vždy začínajú kódom odpovede (napr. HTTP/1.1 200 OK)

// a typ obsahu, aby klient vedel, čo príde, potom prázdny riadok:

client.println ("HTTP/1,1 200 OK");

client.println ("Typ obsahu: text/html");

client.println ();

// obsah odpovede HTTP nasleduje za hlavičkou:

client.print („Kliknite sem Zapnúť efekt Rainbow“);

client.print („Kliknite sem Zapnúť vizualizér“);

// Odpoveď HTTP sa končí ďalším prázdnym riadkom:

client.println ();

// vymanenie sa zo slučky while:

prestávka;

} else {// ak dostanete nový riadok, vymažte currentLine:

currentLine = "";

}

} else if (c! = '\ r') {// ak máte niečo iné ako znak návratu na vozík, currentLine += c; // pridajte ho na koniec currentLine

}

// Skontrolujte, či bola požiadavka klienta „GET /H“alebo „GET /L“:

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

Dúha (10); // Dúhový efekt je zapnutý

}

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

Vizualizér (); // Vizualizér je zapnutý

}

}

}

// zatvorenie spojenia:

client.stop ();

Serial.println („klient odpojený“);

}

}

zrušiť printWifiStatus () {

// vytlačte SSID siete, ku ktorej ste pripojení:

Serial.print ("SSID:");

Serial.println (WiFi. SSID ());

// vytlačte IP adresu vášho WiFi štítu:

IPAddress ip = WiFi.localIP ();

Serial.print ("IP adresa:");

Serial.println (ip);

// vytlačte silu prijatého signálu:

dlhé rssi = WiFi. RSSI ();

Serial.print ("sila signálu (RSSI):");

Serial.print (rssi);

Serial.println ("dBm");

// vytlačte, kam v prehliadači ísť:

Serial.print ( Ak chcete túto stránku vidieť v prevádzke, otvorte prehliadač na adrese

Serial.println (ip);

}

}

uint32_t Wheel (byte WheelPos) {

WheelPos = 255 - WheelPos;

if (WheelPos <85) {

spätný pás. Farba (255 - WheelPos * 3, 0, WheelPos * 3, 0);

}

if (WheelPos <170) {

WheelPos -= 85;

spätný pás. Farba (0, WheelPos * 3, 255 - WheelPos * 3, 0);

}

WheelPos -= 170;

spätný pás. Farba (WheelPos * 3, 255 - WheelPos * 3, 0, 0);

}

uint8_t červená (uint32_t c) {

návrat (c >> 16);

}

uint8_t zelená (uint32_t c) {

návrat (c >> 8);

}

uint8_t modrá (uint32_t c) {

návrat (c);

}

}

//Serial.println(micpixel);

}

Krok 4: 3D tlač základne žiarovky

3D tlač základne žiarovky
3D tlač základne žiarovky

Bol nameraný 3D model žiarovkovej základne, navrhnutý a vytlačený s dostatočne veľkými rozmermi, aby sa zmestili všetky elektrické súčiastky do základného priestoru.

Krok 5: LED príloha

LED príloha
LED príloha

LED diódy boli navinuté v kartónovom kotúči a pripevnené pomocou obojstrannej pásky, v spodnej časti bol vyvŕtaný otvor, cez ktorý prešiel drôt

Krok 6: Kryt žiarovky

Kryt žiarovky
Kryt žiarovky

Ohrada bola vytvorená nájdením priehľadnej fľaše s podobnou šírkou ako základňa žiarovky a výškou ako nástavec LED. Ten bol potom pokrytý hrubým papierom pre lepšiu difúziu svetla. Alternatívne je možné ako kryt žiarovky použiť matné sklo alebo priesvitné plastové trubice.

Krok 7: Nastavenie

Nastaviť
Nastaviť

Všetko bolo zlepené a zmontované. A lampa bola pripravená na nejaké testovanie !.

Odporúča: