Агуулгын хүснэгт:

Ухаалаг чийдэн (TCfD) - Солонго + Хөгжмийн дүрслэл: 7 алхам (зурагтай)
Ухаалаг чийдэн (TCfD) - Солонго + Хөгжмийн дүрслэл: 7 алхам (зурагтай)

Видео: Ухаалаг чийдэн (TCfD) - Солонго + Хөгжмийн дүрслэл: 7 алхам (зурагтай)

Видео: Ухаалаг чийдэн (TCfD) - Солонго + Хөгжмийн дүрслэл: 7 алхам (зурагтай)
Видео: 【ドラゴンクエストモンスターズ】デュラン見て!『???系』も作りたくなってきた!#11【DQM/DRAGON QUEST MONSTERS/テリーのワンダーランド】【みお】 2024, Арваннэгдүгээр
Anonim
Image
Image
Хэлхээ диаграм
Хэлхээ диаграм

Энэхүү төсөл нь 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 чийдэнгийн суурийг хэвлэх
3d чийдэнгийн суурийг хэвлэх

Дэнлүүний суурийн 3d загварыг хэмжиж, дизайны үндсэн хэсгүүдийн доторх бүх цахилгаан эд ангиудыг багтаах боломжтой хэмжээтэй хэвлэв.

Алхам 5: Лед хавсралт

Лед хавсралт
Лед хавсралт

Лед -ийг картонон ороомогоор ороож, хоёр талт соронзон хальс ашиглан бэхлэв, доод хэсэгт утсыг дамжуулах нүх гаргав.

Алхам 6: Дэнлүүний хашлага

Дэнлүүний хашлага
Дэнлүүний хашлага

LED хавсралт шиг дэнлүүний суурь, өндөртэй ижил өргөнтэй тунгалаг лонхыг олж хийснээр хашлага хийсэн. Дараа нь гэрлийг илүү сайн сарниулахын тулд зузаан цаасаар хучсан байв. Эсвэл царцсан шил эсвэл тунгалаг хуванцар хоолойг чийдэнгийн хашлага болгон ашиглах боломжтой.

Алхам 7: Тохиргоо

Тохируулах
Тохируулах

Бүгдийг нааж, угсарч эхлэв. Тэгээд чийдэн нь зарим туршилтанд бэлэн боллоо!

Зөвлөмж болгож буй: