Obsah:
- Krok 1: Potrebný materiál
- Krok 2: Schéma zapojenia
- Krok 3: Arduino kód
- Krok 4: 3D tlač základne žiarovky
- Krok 5: LED príloha
- Krok 6: Kryt žiarovky
- Krok 7: Nastavenie
Video: Inteligentná lampa (TCfD) - Rainbow + Music Visualizer: 7 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:00
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
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 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
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
Všetko bolo zlepené a zmontované. A lampa bola pripravená na nejaké testovanie !.
Odporúča:
Music Box so svetelnou show: 9 krokov (s obrázkami)
Music Box so svetelnou šou: Dobrý deň, vitajte, v tomto návode vám ukážeme, ako si môžete vytvoriť vlastnú hudobnú skrinku pomocou priloženej svetelnej šou. Všetko, čo potrebujete, je prázdny kufrík. Vzali sme prípad, ktorý sa bežne používa na náradie. V tomto projekte môžete byť veľmi kreatívni, takže nemusíte
Tobias - Arduino Music Box s TVout: 5 krokov (s obrázkami)
Tobias - Arduino Music Box s TVout: V prvom rade mi dovoľte predstaviť Tobiasa, obrovského plyšového medvedíka mojej priateľky, ktorý je inšpiráciou pre tento projekt. Tobias má osobnosť, ktorá sa postupom času buduje, pričom v duchu žartom premýšľame, čo robí. zatiaľ čo ona je preč v práci. Projekt wa
LightBox Music Visualizer: 5 krokov (s obrázkami)
LightBox Music Visualizer: LightBox používa vstavaný mikrofón vášho telefónu alebo tabletu na analýzu hudby a vytvára krásne svetelné vzory, ktoré sa zhodujú s hudbou. Stačí spustiť aplikáciu, umiestniť telefón alebo tablet blízko zdroja zvuku a váš box bude zobrazovať
Reaktívna stolná lampa Arduino Music: 8 krokov (s obrázkami)
Reaktívna stolná lampa Arduino Music: Dobrý deň všetkým! V tejto zostave vyrobíme reaktívnu stolnú lampu LED pomocou jednoduchých komponentov a základného programovania Arduino. Má pôsobivý efekt, pri ktorom svetlo tancuje na všetky zvuky a hudbu. Dokončil som tento projekt so spoluhráčom
Nixie Tube Music Visualizer: 10 krokov (s obrázkami)
Nixie Tube Music Visualizer: Hypnotizujúci hudobný vizualizátor inšpirovaný týmito malými pruhmi v hornej časti iTunes. Ako displej sa používa štrnásť ruských bargrafových trubíc IN-13 Nixie. Dĺžka, ktorú sa každá nixie trubica rozsvieti, predstavuje objem určitej frekvencie v mu