Satura rādītājs:
- 1. darbība. Nepieciešamais materiāls
- 2. darbība: shēmas shēma
- 3. darbība: Arduino kods
- 4. solis: lampas pamatnes drukāšana 3d
- 5. solis: LED piestiprināšana
- 6. solis: lampas korpuss
- 7. darbība: iestatīšana
Video: Viedā lampa (TCfD) - varavīksne + mūzikas vizualizators: 7 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Šis projekts tiek veikts kursam Tehnoloģija koncepcijas projektēšanai TUDelft
Galaprodukts ir ESP-32 bāzes LED lampa un ir savienots ar serveri. Prototipam lampai ir divas funkcijas; varavīksnes efekts, kas izstaro nomierinošu krāsu maiņu pret apkārtni, un, otrkārt, skaņas vizualizators, kurā LED pikseļi “dejo” atbilstoši skaņas līmenim. Sistēma ir savienota ar wifi, un lietotājs, izmantojot WIFI, var izvēlēties, kādu efektu no lampas vēlas.
Lētā ESP-32 mikroshēma nodrošina mūs ar jaudīgiem procesoriem, iebūvētu zāles sensoru, temperatūras sensoru, pieskāriena sensoru, kā arī wifi un Bluetooth iespējas. Tādējādi šim projektam tika izvēlēti tikai divi efekti, taču šīs “viedās” lampas ietekme ir neierobežota. To izmantotu, lai norādītu lietotājam laika apstākļus vai telpas temperatūru, pati lampa var darboties kā trauksmes signāls, vai arī tā var dot nomierinošu saules gaismas spīdumu blakus jūsu gultai, simulējot saullēktu, lai iegūtu patīkamu pamodināšanas pieredzi.
1. darbība. Nepieciešamais materiāls
Arduino esp32
Skaņas sensors
Četru virzienu divvirzienu loģikas līmeņa pārveidotājs
Neopixel led 2m 60 led/m
Jumper vadi
Mikro USB kabelis ar adapteri
interneta pieslēgums
2. darbība: shēmas shēma
Tika uzzīmēta shēma un shēma izveidota atbilstoši norādītajam
diagrammu zemāk.
3. darbība: Arduino kods
Šeit vispirms tika izveidots vizualizatora kods. Tad divi koda piemēri
; “Neoplxel RGBW starndtest”; un “simpleWebServerWifi” tika modificēts un integrēts vizualizatora kodā. Lai gan kods dažkārt joprojām ir kļūdains (izlases gaismas diodes ik pa laikam iedegas). Nākamā koda atkārtošana (tiklīdz būs pietiekami daudz laika) tiks atjaunināta.
#iekļaut
#ifdef _AVR_
#iekļaut
#endif
const int numReadings = 5;
int rādījumi [numReadings];
int readIndex = 0;
int kopā = 0;
int vidēji = 0;
int micPin = 33;
#definējiet PIN 4
#define NUM_LEDS 120
#definējiet BRIGHTNESS 100
Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);
baits 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 };
#iekļaut
#iekļaut
char ssid = "tavs tīkls"; // jūsu tīkla SSID (nosaukums)
char pass = "secretPassword"; // jūsu tīkla parole
int keyIndex = 0; // jūsu tīkla atslēgas indeksa numurs (nepieciešams tikai WEP)
int statuss = WL_IDLE_STATUS;
WiFi servera serveris (80);
anulēts iestatījums ()
{
Sērijas sākums (9600); // inicializēt seriālo komunikāciju
pinMode (9, OUTPUT); // iestatiet LED tapas režīmu
// pārbaudiet vairoga klātbūtni:
ja (WiFi.status () == WL_NO_SHIELD) {
Serial.println ("WiFi vairogs nav pieejams");
kamēr (taisnība); // neturpini
}
String fv = WiFi.firmwareVersion ();
ja (fv! = "1.1.0") {
Serial.println ("Lūdzu, atjauniniet programmaparatūru");
}
// mēģiniet izveidot savienojumu ar Wifi tīklu:
while (statuss! = WL_CONNECTED) {
Serial.print ("Mēģinājums izveidot savienojumu ar tīklu ar nosaukumu:");
Serial.println (ssid); // izdrukāt tīkla nosaukumu (SSID);
// Savienojuma izveide ar WPA/WPA2 tīklu. Mainiet šo rindu, ja izmantojat atvērtu vai WEP tīklu:
statuss = WiFi.begin (ssid, pass);
// pagaidiet 10 sekundes, lai izveidotu savienojumu:
kavēšanās (10000);
}
server.begin (); // palaidiet tīmekļa serveri 80. portā
printWifiStatus (); // tagad esat izveidojis savienojumu, tāpēc izdrukājiet statusu
}
{
Sērijas sākums (9600);
strip.setBrightness (BRIGHTNESS);
strip.begin ();
strip.show (); // Inicializēt visus pikseļus, lai tie būtu izslēgti
pinMode (micPin, INPUT);
for (int thisReading = 0; thisReading <numReadings; thisReading ++) {
rādījumi [thisReading] = 0;
}
}
tukša varavīksne (pagaidiet) {{
uint16_t i, j;
par (j = 0; j <256; j ++) {
par (i = 0; i
strip.setPixelColor (i, ritenis ((i+j) & 255));
}
strip.show ();
aizkavēties (gaidīt);
}
}
void visualizer () {
kopā = kopā - rādījumi [readIndex];
rādījumi [readIndex] = analogRead (micPin);
kopā = kopā + rādījumi [readIndex];
readIndex = readIndex + 1;
if (readIndex> = numReadings) {
readIndex = 0;
}
vidējais = kopā / numReadings;
kavēšanās (1);
int micpixel = (vidēji-100)/5;
Serial.println (mikropikseļi);
ja (mikropikseļi> 0) {
{
par (int j = 0; j <= mikropikseļi; j ++)
strip.setPixelColor (j, (mikseļu pikseļi*2), 0, (90 mikseļi), 0);
par (int j = mikropikseļi; j <= NUM_LEDS; j ++)
strip.setPixelColor (j, 0, 0, 0, 0);
strip.show ();
}
}
ja (mikropikseļi <0) {
par (int j = 0; j <= 20; j ++)
strip.setPixelColor (j, 0, 0, 50, 0);
strip.show ();
}
}
void loop () {
{
WiFiClient klients = server.available (); // klausīties ienākošos klientus
ja (klients) {// ja iegūstat klientu, Serial.println ("jauns klients"); // izdrukājiet ziņojumu no seriālā porta
String currentLine = ""; // izveidojiet virkni, lai turētu ienākošos datus no klienta
while (client.connected ()) {// cilpa, kamēr klients ir savienots
if (client.available ()) {// ja no klienta ir nolasāmi baiti, char c = klients.lasīt (); // tad izlasiet baitu
Serial.write (c); // izdrukājiet to sērijas monitorā
ja (c == '\ n') {// ja baits ir jaunas rindas rakstzīme
// ja pašreizējā rinda ir tukša, jums ir divas jaunas rindas rakstzīmes pēc kārtas.
// tas ir klienta HTTP pieprasījuma beigas, tāpēc nosūtiet atbildi:
ja (currentLine.length () == 0) {
// HTTP galvenes vienmēr sākas ar atbildes kodu (piemēram, HTTP/1.1 200 OK)
// un satura veids, lai klients zinātu, kas nāk, tad tukša rinda:
client.println ("HTTP/1.1 200 OK");
client.println ("Satura tips: teksts/html");
klients.println ();
// HTTP atbildes saturs seko galvenei:
client.print ("Noklikšķiniet šeit Ieslēgt varavīksnes efektu");
client.print ("Noklikšķiniet šeit Ieslēgt vizualizētāju");
// HTTP atbilde beidzas ar citu tukšu rindu:
klients.println ();
// izlauzties no cikla cikla:
pārtraukums;
} cits {// ja esat ieguvis jaunu rindiņu, notīriet currentLine:
currentLine = "";
}
} cits if (c! = '\ r') {// ja jums ir kaut kas cits, izņemot karietes atgriešanas rakstzīmi, strāvaLīnija += c; // pievienojiet to pašreizējās rindas beigām
}
// Pārbaudiet, vai klienta pieprasījums bija "GET /H" vai "GET /L":
if (currentLine.endsWith ("GET /R")) {
Varavīksne (10); // Varavīksnes efekts ieslēgts
}
if (currentLine.endsWith ("GET /V")) {
Vizualizators (); // Vizualizators ir ieslēgts
}
}
}
// slēgt savienojumu:
client.stop ();
Serial.println ("klients atvienots");
}
}
void printWifiStatus () {
// izdrukājiet tā tīkla SSID, kuram esat pievienojies:
Serial.print ("SSID:");
Serial.println (WiFi. SSID ());
// izdrukājiet sava WiFi vairoga IP adresi:
IPAddress ip = WiFi.localIP ();
Serial.print ("IP adrese:");
Sērijas.println (ip);
// izdrukājiet saņemtā signāla stiprumu:
garš rssi = WiFi. RSSI ();
Serial.print ("signāla stiprums (RSSI):");
Sērijas nospiedums (rssi);
Serial.println ("dBm");
// drukājiet, kur doties pārlūkprogrammā:
Serial.print ( Lai redzētu šo lapu darbībā, atveriet pārlūkprogrammu uz
Sērijas.println (ip);
}
}
uint32_t ritenis (baits WheelPos) {
WheelPos = 255 - WheelPos;
ja (WheelPos <85) {
atgriešanas sloksne. Krāsa (255 - WheelPos * 3, 0, WheelPos * 3, 0);
}
ja (WheelPos <170) {
WheelPos -= 85;
atgriešanas sloksne. Krāsa (0, WheelPos * 3, 255 - WheelPos * 3, 0);
}
WheelPos -= 170;
atgriešanas sloksne. Krāsa (WheelPos * 3, 255 - WheelPos * 3, 0, 0);
}
uint8_t sarkans (uint32_t c) {
atgriešanās (c >> 16);
}
uint8_t zaļš (uint32_t c) {
atgriešanās (c >> 8);
}
uint8_t zils (uint32_t c) {
atgriešanās (c);
}
}
// Sērijas.println (mikropikseļi);
}
4. solis: lampas pamatnes drukāšana 3d
Tika izmērīts, izstrādāts un izdrukāts lampas pamatnes 3D modelis, kura izmēri ir pietiekami lieli, lai ietilptu visas elektriskās sastāvdaļas pamatnes nodalījumā.
5. solis: LED piestiprināšana
Ledus tinēja kartona ruļļos un piestiprināja, izmantojot divpusēju lenti, apakšējā daļā tika urbts caurums, lai vadu izlaistu cauri
6. solis: lampas korpuss
Korpuss tika izgatavots, atrodot caurspīdīgu pudeli, kuras platums ir līdzīgs luktura pamatnei un augstums kā LED stiprinājumam. Pēc tam tas tika pārklāts ar biezu papīru, lai labāk izkliedētu gaismu. Alternatīvi kā luktura korpusu var izmantot matētu stiklu vai caurspīdīgas plastmasas caurules.
7. darbība: iestatīšana
Viss tika salīmēts kopā un salikts. Un lampa bija gatava kādai pārbaudei !.
Ieteicams:
Mūzikas montētājs: integrēts virtuālais mūzikas instruments ar bloķētu skārienjutīgu sensoru: 4 soļi
Mūzikas montētājs: integrēts virtuālais mūzikas instruments ar bloķētu skārienjutīgu sensoru: ir daudz cilvēku, kuri vēlas iemācīties spēlēt mūzikas instrumentu. Diemžēl daži no viņiem to nesāk augstās instrumentu cenas dēļ. Pamatojoties uz to, mēs nolēmām izveidot integrētu virtuālo mūzikas instrumentu sistēmu, lai samazinātu sākuma budžetu
Translightion Board (kontrolējams mūzikas vizualizators): 5 soļi
Translightion Board (kontrolējams mūzikas vizualizators): tulkojiet mūziku žilbinošā gaismas šovā, izmantojot šo pielāgojamo gaismas kontroliera projektu. Lieliski piemērots dīdžejiem, ballītēm un šoviem 1: 1! Zemāk ir atjaunināta demonstrācija
Mūzikas reaktīvā gaisma -- Kā padarīt ļoti vienkāršu mūzikas reaktīvo gaismu, lai padarītu darbvirsmu pievilcīgu: 5 soļi (ar attēliem)
Mūzikas reaktīvā gaisma || Kā padarīt ļoti vienkāršu mūzikas reaktīvo gaismu, lai padarītu darbvirsmu satriecošu. Hei, puiši, šodien mēs izveidosim ļoti interesantu projektu. Šodien mēs veidosim mūzikas reaktīvo gaismu. LED mainīs spilgtumu atbilstoši bass, kas patiesībā ir zemfrekvences audio signāls. To ir ļoti vienkārši izveidot. Mēs
Arduino mūzikas reaktīvā darbvirsmas lampa: 8 soļi (ar attēliem)
Arduino mūzikas reaktīvā darbvirsmas lampa: Sveiki visi! Šajā konstrukcijā mēs izgatavosim reaktīvu LED galda lampu, izmantojot vienkāršas sastāvdaļas un dažas pamata Arduino programmēšanas iespējas. Tas rada iespaidīgu efektu, kur gaisma dejos visu skaņu un mūzikas pavadījumā. Es pabeidzu šo projektu kopā ar komandas biedru
Mūzikas vizualizators (osciloskops): 4 soļi (ar attēliem)
Mūzikas vizualizators (osciloskops): Šis mūzikas vizualizators nodrošina lielisku veidu, kā pievienot mūzikas pieredzei lielāku dziļumu, un to ir diezgan viegli izveidot. Tas var būt noderīgs arī kā reāls osciloskops dažām lietojumprogrammām, un tas ir nepieciešams: -vecs crt (gandrīz visi b & am