Obsah:
- Krok 1: Potřebný materiál
- Krok 2: Schéma zapojení
- Krok 3: Arduino kód
- Krok 4: 3D tisk patice lampy
- Krok 5: LED příloha
- Krok 6: Kryt lampy
- Krok 7: Nastavení
Video: Smart Lamp (TCfD) - Rainbow + Music Visualizer: 7 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:24
Tento projekt je zpracován pro kurz Technologie pro koncepční design na TUDelftu
Konečným produktem je základní LED kontrolka ESP-32 a je připojena k serveru. U prototypu má lampa dvě funkce; duhový efekt, který vydává uklidňující záři měnící barvu směrem ke svému okolí a za druhé zvukový vizualizér, kde pixely LED „tančí“podle úrovní zvuku. Systém je připojen k wifi a uživatel si může pomocí WIFI vybrat, jaký efekt od lampy chce.
Levný mikročip ESP-32 nám poskytuje výkonné procesory, vestavěný Hallov senzor, teplotní senzor, dotykový senzor a také možnosti wifi a bluetooth. S tímto, Zatímco pro tento projekt byly vybrány pouze dva efekty, implikace této „chytré“lampy je neomezená. Slouží k indikaci počasí uživateli nebo teploty v místnosti, samotná lampa může fungovat jako spoušť alarmu nebo může poskytnout uklidňující záři slunečního světla vedle vaší postele simulující východ slunce pro příjemný zážitek z probuzení.
Krok 1: Potřebný materiál
Arduino esp32
Zvukový senzor
Čtyřcestný obousměrný převodník logické úrovně
Neopixelová LED 2m 60 LED/m
Propojovací vodiče
Micro USB kabel s adaptérem
připojení k internetu
Krok 2: Schéma zapojení
Bylo nakresleno schéma zapojení a podle toho bylo provedeno zapojení
níže uvedený diagram.
Krok 3: Arduino kód
Zde byl nejprve vytvořen kód vizualizátoru. Potom dva ukázkové kódy
; „Hvězdný test neoplxel RGBW“; a „simpleWebServerWifi“bylo upraveno a integrováno do kódu vizualizátoru. Přestože je kód občas stále chybný (čas od času se rozsvítí náhodné LED). Další iterace kódu (jakmile získáme dostatek času) bude aktualizována.
#zahrnout
#ifdef _AVR_
#zahrnout
#endif
const int numReadings = 5;
int čtení [numReadings];
int readIndex = 0;
int celkem = 0;
int průměr = 0;
int micPin = 33;
#definovat PIN 4
#define NUM_LEDS 120
#define BRIGHTNESS 100
Proužek 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 };
#zahrnout
#zahrnout
char ssid = "vaše Síť"; // SSID vaší sítě (název)
char pass = "secretPassword"; // vaše síťové heslo
int keyIndex = 0; // váš síťový klíč Indexové číslo (potřebné pouze pro WEP)
int status = WL_IDLE_STATUS;
Server WiFiServer (80);
neplatné nastavení ()
{
Serial.begin (9600); // inicializace sériové komunikace
pinMode (9, VÝSTUP); // nastavení režimu pin LED
// zkontrolujte přítomnost štítu:
if (WiFi.status () == WL_NO_SHIELD) {
Serial.println („WiFi štít není k dispozici“);
while (true); // nepokračuj
}
Řetězec fv = WiFi.firmwareVersion ();
if (fv! = "1.1.0") {
Serial.println („Upgradujte firmware“);
}
// pokus o připojení k síti Wifi:
while (status! = WL_CONNECTED) {
Serial.print ("Pokus o připojení k síti s názvem:");
Serial.println (ssid); // vytiskněte název sítě (SSID);
// Připojení k síti WPA/WPA2. Pokud používáte otevřenou nebo WEP síť, změňte tento řádek:
status = WiFi.begin (ssid, pass);
// počkejte 10 sekund na připojení:
zpoždění (10 000);
}
server.begin (); // spusťte webový server na portu 80
printWifiStatus (); // jste připojeni, vytiskněte si stav
}
{
Serial.begin (9600);
strip.setBrightness (BRIGHTNESS);
strip.begin ();
strip.show (); // Inicializace všech pixelů na 'vypnuto'
pinMode (micPin, INPUT);
for (int thisReading = 0; thisReading <numReadings; thisReading ++) {
hodnoty [thisReading] = 0;
}
}
prázdná duha (uint8_t čekat) {
uint16_t i, j;
pro (j = 0; j <256; j ++) {
pro (i = 0; i
strip.setPixelColor (i, Wheel ((i+j) & 255));
}
strip.show ();
zpoždění (čekání);
}
}
void visualizer () {
celkem = celkem - hodnoty [readIndex];
hodnoty [readIndex] = analogRead (micPin);
celkem = celkem + čtení [readIndex];
readIndex = readIndex + 1;
if (readIndex> = numReadings) {
readIndex = 0;
}
průměr = celkem / početČtení;
zpoždění (1);
int micpixel = (průměr-100)/5;
Serial.println (micpixel);
if (micpixel> 0) {
{
pro (int j = 0; j <= micpixel; j ++)
strip.setPixelColor (j, (micpixel*2), 0, (90-micpixel), 0);
pro (int j = micpixel; j <= NUM_LEDS; j ++)
strip.setPixelColor (j, 0, 0, 0, 0);
strip.show ();
}
}
if (micpixel <0) {
pro (int j = 0; j <= 20; j ++)
strip.setPixelColor (j, 0, 0, 50, 0);
strip.show ();
}
}
prázdná smyčka () {
{
Klient WiFiClient = server.available (); // poslouchat příchozí klienty
if (client) {// if you get a client, Serial.println („nový klient“); // vytiskne zprávu ze sériového portu
Řetězec currentLine = ""; // vytvoření řetězce pro uchování příchozích dat od klienta
while (client.connected ()) {// smyčka, zatímco klient je připojen
if (client.available ()) {// pokud existují bajty ke čtení od klienta, char c = client.read (); // pak přečtěte bajt
Serial.write (c); // vytiskněte sériový monitor
if (c == '\ n') {// pokud je bajt znak nového řádku
// pokud je aktuální řádek prázdný, máte za sebou dva znaky nového řádku.
// tím klientský požadavek HTTP končí, pošlete tedy odpověď:
if (currentLine.length () == 0) {
// Záhlaví HTTP vždy začínají kódem odpovědi (např. HTTP/1.1 200 OK)
// a typ obsahu, aby klient věděl, co přijde, pak prázdný řádek:
client.println ("HTTP/1,1 200 OK");
client.println ("Typ obsahu: text/html");
client.println ();
// obsah odpovědi HTTP následuje za záhlavím:
client.print („Klikněte sem Zapnout efekt duhy“);
client.print („Klikněte sem Zapnout Visualizer“);
// Odpověď HTTP končí dalším prázdným řádkem:
client.println ();
// vylomení smyčky while:
přestávka;
} else {// pokud máte nový řádek, vymažte currentLine:
currentLine = "";
}
} else if (c! = '\ r') {// pokud máte něco jiného než znak návratu na vozík, currentLine += c; // přidejte jej na konec currentLine
}
// Zkontrolujte, zda byl požadavek klienta „GET /H“nebo „GET /L“:
if (currentLine.endsWith ("GET /R")) {
Duha (10); // Duhový efekt zapnutý
}
if (currentLine.endsWith ("GET /V")) {
Visualizer (); // Visualizer je zapnutý
}
}
}
// ukončení spojení:
client.stop ();
Serial.println („klient odpojen“);
}
}
zrušit printWifiStatus () {
// vytiskněte SSID sítě, ke které jste připojeni:
Serial.print ("SSID:");
Serial.println (WiFi. SSID ());
// vytiskněte IP adresu WiFi štítu:
IPAddress ip = WiFi.localIP ();
Serial.print ("IP adresa:");
Serial.println (ip);
// vytiskněte sílu přijímaného signálu:
dlouhý rssi = WiFi. RSSI ();
Serial.print ("síla signálu (RSSI):");
Serial.print (rssi);
Serial.println ("dBm");
// vytiskněte, kam v prohlížeči jít:
Serial.print ( Chcete -li tuto stránku zobrazit v akci, otevřete prohlížeč na adrese
Serial.println (ip);
}
}
uint32_t Wheel (byte WheelPos) {
WheelPos = 255 - WheelPos;
if (WheelPos <85) {
zpětný proužek. barva (255 - WheelPos * 3, 0, WheelPos * 3, 0);
}
if (WheelPos <170) {
WheelPos -= 85;
zpětný proužek. Barva (0, WheelPos * 3, 255 - WheelPos * 3, 0);
}
WheelPos -= 170;
zpětný proužek. Barva (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 tisk patice lampy
Byl změřen 3D model základny lampy, navržen a vytištěn s rozměry dostatečně velkými, aby se do něj vešly všechny elektrické komponenty uvnitř prostoru pro základnu.
Krok 5: LED příloha
LED diody byly navinuty v lepenkové roli a připevněny pomocí oboustranné pásky, ve spodní části byl vyvrtán otvor, kterým prošel drát
Krok 6: Kryt lampy
Ohrada byla vyrobena nalezením průhledné láhve s podobnou šířkou jako základna lampy a výškou jako nástavec LED. To bylo poté pokryto silným papírem pro lepší difuzi světla. Alternativně je možné jako pouzdro lampy použít matné sklo nebo průsvitné plastové trubice.
Krok 7: Nastavení
Vše bylo slepeno a smontováno. A lampa byla připravena na nějaké testování!
Doporučuje:
Laser Music Visualizer: 5 kroků
Laser Music Visualizer: Víte, jak zní vaše oblíbené písně. Nyní si můžete vytvořit vizualizér a zjistit, jak vypadají. Funguje to takto: Když přehráváte zvuk z reproduktoru, membrána reproduktoru vibruje. Tyto vibrace pohybují zrcátkem připevněným k
Translightion Board (Controllable Music Visualizer): 5 kroků
Translightion Board (Controllable Music Visualizer): Přeložte hudbu do oslnivé světelné show s tímto přizpůsobitelným projektem ovladače světla. Skvělé pro DJs, večírky a show 1: 1! Aktualizované demo níže
LightBox Music Visualizer: 5 kroků (s obrázky)
LightBox Music Visualizer: LightBox používá vestavěný mikrofon vašeho telefonu nebo tabletu k analýze hudby a generování krásných světelných vzorů, které odpovídají hudbě. Stačí spustit aplikaci, umístit telefon nebo tablet poblíž zdroje zvuku a váš box zobrazí
Music Visualizer (osciloskop): 4 kroky (s obrázky)
Music Visualizer (osciloskop): Tento hudební vizualizér poskytuje vynikající způsob, jak přidat větší hloubku zážitku z vaší hudby, a je docela snadné jej sestavit. Může být také užitečný jako skutečný osciloskop pro některé aplikace, které vyžadují: -starý crt (téměř všechny b & am
Nixie Tube Music Visualizer: 10 kroků (s obrázky)
Nixie Tube Music Visualizer: Hypnotizující hudební vizualizér inspirovaný těmi malými pruhy v horní části iTunes. Jako displej je použito čtrnáct ruských bargrafových trubic IN-13 Nixie. Délka, kterou se každá nixie trubice rozsvítí, představuje objem určité frekvence v mu