Tutorial ESP32 31/55 - Mashruuc LED Strip oo leh Ka Fogaanshaha Caqabadda | Qalabka Barashada ESP32 IoT ee SunFounder
Cashigarkani, waxaan ku samayn doonaa mashruuc adoo isticmaalaya kontoroolka ESP32 iyo xariijinta LED-ga WS2812 kaas oo bedeli kara jihadiisa iyadoo ku saleysan ogaanshaha caqabadda. Marka xariijinta LED-ga ay dhaqaaqeyso horay, waxay soo bandhigi doontaa midabo random ah, markay ogaato caqabadna, waxay u beddeli doontaa midab go'an oo dib uga noqon doonta jihada. Mashruucani wuxuu muujinayaa awoodaha ESP32 isagoo la isticmaalaya dareeme ka hortagga caqabadaha infrared-ka ah.
Inta lagu guda jiro casharkan, waxaan dabooli doonaa qaybaha qalabka ee lagama maarmaanka ah, tilmaamaha fiilada, iyo koodhka loo baahan yahay si loo soo nooleeyo mashruucan. Si aad u hesho sharaxaad muuqaal ah oo dheeri ah, hubi fiidiyowga hoos ku xiran (fiidiyowga 00:00).
Qalabka La Sharxay
Mashruucani wuxuu u baahan yahay dhowr qaybood, oo ay ku jiraan kontoroolka ESP32, xariijinta LED-ga WS2812, iyo dareeme ka hortagga caqabadaha infrared-ka ah. ESP32 waa kontorool awood badan oo leh Wi-Fi iyo Bluetooth ku dhex dhisan, taasoo ka dhigaysa mid ku habboon codsiyada IoT. Xariijinta LED-ga WS2812 waa xariijin RGB LED ah oo la barnaamijin karo taasoo u oggolaanaysa kontoroolka shaqsiyeed ee LED kasta, taasoo noo sahlaysa inaan abuurno saameynyo iftiin oo firfircoon.
Dareemaha ka hortagga caqabadaha infrared-ka ah wuxuu u shaqeeyaa isagoo sii daaya iftiin infrared ah oo ogaanaya milicsiga walxaha ku dhow. Marka caqabad la ogaado, dareemuhu wuxuu beddelaa xaaladda wax soo saarkiisa, taasoo u oggolaanaysa ESP32 inuu si ku habboon uga jawaabo isagoo beddelaya hab-dhaqanka xariijinta LED-ga.
Faahfaahinta Xogta
| Soo saaraha | WS2812B |
|---|---|
| Nambarka qaybta | WS2812B |
| Danabka Logic/IO | 3.3 V (caadi ahaan) |
| Danabka sahayda | 5 V (caadi ahaan) |
| Korontada wax soo saarka (kanal kasta) | 20 mA (ugu badnaan) |
| Korontada ugu sarreysa (kanal kasta) | 60 mA (ugu badnaan) |
| Hagaha soo noqnoqoshada PWM | 400 Hz (caadi ahaan) |
| Heerarka caqabadaha gelinta | 0.3 Vcc (sare), 0.1 Vcc (hoose) |
| Hoos u dhaca danabka / RDS(on) / dheregsanaanta | 1.2 V (ugu badnaan) |
| Xadka kulaylka | 85 °C (ugu badnaan) |
| Baakad | Ku rakibidda dusha sare |
| Qoraallo / noocyo kale | Waxaa laga heli karaa dherer iyo cufnaan kala duwan |
- Hubi in xariijinta LED-ga lagu shideeyo 5 V si loo helo waxqabad wanaagsan.
- Isticmaal resistor ku habboon pin-ka xogta si looga hortago dhibaatooyinka isku xirnaanta calaamadda.
- Ka digtoonow xadka korontada wax soo saarka si looga hortago kulaylka xad dhaafka ah.
- Si fiican u kala saar sahayda korontada si looga hortago kororka danabka degdegga ah.
- Si taxaddar leh u hagaaji dareemaha infrared-ka si aad u hesho kala fogaan ogaansho ee aad rabto.
Tilmaamaha Fiilada

Si aad u xirto qaybaha, ka bilow dareemaha ka hortagga caqabadaha infrared-ka ah. Ku xir pin-ka wax soo saarka ee dareemaha pin-ka 25 ee ESP32. Pin-ka dhexe waa in lagu xiraa dhulka, pin-ka ugu dambeeyana (VCC) waa in lagu xiraa ilo koronto 3.3 V ah.
Marka xigta, xariijinta LED-ga WS2812, ku xir pin-ka xogta (badanaa fiilada jaalaha ah) pin-ka 14 ee ESP32. Fiilada casaanka ah waa in lagu xiraa ilo koronto 5 V ah, fiilada madowgana waa in lagu xiraa dhulka. Hubi inaad si fiican u xirto dhammaan isku xirnaanta si looga hortago fiilooyin dabacsan.
Tusaalooyinka Koodhka & Sharaxaad
Halkan waxaa ah dulmar kooban oo ku saabsan koodhka shaqeeya mashruucan. Marka hore, waxaan qeexaynaa tirada pixels-ka ee xariijinta LED-ga iyo pin-ka xogta ee loo isticmaalo isgaarsiinta:
#define NUM_PIXELS 8
#define DATA_PIN 14
Gudaha shaqada setup(), waxaan bilaabaynaa xariijinta LED-ga iyo dareemaha infrared-ka:
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();
}
Gudaha shaqada loop(), waxaan hubinaynaa haddii caqabad la ogaado oo aan xakameynaynaa xariijinta LED-ga si ku habboon:
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);
}
}
Koodhkani wuxuu u oggolaanayaa xariijinta LED-ga inay soo bandhigto midabo random ah markay dhaqaaqeyso horay oo ay beddesho jihada marka caqabad la ogaado. Koodhka buuxa ayaa hoos ku soo dega maqaalka, marka hubi inaad eegto faahfaahinta oo dhan.
Muuujin / Waxa Laga Filan Karo
Marka qalabku dhammaystiranyahay oo koodhka la soo geliyo, xariijinta LED-ga waa inay bilaabataa inay soo bandhigto midabo random ah iyadoo dhaqaaqeysa horay. Marka caqabad la ogaado, xariijintu waxay u beddeli doontaa midab go'an (sida cagaar) oo dib uga noqon doonta jihada. Haddii caqabadda la qaado, xariijintu waxay dib u bilaabi doontaa dhaqaaqista horay iyadoo leh midabo random ah. Ogow in kala fogaan ogaanshaha dareemaha infrared-ka ay ku kala duwanaan karto iyadoo ku saleysan sahayda korontada la isticmaalayo (fiidiyowga 10:30).
Waqtiyada Fiidiyowga
- 00:00 Bilow
- 2:14 Hordhaca mashruuca
- 4:58 Sharaxa fiilooyinka
- 7:41 Hagaajinta Sensor-ka Ka Hortagga Carqaladaha
- 10:03 Sharaxa koodka Arduino
- 15:40 Doorashada guddiga ESP32 iyo dekedda COM ee Arduino IDE
- 17:22 Mashruuca 1: Bandejiga
- 18:17 Beddelka midabka soo noqoshada
#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);
}
}
}
Common Course Links
Common Course Files
Kheyraadka & Tixraacyada
-
DukumentiESP32 Tutorial 31/55- SunFounder doc page for flowing lightdocs.sunfounder.com
Faylasha📁
Fayl la'aan.