Turinys:

500 šviesos diodų siena su ESP32: 16 žingsnių
500 šviesos diodų siena su ESP32: 16 žingsnių

Video: 500 šviesos diodų siena su ESP32: 16 žingsnių

Video: 500 šviesos diodų siena su ESP32: 16 žingsnių
Video: Learn Arduino in 30 Minutes: Examples and projects 2024, Liepa
Anonim
500 LED sienelių su ESP32
500 LED sienelių su ESP32

Sveiki visi! Šios pamokos pabaigoje jūs žinosite, kaip sukurti savo LED sieną.

Ši pamoka yra pagrįsta vasaros programa, siūloma Šventosios širdies universitete.

Pasilinksmink!

Prekės

Žemiau išvardytos prekės.

1 žingsnis: reikmenys

Prekės
Prekės

Pradėkime nuo to, kad surinksime viską, ko reikia mūsų Led sienai užbaigti:

(Nuorodos sukurtos 2019-10-10)

„Arduino IDE“programinė įranga

ESP32 mikrovaldiklis

LED pikselių šviesa

Maitinimo šaltinis

Maitinimo laidas

Vielos nuėmimo įrankis

Breadboard Jumper kabeliai

Elektros laidas

2 veiksmas: nustatykite tinkamą „LedWall“maitinimo šaltinį

Yra paprastas matematinis būdas sužinoti, kuris maitinimo šaltinis jums tinkamiausias.

Mes naudojame Ohmo galios dėsnį: P = IxV (galia = intensyvumas x įtampa)

Įtampa nustatoma pagal mūsų šviesos diodus: šiuo atveju 5V.

Intensyvumas priklauso nuo aparatūros, vienas LED sunaudoja 30 mA.

Todėl kiekviena 50 Led juostelė sunaudoja 50 x 30mA = 1250mA = 1,25A.

Todėl mūsų 500 Led siena sunaudoja 10 kartų daugiau (10 juostų): 12,5A.

Tada LED energijos suvartojimas yra 5V x 12.5A = 62.5W.

Žinoma, be šviesos diodų turite atsižvelgti į ESP ir visus kitus grandinės elementus.

Mes turime 60A maitinimo šaltinį, turime daug daugiau nei mums reikia.

3 žingsnis: maitinimo laidas

Image
Image

Mūsų maitinimo šaltinis yra su laidinėmis jungtimis. Turime pritaikyti maitinimo laidą, kad jį prijungtume prie 110 V kištuko.

- Nupjaukite maitinimo laido jungtį. Mes pasiliksime vyrišką dalį, kitaip žinome kaip NEMA 5-15P.

- Nulupkite kabelį, kad ant visų laidų matytųsi apie 3 mm vario.

Čia yra trumpa vaizdo įrašo pamoka, kaip pašalinti laidus:

4 žingsnis: maitinimo šaltinio prijungimas

Maitinimas prie ESP32S
Maitinimas prie ESP32S

Dabar esame pasirengę prijungti maitinimo šaltinį!

Dirbdami visada atjunkite maitinimo šaltinį.

Laidai

  • Juoda viela (fazė) jungiama prie maitinimo šaltinio „L“kaiščio
  • Balta viela (neutrali) jungiama prie maitinimo šaltinio „N“kaiščio
  • Žalia viela jungiama prie maitinimo šaltinio įžeminimo kaiščio

(Jei jūsų maitinimo laido vidiniai laidai nėra tos pačios spalvos kaip mūsų, būkite saugūs ir ieškokite schemų internete.)

Testavimas

Prijunkite kompiuterio maitinimo laidą prie bet kurio maitinimo lizdo. Maitinimo šaltinio žalia lemputė turėtų įsijungti.

5 veiksmas: įjungimas į ESP32S

Žvelgiant į jūsų ESP, prie kiekvieno kaiščio turėtų būti etikečių. Jei jis nėra paženklintas, galite ieškoti savo „ESP“„pinout“internete.

Naudodami duonos lentos trumpiklį arba elektros laidą nuo vyrų iki moterų, prijunkite:

  • „5V“ESP32S kaištis prie maitinimo šaltinio „+V“(oranžinė nuotraukoje aukščiau)
  • „GND“ESP32S kaištis prie maitinimo šaltinio „-V“skyriaus (juoda aukščiau esančioje nuotraukoje)

(Kai kuriuose ESP „5V“kaištis pažymėtas kaip „VCC“, jie abu reiškia tą patį.)

Atminkite, kad jūsų ESP gali būti kitoks „pinout“, nei tas, kurį naudojame. Todėl galite prijungti laidus prie kitos vietos nei pavaizduota aukščiau. Kol jungiatės prie tinkamų kaiščių (5V ir GND), fizinė vieta lentoje nesvarbi.

Vėl įjunkite maitinimo šaltinį ir, jei jūsų ESP turi LED indikatorių (dauguma jų turi), jis užsidegs, nurodydamas, kad energija siunčiama į ESP. Sveikinu!

6 veiksmas: įjunkite šviesos diodų šviesos juostas

Maitinimas LED šviesos juostomis
Maitinimas LED šviesos juostomis

Naudojant elektros laidus:

- Prijunkite raudoną LED šviesos juostos laidą prie maitinimo šaltinio V+.

- Prijunkite mėlyną LED šviesos juostos laidą prie maitinimo šaltinio V-.

7 veiksmas: prijunkite ESP32 prie LED šviesos juostų

Mūsų ESP32 nurodo WS2811 tvarkyklę, prijungtą prie kiekvieno diodo, spalvų ir ryškumo.

„Leds“juostelėse yra 3 laidų jungtis:

- Raudona: galinga- mėlyna: neutrali- balta: duomenys

Prijunkite „White Led“juostinį kabelį prie skaitmeninio ESP kaiščio. Prisiminkite pasirinktą PIN kodą, nes vėliau jį reikės pasirinkti kodu. Mes prijungėme savo prie kaiščio 13.

8 veiksmas: kompiuterio paruošimas: C2102 tvarkyklė

Dabar, kai mūsų aparatinė įranga yra prijungta, norime įkelti pirmąjį kodą, kad jį išbandytume. Pagal numatytuosius nustatymus „Windows“arba „MacO“negali bendrauti su mūsų ESP32. Norėdami tai padaryti, turime atsisiųsti „tvarkyklę“ESP USB ryšio mikroschemai: C2102.

Šią tvarkyklę reikia atsisiųsti ir įdiegti:

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

(Nuorodos nuo 2019-07-10)

9 veiksmas: „Arduino“programinė įranga - ESP32 palaikymo pridėjimas - 1 veiksmas

„Arduino“programinė įranga - ESP32 palaikymo pridėjimas - 1 veiksmas
„Arduino“programinė įranga - ESP32 palaikymo pridėjimas - 1 veiksmas
„Arduino“programinė įranga - ESP32 palaikymo pridėjimas - 1 veiksmas
„Arduino“programinė įranga - ESP32 palaikymo pridėjimas - 1 veiksmas

Kad galėtume naudoti savo ESP32 su „Arduino“programine įranga, turime įsitikinti, kad ji yra atpažinta. Pagal numatytuosius nustatymus „Arduino“programinė įranga negali surinkti kodo mūsų ESP32, pataisykime:

1 veiksmas: lentų pridėjimas prie valdytojo

1 - „Arduino“spustelėkite parinktį Failas >> Nuostatos

2- Lauke „Papildomų lentų valdytojo URL“nukopijuokite šią nuorodą:

10 veiksmas: „Arduino“programinė įranga - ESP32 palaikymo pridėjimas - 2 veiksmas

„Arduino“programinė įranga - ESP32 palaikymo pridėjimas - 2 veiksmas
„Arduino“programinė įranga - ESP32 palaikymo pridėjimas - 2 veiksmas
„Arduino“programinė įranga - ESP32 palaikymo pridėjimas - 2 veiksmas
„Arduino“programinė įranga - ESP32 palaikymo pridėjimas - 2 veiksmas

Dabar, kai „Arduino“programinė įranga „žino“daugiau plokščių, įdiekime ESP32 palaikymą

2 žingsnis: Įdiekite ESP32 palaikymą

1 - Viršutiniame meniu pasirinkite: Tools >> Board >> Boards Manager

2 - pasirodys langas. Naudokite paieškos laukelį, esantį viršutiniame dešiniajame kampe, kad surastumėte „ESP32“.

3 - Raskite tą, kurį pagamino espressif. Įdiekite. (Žr. Paveikslėlį)

11 veiksmas: „Arduino“programinė įranga - ESP32 palaikymo pridėjimas - 3 veiksmas

„Arduino“programinė įranga - ESP32 palaikymo pridėjimas - 3 veiksmas
„Arduino“programinė įranga - ESP32 palaikymo pridėjimas - 3 veiksmas

Dabar, kai „Arduino“programinė įranga gali bendrauti su mūsų ESP32, prijunkite ją prie kompiuterio ir patikrinkite, ar viskas veikia.

1 - Įsitikinkime, kad dirbame ESP32 platformoje:

Spustelėkite Įrankiai >> Lenta >> ESP32 Dev Module

1- Įsitikinkime, kad „Arduino“programinė įranga žino, kaip bendrauti su mūsų ESP:

Spustelėkite Įrankiai >> Prievadas ir pasirinkite tą, kuris pasirodo prijungus šį kabelį.

Svarbu:

Jei kyla problemų įkeliant kodą į ESP, pirmiausia patikrinkite šiuos du meniu. Jei prievadas nėra pažymėtas varnele, „Arduino“programinė įranga su juo nebendraus.

12 veiksmas: bibliotekų pridėjimas prie „Arduino IDE“

Bibliotekų pridėjimas prie „Arduino IDE“
Bibliotekų pridėjimas prie „Arduino IDE“

Dabar mes ketiname pridėti biblioteką, kuri leis mums išbandyti savo „Led Wall“!

1- Spustelėkite Įrankiai >> Tvarkyti bibliotekas.

2- Viršutiniame dešiniajame kampe ieškokite „NeoPixelBus“. Raskite „NeuPixelBus by Makuna“, įdiekite ją (žr. Paveikslėlį)

Galimos kitos įdomios bibliotekos: (nereikalinga šiai pamokai)

- „NeoMatrix“

- „FastLed“

- Artnetas

- GFX

13 žingsnis: Pirmasis kodas: srities bandymas

Pirmasis mūsų kodas yra bibliotekos pavyzdys.

Galite nukopijuoti / įklijuoti žemiau esantį kodą arba spustelėti:

Failas >> Pavyzdžiai >> Adafruit NeoPixelBus >> Strandtest

Būtinai pakeiskite savo LED_PIN į tą, kurį naudojote fiziškai prijungdami savo šviesos diodus. Šioje pamokoje naudojome 13.

Taip pat būtinai pritaikykite sruogų dydį naudodami kintamąjį LED_COUNT.

// Pagrindinė kasdieninė LED Striptest programa.

#include #ifdef _AVR_ #include // Reikalingas 16 MHz „Adafruit“niekučiui #endif // Kuris „Arduino“kaištis prijungtas prie „NeoPixels“? #define LED_PIN 13 // Kiek „NeoPixels“yra prijungta prie „Arduino“? #define LED_COUNT 500 // Deklaruokite mūsų „NeoPixel“juostos objektą: „Adafruit_NeoPixel“juostelė (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // Argumentas 1 = pikselių skaičius „NeoPixel“juostelėje WS2812 šviesos diodai) // NEO_KHZ400 400 KHz (klasikiniai „v1“(ne v2) FLORA pikseliai, WS2811 tvarkyklės) // NEO_GRB Pikseliai prijungti prie GRB bitų srauto (dauguma „NeoPixel“produktų), ne v2) // NEO_RGBW Pikseliai yra prijungti prie RGBW bitų srauto („NeoPixel RGBW“produktai) // sąrankos () funkcija-paleidžiama vieną kartą paleidžiant -------------------- ------------ void setup () {// Šios linijos yra skirtos specialiai „Adafruit Trinket 5V 16 MHz“palaikymui. // Bet kuri kita lenta, galite pašalinti šią dalį (bet nepadarysite žalos): #if define (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // „Fingeret“specifinio kodo pabaiga. strip.begin (); // INICIALIZUOTI „NeoPixel“juostos objektą (REIKALINGA) strip.show (); // ASAP išjungti visus pikselius ASAP strip.setBrightness (50); // Nustatykite BRIGHTNESS į maždaug 1/5 (maks. = 255)} // loop () funkcija-veikia pakartotinai, kol plokštė įjungta --------------- void loop () {// Užpildykite juostelės ilgį įvairiomis spalvomis… colorWipe (strip. Color (255, 0, 0), 50); // Raudona spalvaWipe (strip. Color (0, 255, 0), 50); // Žalia spalva Nuvalykite (juostelė. Spalva (0, 0, 255), 50); // Mėlyna // Atlikite teatro efektą įvairiomis spalvomis… TheaterChase (strip. Color (127, 127, 127), 50); // Balta, pusės ryškumo teatrasChase (strip. Color (127, 0, 0), 50); // Raudonas, pusės ryškumo teatrasChase (strip. Color (0, 0, 127), 50); // Mėlyna, pusės ryškumo vaivorykštė (10); // Tekantis vaivorykštės ciklas išilgai viso juostos teatroChaseRainbow (50); // Vaivorykštės patobulintas teatrasChase variantas} // Kai kurios mūsų funkcijos, skirtos animaciniams efektams kurti ----------------- // Užpildykite juostelės pikselius vieną po kitos spalva. Juostelė NĖRA išvalyta // pirma; viskas ten bus padengta pikseliu po taško. Perduokite spalvotai // (kaip vieną „supakuotą“32 bitų vertę, kurią galite gauti paskambinę // strip. Spalva (raudona, žalia, mėlyna), kaip parodyta aukščiau esančioje ciklo () funkcijoje), // ir delsos laikas (milisekundėmis) tarp pikselių. void colorWipe (uint32_t color, int wait) {for (int i = 0; i strip.setPixelColor (i, color); // Nustatykite pikselio spalvos (RAM) juostą.show (); // Atnaujinti juostelę, kad atitiktų vėlavimą (palaukti); // Akimirkai stabtelėti}}} // Teatro langelio stiliaus persekiojimo žibintai. Pateikite spalvą (32 bitų reikšmė, // a la juostelė. Spalva (r, g, b), kaip minėta aukščiau), ir uždelsimo laikas (ms) // tarp kadrų. void TheaterChase (uint32_t color, int wait) {for (int a = 0; a <10; a ++) {// Pakartokite 10 kartų… (int b = 0; b <3; b ++) {// 'b' skaičiuojama nuo 0 iki 2 … strip.clear (); // Nustatykite visus RAM taškus į 0 (išjungta) // 'c' skaičiuojama nuo 'b' iki pabaigos juostelė 3 žingsniais… (int c = b; c strip.setPixelColor (c, spalva); // Nustatykite pikselį „c“į reikšmę „color“} strip.show (); // Atnaujinti juostelę su naujo turinio uždelsimu (palaukti); // Akimirkai pristabdyti}}}} // Vaivorykštės ciklas išilgai visos juostos. Praleiskite vėlavimo laiką (ms) tarp kadrų. void vaivorykštė (int wait) {// Pirmojo pikselio atspalvis perkelia 5 visas kilpas spalvų ratas. // Spalvų rato diapazonas yra 65536, bet jis yra Gerai, jei apvirsime, taigi // tiesiog suskaičiuokite nuo 0 iki 5*65536. Kiekvieną kartą pridėjus 256 prie „FirstPixelHue“// tai reiškia, kad per šią išorinę kilpą padarysime 5*65536/256 = 1280: per (ilgas firstPixelHue = 0; firstPixelHue <5*65536; firstPixelHue += 256) {for (int i = 0; I // Pikselių atspalvio poslinkis tiek, kad būtų atliktas vienas visas // spalvų rato apsisukimas (65536 diapazonas) išilgai juostos // (strip.numPixels () žingsniai): int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels ()); // strip. ColorHSV () gali turėti 1 arba 3 argumentus: atspalvį (nuo 0 iki 65535) arba // pasirinktinai pridėti sodrumą ir vertę (ryškumą) (kiekvienas nuo 0 iki 255). // Čia mes naudojame tik vieno argumento atspalvio variantą. Rezultatas // perduodamas per strip.gamma32 (), kad būtų pateiktos tikresnės spalvos // prieš priskiriant kiekvienam pikseliui: strip.setPixelColor (i, strip.gamma32 (strip. ColorHSV (pixelHue))));} strip.show (); // Atnaujinti juostelę su naujo turinio uždelsimu (palaukti); // Akimirkai pristabdyti}} // Vaivorykštės patobulinta teatro palapinė. Praeiti atidėjimo laiką (į ms) tarp kadrų. void theatreChaseRainbow (int wait) {i nt firstPixelHue = 0; // Pirmasis pikselis prasideda raudonai (atspalvis 0) (int a = 0; a <30; a ++) {// Pakartokite 30 kartų… (int b = 0; b RGB strip.setPixelColor (c, spalva); / / Nustatykite pikselį „c“į vertę „spalva“} strip.show (); // Atnaujinkite juostelę su naujo turinio uždelsimu (palaukite); // Pirmiausia pristabdykite akimirką PixelHue += 65536 /90; // Vienas spalvų rato ciklas daugiau nei 90 kadrų}}}

