ESP32 Eğitimi 31/55 - Engel Algılama ile LED Şerit Projesi | SunFounder'ın ESP32 IoT Öğrenme Kiti
Bu eğitimde, bir ESP32 mikrodenetleyici ve WS2812 LED şeridi kullanarak, engel algılamaya göre yönünü değiştirebilen bir proje oluşturacağız. LED şeridi ileri doğru hareket ederken rastgele renkler gösterecek ve bir engel algıladığında önceden belirlenmiş bir renge geçip yönünü tersine çevirecektir. Bu proje, ESP32'nin kızılötesi engelden kaçınma sensörüyle birlikte yeteneklerini sergilemektedir.
Bu eğitim boyunca gerekli donanım bileşenlerini, bağlantı talimatlarını ve bu projeyi hayata geçirmek için gereken kodu ele alacağız. Daha görsel bir açıklama için aşağıda bağlantısı verilen videoyu mutlaka izleyin (videoda 00:00'da).
Donanım Açıklaması
Bu proje, ESP32 mikrodenetleyici, bir WS2812 LED şeridi ve bir kızılötesi engelden kaçınma sensörü dahil olmak üzere birkaç bileşen gerektirir. ESP32, yerleşik Wi-Fi ve Bluetooth özelliklerine sahip güçlü bir mikrodenetleyicidir ve bu da onu IoT uygulamaları için mükemmel kılar. WS2812 LED şeridi, her LED'in ayrı ayrı kontrol edilmesine olanak tanıyan ve dinamik aydınlatma efektleri oluşturmamızı sağlayan programlanabilir bir RGB LED şerididir.
Kızılötesi engelden kaçınma sensörü, kızılötesi ışık yayarak ve yakındaki nesnelerden gelen yansımaları algılayarak çalışır. Bir engel algılandığında sensör çıkış durumunu değiştirir ve ESP32'nin LED şeridinin davranışını değiştirerek buna göre yanıt vermesini sağlar.
Veri Sayfası Detayları
| Üretici | WS2812B |
|---|---|
| Parça numarası | WS2812B |
| Mantık/IO voltajı | 3,3 V (tipik) |
| Besleme voltajı | 5 V (tipik) |
| Çıkış akımı (kanal başına) | 20 mA (maks) |
| Tepe akımı (kanal başına) | 60 mA (maks) |
| PWM frekansı kılavuzu | 400 Hz (tipik) |
| Giriş mantık eşikleri | 0,3 Vcc (yüksek), 0,1 Vcc (düşük) |
| Gerilim düşümü / RDS(on) / doyum | 1,2 V (maks) |
| Termal limitler | 85 °C (maks) |
| Paket | Yüzey montaj |
| Notlar / varyantlar | Çeşitli uzunluklarda ve yoğunluklarda mevcuttur |
- Optimum performans için LED şeridine 5 V ile güç verildiğinden emin olun.
- Sinyal bütünlüğü sorunlarını önlemek için veri pini için uygun bir direnç kullanın.
- Aşırı ısınmayı önlemek için çıkış akımı sınırlamalarına dikkat edin.
- Gerilim ani yükselmelerini önlemek için güç kaynağını uygun şekilde ayırın.
- İstenen algılama mesafesini elde etmek için kızılötesi sensörü dikkatlice ayarlayın.
Bağlantı Talimatları

Bileşenleri bağlamak için kızılötesi engelden kaçınma sensörüyle başlayın. Sensörün çıkış pinini ESP32 üzerindeki 25 numaralı pine bağlayın. Orta pin toprağa bağlanmalı ve son pin (VCC) 3,3 V güç kaynağına bağlanmalıdır.
Ardından, WS2812 LED şeridi için veri pinini (genellikle sarı kablo) ESP32 üzerindeki 14 numaralı pine bağlayın. Kırmızı kablo 5 V güç kaynağına, siyah kablo ise toprağa bağlanmalıdır. Gevşek bağlantıları önlemek için tüm bağlantıları düzgün şekilde sabitlediğinizden emin olun.
Kod Örnekleri ve Açıklaması
Bu projeyi çalıştıran kodun kısa bir özeti aşağıdadır. İlk olarak, LED şeridindeki piksel sayısını ve iletişim için kullanılan veri pinini tanımlıyoruz:
#define NUM_PIXELS 8
#define DATA_PIN 14
setup() fonksiyonunda LED şeridini ve kızılötesi sensörü başlatıyoruz:
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();
}
loop() fonksiyonunda bir engelin algılanıp algılanmadığını kontrol ediyor ve LED şeridini buna göre yönetiyoruz:
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);
}
}
Bu kod, LED şeridinin ileri doğru hareket ederken rastgele renkler göstermesini ve bir engel algılandığında yön değiştirmesini sağlar. Kodun tamamı makalenin altında yüklenir, tüm detaylar için mutlaka göz atın.
Gösterim / Beklentiler
Kurulum tamamlandığında ve kod yüklendiğinde, LED şeridi ileri doğru hareket ederken rastgele renkler göstermeye başlamalıdır. Bir engel algılandığında şerit önceden belirlenmiş bir renge (örneğin yeşil) geçecek ve yönünü tersine çevirecektir. Engel kaldırılırsa şerit rastgele renklerle ileri doğru hareket etmeye devam edecektir. Kızılötesi sensörün algılama mesafesinin kullanılan güç kaynağına bağlı olarak değişebileceğini unutmayın (videoda 10:30'da).
Video Zaman Damgaları
- 00:00 Başlangıç
- 2:14 Projeye giriş
- 4:58 Bağlantı şeması açıklandı
- 7:41 Engel Algılama Sensörünün Ayarlanması
- 10:03 Arduino kodu açıklandı
- 15:40 Arduino IDE'de ESP32 kartı ve COM portunun seçilmesi
- 17:22 Proje 1: Gösterim
- 18:17 Dönen rengin değiştirilmesi
#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
Kaynaklar ve referanslar
-
BelgelendirmeESP32 Tutorial 31/55- SunFounder doc page for flowing lightdocs.sunfounder.com
Dosyalar📁
Dosya mevcut değil.