Èkọ́ ESP32 31/55 - Iṣẹ́-ọwọ́ LED Strip pẹ̀lú Ìbáṣepọ̀ Ìdènà | SunFounder's ESP32 IoT Learning kit
Nínú ẹ̀kọ́ yìí, a óò ṣẹ̀dá iṣẹ́-ọwọ́ kan ní lílo microcontroller ESP32 àti okun LED WS2812 tí ó lè yí ìtọ́sọ́nà rẹ̀ padà nípa ìṣàwárí ìdíwọ́. Nígbà tí okun LED bá ń lọ síwájú, yóò fi àwọn àwọ̀ àrìn-àrìn hàn, àti nígbà tí ó bá ṣàwárí ìdíwọ́, yóò yí padà sí àwọ̀ tí a ti yàn tẹ́lẹ̀ kí ó sì yí ìtọ́sọ́nà rẹ̀ padà. Iṣẹ́-ọwọ́ yìí ń fi agbára ESP32 hàn ní ìpapọ̀ pẹ̀lú sẹ́nsò ìdíwọ́ ìkọ̀sẹ̀ aláwọ̀-àkànṣe.
Nínú gbogbo ẹ̀kọ́ yìí, a óò ṣàlàyé àwọn ohun èlò tí a nílò, àwọn ìtọ́sọ́nà ìsopọ̀, àti kóòdù tí a nílò láti mú iṣẹ́-ọwọ́ yìí wá sí ìwàláàyè. Fún àlàyé tí ó ṣe pàtàkì nípa ojú, rí i dájú pé o wo fídíò tí ó wà nísàlẹ̀ (nínú fídíò ní 00:00).
Àlàyé Ohun Èlò
Iṣẹ́-ọwọ́ yìí nílò ọ̀pọ̀lọpọ̀ àwọn ohun èlò, pẹ̀lú microcontroller ESP32, okun LED WS2812, àti sẹ́nsò ìdíwọ́ ìkọ̀sẹ̀ aláwọ̀-àkànṣe. ESP32 jẹ́ microcontroller alágbára tí ó ní Wi-Fi àti Bluetooth nínú ara rẹ̀, tí ó mú un dára fún àwọn ohun èlò IoT. Okun LED WS2812 jẹ́ okun LED RGB tí a lè ṣètò tí ó gbà wá láàyè láti ṣàkóso LED kọ̀ọ̀kan lọ́tọ̀, tí ó jẹ́ kí a lè ṣẹ̀dá àwọn ipa ìmọ́lẹ̀ tí ń yí padà.
Sẹ́nsò ìdíwọ́ ìkọ̀sẹ̀ aláwọ̀-àkànṣe ń ṣiṣẹ́ nípa gbígbé ìmọ́lẹ̀ aláwọ̀-àkànṣe jáde àti ṣíṣàwárí ìtànná tí ó ń ṣe àfihàn láti àwọn ohun tí ó wà nítòsí. Nígbà tí a bá ṣàwárí ìdíwọ́, sẹ́nsò yìí yóò yí ipo ìjàde rẹ̀ padà, tí ó gbà ESP32 láàyè láti fèsì ní ìbámu pẹ̀lú rẹ̀ nípa yíyí ìwà okun LED padà.
Àwọn Àlàyé Datasheet
| Olùṣe | WS2812B |
|---|---|
| Nọ́mbà apá | WS2812B |
| Folti Logic/IO | 3.3 V (typ.) |
| Folti ìpèsè | 5 V (typ.) |
| Ìwọ̀n ìjàde (fún ikanni) | 20 mA (max) |
| Ìwọ̀n gíga (fún ikanni) | 60 mA (max) |
| Ìtọ́sọ́nà ìgbohùnsáfẹ́fẹ́ PWM | 400 Hz (typ.) |
| Àwọn ìpele ìṣàkóso ìkanni | 0.3 Vcc (gíga), 0.1 Vcc (rẹ̀lẹ̀) |
| Ìdìndì folti / RDS(on) / ìkún | 1.2 V (max) |
| Àwọn ìwọ̀n ìgbóná | 85 °C (max) |
| Àpótí | Ìgbékalẹ̀ ojú |
| Àwọn àkíyèsí / àwọn ìyàtọ̀ | Wà ní ọ̀pọ̀lọpọ̀ àwọn gígùn àti ìwọ̀n |
- Rí i dájú pé a fi 5 V ṣe ìpèsè okun LED fún iṣẹ́ tí ó dára jùlọ.
- Lo resistor tí ó yẹ fún pin data láti ṣèdíwọ́ fún àwọn ìṣòro ìmúdájú ìfiranṣẹ́.
- Ṣọ́ra fún àwọn ìwọ̀n ìjàde tí ó lè kọjá ààyè láti yẹra fún ìgbóná púpọ̀.
- Ṣe ìyọ̀tọ̀ ìpèsè agbára dáradára láti ṣèdíwọ́ fún àwọn ìgbìmọ̀ folti.
- Ṣàtúnṣe sẹ́nsò aláwọ̀-àkànṣe ní ìṣọ́ra láti gba ìwọ̀n ìṣàwárí tí ó fẹ́.
Àwọn Ìtọ́sọ́nà Ìsopọ̀

Láti sopọ̀ àwọn ohun èlò, bẹ̀rẹ̀ pẹ̀lú sẹ́nsò ìdíwọ́ ìkọ̀sẹ̀ aláwọ̀-àkànṣe. Sopọ̀ pin ìjàde sẹ́nsò náà sí pin 25 lórí ESP32. Pin àárín yẹ̀ kí a sopọ̀ sí ilẹ̀, àti pin tí ó kẹ́yìn (VCC) yẹ̀ kí a sopọ̀ sí orísun agbára 3.3 V.
Ní àtẹ̀yìnwá, fún okun LED WS2812, sopọ̀ pin data (ní ọ̀pọ̀ ìgbà ní okun aláwọ̀-ofeefee) sí pin 14 lórí ESP32. Okun pupa yẹ̀ kí a sopọ̀ sí orísun agbára 5 V, àti okun dúdú yẹ̀ kí a sopọ̀ sí ilẹ̀. Rí i dájú pé o ti sopọ̀ gbogbo àwọn ìsopọ̀ dáradára láti yẹra fún ìsopọ̀ tí ó tú.
Àwọn Àpẹẹrẹ Kóòdù & Ìṣàlàyé
Èyí ni àkópọ̀ kúkúrú ti kóòdù tí ń ṣiṣẹ́ iṣẹ́-ọwọ́ yìí. Ní àkọ́kọ́, a ṣàlàyé nọ́mbà àwọn píksẹ̀lì nínú okun LED àti pin data tí a lò fún ìbánisọ̀rọ̀:
#define NUM_PIXELS 8
#define DATA_PIN 14
Nínú iṣẹ́ setup(), a bẹ̀rẹ̀ okun LED àti sẹ́nsò aláwọ̀-àkànṣe:
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();
}
Nínú iṣẹ́ loop(), a ṣàyẹ̀wò bí a bá ṣàwárí ìdíwọ́ tàbí kò sí, àti a ṣàkóso okun LED ní ìbámu:
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);
}
}
Kóòdù yìí gbà okun LED láàyè láti fi àwọn àwọ̀ àrìn-àrìn hàn nígbà tí ó ń lọ síwájú àti láti yí ìtọ́sọ́nà padà nígbà tí a bá ṣàwárí ìdíwọ́. Kóòdù kíkún wà nísàlẹ̀ àpilẹ̀kọ, nítorí náà rí i dájú pé o wo ọ́ fún gbogbo àwọn àlàyé.
Ìṣàfihàn / Ohun Tí O Lè Retí
Nígbà tí ìṣètò bá parí àti tí a ti gbé kóòdù sílẹ̀, okun LED yóò bẹ̀rẹ̀ sí ní fi àwọn àwọ̀ àrìn-àrìn hàn nígbà tí ó ń lọ síwájú. Nígbà tí a bá ṣàwárí ìdíwọ́, okun yóò yí padà sí àwọ̀ tí a ti yàn tẹ́lẹ̀ (bíi aláwọ̀-ewé) kí ó sì yí ìtọ́sọ́nà rẹ̀ padà. Bí a bá yọ ìdíwọ́ kúrò, okun yóò tún bẹ̀rẹ̀ sí ní lọ síwájú pẹ̀lú àwọn àwọ̀ àrìn-àrìn. Ṣọ́ra, ìwọ̀n ìṣàwárí sẹ́nsò aláwọ̀-àkànṣe lè yàtọ̀ nípa orísun agbára tí a lò (nínú fídíò ní 10:30).
Àwọn Àkókò Fídíò
- 00:00 Ibẹ̀rẹ̀
- 2:14 Ìfihàn sí iṣẹ́-ìdánilẹ́kọ̀ọ́
- 4:58 Àlàyé nípa ìsopọ̀ oníná
- 7:41 Ṣíṣàtúnṣe Sensọ Ìyàgé Ìdíwọ́
- 10:03 Àlàyé kóòdù Arduino
- 15:40 Yíyàn bọ́ọ̀dù ESP32 àti ibùdó COM nínú Arduino IDE
- 17:22 Iṣẹ́-ìdánilẹ́kọ̀ọ́ 1: Ìfihàn
- 18:17 Yíyí àwọ̀ tí ń padà
#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
Orisun & itọkasi
-
Iwe-ẹriESP32 Tutorial 31/55- SunFounder doc page for flowing lightdocs.sunfounder.com
Fáìlìs📁
Ko si awọn faili ti o wa.