Bincika Lambar

Koyarwar ESP32 31/55 - Aikin LED Strip tare da Guje wa Matsala | Kundin Koyon IoT na SunFounder ESP32

Koyarwar ESP32 31/55 - Aikin LED Strip tare da Guje wa Matsala | Kundin Koyon IoT na SunFounder ESP32

A cikin wannan koyawa, za mu ƙirƙiri wani aiki ta amfani da microcontroller na ESP32 da led strip na WS2812 wanda zai iya canza alkiblarsa bisa ga gano abin da ke tare da shi. Lokacin da led strip ke tafiya gaba, zai nuna launuka na bazuwar, kuma idan ya gano wani abu mai toshewa, zai canza zuwa wani launi da aka riga aka ƙayyade kuma ya juya baya. Wannan aikin yana nuna iyawar ESP32 tare da haɗin na'urar gano abubuwan da ke hana infrared.

ESP32-31-flowing-light-main2

A duk cikin wannan koyawa, za mu rufe abubuwan kayan aiki da ake buƙata, umarnin haɗin waya, da lambar da ake buƙata don kawo wannan aikin zuwa rayuwa. Don ƙarin bayani na gani, tabbatar da duba bidiyon da ke ƙasa (a cikin bidiyo a 00:00).

Bayanin Kayan Aiki

Wannan aikin yana buƙatar abubuwa da yawa, ciki har da microcontroller na ESP32, led strip na WS2812, da na'urar gano abubuwan da ke hana infrared. ESP32 microcontroller ne mai ƙarfi wanda ke da Wi-Fi da Bluetooth na ciki, yana sa ya dace da aikace-aikacen IoT. Led strip na WS2812 led strip ne na RGB mai shirye-shirye wanda ke ba da damar sarrafa kowane LED daban, yana ba mu damar ƙirƙirar tasirin haske mai ƙarfi.

Na'urar gano abubuwan da ke hana infrared tana aiki ta hanyar fitar da hasken infrared da gano hasken da ke nunawa daga abubuwan da ke kusa. Lokacin da aka gano wani abu mai toshewa, na'urar tana canza yanayin fitarwa, yana ba da damar ESP32 ya amsa daidai da haka ta hanyar canza halayen led strip.

Cikakkun Bayanai na Datasheet

Manufacturer WS2812B
Part number WS2812B
Logic/IO voltage 3.3 V (typ.)
Supply voltage 5 V (typ.)
Output current (per channel) 20 mA (max)
Peak current (per channel) 60 mA (max)
PWM frequency guidance 400 Hz (typ.)
Input logic thresholds 0.3 Vcc (high), 0.1 Vcc (low)
Voltage drop / RDS(on) / saturation 1.2 V (max)
Thermal limits 85 °C (max)
Package Surface mount
Notes / variants Available in various lengths and densities

 

  • Tabbatar da cewa an kunna led strip da 5 V don ingantaccen aiki.
  • Yi amfani da resistor mai dacewa don fil ɗin data don hana matsalolin ingancin sigina.
  • Yi hankali da iyakokin fitarwa na yanzu don guje wa zafi mai yawa.
  • Yi decouple na'urar samar da wutar lantarki da kyau don hana hawan wutar lantarki.
  • Daidaita na'urar infrared a hankali don cimma kewayon gano da ake so.

Umarnin Haɗin Waya

ESP32-31-flowing-light-wiring

Don haɗa abubuwan, fara da na'urar gano abubuwan da ke hana infrared. Haɗa fil ɗin fitarwa na na'urar zuwa fil 25 akan ESP32. Fil ɗin tsakiya ya kamata a haɗa shi da ƙasa, kuma fil ɗin ƙarshe (VCC) ya kamata a haɗa shi da tushen wutar lantarki na 3.3 V.

ESP32-31-flowing-light-schematic

Na gaba, don led strip na WS2812, haɗa fil ɗin data (yawanci waya mai rawaya) zuwa fil 14 akan ESP32. Waya mai ja ya kamata a haɗa shi da tushen wutar lantarki na 5 V, kuma waya mai baƙi ya kamata a haɗa shi da ƙasa. Tabbatar da amintar da duk haɗin da kyau don hana wayoyi marasa ƙarfi.

Misalan Lamba & Bayani

Anan akwai taƙaitaccen bayani game da lambar da ke gudanar da wannan aikin. Da farko, muna ayyana adadin pixels a cikin led strip da fil ɗin data da ake amfani da shi don sadarwa:

#define NUM_PIXELS 8
#define DATA_PIN 14

A cikin aikin setup(), muna fara led strip da na'urar infrared:

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();
}

A cikin aikin loop(), muna duba idan an gano wani abu mai toshewa kuma mu sarrafa led strip daidai da haka:

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

Wannan lambar tana ba da damar led strip ya nuna launuka na bazuwar lokacin da yake tafiya gaba kuma ya canza alkibla lokacin da aka gano wani abu mai toshewa. Cikakken lambar yana sauka a ƙasan labarin, don haka tabbatar da duba shi don duk cikakkun bayanai.

Nuni / Abin da za a Yi Tsammani

Lokacin da aka gama saitin kuma aka ɗora lambar, led strip ya kamata ya fara nuna launuka na bazuwar yayin da yake tafiya gaba. Lokacin da aka gano wani abu mai toshewa, strip zai canza zuwa wani launi da aka riga aka ƙayyade (kamar kore) kuma ya juya baya. Idan an cire abin da ke toshewa, strip zai ci gaba da tafiya gaba da launuka na bazuwar. Yi hankali cewa kewayon gano na'urar infrared na iya bambanta dangane da tushen wutar lantarki da ake amfani da shi (a cikin bidiyo a 10:30).

Lokutan Bidiyo

  • 00:00 Fara
  • 2:14 Gabatarwa ga aikin
  • 4:58 Bayanin wayoyi
  • 7:41 Daidaita Sensor na Guje wa Cikas
  • 10:03 Bayanin lambar Arduino
  • 15:40 Zaɓin allo na ESP32 da tashar COM a cikin Arduino IDE
  • 17:22 Aiki na 1: Nunawa
  • 18:17 Canza launin da ke dawowa

Hotuna

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

Albarkatun da kuma shafukan da za a duba

Fayiloli📁

Babu fayiloli da ake da su.