Агуулгын хүснэгт:
- Алхам 1: Шаардлагатай материал
- Алхам 2: Хэлхээ диаграм
- Алхам 3: Arduino код
- Алхам 4: Дэнлүүний суурийг 3d хэвлэх
- Алхам 5: Лед хавсралт
- Алхам 6: Дэнлүүний хашлага
- Алхам 7: Тохиргоо
Видео: Ухаалаг чийдэн (TCfD) - Солонго + Хөгжмийн дүрслэл: 7 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:05
Энэхүү төсөл нь TUDelft -ийн концепцийн дизайны технологийн чиглэлээр хийгдсэн болно
Эцсийн бүтээгдэхүүн нь ESP-32 үндсэн LED чийдэн бөгөөд сервертэй холбогдсон байдаг. Прототипийн хувьд чийдэн нь хоёр функцтэй; Солонго эффект нь тайвшруулах өнгө ялгаруулж, хүрээлэн буй орчин руу чиглүүлж, хоёрдугаарт дууны дүрсийг харуулдаг бөгөөд LED пикселүүд нь дууны түвшний дагуу "бүжиглэдэг". Систем нь wifi -д холбогдсон бөгөөд хэрэглэгч WIFI -ээр дамжуулан чийдэнгээс ямар эффект авахаа өөрөө сонгох боломжтой.
Хямд үнэтэй ESP-32 микрочип нь хүчирхэг процессор, танхимын мэдрэгч, температур мэдрэгч, мэдрэгч мэдрэгч, wifi болон bluetooth-ийн боломжийг бидэнд олгодог. Энэ төсөлд зөвхөн хоёр эффект сонгосон ч энэхүү "ухаалаг" чийдэнгийн үр дагавар хязгааргүй юм. Энэ нь хэрэглэгчдэд цаг агаар эсвэл өрөөний температур, дэнлүү өөрөө дохиоллын дохио өгөх эсвэл нарны тусгалыг нарны туяагаар гэрэлтүүлж, нар мандахыг дуурайж, сэрээх боломжийг олгодог.
Алхам 1: Шаардлагатай материал
Arduino esp32
Дууны мэдрэгч
Дөрвөн талын хоёр чиглэлтэй логик түвшний хөрвүүлэгч
Neopixel удирдсан 2м 60 LED/м
Холбогч утас
Адаптертай микро USB кабель
интернет холболт
Алхам 2: Хэлхээ диаграм
Хэлхээний диаграмыг зурж, хэлхээний дагуу өгсөн болно
доорх диаграм.
Алхам 3: Arduino код
Энд эхлээд визуализаторын кодыг хийсэн. Дараа нь хоёр жишээ код
; "Neoplxel RGBW starndtest"; болон "simpleWebServerWifi" -ийг визуализаторын код дотор өөрчилж, нэгтгэсэн болно. Хэдийгээр код нь заримдаа алдаатай хэвээр байгаа ч (санамсаргүй LED гэрэл үе үе асдаг). Кодын дараагийн давталт (бидэнд хангалттай хугацаа өгсний дараа) шинэчлэгдэх болно.
#оруулах
#ifdef _АВР_
#оруулах
#endif
const int numReadings = 5;
int уншилт [numReadings];
int readIndex = 0;
int нийт = 0;
int дундаж = 0;
int micPin = 33;
#PIN тодорхойлох 4
#тодорхойлох_ NUM_LEDS 120
#BRIGHTNESS 100 -ийг тодорхойлно уу
Adafruit_NeoPixel зурвас = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);
байт 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 };
#оруулах
#оруулах
char ssid = "таны сүлжээ"; // таны сүлжээний SSID (нэр)
char pass = "secretPassword"; // таны сүлжээний нууц үг
int keyIndex = 0; // таны сүлжээний түлхүүрийн индексийн дугаар (зөвхөн WEP -д шаардлагатай)
int төлөв = WL_IDLE_STATUS;
WiFiServer сервер (80);
хүчингүй тохиргоо ()
{
Цуваа эхлэх (9600); // цуваа холболтыг эхлүүлэх
pinMode (9, OUTPUT); // LED зүү горимыг тохируулна уу
// бамбай байгаа эсэхийг шалгах:
хэрэв (WiFi.status () == WL_NO_SHIELD) {
Serial.println ("WiFi бамбай байхгүй");
байхад (үнэн); // үргэлжлүүлэх хэрэггүй
}
String fv = WiFi.firmwareVersion ();
хэрэв (fv! = "1.1.0") {
Serial.println ("Програм хангамжийг шинэчилнэ үү");
}
// Wifi сүлжээнд холбогдох оролдлого:
байхад (байдал! = WL_CONNECTED) {
Serial.print ("Дараах нэртэй сүлжээнд холбогдохыг оролдож байна.");
Serial.println (ssid); // сүлжээний нэрийг хэвлэх (SSID);
// WPA/WPA2 сүлжээнд холбогдох. Хэрэв нээлттэй эсвэл WEP сүлжээ ашиглаж байгаа бол энэ мөрийг өөрчилнө үү.
төлөв = WiFi.begin (ssid, pass);
// холболтыг 10 секунд хүлээнэ үү:
саатал (10000);
}
server.begin (); // вэб серверийг 80 -р порт дээр эхлүүлэх
printWifiStatus (); // та одоо холбогдсон байгаа тул статусыг хэвлэ
}
{
Цуваа эхлэх (9600);
strip.setBrightness (BRIGHTNESS);
strip.begin ();
strip.show (); // Бүх пикселийг "унтраах" болгож эхлүүлэх
pinMode (micPin, INPUT);
for (int thisReading = 0; thisReading <numReadings; thisReading ++) {
уншилт [thisReading] = 0;
}
}
хоосон солонго (uint8_t хүлээх) {
uint16_t i, j;
for (j = 0; j <256; j ++) {
for (i = 0; би
strip.setPixelColor (i, Wheel ((i+j) & 255));
}
strip.show ();
хойшлуулах (хүлээх);
}
}
хоосон дүрслэл () {
нийт = нийт - уншилт [readIndex];
уншилт [readIndex] = analogRead (micPin);
нийт = нийт + уншилт [readIndex];
readIndex = readIndex + 1;
if (readIndex> = numReadings) {
readIndex = 0;
}
дундаж = нийт / тоо Унших;
саатал (1);
int micpixel = (дундаж-100)/5;
Serial.println (микс пиксел);
хэрэв (микс пиксел> 0) {
{
for (int j = 0; j <= micpixel; j ++)
strip.setPixelColor (j, (micpixel*2), 0, (90-micpixel), 0);
for (int j = micpixel; j <= NUM_LEDS; j ++)
strip.setPixelColor (j, 0, 0, 0, 0);
strip.show ();
}
}
хэрэв (микс <0) {
for (int j = 0; j <= 20; j ++)
strip.setPixelColor (j, 0, 0, 50, 0);
strip.show ();
}
}
void loop () {
{
WiFiClient клиент = server.available (); // ирж буй үйлчлүүлэгчдийг сонсох
if (үйлчлүүлэгч) {// хэрэв та үйлчлүүлэгчтэй бол, Serial.println ("шинэ үйлчлүүлэгч"); // цуваа порт дээр зурвас хэвлэх
String currentLine = ""; // үйлчлүүлэгчээс ирж буй өгөгдлийг хадгалах String хийх
while (client.connected ()) {// үйлчлүүлэгч холбогдсон байхад давталт
if (client.available ()) {// хэрэв үйлчлүүлэгчээс унших байт байвал, char c = client.read (); // байтыг уншина уу
Цуваа бичих (c); // цуваа дэлгэцийг хэвлэх
if (c == '\ n') {// хэрэв байт нь шинэ мөрийн тэмдэгт бол
// хэрэв одоогийн мөр хоосон байвал та дараалсан хоёр шинэ тэмдэгт авсан болно.
// энэ бол үйлчлүүлэгчийн HTTP хүсэлтийн төгсгөл юм, тиймээс хариу илгээнэ үү:
if (currentLine.length () == 0) {
// HTTP толгой нь үргэлж хариу кодоор эхэлдэг (жишээ нь HTTP/1.1 200 OK)
// ба агуулгын төрөл тул үйлчлүүлэгч юу болохыг мэдэж, дараа нь хоосон мөр:
client.println ("HTTP/1.1 200 OK");
client.println ("Агуулгын төрөл: текст/html");
client.println ();
// HTTP хариултын агуулга нь толгойг дагана.
client.print ("Энд дарж Солонгын эффектийг асаана уу");
client.print ("Энд дарж Visualizer -ийг асаана уу");
// HTTP хариулт нь өөр хоосон мөрөөр төгсдөг:
client.println ();
// while давталтаас гарах:
завсарлага;
} өөр {// хэрэв танд шинэ мөр байгаа бол currentLine -ийг арилгана уу:
currentLine = "";
}
} if if (c! = '\ r') {// хэрэв танд тэрэг буцах тэмдэгтээс өөр зүйл байгаа бол, currentLine += c; // үүнийг currentLine -ийн төгсгөлд нэмнэ үү
}
// Үйлчлүүлэгчийн хүсэлт "GET /H" эсвэл "GET /L" эсэхийг шалгах:
if (currentLine.endsWith ("GET /R")) {
Солонго (10); // Солонгын эффектийг асаасан
}
if (currentLine.endsWith ("GET /V")) {
Visualizer (); // Visualizer асаалттай байна
}
}
}
// холболтыг хаах:
client.stop ();
Serial.println ("үйлчлүүлэгч салгагдсан");
}
}
хүчингүй printWifiStatus () {
// хавсаргасан сүлжээний SSID -г хэвлэх:
Serial.print ("SSID:");
Serial.println (WiFi. SSID ());
// WiFi бамбайныхаа IP хаягийг хэвлэх:
IPAddress ip = WiFi.localIP ();
Serial.print ("IP хаяг:");
Serial.println (ip);
// хүлээн авсан дохионы хүчийг хэвлэх:
урт rssi = WiFi. RSSI ();
Serial.print ("дохионы хүч (RSSI):");
Цуваа.хэвлэх (rssi);
Serial.println ("dBm");
// хөтөч дээр хаашаа явахаа хэвлэх:
Serial.print ("Энэ хуудсыг ажиллуулахын тулд https:// рүү хөтөчийг нээнэ үү)";
Serial.println (ip);
}
}
uint32_t Wheel (байт WheelPos) {
WheelPos = 255 - WheelPos;
хэрэв (WheelPos <85) {
буцах зурвас Өнгө (255 - WheelPos * 3, 0, WheelPos * 3, 0);
}
хэрэв (WheelPos <170) {
WheelPos -= 85;
буцах зурвас Өнгө (0, WheelPos * 3, 255 - WheelPos * 3, 0);
}
WheelPos -= 170;
буцах зурвас Өнгө (WheelPos * 3, 255 - WheelPos * 3, 0, 0);
}
uint8_t улаан (uint32_t c) {
буцах (c >> 16);
}
uint8_t ногоон (uint32_t c) {
буцах (c >> 8);
}
uint8_t цэнхэр (uint32_t c) {
буцах (в);
}
}
//Serial.println(icpixel);
}
Алхам 4: Дэнлүүний суурийг 3d хэвлэх
Дэнлүүний суурийн 3d загварыг хэмжиж, дизайны үндсэн хэсгүүдийн доторх бүх цахилгаан эд ангиудыг багтаах боломжтой хэмжээтэй хэвлэв.
Алхам 5: Лед хавсралт
Лед -ийг картонон ороомогоор ороож, хоёр талт соронзон хальс ашиглан бэхлэв, доод хэсэгт утсыг дамжуулах нүх гаргав.
Алхам 6: Дэнлүүний хашлага
LED хавсралт шиг дэнлүүний суурь, өндөртэй ижил өргөнтэй тунгалаг лонхыг олж хийснээр хашлага хийсэн. Дараа нь гэрлийг илүү сайн сарниулахын тулд зузаан цаасаар хучсан байв. Эсвэл царцсан шил эсвэл тунгалаг хуванцар хоолойг чийдэнгийн хашлага болгон ашиглах боломжтой.
Алхам 7: Тохиргоо
Бүгдийг нааж, угсарч эхлэв. Тэгээд чийдэн нь зарим туршилтанд бэлэн боллоо!
Зөвлөмж болгож буй:
Лазер хөгжмийн дүрслэл: 5 алхам
Laser Music Visualizer: Таны дуртай дуунууд хэрхэн сонсогдож байгааг та мэднэ. Одоо та визуализатор хийж, тэд хэрхэн харагдаж байгааг харах боломжтой. Энэ нь дараах байдлаар ажилладаг: Чанга яригчаар дамжуулан дуу тоглуулахад чанга яригчийн диафрагм чичирдэг. Эдгээр чичиргээ нь хавсаргасан толин тусгалыг хөдөлгөдөг
Translightion Board (Хяналттай хөгжмийн дүрслэл): 5 алхам
Translightion Board (Controllable Music Visualizer): Энэхүү тохируулгатай гэрэл хянагчийн төслийн тусламжтайгаар хөгжмийг нүд гялбам гэрлийн шоунд орчуулаарай. DJ, үдэшлэг, 1: 1 шоунд тохиромжтой! Доорх демо шинэчлэгдсэн
Arduino -той хөгжмийн дүрслэл: 5 алхам
Arduino -тэй хөгжмийн дүрслэл: Интерактив хөгжмийн визуализатор бүрэлдэхүүн хэсгүүд
Хөгжмийн дүрслэл бүхий Bluetooth чанга яригч: 10 алхам (зурагтай)
Хөгжим дүрсжүүлэгчтэй Bluetooth чанга яригч: Энэхүү зааварчилгаанд би дээд хэсэгт нь хөгжмийн дүрсжүүлэгчтэй энэхүү Bluetooth чанга яригчийг хэрхэн бүтээхээ харуулах болно. Энэ үнэхээр дажгүй харагдаж байгаа бөгөөд таны дууг сонсох мөчийг илүү гайхалтай болгож байна. Та визуализаторыг асаах эсэхээ шийдэж болно
Хөгжмийн дүрслэл (осциллограф): 4 алхам (зурагтай)
Хөгжмийн дүрслэл (осциллограф): Энэхүү хөгжмийн дүрслэл нь хөгжмийнхөө туршлагыг илүү гүнзгийрүүлэх гайхалтай арга бөгөөд бүтээхэд маш хялбар юм. Энэ нь шаардлагатай зарим програмуудын хувьд осциллографын хувьд ашигтай байж болох юм: