Tartalomjegyzék:
- 1. lépés: Szükséges anyag
- 2. lépés: Áramköri diagram
- 3. lépés: Arduino kód
- 4. lépés: 3d A lámpa aljának nyomtatása
- 5. lépés: LED -es rögzítés
- 6. lépés: Lámpaház
- 7. lépés: Beállítás
Videó: Intelligens lámpa (TCfD) - Rainbow + Music Visualizer: 7 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Ez a projekt a TUDelft Technology for Concept Design tanfolyamán készült
A végtermék egy ESP-32 alap LED-es lámpa, és a szerverhez van csatlakoztatva. A prototípus esetében a lámpának két funkciója van; szivárvány effektus, amely megnyugtató színváltó fényt bocsát ki a környezete felé, másodszor pedig hangerő -megjelenítő, ahol a LED -es pixelek a hangszintnek megfelelően „táncolnak”. A rendszer csatlakozik a wifi -hez, és a felhasználó választhat, hogy milyen hatást szeretne a lámpától a WIFI -n keresztül.
Az olcsó ESP-32 mikrochip erőteljes processzorokat, beépített hall-érzékelőt, hőmérséklet-érzékelőt, érintésérzékelőt, valamint wifi és bluetooth képességet biztosít számunkra. Ezzel a projekthez csak két effektust választottak, ennek az „intelligens” lámpának a hatékonysága határtalan. Arra szolgál, hogy jelezze a felhasználónak az időjárást, vagy a szoba hőmérsékletét, maga a lámpa riasztásként működhet, vagy nyugtató napfényt adhat az ágy mellett, amely a napfelkeltét szimulálja a kellemes ébredés érdekében.
1. lépés: Szükséges anyag
Arduino esp32
Hangérzékelő
Négyirányú kétirányú logikai szintváltó
Neopixel led 2m 60 led/m
Jumper vezetékek
Micro USB kábel adapterrel
Internet kapcsolat
2. lépés: Áramköri diagram
Áramköri rajzot rajzoltak, és az áramkört ennek megfelelően készítették el, ahogyan az itt le van írva
az alábbi diagramot.
3. lépés: Arduino kód
Itt először vizualizáló kódot készítettünk. Ezután két példakód
; „Neoplxel RGBW starndtest”; és az „simpleWebServerWifi” módosult és a vizualizátor kódjába integrálódott. Bár a kód időnként még mindig hibás (a véletlenszerű ledek időnként kigyulladnak). A kód következő iterációja (ha lesz elég időnk) frissítésre kerül.
#befoglalni
#ifdef _AVR_
#befoglalni
#endif
const int numReadings = 5;
int olvasmányok [numReadings];
int readIndex = 0;
int összesen = 0;
int átlag = 0;
int micPin = 33;
#define PIN 4
#define NUM_LEDS 120
#define FÉNYESSÉG 100
Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);
bájt 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 };
#befoglalni
#befoglalni
char ssid = "az Ön hálózata"; // a hálózati SSID (név)
char pass = "secretPassword"; // a hálózati jelszó
int keyIndex = 0; // a hálózati kulcs indexszáma (csak WEP esetén szükséges)
int állapot = WL_IDLE_STATUS;
WiFiServer szerver (80);
üres beállítás ()
{
Sorozat.kezdet (9600); // inicializálja a soros kommunikációt
pinMode (9, KIMENET); // állítsa be a LED tű módját
// ellenőrizze a pajzs jelenlétét:
if (WiFi.status () == WL_NO_SHIELD) {
Serial.println ("WiFi pajzs nincs jelen");
míg (igaz); // ne folytasd
}
Karakterlánc fv = WiFi.firmwareVersion ();
ha (fv! = "1.1.0") {
Serial.println ("Kérjük, frissítse a firmware -t");
}
// megpróbál csatlakozni a Wifi hálózathoz:
while (állapot! = WL_CONNECTED) {
Serial.print ("Csatlakozás a hálózathoz:");
Soros.println (ssid); // nyomtatja ki a hálózat nevét (SSID);
// Csatlakozás WPA/WPA2 hálózathoz. Nyílt vagy WEP hálózat használata esetén módosítsa ezt a sort:
állapot = WiFi.begin (ssid, pass);
// várjon 10 másodpercet a csatlakozásra:
késleltetés (10000);
}
szerver.begin (); // indítsa el a webszervert a 80 -as porton
printWifiStatus (); // most csatlakozott, ezért nyomtassa ki az állapotot
}
{
Sorozat.kezdet (9600);
strip.setBrightness (BRIGHTNESS);
strip.begin ();
strip.show (); // Inicializálja az összes képpontot "kikapcsolt" állapotba
pinMode (micPin, INPUT);
for (int thisReading = 0; thisReading <numReadings; thisReading ++) {
leolvasások [thisReading] = 0;
}
}
void rainbow (uint8_t wait) {
uint16_t i, j;
mert (j = 0; j <256; j ++) {
mert (i = 0; i
strip.setPixelColor (i, Kerék ((i+j) & 255));
}
strip.show ();
késleltetés (várakozás);
}
}
void visualizer () {
összesen = összesen - leolvasások [readIndex];
értékek [readIndex] = analóg olvasat (micPin);
összesen = összes + leolvasás [readIndex];
readIndex = readIndex + 1;
if (readIndex> = számReadings) {
readIndex = 0;
}
átlag = összes / számReadings;
késleltetés (1);
int micpixel = (átlagos-100)/5;
Soros.println (mikpixel);
if (mikpixel> 0) {
{
esetén (int j = 0; j <= mikpixel; j ++)
strip.setPixelColor (j, (micpixel*2), 0, (90-micpixel), 0);
(int j = mikpixel; j <= NUM_LEDS; j ++)
strip.setPixelColor (j, 0, 0, 0, 0);
strip.show ();
}
}
if (mikpixel <0) {
for (int j = 0; j <= 20; j ++)
strip.setPixelColor (j, 0, 0, 50, 0);
strip.show ();
}
}
void loop () {
{
WiFiClient kliens = szerver.available (); // figyelje a bejövő ügyfeleket
if (kliens) {// ha ügyfelet kap, Serial.println ("új kliens"); // üzenet nyomtatása a soros portról
String currentLine = ""; // karakterlánc készítése a kliensről érkező adatok tárolására
while (client.connected ()) {// ciklus, amíg az ügyfél csatlakozik
if (client.available ()) {// ha bájtokat kell olvasni az ügyféltől, char c = kliens.olvasás (); // akkor olvass egy bájtot
Soros.írás (c); // nyomtassa ki a soros monitort
if (c == '\ n') {// ha a bájt újsoros karakter
// ha az aktuális sor üres, akkor két újsoros karakter van egymás után.
// ez a vége az ügyfél HTTP -kérésének, ezért küldjön választ:
if (currentLine.length () == 0) {
// A HTTP fejlécek mindig válaszkóddal kezdődnek (pl. HTTP/1.1 200 OK)
// és egy tartalomtípust, hogy az ügyfél tudja, mi jön, majd egy üres sort:
client.println ("HTTP/1.1 200 OK");
client.println ("Tartalom-típus: szöveg/html");
client.println ();
// a HTTP válasz tartalma a fejlécet követi:
client.print ("Kattintson ide A szivárványhatás bekapcsolása");
client.print ("Kattintson ide a Visualizer bekapcsolása");
// A HTTP válasz egy másik üres sorral végződik:
client.println ();
// kitörni a while ciklusból:
szünet;
} else {// ha új sort kapott, akkor törölje a currentLine -t:
currentLine = "";
}
} else if (c! = '\ r') {// ha mást is kapsz, mint egy kocsi visszatérési karaktert, currentLine += c; // hozzáadjuk a currentLine végéhez
}
// Ellenőrizze, hogy az ügyfél kérése "GET /H" vagy "GET /L" volt:
if (currentLine.endsWith ("GET /R")) {
Szivárvány (10); // A szivárvány hatás be van kapcsolva
}
if (currentLine.endsWith ("GET /V")) {
Vizualizátor (); // A vizualizátor be van kapcsolva
}
}
}
// zárja be a kapcsolatot:
client.stop ();
Serial.println ("kliens leválasztva");
}
}
void printWifiStatus () {
// annak a hálózatnak az SSID -jének nyomtatása, amelyhez csatlakozik:
Serial.print ("SSID:");
Serial.println (WiFi. SSID ());
// a WiFi pajzs IP -címének kinyomtatása:
IPAddress ip = WiFi.localIP ();
Serial.print ("IP -cím:");
Soros.println (ip);
// a vett jelerősség kinyomtatása:
hosszú rssi = WiFi. RSSI ();
Serial.print ("jelerősség (RSSI):");
Soros.nyomtatás (rssi);
Soros.println ("dBm");
// nyomtatás, hová kell menni a böngészőben:
Serial.print ("Az oldal működésének megtekintéséhez nyisson meg egy böngészőt a https://" címre);
Soros.println (ip);
}
}
uint32_t Kerék (byte WheelPos) {
WheelPos = 255 - WheelPos;
ha (WheelPos <85) {
visszatérő csík. Szín (255 - WheelPos * 3, 0, WheelPos * 3, 0);
}
ha (WheelPos <170) {
WheelPos -= 85;
visszatérő csík. Szín (0, WheelPos * 3, 255 - WheelPos * 3, 0);
}
WheelPos -= 170;
visszatérő csík. Szín (WheelPos * 3, 255 - WheelPos * 3, 0, 0);
}
uint8_t piros (uint32_t c) {
visszatérés (c >> 16);
}
uint8_t zöld (uint32_t c) {
visszatérés (c >> 8);
}
uint8_t blue (uint32_t c) {
visszatérés (c);
}
}
//Serial.println(micpixel);
}
4. lépés: 3d A lámpa aljának nyomtatása
A lámpatartó 3D -s modelljét megmérték, megtervezték és kinyomtatták, és mérete elég nagy ahhoz, hogy elférjen az alaptérben található összes elektromos alkatrész.
5. lépés: LED -es rögzítés
A LED -eket karton tekercsbe tekercselték, és kétoldalas szalaggal rögzítették, az alsó részen lyukat fúrtak a vezeték átvezetéséhez
6. lépés: Lámpaház
A burkolatot úgy készítették el, hogy egy átlátszó palackot találtak, amelynek szélessége megegyezik a lámpatartó magasságával, és magassága, mint a LED tartozék. Ezt követően vastag papírral borították be a fény jobb eloszlása érdekében. Alternatív megoldásként matt üveg vagy áttetsző műanyag csövek is használhatók lámpaházként.
7. lépés: Beállítás
Mindent összeragasztottak és összeszereltek. És a lámpa készen állt néhány tesztelésre !.
Ajánlott:
RGB Led Strip Bluetooth vezérlő V3 + Music Sync + Környezeti fényvezérlés: 6 lépés (képekkel)
RGB Led Strip Bluetooth Controller V3 + Music Sync + Ambient Light Control: Ez a projekt az arduino segítségével vezérli az RGB led szalagot a telefonnal Bluetooth -on keresztül. Megváltoztathatja a színét, szinkronizálhatja a fényeket a zenével, vagy automatikusan beállíthatja őket a környezeti megvilágításhoz
Arduino Music asztali lámpa Bluetooth -szal!: 9 lépés
Arduino Music asztali lámpa Bluetooth -szal!: Üdv! Ebben az utasításban valami fényeset fogok építeni! Hadd mutassam be az új, klassz asztali lámpámat! Olcsó barkácsmegoldás, amellyel unalmas íróasztalát DJ éjszakai attrakcióvá varázsolja! Vagy talán nem. De biztosíthatlak, hogy a végső produkció
LightBox Music Visualizer: 5 lépés (képekkel)
LightBox Music Visualizer: A LightBox a telefon vagy táblagép beépített mikrofonját használja a zene elemzéséhez, hogy a zenéhez illő gyönyörű fénymintákat hozzon létre. Csak indítsa el az alkalmazást, helyezze telefonját vagy táblagépét valahol egy hangforrás közelébe, és a doboz megjeleníti a
Arduino Music reaktív asztali lámpa: 8 lépés (képekkel)
Arduino Music reaktív asztali lámpa: Üdv mindenkinek! Ebben a konstrukcióban reaktív LED asztali lámpát készítünk egyszerű alkatrészek és néhány alapvető Arduino programozás segítségével. Lenyűgöző hatást kelt, ahol a fény minden hangra és zenére táncol. Ezt a projektet egy csapattársammal fejeztem be
Nixie Tube Music Visualizer: 10 lépés (képekkel)
Nixie Tube Music Visualizer: hipnotizáló zenei vizualizátor, amelyet az iTunes tetején található kis sávok inspiráltak. Tizennégy orosz IN-13 Nixie bargraph csövet használunk kijelzőként. Az a hossza, amellyel az egyes nixie csövek világítanak, egy bizonyos frekvencia hangerejét jelzi