કોડ શોધો

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 (સામાન્ય)
સપ્લાય વોલ્ટેજ 5 V (સામાન્ય)
આઉટપુટ કરંટ (પ્રતિ ચેનલ) 20 mA (મહત્તમ)
પીક કરંટ (પ્રતિ ચેનલ) 60 mA (મહત્તમ)
PWM આવર્તન માર્ગદર્શન 400 Hz (સામાન્ય)
ઇનપુટ લોજિક થ્રેશોલ્ડ 0.3 Vcc (ઉચ્ચ), 0.1 Vcc (નીચું)
વોલ્ટેજ ડ્રોપ / RDS(on) / સંતૃપ્તિ 1.2 V (મહત્તમ)
થર્મલ મર્યાદાઓ 85 °C (મહત્તમ)
પેકેજ સરફેસ માઉન્ટ
નોંધો / વેરિઅન્ટ્સ વિવિધ લંબાઈ અને ઘનતામાં ઉપલબ્ધ

 

  • શ્રેષ્ઠ કામગીરી માટે 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 આર્ડુઇનો કોડ સમજાવ્યો
  • 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);
    }
  }
}

સંસાધનો અને સંદર્ભો

ફાઇલો📁

કોઈ ફાઇલો ઉપલબ્ધ નથી.