ዝርዝር ሁኔታ:

ስማርት አምፖል (ቲ.ሲ.ዲ.ዲ.) - ቀስተ ደመና + ሙዚቃ ተመልካች -7 ደረጃዎች (ከስዕሎች ጋር)
ስማርት አምፖል (ቲ.ሲ.ዲ.ዲ.) - ቀስተ ደመና + ሙዚቃ ተመልካች -7 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: ስማርት አምፖል (ቲ.ሲ.ዲ.ዲ.) - ቀስተ ደመና + ሙዚቃ ተመልካች -7 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: ስማርት አምፖል (ቲ.ሲ.ዲ.ዲ.) - ቀስተ ደመና + ሙዚቃ ተመልካች -7 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: Ethiopia : - በብሉቱዝ ሙዚቃ የሚያጫውት እና አስገራሚ ብርሀን ያለው የአምፖል ዋጋ ከአዲስ አበባ 2024, ሀምሌ
Anonim
Image
Image
የወረዳ ዲያግራም
የወረዳ ዲያግራም

ይህ ፕሮጀክት በ TUDelft ውስጥ ለጽንሰ -ሀሳብ ዲዛይን ለኮርስ ቴክኖሎጂ የተሰራ ነው

የመጨረሻው ምርት የ ESP-32 ቤዝ LED መብራት ሲሆን ከአገልጋዩ ጋር ተገናኝቷል። ለሙከራው, መብራቱ ሁለት ተግባራት አሉት; የሚያብረቀርቅ ቀለም የሚቀያይር ቀስተ ደመና ውጤት ወደ አከባቢው እና ሁለተኛ የድምፅ ማጉያ ኤልዲ ፒክስሎች በድምፅ ደረጃዎች መሠረት “ይጨፍራሉ”። ስርዓቱ ከ wifi ጋር የተገናኘ ሲሆን ተጠቃሚው በ WIFI በኩል ከመብራት የሚፈልጉትን ውጤት መምረጥ ይችላል።

ርካሽ ESP-32 ማይክሮ ቺፕ ኃይለኛ ማቀነባበሪያዎች ፣ አብሮገነብ አዳራሽ ዳሳሽ ፣ የሙቀት ዳሳሽ ፣ የንክኪ ዳሳሽ እና እንዲሁም የ wifi እና የብሉቱዝ ችሎታ ይሰጠናል። በዚህ ፣ ለዚህ ፕሮጀክት ሁለት ውጤቶች ብቻ የተመረጡ ቢሆንም ፣ የዚህ “ብልጥ” መብራት አንድምታ ወሰን የለውም። የአየር ሁኔታን ለተጠቃሚው ፣ ወይም የክፍሉን የሙቀት መጠን ለማመልከት ጥቅም ላይ ይውላል ፣ መብራቱ ራሱ እንደ ማንቂያ ደወል ሊሠራ ይችላል ወይም ለጥሩ መነቃቃት ተሞክሮ የፀሐይ መውጫውን በማስመሰል ከአልጋዎ አጠገብ ጸጥ ያለ የፀሐይ ብርሃንን ሊያበራ ይችላል።

ደረጃ 1 ቁሳቁስ ያስፈልጋል

አርዱinoኖ esp32

የድምፅ ዳሳሽ

ባለአራት መንገድ ባለሁለት አቅጣጫ አመክንዮ ደረጃ መለወጫ

ኒዮፒክስል 2 ሜትር 60 መሪ/ሜ

ዝላይ ሽቦዎች

ማይክሮ ዩኤስቢ ገመድ ከአስማሚ ጋር

የበይነመረብ ግንኙነት

ደረጃ 2 የወረዳ ዲያግራም

የወረዳ ዲያግራም ተቀርጾ በተሰጠው መሠረት ወረዳው ተሠርቷል

ከዚህ በታች ያለው ሥዕላዊ መግለጫ።

ደረጃ 3: የአርዲኖ ኮድ

እዚህ ፣ በመጀመሪያ የእይታ ማሳያ ኮድ ተሠራ። ከዚያ ፣ ሁለት ምሳሌ ኮድ

; “Neoplxel RGBW starndtest”; እና “simpleWebServerWifi” በእይታ ማሳያ ኮድ ውስጥ ተስተካክሎ ተዋህዷል። ምንም እንኳን ኮዱ አሁንም አንዳንድ ጊዜ የሚረብሽ ቢሆንም (የዘፈቀደ የመሪነት መብራት በየጊዜው)። የኮዱ ቀጣይ ድግግሞሽ (አንዴ በቂ ጊዜ ካገኘን) ይዘመናል።

#ያካትቱ

#ifdef _AVR_

#ያካትቱ

#ኤንዲፍ

const int numReadings = 5;

int ንባቦች [numReadings];

int readIndex = 0;

int ጠቅላላ = 0;

int አማካይ = 0;

int micPin = 33;

#ፒን 4 ን ይግለጹ

#ገለጠ NUM_LEDS 120

#ብሩህነትን ይግለጹ 100

Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUM_LEDS ፣ ፒን ፣ 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 (ስም)

ቻር ማለፊያ = "ሚስጥራዊ የይለፍ ቃል"; // የአውታረ መረብ የይለፍ ቃልዎን

int keyIndex = 0; // የአውታረ መረብ ቁልፍዎ የመረጃ ጠቋሚ ቁጥር (ለ WEP ብቻ ያስፈልጋል)

int ሁኔታ = WL_IDLE_STATUS;

የ WiFi አገልጋይ አገልጋይ (80);

ባዶነት ማዋቀር ()

{

Serial.begin (9600); // ተከታታይ ግንኙነትን ያስጀምሩ

pinMode (9 ፣ ውፅዓት); // የ LED ፒን ሁነታን ያዘጋጁ

// የጋሻውን መኖር ይፈትሹ

ከሆነ (WiFi.status () == WL_NO_SHIELD) {

Serial.println ("የ WiFi ጋሻ የለም");

ሳለ (እውነት); // አይቀጥሉ

}

ሕብረቁምፊ fv = WiFi.firmwareVersion ();

ከሆነ (fv! = "1.1.0") {

Serial.println ("እባክዎን firmware ን ያሻሽሉ");

}

// ከ Wifi አውታረ መረብ ጋር ለመገናኘት ይሞክሩ

ሳለ (ሁኔታ! = WL_CONNECTED) {

Serial.print ("ከተሰየመ አውታረ መረብ ጋር ለመገናኘት መሞከር");

Serial.println (ssid); // የአውታረ መረብ ስም (SSID) ያትሙ ፤

// ከ WPA/WPA2 አውታረ መረብ ጋር ይገናኙ። ክፍት ወይም WEP አውታረ መረብ የሚጠቀሙ ከሆነ ይህንን መስመር ይለውጡ

ሁኔታ = WiFi.begin (ssid ፣ pass);

// ለግንኙነት 10 ሰከንዶች ይጠብቁ

መዘግየት (10000);

}

server.begin (); // የድር አገልጋዩን ወደብ 80 ላይ ያስጀምሩ

printWifiStatus (); // አሁን ተገናኝተዋል ፣ ስለዚህ ሁኔታውን ያትሙ

}

{

Serial.begin (9600);

strip.set ብሩህነት (ብሩህነት);

strip.begin ();

strip.show (); // ሁሉንም ፒክሰሎች ወደ ‹ጠፍቷል› ያስጀምሩ።

pinMode (ማይክሮ ፒን ፣ ግቤት);

ለ (int thisReading = 0; thisReading <numReadings; thisReading ++) {

ንባቦች [thisReading] = 0;

}

}

ባዶ ቀስተ ደመና (uint8_t መጠበቅ) {

uint16_t i, j;

ለ (j = 0; j <256; j ++) {

ለ (i = 0; i

strip.setPixelColor (i, Wheel ((i+j) & 255));

}

strip.show ();

መዘግየት (ይጠብቁ);

}

}

ባዶ ቪዥዋል () {

ጠቅላላ = ጠቅላላ - ንባቦች [readIndex];

ንባቦች [readIndex] = analogRead (micPin);

ጠቅላላ = ጠቅላላ + ንባቦች [readIndex];

readIndex = readIndex + 1;

ከሆነ (readIndex> = numReadings) {

readIndex = 0;

}

አማካይ = ጠቅላላ / numReadings;

መዘግየት (1);

int micpixel = (አማካይ -100)/5;

Serial.println (micpixel);

ከሆነ (micpixel> 0) {

{

ለ (int j = 0; j <= micpixel; j ++)

strip.setPixelColor (j, (micpixel*2), 0, (90-micpixel), 0);

ለ (int j = micpixel; j <= NUM_LEDS; j ++)

strip.setPixelColor (j, 0, 0, 0, 0);

strip.show ();

}

}

ከሆነ (ማይክሮፒክሰል <0) {

ለ (int j = 0; j <= 20; j ++)

strip.setPixelColor (j, 0, 0, 50, 0);

strip.show ();

}

}

ባዶነት loop () {

{

የ WiFiClient ደንበኛ = አገልጋይ. ይገኛል (); // ለገቢ ደንበኞች ያዳምጡ

(ደንበኛ) {// ደንበኛ ካገኙ ፣

Serial.println ("አዲስ ደንበኛ"); // በተከታታይ ወደብ ላይ መልእክት ያትሙ

ሕብረቁምፊ currentLine = ""; // ገቢ መረጃን ከደንበኛው ለመያዝ ሕብረቁምፊ ያድርጉ

ሳለ (client.connected ()) {// loop) ደንበኛው በሚገናኝበት ጊዜ

ከሆነ (client.available ()) {// ከደንበኛው ለማንበብ ባይቶች ካሉ ፣

char c = client.read (); // ባይት ያንብቡ ፣ ከዚያ

Serial.write (ሐ); // ተከታታይ ማሳያውን ያትሙት

ከሆነ (c == '\ n') {// ባይት አዲስ መስመር ቁምፊ ከሆነ

// የአሁኑ መስመር ባዶ ከሆነ በተከታታይ ሁለት አዲስ መስመር ቁምፊዎችን አግኝተዋል።

// ያ የደንበኛው የኤችቲቲፒ ጥያቄ ያበቃል ፣ ስለዚህ ምላሽ ይላኩ

ከሆነ (currentLine.length () == 0) {

// የኤችቲቲፒ ራስጌዎች ሁል ጊዜ በምላሽ ኮድ (ለምሳሌ ኤችቲቲፒ/1.1 200 እሺ) ይጀምራሉ

// እና የይዘት ዓይነት ደንበኛው የሚመጣውን እንዲያውቅ ፣ ከዚያም ባዶ መስመር

client.println ("HTTP/1.1 200 እሺ");

client.println ("የይዘት-አይነት ጽሑፍ/html");

client.println ();

// የኤችቲቲፒ ምላሽ ይዘት የራስጌውን ይከተላል

client.print ("እዚህ ጠቅ ያድርጉ የቀስተ ደመናን ውጤት አብራ");

client.print ("እዚህ ጠቅ ያድርጉ የእይታ ማሳያ አብራ");

// የኤች ቲ ቲ ፒ ምላሽ በሌላ ባዶ መስመር ያበቃል

client.println ();

// ከተወሰነ ጊዜ ዑደት ውጣ -

ሰበር;

} ሌላ {// አዲስ መስመር ካገኙ ፣ ከዚያ የአሁኑን መስመር ያፅዱ ፦

currentLine = "";

}

} ሌላ (c! = '\ r') {// ከሠረገላ መመለሻ ቁምፊ በስተቀር ሌላ ነገር ካገኙ ፣

currentLine += c; // ወደ የአሁኑ መስመር መጨረሻ ያክሉት

}

// የደንበኛው ጥያቄ “GET /H” ወይም “GET /L” መሆኑን ያረጋግጡ።

ከሆነ (currentLine.endsWith ("GET /R")) {

ቀስተ ደመና (10); // የቀስተ ደመና ውጤት በርቷል

}

ከሆነ (currentLine.endsWith ("GET /V")) {

የእይታ ማሳያ (); // ቪዥላይዘር በርቷል

}

}

}

// ግንኙነቱን ዝጋ;

client.stop ();

Serial.println ("ደንበኛ ተቋርጧል");

}

}

ባዶ ህትመት WifiStatus () {

// የተገናኙበትን አውታረ መረብ SSID ያትሙ -

Serial.print ("SSID:");

Serial.println (WiFi. SSID ());

// የ WiFi ጋሻዎን አይፒ አድራሻ ያትሙ

IPAddress ip = WiFi.localIP ();

Serial.print ("IP address:");

Serial.println (ip);

// የተቀበለውን የምልክት ጥንካሬ ያትሙ-

ረጅም rssi = WiFi. RSSI ();

Serial.print ("የምልክት ጥንካሬ (RSSI):");

Serial.print (rssi);

Serial.println ("dBm");

// በአሳሽ ውስጥ የት እንደሚሄዱ ያትሙ-

Serial.print ("ይህን ገጽ በተግባር ለማየት ፣ አሳሽ ወደ https://" ይክፈቱ);

Serial.println (ip);

}

}

uint32_t ጎማ (ባይት 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 ሐ) {

መመለስ (ሐ >> 16);

}

uint8_t አረንጓዴ (uint32_t ሐ) {

መመለስ (ሐ >> 8);

}

uint8_t ሰማያዊ (uint32_t ሐ) {

መመለስ (ሐ);

}

}

//Serial.println (mikmiksel);

}

ደረጃ 4 3 ዲ አምፖሉን መሠረት ማተም

3 ዲ የመብራት መሠረት ማተም
3 ዲ የመብራት መሠረት ማተም

የመሠረት ክፍሉ 3 ዲ አምሳያ በመለኪያ ክፍሉ ውስጥ ያሉትን ሁሉንም የኤሌክትሪክ ክፍሎች ለማሟላት በቂ በሆነ መጠን ይለካ ፣ የተነደፈ እና የታተመ ነው።

ደረጃ 5: መሪ አባሪ

መሪ አባሪ
መሪ አባሪ

ሊድ በካርቶን ጥቅል ተጠቅልሎ ባለ ሁለት ጎን ቴፕ በመጠቀም ተያይ attachedል ፣ ሽቦውን ለማለፍ ከታችኛው ክፍል ላይ ቀዳዳ ተቆፍሯል

ደረጃ 6 - የመብራት ማቀፊያ

የመብራት ማቀፊያ
የመብራት ማቀፊያ

እንደ መብራት መሠረት እና ቁመት እንደ ኤልዲ አባሪ ተመሳሳይ ስፋት ያለው ግልፅ ጠርሙስ በማግኘት አንድ ቅጥር ተደረገ። ይህ ለተሻለ የብርሃን ስርጭት በወፍራም ወረቀት ተሸፍኗል። በአማራጭ ፣ የቀዘቀዘ መስታወት ወይም ብርሃን አሳላፊ የፕላስቲክ ቱቦዎችን እንደ መብራት ማቀፊያ መጠቀም ይቻላል።

ደረጃ 7: ማዋቀር

አዘገጃጀት
አዘገጃጀት

ሁሉም ነገር ተጣብቆ ተሰብስቧል። እና መብራቱ ለተወሰኑ ሙከራዎች ዝግጁ ነበር!

የሚመከር: