Mundarija:
- Ta'minotlar
- 1 -qadam: materiallar
- 2 -qadam: LedWall uchun to'g'ri quvvat manbaini aniqlash
- 3 -qadam: Quvvat kabeli
- 4 -qadam: Quvvat manbasini ulash
- 5 -qadam: ESP32S -ga ulanish
- 6 -qadam: LED yorug'lik chiziqlarini quvvatlantirish
- 7 -qadam: ESP32 -ni LED yorug'lik chiziqlariga ulash
- 8 -qadam: Kompyuterni tayyorlash: C2102 drayveri
- 9 -qadam: Arduino dasturi - ESP32 qo'llab -quvvatlashini qo'shish - 1 -qadam
- 10 -qadam: Arduino dasturiy ta'minoti - ESP32 qo'llab -quvvatlashini qo'shish - 2 -qadam
- 11 -qadam: Arduino dasturi - ESP32 qo'llab -quvvatlashini qo'shish - 3 -qadam
- 12 -qadam: Arduino IDE -ga kutubxonalar qo'shish
- 13 -qadam: Birinchi kod: Strand testi
- 14 -qadam: SHU namunali kod
- 15 -qadam: ESP32 -ga kodni yuklash
- 16 -qadam: iqtiboslar
Video: ESP32 bilan 500 LEDli devor: 16 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
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
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
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
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
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
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
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
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
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
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:
Harakat yoritgichli DIY portlovchi devor soati: 20 qadam (rasmlar bilan)
Harakatli yoritgichli DIY portlovchi devor soati: Bu ko'rsatma / videoda men sizga asta -sekin ko'rsatma beraman, qanday qilib birlashtirilgan yorug'lik tizimi bilan ijodiy va o'ziga xos devor soatini yasash mumkin. . Men yurganimda
TheSUN, Arduino bilan ishlaydigan devor soati: 6 qadam (rasmlar bilan)
TheSUN, Arduino bilan ishlaydigan devor soatlari: Salom, yana instruktiv odamlar! Men, xuddi o'sha manzilli LED chiziqlar kabi (NEOP deb ham ataladi
Yorug'lik bilan boshqariladigan qadam dvigatel + devor qavslari/stend: 6 qadam
Yorug'lik bilan boshqariladigan qadamli dvigatel + devor qavslari/stend: Bu stend xonadagi yorug'lik darajasiga qarab pardani avtomatik boshqarish uchun mo'ljallangan, Arduino tomonidan boshqariladigan step motorini joylashtirish uchun ishlatiladi. Bundan tashqari, yorug'lik darajasini chop etish uchun LCD displey qo'shishingiz mumkin. 3D uskunalar faqat namoyish qilish uchun mo'ljallangan
Dakboard devor displeyi Pi Zero W bilan: 6 qadam (rasmlar bilan)
Dakboard devor displeyi Pi Zero W bilan: Men IT sohasida ishlayman. Ko'pincha biz eski to'plamini olib tashlashimizni xohlaydigan mijozlarga murojaat qilamiz. Bu, odatda, bizni bir dasta qoldiq bilan qoldiradi, va monitorlar biz topgan narsalardan biridir. Uyda men o'z monitorlarimni yangiladim va bu mening eski qurilmamni qoldirdi
Devor devori devor soati: 5 qadam
Devorli devor soati: atrofida tasodifiy elektron platalar ko'pmi? Yaxshi maqsadda ularni qayta ishlashni xohlaysizmi? Bu salqin va bezakli elektron platali devor soati, ozgina materiallardan yasalgan