Sisukord:
- Samm: vajalik materjal
- Samm: vooluahela skeem
- Samm: Arduino kood
- Samm 4: 3d Lambi aluse printimine
- 5. samm: LED -i kinnitamine
- 6. samm: lambi korpus
- Samm 7: seadistamine
Video: Nutikas lamp (TCfD) - vikerkaar + muusika visualiseerija: 7 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
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
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 keriti papist rulli ja kinnitati kahepoolse teibiga, puuriti alumisse auku juhtme läbimiseks
6. samm: lambi korpus
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
Kõik liimiti kokku ja pandi kokku. Ja lamp oli mõneks testimiseks valmis !.
Soovitan:
Translightion Board (juhitav muusika visualiseerija): 5 sammu
Translightion Board (juhitav muusikavisualiseerija): tõlkige muusika selle kohandatava valguskontrolleri projekti abil pimestavaks valgusetenduseks. Suurepärane DJ -dele, pidudele ja 1: 1 showdele! Värskendatud demo allpool
LightBoxi muusika visualiseerija: 5 sammu (piltidega)
LightBoxi muusika visualiseerija: LightBox kasutab muusika analüüsimiseks teie telefoni või tahvelarvuti sisseehitatud mikrofoni, et luua muusikale sobivaid ilusaid valgusmustreid. Lihtsalt käivitage rakendus, asetage telefon või tahvelarvuti kuhugi heliallika lähedale ja kast kuvab
Muusika visualiseerija Arduinoga: 5 sammu
Muusika visualiseerija Arduinoga: interaktiivne muusika visualiseerija Komponendid LM338T x5 Potentsiomeeter x2 (1k ja 10k) 1N4006 diood x5Kondensaator x2 (1uF ja 10uF) takistid x3 (416, 10k ja 1k) Aux splitter
Muusika reaktiivne valgus -- Kuidas teha ülilihtne muusika reaktiivvalgus, et muuta lauaarvuti ahvatlevaks: 5 sammu (piltidega)
Muusika reaktiivne valgus || Kuidas teha ülilihtne muusika reaktiivvalgus, et muuta töölaud lauaarvutiks: Hei, mis on poisid, täna ehitame väga huvitava projekti. Täna ehitame muusikale reageeriva valguse. LED muudab heledust vastavalt bass, mis on tegelikult madala sagedusega helisignaal. See on väga lihtne ehitada. Me
Muusika visualiseerija (ostsilloskoop): 4 sammu (piltidega)
Muusika visualiseerija (ostsilloskoop): see muusikaline visualiseerija pakub suurepärast viisi muusikaelamuse sügavamaks muutmiseks ja seda on üsna lihtne üles ehitada. See võib olla kasulik ka mõnede rakenduste tegeliku ostsilloskoobina, mis kõik on nõutav: -vana crt (peaaegu kõik b & am