ESP32 ટ્યુટોરિયલ 12/55 - SunFounder ના ESP32 IoT લર્નિંગ કિટ સાથે WS2812 RGB સ્ટ્રીપ 4 પ્રોજેક્ટ
આ ટ્યુટોરિયલમાં, આપણે ESP32 માઇક્રોકંટ્રોલરનો ઉપયોગ કરીને WS2812 LED સ્ટ્રીપને કેવી રીતે નિયંત્રિત કરવી તે શોધીશું. આ પ્રોજેક્ટ તમને વિવિધ રંગો બનાવવા અને દરેક LED ને વ્યક્તિગત રીતે નિયંત્રિત કરવાની મંજૂરી આપે છે, જે પ્રોગ્રામિંગ અને ઇલેક્ટ્રોનિક્સ વિશે શીખવાની એક મનોરંજક અને દૃષ્ટિથી આકર્ષક રીત પ્રદાન કરે છે. આ ટ્યુટોરિયલના અંત સુધીમાં, તમારી પાસે એક સંપૂર્ણ કાર્યક્ષમ સેટઅપ હશે જે ગતિશીલ રીતે રંગો અને પેટર્ન બદલી શકે છે.
SunFounder ના ESP32 માઇક્રોકંટ્રોલરનો ઉપયોગ કરીને, જેમાં બિલ્ટ-ઇન Wi-Fi અને બ્લૂટૂથ ક્ષમતાઓ છે, આપણે સરળતાથી WS2812 RGB LED સ્ટ્રીપને કનેક્ટ અને નિયંત્રિત કરી શકીએ છીએ. આ LED સ્ટ્રીપની લવચીકતા સર્જનાત્મક એપ્લિકેશનો માટે પરવાનગી આપે છે, પછી ભલે તે સુશોભન લાઇટિંગ માટે હોય કે શૈક્ષણિક પ્રોજેક્ટ્સ માટે. સામેલ પગલાંઓની વધુ સારી સમજ માટે, તમે વિડિઓ (વિડિઓમાં 00:00 પર) નો સંદર્ભ લઈ શકો છો.
હાર્ડવેર સમજાવ્યું
આ પ્રોજેક્ટના મુખ્ય ઘટકોમાં ESP32 માઇક્રોકંટ્રોલર અને WS2812 LED સ્ટ્રીપ શામેલ છે. ESP32 એક શક્તિશાળી માઇક્રોકંટ્રોલર છે જે Arduino જેવા કાર્યો કરી શકે છે, પરંતુ વધારાના કનેક્ટિવિટી વિકલ્પો સાથે. તેની પાસે સમૃદ્ધ સુવિધાઓ છે જે તેને ક્લાઉડ સાથે કનેક્ટ થવા દે છે, જે રિમોટ કંટ્રોલ અને ડેટા લોગિંગ માટે પરવાનગી આપે છે.
WS2812 LED સ્ટ્રીપમાં વ્યક્તિગત રીતે સંબોધિત RGB LEDs હોય છે, જેનો અર્થ છે કે દરેક LED ને અલગ રંગો દર્શાવવા માટે નિયંત્રિત કરી શકાય છે. સ્ટ્રીપ સિંગલ-વાયર પ્રોટોકોલ પર કાર્ય કરે છે, જે સિગ્નલ ગુણવત્તા ગુમાવ્યા વિના બહુવિધ LEDs ને સાંકળવાની મંજૂરી આપે છે. દરેક LED માં બિલ્ટ-ઇન ડ્રાઇવર હોય છે જે ઇનપુટ સિગ્નલ લે છે અને સાંકળમાં આગલા LED માટે તેને વિસ્તૃત કરે છે.
ડેટાશીટ વિગતો
| ઉત્પાદક | Worldsemi |
|---|---|
| ભાગ નંબર | WS2812 |
| લોજિક/IO વોલ્ટેજ | 3.5–5.3 V |
| સપ્લાય વોલ્ટેજ | 5 V |
| આઉટપુટ કરંટ (પ્રતિ ચેનલ) | 20 mA મહત્તમ |
| પીક કરંટ (પ્રતિ ચેનલ) | 60 mA મહત્તમ |
| PWM આવર્તન માર્ગદર્શન | 400 Hz |
| ઇનપુટ લોજિક થ્રેશોલ્ડ | 0.3 x VDD થી 0.7 x VDD |
| વોલ્ટેજ ડ્રોપ / RDS(on) / સેચ્યુરેશન | 0.5 V મહત્તમ |
| થર્મલ મર્યાદાઓ | -25 થી 80 °C |
| પેકેજ | 5050 |
| નોંધો / વેરિઅન્ટ્સ | લાંબી સ્ટ્રીપ્સ માટે સાંકળી શકાય છે |
- LED ને નુકસાન ટાળવા માટે યોગ્ય પાવર સપ્લાય (5 V) ની ખાતરી કરો.
- વોલ્ટેજ સ્પાઇક્સને સરળ બનાવવા માટે પાવર સપ્લાય ટર્મિનલ્સ પર કેપેસિટર (100 µF) નો ઉપયોગ કરો.
- સિગ્નલ ડિગ્રેડેશન ઘટાડવા માટે ડેટા વાયર ટૂંકા રાખો.
- LED તાપમાન પ્રત્યે સાવચેત રહો; યોગ્ય ગરમી વિસર્જનની ખાતરી કરો.
- પાવર અને ગ્રાઉન્ડ કનેક્ટ કરતી વખતે યોગ્ય ધ્રુવીયતાનું અવલોકન કરો.
- લાંબી સ્ટ્રીપ્સનો ઉપયોગ કરતી વખતે ડેટા લાઇન પર પુલ-અપ રેઝિસ્ટરનો ઉપયોગ કરો.
વાયરિંગ સૂચનાઓ

WS2812 LED સ્ટ્રીપને ESP32 સાથે વાયર કરવા માટે, પાવર સપ્લાય કનેક્ટ કરીને શરૂ કરો. LED સ્ટ્રીપમાંથી +5V વાયર ESP32 પરના 5V પિન સાથે કનેક્ટ થવો જોઈએ, અને ગ્રાઉન્ડ (GND) વાયર ESP32 પરના GND પિનમાંથી એક સાથે કનેક્ટ થવો જોઈએ.
આગળ, LED સ્ટ્રીપમાંથી ડેટા ઇનપુટ વાયરને ESP32 પર પિન 14 સાથે કનેક્ટ કરો. યોગ્ય ડેટા ટ્રાન્સમિશનની ખાતરી કરવા માટે કનેક્શન સુરક્ષિત છે તેની ખાતરી કરો. જો તમે બહુવિધ સ્ટ્રીપ્સ અથવા લાંબા અંતરનો ઉપયોગ કરી રહ્યા છો, તો સિગ્નલ અખંડિતતા સુનિશ્ચિત કરવા માટે લેવલ શિફ્ટરનો ઉપયોગ કરવાનું વિચારો. આ સેટઅપ તમને ESP32 થી સીધી LED સ્ટ્રીપને નિયંત્રિત કરવાની મંજૂરી આપશે.
કોડ ઉદાહરણો અને વોકથ્રુ
કોડ WS2812 LED સ્ટ્રીપને નિયંત્રિત કરવા માટે Adafruit NeoPixel લાઇબ્રેરીનો ઉપયોગ કરે છે. તે LED સ્ટ્રીપને પ્રારંભ કરીને અને પ્રારંભિક રંગ કાળો સેટ કરીને શરૂ થાય છે. કોડમાં મુખ્ય ઓળખકર્તાઓમાં LED_PIN શામેલ છે, જે LED સ્ટ્રીપની ડેટા લાઇન સાથે જોડાયેલ પિનને વ્યાખ્યાયિત કરે છે, અને NUM_LEDS, જે સ્ટ્રીપમાં LEDs ની સંખ્યા સ્પષ્ટ કરે છે.
#include // Adafruit NeoPixel લાઇબ્રેરી શામેલ કરો
#define LED_PIN 14 // NeoPixel LED સ્ટ્રીપ
#define NUM_LEDS 8 // LEDs ની સંખ્યા
સેટઅપ ફંક્શનમાં, સ્ટ્રીપને strip.begin() નો ઉપયોગ કરીને પ્રારંભ કરવામાં આવે છે, અને પ્રારંભિક રંગ strip.show() સાથે કાળો સેટ કરવામાં આવે છે. આ પ્રોગ્રામ ચાલે ત્યારે રંગ ફેરફારો માટે સ્ટ્રીપને તૈયાર કરે છે.
void setup() {
strip.begin(); // NeoPixel સ્ટ્રીપ પ્રારંભ કરો
strip.show(); // પ્રારંભિક રંગ કાળો સેટ કરો
}
પ્રોગ્રામનો મુખ્ય લૂપ બે for લૂપ્સ ધરાવે છે. પ્રથમ લૂપ દરેક LED ને તેનો રંગ સેટ કરીને અને સ્ટ્રીપ અપડેટ કરીને એક પછી એક ચાલુ કરે છે. બીજો લૂપ તે જ રીતે દરેક LED ને બંધ કરે છે. આ એક સરળ પરંતુ અસરકારક લાઇટ એનિમેશન બનાવે છે.
void loop() {
// LEDs એક પછી એક ચાલુ કરો
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 100, 45, 0); // i-th LED નો રંગ લાલ સેટ કરો
strip.show(); // નવા રંગો સાથે LED સ્ટ્રીપ અપડેટ કરો
delay(100); // 100 મિલિસેકન્ડ રાહ જુઓ
}
// LEDs એક પછી એક બંધ કરો
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 0, 0, 0); // i-th LED નો રંગ કાળો સેટ કરો (તેને બંધ કરો)
strip.show(); // નવા રંગો સાથે LED સ્ટ્રીપ અપડેટ કરો
delay(100); // 100 મિલિસેકન્ડ રાહ જુઓ
}
}
વિવિધ રંગ અસરો અને એનિમેશન કેવી રીતે અમલમાં મૂકવું તેની વધુ વિગતો માટે લેખની નીચે સંપૂર્ણ કોડ લોડિંગ જુઓ.
પ્રદર્શન / શું અપેક્ષા રાખવી
એકવાર તમે વાયરિંગ પૂર્ણ કરી લો અને કોડ અપલોડ કરી લો, ત્યારે તમે સ્ટ્રીપ પરના એલઈડીને એક પછી એક નિર્દિષ્ટ રંગમાં પ્રકાશિત થતા જોશો, ત્યારબાદ તે જ ક્રમમાં તે બંધ થશે. આ એક "રનિંગ લાઇટ" અસર બનાવે છે. જો એલઈડી અપેક્ષા મુજબ પ્રકાશિત ન થાય, તો તમારા વાયરિંગ જોડાણો બે વાર તપાસો અને ખાતરી કરો કે પાવર સપ્લાય પર્યાપ્ત છે. ઉપરાંત, ચકાસો કે કોડમાં યોગ્ય પિન વ્યાખ્યાયિત કરવામાં આવી છે (વિડિયોમાં 12:30 પર).
વિડિયો ટાઇમસ્ટેમ્પ્સ
- 00:00 શરૂઆત
- 1:40 WS2812 એલઈડીનો પરિચય
- 7:25 પ્રોજેક્ટ દસ્તાવેજીકરણ પૃષ્ઠ
- 9:16 RGB રંગ સમજાવ્યો
- 13:16 વાયરિંગ સમજાવ્યું
- 13:48 આર્ડુઇનો કોડ-1 સમજાવ્યો
- 19:03 આર્ડુઇનો IDE પર ESP32 બોર્ડ અને પોર્ટ પસંદ કરવું
- 20:45 કોડ-1 ડેમો
- 22:00 વ્યક્તિગત એલઈડીને નિયંત્રિત કરવું
- 24:16 વોકિંગ લાઇટ એલઈડી
- 25:41 આગળ અને પાછળની લાઇટ
#include <Adafruit_NeoPixel.h> // Include the Adafruit NeoPixel library
#define LED_PIN 14 // NeoPixel LED strip
#define NUM_LEDS 8 // Number of LEDs
// Create an instance of the Adafruit_NeoPixel class
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin(); // Initialize the NeoPixel strip
strip.show(); // Set initial color to black
}
void loop() {
// Turn on LEDs one by one
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 100, 45, 0); // Set the color of the i-th LED to red
strip.show(); // Update the LED strip with the new colors
delay(100); // Wait for 100 milliseconds
}
// Turn off LEDs one by one
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 0, 0, 0); // Set the color of the i-th LED to black (turn it off)
strip.show(); // Update the LED strip with the new colors
delay(100); // Wait for 100 milliseconds
}
}
Common Course Links
Common Course Files
Things you might need
-
Amazon
-
eBay
-
AliExpressPurchase WS2812 LED stripe from AliExpresss.click.aliexpress.com
-
AliExpressPurchase WS2812 LED stripe from AliExpress-2s.click.aliexpress.com
-
BanggoodPurchase WS2812 LED stripe from Banggoodbanggood.com
Resources & references
No resources yet.
Files📁
No files available.