Search Code

Èkọ́ ESP32 31/55 - Iṣẹ́-ọwọ́ LED Strip pẹ̀lú Ìbáṣepọ̀ Ìdènà | SunFounder's ESP32 IoT Learning kit

È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.

ESP32-31-flowing-light-main2

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ọ̀

ESP32-31-flowing-light-wiring

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.

ESP32-31-flowing-light-schematic

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à

Aworan

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
Ede: 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);
    }
  }
}

Orisun & itọkasi

Fáìlìs📁

Ko si awọn faili ti o wa.