Мазмуну:

ESP32 менен 500 LED дубалы: 16 кадам
ESP32 менен 500 LED дубалы: 16 кадам

Video: ESP32 менен 500 LED дубалы: 16 кадам

Video: ESP32 менен 500 LED дубалы: 16 кадам
Video: Home Automation: 12V Relay with LED Display Delay 0.1 seconds to 999 seconds Timer module P1 to P4 2024, Июль
Anonim
ESP32 менен 500 LED дубалы
ESP32 менен 500 LED дубалы

Салам баарына! Бул окуу куралынын аягында сиз өзүңүздүн LED дубалыңызды кантип түзүүнү билесиз.

Бул окуу куралы Ыйык Жүрөк университетинде сунушталган жайкы программага негизделген.

Көңүл ачуу!

Жабдуулар

Төмөндө көрсөтүлгөн жабдуулар.

1 -кадам: Берилиштер

Жабдуулар
Жабдуулар

Келгиле, Led дубалыбызды бүтүрүү үчүн керектүү нерселерди чогултуудан баштайлы:

(Шилтемелер 7/10/2019 түзүлгөн)

Arduino IDE программасы

ESP32 микро контроллери

LED пиксел жарыгы

Электр камсыздоо

Power Cord

Wire Stripping Tool

Breadboard Jumper Cables

Электр зымы

2 -кадам: Сиздин LedWall үчүн туура энергия менен камсыздоону аныктоо

Кайсы электр энергиясы сиз үчүн эң ылайыктуу экенин билүүнүн жөнөкөй математикалык жолу бар.

Биз Омдун мыйзамын колдонобуз: P = IxV (Power = Intensity x Voltage)

Чыңалуу биздин леддер тарабынан аныкталат: бул учурда 5В.

Интенсивдүүлүк аппараттык жабдуулардан көз каранды, бир Led 30 мА керектейт.

50 Ledsтин ар бир тилкеси 50 x 30mA = 1250mA = 1.25A жалмайт.

Биздин 500 Led дубал 10 эсе көп керектейт (10 тилке): 12.5A.

Электр энергиясын колдонуу Leds үчүн 5V x 12.5A = 62.5W болот.

Албетте, Ледстин үстүндө сиз ESPти жана сиздин схемаңыздын башка нерселерин эсепке алышыңыз керек.

Бизде 60А электр энергиясы бар, бизде керектүү нерселер көп.

3 -кадам: Power Cord

Image
Image

Биздин электр менен камсыздоо зым бириктиргичтери менен келет. Биз аны 110В штепсельге туташтыруу үчүн электр шнурун ыңгайлаштырышыбыз керек.

- Аялдын коннекторун электр шнурунан ажыратыңыз. Биз эркек бөлүгүн сактап калабыз, антпесе NEMA 5-15P деп билебиз.

- Кабелди чечип, бардык зымдарда 3 ммдей жез көрүнөт.

Бул жерде зымдарды чечүү боюнча тез видео үйрөткүч:

4 -кадам: Электр энергиясын берүү

ESP32Sке иштетүү
ESP32Sке иштетүү

Эми биз электр энергиясы менен камсыздоого даярбыз!

Дайыма иштөөдө, электр булагын ажыратыңыз.

Электр өткөргүчтөрү

  • Кара зым (Фаза) электр булагынын 'L' пинине туташат
  • Ак зым (Нейтралдуу) электр булагынын 'N' төөнөгүчүнө туташат
  • Жашыл зым электр булагынын 'Жерге' төөнөгүчүнө туташат

(Эгерде сиздин электр шнуруңуздун ички зымдары биздикине окшош түстөр болбосо, коопсуз болуңуз жана схемаларды интернеттен издеңиз.)

Тестирлөө

Компьютердин кубат сымын каалаган розеткага сайыңыз. Электр энергиясындагы жашыл LED күйгүзүлүшү керек.

5 -кадам: ESP32Sти иштетүү

Сиздин ESPти карасаңыз, ар бир пиндин жанында энбелгилер болушу керек. Эгерде ал белгиленген эмес болсо, анда сиз жеке ESPтин "пинутун" онлайндан издесеңиз болот.

Эркек -ургаачы токтоочу зым же электр зымын колдонуп, туташтырыңыз:

  • '5V' ESP32S түйүнүн электр менен камсыздоонун '+V' түйүнү (жогорудагы сүрөттө кызгылт сары)
  • Электр менен камсыздоонун '-V' бөлүмүнө 'GND' ESP32S төөнөгүч (жогорудагы сүрөттө кара)

(Кээ бир ESPтерде '5V' пин 'VCC' деп белгиленген, экөө тең бир нерсени билдирет.)

Сураныч, сиздин ESP биз колдонгондон башкача "пинутага" ээ болушу мүмкүн экенин эске алыңыз. Ошентип, сиз зымдарыңызды жогорудагы сүрөттө эмес, башка жерге туташтырып жаткан болушуңуз мүмкүн. Тууралуу казыктарга (5V & GND), тактадагы физикалык жайгашуунун мааниси жок.

TestingPlug your power supply again, and if your ESP is a LED көрсөткүчү (көпчүлүгү), ал ESPке электр энергиясы жөнөтүлүп жатканын көрсөтүү үчүн күйүп калат. Куттуктайм!

6 -кадам: LED жарык тилкелерин иштетүү

LED Жарык тилкелерин иштетүү
LED Жарык тилкелерин иштетүү

Электр зымдарын колдонуу:

- LED Light Stripтин кызыл зымын электр булагына V+ туташтырыңыз.

- LED Light Stripтин көк зымын электр булагына V- ге туташтырыңыз.

7 -кадам: LED жарык тилкелерине ESP32 туташтыруу

Биздин ESP32 WS2811 драйверлеринин ар бирине туташтырылган түстү жана жарыктыкты көрсөтөт. Бул үчүн биздин ESP32ге тилкелерге "маалымат" кабели керек.

Leds тилкелери 3 зымдуу туташтыргычы менен келет:

- Кызыл: Кубат- Көк: Нейтралдуу- Ак: маалыматтар

Келгиле, White Led тилкелүү кабелин ESPтеги санариптик пинге туташтырып көрөлү. Сураныч, биз тандаган PIN номерин унутпаңыз, анткени биз аны кийинчерээк кодго тандап алышыбыз керек.

8 -кадам: Компьютерди даярдоо: C2102 драйвери

Эми биздин жабдыктарыбыз зымдуу болгондуктан, биз аны текшерүү үчүн биринчи кодду жүктөп берүүнү каалайбыз. Демейки боюнча, Windows же MacOs биздин ESP32 менен байланыша алышпайт. C2102.

Бул драйвер жүктөлүп, орнотулушу керек:

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

(Шилтемелер 7/10/2019)

9 -кадам: Arduino Программалык камсыздоо - ESP32 колдоосун кошуу - 1 -кадам

Arduino программалык камсыздоо - ESP32 колдоо кошуу - 1 -кадам
Arduino программалык камсыздоо - ESP32 колдоо кошуу - 1 -кадам
Arduino программалык камсыздоо - ESP32 колдоо кошуу - 1 -кадам
Arduino программалык камсыздоо - ESP32 колдоо кошуу - 1 -кадам

Биз ESP32ди Arduino программасы менен колдоно электе, анын таанылгандыгын текшеришибиз керек. Демейки боюнча, Arduino программасы биздин ESP32 үчүн кодду түзө албайт, муну оңдоп көрөлү:

1 -кадам: менеджерге такталарды кошуу

1 - Arduino параметрин чыкылдатыңыз Файл >> Тандоолор

2- "Кошумча такталар менеджеринин URL'дери" талаасында, төмөнкү шилтемени көчүрүңүз:

10 -кадам: Arduino программасы - ESP32 колдоосун кошуу - 2 -кадам

Arduino программалык камсыздоо - ESP32 колдоо кошуу - 2 -кадам
Arduino программалык камсыздоо - ESP32 колдоо кошуу - 2 -кадам
Arduino программалык камсыздоо - ESP32 колдоо кошуу - 2 -кадам
Arduino программалык камсыздоо - ESP32 колдоо кошуу - 2 -кадам

Эми Arduino программасы башка такталарды "билет", эми ESP32 колдообузду орнотолу

2 -кадам: ESP32 колдоосун орнотуу

1 - Жогорку менюдан тандаңыз: Куралдар >> Такта >> Такта менеджери

2 - Терезе пайда болот. "ESP32" табуу үчүн жогорку оң бурчта жайгашкан издөө кутучасын колдонуңуз.

3 - espressif жасаганды табыңыз. Орнотуу. (Сүрөттү караңыз)

11 -кадам: Arduino программасы - ESP32 колдоосун кошуу - 3 -кадам

Arduino программалык камсыздоо - ESP32 колдоо кошуу - 3 -кадам
Arduino программалык камсыздоо - ESP32 колдоо кошуу - 3 -кадам

Эми Arduino программасы биздин ESP32 менен байланыша алат, аны компьютерге туташтырып, баары иштээрин текшерели.

1 - Келгиле, биз ESP32 платформасында иштээрибизди текшерип көрөлү:

Куралдар >> Такта >> ESP32 Dev модулун басыңыз

1- Келгиле, Arduino программалык камсыздоосу биздин ESPке кантип кайрылууну билет:

Куралдар >> Портуна чыкылдатыңыз жана бул кабелди туташтыруудан пайда болгонун тандаңыз.

Маанилүү:

Эгерде сизде ESPке кодду жүктөөдө кандайдыр бир көйгөй бар болсо, адегенде ошол эки менюну текшериңиз, эгер порт текшерүү белгиси менен тандалбаса, анда Arduino программасы аны менен байланышпайт.

12 -кадам: Arduino IDEге китепканаларды кошуу

Китепканаларды Arduino IDEге кошуу
Китепканаларды Arduino IDEге кошуу

Эми биз LED дубалыбызды сынап көрүүгө мүмкүндүк бере турган китепкана кошобуз!

1- Куралдарга басыңыз >> Китепканаларды башкаруу.

2- Жогорку оң бурчта, NeoPixelBus издеңиз. "NeunaPixelBus by Makuna" дегенди таап, аны орнотуңуз (сүрөттү караңыз)

Потенциалдуу башка кызыктуу китепканалар: (Бул окуу куралы үчүн талап кылынбайт)

- NeoMatrix

- FastLed

- Artnet

- GFX

13 -кадам: Биринчи код: Strand Test

Биздин биринчи код Китепканадан мисал.

Төмөндөгү кодду көчүрүп / чаптап же чыкылдатыңыз:

Файл >> Мисалдар >> Adafruit NeoPixelBus >> Strandtest

Сураныч, сиздин LED_PINиңизди ледтерди физикалык түрдө туташтырганга алмаштырганыңызды текшериңиз.

Жиптин өлчөмүн LED_COUNT өзгөрмөсү менен ылайыкташтырууну унутпаңыз.

// Негизги күнүмдүк LED Striptest программасы.

#include #ifdef _AVR_ #include // 16 МГц үчүн керектүү Adafruit Trinket #endif // Arduinoдогу кайсы пин NeoPixelsке туташкан? #define LED_PIN 13 // Ардуиного канча NeoPixels тиркелет? #define LED_COUNT 500 // Биздин NeoPixel тилке объектибизди жарыялайбыз: Adafruit_NeoPixel тилкеси (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // Аргумент 1 = NeoPixel тилкесиндеги пикселдердин саны // Аргумент 2 = Arduino пин номери (көбү жарактуу) // Аргумент 3 = Пикселдин түрүндөгү желектер, керек болгондо кошуңуз: // NEO_KHZ800 800 KHz бит агымы (NeoPixel продуктуларынын көбү/ WS2812 LED) // NEO_KHZ400 400 KHz (классикалык 'v1' (v2 эмес) FLORA пикселдери, WS2811 драйверлери) // NEO_GRB Пикселдери GRB бит агымы үчүн зымдуу (NeoPixelдин көпчүлүк продуктулары) // NEO_RGB Пикселдери RGB бит агымы үчүн (v1 FLORA пикселдери), v2 эмес) // NEO_RGBW Пикселдери RGBW bitstream (NeoPixel RGBW продуктулары) үчүн орнотулган // setup () функциясы-башталганда бир жолу иштейт -------------------- ------------ void setup () {// Бул линиялар атайын Adafruit Trinket 5V 16 MHz колдоого арналган. // Башка каалаган такта, сиз бул бөлүктү алып салсаңыз болот (бирок андан эч кандай зыяны жок): #if аныкталган болсо (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // Trinketке тиешелүү коддун аягы. strip.begin (); // INITIALIZE NeoPixel тилкесинин объектиси (КЕРЕКТҮҮ) strip.show (); // Бардык пикселдерди ASAP strip.setBrightness өчүрүү (50); // BRIGHTNESSти болжол менен 1/5ке коюңуз (max = 255)} // loop () функциясы-такта күйүп турганда кайра-кайра иштейт --------------- void loop () {// Тилкенин узундугун ар кандай түстө толтуруңуз … colorWipe (strip. Color (255, 0, 0), 50); // Red colorWipe (strip. Color (0, 255, 0), 50); // Green colorWipe (strip. Color (0, 0, 255), 50); // Көк // Театр эффектин ар кандай түстө кылыңыз… TheaterChase (strip. Color (127, 127, 127), 50); // Ак, жарым жарыктык театрChase (тилке. Color (127, 0, 0), 50); // Кызыл, жарым жарыктык театрChase (тилке. Color (0, 0, 127), 50); // Көк, жарым жаркыраган асан -үсөн (10); // Бүтүндөй тилке театрында аккан асан -үсөн циклиChaseRainbow (50); // Радуга менен өркүндөтүлгөн театрChase варианты} // Анимацияланган эффекттерди түзүү үчүн өзүбүздүн кээ бир функцияларыбыз ----------------- // Тизме пикселдерин биринин артынан бири толтуруңуз. Strip тазаланган эмес // биринчи; анда пиксел менен пикселдин баары жабылат. Түстөн өтүңүз // (бир "пакеттелген" 32-бит мааниси катары, сиз чала аласыз // strip. Color (кызыл, жашыл, көк) жогорудагы loop () функциясында көрсөтүлгөндөй), жана пикселдердин ортосундагы кечигүү убактысы (миллисекундтарда). void colorWipe (uint32_t color, int wait) {for (int i = 0; i strip.setPixelColor (i, color); // Пикселдин түсүн коюу (RAMде) strip.show (); күтө туруңуз; // Бир азга тыныгуу}} // Театралдык стильдеги кубалоочу жарыктар. Түстөн өтүңүз (32-бит мааниси, // a la strip. Түс (r, g, b) жогоруда айтылгандай), жана кечигүү убактысы (мс менен) // кадрлардын ортосунда. void teatrChase (uint32_t color, int wait) {for (int a = 0; a <10; a ++) {// 10 жолу кайталаңыз… үчүн (int b = 0; b <3; b ++) {// 'b' 0дон 2ге чейин санайт… strip.clear (); // RAMдеги бардык пикселдерди 0 (өчүрүү) кылып коюңуз // 'c' 'b' ден башына чейин санайт 3 кадам менен стриптиз үчүн… (күтө туруңуз); // Бир азга тыныгуу}}} // Радуга циклинин бүтүндөй тилкеси. Кадрлардын ортосундагы кечиктирүү убактысын (мс менен) өткөрүңүз. void rainbow (int wait) {// Биринчи пикселдин түсү 5 толук цикл аркылуу өтөт түстүү дөңгөлөк. // Түстүү дөңгөлөк 65536 диапазонуна ээ, бирок ал Макул, эгер биз оодарыла турган болсок, анда // жөн гана 0дөн 5ке чейин санаңыз*65536. FirstPixelHue'ге ар бир жолу 256 кошуу // бул тышкы цикл аркылуу 5*65536/256 = 1280 өтүүнү жасайбыз дегенди билдирет: for (long firstPixelHue = 0; firstPixelHue <5*65536; firstPixelHue += 256) {for (int i = 0; I // Пиксель түсүн бир өлчөмгө алмаштыруу // түстүү дөңгөлөктүн (65536 диапазону) тилкенин узундугу боюнча // (strip.numPixels () кадамдар) боюнча: int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels ()); // strip. ColorHSV () 1 же 3 аргументти кабыл алышы мүмкүн: түсү (0ден 65535ке чейин) же // ыктыярдуу түрдө каныктыруу жана баалуулукту (жарыктыкты) кошуу (ар бири 0дон 255ке чейин). // Бул жерде биз бир гана аргумент түстүү вариантты колдонуп жатабыз. Жыйынтык // ар бир пикселге дайындалар алдында "чыныгы" түстөрдү берүү үчүн strip.gamma32 () аркылуу өтөт // strip.setPixelColor (i, strip.gamma32 (strip. ColorHSV (pixelHue))))}}} strip.show (); // Жаңы мазмунду кечиктирүү менен жаңыртуу (күтүү); // Бир азга тыныгуу}} // Радуга менен өркүндөтүлгөн театр маркасы. Кечиктирүү убактысын өткөрүү (жылы менен) ms) кадрлар арасында. void театрChaseRainbow (int wait) {i nt firstPixelHue = 0; // Биринчи пиксель (int a = 0; a <30; a ++) үчүн кызылдан (hue 0) башталат {// 30 жолу кайталаңыз … үчүн (int b = 0; b RGB strip.setPixelColor (c, color); / / "C" пикселин "түс" маанисине коюңуз} strip.show (); // Жаңы мазмундун кечигүүсү менен тилкени жаңыртыңыз (күтө туруңуз); // Бир азга тыныгуу кылыңызPixelHue += 65536 /90; // Түстүү дөңгөлөктүн бир айлампасы 90дон ашык кадр}}}

