ኮድ ይፈልጉ

ESP32 ትምህርት 31/55 - ፕሮጀክት LED ስትሪፕ ከእንቅፋት መራቅ ጋር | SunFounder የESP32 IoT መማሪያ ኪት

ESP32 ትምህርት 31/55 - ፕሮጀክት LED ስትሪፕ ከእንቅፋት መራቅ ጋር | SunFounder የESP32 IoT መማሪያ ኪት

በዚህ ትምህርት ውስጥ፣ እንቅፋትን በመለየት ላይ ተመስርቶ አቅጣጫውን መቀየር የሚችል ፕሮጀክት ለመፍጠር ESP32 ማይክሮኮንትሮለር እና WS2812 LED ስትሪፕ እንጠቀማለን። የLED ስትሪፕ ወደፊት በሚንቀሳቀስበት ጊዜ፣ የዘፈቀደ ቀለሞችን ያሳያል፣ እንቅፋት ሲገኝ ደግሞ፣ ወደ አስቀድሞ ወደ ተወሰነ ቀለም ይቀየራል እና አቅጣጫውን ይቀልብሳል። ይህ ፕሮጀክት የESP32ን ከኢንፍራሬድ እንቅፋት መከላከያ ዳሳሽ ጋር በማጣመር ያለውን አቅም ያሳያል።

ESP32-31-flowing-light-main2

በዚህ ትምህርት ውስጥ፣ አስፈላጊዎቹን የሃርድዌር ክፍሎች፣ የሽቦ አገናኝ መመሪያዎች እና ይህን ፕሮጀክት ለማስፈጸም የሚያስፈልገውን ኮድ እንሸፍናለን። የበለጠ ምስላዊ ማብራሪያ ለማግኘት፣ ከታች ያለውን ቪዲዮ መመልከትዎን ያረጋግጡ (በቪዲዮው ላይ በ00፡00)።

ሃርድዌር ተብራርቷል

ይህ ፕሮጀክት የESP32 ማይክሮኮንትሮለር፣ የWS2812 LED ስትሪፕ እና የኢንፍራሬድ እንቅፋት መከላከያ ዳሳሽን ጨምሮ በርካታ ክፍሎችን ይፈልጋል። ESP32 አብሮ የተሰራ Wi-Fi እና ብሉቱዝ ያለው ኃይለኛ ማይክሮኮንትሮለር ነው፣ ይህም ለIoT አፕሊኬሽኖች ፍጹም ያደርገዋል። WS2812 LED ስትሪፕ እያንዳንዱን LED በተናጠል ለመቆጣጠር የሚያስችል ፕሮግራም ሊደረግ የሚችል RGB LED ስትሪፕ ነው፣ ይህም ተለዋዋጭ የመብራት ውጤቶችን እንድንፈጥር ያስችለናል።

የኢንፍራሬድ እንቅፋት መከላከያ ዳሳሽ የሚሰራው የኢንፍራሬድ ብርሃን በማስወጣት እና በአቅራቢያ ካሉ ነገሮች የሚመጡ ነጸብራቆችን በመለየት ነው። እንቅፋት ሲገኝ፣ ዳሳሹ የውጤት ሁኔታውን ይቀይራል፣ ይህም ESP32 የLED ስትሪፕን ባህሪ በመቀየር በአግባቡ ምላሽ እንዲሰጥ ያስችለዋል።

የዳታሼት ዝርዝሮች

አምራች WS2812B
የክፍል ቁጥር WS2812B
የሎጂክ/IO ቮልቴጅ 3.3 ቪ (በተለምዶ)
የአቅርቦት ቮልቴጅ 5 ቪ (በተለምዶ)
የውጤት ጅረት (በአንድ ቻናል) 20 ሚኤ (ከፍተኛ)
ከፍተኛ ጅረት (በአንድ ቻናል) 60 ሚኤ (ከፍተኛ)
የPWM ድግግሞሽ መመሪያ 400 ኸርዝ (በተለምዶ)
የግቤት ሎጂክ ገደቦች 0.3 ቪሲሲ (ከፍተኛ)፣ 0.1 ቪሲሲ (ዝቅተኛ)
የቮልቴጅ ጠብታ / RDS(on) / ሙሌት 1.2 ቪ (ከፍተኛ)
የሙቀት ገደቦች 85 ዲግሪ ሴንቲግሬድ (ከፍተኛ)
ፓኬጅ የገጽታ መጫኛ
ማስታወሻዎች / ልዩነቶች በተለያዩ ርዝመቶች እና ጥግግቶች ይገኛል

 

  • ለተሻለ አፈጻጸም የLED ስትሪፕን በ5 ቮልት ሃይል ያቅርቡ።
  • የሲግናል ትክክለኛነት ችግሮችን ለመከላከል ለዳታ ፒን ተስማሚ ተከላካይ (ሬዚስተር) ይጠቀሙ።
  • ከመጠን በላይ ሙቀትን ለማስወገድ የውጤት ጅረት ገደቦችን ይጠንቀቁ።
  • የቮልቴጅ መጨመርን ለመከላከል የሃይል አቅርቦቱን በአግባቡ ይለያዩ (ዲኮፕል ያድርጉ)።
  • የሚፈለገውን የመለየት ርቀት ለማግኘት የኢንፍራሬድ ዳሳሹን በጥንቃቄ ያስተካክሉ።

የሽቦ አገናኝ መመሪያዎች

ESP32-31-flowing-light-wiring

ክፍሎቹን ለማገናኘት፣ በኢንፍራሬድ እንቅፋት መከላከያ ዳሳሽ ይጀምሩ። የዳሳሹን የውጤት ፒን በESP32 ላይ ካለው ፒን 25 ጋር ያገናኙ። የመሃል ፒኑ ከመሬት (ግራውንድ) ጋር መገናኘት አለበት፣ እና የመጨረሻው ፒን (VCC) ከ3.3 ቮልት የሃይል ምንጭ ጋር መገናኘት አለበት።

ESP32-31-flowing-light-schematic

በመቀጠል፣ ለWS2812 LED ስትሪፕ፣ የዳታ ፒን (ብዙውን ጊዜ ቢጫ ሽቦ) በESP32 ላይ ካለው ፒን 14 ጋር ያገናኙ። ቀዩ ሽቦ ከ5 ቮልት የሃይል ምንጭ ጋር መገናኘት አለበት፣ እና ጥቁሩ ሽቦ ከመሬት ጋር መገናኘት አለበት። ልቅ የሆነ ሽቦ እንዳይኖር ሁሉንም ግንኙነቶች በአግባቡ መጠበቅዎን ያረጋግጡ።

የኮድ ምሳሌዎች እና ማብራሪያ

ይህን ፕሮጀክት የሚያስኬደው ኮድ አጭር መግለጫ እነሆ። በመጀመሪያ፣ በLED ስትሪፕ ውስጥ ያሉትን የፒክሰሎች ብዛት እና ለግንኙነት የሚያገለግለውን የዳታ ፒን እንገልፃለን፦

#define NUM_PIXELS 8
#define DATA_PIN 14

setup() ተግባር ውስጥ፣ የLED ስትሪፕን እና የኢንፍራሬድ ዳሳሹን እንጀምራለን፦

void setup() {
  pixels.begin();
  pinMode(AVOID_PIN, INPUT_PULLUP);
  uint32_t color = pixels.Color(random(256), random(256), random(256));
  pixels.fill(color);
  pixels.show();
}

loop() ተግባር ውስጥ፣ እንቅፋት መገኘቱን እንፈትሻለን እና የLED ስትሪፕን በዚሁ መሰረት እንቆጣጠራለን፦

if (avoid_value) {
    for (int i = 0; i < NUM_PIXELS; i++) {
      pixels.setPixelColor(i, color);
      pixels.show();
      pixels.setPixelColor(i, 0);
      delay(100);
    }
  } else {
    for (int i = NUM_PIXELS - 1; i >= 0; i--) {
      pixels.setPixelColor(i, color);
      pixels.show();
      pixels.setPixelColor(i, 0);
      delay(100);
    }
  }

ይህ ኮድ የLED ስትሪፕ ወደፊት በሚንቀሳቀስበት ጊዜ የዘፈቀደ ቀለሞችን እንዲያሳይ እና እንቅፋት ሲገኝ አቅጣጫውን እንዲቀይር ያስችላል። ሙሉ ኮዱ ከጽሑፉ በታች ይጫናል፣ ስለዚህ ለሁሉም ዝርዝሮች እሱን መመልከትዎን ያረጋግጡ።

ማሳያ / ምን እንደሚጠበቅ

ቅንብሩ ሲጠናቀቅ እና ኮዱ ሲሰቀል፣ የLED ስትሪፕ ወደፊት በሚንቀሳቀስበት ጊዜ የዘፈቀደ ቀለሞችን ማሳየት መጀመር አለበት። እንቅፋት ሲገኝ፣ ስትሪፑ ወደ አስቀድሞ ወደ ተወሰነ ቀለም (እንደ አረንጓዴ) ይቀየራል እና አቅጣጫውን ይቀልብሳል። እንቅፋቱ ከተወገደ፣ ስትሪፑ በዘፈቀደ ቀለሞች ወደፊት መንቀሳቀሱን ይቀጥላል። የኢንፍራሬድ ዳሳሹ የመለየት ርቀት ጥቅም ላይ በሚውለው የሃይል አቅርቦት ላይ ተመስርቶ ሊለያይ እንደሚችል ይገንዝቡ (በቪዲዮው ላይ በ10፡30)።

የቪዲዮ የጊዜ ምልክቶች

  • 00:00 መጀመሪያ
  • 2:14 የፕሮጀክቱ መግቢያ
  • 4:58 የሽቦ አያያዝ ተብራርቷል
  • 7:41 የእንቅፋት መከላከያ ዳሳሽ ማስተካከል
  • 10:03 የአርዱኖ ኮድ ተብራርቷል
  • 15:40 በአርዱኖ IDE ውስጥ የESP32 ቦርድ እና የCOM ወደብ መምረጥ
  • 17:22 ፕሮጀክት 1፡ ማሳያ
  • 18:17 የሚመለሰውን ቀለም መቀየር

ምስሎች

ESP32-31-flowing-light-main2
ESP32-31-flowing-light-main2
ESP32-31-flowing-light-main
ESP32-31-flowing-light-main
ESP32-31-flowing-light-schematic
ESP32-31-flowing-light-schematic
ESP32-31-flowing-light-wiring
ESP32-31-flowing-light-wiring
832-ESP32 Tutorial 31/55- Arduino code flowing light
ቋንቋ: C++
#include <Adafruit_NeoPixel.h>

// Set the number of pixels for the running light
#define NUM_PIXELS 8

// Set the data pin for the RGB LED strip
#define DATA_PIN 14

// Initialize the RGB LED strip object
Adafruit_NeoPixel pixels(NUM_PIXELS, DATA_PIN, NEO_GRB + NEO_KHZ800);

// Initialize the avoid sensor
#define AVOID_PIN 25

void setup() {
  // Initialize the RGB LED strip
  pixels.begin();

  // Initialize the avoid sensor
  pinMode(AVOID_PIN, INPUT_PULLUP);

  // Set the initial LED color
  uint32_t color = pixels.Color(random(256), random(256), random(256));
  pixels.fill(color);
  pixels.show();
}

void loop() {
  // Read the input from the infrared sensor
  bool avoid_value = digitalRead(AVOID_PIN);

  // Generate a random color for the current pixel
  uint32_t color = pixels.Color(random(256), random(256), random(256));

  // If no obstacle is detected
  if (avoid_value) {
    for (int i = 0; i < NUM_PIXELS; i++) {
      // Turn on the current pixel with the random color
      pixels.setPixelColor(i, color);

      // Update the RGB LED strip display
      pixels.show();

      // Turn off the current pixel
      pixels.setPixelColor(i, 0);
      delay(100);
    }
  }
  // If detects an obstacle, change the direction of the LED strip
  else {
    for (int i = NUM_PIXELS - 1; i >= 0; i--) {
      pixels.setPixelColor(i, color);
      pixels.show();
      pixels.setPixelColor(i, 0);
      delay(100);
    }
  }
}

ምንጮች እና ምንጮች

ፋይሎች📁

አንድ ፋይል የለም።