14 žingsnis: SHU mėginio kodas

Image
Image

Mūsų kodas įjungia visus šviesos diodus po vieną, kad įsitikintų, jog jie veikia:

// Šiame pavyzdyje bus rodomas 500 pikselių rodymas raudonai

#includeconst uint16_t „PixelCount“= 500; // šiame pavyzdyje daroma prielaida, kad 4 pikseliai, tai sumažinus sukels gedimą const uint8_t PixelPin = 13; // įsitikinkite, kad nustatėte teisingą kaištį, ignoruojamą Esp8266

#define colorSaturation 128 // trijų elementų pikseliai skirtinga tvarka ir greičiu

„NeoPixelBus“juostelė („PixelCount“, „PixelPin“);

// „NeoPixelBus“juostelė („PixelCount“, „PixelPin“); RgbSpalva raudona (0, spalvos sodrumas, 0); RgbColor žalia (spalvaSotumas, 0, 0); RgbColor blue (0, 0, colorSaturation); RgbColor balta (spalvaSotumas); RgbSpalva juoda (0); HslColor hslRed (raudona); HslColor hslGreen (žalia); HslColor hslBlue (mėlyna); HslColor hslWhite (balta); HslColor hslBlack (juoda); void setup () {Serial.begin (115200) while (! Serial); // laukti serijinio priedo Serial.println (); Serial.println („Inicijuojama…“); Serial.flush (); // tai atstato visus neopikselius į išjungtos būsenos juostą. Begin (); juostelė. Rodyti (); Serial.println (); Serial.println („Veikia …“); } void loop () {delay (100); Serial.println („Spalvos R, G, B, W…“); (int i = 0; i <= 499; i ++) {// nustatykite spalvas, // jei jos nesutampa eilės tvarka, turite naudoti „NeoGrbFeature“funkcijų juostą. SetPixelColor (i, raudona); strip. Show (); vėlavimas (100); juostelė. SetPixelColor (i, hslRed); juostelė. Rodyti (); vėlavimas (100); }}

15 veiksmas: kodo įkėlimas į ESP32

Svarbu:

Kad galėtumėte įkelti kodą į bet kurį mikrovaldiklį, jis turi būti programavimo režimu. Dauguma tai daro automatiškai ir viskas, ką jums reikia padaryti, yra spustelėti įkelti programinėje įrangoje.

Mūsų ESP32 reikalauja, kad siunčiant kodą laikytumėte programavimo mygtuką. Taip pat turite jį iš naujo nustatyti, kai kodas įkeliamas, vieną kartą paspaudus atstatymo mygtuką.

Mūsų ESP32 programavimo mygtukas yra kairėje, atstatymo mygtukas dešinėje. Jei turite kitą mikrovaldiklį, žiūrėkite savo vadovą.

16 žingsnis: citatos

Ši pamoka buvo padaryta naudojant šias pamokas:

randomnerdtutorials.com/installing-the-esp…

Naudojamas ESP32 įdiegti į „Arduino IDE“.

Autoriai:

Nathaniel Barone, Gabriel Castro

Redaktorius:

Cedric Bleimling

Rekomenduojamas: