Talaan ng mga Nilalaman:
- Hakbang 1: Kailangan ng Materyal
- Hakbang 2: Diagram ng Circuit
- Hakbang 3: Arduino Code
- Hakbang 4: 3d Pagpi-print ng Base ng Lampara
- Hakbang 5: Humantong sa Attachment
- Hakbang 6: Enclosure ng Lampara
- Hakbang 7: Pag-setup
Video: Smart Lamp (TCfD) - Rainbow + Music Visualizer: 7 Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:15
Ang proyektong ito ay tapos na para sa kurso Teknolohiya para sa Disenyo ng Konsepto sa TUDelft
Ang Huling produkto ay isang base lamp na LED na ESP-32 at nakakonekta sa server. Para sa prototype, ang lampara ay may dalawang pag-andar; isang epekto ng bahaghari na naglalabas ng isang nakapapawing pagod na kulay na paglilipat patungo sa mga paligid nito at pangalawa ng tunog na visualizer kung saan ang "LED pixel" sumayaw "ayon sa mga antas ng tunog. Ang system ay konektado sa wifi at ang gumagamit ay maaaring pumili kung anong epekto ang nais nila mula sa lampara sa pamamagitan ng WIFI.
Ang murang ESP-32 microchip ay nagbibigay sa amin ng mga makapangyarihang processor, inbuilt na sensor ng hall, sensor ng temperatura, touch sensor at may kakayahan din sa wifi at bluetooth. Sa pamamagitan nito, habang dalawang epekto lamang ang napili para sa proyektong ito, Ang implikasyon ng "matalinong" lampara na ito ay walang hanggan. Gagamitin ito upang ipahiwatig ang lagay ng panahon sa gumagamit, o ang temperatura ng silid, ang lampara mismo ay maaaring kumilos bilang isang gatilyo ng alarma o maaari itong magbigay ng isang pagpapatahimik na sikat ng araw sa tabi ng iyong kama na tumutulad sa pagsikat ng araw para sa isang magandang karanasan sa paggising.
Hakbang 1: Kailangan ng Materyal
Arduino esp32
Sound sensor
Apat na paraan Bi-Directional Logic Level converter
Pinangunahan ng Neopixel 2m 60 led / m
Jumper wires
Micro USB cable na may adapter
Internet connection
Hakbang 2: Diagram ng Circuit
Ang isang diagram ng circuit ay iginuhit at ang circuit ay ginawa nang naaayon tulad ng naibigay sa
ang diagram sa ibaba.
Hakbang 3: Arduino Code
Dito, unang ginawa ang code ng visualizer. Pagkatapos, dalawang halimbawa ng code
; "Neoplxel RGBW starndtest"; at ang "simpleWebServerWifi" ay binago at isinama sa loob ng visualizer code. Bagaman ang code ay maraming surot pa rin (paminsan-minsang light up light up light). Susunod na pag-ulit ng code (sa sandaling makakuha kami ng sapat na oras) ay maa-update.
# isama
#ifdef _AVR_
# isama
#tapusin kung
const int numReadings = 5;
int readings [numReadings];
int readIndex = 0;
int kabuuang = 0;
int average = 0;
int micPin = 33;
# tukuyin ang PIN 4
# tukuyin ang NUM_LEDS 120
# tukuyin ang KARAPATAN 100
Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);
byte 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 };
# isama
# isama
char ssid = "yourNetwork"; // iyong network SSID (pangalan)
pass pass = "secretPassword"; // iyong network password
int keyIndex = 0; // iyong network key Index number (kailangan lang para sa WEP)
int status = WL_IDLE_STATUS;
WiFiServer server (80);
walang bisa ang pag-setup ()
{
Serial.begin (9600); // ipasimula ang serial komunikasyon
pinMode (9, OUTPUT); // itakda ang LED pin mode
// suriin ang pagkakaroon ng kalasag:
kung (WiFi.status () == WL_NO_SHIELD) {
Serial.println ("Hindi naroon ang kalasag ng WiFi");
habang (totoo); // huwag mong ituloy
}
String fv = WiFi.firmwareVersion ();
kung (fv! = "1.1.0") {
Serial.println ("Mangyaring i-upgrade ang firmware");
}
// pagtatangka upang kumonekta sa Wifi network:
habang (status! = WL_CONNected) {
Serial.print ("Pagtatangka upang kumonekta sa Network na pinangalanang:");
Serial.println (ssid); // print the network name (SSID);
// Kumonekta sa WPA / WPA2 network. Baguhin ang linyang ito kung gumagamit ng bukas o WEP network:
katayuan = WiFi.begin (ssid, pass);
// maghintay ng 10 segundo para sa koneksyon:
pagkaantala (10000);
}
server.begin (); // simulan ang web server sa port 80
printWifiStatus (); // nakakonekta ka ngayon, kaya i-print ang katayuan
}
{
Serial.begin (9600);
strip.setBightness (BRIGHTNESS);
strip.begin ();
strip.show (); // Initialize all pixel to 'off'
pinMode (micPin, INPUT);
para sa (int thisReading = 0; thisReading <numReadings; thisReading ++) {
mga pagbasa [thisReading] = 0;
}
}
walang bisa ang bahaghari (uint8_t wait) {
uint16_t i, j;
para sa (j = 0; j <256; j ++) {
para sa (i = 0; i
strip.setPixelColor (i, Wheel ((i + j) & 255));
}
strip.show ();
antala (maghintay);
}
}
void visualizer () {
kabuuan = kabuuan - mga pagbasa [readIndex];
mga pagbasa [readIndex] = analogRead (micPin);
total = total + readings [readIndex];
readIndex = readIndex + 1;
kung (readIndex> = numReadings) {
readIndex = 0;
}
average = total / numReadings;
antala (1);
int micpixel = (average-100) / 5;
Serial.println (micpixel);
kung (micpixel> 0) {
{
para sa (int j = 0; j <= micpixel; j ++)
strip.setPixelColor (j, (micpixel * 2), 0, (90-micpixel), 0);
para sa (int j = micpixel; j <= NUM_LEDS; j ++)
strip.setPixelColor (j, 0, 0, 0, 0);
strip.show ();
}
}
kung (micpixel <0) {
para sa (int j = 0; j <= 20; j ++)
strip.setPixelColor (j, 0, 0, 50, 0);
strip.show ();
}
}
void loop () {
{
WiFiClient client = server.available (); // makinig para sa mga papasok na kliyente
kung (client) {// kung makakakuha ka ng isang kliyente, Serial.println ("bagong client"); // print a message out the serial port
String currentLine = ""; // gumawa ng isang String upang hawakan ang papasok na data mula sa client
habang (client.connected ()) {// loop habang ang client ay konektado
kung (client.available ()) {// kung mayroong mga byte na babasahin mula sa client, char c = client.read (); // basahin ang isang byte, pagkatapos
Serial.write (c); // print it out the serial monitor
kung (c == '\ n') {// kung ang byte ay isang bagong character na newline
// kung ang kasalukuyang linya ay blangko, nakakuha ka ng dalawang sunod-sunod na mga character sa isang hilera.
// na ang pagtatapos ng kahilingan sa HTTP ng kliyente, kaya magpadala ng isang tugon:
kung (currentLine.length () == 0) {
// Palaging nagsisimula ang mga header ng HTTP ng isang code sa pagtugon (hal. HTTP / 1.1 200 OK)
// at isang uri ng nilalaman upang malaman ng kliyente kung ano ang darating, pagkatapos ay isang blangko na linya:
client.println ("HTTP / 1.1 200 OK");
client.println ("Uri ng nilalaman: teksto / html");
client.println ();
// ang nilalaman ng tugon sa HTTP ay sumusunod sa header:
client.print ("Mag-click dito Buksan ang Rainbow effect");
client.print ("Mag-click dito Buksan ang Visualizer");
// Ang pagtugon sa HTTP ay nagtapos sa isa pang blangko na linya:
client.println ();
// break out of the habang loop:
pahinga;
} iba pa {// kung nakakuha ka ng isang bagong linya, pagkatapos i-clear ang kasalukuyangLine:
currentLine = "";
}
} iba pa kung (c! = '\ r') {// kung mayroon kang ibang bagay maliban sa isang character na bumalik sa karwahe, currentLine + = c; // idagdag ito sa dulo ng kasalukuyangLine
}
// Suriin kung ang hiniling ng kliyente ay "GET / H" o "GET / L":
kung (currentLine.endsWith ("GET / R")) {
Rainbow (10); // Rainbow effect nakabukas
}
kung (currentLine.endsWith ("GET / V")) {
Visualizer (); // Ang Visualizer ay nakabukas
}
}
}
// isara ang koneksyon:
client.stop ();
Serial.println ("disonnect ng client");
}
}
walang bisa ang printWifiStatus () {
// i-print ang SSID ng network na iyong nakalakip:
Serial.print ("SSID:");
Serial.println (WiFi. SSID ());
// i-print ang IP address ng iyong kalasag sa WiFi:
IPAddress ip = WiFi.localIP ();
Serial.print ("IP Address:");
Serial.println (ip);
// i-print ang natanggap na lakas ng signal:
mahabang rssi = WiFi. RSSI ();
Serial.print ("lakas ng signal (RSSI):");
Serial.print (rssi);
Serial.println ("dBm");
// print kung saan pupunta sa isang browser:
Serial.print ( Upang makita ang pahinang ito sa pagkilos, buksan ang isang browser sa
Serial.println (ip);
}
}
uint32_t Wheel (byte WheelPos) {
WheelPos = 255 - WheelPos;
kung (WheelPos <85) {
return strip. Kulay (255 - WheelPos * 3, 0, WheelPos * 3, 0);
}
kung (WheelPos <170) {
WheelPos - = 85;
return strip. Kulay (0, WheelPos * 3, 255 - WheelPos * 3, 0);
}
WheelPos - = 170;
return strip. Color (WheelPos * 3, 255 - WheelPos * 3, 0, 0);
}
uint8_t pula (uint32_t c) {
bumalik (c >> 16);
}
uint8_t berde (uint32_t c) {
bumalik (c >> 8);
}
uint8_t blue (uint32_t c) {
ibalik (c);
}
}
//Serial.println(micpixel);
}
Hakbang 4: 3d Pagpi-print ng Base ng Lampara
Ang isang 3d na modelo ng base ng lampara ay sinukat, dinisenyo at naka-print na may mga sukat na sapat na malaki upang magkasya ang lahat ng mga sangkap ng kuryente sa loob ng base kompartimento.
Hakbang 5: Humantong sa Attachment
Ang led's ay pinaliko sa karton na roll at naka-attach gamit ang dobleng panig na tape, isang butas ay drilled sa ilalim na bahagi upang maipasa ang kawad
Hakbang 6: Enclosure ng Lampara
Ang isang enclosure ay ginawa sa pamamagitan ng paghahanap ng isang transparent na bote na may katulad na lapad bilang base ng lampara at taas bilang LED na kalakip. Pagkatapos ay tinakpan ito ng makapal na papel para sa mas mahusay na pagsasabog ng ilaw. Bilang kahalili, posible na gumamit ng frosted glass o translucent plastic tubes bilang lampara ng lampara.
Hakbang 7: Pag-setup
Ang lahat ay nakadikit at pinagsama. At ang lampara ay handa na para sa ilang pagsubok !.
Inirerekumendang:
LightBox Music Visualizer: 5 Hakbang (na may Mga Larawan)
LightBox Music Visualizer: Gumagamit ang LightBox ng built-in na mikropono ng iyong telepono o tablet upang suriin ang musika upang makabuo ng magagandang mga pattern ng ilaw na tumutugma sa musika. Simulan lamang ang app, ilagay ang iyong telepono o tablet saanman malapit sa isang mapagkukunan ng tunog, at makikita ng iyong kahon ang
Bluetooth Speaker Sa Music Visualizer: 10 Hakbang (na may Mga Larawan)
Bluetooth Speaker Sa Music Visualizer: Sa itinuturo na ito, ipapakita ko sa iyo kung paano ko binuo ang Bluetooth Speaker na ito na mayroong isang music visualizer sa tuktok. Mukhang talagang cool at ginagawang mas mahusay ang sandali ng pakikinig ng iyong kanta. Maaari kang magpasya kung nais mong i-on ang visualizer o hindi
Arduino Music Reactive Desktop Lamp: 8 Hakbang (na may Mga Larawan)
Arduino Music Reactive Desktop Lamp: Kamusta lahat! Sa pagbuo na ito, gagawa kami ng isang reaktibong LED desktop lamp gamit ang mga simpleng sangkap at ilang pangunahing programa ng Arduino. Gumagawa ito ng isang kahanga-hangang epekto kung saan sasayaw ang ilaw sa lahat ng tunog at musika. Nakumpleto ko ang proyektong ito sa isang kasamahan sa koponan
Music Visualizer (oscilloscope): 4 Hakbang (na may Mga Larawan)
Music Visualizer (oscilloscope): Ang musikal na visualizer na ito ay nagbibigay ng isang mahusay na paraan upang magdagdag ng higit pang lalim sa karanasan ng iyong musika, at medyo madali itong mabuo. Maaari din itong maging kapaki-pakinabang bilang isang aktwal na oscilloscope para sa ilang mga aplikasyon na kinakailangan ng lahat ay: -isang lumang crt (halos lahat ng & amp
Nixie Tube Music Visualizer: 10 Hakbang (na may Mga Larawan)
Nixie Tube Music Visualizer: Isang hypnotizing music visualizer na inspirasyon ng mga maliit na bar sa tuktok ng iTunes. Labing-apat na Russian IN-13 Nixie bargraph tubes ang ginagamit bilang display. Ang haba na ilaw ng bawat nixie tube ay kumakatawan sa dami ng isang tiyak na dalas sa mu