14 -кадам: SHU Sample Code

Image
Image

Биздин код бардык Леддерди бирден иштетет, алар иштээрине ынануу үчүн:

// Бул мисал 500 пикселди Кызыл кылып көрсөтүү ортосунда айланат

#incinteconst uint16_t PixelCount = 500; // бул мисал 4 пикселди кабыл алат, аны кичирейтүү const uint8_t PixelPin = 13 ката кетирет; // Esp8266 үчүн этибарга алынбаган, муну туура пинге койгонуңузду текшериңиз

#define colorSaturation 128 // үч элемент пиксел, ар кандай тартипте жана ылдамдыкта

NeoPixelBus тилкеси (PixelCount, PixelPin);

// NeoPixelBus тилкеси (PixelCount, PixelPin); RgbColor кызыл (0, colorSaturation, 0); RgbColor жашыл (colorSaturation, 0, 0); RgbColor көк (0, 0, colorSaturation); RgbColor ак (colorSaturation); RgbColor кара (0); HslColor hslRed (кызыл); HslColor hslGreen (жашыл); HslColor hslBlue (көк); HslColor hslWhite (ак); HslColor hslBlack (кара); void setup () {Serial.begin (115200) while (! Serial); // сериялык тиркемени күтө туруңуз Serial.println (); Serial.println ("Башталууда…"); Serial.flush (); // бул бардык неопикселдерди өчүрүлгөн абалга келтирет. Begin (); strip. Show (); Serial.println (); Serial.println ("Иштеп жатат …"); } void loop () {delay (100); Serial.println ("Түстөр R, G, B, W…"); үчүн (int i = 0; i <= 499; i ++) {// түстөрдү коюңуз, // эгерде алар дал келбесе, NeoGrbFeature функция тилкесин колдонуу керек. SetPixelColor (i, кызыл); strip. Show (); кечиктирүү (100); strip. SetPixelColor (i, hslRed); strip. Show (); кечиктирүү (100); }}

15 -кадам: ESP32ге кодду жүктөө

Маанилүү:

Кодду каалаган микро контроллерге жүктөө үчүн, ал программалоо режиминде болушу керек. Көбүнчө муну автоматтык түрдө жасоо керек жана программанын жүктөө баскычын басуу жетиштүү.

Биздин ESP32 кодду жөнөтүү учурунда программалоо баскычын кармап турууну талап кылат. Ошондой эле, кодду жүктөө баскычын бир жолу басуу менен, аны баштапкы абалга келтирүү керек.

Биздин ESP32дин программалоо баскычы сол жакта, оңго басуу баскычы оң жакта. Эгерде башка микро контроллериңиз болсо, колдонмого кайрылыңыз.

16 -кадам: цитаталар

Бул көрсөтмө төмөнкү окуу куралдарынын жардамы менен жасалган:

randomnerdtutorials.com/installing-the-esp…

ESP32ди Arduino IDEге орнотуу үчүн колдонулат.

Авторлор:

Натаниэль Бароне Габриэль Кастро

Редактор:

Седрик Блеймлинг

Сунушталууда: