ESP32 Basic Starter
Камплект
Пакавальны ліст
ESP32 Увядзенне
Упершыню ў ESP32? Пачні тут! ESP32 - гэта серыя недарагіх і маламагутных мікракантролераў сістэмы на чыпе (SoC), распрацаваных Espressif, якія ўключаюць магчымасці бесправадной сувязі Wi-Fi і Bluetooth і двух'ядравы працэсар. Калі вы знаёмыя з ESP8266, ESP32 з'яўляецца яго пераемнікам з мноствам новых функцый.Тэхнічныя характарыстыкі ESP32
Калі вы хочаце атрымаць крыху больш тэхнічную і канкрэтную інфармацыю, вы можаце зірнуць на наступныя падрабязныя характарыстыкі ESP32 (крыніца: http://esp32.net/)—падрабязней, праверыць табліцу дадзеных):
- Бесправадное падключэнне WiFi: хуткасць перадачы дадзеных 150.0 Мбіт/с з HT40
- Bluetooth: BLE (Bluetooth Low Energy) і Bluetooth Classic
- Працэсар: двух'ядравы 32-разрадны мікрапрацэсар Tensilica Xtensa LX6 з частатой 160 або 240 МГц
- Памяць:
- ПЗУ: 448 КБ (для загрузкі і асноўных функцый)
- SRAM: 520 КБ (для дадзеных і інструкцый)
- RTC хуткая SRAM: 8 КБ (для захоўвання дадзеных і асноўнага працэсара падчас загрузкі RTC з рэжыму глыбокага сну)
- RTC павольная SRAM: 8 КБ (для доступу да супрацэсара ў рэжыме глыбокага сну) eFuse: 1 Кбіт (з якіх 256 біт выкарыстоўваюцца для сістэмы (MAC-адрас і канфігурацыя чыпа), а астатнія 768 біт зарэзерваваны для прыкладанняў кліента, у тым ліку Flash-шыфраванне і Chip-ID)
Убудаваная ўспышка: унутраная ўспышка падлучана праз IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 і SD_DATA_1 на ESP32-D2WD і ESP32-PICO-D4.
- 0 МіБ (чыпы ESP32-D0WDQ6, ESP32-D0WD і ESP32-S0WD)
- 2 МіБ (чып ESP32-D2WD)
- 4 МіБ (модуль ESP32-PICO-D4 SiP)
Нізкая магутнасць: гарантуе, што вы ўсё яшчэ можаце выкарыстоўваць пераўтварэнні АЦП, напрыкладampле, падчас глыбокага сну.
Перыферыйны ўваход/выхад:
- перыферыйны інтэрфейс з DMA, які ўключае ёмістны сэнсарны
- АЦП (аналага-лічбавы пераўтваральнік)
- ЦАП (лічба-аналагавы пераўтваральнік)
- I²C (інтэгральная схема)
- UART (універсальны асінхронны прыёмнік/перадатчык)
- SPI (паслядоўны перыферыйны інтэрфейс)
- I²S (інтэграваны міжчыпны гук)
- RMII (скарочаны незалежны ад медыя інтэрфейс)
- ШІМ (шыротна-імпульсная мадуляцыя)
Бяспека: апаратныя паскаральнікі для AES і SSL/TLS
Платы развіцця ESP32
ESP32 адносіцца да голага чыпа ESP32. Аднак тэрмін «ESP32» таксама выкарыстоўваецца для абазначэння плат развіцця ESP32. Выкарыстоўваць голыя чыпы ESP32 няпроста і не практычна, асабліва падчас навучання, тэсціравання і стварэння прататыпаў. Большую частку часу вы захочаце выкарыстоўваць плату распрацоўкі ESP32.
Мы будзем выкарыстоўваць плату ESP32 DEVKIT V1 у якасці эталона. На малюнку ніжэй паказана плата ESP32 DEVKIT V1, версія з 30 кантактамі GPIO.Тэхнічныя характарыстыкі – ESP32 DEVKIT V1
У наступнай табліцы прыведзены кароткі змест функцый і спецыфікацый платы ESP32 DEVKIT V1 DOIT:
Колькасць ядраў | 2 (двух'ядравы) |
Wi-Fi | 2.4 ГГц да 150 Мбіт/с |
Bluetooth | BLE (Bluetooth Low Energy) і стары Bluetooth |
Архітэктура | 32 біт |
Тактавая частата | Да 240 Мгц |
АЗП | 512 КБ |
Шпількі | 30 (у залежнасці ад мадэлі) |
Перыферыйныя прылады | Ёмістны сэнсарны, АЦП (аналагава-лічбавы пераўтваральнік), ЦАП (лічба-аналагавы пераўтваральнік), 12C (інтэртэгральная схема), UART (універсальны асінхронны прыёмнік/перадатчык), CAN 2.0 (кантролерная сетка), SPI (паслядоўны перыферыйны інтэрфейс) , 12S (Integrated Inter-IC Гук), RMII (паменшаны медыя-незалежны інтэрфейс), ШІМ (шыротна-імпульсная мадуляцыя) і многае іншае. |
Убудаваныя кнопкі | Кнопкі RESET і BOOT |
Убудаваныя святлодыёды | убудаваны сіні святлодыёд, падлучаны да GPIO2; убудаваны чырвоны святлодыёд, які паказвае, што плата сілкуецца |
USB да UART мост |
CP2102 |
Ён пастаўляецца з інтэрфейсам microUSB, які можна выкарыстоўваць для падлучэння платы да кампутара для загрузкі кода або падключэння харчавання.
Ён выкарыстоўвае чып CP2102 (USB да UART) для сувязі з вашым кампутарам праз COM-порт з дапамогай паслядоўнага інтэрфейсу. Яшчэ адзін папулярны чып - CH340. Праверце, што такое пераўтваральнік мікрасхемы USB у UART на вашай плаце, таму што вам трэба будзе ўсталяваць неабходныя драйверы, каб ваш камп'ютар мог звязвацца з платай (дадатковая інфармацыя пра гэта далей у гэтым кіраўніцтве).
Гэтая плата таксама пастаўляецца з кнопкай RESET (можа быць пазначана EN) для перазапуску платы і кнопкай BOOT для пераводу платы ў рэжым мігцення (даступна для атрымання кода). Звярніце ўвагу, што некаторыя платы могуць не мець кнопкі BOOT.
Ён таксама пастаўляецца з убудаваным сінім святлодыёдам, які ўнутрана падлучаны да GPIO 2. Гэты святлодыёд карысны для адладкі, каб даць нейкі візуальны фізічны выхад. Ёсць таксама чырвоны святлодыёд, які загараецца, калі вы падаеце харчаванне на плату.Распиновка ESP32
Перыферыйныя прылады ESP32 ўключаюць:
- 18 каналаў аналага-лічбавага пераўтваральніка (АЦП).
- 3 інтэрфейсы SPI
- 3 інтэрфейсу UART
- 2 інтэрфейсы I2C
- 16 выхадных канала ШІМ
- 2 лічбава-аналагавыя пераўтваральнікі (ЦАП)
- 2 інтэрфейсы I2S
- 10 ёмістных GPIO
Функцыі АЦП (аналагава-лічбавы пераўтваральнік) і ЦАП (лічба-аналагавы пераўтваральнік) прызначаны для пэўных статычных кантактаў. Тым не менш, вы можаце вырашыць, якія кантакты з'яўляюцца UART, I2C, SPI, ШІМ і г.д. - вам проста трэба прызначыць іх у кодзе. Гэта магчыма дзякуючы функцыі мультыплексавання чыпа ESP32.
Хаця вы можаце вызначыць уласцівасці штыфтаў у праграмным забеспячэнні, ёсць штыфты, прызначаныя па змаўчанні, як паказана на наступным малюнкуАкрамя таго, ёсць шпількі са спецыфічнымі асаблівасцямі, якія робяць іх прыдатнымі або непрыдатнымі для канкрэтнага праекта. У наступнай табліцы паказана, якія кантакты лепш за ўсё выкарыстоўваць у якасці ўваходаў і выхадаў, а з якімі трэба быць асцярожнымі.
Шпількі, вылучаныя зялёным, можна выкарыстоўваць. Выдзеленыя жоўтым колерам прыдатныя для выкарыстання, але вам трэба звярнуць увагу, таму што яны могуць паводзіць сябе нечакана ў асноўным падчас загрузкі. Вывады, вылучаныя чырвоным, не рэкамендуецца выкарыстоўваць у якасці ўваходаў або выхадаў.
GP IO | Увод | Выхад | Заўвагі |
0 | падцягнуўся | OK | выдае ШІМ-сігнал пры загрузцы, для ўваходу ў рэжым мігцення павінен быць нізкі ўзровень |
1 | Штыфт TX | OK | вывад адладкі пры загрузцы |
2 | OK | OK | падлучаны да бартавога святлодыёда, павінен быць пакінуты плаваючым або LOW, каб перайсці ў рэжым мігцення |
3 | OK | Штыфт RX | ВЫСОКАЯ пры загрузцы |
4 | OK | OK | |
5 | OK | OK | выводзіць сігнал ШІМ пры загрузцы, штыфт для абвязкі |
12 | OK | OK | загрузка выходзіць з ладу, калі цягнуць высока, шпілька для рамяня |
13 | OK | OK | |
14 | OK | OK | выдае сігнал ШІМ пры загрузцы |
15 | OK | OK | выводзіць сігнал ШІМ пры загрузцы, штыфт для абвязкі |
16 | OK | OK | |
17 | OK | OK | |
18 | OK | OK | |
19 | OK | OK | |
21 | OK | OK | |
22 | OK | OK | |
23 | OK | OK | |
25 | OK | OK | |
26 | OK | OK | |
27 | OK | OK | |
32 | OK | OK | |
33 | OK | OK | |
34 | OK | толькі ўвод | |
35 | OK | толькі ўвод | |
36 | OK | толькі ўвод | |
39 | OK | толькі ўвод |
Працягвайце чытаць, каб атрымаць больш падрабязны і глыбокі аналіз ESP32 GPIO і яго функцый.
Увядзіце толькі шпількі
GPIO з 34 па 39 з'яўляюцца GPI - кантакты толькі для ўводу. Гэтыя штыфты не маюць унутраных падцягваючых або адцягваючых рэзістараў. Іх нельга выкарыстоўваць як выхады, таму выкарыстоўвайце гэтыя кантакты толькі як ўваходы:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
Ўспышка SPI інтэграваная ў ESP-WROOM-32
GPIO 6 - GPIO 11 прадстаўлены ў некаторых платах распрацоўкі ESP32. Аднак гэтыя штыфты падключаюцца да ўбудаванай флэшкі SPI на чыпе ESP-WROOM-32 і не рэкамендуюцца для іншых мэтаў. Такім чынам, не выкарыстоўвайце гэтыя шпількі ў сваіх праектах:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
Ёмістныя сэнсарныя GPIO
ESP32 мае 10 унутраных ёмістных сэнсарных датчыкаў. Яны могуць адчуваць змены ва ўсім, што ўтрымлівае электрычны зарад, напрыклад, у скуры чалавека. Такім чынам, яны могуць выяўляць змены, выкліканыя дакрананнем да GPIO пальцам. Гэтыя штыфты можна лёгка інтэграваць у ёмістныя накладкі і замяніць механічныя кнопкі. Ёмістыя сэнсарныя штыфты таксама можна выкарыстоўваць для выхаду ESP32 з глыбокага сну. Гэтыя ўнутраныя сэнсарныя датчыкі падключаны да наступных GPIO:
- T0 (GPIO 4)
- T1 (GPIO 0)
- T2 (GPIO 2)
- T3 (GPIO 15)
- T4 (GPIO 13)
- T5 (GPIO 12)
- T6 (GPIO 14)
- T7 (GPIO 27)
- T8 (GPIO 33)
- T9 (GPIO 32)
Аналага-лічбавы пераўтваральнік (АЦП)
ESP32 мае 18 х 12-бітных уваходных каналаў АЦП (у той час як ESP8266 мае толькі 1 х 10-бітны АЦП). Гэта GPIO, якія можна выкарыстоўваць у якасці АЛП і адпаведных каналаў:
- ADC1_CH0 (GPIO 36)
- ADC1_CH1 (GPIO 37)
- ADC1_CH2 (GPIO 38)
- ADC1_CH3 (GPIO 39)
- ADC1_CH4 (GPIO 32)
- ADC1_CH5 (GPIO 33)
- ADC1_CH6 (GPIO 34)
- ADC1_CH7 (GPIO 35)
- ADC2_CH0 (GPIO 4)
- ADC2_CH1 (GPIO 0)
- ADC2_CH2 (GPIO 2)
- ADC2_CH3 (GPIO 15)
- ADC2_CH4 (GPIO 13)
- ADC2_CH5 (GPIO 12)
- ADC2_CH6 (GPIO 14)
- ADC2_CH7 (GPIO 27)
- ADC2_CH8 (GPIO 25)
- ADC2_CH9 (GPIO 26)
Заўвага: Кантакты ADC2 нельга выкарыстоўваць, калі выкарыстоўваецца Wi-Fi. Такім чынам, калі вы карыстаецеся Wi-Fi і ў вас узніклі праблемы з атрыманнем значэння з ADC2 GPIO, вы можаце разгледзець магчымасць выкарыстання замест гэтага ADC1 GPIO. Гэта павінна вырашыць вашу праблему.
Уваходныя каналы АЦП маюць 12-бітнае дазвол. Гэта азначае, што вы можаце атрымаць аналагавыя паказанні ў дыяпазоне ад 0 да 4095, у якіх 0 адпавядае 0 В, а 4095 - 3.3 В. Вы таксама можаце ўсталяваць дазвол вашых каналаў па кодзе і дыяпазоне АЦП.
Штыфты АЦП ESP32 не маюць лінейных паводзін. Верагодна, вы не зможаце адрозніць паміж 0 і 0.1 В або паміж 3.2 і 3.3 В. Вы павінны мець гэта на ўвазе пры выкарыстанні кантактаў АЦП. Вы атрымаеце паводзіны, падобныя да таго, што паказана на наступным малюнку.Лічба-аналагавы пераўтваральнік (ЦАП)
На ESP2 ёсць 8 х 32-бітныя каналы ЦАП для пераўтварэння лічбавых сігналаў у аналагавыяtagэлектронныя сігнальныя выхады. Гэта каналы DAC:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIO
У ESP32 ёсць падтрымка RTC GPIO. Інтэрфейсы GPIO, накіраваныя ў падсістэму RTC з нізкім энергаспажываннем, можна выкарыстоўваць, калі ESP32 знаходзіцца ў глыбокім сне. Гэтыя RTC GPIO могуць быць выкарыстаны для выхаду ESP32 з глыбокага сну, калі Ultra Low
Капрацэсар Power (ULP) працуе. Наступныя GPIO можна выкарыстоўваць у якасці вонкавай крыніцы абуджэння.
- RTC_GPIO0 (GPIO36)
- RTC_GPIO3 (GPIO39)
- RTC_GPIO4 (GPIO34)
- RTC_GPIO5 (GPIO35)
- RTC_GPIO6 (GPIO25)
- RTC_GPIO7 (GPIO26)
- RTC_GPIO8 (GPIO33)
- RTC_GPIO9 (GPIO32)
- RTC_GPIO10 (GPIO4)
- RTC_GPIO11 (GPIO0)
- RTC_GPIO12 (GPIO2)
- RTC_GPIO13 (GPIO15)
- RTC_GPIO14 (GPIO13)
- RTC_GPIO15 (GPIO12)
- RTC_GPIO16 (GPIO14)
- RTC_GPIO17 (GPIO27)
ШІМ
ШІМ-кантролер ESP32 LED мае 16 незалежных каналаў, якія можна наладзіць для генерацыі ШІМ-сігналаў з рознымі ўласцівасцямі. Усе кантакты, якія могуць дзейнічаць як выхады, можна выкарыстоўваць як кантакты ШІМ (GPIO 34-39 не могуць генераваць ШІМ).
Каб усталяваць ШІМ-сігнал, неабходна вызначыць у кодзе наступныя параметры:
- частата сігналу;
- Працоўны цыкл;
- канал ШІМ;
- GPIO, дзе вы хочаце вывесці сігнал.
I2C
ESP32 мае два канала I2C, і любы кантакт можа быць усталяваны як SDA або SCL. Пры выкарыстанні ESP32 з Arduino IDE кантакты I2C па змаўчанні:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Калі вы хочаце выкарыстоўваць іншыя кантакты пры выкарыстанні бібліятэкі правадоў, вам проста трэба патэлефанаваць:
Wire.begin(SDA, SCL);
SPI
Па змаўчанні супастаўленне кантактаў для SPI наступнае:
SPI | МОСІ | МІСО | CLK | CS |
ВСПІ | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Перабівае
Усе GPIO можна наладзіць як перапыненні.
Шпількі
Мікрасхема ESP32 мае наступныя шпількі для абвязкі:
- GPIO 0 (для ўваходу ў рэжым загрузкі павінен быць НІЗКІ)
- GPIO 2 (павінен быць плаваючым або НІЗКІМ падчас загрузкі)
- GPIO 4
- GPIO 5 (павінен быць HIGH падчас загрузкі)
- GPIO 12 (павінен быць LOW падчас загрузкі)
- GPIO 15 (павінен быць HIGH падчас загрузкі)
Яны выкарыстоўваюцца для пераключэння ESP32 у рэжым загрузніка або флэшкі. На большасці плат распрацоўкі з убудаваным USB/паслядоўным портам вам не трэба турбавацца аб стане гэтых кантактаў. Плата пераводзіць кантакты ў патрэбны стан для рэжыму перапрашыўкі або загрузкі. Дадатковую інфармацыю аб выбары рэжыму загрузкі ESP32 можна знайсці тут.
Аднак, калі ў вас ёсць перыферыйныя прылады, падлучаныя да гэтых кантактаў, у вас могуць узнікнуць праблемы з загрузкай новага кода, прашыўкай ESP32 новай прашыўкай або скідам налад платы. Калі ў вас ёсць некаторыя перыферыйныя прылады, падлучаныя да шпілек для абвязкі, і ў вас узнікаюць праблемы з загрузкай кода або прашыўкай ESP32, гэта можа быць таму, што гэтыя перыферыйныя прылады перашкаджаюць ESP32 перайсці ў правільны рэжым. Прачытайце дакументацыю па выбары рэжыму загрузкі, каб накіраваць вас у правільным кірунку. Пасля скіду, перапрашыўкі або загрузкі гэтыя кантакты працуюць належным чынам.
Штыфты ВЫСОКА пры загрузцы
Некаторыя GPIO мяняюць свой стан на HIGH або выводзяць сігналы ШІМ пры загрузцы або скідзе.
Гэта азначае, што калі ў вас ёсць выхады, падлучаныя да гэтых GPIO, вы можаце атрымаць нечаканыя вынікі пры скідзе або загрузцы ESP32.
- GPIO 1
- GPIO 3
- GPIO 5
- Ад GPIO 6 да GPIO 11 (падключана да флэш-памяці SPI, інтэграванай у ESP32 – не рэкамендуецца выкарыстоўваць).
- GPIO 14
- GPIO 15
Уключыць (EN)
Enable (EN) - гэта штыфт уключэння рэгулятара 3.3 В. Ён падцягнуты, таму падключыце да зямлі, каб адключыць рэгулятар 3.3 В. Гэта азначае, што вы можаце выкарыстоўваць гэты кантакт, падлучаны да кнопкі, каб перазапусціць ESP32, напрыкладampле.
Спажываны ток GPIO
Абсалютны максімальны ток, спажываны на GPIO, складае 40 мА ў адпаведнасці з раздзелам «Рэкамендуемыя ўмовы эксплуатацыі» ў табліцы дадзеных ESP32.
ESP32 Убудаваны датчык Хола
ESP32 таксама мае ўбудаваны датчык Хола, які вызначае змены ў магнітным полі ў навакольным асяроддзі
ESP32 Arduino IDE
Ёсць надбудова для Arduino IDE, якая дазваляе праграмаваць ESP32 з дапамогай Arduino IDE і яе мовы праграмавання. У гэтым уроку мы пакажам вам, як усталяваць плату ESP32 у Arduino IDE незалежна ад таго, выкарыстоўваеце вы Windows, Mac OS X або Linux.
Патрабаванні: усталявана Arduino IDE
Перш чым пачаць гэтую працэдуру ўстаноўкі, вам неабходна ўсталяваць на вашым кампутары Arduino IDE. Ёсць дзве версіі Arduino IDE, якія вы можаце ўсталяваць: версія 1 і версія 2.
Вы можаце спампаваць і ўсталяваць Arduino IDE, націснуўшы на наступную спасылку: arduino.cc/en/Main/Software
Якую версію Arduino IDE мы рэкамендуем? На дадзены момант ёсць некаторыя plugins для ESP32 (напрыклад, SPIFFS FileSystem Uploader Plugin), якія яшчэ не падтрымліваюцца на Arduino 2. Такім чынам, калі вы збіраецеся выкарыстоўваць убудова SPIFFS у будучыні, мы рэкамендуем усталяваць старую версію 1.8.X. Вам проста трэба пракруціць старонку праграмнага забеспячэння Arduino ўніз, каб знайсці яго.
Устаноўка надбудовы ESP32 у Arduino IDE
Каб усталяваць плату ESP32 у Arduino IDE, выканайце наступныя інструкцыі:
- У вашай Arduino IDE перайдзіце да File> Налады
- Увядзіце наступнае ў «Additional Board Manager URLs» поле:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Затым націсніце кнопку «ОК»:Заўвага: калі ў вас ужо ёсць платы ESP8266 URL, вы можаце аддзяліць URLs праз коску наступным чынам:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Адкрыйце дыспетчар дошак. Перайдзіце ў Інструменты > Дошка > Дыспетчар дошак…Пошук ESP32 and press install button for the “ESP32 by Espressif Systems“:
Вось і ўсё. Ён павінен быць усталяваны праз некалькі секунд.
Загрузіць тэставы код
Падключыце плату ESP32 да кампутара. Адкрыўшы Arduino IDE, выканайце наступныя дзеянні:
- Выберыце сваю дошку ў меню Інструменты > Дошка (у маім выпадку гэта модуль ESP32 DEV)
- Выберыце порт (калі вы не бачыце COM-порт у вашай IDE Arduino, вам трэба ўсталяваць драйверы VCP CP210x USB to UART Bridge):
- Адкрыйце наступны прыкладampле пад File > Напрыкладampлес > WiFi
(ESP32) > WiFiScan - У вашай Arduino IDE адкрыецца новы эскіз:
- Націсніце кнопку «Загрузіць» у IDE Arduino. Пачакайце некалькі секунд, пакуль код кампілюецца і загружаецца на вашу дошку.
- Калі ўсё прайшло, як чакалася, вы павінны ўбачыць надпіс «Запампоўка выканана». паведамленне.
- Адкрыйце Arduino IDE Serial Monitor з хуткасцю 115200 бод:
- Націсніце кнопку ESP32 на борце Enable, і вы павінны ўбачыць сеткі, даступныя побач з вашым ESP32:
Ліквідацыю непаладак
Калі вы спрабуеце загрузіць новы эскіз на свой ESP32 і атрымліваеце паведамленне пра памылку «Адбылася фатальная памылка: не ўдалося падключыцца да ESP32: час чакання скончыўся… Падключэнне…». Гэта азначае, што ваш ESP32 не знаходзіцца ў рэжыме прашыўкі/загрузкі.
Выбраўшы правільную назву дошкі і COM-порт, выканайце наступныя дзеянні:
Утрымлівайце кнопку «BOOT» на плаце ESP32
- Націсніце кнопку «Загрузіць» у IDE Arduino, каб загрузіць эскіз:
- Пасля таго, як вы ўбачыце «Падключэнне…». у вашай Arduino IDE, адпусціце палец ад кнопкі «BOOT»:
- Пасля гэтага вы павінны ўбачыць паведамленне «Гатова запампоўка».
Вось і ўсё. Ваш ESP32 павінен запусціць новы эскіз. Націсніце кнопку «ENABLE», каб перазапусціць ESP32 і запусціць новы запампаваны эскіз.
Вам таксама прыйдзецца паўтараць гэтую паслядоўнасць кнопак кожны раз, калі вы хочаце загрузіць новы эскіз.
Праект 1 ESP32 Уваходы Выхады
У гэтым кіраўніцтве па пачатку працы вы даведаецеся, як чытаць лічбавыя ўваходы, такія як кнопкавы перамыкач, і кіраваць лічбавымі выхадамі, напрыклад, святлодыёдамі, з дапамогай ESP32 з Arduino IDE.
Перадумовы
Мы запраграмуем ESP32 з дапамогай Arduino IDE. Такім чынам, перш чым працягнуць, пераканайцеся, што ў вас усталяваны дадатковы кампанент для плат ESP32:
- Устаноўка надбудовы ESP32 у Arduino IDE
Лічбавыя выхады кіравання ESP32
Спачатку вам трэба ўсталяваць GPIO, якім вы хочаце кіраваць, як ВЫХОД. Выкарыстоўвайце функцыю pinMode() наступным чынам:
pinMode(GPIO, ВЫХОД);
Каб кантраляваць лічбавы выхад, вам проста трэба выкарыстоўваць функцыю digitalWrite(), якая прымае ў якасці аргументаў GPIO (нумар int), які вы маеце на ўвазе, і стан, альбо HIGH, альбо LOW.
digitalWrite(GPIO, STATE);
Усе GPIO можна выкарыстоўваць у якасці выхадаў, за выключэннем GPIO з 6 па 11 (падключаны да ўбудаванай флэш-памяці SPI) і GPIO 34, 35, 36 і 39 (GPIO толькі для ўваходу);
Даведайцеся больш пра ESP32 GPIO: даведачнае кіраўніцтва па ESP32 GPIO
ESP32 Чытанне лічбавых уваходаў
Спачатку ўсталюйце GPIO, які вы хочаце прачытаць як INPUT, выкарыстоўваючы функцыю pinMode() наступным чынам:
pinMode(GPIO, INPUT);
Каб прачытаць лічбавы ўвод, напрыклад кнопку, вы выкарыстоўваеце функцыю digitalRead(), якая прымае ў якасці аргумента GPIO (нумар int), на які вы спасылаецеся.
лічбавае чытанне (GPIO);
Усе ESP32 GPIO могуць быць выкарыстаны ў якасці ўваходаў, за выключэннем GPIO з 6 па 11 (падлучаны да ўбудаванай флэш-памяці SPI).
Даведайцеся больш пра ESP32 GPIO: даведачнае кіраўніцтва па ESP32 GPIO
Праект Example
Каб паказаць вам, як выкарыстоўваць лічбавыя ўваходы і лічбавыя выхады, мы створым просты праект напрample з кнопкай і святлодыёдам. Мы прачытаем стан кнопкі і загарым святлодыёд адпаведна, як паказана на наступным малюнку.
Неабходныя дэталі
Вось спіс частак, неабходных для стварэння схемы:
- ESP32 DEVKIT V1
- 5 мм святлодыёд
- Рэзістар 220 Ом
- Кнопка
- Рэзістар 10 кОм
- Макетная дошка
- Перамычкі
Прынцыповая схема
Перш чым працягнуць, вам трэба сабраць схему са святлодыёдам і кнопкай.
Мы падключым святлодыёд да GPIO 5, а кнопку - да GPIO 4.Код
Адкрыйце код Project_1_ESP32_Inputs_Outputs.ino ў arduino IDEЯк працуе Кодэкс
У наступных двух радках вы ствараеце зменныя для прызначэння шпілек:
Кнопка падключана да GPIO 4, а святлодыёд падключаны да GPIO 5. Пры выкарыстанні Arduino IDE з ESP32 4 адпавядае GPIO 4, а 5 — GPIO 5.
Затым вы ствараеце зменную для захавання стану кнопкі. Па змаўчанні гэта 0 (не націснута).
int buttonState = 0;
У setup() вы ініцыялізуеце кнопку як INPUT, а святлодыёд - як OUTPUT.
Для гэтага вы выкарыстоўваеце функцыю pinMode(), якая прымае пін-код, які вы маеце на ўвазе, і рэжым: INPUT або OUTPUT.
pinMode(кнопкаPin, INPUT);
pinMode(ledPin, ВЫХОД);
У цыкле () вы чытаеце стан кнопкі і адпаведна ўсталёўваеце святлодыёд.
У наступным радку вы чытаеце стан кнопкі і захоўваеце яго ў зменнай buttonState.
Як мы бачылі раней, вы выкарыстоўваеце функцыю digitalRead().
buttonState = digitalRead(buttonPin);
Наступны аператар if правярае, ці з'яўляецца стан кнопкі HIGH. Калі гэта так, святлодыёд уключаецца з дапамогай функцыі digitalWrite(), якая прымае ў якасці аргументу ledPin і стан HIGH.
калі (buttonState == HIGH)Калі стан кнопкі не ВЫСОКАЕ, вы выключаеце святлодыёд. Проста ўсталюйце LOW у якасці другога аргумента ў функцыі digitalWrite().
Загрузка кода
Перш чым націснуць кнопку загрузкі, перайдзіце ў меню Інструменты > Дошка і абярыце дошку :DOIT ESP32 DEVKIT V1.
Перайдзіце ў Інструменты > Порт і абярыце COM-порт, да якога падключаны ESP32. Затым націсніце кнопку загрузкі і дачакайцеся паведамлення «Гатова загрузка».Заўвага: калі вы бачыце шмат кропак (падключэнне…__…__) у акне адладкі і паведамленне «Не ўдалося падключыцца да ESP32: скончыўся час чакання загалоўка пакета», гэта азначае, што вам трэба націснуць кнопку BOOT на борце ESP32. кнопка пасля кропак
пачынаюць з'яўляцца.Ліквідацыя непаладак
Дэманстрацыя
Пасля загрузкі кода праверце сваю схему. Ваш святлодыёд павінен загарэцца, калі вы націснеце кнопку:І адключыце, калі адпусціце:
Аналагавыя ўваходы Project 2 ESP32
Гэты праект паказвае, як чытаць аналагавыя ўваходы з дапамогай ESP32 з дапамогай Arduino IDE.
Аналагавае счытванне карысна для счытвання значэнняў з пераменных рэзістараў, такіх як патэнцыяметры або аналагавыя датчыкі.
Аналагавыя ўваходы (АЦП)
Счытванне аналагавага значэння з дапамогай ESP32 азначае, што вы можаце вымераць розны аб'ёмtage ўзроўні ад 0 В да 3.3 В.
ВыпtagЗатым вымеранаму e прысвойваецца значэнне ад 0 да 4095, у якім 0 В адпавядае 0, а 3.3 В адпавядае 4095. Любы аб'ёмtage паміж 0 В і 3.3 В будзе дадзена адпаведнае значэнне паміж імі.АЦП нелінейны
У ідэале вы чакаеце лінейнага паводзінаў пры выкарыстанні штыфтоў АЦП ESP32.
Аднак гэтага не адбываецца. Што вы атрымаеце, гэта паводзіны, як паказана ў наступнай табліцы:Такія паводзіны азначаюць, што ваш ESP32 не можа адрозніць 3.3 В ад 3.2 В.
Вы атрымаеце аднолькавае значэнне для абодвух voltages: 4095.
Тое ж самае адбываецца пры вельмі нізкай гучнасціtagЗначэнні e: для 0 В і 0.1 В вы атрымаеце аднолькавае значэнне: 0. Вы павінны мець гэта на ўвазе пры выкарыстанні кантактаў АЦП ESP32.
Функцыя analogRead().
Счытванне аналагавага ўводу з дапамогай ESP32 з дапамогай Arduino IDE гэтак жа проста, як выкарыстанне функцыі analogRead(). Ён прымае ў якасці аргумента GPIO, які вы хочаце прачытаць:
analogRead(GPIO);
Толькі 15 даступныя ў DEVKIT V1board (версія з 30 GPIO).
Вазьміце распиновку платы ESP32 і знайдзіце кантакты АЦП. На малюнку ніжэй яны вылучаны чырвонай рамкай.Гэтыя кантакты аналагавага ўваходу маюць 12-бітнае раздзяленне. Гэта азначае, што калі вы чытаеце аналагавы ўвод, яго дыяпазон можа вар'іравацца ад 0 да 4095.
Заўвага: штыфты ADC2 нельга выкарыстоўваць, калі выкарыстоўваецца Wi-Fi. Такім чынам, калі вы карыстаецеся Wi-Fi і ў вас узніклі праблемы з атрыманнем значэння з ADC2 GPIO, вы можаце разгледзець магчымасць выкарыстання замест гэтага ADC1 GPIO, гэта павінна вырашыць вашу праблему.
Каб убачыць, як усё спалучаецца, мы зробім просты прыкладample для чытання аналагавага значэння з патэнцыяметра.
Неабходныя дэталі
Для гэтага эксample, вам патрэбныя наступныя часткі:
- Плата ESP32 DEVKIT V1
- Потенциометр
- Макетная дошка
- Перамычкі
Схема
Падключыце патэнцыометр да вашага ESP32. Сярэдні штыфт патэнцыяметра павінен быць падлучаны да GPIO 4. Вы можаце выкарыстоўваць наступную прынцыповую схему ў якасці эталона.Код
Мы запраграмуем ESP32 з дапамогай Arduino IDE, таму пераканайцеся, што ў вас усталяваны дадатковы кампанент ESP32, перш чым працягнуць: (Калі вы ўжо зрабілі гэты крок, вы можаце перайсці да наступнага.)
Устаноўка надбудовы ESP32 у Arduino IDE
Адкрыйце код Project_2_ESP32_Inputs_Outputs.ino ў arduino IDEГэты код проста счытвае значэнні з патэнцыяметра і друкуе гэтыя значэнні ў паслядоўным маніторы.
У кодзе вы пачынаеце з вызначэння GPIO, да якога падлучаны патэнцыяметр. У гэтым эксample, GPIO 4.У setup() ініцыялізуйце паслядоўную сувязь з хуткасцю 115200 бод.
У loop() выкарыстоўвайце функцыю analogRead(), каб счытваць аналагавы ўваход з potPin.
Нарэшце, раздрукуйце значэнні, зчытаныя з потенциометра ў паслядоўным маніторы.
Загрузіце атрыманы код у свой ESP32. Упэўніцеся, што ў меню "Інструменты" выбраны патрэбная плата і COM-порт.
Тэставанне Example
Пасля загрузкі кода і націску кнопкі скіду ESP32 адкрыйце паслядоўны манітор на хуткасці перадачы 115200 бод. Павярніце патэнцыяметр і ўбачыце змяненне значэнняў.Максімальнае значэнне, якое вы атрымаеце, - 4095, а мінімальнае - 0.
Падвядзенне вынікаў
У гэтым артыкуле вы даведаліся, як чытаць аналагавыя ўваходы з дапамогай ESP32 з Arduino IDE. Падводзячы вынік:
- Плата ESP32 DEVKIT V1 DOIT (версія з 30 кантактамі) мае 15 кантактаў АЦП, якія можна выкарыстоўваць для чытання аналагавых уваходаў.
- Гэтыя кантакты маюць раздзяленне 12 біт, што азначае, што вы можаце атрымаць значэнні ад 0 да 4095.
- Каб прачытаць значэнне ў Arduino IDE, вы проста выкарыстоўваеце функцыю analogRead().
- Штыфты АЦП ESP32 не маюць лінейных паводзін. Верагодна, вы не зможаце адрозніць паміж 0 і 0.1 В або паміж 3.2 і 3.3 В. Вы павінны мець гэта на ўвазе пры выкарыстанні кантактаў АЦП.
Праект 3 ESP32 ШІМ (аналагавы выхад)
У гэтым уроку мы пакажам вам, як генераваць сігналы ШІМ з дапамогай ESP32 з дапамогай Arduino IDE. Як былыample мы пабудуем простую схему, якая зацямняе святлодыёд з дапамогай святлодыёднага ШІМ-кантролера ESP32.Святлодыёдны ШІМ-кантролер ESP32
ESP32 мае святлодыёдны ШІМ-кантролер з 16 незалежнымі каналамі, якія можна наладзіць для генерацыі ШІМ-сігналаў з рознымі ўласцівасцямі.
Вось крокі, якія вам трэба будзе выканаць, каб прыглушыць святлодыёд з ШІМ з дапамогай Arduino IDE:
- Спачатку трэба выбраць ШІМ-канал. Ёсць 16 каналаў ад 0 да 15.
- Затым неабходна ўсталяваць частату сігналу ШІМ. Для святлодыёда частата 5000 Гц падыходзіць.
- Вам таксама трэба ўсталяваць дазвол працоўнага цыклу сігналу: у вас ёсць дазвол ад 1 да 16 біт. Мы будзем выкарыстоўваць 8-бітнае раздзяленне, што азначае, што вы можаце кіраваць яркасцю святлодыёда, выкарыстоўваючы значэнне ад 0 да 255.
- Далей вам трэба пазначыць, на які GPIO або GPIO будзе з'яўляцца сігнал. Для гэтага вы будзеце выкарыстоўваць наступную функцыю:
ledcAttachPin(GPIO, канал)
Гэтая функцыя прымае два аргументы. Першы - гэта GPIO, які будзе выводзіць сігнал, а другі - канал, які будзе генераваць сігнал. - Нарэшце, каб кіраваць яркасцю святлодыёдаў з дапамогай ШІМ, вы выкарыстоўваеце наступную функцыю:
ledcWrite(канал, працоўны цыкл)
Гэтая функцыя прымае ў якасці аргументаў канал, які генеруе сігнал ШІМ, і працоўны цыкл.
Неабходныя дэталі
Каб прытрымлівацца гэтага падручніка, вам спатрэбяцца наступныя часткі:
- Плата ESP32 DEVKIT V1
- 5 мм святлодыёд
- Рэзістар 220 Ом
- Макетная дошка
- Перамычкі
Схема
Падключыце святлодыёд да вашага ESP32, як паказана на наступнай прынцыповай схеме. Святлодыёд павінен быць падлучаны да GPIO 4.Заўвага: вы можаце выкарыстоўваць любы кантакт, які хочаце, калі ён можа дзейнічаць як выхад. Усе кантакты, якія могуць выступаць у якасці выхадаў, могуць выкарыстоўвацца як штыфты ШІМ. Для атрымання дадатковай інфармацыі аб ESP32 GPIO, прачытайце: ESP32 Pinout Reference: Якія кантакты GPIO вы павінны выкарыстоўваць?
Код
Мы запраграмуем ESP32 з дапамогай Arduino IDE, таму пераканайцеся, што ў вас усталяваны дадатковы кампанент ESP32, перш чым працягнуць: (Калі вы ўжо зрабілі гэты крок, вы можаце перайсці да наступнага.)
Устаноўка надбудовы ESP32 у Arduino IDE
Адкрыйце код Project_3_ESP32_PWM.ino ў arduino IDEВы пачынаеце з вызначэння штыфта, да якога прымацаваны святлодыёд. У гэтым выпадку святлодыёд падлучаны да GPIO 4.
Затым вы задаеце ўласцівасці сігналу ШІМ. Вы вызначаеце частату 5000 Гц, выбіраеце канал 0 для генерацыі сігналу і ўсталёўваеце раздзяленне 8 біт. Вы можаце выбраць іншыя ўласцівасці, адрозныя ад гэтых, для генерацыі розных сігналаў ШІМ.
У setup() вам трэба наладзіць святлодыёдную ШІМ з уласцівасцямі, якія вы вызначылі раней, выкарыстоўваючы функцыю ledcSetup(), якая прымае ў якасці аргументаў ledChannel, частату і раздзяленне наступным чынам:
Далей вам трэба выбраць GPIO, з якога вы будзеце атрымліваць сігнал. Для гэтага выкарыстоўвайце функцыю ledcAttachPin(), якая прымае ў якасці аргументаў GPIO, куды вы хочаце атрымаць сігнал, і канал, які генеруе сігнал. У гэтым эксample, мы атрымаем сігнал у ledPin GPIO, які адпавядае GPIO 4. Канал, які генеруе сігнал, - гэта ledChannel, які адпавядае каналу 0.
У цыкле вы будзеце змяняць працоўны цыкл ад 0 да 255, каб павялічыць яркасць святлодыёда.
А затым, паміж 255 і 0, каб паменшыць яркасць.
Каб усталяваць яркасць святлодыёда, вам проста трэба выкарыстоўваць функцыю ledcWrite(), якая прымае ў якасці аргументаў канал, які генеруе сігнал, і працоўны цыкл.
Паколькі мы выкарыстоўваем 8-бітнае раздзяленне, працоўны цыкл будзе кантралявацца з дапамогай значэння ад 0 да 255. Звярніце ўвагу, што ў функцыі ledcWrite() мы выкарыстоўваем канал, які генеруе сігнал, а не GPIO.
Тэставанне Example
Загрузіце код у свой ESP32. Пераканайцеся, што вы выбралі правільную плату і COM-порт. Паглядзіце на сваю схему. Вы павінны мець цьмяны святлодыёд, які павялічвае і памяншае яркасць.
Праект 4 ESP32 PIR датчык руху
Гэты праект паказвае, як выяўляць рух з дапамогай ESP32 з дапамогай PIR-датчыка руху. Зумер падае сігнал трывогі пры выяўленні руху і спыняе сігнал трывогі, калі рух не выяўляецца на працягу зададзенага часу (напрыклад, 4 секунды)
Як працуе датчык руху HC-SR501
.Прынцып працы датчыка HC-SR501 заснаваны на змене інфрачырвонага выпраменьвання на рухомым аб'екце. Для выяўлення датчыкам HC-SR501 аб'ект павінен адпавядаць двум патрабаванням:
- Аб'ект выпраменьвае ў інфрачырвоным дыяпазоне.
- Аб'ект рухаецца або дрыжыць
Такім чынам:
Калі аб'ект выпраменьвае інфрачырвоныя прамяні, але не рухаецца (напрыклад, чалавек стаіць на месцы, не рухаючыся), датчык не выяўляе яго.
Калі аб'ект рухаецца, але не выпраменьвае інфрачырвоныя прамяні (напрыклад, робат або транспартны сродак), ён НЕ выяўляецца датчыкам.
Прадстаўляем таймеры
У гэтым эксample мы таксама ўвядзем таймеры. Мы хочам, каб святлодыёд заставаўся гарэць на працягу зададзенай колькасці секунд пасля выяўлення руху. Замест таго, каб выкарыстоўваць функцыю delay(), якая блакуе ваш код і не дазваляе вам рабіць што-небудзь яшчэ на працягу пэўнай колькасці секунд, мы павінны выкарыстоўваць таймер.Функцыя delay().
Вы павінны быць знаёмыя з функцыяй delay(), бо яна шырока выкарыстоўваецца. Гэтая функцыя даволі простая ў выкарыстанні. Ён прымае адно цэлае лік у якасці аргумента.
Гэты лік паказвае час у мілісекундах, які праграма павінна чакаць, пакуль не пяройдзе да наступнага радка кода.Калі вы робіце затрымку (1000), ваша праграма спыняецца на гэтым радку на 1 секунду.
delay() - гэта функцыя блакавання. Функцыі блакіроўкі не дазваляюць праграме рабіць што-небудзь яшчэ, пакуль гэтая канкрэтная задача не будзе завершана. Калі вам трэба, каб некалькі задач выконваліся адначасова, вы не можаце выкарыстоўваць delay().
Для большасці праектаў вам варта пазбягаць выкарыстання затрымак і замест гэтага выкарыстоўваць таймеры.
Функцыя millis().
Выкарыстоўваючы функцыю millis(), вы можаце вярнуць колькасць мілісекунд, якія прайшлі з моманту першага запуску праграмы.Чаму гэтая функцыя карысная? Таму што з дапамогай матэматыкі вы можаце лёгка праверыць, колькі часу прайшло, не блакуючы свой код.
Неабходныя дэталі
Каб прытрымлівацца гэтага падручніка, вам патрэбныя наступныя часткі
- Плата ESP32 DEVKIT V1
- PIR-датчык руху (HC-SR501)
- Актыўны зумер
- Перамычкі
- Макетная дошка
СхемаЗаўвага: Рабочая тtage HC-SR501 складае 5 В. Выкарыстоўвайце шпільку Vin для яго харчавання.
Код
Перш чым прыступіць да гэтага падручніка, вы павінны ўсталяваць надбудову ESP32 у вашай IDE Arduino. Каб усталяваць ESP32 у Arduino IDE, выканайце адзін з наступных падручнікаў, калі вы гэтага яшчэ не зрабілі. (Калі вы ўжо зрабілі гэты крок, вы можаце перайсці да наступнага.)
Устаноўка надбудовы ESP32 у Arduino IDE
Адкрыйце код Project_4_ESP32_PIR_Motion_Sensor.ino ў arduino IDE.
Дэманстрацыя
Загрузіце код на плату ESP32. Упэўніцеся, што ў вас выбраны належная плата і COM-порт. Запампуйце даведачны код.
Адкрыйце Serial Monitor на хуткасці 115200 бод.Правядзіце рукой перад датчыкам PIR. Павінен уключыцца гукавы сігнал, а на паслядоўным маніторы будзе надрукавана паведамленне «Выяўлены рух! Трывожны гукавы сігнал».
Праз 4 секунды гукавы сігнал павінен выключыцца.
Праект 5 камутатар ESP32 Web Сервер
У гэтым праекце вы створыце аўтаномны web сервер з ESP32, які кіруе выхадамі (два святлодыёда) з дапамогай асяроддзя праграмавання Arduino IDE. The web сервер рэагуе на мабільныя прылады і можа быць даступны з любой прылады, якая ў якасці браўзера ў лакальнай сетцы. Мы пакажам вам, як стварыць web сервер і як код працуе крок за крокам.
Праект скончаныview
Перш чым перайсці непасрэдна да праекта, важна акрэсліць, што мы маем web падыдзе сервер, каб потым было прасцей выконваць наступныя крокі.
- The web сервер, які вы пабудуеце, кіруе двума святлодыёдамі, падлучанымі да ESP32 GPIO 26 і GPIO 27;
- Вы можаце атрымаць доступ да ESP32 web сервер, увёўшы IP-адрас ESP32 у браўзеры лакальнай сеткі;
- Націскаючы кнопкі на вашым web сервера вы можаце імгненна змяніць стан кожнага святлодыёда.
Неабходныя дэталі
Для гэтага падручніка вам спатрэбяцца наступныя часткі:
- Плата ESP32 DEVKIT V1
- 2x 5 мм святлодыёд
- 2 рэзістар 200 Ом
- Макетная дошка
- Перамычкі
Схема
Пачніце з пабудовы схемы. Падключыце два святлодыёда да ESP32, як паказана на наступнай прынцыповай схеме: адзін святлодыёд падключаны да GPIO 26, а другі да GPIO 27.
Заўвага: Мы выкарыстоўваем плату ESP32 DEVKIT DOIT з 36 кантактамі. Перш чым збіраць схему, пераканайцеся, што вы праверылі распиновку платы, якую вы выкарыстоўваеце.Код
Тут мы прапануем код, які стварае ESP32 web сервер. Адкрыйце код Project_5_ESP32_Switch _Web_Server.ino ў arduino IDE, але пакуль не загружайце яго. Вам трэба ўнесці некаторыя змены, каб гэта працавала на вас.
Мы запраграмуем ESP32 з дапамогай Arduino IDE, таму пераканайцеся, што ў вас усталяваны дадатковы кампанент ESP32, перш чым працягнуць: (Калі вы ўжо зрабілі гэты крок, вы можаце перайсці да наступнага.)
Устаноўка надбудовы ESP32 у Arduino IDE
Налада сеткавых уліковых дадзеных
Вам трэба змяніць наступныя радкі з уліковымі дадзенымі сеткі: SSID і пароль. Код добра пракаментаваны, дзе вы павінны ўнесці змены.Загрузка кода
Цяпер вы можаце загрузіць код і і web сервер запрацуе адразу.
Выканайце наступныя крокі, каб загрузіць код у ESP32:
- Падключыце плату ESP32 да кампутара;
- У IDE Arduino выберыце сваю плату ў Інструменты > Плата (у нашым выпадку мы выкарыстоўваем плату ESP32 DEVKIT DOIT);
- Выберыце COM-порт у Інструменты > Порт.
- Націсніце кнопку «Загрузіць» у IDE Arduino і пачакайце некалькі секунд, пакуль код кампілюецца і загружаецца на вашу плату.
- Дачакайцеся паведамлення «Гатова запампоўка».
Пошук IP-адраса ESP
Пасля загрузкі кода адкрыйце Serial Monitor з хуткасцю 115200 бод.Націсніце кнопку ESP32 EN (скід). ESP32 падключаецца да Wi-Fi і выводзіць IP-адрас ESP на паслядоўны манітор. Скапіруйце гэты IP-адрас, бо ён патрэбны для доступу да ESP32 web сервер.
Доступ да Web Сервер
Каб атрымаць доступ да web сервера, адкрыйце браўзер, устаўце IP-адрас ESP32, і вы ўбачыце наступную старонку.
Заўвага: Ваш браўзер і ESP32 павінны быць падлучаны да адной лакальнай сеткі.Калі вы паглядзіце на паслядоўны манітор, то ўбачыце, што адбываецца на заднім плане. ESP атрымлівае HTTP-запыт ад новага кліента (у дадзеным выпадку ад вашага браўзера).
Вы таксама можаце ўбачыць іншую інфармацыю пра HTTP-запыт.
Дэманстрацыя
Цяпер вы можаце праверыць, калі ваш web сервер працуе належным чынам. Націсніце кнопкі для кіравання святлодыёдамі.У той жа час вы можаце зірнуць на паслядоўны манітор, каб убачыць, што адбываецца ў фонавым рэжыме. Напрыкладample, калі вы націскаеце кнопку, каб уключыць GPIO 26, ESP32 атрымлівае запыт на /26/on URL.
Калі ESP32 атрымлівае гэты запыт, ён уключае святлодыёд, падлучаны да GPIO 26, і абнаўляе свой стан на web старонка.
Кнопка для GPIO 27 працуе аналагічным чынам. Праверце, ці правільна ён працуе.
Як працуе Кодэкс
У гэтым раздзеле мы больш падрабязна разгледзім код, каб убачыць, як ён працуе.
Першае, што вам трэба зрабіць, гэта ўключыць бібліятэку WiFi.Як згадвалася раней, вам трэба ўставіць свой ssid і пароль у наступныя радкі ўнутры двукоссяў.
Затым вы ўсталюеце свой web сервер на порт 80.
Наступны радок стварае зменную для захавання загалоўка HTTP-запыту:
Затым вы ствараеце дапаможныя зменныя для захавання бягучага стану вашых вынікаў. Калі вы хочаце дадаць больш выхадаў і захаваць яго стан, вам трэба стварыць больш зменных.
Вам таксама трэба прызначыць GPIO для кожнага з вашых выхадаў. Тут мы выкарыстоўваем GPIO 26 і GPIO 27. Вы можаце выкарыстоўваць любыя іншыя прыдатныя GPIO.
ўстаноўка ()
Зараз пяройдзем да setup(). Спачатку мы пачынаем паслядоўную сувязь з хуткасцю 115200 бод для мэт адладкі.Вы таксама вызначаеце свае GPIO як OUTPUT і ўсталёўваеце для іх значэнне LOW.
Наступныя радкі пачынаюць злучэнне Wi-Fi з WiFi.begin(ssid, пароль), чакаюць паспяховага злучэння і друкуюць IP-адрас ESP у паслядоўным маніторы.
цыкл ()
У loop() мы праграмуем, што адбываецца, калі новы кліент усталёўвае злучэнне з web сервер.
ESP32 заўсёды праслухоўвае ўваходных кліентаў з наступным радком:Пры атрыманні запыту ад кліента мы захаваем уваходныя даныя. Наступны цыкл while будзе працаваць, пакуль кліент застаецца на сувязі. Мы не рэкамендуем змяняць наступную частку кода, калі вы дакладна не ведаеце, што робіце.
У наступным раздзеле аператараў if і else правяраецца, якая кнопка была націснута ў вашым web старонка, і адпаведна кантралюе выхады. Як мы бачылі раней, мы робім запыт на розныя URLs у залежнасці ад націснутай кнопкі.
Напрыкладampкалі вы націснеце кнопку GPIO 26 ON, ESP32 атрымае запыт на /26/ON URL (мы бачым гэтую інфармацыю ў загалоўку HTTP на паслядоўным маніторы). Такім чынам, мы можам праверыць, ці змяшчае загаловак выраз GET /26/on. Калі ён змяшчае, мы змяняем зменную output26state на ON, і ESP32 уключае святлодыёд.
Гэта працуе аналагічна для іншых кнопак. Такім чынам, калі вы хочаце дадаць больш выхадаў, вы павінны змяніць гэтую частку кода, каб уключыць іх.
Адлюстраванне HTML web старонка
Наступнае, што вам трэба зрабіць, гэта стварыць web старонка. ESP32 адправіць у ваш браўзер адказ з некаторым кодам HTML для стварэння web старонка.
The web старонка адпраўляецца кліенту з дапамогай гэтага выражэння client.println(). Вы павінны ўвесці тое, што хочаце адправіць кліенту ў якасці аргумента.
Першае, што мы павінны адправіць, гэта заўсёды наступны радок, які паказвае, што мы адпраўляем HTML.Затым наступны радок робіць web старонка спагадная ў любой web браўзер.
І наступнае выкарыстоўваецца для прадухілення запытаў на favicon. – Вам не трэба турбавацца аб гэтай лініі.
Стылізаваць Web старонка
Далей у нас ёсць тэкст CSS для стылю кнопак і web знешні выгляд старонкі.
Мы выбіраем шрыфт Helvetica, вызначаем кантэнт, які будзе адлюстроўвацца ў выглядзе блока і выраўноўвацца па цэнтры.Мы стылізуем нашы кнопкі з колерам #4CAF50, без рамак, тэкст у белым колеры і з такім пракладкай: 16px 40px. Мы таксама ўсталёўваем упрыгожванне тэксту значэннем none, вызначаем памер шрыфта, поле і курсор для паказальніка.
Мы таксама вызначаем стыль для другой кнопкі з усімі ўласцівасцямі кнопкі, якія мы вызначылі раней, але з іншым колерам. Гэта будзе стыль для кнопкі выключэння.
Ўстаноўка Web Загаловак першай старонкі
У наступным радку вы можаце ўсталяваць першы загаловак вашага web старонка. Тут у нас ёсць «ESP32 Web Сервер», але вы можаце змяніць гэты тэкст на любы.Адлюстраванне кнопак і адпаведнага стану
Затым вы пішаце абзац для адлюстравання бягучага стану GPIO 26. Як бачыце, мы выкарыстоўваем зменную output26State, каб стан імгненна абнаўляўся пры змене гэтай зменнай.Затым мы адлюстроўваем кнопку ўключэння або выключэння ў залежнасці ад бягучага стану GPIO. Калі бягучы стан GPIO выключаны, мы паказваем кнопку ON, калі не, мы паказваем кнопку OFF.
Мы выкарыстоўваем тую ж працэдуру для GPIO 27.
Закрыццё злучэння
Нарэшце, калі адказ заканчваецца, мы ачышчаем зменную загалоўка і спыняем злучэнне з кліентам з дапамогай client.stop().
Падвядзенне вынікаў
У гэтым уроку мы паказалі вам, як стварыць a web сервер з ESP32. Мы паказалі вам просты былыample, які кіруе двума святлодыёдамі, але ідэя заключаецца ў тым, каб замяніць гэтыя святлодыёды на рэле або любы іншы выхад, якім вы хочаце кіраваць.
Праект 6 RGB LED Web Сервер
У гэтым праекце мы пакажам вам, як дыстанцыйна кіраваць святлодыёдам RGB з дапамогай платы ESP32 з дапамогай a web сервер з выбарам колеру.
Праект скончаныview
Перш чым пачаць, давайце паглядзім, як працуе гэты праект:
- ESP32 web сервер адлюстроўвае выбар колеру.
- Калі вы выбіраеце колер, ваш браўзер робіць запыт на a URL які змяшчае параметры R, G і B абранага колеру.
- Ваш ESP32 атрымлівае запыт і раздзяляе значэнне для кожнага параметра колеру.
- Затым ён адпраўляе ШІМ-сігнал з адпаведным значэннем на GPIO, якія кіруюць святлодыёдам RGB.
Як працуюць святлодыёды RGB?
У RGB-святлодыёдзе з агульным катодам усе тры святлодыёды маюць адмоўнае злучэнне (катод). Усе ўваходзяць у камплект RGB з агульным катодам.Як стварыць розныя колеры?
Са святлодыёдам RGB вы, вядома, можаце вырабляць чырвонае, зялёнае і сіняе святло, і, наладзіўшы інтэнсіўнасць кожнага святлодыёда, вы можаце вырабляць і іншыя колеры.
Напрыкладampнапрыклад, каб вырабляць чыста сіняе святло, вы павінны ўсталяваць сіні святлодыёд на самую высокую інтэнсіўнасць, а зялёны і чырвоны святлодыёды - на самую нізкую інтэнсіўнасць. Для белага святла вы павінны ўсталяваць для ўсіх трох святлодыёдаў найбольшую інтэнсіўнасць.
Змешванне колераў
Каб атрымаць іншыя колеры, вы можаце камбінаваць тры колеры рознай інтэнсіўнасці. Для рэгулявання інтэнсіўнасці кожнага святлодыёда можна выкарыстоўваць сігнал ШІМ.
Паколькі святлодыёды знаходзяцца вельмі блізка адзін да аднаго, нашы вочы бачаць вынік спалучэння колераў, а не тры колеры паасобку.
Каб мець уяўленне аб тым, як спалучаць колеры, зірніце на наступную табліцу.
Гэта самая простая табліца змешвання колераў, але яна дае ўяўленне пра тое, як яна працуе і як ствараць розныя колеры.Неабходныя дэталі
Для гэтага праекта вам патрэбныя наступныя часткі:
- Плата ESP32 DEVKIT V1
- Святлодыёд RGB
- 3 рэзістара 220 Ом
- Перамычкі
- Макетная дошка
СхемаКод
Мы запраграмуем ESP32 з дапамогай Arduino IDE, таму пераканайцеся, што ў вас усталяваны дадатковы кампанент ESP32, перш чым працягнуць: (Калі вы ўжо зрабілі гэты крок, вы можаце перайсці да наступнага.)
- Устаноўка надбудовы ESP32 у Arduino IDE
Пасля зборкі схемы адкрыйце код
Праект_6_RGB_LED_Web_Server.ino ў IDE arduino.
Перш чым загрузіць код, не забудзьцеся ўставіць свае сеткавыя ўліковыя даныя, каб ESP мог падключыцца да лакальнай сеткі.Як працуе код
Скетч ESP32 выкарыстоўвае бібліятэку WiFi.h.Наступныя радкі вызначаюць радковыя зменныя для захоўвання параметраў R, G і B з запыту.
Наступныя чатыры зменныя выкарыстоўваюцца для дэкадавання HTTP-запыту пазней.
Стварыце тры зменныя для GPIO, якія будуць кантраляваць параметры паласы R, G і B. У гэтым выпадку мы выкарыстоўваем GPIO 13, GPIO 12 і GPIO 14.
Гэтыя GPIO павінны выводзіць сігналы ШІМ, таму спачатку трэба наладзіць уласцівасці ШІМ. Усталюйце частату сігналу ШІМ на 5000 Гц. Затым звяжыце канал ШІМ для кожнага колеру
І, нарэшце, усталюйце дазвол каналаў ШІМ на 8 біт
У setup() прызначце ўласцівасці ШІМ для каналаў ШІМ
Далучыце ШІМ-каналы да адпаведных GPIO
Наступны раздзел кода адлюстроўвае выбар колеру ў вашым web і робіць запыт на аснове абранага вамі колеру.
Калі вы выбіраеце колер, вы атрымліваеце запыт у наступным фармаце.
Такім чынам, нам трэба разбіць гэты радок, каб атрымаць параметры R, G і B. Параметры захоўваюцца ў зменных redString, greenString і blueString і могуць мець значэнні ад 0 да 255.Каб кіраваць паласой з дапамогай ESP32, выкарыстоўвайце функцыю ledcWrite() для генерацыі сігналаў ШІМ са значэннямі, дэкадаванымі з HTTP запыт.
Заўвага: даведацца больш пра ШІМ з ESP32: Праект 3 ESP32 ШІМ (аналагавы выхад)
Каб кіраваць паласой з дапамогай ESP8266, нам проста трэба выкарыстоўваць
функцыя analogWrite() для генерацыі сігналаў ШІМ са значэннямі, дэкадаванымі з запыту HTTP.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Паколькі мы атрымліваем значэнні ў радковай зменнай, нам трэба пераўтварыць іх у цэлыя лікі з дапамогай метаду toInt().
Дэманстрацыя
Пасля ўстаўкі сеткавых уліковых даных выберыце правільную плату і COM-порт і загрузіце код у свой ESP32. Інструкцыі па загрузцы кода.
Пасля загрузкі адкрыйце Serial Monitor на хуткасці 115200 бод і націсніце кнопку ESP Enable/Reset. Вы павінны атрымаць IP-адрас дошкі.Адкрыйце браўзер і ўстаўце IP-адрас ESP. Цяпер выкарыстоўвайце выбар колеру, каб выбраць колер для святлодыёда RGB.
Затым вам трэба націснуць кнопку «Змяніць колер», каб колер уступіў у сілу.Каб выключыць святлодыёд RGB, выберыце чорны колер.
Самыя моцныя колеры (у верхняй частцы выбару колеру) - гэта тыя, якія дадуць лепшыя вынікі.
Рэле праекта 7 ESP32 Web Сервер
Выкарыстанне рэле з ESP32 - выдатны спосаб дыстанцыйнага кіравання бытавымі прыборамі пераменнага току. Гэты падручнік тлумачыць, як кіраваць рэлейным модулем з дапамогай ESP32.
Мы паглядзім, як працуе модуль рэле, як падключыць рэле да ESP32 і пабудаваць web сервер для дыстанцыйнага кіравання рэле.
Прадстаўляем рэле
Рэле - гэта перамыкач з электрычным прывадам, і, як і любы іншы выключальнік, яго можна ўключаць і выключаць, прапускаючы або не прапускаючы ток. Ім можна кіраваць з дапамогай нізкай гучнасціtages, напрыклад, 3.3 В, які забяспечваецца GPIO ESP32 і дазваляе нам кантраляваць высокую гучнасцьtages як 12V, 24V або сеткавага аб'ёмуtage (230 В у Еўропе і 120 В у ЗША).З левага боку ёсць два наборы з трох разетак для падлучэння высокай гучнасціtages, і шпількі з правага боку (нізкая гучнасцьtage) падключыцеся да ESP32 GPIO.
Магістральная сетка Voltage ЗлучэнняРэлейны модуль, паказаны на папярэднім фота, мае два раздымы, кожны з трыма разеткамі: агульны (COM), нармальна закрыты (NC) і нармальна адкрыты (NO).
- COM: падключыце ток, які вы хочаце кантраляваць (сеткавы аб'ёмtagе).
- NC (Normally Closed): нармальна закрытая канфігурацыя выкарыстоўваецца, калі вы хочаце, каб рэле было замкнёна па змаўчанні. NC з'яўляюцца кантактамі COM падключаны, гэта азначае, што ток цячэ, пакуль вы не адправіце сігнал ад ESP32 да модуля рэле, каб размыкнуць ланцуг і спыніць паток току.
- NO (Normally Open): нармальна адкрытая канфігурацыя працуе наадварот: паміж кантактамі NO і COM няма сувязі, таму ланцуг разрываецца, калі вы не адправіце сігнал ад ESP32, каб закрыць ланцуг.
Штыфты кіраванняНізкая гучнасцьtagНа баку ёсць набор з чатырох шпілек і набор з трох шпілек. Першы набор складаецца з VCC і GND для харчавання модуля, а таксама ўваходу 1 (IN1) і ўваходу 2 (IN2) для кіравання ніжнім і верхнім рэле адпаведна.
Калі ваш модуль рэле мае толькі адзін канал, у вас будзе толькі адзін кантакт IN. Калі ў вас ёсць чатыры канала, вы будзеце мець чатыры кантакты IN і гэтак далей.
Сігнал, які вы пасылаеце на кантакты IN, вызначае, актыўнае рэле ці не. Рэле спрацоўвае, калі ўваходнае напружанне апускаецца ніжэй прыкладна за 2 В. Гэта азначае, што ў вас будуць наступныя сітуацыі:
- Нармальна закрытая канфігурацыя (NC):
- ВЫСОКІ сігнал – цячэ ток
- Нізкі сігнал – ток не цячэ
- Нармальна адкрытая канфігурацыя (НЕ):
- ВЫСОКІ сігнал – ток не цячэ
- Нізкі сігнал – цячэ ток
Вы павінны выкарыстоўваць нармальна закрытую канфігурацыю, калі ток павінен цячы большую частку часу, і вы хочаце спыніць яго толькі час ад часу.
Выкарыстоўвайце нармальна адкрытую канфігурацыю, калі вы хочаце, каб ток час ад часу працякаў (напрыклад,ample, уключыць іншamp часам).
Выбар блока харчаванняДругі набор кантактаў складаецца з кантактаў GND, VCC і JD-VCC.
Вывад JD-VCC сілкуе электрамагніт рэле. Звярніце ўвагу, што модуль мае перамычку, якая злучае кантакты VCC і JD-VCC; адзін, паказаны тут, жоўты, але ваш можа быць іншага колеру.
Калі перамычка надзета, кантакты VCC і JD-VCC злучаны. Гэта азначае, што электрамагніт рэле сілкуецца непасрэдна ад штыфта харчавання ESP32, таму модуль рэле і ланцугі ESP32 фізічна не ізаляваны адзін ад аднаго.
Без перамычкі неабходна забяспечыць незалежную крыніцу харчавання для харчавання электрамагніта рэле праз штыфт JD-VCC. Гэтая канфігурацыя фізічна ізалюе рэле ад ESP32 з дапамогай убудаванай у модуль оптапары, што прадухіляе пашкоджанне ESP32 у выпадку скокаў электрычнага току.
СхемаПапярэджанне: Выкарыстанне высокай абtagБлокі сілкавання могуць нанесці сур'ёзныя траўмы.
Такім чынам, 5-міліметровыя святлодыёды выкарыстоўваюцца замест высокага аб'ёму харчаванняtagе цыбуліны ў эксперыменце. Калі вы не знаёмыя з mains voltage папытаеце таго, хто павінен вам дапамагчы. Падчас праграмавання ESP або падключэння ланцуга пераканайцеся, што ўсе прылады адключаны ад электрасеткіtage.Ўстаноўка бібліятэкі для ESP32
Каб пабудаваць гэта web сервер, мы выкарыстоўваем ESPAsyncWebБібліятэка сервера і бібліятэка AsyncTCP.
Ўстаноўка ESPAsyncWebСерверная бібліятэка
Выканайце наступныя дзеянні, каб усталяваць ESPAsyncWebСервер бібліятэка:
- Націсніце тут, каб спампаваць ESPAsyncWebСерверная бібліятэка. Вы павінны былі
папку .zip у папцы "Спампоўкі". - Распакуйце папку .zip, і вы павінны атрымаць ESPAsyncWebТэчка Server-master
- Перайменуйце папку з ESPAsyncWebСервер-майстар для ESPAsyncWebСервер
- Перамясціце ESPAsyncWebТэчка сервера ў тэчку ўсталявальных бібліятэк Arduino IDE
Акрамя таго, у вашай Arduino IDE вы можаце перайсці ў Sketch > Include
Бібліятэка > Дадаць бібліятэку .ZIP… і выберыце бібліятэку, якую вы толькі што спампавалі.
Усталёўка бібліятэкі AsyncTCP для ESP32
The ESPAsyncWebСервер бібліятэка патрабуе Асінхронны TCP бібліятэка на працу. Выконвайце
наступныя крокі для ўстаноўкі гэтай бібліятэкі:
- Націсніце тут, каб спампаваць бібліятэку AsyncTCP. У тэчцы "Спампоўкі" павінна быць папка .zip
- Распакуйце папку .zip, і вы павінны атрымаць папку AsyncTCP-master
1. Перайменуйце папку з AsyncTCP-master на AsyncTCP
3. Перамясціце тэчку AsyncTCP у тэчку ўстаноўкі бібліятэк Arduino IDE
4. Нарэшце, зноў адкрыйце Arduino IDE
Акрамя таго, у вашай Arduino IDE вы можаце перайсці ў Sketch > Include
Бібліятэка > Дадаць бібліятэку .ZIP… і выберыце бібліятэку, якую вы толькі што спампавалі.
Код
Мы запраграмуем ESP32 з дапамогай Arduino IDE, таму пераканайцеся, што ў вас усталяваны дадатковы кампанент ESP32, перш чым працягнуць: (Калі вы ўжо зрабілі гэты крок, вы можаце перайсці да наступнага.)
Устаноўка надбудовы ESP32 у Arduino IDE
Пасля ўстаноўкі неабходных бібліятэк адкрыйце код Project_7_ESP32_Relay_Web_Server.ino ў IDE arduino.
Перш чым загрузіць код, не забудзьцеся ўставіць свае сеткавыя ўліковыя даныя, каб ESP мог падключыцца да лакальнай сеткі.Дэманстрацыя
Пасля ўнясення неабходных змяненняў загрузіце код у свой ESP32. Інструкцыі па загрузцы кода.
Адкрыйце паслядоўны манітор на хуткасці 115200 бод і націсніце кнопку ESP32 EN, каб атрымаць яго IP-адрас. Затым адкрыйце браўзер у лакальнай сетцы і ўвядзіце IP-адрас ESP32, каб атрымаць доступ да web сервер.
Адкрыйце паслядоўны манітор на хуткасці 115200 бод і націсніце кнопку ESP32 EN, каб атрымаць яго IP-адрас. Затым адкрыйце браўзер у лакальнай сетцы і ўвядзіце IP-адрас ESP32, каб атрымаць доступ да web сервер.Заўвага: Ваш браўзер і ESP32 павінны быць падлучаны да адной лакальнай сеткі.
Вы павінны атрымаць наступнае з дзвюма кнопкамі, роўнай колькасці рэле, якое вы вызначылі ў сваім кодзе.Цяпер вы можаце выкарыстоўваць кнопкі для кіравання рэле з дапамогай смартфона.
Project_8_Output_State_Synchronization_ Web_Сервер
Гэты праект паказвае, як кіраваць выхадамі ESP32 або ESP8266 з дапамогай a web сервер і фізічная кнопка адначасова. Стан выхаду абнаўляецца на web незалежна ад таго, зменена яна з дапамогай фізічнай кнопкі або web сервер.
Праект скончаныview
Давайце коратка паглядзім, як працуе праект.ESP32 або ESP8266 размяшчае a web сервер, які дазваляе кантраляваць стан вываду;
- Бягучы стан вываду адлюстроўваецца на web сервер;
- ESP таксама падлучаны да фізічнай кнопкі, якая кіруе тым жа выхадам;
- Калі вы змяняеце стан вываду з дапамогай фізічнай кнопкі puhs, яго бягучы стан таксама абнаўляецца на web сервер.
Такім чынам, гэты праект дазваляе вам кіраваць адным і тым жа выхадам з дапамогай a web сервер і кнопка адначасова. Кожны раз, калі стан вываду змяняецца, web сервер абноўлены.
Неабходныя дэталі
Вось спіс частак, неабходных для стварэння схемы:
- Плата ESP32 DEVKIT V1
- 5 мм святлодыёд
- Рэзістар 220 Ом
- Кнопка
- Рэзістар 10 кОм
- Макетная дошка
- Перамычкі
СхемаЎстаноўка бібліятэкі для ESP32
Каб пабудаваць гэта web сервер, мы выкарыстоўваем ESPAsyncWebБібліятэка сервера і бібліятэка AsyncTCP. (Калі вы ўжо зрабілі гэты крок, вы можаце перайсці да наступнага кроку.)
Ўстаноўка ESPAsyncWebСерверная бібліятэка
Выканайце наступныя дзеянні, каб усталяваць ESPAsyncWebСерверная бібліятэка:
- Націсніце тут, каб спампаваць ESPAsyncWebСерверная бібліятэка. Вы павінны былі
папку .zip у папцы "Спампоўкі". - Распакуйце папку .zip, і вы павінны атрымаць ESPAsyncWebТэчка Server-master
- Перайменуйце папку з ESPAsyncWebСервер-майстар для ESPAsyncWebСервер
- Перамясціце ESPAsyncWebТэчка сервера ў тэчку ўсталявальных бібліятэк Arduino IDE
Акрамя таго, у вашай Arduino IDE вы можаце перайсці ў Sketch > Include
Бібліятэка > Дадаць бібліятэку .ZIP… і выберыце бібліятэку, якую вы толькі што спампавалі.
Усталёўка бібліятэкі AsyncTCP для ESP32
ESPAsyncWebДля працы сервернай бібліятэкі патрабуецца бібліятэка AsyncTCP. Каб усталяваць гэтую бібліятэку, выканайце наступныя дзеянні:
- Націсніце тут, каб спампаваць бібліятэку AsyncTCP. У тэчцы "Спампоўкі" павінна быць папка .zip
- Распакуйце папку .zip, і вы павінны атрымаць папку AsyncTCP-master
- Перайменуйце папку з AsyncTCP-master на AsyncTCP
- Перамясціце тэчку AsyncTCP у тэчку ўстаноўкі бібліятэк Arduino IDE
- Нарэшце, зноў адкрыйце Arduino IDE
Акрамя таго, у вашай Arduino IDE вы можаце перайсці ў Sketch > Include
Бібліятэка > Дадаць бібліятэку .ZIP… і выберыце бібліятэку, якую вы толькі што спампавалі.
Код
Мы запраграмуем ESP32 з дапамогай Arduino IDE, таму пераканайцеся, што ў вас усталяваны дадатковы кампанент ESP32, перш чым працягнуць: (Калі вы ўжо зрабілі гэты крок, вы можаце перайсці да наступнага.)
Устаноўка надбудовы ESP32 у Arduino IDE
Пасля ўстаноўкі неабходных бібліятэк адкрыйце код
Project_8_Output_State_Synchronization_Web_Server.ino ў IDE arduino.
Перш чым загрузіць код, не забудзьцеся ўставіць свае сеткавыя ўліковыя даныя, каб ESP мог падключыцца да лакальнай сеткі.
Як працуе Кодэкс
Стан кнопкі і стан вываду
Пераменная ledState захоўвае стан выхаду святлодыёда. Па змаўчанні, калі web сервер запускаецца, ён НІЗКІ.
ButtonState і lastButtonState выкарыстоўваюцца для вызначэння таго, была націснутая кнопка ці не.Кнопка (web сервер)
Мы не ўключылі HTML для стварэння кнопкі ў зменнай index_html.
Гэта таму, што мы хочам мець магчымасць змяняць яго ў залежнасці ад бягучага стану святлодыёда, які таксама можна змяніць з дапамогай кнопкі.
Такім чынам, мы стварылі запаўняльнік для кнопкі %BUTTONPLACEHOLDER%, які будзе заменены тэкстам HTML для стварэння кнопкі пазней у кодзе (гэта робіцца ў функцыі processor()).працэсар()
Функцыя processor() замяняе любыя запаўняльнікі ў тэксце HTML фактычнымі значэннямі. Па-першае, ён правярае, ці ёсць у тэкстах HTML
запаўняльнікі %BUTTONPLACEHOLDER%.Затым выклічце функцыю theoutputState(), якая вяртае бягучы стан вываду. Мы захоўваем яго ў зменнай outputStateValue.
Пасля гэтага выкарыстоўвайце гэтае значэнне, каб стварыць тэкст HTML для адлюстравання кнопкі ў правільным стане:
Запыт HTTP GET на змяненне стану вываду (JavaScript)
Калі вы націскаеце кнопку, выклікаецца функцыя thetoggleCheckbox(). Гэтая функцыя будзе рабіць запыт на розныя URLs, каб уключыць або выключыць святлодыёд.Каб уключыць святлодыёд, ён робіць запыт на /update?state=1 URL:
У адваротным выпадку ён робіць запыт на /update?state=0 URL.
Запыт HTTP GET на абнаўленне стану (JavaScript)
Каб абнаўляць стан вываду на web сервера, мы выклікаем наступную функцыю, якая робіць новы запыт у /state URL кожную секунду.Апрацоўваць запыты
Затым нам трэба разабрацца з тым, што адбываецца, калі ESP32 або ESP8266 атрымлівае запыты на гэтыя URLs.
Калі запыт атрыманы на корань /URL, мы адпраўляем старонку HTML, а таксама працэсар.Наступныя радкі правяраюць, ці атрымалі вы запыт на /update?state=1 або /update?state=0 URL і змяняе ledState адпаведна.
Калі запыт атрыманы ў /state URL, мы адпраўляем бягучы стан вываду:
цыкл ()
У loop() мы ліквідуем націск кнопкі і ўключаем або выключаем святлодыёд у залежнасці ад значэння ledState зменная.Дэманстрацыя
Загрузіце код на плату ESP32. Загрузіце даведачныя дзеянні па коду.
Затым адкрыйце паслядоўны манітор на хуткасці 115200 бод. Націсніце кнопку EN/RST на борце, каб атрымаць IP-адрас.Адкрыйце браўзер у лакальнай сетцы і ўвядзіце IP-адрас ESP. Вы павінны мець доступ да web сервер, як паказана ніжэй.
Заўвага: Ваш браўзер і ESP32 павінны быць падлучаны да адной лакальнай сеткі.Вы можаце пераключыць кнопку на web сервер, каб уключыць святлодыёд.
Вы таксама можаце кіраваць тым жа святлодыёдам з дапамогай фізічнай кнопкі. Яго стан заўсёды будзе аўтаматычна абнаўляцца на web сервер.
Праект 9 ESP32 DHT11 Web Сервер
У гэтым праекце вы даведаецеся, як стварыць асінхронны ESP32 web сервер з DHT11, які адлюстроўвае тэмпературу і вільготнасць з дапамогай Arduino IDE.
Перадумовы
The web сервер, які мы пабудуем, аўтаматычна абнаўляе паказанні без неабходнасці абнаўлення web старонка.
З дапамогай гэтага праекта вы даведаецеся:
- Як счытваць тэмпературу і вільготнасць з датчыкаў DHT;
- Стварыце асінхронны web сервер з дапамогай ESPAsyncWebСерверная бібліятэка;
- Абнаўляць паказанні датчыка аўтаматычна без неабходнасці абнаўлення web старонка.
Асінхронны Web Сервер
Каб пабудаваць web сервер, які мы будзем выкарыстоўваць ESPAsyncWebСерверная бібліятэка які забяспечвае просты спосаб стварэння асінхроннага web сервер. Пабудова асінхроннага web Сервер мае некалькі дадаткаўtages, як згадваецца на старонцы бібліятэкі GitHub, напрыклад:
- «Апрацоўваць больш чым адно злучэнне адначасова»;
- «Калі вы адпраўляеце адказ, вы адразу ж гатовыя апрацоўваць іншыя злучэнні, пакуль сервер клапоціцца аб адпраўцы адказу ў фонавым рэжыме»;
- «Просты механізм апрацоўкі шаблонаў для працы з шаблонамі»;
Неабходныя дэталі
Каб выканаць гэты падручнік, вам спатрэбяцца наступныя часткі:
- Плата развіцця ESP32
- Модуль DHT11
- Макетная дошка
- Перамычкі
СхемаЎстаноўка бібліятэк
Вам неабходна ўсталяваць пару бібліятэк для гэтага праекта:
- The ДГТ і Уніфікаваны датчык Adafruit Бібліятэкі драйвераў для чытання з датчыка DHT.
- ESPAsyncWebСервер і Асінхронны TCP бібліятэкі для стварэння асінхрон web сервер.
Выконвайце наступныя інструкцыі, каб усталяваць гэтыя бібліятэкі:
Устаноўка бібліятэкі датчыкаў DHT
Каб счытваць з датчыка DHT з дапамогай Arduino IDE, вам трэба ўсталяваць Бібліятэка датчыкаў DHT. Выканайце наступныя дзеянні, каб усталяваць бібліятэку.
- Націсніце тут, каб загрузіць бібліятэку датчыка DHT. У тэчцы "Спампоўкі" павінна быць папка .zip
- Распакуйце папку .zip, і вы павінны атрымаць тэчку DHT-sensor-library-master
- Перайменуйце папку з DHT-sensor-library-master у DHT_sensor
- Перамясціце тэчку DHT_sensor у тэчку ўстаноўкі бібліятэк Arduino IDE
- Нарэшце, зноў адкрыйце Arduino IDE
Ўстаноўка драйвера Adafruit Unified Sensor
Вам таксама неабходна ўсталяваць Adafruit Unified Sensor Driver Бібліятэка для працы з датчыкам DHT. Выканайце наступныя дзеянні, каб усталяваць бібліятэку.
- Націсніце тут, каб загрузіць бібліятэку Adafruit Unified Sensor. У тэчцы "Спампоўкі" павінна быць папка .zip
- Распакуйце папку .zip, і вы павінны атрымаць папку Adafruit_sensor-master
- Перайменуйце папку з Adafruit_sensor-master у Adafruit_sensor
- Перамясціце тэчку Adafruit_sensor у тэчку ўсталявальных бібліятэк Arduino IDE
- Нарэшце, зноў адкрыйце Arduino IDE
Ўстаноўка ESPAsyncWebСерверная бібліятэка
Выканайце наступныя дзеянні, каб усталяваць ESPAsyncWebСервер бібліятэка:
- Націсніце тут, каб спампаваць ESPAsyncWebСерверная бібліятэка. Вы павінны былі
папку .zip у папцы "Спампоўкі". - Распакуйце папку .zip, і вы павінны
атрымаць ESPAsyncWebТэчка Server-master - Перайменуйце папку з ESPAsyncWebСервер-майстар для ESPAsyncWebСервер
- Перамясціце ESPAsyncWebТэчка сервера ў тэчку ўсталявальных бібліятэк Arduino IDE
Устаноўка асінхроннай бібліятэкі TCP для ESP32
The ESPAsyncWebСервер бібліятэка патрабуе Асінхронны TCP бібліятэка на працу. Каб усталяваць гэтую бібліятэку, выканайце наступныя дзеянні:
- Націсніце тут, каб спампаваць бібліятэку AsyncTCP. У тэчцы "Спампоўкі" павінна быць папка .zip
- Распакуйце папку .zip, і вы павінны атрымаць папку AsyncTCP-master
- Перайменуйце папку з AsyncTCP-master на AsyncTCP
- Перамясціце тэчку AsyncTCP у тэчку ўстаноўкі бібліятэк Arduino IDE
- Нарэшце, зноў адкрыйце Arduino IDE
Код
Мы запраграмуем ESP32 з дапамогай Arduino IDE, таму пераканайцеся, што ў вас усталяваны дадатковы кампанент ESP32, перш чым працягнуць: (Калі вы ўжо зрабілі гэты крок, вы можаце перайсці да наступнага.)
Устаноўка надбудовы ESP32 у Arduino IDE
Пасля ўстаноўкі неабходных бібліятэк адкрыйце код
Праект_9_ESP32_DHT11_Web_Server.ino ў IDE arduino.
Перш чым загрузіць код, не забудзьцеся ўставіць свае сеткавыя ўліковыя даныя, каб ESP мог падключыцца да лакальнай сеткі.Як працуе Кодэкс
У наступных параграфах мы растлумачым, як працуе код. Працягвайце чытаць, калі хочаце даведацца больш, або перайдзіце ў раздзел "Дэманстрацыя", каб убачыць канчатковы вынік.
Імпарт бібліятэк
Спачатку імпартуйце неабходныя бібліятэкі. Wi-Fi, ESPAsyncWebСервер і ESPAsyncTCP неабходны для зборкі web сервер. Бібліятэкі Adafruit_Sensor і DHT неабходныя для чытання з датчыкаў DHT11 або DHT22.Вызначэнне зменных
Вызначце GPIO, да якога падключаны кантакт дадзеных DHT. У гэтым выпадку ён падключаны да GPIO 4.Затым выберыце тып датчыка DHT, які вы выкарыстоўваеце. У нашай былойample, мы выкарыстоўваем DHT22. Калі вы выкарыстоўваеце іншы тып, вам проста трэба раскаментаваць свой датчык і закаментаваць усе астатнія.
Стварыце асобнік аб'екта DHT з тыпам і пін-кодам, якія мы вызначылі раней.Стварыце AsyncWebАб'ект сервера на порце 80.
Прачытайце функцыі тэмпературы і вільготнасці
Мы стварылі дзве функцыі: адна для счытвання тэмпературы. Мы стварылі дзве функцыі: адна для счытвання тэмпературы (readDHTTemperature()), а другая для счытвання вільготнасці (readDHTHumidity()).Атрымаць паказанні датчыка так жа проста, як выкарыстоўваць Атрымаць паказанні датчыка так жа проста, як выкарыстоўваць метады readTemperature() і readHumidity() для аб'екта dht.
У нас таксама ёсць умова, якая вяртае два працяжнікі (–), калі датчык не можа атрымаць паказанні.
Паказанні вяртаюцца ў выглядзе радка. Каб пераўтварыць float у радок, выкарыстоўвайце функцыю String().
Па змаўчанні мы чытаем тэмпературу ў градусах Цэльсія. Каб атрымаць тэмпературу ў градусах па Фарэнгейту, закаменціруйце тэмпературу па Цэльсію і раскаментуйце тэмпературу па Фарэнгейту, каб у вас было наступнае:
Загрузіце код
Цяпер загрузіце код у свой ESP32. Упэўніцеся, што ў вас выбраны правільныя плата і COM-порт. Запампуйце даведачны код.
Пасля загрузкі адкрыйце паслядоўны манітор на хуткасці 115200 бод. Націсніце кнопку скіду ESP32. IP-адрас ESP32 павінен быць надрукаваны ў паслядоўным нумары манітор.Дэманстрацыя
Адкрыйце браўзер і ўвядзіце IP-адрас ESP32. Ваша web сервер павінен адлюстроўваць апошнія паказанні датчыка.
Заўвага: Ваш браўзер і ESP32 павінны быць падлучаны да адной лакальнай сеткі.
Звярніце ўвагу, што паказанні тэмпературы і вільготнасці абнаўляюцца аўтаматычна без неабходнасці абнаўлення web старонка.
Праект_10_ESP32_OLED_дысплей
Гэты праект паказвае, як выкарыстоўваць 0.96-цалевы OLED-дысплей SSD1306 з ESP32 з дапамогай Arduino IDE.
Прадстаўляем 0.96-цалевы OLED-дысплей
The OLED-дысплей у гэтым уроку мы будзем выкарыстоўваць мадэль SSD1306: аднакаляровы 0.96-цалевы дысплей з 128×64 пікселяў, як паказана на наступным малюнку.OLED-дысплей не патрабуе падсвятлення, што забяспечвае вельмі добры кантраст у цёмным асяроддзі. Акрамя таго, яго пікселі спажываюць энергію, толькі калі яны ўключаны, таму OLED-дысплей спажывае менш энергіі ў параўнанні з іншымі дысплеямі.
Паколькі OLED-дысплей выкарыстоўвае пратакол сувязі I2C, падключэнне вельмі простае. Вы можаце выкарыстоўваць наступную табліцу ў якасці спасылкі.
Штыфт OLED | ESP32 |
він | 3.3В |
GND | GND |
SCL | GPIO 22 |
ПДР | GPIO 21 |
СхемаУсталёўка OLED-бібліятэкі SSD1306 – ESP32
Для кіравання OLED-дысплеем з дапамогай ESP32 даступна некалькі бібліятэк.
У гэтым уроку мы будзем выкарыстоўваць дзве бібліятэкі Adafruit: Бібліятэка Adafruit_SSD1306 і Бібліятэка Adafruit_GFX.
Каб усталяваць гэтыя бібліятэкі, выканайце наступныя дзеянні.
- Адкрыйце Arduino IDE і перайдзіце да Sketch > Include Library > Manage Libraries. Павінен адкрыцца дыспетчар бібліятэкі.
- Увядзіце «SSD1306» у поле пошуку і ўсталюйце бібліятэку SSD1306 ад Adafruit.
- Пасля ўстаноўкі бібліятэкі SSD1306 ад Adafruit увядзіце «GFX» у поле пошуку і ўсталюйце бібліятэку.
- Пасля ўстаноўкі бібліятэк перазапусціце Arduino IDE.
Код
Пасля ўстаноўкі неабходных бібліятэк адкрыйце Project_10_ESP32_OLED_Display.ino ў IDE arduino. код
Мы запраграмуем ESP32 з дапамогай Arduino IDE, таму пераканайцеся, што ў вас усталяваны дадатковы кампанент ESP32, перш чым працягваць: (Калі вы ўжо зрабілі гэты крок, вы можаце перайсці да наступнага.)
Устаноўка надбудовы ESP32 у Arduino IDEЯк працуе Кодэкс
Імпарт бібліятэк
Спачатку трэба імпартаваць неабходныя бібліятэкі. Бібліятэка Wire для выкарыстання I2C і бібліятэкі Adafruit для запісу на дысплей: Adafruit_GFX і Adafruit_SSD1306.Ініцыялізуйце OLED-дысплей
Затым вы вызначаеце шырыню і вышыню OLED. У гэтым эксample, мы выкарыстоўваем OLED-дысплей 128×64. Калі вы выкарыстоўваеце іншыя памеры, вы можаце змяніць гэта ў зменных SCREEN_WIDTH і SCREEN_HEIGHT.Затым ініцыялізуйце аб'ект адлюстравання з шырынёй і вышынёй, вызначанымі раней з дапамогай пратаколу сувязі I2C (&Wire).
Параметр (-1) азначае, што ваш OLED-дысплей не мае штыфта RESET. Калі ваш OLED-дысплей мае штыфт RESET, ён павінен быць падлучаны да GPIO. У такім выпадку вы павінны перадаць нумар GPIO у якасці параметра.
У setup() ініцыялізуйце паслядоўны манітор на хуткасці перадачы 115200 бод для мэт адладкі.Ініцыялізуйце OLED-дысплей метадам begin() наступным чынам:
Гэты фрагмент таксама друкуе паведамленне на паслядоўным маніторы, калі мы не можам падключыцца да дысплея.
Калі вы выкарыстоўваеце іншы OLED-дысплей, вам можа спатрэбіцца змяніць OLED-адрас. У нашым выпадку адрас - 0x3C.
Пасля ініцыялізацыі дысплея дадайце дзве секунды затрымкі, каб у OLED было дастаткова часу для ініцыялізацыі перад запісам тэксту:
Ачысціць дысплей, усталяваць памер шрыфта, колер і напісаць тэкст
Пасля ініцыялізацыі дысплея ачысціце буфер дысплея метадам clearDisplay():
Перш чым пісаць тэкст, вам трэба ўсталяваць памер тэксту, колер і месца, дзе тэкст будзе адлюстроўвацца на OLED.
Усталюйце памер шрыфта з дапамогай метаду setTextSize():Усталюйце колер шрыфта метадам setTextColor():
WHITE задае белы шрыфт і чорны фон.
Вызначце месца пачатку тэксту з дапамогай метаду setCursor(x,y). У гэтым выпадку мы ўсталёўваем пачатак тэксту ў каардынатах (0,0) - у левым верхнім куце.Нарэшце, вы можаце адправіць тэкст на дысплей з дапамогай метаду println() наступным чынам
Затым вам трэба выклікаць метад display(), каб сапраўды адлюстраваць тэкст на экране.
Бібліятэка Adafruit OLED дае карысныя метады лёгкай пракруткі тэксту.
- startscrollright(0x00, 0x0F): пракручваць тэкст злева направа
- startscrollleft(0x00, 0x0F): пракручваць тэкст справа налева
- startscrolldiagright(0x00, 0x07): пракручваць тэкст з левага ніжняга кута ў правы верхні вугал startscrolldiagleft(0x00, 0x07): пракручваць тэкст з правага ніжняга вугла ў левы верхні вугал
Загрузіце код
Цяпер загрузіце код у свой ESP32. Інструкцыі па загрузцы кода.
Пасля загрузкі кода на OLED будзе адлюстроўвацца тэкст, які пракручваецца.
Дакументы / Рэсурсы
![]() |
Базавы стартавы набор LAFVIN ESP32 [pdfІнструкцыя па эксплуатацыі ESP32 Basic Starter Kit, ESP32, Basic Starter Kit, Стартавы камплект |