Mundarija:

ESP32 bilan 500 LEDli devor: 16 qadam
ESP32 bilan 500 LEDli devor: 16 qadam

Video: ESP32 bilan 500 LEDli devor: 16 qadam

Video: ESP32 bilan 500 LEDli devor: 16 qadam
Video: ESP32, более мощная чем любая другая Ардуино 2024, Iyul
Anonim
ESP32 bilan 500 LEDli devor
ESP32 bilan 500 LEDli devor

Hammaga salom! Qo'llanma oxirida siz o'zingizning LED devoringizni qanday yaratishni bilib olasiz.

Bu dars muqaddas yurak universitetida taqdim etilgan yozgi dasturga asoslangan.

Maza qiling!

Ta'minotlar

Quyida keltirilgan materiallar.

1 -qadam: materiallar

Ta'minotlar
Ta'minotlar

Led devorimizni qurish uchun kerak bo'lgan hamma narsani yig'ishdan boshlaylik:

(Havolalar 10.07.2019 yilda yaratilgan)

Arduino IDE dasturi

ESP32 mikro boshqaruvchisi

LED pikselli yorug'lik

Quvvatlantirish manbai

Quvvat kabeli

Simlarni uzish vositasi

Breadboard o'tish kabellari

Elektr sim

2 -qadam: LedWall uchun to'g'ri quvvat manbaini aniqlash

Qaysi quvvat manbai siz uchun yaxshiroq ekanligini aniqlashning oddiy matematik usuli mavjud.

Biz Ohm kuch qonunidan foydalanamiz: P = IxV (Quvvat = Intensivlik x kuchlanish)

Kuchlanish bizning lampalarimiz tomonidan aniqlanadi: bu holda 5V.

Zo'ravonlik uskunaga bog'liq, bitta Led 30mA sarflaydi.

50 Ledli har bir tasma 50 x 30mA = 1250mA = 1.25A iste'mol qiladi.

Bizning 500 Led devorimiz 10 barobar ko'proq sarflaydi (10 tasma): 12.5A.

Ledlar uchun quvvat sarfi 5V x 12.5A = 62.5 Vt.

Albatta, Ledlarning tepasida siz ESP va sizning davringizning boshqa elementlarini hisobga olishingiz kerak.

Bizda 60A quvvat manbai bor, bizda kerak bo'lgandan ko'ra ko'proq.

3 -qadam: Quvvat kabeli

Image
Image

Bizning quvvat manbai simli ulagichlar bilan ta'minlangan. Quvvat simini 110V vilkaga ulash uchun moslashtirishimiz kerak.

- Ayol ulagichini elektr simidan uzing. Biz erkak qismini saqlaymiz, aks holda NEMA 5-15P deb bilamiz.

- Barcha simlarda taxminan 3 mm mis ko'rinishi uchun kabelni echib oling.

Bu erda simlarni ajratish bo'yicha tezkor video darslik:

4 -qadam: Quvvat manbasini ulash

ESP32S -ga ulanish
ESP32S -ga ulanish

Endi biz elektr ta'minotini ulashga tayyormiz!

Ishlayotganingizda, har doim elektr ta'minotini uzib qo'ying.

Ulanish

  • Qora sim (faza) quvvat manbaining 'L' piniga ulanadi
  • Oq sim (neytral) quvvat manbaining "N" piniga ulanadi
  • Yashil sim elektr tarmog'ining "Ground" piniga ulanadi

(Agar sizning elektr simingizning ichki simlari bizniki bilan bir xil rangda bo'lmasa, xavfsiz bo'ling va Internetdagi sxemalarni ko'rib chiqing.)

Sinov

Kompyuterning quvvat simini har qanday quvvat manbaiga ulang. Quvvat manbasidagi yashil LED yonishi kerak.

5 -qadam: ESP32S -ga ulanish

Sizning ESP -ga qarab, har bir pinning yonida teglar bo'lishi kerak. Agar u belgilanmagan bo'lsa, siz o'zingizning shaxsiy ESP -ni "pinout" ni Internetda qidirishingiz mumkin.

Erkak va ayol simli simlar yoki elektr simlari yordamida quyidagilarni ulang:

  • Quvvat manbasining "+V" ga "5V" ESP32S pimi (yuqoridagi rasmda to'q sariq)
  • Elektr ta'minotining "-V" bo'limiga "GND" ESP32S pin (yuqoridagi rasmda qora)

(Ba'zi ESPlarda "5V" pin o'rniga "VCC" deb yoziladi, ikkalasi ham bir xil narsani bildiradi.)

Iltimos, ESP biz ishlatadigan boshqa "pinout" ga ega bo'lishi mumkinligini unutmang, shuning uchun siz simlaringizni yuqoridagi rasmga qaraganda boshqa joyga ulashingiz mumkin. Agar siz to'g'ri pinlarga (5V va GND), bortdagi jismoniy joylashuv muhim emas.

Quvvat manbaini qayta ulang va agar ESPda LED indikatori bo'lsa (ko'pchiligi), u ESP ga quvvat yuborilganligini bildirish uchun yonadi. Tabriklaymiz!

6 -qadam: LED yorug'lik chiziqlarini quvvatlantirish

LED yorug'lik chiziqlarini quvvatlantirish
LED yorug'lik chiziqlarini quvvatlantirish

Elektr simlaridan foydalanish:

- LED yorug'lik chizig'ining qizil simini quvvat manbaidagi V+ ga ulang.

- LED yorug'lik chizig'ining ko'k simini quvvat manbaidagi V-ga ulang.

7 -qadam: ESP32 -ni LED yorug'lik chiziqlariga ulash

Bizning ESP32 har bir svetodiodga ulangan WS2811 drayverini kerakli rang va yorqinlikka o'rgatadi, buning uchun bizning ESP32 ga chiziqlar uchun "ma'lumot" kabeli kerak.

Leds chiziqlari 3 simli ulagich bilan ta'minlangan:

- Qizil: Quvvat- Moviy: Neytral- Oq: Ma'lumotlar

Keling, Oq Led tasmasini ESP raqamli piniga ulaymiz. Iltimos, tanlangan PIN -kodni eslab qoling, chunki biz uni keyinroq kodda tanlashimiz kerak bo'ladi.

8 -qadam: Kompyuterni tayyorlash: C2102 drayveri

Endi bizning uskuna simli bo'lib, biz uni sinab ko'rish uchun birinchi kodni yuklamoqchimiz. Odatiy bo'lib, Windows yoki MacO'lar bizning ESP32 bilan bog'lana olmaydi, buning uchun biz ESP USB aloqa chipi uchun "drayverni" yuklab olishimiz kerak: C2102.

Bu drayverni yuklab olish va o'rnatish kerak:

- Windows 10: https://www.silabs.com/documents/public/software/C…- Windows 7/8/8.1: https://www.silabs.com/documents/public/software/C…- Mac:

(Havolalar 10.07.2019 y.)

9 -qadam: Arduino dasturi - ESP32 qo'llab -quvvatlashini qo'shish - 1 -qadam

Arduino dasturiy ta'minoti - ESP32 qo'llab -quvvatlashini qo'shish - 1 -qadam
Arduino dasturiy ta'minoti - ESP32 qo'llab -quvvatlashini qo'shish - 1 -qadam
Arduino dasturiy ta'minoti - ESP32 qo'llab -quvvatlashini qo'shish - 1 -qadam
Arduino dasturiy ta'minoti - ESP32 qo'llab -quvvatlashini qo'shish - 1 -qadam

Biz ESP32 -ni Arduino dasturi bilan ishlatishdan oldin, biz uning tan olinganligiga ishonch hosil qilishimiz kerak, sukut bo'yicha, Arduino dasturi ESP32 uchun kodni kompilyatsiya qila olmaydi, buni tuzataylik:

1 -qadam: menejerga taxtalarni qo'shish

1 - Arduino -da Fayl >> Tanlovlar -ni bosing

2- "Qo'shimcha taxtalar menejeri URL-lari" maydonida quyidagi havolani nusxalash:

10 -qadam: Arduino dasturiy ta'minoti - ESP32 qo'llab -quvvatlashini qo'shish - 2 -qadam

Arduino dasturiy ta'minoti - ESP32 qo'llab -quvvatlashini qo'shish - 2 -qadam
Arduino dasturiy ta'minoti - ESP32 qo'llab -quvvatlashini qo'shish - 2 -qadam
Arduino dasturiy ta'minoti - ESP32 qo'llab -quvvatlashini qo'shish - 2 -qadam
Arduino dasturiy ta'minoti - ESP32 qo'llab -quvvatlashini qo'shish - 2 -qadam

Endi Arduino dasturi ko'proq taxtalarni "biladi", keling, ESP32 -ni qo'llab -quvvatlaymiz

2 -qadam: ESP32 qo'llab -quvvatlashini o'rnatish

1 - Yuqori menyuda tanlang: Asboblar >> Kengash >> Kengashlar menejeri

2 - oyna paydo bo'ladi. "ESP32" ni topish uchun yuqori o'ng burchakda joylashgan qidirish maydonidan foydalaning.

3 - espressifdan yasalganini toping. O'rnatish. (Rasmga qarang)

11 -qadam: Arduino dasturi - ESP32 qo'llab -quvvatlashini qo'shish - 3 -qadam

Arduino dasturiy ta'minoti - ESP32 qo'llab -quvvatlashini qo'shish - 3 -qadam
Arduino dasturiy ta'minoti - ESP32 qo'llab -quvvatlashini qo'shish - 3 -qadam

Endi Arduino dasturiy ta'minoti bizning ESP32 bilan aloqa o'rnatishi mumkin, keling, uni kompyuterga ulaylik va hamma narsa ishlayotganini tekshirib ko'ramiz.

1 - ESP32 platformasida ishlashimizga ishonch hosil qilaylik:

Asboblar >> Kengash >> ESP32 Dev modulini bosing

1- Keling, Arduino dasturi ESP bilan qanday aloqa qilishni bilishiga ishonch hosil qilaylik:

Asboblar >> Port -ni bosing va ushbu kabelni ulashdan keyin paydo bo'ladigan birini tanlang.

Muhim:

Agar siz kodni ESP -ga yuklashda muammoga duch kelsangiz, avval ushbu ikkita menyuni tekshiring, agar port tasdiq belgisi bilan tanlanmagan bo'lsa, Arduino dasturi u bilan aloqa qilmaydi.

12 -qadam: Arduino IDE -ga kutubxonalar qo'shish

Arduino IDE kutubxonalarini qo'shish
Arduino IDE kutubxonalarini qo'shish

Endi biz old devorimizni sinab ko'rishga imkon beradigan kutubxonani qo'shmoqchimiz!

1- Asboblar >> Kutubxonalarni boshqarish-ni bosing.

2- O'ng yuqori burchakda NeoPixelBus-ni qidiring. "NeoPixelBus by Makuna" ni toping, o'rnating (rasmga qarang)

Boshqa qiziqarli kutubxonalar: (bu darslik uchun shart emas)

- NeoMatrix

- FastLed

- Artnet

- GFX

13 -qadam: Birinchi kod: Strand testi

Bizning birinchi kodimiz kutubxonadan misol.

Siz quyidagi kodni nusxalashingiz yoki joylashtirishingiz yoki ustiga bosishingiz mumkin:

Fayl >> Misollar >> Adafruit NeoPixelBus >> Strandtest

Iltimos, LED_PIN -ni LED -laringizni jismonan ulash uchun ishlating, biz 13 -ni ishlatdik.

Ip o'lchamini LED_COUNT o'zgaruvchisi bilan moslashtirishga ishonch hosil qiling.

// Asosiy kundalik LED Striptest dasturi.

#include #ifdef _AVR_ #include // 16 MGts chastotali Adafruit Trinket #endif // Arduino -dagi qaysi pin NeoPixel -ga ulangan? #define LED_PIN 13 // Arduino -ga nechta NeoPixel biriktirilgan? #define LED_COUNT 500 // Bizning NeoPixel tasmasi ob'ektini e'lon qiling: Adafruit_NeoPixel tasmasi (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // 1 -argument = NeoPixel chizig'idagi piksellar soni // 2 -argument = Arduino pin raqami (ko'pchiligi to'g'ri) // Argument 3 = Pikselli turdagi bayroqlar, kerak bo'lganda qo'shing: // NEO_KHZ800 800 KHz bitstream (NeoPixel mahsulotlarining ko'pchiligi/ WS2812 LEDlari) // NEO_KHZ400 400 KHz (klassik 'v1' (v2 emas) FLORA piksellari, WS2811 drayverlari) // NEO_GRB piksellari GRB bitstream uchun ulanadi (ko'pchilik NeoPixel mahsulotlari) // NEO_RGB piksellari RGB bitstream (v1 FLORA piksellari uchun), v2 emas) // NEO_RGBW piksellari RGBW bit oqimi uchun ulanadi (NeoPixel RGBW mahsulotlari) // setup () funktsiyasi-ishga tushganda bir marta ishlaydi -------------------- ------------ void setup () {// Bu satrlar Adafruit Trinket 5V 16 MGts ni qo'llab-quvvatlash uchun mo'ljallangan. // Boshqa istalgan taxta, siz bu qismni olib tashlashingiz mumkin (lekin undan hech qanday zarar bo'lmaydi): #if belgilangan (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // Trinket-ga xos kodning oxiri. strip.begin (); // NeoPixel strip ob'ektini INITIALIZE (REQUIRED) strip.show (); // Barcha piksellarni ASAP strip.setBrightness o'chiring (50); // BRIGHTNESS-ni taxminan 1/5 ga o'rnating (max = 255)} // loop () funktsiyasi-taxta yoniq bo'lguncha takrorlanadi --------------- void loop () {// Ip uzunligini har xil ranglarda to'ldiring … colorWipe (strip. Color (255, 0, 0), 50); // Red colorWipe (strip. Color (0, 255, 0), 50); // Yashil colorWipe (strip. Color (0, 0, 255), 50); // Moviy // Teatr effektini har xil rangda qiling … teatrChase (strip. Color (127, 127, 127), 50); // Oq, yarim nashriyotli teatrChase (tasma. Rang (127, 0, 0), 50); // Qizil, yarim nashriyotli teatrChase (tasma. Rang (0, 0, 127), 50); // Moviy, yarim yorqin kamalak (10); // Butun chiziqli teatr bo'ylab oqayotgan kamalak aylanishiChaseRainbow (50); // Kamalak bilan takomillashtirilgan teatrChase varianti} // Animatsiyali effektlarni yaratish uchun o'zimizning ba'zi funktsiyalarimiz ---------------- // chiziqli piksellarni birin-ketin rang bilan to'ldiring. Ip tozalanmaydi // birinchi; u erda hamma narsa piksel bilan yopiladi. Rangni kiriting // (bitta "paketli" 32-bitli qiymat sifatida, siz qo'ng'iroq qilib olishingiz mumkin // strip. Color (qizil, yashil, ko'k) loop () funktsiyasida ko'rsatilganidek), va piksellar orasidagi kechikish vaqti (millisekundlarda). void colorWipe (uint32_t color, int wait) {for (int i = 0; i strip.setPixelColor (i, rang); // Piksel rangini (RAMda) strip.show (); // Ipni kechiktirishga mos ravishda yangilash (kuting); // Bir zum pauza qiling}} // Teatr-marquee uslubidagi chiroqlarni quvib chiqaring. Rang bilan o'ting (32-bitli qiymat, // a la strip. Rang (r, g, b) yuqorida aytilganidek), va freymlar orasidagi kechikish vaqti (msda) // void teatrChase (uint32_t rang, int kutish) {for (int a = 0; a <10; a ++) {// 10 marta takrorlang… uchun (int b = 0; b <3; b ++) {// 'b' 0 dan 2 gacha sanaladi… strip.clear (); // RAMdagi barcha piksellarni 0 (o'chirilgan) ga sozlang // 'c' 'b' dan oxirigacha sanaladi 3 … bosqichli chiziqlar uchun (int c = b; c strip.setPixelColor (c, rang); // 'c' pikselini 'rang' qiymatiga o'rnating} strip.show (); // Ipni yangi tarkib bilan kechiktirish bilan yangilang (kutib turing); // Bir zum pauza qiling}}} // Kamalak butun chiziq bo'ylab aylanadi. Kechikish vaqtini (msda) kadrlar orasiga o'tkazing. kamalakni bo'sh (int kuting) {// Birinchi piksel tusi 5 ta to'liq ko'chadan o'tadi. rangli g'ildirak. // Rangli g'ildirak 65536 diapazoniga ega, lekin u OK, agar biz ag'darilsa, // shunchaki 0 dan 5 gacha*65536 ni hisoblang. FirstPixelHue -ga har safar 256 qo'shish // biz bu tashqi pastadir orqali 5*65536/256 = 1280 ta o'tishni amalga oshiramiz degan ma'noni anglatadi: for (long firstPixelHue = 0; firstPixelHue <5*65536; firstPixelHue += 256) {for (int i = 0; I // piksel g'ildiragini chiziq uzunligi bo'ylab // rangli g'ildirakning (65536 diapazoni) bir marta to'liq aylanishini amalga oshirish uchun miqdor bo'yicha ofset piksel // (strip.numPixels () qadamlar): int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels ()); // strip. ColorHSV () 1 yoki 3 ta argumentni qabul qilishi mumkin: rang (0 dan 65535 gacha) yoki // ixtiyoriy ravishda to'yinganlik va qiymat (yorqinlik) qo'shing (har biri 0 dan 255 gacha). // Bu erda biz faqat bitta argumentli rang variantidan foydalanmoqdamiz. Natija // har bir pikselga belgilanmasdan oldin "to'g'ri" ranglarni berish uchun strip.gamma32 () orqali uzatiladi // strip.setPixelColor (i, strip.gamma32) (strip. ColorHSV (pixelHue))));} strip.show (); // Ipni yangi tarkib bilan yangilang (kuting); // Bir lahzaga pauza qiling}} // Kamalak bilan takomillashtirilgan teatr marquee. Kechiktirish vaqtini o'tkazing (ichida ms) freymlar orasida. void teatrChaseRainbow (int wait) {i nt firstPixelHue = 0; // Birinchi piksel (int a = 0; a <30; a ++) uchun qizil rangdan (tus 0) boshlanadi {// 30 marta takrorlang … uchun (int b = 0; b RGB strip.setPixelColor (c, rang); / / "C" pikselini "rang" qiymatiga qo'ying} strip.show (); // Ipni yangi tarkib bilan yangilang (kuting); // Bir zum pauza qilingPixelHue += 65536/90; // Rangli g'ildirakning bir tsikli 90 dan ortiq ramkalar}}}

14 -qadam: SHU namunali kod

Image
Image

Bizning kodimiz barcha Ledlarni birma -bir yoqadi, chunki ular ishlaydilar:

// Bu misol 500 pikselni qizil rangda ko'rsatish o'rtasida aylanadi

#includeconst uint16_t PixelCount = 500; // bu misol 4 pikselni nazarda tutadi, uni kichikroq qilib qo'yadi: const uint8_t PixelPin = 13; // buni Esp8266 uchun e'tiborsiz qoldirilgan to'g'ri pimga o'rnatganingizga ishonch hosil qiling

#define colorSaturation 128 // uchta elementli piksel, har xil tartibda va tezlikda

NeoPixelBus tasmasi (PixelCount, PixelPin);

// NeoPixelBus tasmasi (PixelCount, PixelPin); RgbColor qizil (0, colorSaturation, 0); RgbColor yashil (rang to'yinganligi, 0, 0); RgbColor ko'k (0, 0, rang to'yinganligi); RgbColor oq (rang to'yinganligi); Qora RgbColor (0); HslColor hslRed (qizil); HslColor hslGreen (yashil); HslColor hslBlue (ko'k); HslColor hslWhite (oq); HslColor hslBlack (qora); void setup () {Serial.begin (115200) while (! Serial); // Serial.println () ketma -ket biriktirilishini kuting; Serial.println ("Boshlanmoqda…"); Serial.flush (); // bu barcha neopiksellarni o'chirilgan holatiga qaytaradi. Begin (); strip. Show (); Serial.println (); Serial.println ("Ishlayapti …"); } void loop () {kechiktirish (100); Serial.println ("Ranglar, G, B, V ranglar …"); uchun (int i = 0; i <= 499; i ++) {// ranglarni o'rnating, // agar ular mos kelmasa, NeoGrbFeature xususiyatlar chizig'idan foydalanish kerak. SetPixelColor (i, qizil); strip. Show (); kechikish (100); strip. SetPixelColor (i, hslRed); strip. Show (); kechikish (100); }}

15 -qadam: ESP32 -ga kodni yuklash

Muhim:

Har qanday mikrokontrolderga kod yuklash uchun u dasturlash rejimida bo'lishi kerak, ko'pchilik buni avtomatik tarzda bajaradi va dasturiy ta'minotni yuklash tugmasini bosish kifoya.

Bizning ESP32 kodni yuborish paytida dasturlash tugmachasini ushlab turishni talab qiladi, shuningdek, kodni yuklashdan so'ng, reset tugmachasini bir marta bosish orqali uni tiklashingiz kerak bo'ladi.

Bizning ESP32 dasturlash tugmasi chapda, tiklash tugmasi o'ngda, agar sizda boshqa mikro-nazoratchi bo'lsa, qo'llanmaga murojaat qiling.

16 -qadam: iqtiboslar

Bu ko'rsatma quyidagi darsliklar yordamida qilingan:

randomnerdtutorials.com/installing-the-esp…

ESP32 ni Arduino IDE -ga o'rnatish uchun ishlatiladi.

Mualliflar:

Nataniel BaroneGabriel Kastro

Muharrir:

Sedrik Bleimling

Tavsiya: