Search Code

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 ஸ்டிரிப் என்பது நிரல்படுத்தக்கூடிய RGB LED ஸ்டிரிப் ஆகும், இது ஒவ்வொரு LED ஐயும் தனித்தனியாக கட்டுப்படுத்த அனுமதிக்கிறது, இதன் மூலம் மாறும் விளக்கு விளைவுகளை உருவாக்க முடியும்.

அகச்சிவப்பு தடை தவிர்ப்பு சென்சார் அகச்சிவப்பு ஒளியை வெளியிட்டு அருகிலுள்ள பொருட்களிலிருந்து பிரதிபலிப்புகளைக் கண்டறிவதன் மூலம் செயல்படுகிறது. ஒரு தடை கண்டறியப்படும்போது, சென்சார் அதன் வெளியீட்டு நிலையை மாற்றுகிறது, இதனால் ESP32 LED ஸ்டிரிப்பின் நடத்தையை மாற்றுவதன் மூலம் அதற்கேற்ப பதிலளிக்க முடியும்.

டேட்டாஷீட் விவரங்கள்

உற்பத்தியாளர் WS2812B
பகுதி எண் WS2812B
லாஜிக்/IO மின்னழுத்தம் 3.3 V (typ.)
விநியோக மின்னழுத்தம் 5 V (typ.)
வெளியீட்டு மின்னோட்டம் (ஒரு சேனலுக்கு) 20 mA (max)
உச்ச மின்னோட்டம் (ஒரு சேனலுக்கு) 60 mA (max)
PWM அதிர்வெண் வழிகாட்டுதல் 400 Hz (typ.)
உள்ளீட்டு லாஜிக் வரம்புகள் 0.3 Vcc (high), 0.1 Vcc (low)
மின்னழுத்த வீழ்ச்சி / RDS(on) / செறிவு 1.2 V (max)
வெப்ப வரம்புகள் 85 °C (max)
பேக்கேஜ் மேற்பரப்பு பொருத்துதல்
குறிப்புகள் / மாறுபாடுகள் பல்வேறு நீளங்கள் மற்றும் அடர்த்திகளில் கிடைக்கிறது

 

  • சிறந்த செயல்திறனுக்காக LED ஸ்டிரிப்பை 5 V மின்னழுத்தத்துடன் இயக்கவும்.
  • சிக்னல் ஒருமைப்பாடு சிக்கல்களைத் தடுக்க தரவு பின்னுக்கு பொருத்தமான மின்தடையத்தைப் பயன்படுத்தவும்.
  • அதிக வெப்பமடைவதைத் தவிர்க்க வெளியீட்டு மின்னோட்ட வரம்புகளை கவனத்தில் கொள்ளவும்.
  • மின்னழுத்த ஸ்பைக்குகளைத் தடுக்க மின்வழங்கலை சரியாக டிகப்பிள் செய்யவும்.
  • விரும்பிய கண்டறிதல் வரம்பை அடைய அகச்சிவப்பு சென்சாரை கவனமாக சரிசெய்யவும்.

வயரிங் வழிமுறைகள்

ESP32-31-flowing-light-wiring

கூறுகளை வயர் செய்ய, அகச்சிவப்பு தடை தவிர்ப்பு சென்சாருடன் தொடங்கவும். சென்சாரின் வெளியீட்டு பின்னை ESP32 இன் பின் 25 உடன் இணைக்கவும். நடுத்தர பின் தரையுடன் இணைக்கப்பட வேண்டும், மற்றும் கடைசி பின் (VCC) 3.3 V மின்வழங்கலுடன் இணைக்கப்பட வேண்டும்.

ESP32-31-flowing-light-schematic

அடுத்து, WS2812 LED ஸ்டிரிப்பிற்கு, தரவு பின்னை (பொதுவாக மஞ்சள் கம்பி) ESP32 இன் பின் 14 உடன் இணைக்கவும். சிவப்பு கம்பி 5 V மின்வழங்கலுடன் இணைக்கப்பட வேண்டும், மற்றும் கருப்பு கம்பி தரையுடன் இணைக்கப்பட வேண்டும். தளர்வான வயரிங் ஏற்படுவதைத் தடுக்க அனைத்து இணைப்புகளையும் சரியாக பாதுகாப்பதை உறுதிசெய்யவும்.

குறியீடு எடுத்துக்காட்டுகள் & விளக்கம்

இந்த ப்ராஜெக்ட்டை இயக்கும் குறியீட்டின் சுருக்கமான கண்ணோட்டம் இங்கே. முதலில், 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 Arduino குறியீடு விளக்கம்
  • 15:40 Arduino 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);
    }
  }
}

வளங்கள் மற்றும் மேற்கோள்கள்

கோப்புகள்📁

கோப்புகள் கிடைக்கவில்லை.