ESP32 Негизги Стартер
Комплект
Packing List
ESP32 киришүү
ESP32 үчүн жаңыбы? Ушул жерден баштаңыз! ESP32 - бул Espressif тарабынан иштелип чыккан, Wi-Fi жана Bluetooth зымсыз мүмкүнчүлүктөрүн жана эки ядролуу процессорду камтыган Чиптеги (SoC) микроконтроллерлердин бир катар арзан жана аз кубаттуулугу. Эгер сиз ESP8266 менен тааныш болсоңуз, ESP32 анын мураскери болуп саналат жана көптөгөн жаңы функцияларды камтыйт.ESP32 спецификациялары
Эгер сиз бир аз көбүрөөк техникалык жана конкреттүү болгуңуз келсе, ESP32нин төмөнкү деталдуу мүнөздөмөлөрүн карап чыга аласыз (булак: http://esp32.net/) - кененирээк маалымат алуу үчүн, маалымат баракчасын текшерүү):
- Зымсыз байланыш WiFi: HT150.0 менен 40 Мбит/сек маалымат ылдамдыгы
- Bluetooth: BLE (Bluetooth Low Energy) жана Bluetooth Classic
- Процессор: Tensilica Xtensa Dual-Core 32-бит LX6 микропроцессору, 160 же 240 МГц жыштыкта иштейт
- Эстутум:
- ROM: 448 КБ (жүктөө жана негизги функциялар үчүн)
- SRAM: 520 КБ (маалыматтар жана нускамалар үчүн)
- RTC fas SRAM: 8 КБ (терең уйку режиминен RTC жүктөө учурунда маалыматтарды сактоо жана негизги CPU үчүн)
- RTC жай SRAM: 8КБ (терең уйку режиминде ко-процессорго жетүү үчүн) eFuse: 1 Кбит (анын ичинен 256 бит система үчүн колдонулат (MAC дареги жана чиптин конфигурациясы) жана калган 768 бит кардарлардын тиркемелери үчүн сакталган, анын ичинде Flash-шифрлөө жана чип-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 модулу)
Төмөнкү кубаттуулук: ADC конверсияларын дагы эле колдоно ала турганыңызды камсыздайт, мисалыampле, терең уйку учурунда.
Перифериялык киргизүү/чыгарма:
- DMA менен перифериялык интерфейс, анын ичинде сыйымдуулук тийүү
- ADCs (Аналогдук-санариптик конвертер)
- DACs (санариптик-аналогдук конвертер)
- I²C (Inter-Integrated Circuit)
- UART (Универсалдуу асинхрондук кабылдагыч/өткөргүч)
- SPI (сериялык перифериялык интерфейс)
- I²S (Integrated Interchip Sound)
- RMII (Кыскартылган медиа-көз карандысыз интерфейс)
- PWM (импульстук кеңдик модуляциясы)
Коопсуздук: AES жана SSL/TLS үчүн аппараттык акселераторлор
ESP32 өнүктүрүү такталары
ESP32 жылаңач ESP32 чипине тиешелүү. Бирок, "ESP32" термини ESP32 иштеп чыгуу такталарына карата да колдонулат. ESP32 жылаңач чиптерин колдонуу оңой же практикалык эмес, айрыкча үйрөнүүдө, тестирлөөдө жана прототиптөөдө. Көпчүлүк учурда, сиз ESP32 иштеп чыгуу тактасын колдонгуңуз келет.
Биз шилтеме катары ESP32 DEVKIT V1 тактасын колдонобуз. Төмөнкү сүрөттө 32 GPIO пиндери бар ESP1 DEVKIT V30 тактасы көрсөтүлгөн.Техникалык мүнөздөмөлөр – ESP32 DEVKIT V1
Төмөнкү таблица ESP32 DEVKIT V1 DOIT тактасынын өзгөчөлүктөрүн жана спецификациясын көрсөтөт:
Өзөктөрдүн саны | 2 (эки өзөктүү) |
Wi-Fi | 2.4 ГГц 150 Мбит/сек чейин |
Bluetooth | BLE (Bluetooth Low Energy) жана эски Bluetooth |
Архитектура | 32 бит |
Сааттын жыштыгы | 240 МГц чейин |
RAM | 512 KB |
Pins | 30 (үлгүгө жараша) |
Перифериялык түзүлүштөр | Симптомдук тийүү, ADC (аналогдон санарипке конвертерге), DAC (санариптен аналогго конвертерге), 12C (интегралдык микросхема), UART (универсалдуу асинхрондук кабыл алгыч/өткөргүч), CAN 2.0 (контроллер аймагы тармагын), SPI (сериялык перифериялык интерфейс) , 12S (Интеграцияланган Inter-IC Үн), RMII (Reduced Media-Independent Interface), PWM (импульстун кеңдигин модуляциялоо) жана башкалар. |
Камтылган баскычтар | RESET жана BOOT баскычтары |
Камтылган LED | орнотулган көк LED GPIO2 менен туташтырылган; тактанын иштетилип жатканын көрсөткөн кызыл LED орнотулган |
USB-ден UART көпүрө |
CP2102 |
Ал microUSB интерфейси менен келет, аны сиз кодду жүктөө же кубаттуулукту колдонуу үчүн тактаны компьютериңизге туташтыруу үчүн колдоно аласыз.
Ал сериялык интерфейсти колдонуу менен COM порту аркылуу компьютериңиз менен байланышуу үчүн CP2102 чипти (USB - UART) колдонот. Дагы бир популярдуу чип CH340 болуп саналат. Бортуңуздагы USB-UART чип конвертери эмне экенин текшериңиз, анткени компьютериңиз такта менен байланыша алышы үчүн керектүү драйверлерди орнотушуңуз керек болот (бул тууралуу көбүрөөк маалымат кийинчерээк бул колдонмодо).
Бул такта ошондой эле тактаны кайра күйгүзүү үчүн RESET баскычы (EN деп белгилениши мүмкүн) жана тактаны жаркылдаган режимге коюу үчүн BOOT баскычы (кодду алуу үчүн жеткиликтүү) менен келет. Кээ бир такталарда BOOT баскычы жок болушу мүмкүн экенин эске алыңыз.
Ал ошондой эле ички GPIO 2ге туташтырылган көк LED менен келет. Бул LED визуалдык физикалык натыйжаларды берүү үчүн мүчүлүштүктөрдү оңдоо үчүн пайдалуу. Ошондой эле тактага кубат бергенде күйүп турган кызыл LED бар.ESP32 Pinout
ESP32 перифериялык түзүлүштөр төмөнкүлөрдү камтыйт:
- 18 Аналогдук-санариптик конвертер (ADC) каналдары
- 3 SPI интерфейси
- 3 UART интерфейси
- 2 I2C интерфейси
- 16 PWM чыгаруу каналдары
- 2 санариптик-аналогдук конвертер (DAC)
- 2 I2S интерфейси
- 10 Capacitive сезүүчү GPIOs
ADC (аналогдук-санариптик конвертер) жана DAC (санариптиктен аналогдук конвертерге) өзгөчөлүктөрү белгилүү статикалык пиндерге дайындалган. Бирок, сиз кайсы пиндер UART, I2C, SPI, PWM ж. Бул ESP32 чипинин мультиплекстөө өзгөчөлүгүнөн улам мүмкүн.
Сиз программалык камсыздоодо пиндердин касиеттерин аныктай алсаңыз да, төмөнкү сүрөттө көрсөтүлгөндөй демейки боюнча дайындалган пиндер бар.Кошумчалай кетсек, аларды белгилүү бир долбоорго ылайыктуу же ылайыктуу кылган өзгөчө өзгөчөлүктөрү бар төөнөгүчтөр бар. Төмөнкү таблицада кандай төөнөгүчтөрдү киргизүү, чыгаруу катары колдонуу эң жакшы жана кайсынысынан этият болуу керектиги көрсөтүлгөн.
Жашыл түс менен белгиленген төөнөгүчтөр колдонууга жарайт. Сары түс менен белгиленгендерди колдонууга болот, бирок көңүл бурушуңуз керек, анткени алар жүктөөдө күтүүсүз болушу мүмкүн. Кызыл менен белгиленген төөнөгүчтөрдү киргизүү же чыгуу катары колдонуу сунушталбайт.
GP IO | Киргизүү | Чыгуу | Эскертүүлөр |
0 | тартты | OK | жүктөөдө PWM сигналын чыгарат, жаркылдоо режимине кирүү үчүн LOW болушу керек |
1 | TX пин | OK | жүктөөдө мүчүлүштүктөрдү оңдоо |
2 | OK | OK | борттогу LED менен туташтырылган, жарк этүүчү режимге өтүү үчүн сүзүүчү же LOW болушу керек |
3 | OK | RX пин | ЖОГОРКУ жүктөөдө |
4 | OK | OK | |
5 | OK | OK | жүктөөдө PWM сигналын чыгарат, боо пин |
12 | OK | OK | жүктөө төөнөгүчтү бийик тартса иштебей калат |
13 | OK | OK | |
14 | OK | OK | жүктөөдө PWM сигналын чыгарат |
15 | OK | OK | жүктөөдө PWM сигналын чыгарат, боо пин |
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 иштеп чыгуу такталарында көрүнөт. Бирок, бул төөнөгүчтөр ESP-WROOM-32 чипиндеги интегралдык SPI жарыгына туташтырылган жана башка колдонуу үчүн сунушталбайт. Ошондуктан, бул төөнөгүчтөрдү долбоорлоруңузда колдонбоңуз:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
Capacitive сенсордук GPIOs
ESP32 10 ички сыйымдуулук сенсорлору бар. Булар адамдын териси сыяктуу электрдик заряды бар нерселердин өзгөрүшүн сезе алат. Ошентип, алар манжа менен GPIOларга тийгенде пайда болгон вариацияларды аныктай алышат. Бул төөнөгүчтөрдү сыйымдуулукка оңой бириктирип, механикалык баскычтарды алмаштырса болот. Capacitive сенсордук төөнөгүчтөрдү 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)
Аналогдук санариптик алмаштыргыч (ADC)
ESP32де 18 x 12 бит ADC киргизүү каналдары бар (ESP8266да 1x 10 бит ADC гана бар). Булар ADC жана тиешелүү каналдар катары колдонула турган 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)
Эскертүү: Wi-Fi колдонулганда ADC2 пиндерин колдонууга болбойт. Ошентип, эгер сиз Wi-Fi колдонуп жатсаңыз жана ADC2 GPIO'дон бааны алууда кыйынчылыкка туш болуп жатсаңыз, анын ордуна ADC1 GPIO колдонууну ойлонушуңуз мүмкүн. Бул сиздин көйгөйүңүздү чечиши керек.
ADC киргизүү каналдары 12 биттик чечимге ээ. Бул 0дөн 4095ке чейинки аналогдук көрсөткүчтөрдү ала аласыз дегенди билдирет, анда 0 0V жана 4095тен 3.3Vга туура келет. Сиз ошондой эле код жана ADC диапазону боюнча каналдарыңыздын чечилиштерин орното аласыз.
ESP32 ADC пиндеринин сызыктуу жүрүм-туруму жок. Балким, сиз 0 жана 0.1 В же 3.2 жана 3.3 В ортосунда айырмалай албай каласыз. ADC пиндерин колдонууда муну эстен чыгарбоо керек. Сиз төмөнкү сүрөттө көрсөтүлгөнгө окшош жүрүм-турумду аласыз.Санариптиктен аналогго конвертер (DAC)
Санариптик сигналдарды аналогдук томго айландыруу үчүн ESP2де 8 x 32 бит DAC каналдары барtage сигналдын чыгышы. Булар DAC каналдары:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIOs
ESP32де RTC GPIO колдоосу бар. RTC аз кубаттуулуктагы подсистемасына багытталган GPIO'лорду ESP32 терең уйку режиминде болгондо колдонсо болот. Бул RTC GPIOs Ultra Low болгондо ESP32ди терең уйкудан ойготуу үчүн колдонулушу мүмкүн
Кубат (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)
PWM
ESP32 LED PWM контроллерунда 16 көз карандысыз канал бар, аларды ар кандай касиеттерге ээ PWM сигналдарын түзүү үчүн конфигурациялоого болот. Чыгуу катары иштей турган бардык пиндер PWM пиндери катары колдонулушу мүмкүн (GPIO 34-39 PWM түзө албайт).
PWM сигналын коюу үчүн коддо бул параметрлерди аныктоо керек:
- Сигналдын жыштыгы;
- Милдеттүү цикл;
- PWM каналы;
- Сигнал чыгаргыңыз келген GPIO.
I2C
ESP32де эки I2C каналы бар жана каалаган пинди SDA же SCL катары коюуга болот. Arduino IDE менен ESP32ди колдонгондо, демейки I2C пиндери:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Эгерде сиз зым китепканасын колдонууда башка пиндерди колдонгуңуз келсе, сиз жөн гана чалышыңыз керек:
Wire.begin(SDA, SCL);
SPI
Демейки боюнча, SPI үчүн пин картасы:
SPI | MOSI | MISO | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Үзгүлтүктөр
Бардык GPIO'ларды үзгүлтүксүз конфигурациялоого болот.
Боо төөнөгүчтөрү
ESP32 чипинде төмөнкү төөнөгүчтөр бар:
- GPIO 0 (жүктөө режимине кирүү үчүн LOW болушу керек)
- GPIO 2 (жүктөө учурунда калкып турушу керек же LOW болушу керек)
- GPIO 4
- GPIO 5 (жүктөө учурунда ЖОГОРКУ болушу керек)
- GPIO 12 (жүктөө учурунда LOW болушу керек)
- GPIO 15 (жүктөө учурунда ЖОГОРКУ болушу керек)
Булар ESP32ди жүктөгүчкө же жаркыраган режимге коюу үчүн колдонулат. USB/Сериялык орнотулган иштеп чыгуу такталарынын көпчүлүгүндө бул пиндердин абалы жөнүндө кабатырлануунун кереги жок. Башкарма төөнөгүчтөрдү жаркылдоо же жүктөө режими үчүн туура абалга келтирет. ESP32 жүктөө режимин тандоо боюнча көбүрөөк маалыматты бул жерден тапса болот.
Бирок, эгерде сизде ал пиндерге туташтырылган перифериялык түзүлүштөр болсо, жаңы кодду жүктөө, ESP32ди жаңы микропрограмма менен жаркыруу же тактаны баштапкы абалга келтирүүдө кыйынчылыктар болушу мүмкүн. Эгер сизде боо төөнөгүчтөрүнө туташтырылган кээ бир перифериялык түзүлүштөрүңүз болсо жана сиз кодду жүктөөдө же ESP32ди жаркылдатууда кыйынчылыкка туш болуп жатсаңыз, анда ал перифериялык түзүлүштөр ESP32нин туура режимге өтүшүнө жолтоо болуп жаткандыктан болушу мүмкүн. Сизди туура багытка багыттоо үчүн Жүктөө режимин тандоо документтерин окуңуз. Баштапкы абалга келтиргенден, жаркылдагандан же жүктөөдөн кийин, ал пиндер күтүлгөндөй иштейт.
Жүктөөдө ЖОГОРУ төөнөгүчтөр
Кээ бир GPIO'лор жүктөө же баштапкы абалга келтирүү учурунда абалын ЖОГОРКУ абалга өзгөртүшөт же PWM сигналдарын чыгарышат.
Бул, эгерде сизде бул GPIO'ларга туташкан чыкмаларыңыз болсо, ESP32 баштапкы абалга келтирилгенде же жүктөлгөндө күтүүсүз натыйжаларды аласыз дегенди билдирет.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6дан GPIO 11ге чейин (ESP32 интеграцияланган SPI флеш эс тутумуна туташкан – колдонуу сунушталбайт).
- GPIO 14
- GPIO 15
Иштетүү (EN)
Иштетүү (EN) - 3.3V жөнгө салгычтын иштетүү пини. Ал тартылды, андыктан 3.3V жөнгө салгычты өчүрүү үчүн жерге туташтырыңыз. Бул ESP32ди кайра иштетүү үчүн баскычка туташтырылган бул пинди колдоно аласыз дегенди билдирет, мисалыample.
GPIO агымы тартылды
GPIO үчүн алынган абсолюттук максималдуу ток ESP40 маалымат баракчасындагы "Сунушталган иштөө шарттары" бөлүмүнө ылайык 32мА.
ESP32 Камтылган Холл эффектинин сенсору
ESP32 ошондой эле анын айланасындагы магнит талаасындагы өзгөрүүлөрдү аныктаган орнотулган зал эффектиси сенсоруна ээ.
ESP32 Arduino IDE
Arduino IDE үчүн ESP32ди Arduino IDE жана анын программалоо тили аркылуу программалоого мүмкүндүк берүүчү кошумча бар. Бул окуу куралында сиз Windows, Mac OS X же Linux колдонуп жатсаңыз да, ESP32 тактасын Arduino IDEге кантип орнотууну көрсөтөбүз.
Пререквизиттер: 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 программалык бетинде ылдый сыдырышыңыз керек.
Arduino IDEде ESP32 кошумчасын орнотуу
ESP32 тактасын Arduino IDEиңизге орнотуу үчүн, төмөнкү көрсөтмөлөрдү аткарыңыз:
- Arduino IDE'иңизге өтүңүз File> Параметрлер
- Төмөнкүлөрдү “Кошумча башкармалыктын менеджери URLs" талаасы:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Андан кийин, "OK" баскычын чыкылдатыңыз:Эскертүү: эгер сизде ESP8266 такталары бар болсо URL, сиз ажырата аласыз URLс үтүр менен төмөнкүдөй:
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 модулу)
- Портту тандаңыз (эгерде сиз Arduino IDEде COM портун көрбөй жатсаңыз, CP210x USB to UART Bridge VCP драйверлерин орнотуу керек):
- Төмөнкү эксти ачыңызampле астында File > Мисamples > WiFi
(ESP32) > WiFiScan - Arduino IDEиңизде жаңы эскиз ачылат:
- Arduino IDEдеги Жүктөө баскычын басыңыз. Код түзүлүп, тактаңызга жүктөлгөнгө чейин бир нече секунд күтө туруңуз.
- Эгер баары күтүлгөндөй болсо, "Жүктөө бүттү" дегенди көрүшүңүз керек. билдирүү.
- Arduino IDE сериялык мониторду 115200 ылдамдыкта ачыңыз:
- ESP32 борттогу Иштетүү баскычын басыңыз жана сиз ESP32нин жанында жеткиликтүү тармактарды көрүшүңүз керек:
Проблемаларды чечүү
Эгер сиз ESP32ге жаңы эскизди жүктөөгө аракет кылсаңыз жана сиз бул ката билдирүүсүн алсаңыз: "Өтө маанилүү ката кетти: ESP32ге туташпай калды: Убактысы бүттү... Туташуу...". Бул сиздин ESP32 жаркылдоо/жүктөө режиминде эмес дегенди билдирет.
Туура тактанын атын жана COM por тандалгандан кийин, бул кадамдарды аткарыңыз:
ESP32 тактаңыздагы "BOOT" баскычын басып туруңуз
- Эскизиңизди жүктөө үчүн Arduino IDEдеги "Жүктөө" баскычын басыңыз:
- "Туташуу..." дегенди көргөндөн кийин. Arduino IDEдеги билдирүүңүздү "BOOT" баскычынан бошотуңуз:
- Андан кийин, сиз "Жүктөө аяктады" деген билдирүүнү көрүшүңүз керек
Дал ушул. Сиздин ESP32 жаңы эскизди иштетиши керек. ESP32ди өчүрүп күйгүзүү жана жаңы жүктөлгөн эскизди иштетүү үчүн “ИШТҮҮ” баскычын басыңыз.
Ошондой эле жаңы эскизди жүктөгүңүз келген сайын ошол баскычтын ырааттуулугун кайталашыңыз керек болот.
Долбоор 1 ESP32 Inputs Outputs
Бул баштоо колдонмосунда сиз Arduino IDE менен ESP32 аркылуу баскычты которгуч сыяктуу санариптик киргизүүлөрдү кантип окууну жана LED сыяктуу санарип чыгууларды башкарууну үйрөнөсүз.
Пререквизиттер
Arduino IDE аркылуу ESP32ди программалайбыз. Ошентип, улантуудан мурун сизде ESP32 такталарынын кошумчасы орнотулганын текшериңиз:
- Arduino IDEде ESP32 кошумчасын орнотуу
ESP32 Control Digital Outputs
Биринчиден, сиз көзөмөлдөгүңүз келген GPIOну OUTPUT катары коюшуңуз керек. pinMode() функциясын төмөнкүдөй колдонуңуз:
pinMode(GPIO, OUTPUT);
Санарип чыгууну башкаруу үчүн сиз жөн гана аргумент катары кабыл алган digitalWrite() функциясын, сиз айтып жаткан GPIO (int саны) жана ЖОГОРКУ же ТӨМҮГҮ абалды колдонушуңуз керек.
digitalWrite(GPIO, STATE);
Бардык GPIOs 6дан 11ге чейинки GPIOs (интегралдык SPI жаркына туташкан) жана GPIOs 34, 35, 36 жана 39 (киргизүү гана GPIOs) кошпогондо чыгаруу катары колдонулушу мүмкүн;
ESP32 GPIO жөнүндө көбүрөөк билүү: ESP32 GPIO маалымдама колдонмосу
ESP32 Санарип киргизүүлөрдү окуу
Биринчиден, pinMode() функциясын колдонуп, INPUT катары окугуңуз келген GPIOну төмөнкүдөй орнотуңуз:
pinMode(GPIO, INPUT);
Санарип киргизүүнү окуу үчүн, баскыч сыяктуу, сиз аргумент катары кабыл алган digitalRead() функциясын колдоносуз, сиз айтып жаткан GPIO (int саны).
digitalRead(GPIO);
GPIO 32дан 6ге чейин (интегралдык SPI жарыгына туташкан) тышкары, бардык ESP11 GPIOs киргизүү катары колдонулушу мүмкүн.
ESP32 GPIO жөнүндө көбүрөөк билүү: ESP32 GPIO маалымдама колдонмосу
Долбоор Example
Санариптик киргизүүлөрдү жана санарип чыгууларды кантип колдонууну көрсөтүү үчүн, биз жөнөкөй долбоорду курабызampбаскычы жана LED менен. Биз баскычтын абалын окуйбуз жана төмөнкү сүрөттө көрсөтүлгөндөй LEDди күйгүзөбүз.
Бөлүктөр талап кылынат
Бул жерде схеманы куруу үчүн керек болгон бөлүктөрүнүн тизмеси:
- ESP32 DEVKIT V1
- 5 мм LED
- 220 Ом каршылыгы
- Pushbutton
- 10k Ohm каршылык
- Breadboard
- Секирүүчү зымдар
Схематикалык диаграмма
Улантуудан мурун, сиз LED жана баскыч баскычы менен схеманы чогултушуңуз керек.
Биз LEDди GPIO 5ке жана баскычты GPIOго туташтырабыз 4.Code
Project_1_ESP32_Inputs_Outputs.ino кодун arduino IDEде ачыңызКодекс кантип иштейт
Төмөнкү эки сапта сиз пиндерди дайындоо үчүн өзгөрмөлөрдү түзөсүз:
Баскыч GPIO 4 менен туташтырылган жана LED GPIO 5ке туташкан. Arduino IDEди ESP32 менен колдонууда 4 GPIO 4 жана 5 GPIO 5ке туура келет.
Андан кийин, баскычтын абалын кармап туруу үчүн өзгөрмө түзөсүз. Демейки боюнча, ал 0 (басылган эмес).
int buttonState = 0;
Орнотууда() сиз баскычты INPUT катары, ал эми LEDди ЧЫГУУ катары инициализациялайсыз.
Ал үчүн сиз айтып жаткан пинди кабыл алган pinMode() функциясын жана режимди колдоносуз: INPUT же OUTPUT.
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
Loop() бул жерде сиз баскычтын абалын окуп, LEDди ошого жараша орнотосуз.
Кийинки сапта сиз баскычтын абалын окуп, аны buttonState өзгөрмөсүндө сактайсыз.
Мурда көргөнүбүздөй, сиз digitalRead() функциясын колдоносуз.
buttonState = DigitalRead(buttonPin);
Төмөнкү if оператору баскычтын абалы ЖОГОРКУ экенин текшерет. Эгер ошондой болсо, ал аргумент катары ledPin жана ЖОГОРКУ абалын кабыл алган digitalWrite() функциясынын жардамы менен LEDди күйгүзөт.
эгерде (buttonState == HIGH)Эгерде баскычтын абалы ЖОГОРКУ эмес болсо, сиз LEDди өчүрөсүз. DigitalWrite() функциясына экинчи аргумент катары LOW коюңуз.
Код жүктөлүүдө
Жүктөө баскычын чыкылдатуудан мурун, Куралдар > Тактайга өтүп, тактаны тандаңыз: DOIT ESP32 DEVKIT V1 тактасын.
Куралдар > Портко өтүңүз жана ESP32 туташкан COM портун тандаңыз. Андан кийин, жүктөө баскычын басып, "Жүктөө аяктады" деген билдирүүнү күтүңүз.Эскертүү: Мүчүлүштүктөрдү оңдоо терезесинде көп чекиттерди (туташуу…__…__) жана “ESP32ге туташуу ишке ашкан жок: пакеттин башын күтүүдө убакыт бүттү” билдирүүсүн көрсөңүз, анда сиз ESP32 борттогу BOOT баскычын басышыңыз керек дегенди билдирет. чекиттерден кийин баскычты басыңыз
пайда боло баштоо.Кыйынчылыктарды чечүү
Демонстрация
Кодду жүктөп бергенден кийин, схемаңызды текшериңиз. Баскычты басканда LED жарык күйүп турушу керек:Аны чыгарганда өчүрүңүз:
Долбоор 2 ESP32 Аналогдук киргизүүлөр
Бул долбоор Arduino IDE аркылуу ESP32 менен аналогдук киргизүүлөрдү кантип окууну көрсөтөт.
Аналогдук окуу потенциометрлер же аналогдук сенсорлор сыяктуу өзгөрүлмө резисторлордун маанилерин окуу үчүн пайдалуу.
Аналогдук киргизүүлөр (ADC)
ESP32 менен аналогдук маанини окуу ар кандай көлөмдү өлчөй аласыз дегенди билдиретtag0 В жана 3.3 В ортосундагы деңгээлдер.
ТомtagАндан кийин өлчөнгөн e 0 жана 4095 ортосундагы мааниге ыйгарылат, мында 0 В 0гө, ал эми 3.3 В 4095ке туура келет.tage 0 V жана 3.3 V ортосундагы тиешелүү маани ортосунда берилет.ADC сызыктуу эмес
Идеалында, сиз ESP32 ADC пиндерин колдонуп жатканда сызыктуу жүрүм-турумду күтөсүз.
Бирок, андай болбойт. Сиз төмөнкү диаграммада көрсөтүлгөндөй жүрүм-турумду аласыз:Бул жүрүм сиздин ESP32 3.3 В 3.2 В айырмалай албайт дегенди билдирет.
Сиз эки том үчүн бирдей мааниге ээ болосузtages: 4095.
Ушундай эле нерсе өтө төмөн көлөм үчүн да болотtage маанилери: 0 V жана 0.1 V үчүн сиз бирдей мааниге ээ болосуз: 0. ESP32 ADC пиндерин колдонууда муну эстен чыгарбашыңыз керек.
analogRead() функциясы
Arduino IDE аркылуу ESP32 менен аналогдук киргизүүнү окуу analogRead() функциясын колдонуу сыяктуу жөнөкөй. Бул аргумент катары кабыл алат, сиз окугуңуз келген GPIO:
analogRead(GPIO);
DEVKIT V15 тактасында 1 гана бар (30 GPIO менен версия).
ESP32 тактаңызды кармап, ADC төөнөгүчтөрүн табыңыз. Булар төмөндөгү сүрөттө кызыл чек менен белгиленген.Бул аналогдук киргизүү төөнөгүчтөрү 12 биттик чечимге ээ. Бул аналогдук киргизүүнү окуганда анын диапазону 0дөн 4095ке чейин өзгөрүшү мүмкүн дегенди билдирет.
Эскертүү: Wi-Fi колдонулганда ADC2 пиндерин колдонууга болбойт. Ошентип, эгер сиз Wi-Fi колдонуп жатсаңыз жана ADC2 GPIO'нун маанисин алууда кыйынчылыкка туш болуп жатсаңыз, анын ордуна ADC1 GPIO колдонууну ойлонушуңуз мүмкүн, бул сиздин көйгөйүңүздү чечиши керек.
Баары бири-бири менен кандай байланышта экенин көрүү үчүн, биз жөнөкөй экс жасайбызampпотенциометрден аналогдук маанини окуу.
Бөлүктөр талап кылынат
Бул үчүн эксample, сизге төмөнкү бөлүктөр керек:
- ESP32 DEVKIT V1 тактасы
- Potentiometer
- Breadboard
- Секирүүчү зымдар
БУУнун
ESP32ге потенциометрди зым менен кошуңуз. Потенциометрдин ортоңку пин GPIO 4 менен туташтырылышы керек. Шилтеме катары төмөнкү схемалык диаграмманы колдонсоңуз болот.Code
Биз ESP32ди Arduino IDE аркылуу программалайбыз, андыктан улантуудан мурун ESP32 кошумчасы орнотулганын текшериңиз: (Эгер сиз бул кадамды жасаган болсоңуз, кийинки кадамга өтсөңүз болот.)
Arduino IDEде ESP32 кошумчасын орнотуу
Project_2_ESP32_Inputs_Outputs.ino кодун arduino IDEде ачыңызБул код жөн гана потенциометрден маанилерди окуйт жана ал баалуулуктарды Сериялык монитордо басып чыгарат.
Коддо сиз потенциометр туташтырылган GPIOну аныктоо менен баштайсыз. Бул эксample, GPIO 4.Орнотууда() 115200 ылдамдыкта сериялык байланышты инициализациялаңыз.
Loop()да potPinден аналогдук киргизүүнү окуу үчүн analogRead() функциясын колдонуңуз.
Акырында, сериялык монитордогу потенциометрден окулган маанилерди басып чыгарыңыз.
ESP32ге берилген кодду жүктөп бериңиз. Куралдар менюсунда туура такта жана COM порту тандалганын текшериңиз.
Эксample
Кодду жүктөгөндөн жана ESP32 баштапкы абалга келтирүү баскычын басканда, 115200 берүү ылдамдыгы менен Сериялык мониторду ачыңыз. Потенциометрди буруп, маанилердин өзгөрүп жатканын көрүңүз.Сиз ала турган максималдуу маани 4095 жана минималдуу маани 0.
Орнотуу
Бул макалада сиз Arduino IDE менен ESP32 аркылуу аналогдук киргизүүлөрдү кантип окууну үйрөндүңүз. Кыскача айтканда:
- ESP32 DEVKIT V1 DOIT тактасында (30 төөнөгүчтүү версия) 15 ADC пиндери бар, сиз аналогдук киргизүүлөрдү окуу үчүн колдоно аласыз.
- Бул төөнөгүчтөрдүн 12 биттик чечими бар, демек сиз 0дөн 4095ке чейинки маанилерди ала аласыз.
- Arduino IDEде маанини окуу үчүн, сиз жөн гана analogRead() функциясын колдоносуз.
- ESP32 ADC пиндеринин сызыктуу жүрүм-туруму жок. Балким, сиз 0 жана 0.1 В же 3.2 жана 3.3 В ортосунда айырмалай албай каласыз. ADC пиндерин колдонууда муну эстен чыгарбоо керек.
Долбоор 3 ESP32 PWM(Аналогдук чыгаруу)
Бул окуу куралында биз Arduino IDE аркылуу ESP32 менен PWM сигналдарын кантип жаратууну көрсөтөбүз. Экс катарыample биз ESP32нин LED PWM контроллерин колдонуп, LEDди өчүрүүчү жөнөкөй схеманы курабыз.ESP32 LED PWM контроллери
ESP32де 16 көз карандысыз каналы бар LED PWM контроллери бар, аны ар кандай касиеттерге ээ PWM сигналдарын түзүү үчүн конфигурациялоого болот.
Arduino IDE аркылуу PWM менен LEDди өчүрүү үчүн төмөнкү кадамдарды аткарышыңыз керек:
- Биринчиден, сиз PWM каналын тандап алышыңыз керек. 16дөн 0ке чейин 15 канал бар.
- Андан кийин, сиз PWM сигнал жыштыгын орнотуу керек. LED үчүн 5000 Гц жыштыгын колдонуу жакшы.
- Сиз ошондой эле сигналдын иштөө циклинин резолюциясын коюшуңуз керек: сизде 1ден 16 битке чейин токтомдор бар. Биз 8 биттик резолюцияны колдонобуз, демек сиз LED жарыктыгын 0дөн 255ке чейинки маанини колдонуп башкара аласыз.
- Андан кийин, сигнал кайсы GPIO же GPIO үчүн көрсөтүлөрүн көрсөтүшүңүз керек. Бул үчүн сиз төмөнкү функцияны колдоносуз:
ledcAttachPin(GPIO, канал)
Бул функция эки аргументти кабыл алат. Биринчиси сигналды чыгара турган GPIO, экинчиси сигналды жаратуучу канал. - Акыр-аягы, PWM аркылуу LED жарыктыгын көзөмөлдөө үчүн, сиз төмөнкү функцияны колдоносуз:
ledcWrite(канал, милдет цикли)
Бул функция аргумент катары PWM сигналын жаратуучу каналды жана милдет циклин кабыл алат.
Бөлүктөр талап кылынат
Бул окуу куралын аткаруу үчүн сизге бул бөлүктөр керек:
- ESP32 DEVKIT V1 тактасы
- 5мм LED
- 220 Ом каршылыгы
- Breadboard
- Секирүүчү зымдар
БУУнун
Төмөнкү схемалык диаграммадагыдай LEDди ESP32ге зым менен кошуңуз. LED GPIO туташтырылышы керек 4.Эскертүү: сиз каалаган төөнөгүчтү колдоно аласыз, эгерде ал чыгаруу катары иштей алат. Чыгуу катары иштей турган бардык пиндер PWM пиндери катары колдонулушу мүмкүн. ESP32 GPIOs жөнүндө көбүрөөк маалымат алуу үчүн, окуңуз: ESP32 Pinout Шилтемеси: Кайсы GPIO пиндерин колдонушуңуз керек?
Code
Биз ESP32ди Arduino IDE аркылуу программалайбыз, андыктан улантуудан мурун ESP32 кошумчасы орнотулганын текшериңиз: (Эгер сиз бул кадамды жасаган болсоңуз, кийинки кадамга өтсөңүз болот.)
Arduino IDEде ESP32 кошумчасын орнотуу
Project_3_ESP32_PWM.ino кодун arduino IDEде ачыңызСиз LED тиркелген пинди аныктоо менен баштайсыз. Бул учурда LED GPIO 4 тиркелет.
Андан кийин, сиз PWM сигналынын касиеттерин орнотуңуз. Сиз 5000 Гц жыштыгын аныктап, сигналды түзүү үчүн 0 каналын тандап, 8 биттик резолюцияны орнотосуз. Сиз ар кандай PWM сигналдарын түзүү үчүн, булардан башка касиеттерди тандай аласыз.
Setup()да сиз аргумент катары кабыл алган ledcSetup() функциясын колдонуп, LED PWMди мурда аныктаган касиеттери менен конфигурациялашыңыз керек, ал аргумент катары, ledChannel, жыштык жана резолюцияны төмөнкүдөй кабыл алат:
Андан кийин, сиз сигналды ала турган GPIOну тандап алышыңыз керек. Ал үчүн ledcAttachPin() функциясын колдонуңуз, ал аргумент катары сигналды алгыңыз келген GPIO жана сигналды жаратуучу каналды кабыл алат. Бул эксample, биз GPIO 4ке туура келген ledPin GPIO сигналын алабыз. Сигнал жаратуучу канал ledChannel, ал 0 каналына туура келет.
Циклде сиз LED жарыктыгын жогорулатуу үчүн иштөө циклин 0 жана 255 ортосунда өзгөртө аласыз.
Анан жарыкты азайтуу үчүн 255 жана 0 ортосунда.
Светодиоддун жарыктыгын орнотуу үчүн сиз жөн гана ledcWrite() функциясын колдонушуңуз керек, ал сигналды жаратуучу каналды жана иштөө циклин аргумент катары кабыл алат.
Биз 8 биттик резолюцияны колдонуп жаткандыктан, милдет цикли 0дөн 255ке чейинки маани аркылуу башкарылат. ledcWrite() функциясында биз GPIO эмес, сигналды жаратуучу каналды колдонорубузга көңүл буруңуз.
Эксample
Кодду ESP32ге жүктөңүз. Туура такта жана COM порту тандалганын текшериңиз. Сиздин схемаңызды караңыз. Жарыктыкты көбөйтүүчү жана азайтуучу жарык диоду болушу керек.
Долбоор 4 ESP32 PIR Motion Sensor
Бул долбоор PIR кыймыл сенсорунун жардамы менен ESP32 менен кыймылды кантип аныктоону көрсөтөт. Кыймыл аныкталганда сигнал сигналын берет жана алдын ала белгиленген убакытка (мисалы, 4 секунда) эч кандай кыймыл байкалбаганда сигналды токтотот.
HC-SR501 Motion Sensor кантип иштейт
.HC-SR501 сенсорунун иштөө принциби кыймылдуу объекттеги инфракызыл нурлануунун өзгөрүшүнө негизделген. HC-SR501 сенсору тарабынан аныкталышы үчүн объект эки талапка жооп бериши керек:
- Объект инфракызыл жолду чыгарып жатат.
- Объект кыймылдап же титиреп жатат
Ошентип:
Эгерде объект инфракызыл нурларды чыгарып, бирок кыймылдабаса (мисалы, адам кыймылдабай туруп калса), ал сенсор тарабынан аныкталбайт.
Эгерде объект кыймылдап, бирок инфракызыл нурларды чыгарбаса (мисалы, робот же унаа), ал сенсор тарабынан АНЫКТАЛБАЙТ.
Таймерлерди тааныштыруу
Бул эксample биз таймерлерди да киргизебиз. Кыймыл аныкталгандан кийин LED алдын ала белгиленген секунданын ичинде күйүп турушун каалайбыз. Кодуңузду бөгөттөп, белгилүү бир секунданын ичинде башка эч нерсе кылууга мүмкүндүк бербеген delay() функциясын колдонуунун ордуна, биз таймерди колдонушубуз керек.delay() функциясы
Delay() функциясы менен тааныш болушуңуз керек, анткени ал кеңири колдонулат. Бул функцияны колдонуу абдан жөнөкөй. Ал аргумент катары бир int санын кабыл алат.
Бул сан программа коддун кийинки сабына өткөнгө чейин күтө турган убакытты миллисекунд менен билдирет.Сиз кечиктиргениңизде(1000) программаңыз ошол сапта 1 секундга токтойт.
delay() бөгөттөөчү функция. Бөгөттөө функциялары программанын ошол тапшырма аткарылмайынча башка эч нерсе кылуусуна жол бербейт. Эгер сизге бир эле учурда бир нече тапшырма керек болсо, delay() функциясын колдоно албайсыз.
Көпчүлүк долбоорлор үчүн кечиктирүүлөрдү колдонуудан алыс болуп, анын ордуна таймерлерди колдонушуңуз керек.
millis() функциясы
millis() деп аталган функцияны колдонуп, программа биринчи жолу башталгандан бери өткөн миллисекунддардын санын кайтара аласыз.Бул функция эмне үчүн пайдалуу? Анткени кандайдыр бир математиканы колдонуу менен, кодуңузду бөгөттөбөй туруп, канча убакыт өткөнүн оңой текшере аласыз.
Бөлүктөр талап кылынат
Бул окуу куралын аткаруу үчүн сизге төмөнкү бөлүктөр керек
- ESP32 DEVKIT V1 тактасы
- PIR кыймыл сенсору (HC-SR501)
- Active Buzzer
- Секирүүчү зымдар
- Breadboard
БУУнунЭскертүү: жумушчу томtagHC-SR501дин e - 5V. Аны иштетүү үчүн Vin пинди колдонуңуз.
Code
Бул окуу куралын улантуудан мурун Arduino IDEиңизге ESP32 кошумчасы орнотулган болушу керек. ESP32ди Arduino IDEге орнотуу үчүн төмөнкү окуу куралдарынын бирин аткарыңыз, эгер сиз буга чейин орното элек болсоңуз. (Эгер сиз бул кадамды жасаган болсоңуз, кийинки кадамга өтсөңүз болот.)
Arduino IDEде ESP32 кошумчасын орнотуу
Project_4_ESP32_PIR_Motion_Sensor.ino кодун arduino IDEде ачыңыз.
Демонстрация
Кодду ESP32 тактаңызга жүктөңүз. Туура такта жана COM порту тандалганын текшериңиз. Кодду жүктөө кадамдары.
Сериялык мониторду 115200 ылдамдыкта ачыңыз.Колуңузду PIR сенсорунун алдына жылдырыңыз. Сигнал күйгүзүлүшү керек жана кабар Сериялык монитордо "Кыймыл аныкталды! Сигнал сигналы" деп басылып чыгат.
4 секунддан кийин сигнал өчүшү керек.
Project 5 ESP32 Switch Web Server
Бул долбоордо сиз өз алдынча түзөсүз web Arduino IDE программалоо чөйрөсүн колдонуп чыгууларды (эки LED) башкарган ESP32 менен сервер. The web сервер мобилдик жооп берет жана жергиликтүү тармактагы браузер катары каалаган түзмөк менен кирүүгө болот. Биз сизге кантип түзүүнү көрсөтөбүз web сервер жана коддун кадам-кадам кантип иштеши.
Долбоор бүттүview
Түздөн-түз долбоорго барардан мурун, биздин эмнени белгилеп алуу маанилүү web сервер жасайт, андыктан кадамдарды кийинчерээк аткаруу оңой болот.
- The web сиз кура турган сервер ESP32 GPIO 26 жана GPIO 27ге туташтырылган эки LEDди башкарат;
- Сиз ESP32 кире аласыз web жергиликтүү тармактагы браузерде ESP32 IP дарегин терүү менен серверге;
- Сиздин баскычтарды басуу менен web серверде сиз ар бир LEDдин абалын заматта өзгөртө аласыз.
Бөлүктөр талап кылынат
Бул окуу куралы үчүн сизге төмөнкү бөлүктөр керек:
- ESP32 DEVKIT V1 тактасы
- 2х 5мм LED
- 2x 200 Ом каршылык
- Breadboard
- Секирүүчү зымдар
БУУнун
Схеманы куруу менен баштаңыз. Төмөнкү схемалык диаграммада көрсөтүлгөндөй эки LEDди ESP32ге туташтырыңыз – бир LED GPIO 26га, экинчиси GPIO 27ге туташтырылган.
Эскертүү: Биз ESP32 DEVKIT DOIT тактасын 36 пин менен колдонуп жатабыз. Схеманы монтаждоодон мурун, сиз колдонуп жаткан такта үчүн пинутту текшериңиз.Code
Бул жерде биз ESP32 түзүүчү кодду беребиз web сервер. Project_5_ESP32_Switch _ кодун ачыңызWeb_Server.ino arduino IDEде, бирок аны азырынча жүктөп бербеңиз. Ал сиз үчүн иштеши үчүн кээ бир өзгөртүүлөрдү киргизишиңиз керек.
Биз ESP32ди Arduino IDE аркылуу программалайбыз, андыктан улантуудан мурун ESP32 кошумчасы орнотулганын текшериңиз: (Эгер сиз бул кадамды жасаган болсоңуз, кийинки кадамга өтсөңүз болот.)
Arduino IDEде ESP32 кошумчасын орнотуу
Сиздин Тармак Каттоо маалыматын орнотуу
Сиз тармактын эсептик дайындары менен төмөнкү саптарды өзгөртүү керек: SSID жана сырсөз. Коддо сиз кайсы жерде өзгөртүүлөрдү киргизүү керектиги жакшы түшүндүрүлгөн.Код жүктөлүүдө
Эми, сиз кодду жана жана жүктөй аласыз web сервер дароо иштейт.
ESP32ге кодду жүктөө үчүн кийинки кадамдарды аткарыңыз:
- ESP32 тактаңызды компьютериңизге сайыңыз;
- Arduino IDEде Куралдар > Башкармасында тактаңызды тандаңыз (биздин учурда биз ESP32 DEVKIT DOIT тактасын колдонуп жатабыз);
- Куралдар > Порттон COM портун тандаңыз.
- Arduino IDEдеги Жүктөө баскычын басыңыз жана код компиляцияланып, тактаңызга жүктөлгөнгө чейин бир нече секунд күтө туруңуз.
- "Жүктөө бүттү" билдирүүсүн күтүңүз.
ESP IP дарегин табуу
Кодду жүктөгөндөн кийин Сериялык мониторду 115200 ылдамдыгы менен ачыңыз.ESP32 EN баскычын басыңыз (кайра коюу). ESP32 Wi-Fiга туташып, ESP IP дарегин Сериялык монитордо чыгарат. Ошол IP даректи көчүрүңүз, анткени сизге ESP32ге кирүү үчүн керек web сервер.
кирүү Web Server
кирүү үчүн web серверге кириңиз, браузериңизди ачыңыз, ESP32 IP дарегин чаптаңыз, ошондо сиз төмөнкү баракты көрөсүз.
Эскертүү: Браузериңиз жана ESP32 бир LANга туташкан болушу керек.Сериялык мониторду карасаңыз, фондо эмне болуп жатканын көрө аласыз. ESP жаңы кардардан HTTP сурамын алат (бул учурда сиздин браузериңиз).
Ошондой эле HTTP сурамы жөнүндө башка маалыматты көрө аласыз.
Демонстрация
Эми сиз сынап көрсөңүз болот web сервер туура иштеп жатат. LEDди башкаруу үчүн баскычтарды басыңыз.Ошол эле учурда, сиз фондо эмне болуп жатканын көрүү үчүн Сериялык мониторду карап көрсөңүз болот. Мисалы үчүнample, GPIO 26 күйгүзүү үчүн баскычты басканда, ESP32 /26/on боюнча суроо-талапты алат URL.
ESP32 бул өтүнүчтү алганда, ал GPIO 26га тиркелген LEDди күйгүзөт жана анын абалын жаңыртат. web бет.
GPIO 27 баскычы ушундай жол менен иштейт. Анын туура иштеп жатканын текшериңиз.
Кодекс кантип иштейт
Бул бөлүмдө анын кантип иштээрин көрүү үчүн кодду жакшыраак карап чыгабыз.
Биринчи нерсе - WiFi китепканасын кошуу.Жогоруда айтылгандай, кош тырмакчанын ичиндеги төмөнкү саптарга ssid жана сырсөзүңүздү киргизишиңиз керек.
Андан кийин, сиз өзүңүздү орнотуңуз web сервер 80 портуна.
Төмөнкү сап HTTP сурамынын башын сактоо үчүн өзгөрмө түзөт:
Андан кийин, сиз жыйынтыктарыңыздын учурдагы абалын сактоо үчүн көмөкчү өзгөрмөлөрдү түзөсүз. Эгер сиз көбүрөөк жыйынтыктарды кошуп, анын абалын сактап калгыңыз келсе, көбүрөөк өзгөрмөлөрдү түзүшүңүз керек.
Ошондой эле ар бир жыйынтыкка GPIO дайындашыңыз керек. Бул жерде биз GPIO 26 жана GPIO 27 колдонуп жатабыз. Сиз каалаган башка ылайыктуу GPIO колдоно аласыз.
жайгашуу()
Эми орнотууга () киришели. Биринчиден, мүчүлүштүктөрдү оңдоо максатында 115200 ылдамдыкта сериялык байланышты баштайбыз.Сиз ошондой эле GPIO'ңузду OUTPUT катары аныктап, аларды LOW деп коёсуз.
Төмөнкү саптар WiFi.begin (ssid, пароль) менен Wi-Fi туташуусун баштайт, ийгиликтүү туташууну күтүңүз жана Сериялык монитордо ESP IP дарегин басып чыгарыңыз.
loop()
Loop() ичинде биз жаңы кардар менен байланыш түзгөндө эмне болорун программалайбыз web сервер.
ESP32 ар дайым төмөнкү сап менен келген кардарларды угат:Кардардан сурам келип түшкөндө, биз келген маалыматтарды сактайбыз. Кийинки while цикли кардар туташып турганда иштей берет. Эмне кылып жатканыңызды так билбесеңиз, коддун төмөнкү бөлүгүн өзгөртүүнү сунуштабайбыз.
If жана else операторлорунун кийинки бөлүмү сиздин кайсы баскыч басылганын текшерет web баракта жана ошого жараша жыйынтыктарды көзөмөлдөйт. Мурда көргөнүбүздөй, биз ар кандай өтүнүч менен кайрылабыз URLs басылган баскычка жараша.
Мисалы үчүнample, эгер сиз GPIO 26 ON баскычын бассаңыз, ESP32 /26/ON боюнча суроо-талапты алат. URL (биз ал маалыматты Сериялык монитордогу HTTP аталышында көрө алабыз). Ошентип, баш маалымат GET /26/on туюнтмасын камтыганын текшере алабыз. Эгерде ал камтылса, биз output26state өзгөрмөсүн ON кылып өзгөртөбүз, ал эми ESP32 LEDди күйгүзөт.
Бул башка баскычтар үчүн да ушундай иштейт. Демек, эгер сиз көбүрөөк жыйынтыктарды кошкуңуз келсе, коддун бул бөлүгүн аларды кошуу үчүн өзгөртүшүңүз керек.
HTML көрсөтүү web бет
Кийинки нерсе - бул түзүү web бет. ESP32 сиздин браузериңизге HTML кодун түзүү үчүн жооп жөнөтөт web бет.
The web барак клиентке ушул экспрессивдүү client.println() аркылуу жөнөтүлөт. Аргумент катары кардарга жөнөткүңүз келген нерсени киргизишиңиз керек.
Биринчи кезекте биз HTML жөнөтүп жатканыбызды көрсөткөн төмөнкү сапты жөнөтүшүбүз керек.Андан кийин, төмөнкү сап түзөт web каалаган барак жооп берет web браузер.
Ал эми төмөндөгүлөр фавикондо суроо-талаптарды алдын алуу үчүн колдонулат. – Бул линия боюнча кабатырлануунун кереги жок.
Styling the Web Page
Андан кийин, бизде баскычтарды жана баскычтарды стилдөө үчүн бир нече CSS тексти бар web беттин көрүнүшү.
Биз Helvetica шрифтин тандап, блок катары көрсөтүлө турган мазмунду аныктап, борборго тегиздейбиз.Биз баскычтарыбызды #4CAF50 түсү, чексиз, ак түстөгү текст жана бул толтуруу менен стилдейбиз: 16px 40px. Биз ошондой эле текстти жасалгалоону эч кимге койдук, шрифттин өлчөмүн, четин жана курсорду көрсөткүчкө аныктайбыз.
Биз ошондой эле экинчи баскычтын стилин аныктайбыз, баскычтын биз мурда аныктаган бардык касиеттери менен, бирок башка түс менен. Бул өчүрүү баскычынын стили болот.
орнотуу Web Барактын биринчи аталышы
Кийинки сапта сиз өзүңүздүн биринчи аталышыңызды орното аласыз web бет. Бул жерде бизде "ESP32 Web Server", бирок бул текстти каалаганыңызга өзгөртө аласыз.Баскычтарды жана тиешелүү абалды көрсөтүү
Андан кийин, сиз GPIO 26 учурдагы абалын көрсөтүү үчүн абзац жазасыз. Көрүнүп тургандай, биз output26State өзгөрмөсүн колдонобуз, ошондуктан бул өзгөрмө өзгөргөндө абал заматта жаңыртылып турат.Андан кийин, биз GPIO учурдагы абалына жараша күйгүзүү же өчүрүү баскычын көрсөтөбүз. Эгерде GPIOнун учурдагы абалы өчүк болсо, анда биз ON баскычын көрсөтөбүз, эгерде жок болсо, биз OFF баскычын көрсөтөбүз.
Ошол эле процедураны GPIO 27 үчүн колдонобуз.
Байланышты жабуу
Акыр-аягы, жооп аяктаганда, биз баш өзгөрмөсүн тазалап, client.stop() менен кардар менен байланышты токтотобуз.
Орнотуу
Бул окуу куралында биз сизге кантип түзүүнү көрсөттүк web ESP32 менен сервер. Биз сизге жөнөкөй эксти көрсөттүкample ал эки LEDди башкарат, бирок идея ошол диоддорду реле же сиз башкаргыңыз келген башка чыгаруу менен алмаштыруу.
Долбоор 6 RGB LED Web Server
Бул долбоордо биз сизге RGB LEDди ESP32 тактасы менен кантип алыстан башкарууну көрсөтөбүз web түс тандоочу менен сервер.
Долбоор бүттүview
Баштоодон мурун, бул долбоор кандай иштээрин карап көрөлү:
- ESP32 web сервер түс тандагычты көрсөтөт.
- Сиз түстү тандаганыңызда, браузериңиз а боюнча сурам берет URL ал тандалган түстүн R, G жана B параметрлерин камтыйт.
- Сиздин ESP32 өтүнүчтү кабыл алат жана ар бир түс параметри үчүн маанини бөлөт.
- Андан кийин, ал RGB LEDди башкарган GPIOларга тиешелүү маанидеги PWM сигналын жөнөтөт.
RGB LED кантип иштейт?
Жалпы катод RGB LED-жылы үч LED тең терс байланышты бөлүшөт (катод).Кантип ар кандай түстөрдү түзүү керек?
RGB LED менен, албетте, кызыл, жашыл жана көк жарыкты чыгара аласыз жана ар бир LEDдин интенсивдүүлүгүн конфигурациялоо менен башка түстөрдү да чыгара аласыз.
Мисалы үчүнample, таза көк жарыкты өндүрүү үчүн сиз көк LEDди эң жогорку интенсивдүүлүккө, ал эми жашыл жана кызыл диоддорду эң төмөнкү интенсивдүүлүккө коюңуз. Ак жарык үчүн сиз үч LEDди тең эң жогорку интенсивдүүлүккө орнотмоксуз.
Түстөрдү аралаштыруу
Башка түстөрдү өндүрүү үчүн үч түстү ар кандай интенсивдүүлүктө айкалыштыра аласыз. Ар бир LED интенсивдүүлүгүн тууралоо үчүн PWM сигналын колдонсоңуз болот.
Светодиоддор бири-бирине абдан жакын болгондуктан, биздин көзүбүз үч түстү өзүнчө эмес, түстөрдүн айкалышынын натыйжасын көрөт.
Түстөрдү кантип айкалыштыруу боюнча түшүнүккө ээ болуу үчүн, төмөнкү диаграмманы караңыз.
Бул эң жөнөкөй түстөрдү аралаштыруу диаграммасы, бирок ал кандайча иштейт жана ар кандай түстөрдү кантип чыгаруу керектиги жөнүндө түшүнүк берет.Бөлүктөр талап кылынат
Бул долбоор үчүн сизге төмөнкү бөлүктөр керек:
- ESP32 DEVKIT V1 тактасы
- RGB LED
- 3x 220 Ом резисторлор
- Секирүүчү зымдар
- Breadboard
БУУнунCode
Биз ESP32ди Arduino IDE аркылуу программалайбыз, андыктан улантуудан мурун ESP32 кошумчасы орнотулганын текшериңиз: (Эгер сиз бул кадамды жасаган болсоңуз, кийинки кадамга өтсөңүз болот.)
- Arduino IDEде ESP32 кошумчасын орнотуу
Схеманы чогулткандан кийин, кодду ачыңыз
Project_6_RGB_LED_Web_Server.ino arduino IDEде.
Кодду жүктөөдөн мурун, ESP сиздин жергиликтүү тармагыңызга туташа алышы үчүн тармактык эсептик дайындарыңызды киргизүүнү унутпаңыз.Код кантип иштейт
ESP32 эскизи WiFi.h китепканасын колдонот.Төмөнкү саптар суроонун R, G жана B параметрлерин кармоо үчүн сап өзгөрмөлөрүн аныктайт.
Кийинки төрт өзгөрмө HTTP сурамын кийинчерээк чечмелөө үчүн колдонулат.
R, G жана B тилкелерин башкара турган GPIO үчүн үч өзгөрмө түзүңүз. Бул учурда биз GPIO 13, GPIO 12 жана GPIO 14 колдонуп жатабыз.
Бул GPIOs PWM сигналдарын чыгарышы керек, андыктан алгач PWM касиеттерин конфигурациялашыбыз керек. PWM сигналынын жыштыгын 5000 Гцге коюңуз. Андан кийин, ар бир түс үчүн PWM каналын бириктириңиз
Акыр-аягы, PWM каналдарынын резолюциясын 8-битке орнотуңуз
Орнотууда() PWM касиеттерин PWM каналдарына дайындаңыз
PWM каналдарын тиешелүү GPIOларга тиркөө
Төмөнкү код бөлүмү сиздин түс тандагычты көрсөтөт web бетти ачып, сиз тандаган түскө жараша сурам жасайт.
Түстү тандап алганыңызда, сиз төмөнкү форматтагы сурамды аласыз.
Ошентип, R, G жана B параметрлерин алуу үчүн бул сапты бөлүшүбүз керек. Параметрлер redString, greenString жана blueString өзгөрмөлөрүндө сакталат жана 0 жана 255 ортосундагы маанилерге ээ болушу мүмкүн.ESP32 менен тилкени башкаруу үчүн ledcWrite() функциясын колдонуп, HTTPден декоддолгон маанилер менен PWM сигналдарын түзүңүз. өтүнүч.
Эскертүү: ESP32 менен PWM жөнүндө көбүрөөк билүү: Долбоор 3 ESP32 PWM (Аналогдук чыгаруу)
ESP8266 менен тилкени башкаруу үчүн, биз жөн гана колдонушубуз керек
analogWrite() функциясы HTPP сурамынан декоддолгон маанилер менен PWM сигналдарын түзүү.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Биз сап өзгөрмөсүндө маанилерди алгандыктан, аларды toInt() ыкмасын колдонуп бүтүн сандарга айландырышыбыз керек.
Демонстрация
Тармактын эсептик дайындарын киргизгенден кийин, туура тактаны жана COM портун тандап, кодду ESP32.Upload кодунун шилтеме кадамдарына жүктөңүз.
Жүктөп бергенден кийин Сериялык мониторду 115200 ылдамдыкта ачыңыз жана ESP иштетүү/кайра коюу баскычын басыңыз. Сиз тактанын IP дарегин алышыңыз керек.Браузериңизди ачып, ESP IP дарегин киргизиңиз. Эми, RGB LED үчүн түс тандоо үчүн түс тандагычты колдонуңуз.
Андан кийин, түс күчүнө кириши үчүн "Түстү өзгөртүү" баскычын басышыңыз керек.RGB LEDди өчүрүү үчүн кара түстү тандаңыз.
Эң күчтүү түстөр (түс тандагычтын жогору жагында) жакшы натыйжаларды бере турган түстөр.
Долбоор 7 ESP32 реле Web Server
ESP32 менен релени колдонуу AC тиричилик шаймандарын алыстан башкаруунун эң сонун жолу. Бул окуу куралы ESP32 менен релелик модулду кантип башкарууну түшүндүрөт.
Биз релелик модулдун кантип иштээрин, релени ESP32ге кантип туташтыруу керектигин жана web реледи алыстан башкаруу үчүн сервер.
Эстафеталар менен тааныштыруу
Реле - бул электрдик өчүргүч жана башка которгучтар сыяктуу эле, аны күйгүзүп же өчүрүп, ток өтүп же өтпөсө болот. Аны аз көлөмдө башкарууга болотtages, ESP3.3 GPIOs тарабынан берилген 32V сыяктуу жана бизге жогорку көлөмдү башкарууга мүмкүндүк беретtages сыяктуу 12V, 24V же электр кубатыtage (Европада 230 В жана АКШда 120 В).Сол тарабында, жогорку вол туташтыруу үчүн үч розеткалардын эки топтому барtages, жана оң жагындагы төөнөгүчтөр (төмөн томtagд) ESP32 GPIO'ларына туташуу.
Mains Voltage ConnectionsМурунку сүрөттө көрсөтүлгөн реле модулунун эки туташтыргычы бар, ар биринде үч розетка бар: жалпы (COM), Кадимки жабык (NC) жана Кадимки ачык (NO).
- COM: сиз көзөмөлдөгүңүз келген токту туташтырыңыз (энергtagжана).
- NC (Нормалдуу жабык): адатта жабык конфигурация реле демейки боюнча жабык болушун каалаганда колдонулат. NC COM төөнөгүчтөрү туташтырылган, демек сиз ESP32ден реле модулуна схеманы ачып, токтун агымын токтотуу үчүн сигнал жөнөтпөсөңүз, ток агып жатат.
- ЖОК (Нормалдуу Ачык): адатта ачык конфигурация тескери иштейт: NO жана COM пиндеринин ортосунда эч кандай байланыш жок, ошондуктан ESP32ден схеманы жабуу үчүн сигнал жөнөтмөйүнчө, схема үзүлгөн.
Control PinsТөмөн-томtage тарабында төрт төөнөгүч жана үч төөнөгүч топтому бар. Биринчи топтом модулду иштетүү үчүн VCC жана GND, ал эми төмөнкү жана үстүнкү релелерди башкаруу үчүн киргизүү 1 (IN1) жана киргизүү 2 (IN2) турат.
Эгер релелик модулуңузда бир гана канал болсо, сизде бир гана IN пин болот. Эгер сизде төрт канал болсо, сизде төрт IN пин жана башкалар болот.
Сиз IN пиндерине жөнөткөн сигнал реле активдүү же активдүү эмес экенин аныктайт. Киргизүү болжол менен 2V төмөн болгондо реле ишке кирет. Бул сизде төмөнкү сценарийлер болот дегенди билдирет:
- Адатта жабык конфигурация (NC):
- ЖОГОРКУ сигнал – ток өтүп жатат
- LOW сигналы - ток агып келбейт
- Адатта ачык конфигурация (NO):
- ЖОГОРКУ сигнал - ток агып келбейт
- LOW сигнал - агып жаткан ток
Ток көп учурда агып турганда, сиз кадимки жабык конфигурацияны колдонушуңуз керек жана сиз аны кээде гана токтоткуңуз келет.
Токтун маал-маалы менен агып турушун кааласаңыз, кадимки ачык конфигурацияны колдонуңуз (мисалыample, күйгүзүү alamp анда-санда).
Электр булагы тандооЭкинчи төөнөгүч топтому GND, VCC жана JD-VCC төөнөгүчтөрүнөн турат.
JD-VCC пин реленин электромагнитин иштетет. Модулда VCC жана JD-VCC төөнөгүчтөрүн бириктирген секирүү капкагы бар экенине көңүл буруңуз; бул жерде көрсөтүлгөн сары, бирок сиздики башка түстө болушу мүмкүн.
Секирүүчү капкак менен VCC жана JD-VCC төөнөгүчтөрү туташтырылган. Бул релелик электромагнит ESP32 кубат төөнөгүчүнөн түздөн-түз кубатталганын билдирет, ошондуктан реле модулу жана ESP32 схемалары бири-биринен физикалык жактан обочолонгон эмес.
Секирүү капкагы жок болсо, JD-VCC пин аркылуу реленин электромагнитин кубаттоо үчүн көз карандысыз кубат булагы менен камсыз кылуу керек. Бул конфигурация модулдун орнотулган оптокоуплери менен релелерди ESP32ден физикалык жактан обочолонтот, ал электр жарыгы болгон учурда ESP32нин бузулушун алдын алат.
БУУнунЭскертүү: Жогорку томду колдонууtagэлектр булагы олуттуу жаракат алып келиши мүмкүн.
Ошондуктан, 5 мм LEDs ордуна жогорку камсыз кылуу Voltagэкспериментте электрондук лампалар. Эгер сиз негизги том менен тааныш эмес болсоңузtagсага жардам бере турган бирөөдөн сура. ESPди программалоодо же чынжырыңызды зымдарды туташтырууда баары электр тармагынан ажыратылганын текшериңизtage.ESP32 үчүн китепкананы орнотуу
Муну куруу үчүн web сервер, биз ESPAsync колдонобузWebСервер китепканасы жана AsyncTCP китепканасы.
ESPAsync орнотууWebСервер китепканасы
орнотуу үчүн кийинки кадамдарды аткарыңыз ESPAsyncWebServer китепкана:
- ESPAsync жүктөп алуу үчүн бул жерди басыңызWebСервер китепканасы. Сиз болушу керек
Жүктөлүп алынгандар папкаңыздагы .zip папка - .zip папканы ачып, сиз ESPAsync алышыңыз керекWebСервер-мастер папка
- ESPAsync'тен папкаңыздын атын өзгөртүңүзWebESPAsync үчүн сервер-мастерWebServer
- ESPAsyncти жылдырыңызWebArduino IDE орнотуу китепканалары папкаңызга сервер папкасы
Же болбосо, Arduino IDE'иңизде Эскиз > Камтууга өтсөңүз болот
Китепкана > .ZIP китепканасын кошуңуз… жана жаңы эле жүктөп алган китепканаңызды тандаңыз.
ESP32 үчүн AsyncTCP китепканасын орнотуу
The ESPAsyncWebServer китепкана талап кылат AsyncTCP иштөө үчүн китепкана. ээрчүү
бул китепкананы орнотуу үчүн кийинки кадамдар:
- AsyncTCP китепканасын жүктөп алуу үчүн бул жерди басыңыз. Жүктөлүп алынгандар папкаңызда .zip папкаңыз болушу керек
- .zip папканы ачып, сиз AsyncTCP-мастер папканы алышыңыз керек
1. Папкаңыздын атын AsyncTCP-мастерден AsyncTCPге өзгөртүңүз
3. AsyncTCP папкасын Arduino IDE орнотуу китепканалары папкаңызга жылдырыңыз
4. Акырында, Arduino IDEиңизди кайра ачыңыз
Же болбосо, Arduino IDE'иңизде Эскиз > Камтууга өтсөңүз болот
Китепкана > .ZIP китепканасын кошуңуз… жана жаңы эле жүктөп алган китепканаңызды тандаңыз.
Code
Биз ESP32ди Arduino IDE аркылуу программалайбыз, андыктан улантуудан мурун ESP32 кошумчасы орнотулганын текшериңиз: (Эгер сиз бул кадамды жасаган болсоңуз, кийинки кадамга өтсөңүз болот.)
Arduino IDEде ESP32 кошумчасын орнотуу
Керектүү китепканаларды орноткондон кийин Project_7_ESP32_Relay_ кодун ачыңызWeb_Server.ino arduino IDEде.
Кодду жүктөөдөн мурун, ESP сиздин жергиликтүү тармагыңызга туташа алышы үчүн тармактык эсептик дайындарыңызды киргизүүнү унутпаңыз.Демонстрация
Керектүү өзгөртүүлөрдү киргизгенден кийин, кодду ESP32.Upload кодунун шилтеме кадамдарына жүктөңүз.
Сериялык мониторду 115200 берүү ылдамдыгы менен ачып, анын IP дарегин алуу үчүн ESP32 EN баскычын басыңыз. Андан соң жергиликтүү тармагыңыздагы браузерди ачып, ESP32 IP дарегин териңиз. web сервер.
Сериялык мониторду 115200 берүү ылдамдыгы менен ачып, анын IP дарегин алуу үчүн ESP32 EN баскычын басыңыз. Андан соң жергиликтүү тармагыңыздагы браузерди ачып, ESP32 IP дарегин териңиз. web сервер.Эскертүү: Браузериңиз жана ESP32 бир LANга туташкан болушу керек.
Сиз кодуңузда аныктаган релелердин саны сыяктуу эки баскыч менен төмөнкүдөй нерсени алышыңыз керек.Эми сиз смартфонуңуз аркылуу релелерди башкаруу үчүн баскычтарды колдоно аласыз.
Долбоор_8_Чыгуу_Абал_Синхрондоштуруу_ Web_Сервер
Бул Долбоор ESP32 же ESP8266 натыйжаларын кантип башкарууну көрсөтөт web сервер жана физикалык баскыч бир эле учурда. Чыгуу абалы жаңыртылды web бет физикалык баскыч аркылуу өзгөртүлгөнбү же web сервер.
Долбоор бүттүview
Келгиле, долбоордун кандай иштээрин тез карап көрөлү.ESP32 же ESP8266 хосттору а web чыгаруунун абалын көзөмөлдөөгө мүмкүндүк берген сервер;
- Учурдагы чыгаруу абалы экранда көрсөтүлөт web сервер;
- ESP ошондой эле ошол эле чыгарууну башкарган физикалык баскычка туташтырылган;
- Эгер сиз физикалык баскычты колдонуу менен чыгаруу абалын өзгөртсөңүз, анын учурдагы абалы да жаңыртылат web сервер.
Жыйынтыктап айтканда, бул долбоор бир эле чыгарууну а аркылуу башкарууга мүмкүндүк берет web сервер жана баскыч баскычы бир эле учурда. чыгаруу абалы өзгөргөн сайын, web сервер жаңыртылды.
Бөлүктөр талап кылынат
Бул жерде схеманы куруу үчүн керек болгон бөлүктөрүнүн тизмеси:
- ESP32 DEVKIT V1 тактасы
- 5 мм LED
- 220Ом каршылык
- Pushbutton
- 10k Ohm каршылык
- Breadboard
- Секирүүчү зымдар
БУУнунESP32 үчүн китепкананы орнотуу
Муну куруу үчүн web сервер, биз ESPAsync колдонобузWebСервер китепканасы жана AsyncTCP китепканасы.(Эгер сиз бул кадамды жасаган болсоңуз, кийинки кадамга өтсөңүз болот.)
ESPAsync орнотууWebСервер китепканасы
ESPAsync орнотуу үчүн кийинки кадамдарды аткарыңызWebСервер китепканасы:
- ESPAsync жүктөп алуу үчүн бул жерди басыңызWebСервер китепканасы. Сиз болушу керек
Жүктөлүп алынгандар папкаңыздагы .zip папка - .zip папканы ачып, сиз ESPAsync алышыңыз керекWebСервер-мастер папка
- ESPAsync'тен папкаңыздын атын өзгөртүңүзWebESPAsync үчүн сервер-мастерWebServer
- ESPAsyncти жылдырыңызWebArduino IDE орнотуу китепканалары папкаңызга сервер папкасы
Же болбосо, Arduino IDE'иңизде Эскиз > Камтууга өтсөңүз болот
Китепкана > .ZIP китепканасын кошуңуз… жана жаңы эле жүктөп алган китепканаңызды тандаңыз.
ESP32 үчүн AsyncTCP китепканасын орнотуу
ESPAsyncWebСервер китепканасы иштеши үчүн AsyncTCP китепканасын талап кылат. Бул китепкананы орнотуу үчүн кийинки кадамдарды аткарыңыз:
- AsyncTCP китепканасын жүктөп алуу үчүн бул жерди басыңыз. Жүктөлүп алынгандар папкаңызда .zip папкаңыз болушу керек
- .zip папканы ачып, сиз AsyncTCP-мастер папканы алышыңыз керек
- Папкаңыздын атын AsyncTCP-мастерден AsyncTCPге өзгөртүңүз
- AsyncTCP папкасын Arduino IDE орнотуу китепканалары папкаңызга жылдырыңыз
- Акырында, Arduino IDEиңизди кайра ачыңыз
Же болбосо, Arduino IDE'иңизде Эскиз > Камтууга өтсөңүз болот
Китепкана > .ZIP китепканасын кошуңуз… жана жаңы эле жүктөп алган китепканаңызды тандаңыз.
Code
Биз ESP32ди Arduino IDE аркылуу программалайбыз, андыктан улантуудан мурун ESP32 кошумчасы орнотулганын текшериңиз: (Эгер сиз бул кадамды жасаган болсоңуз, кийинки кадамга өтсөңүз болот.)
Arduino IDEде ESP32 кошумчасын орнотуу
Керектүү китепканаларды орноткондон кийин, кодду ачыңыз
Долбоор_8_Чыгуу_Абал_Синхрондоштуруу_Web_Server.ino arduino IDEде.
Кодду жүктөөдөн мурун, ESP сиздин жергиликтүү тармагыңызга туташа алышы үчүн тармактык эсептик дайындарыңызды киргизүүнү унутпаңыз.
Кодекс кантип иштейт
Баскычтын абалы жана чыгаруу абалы
ledState өзгөрмө LED чыгаруу абалын кармап турат. Демейки үчүн, качан web сервер башталат, ал ТӨМЕН.
ButtonState жана lastButtonState баскыч басылган же басылбаганын аныктоо үчүн колдонулат.баскыч (web сервер)
Биз index_html өзгөрмөсүндө баскычты түзүү үчүн HTMLди кошкон жокпуз.
Себеби биз аны учурдагы LED абалына жараша өзгөртө алгыбыз келет, аны баскыч менен да өзгөртүүгө болот.
Ошентип, биз %BUTTONPLACEHOLDER% баскычы үчүн толтургуч түздүк, ал кийинчерээк коддо баскычты түзүү үчүн HTML текстине алмаштырылат (бул процессор() функциясында жасалат).процессор()
processor() функциясы HTML текстиндеги бардык толтургучтарды чыныгы маанилер менен алмаштырат. Биринчиден, ал HTML тексттери бар-жокпу текшерет
толтургучтар %BUTTONPLACEHOLDER%.Андан кийин, учурдагы чыгаруу абалын кайтарган theoutputState() функциясын чакырыңыз. Биз аны outputStateValue өзгөрмөсүндө сактайбыз.
Андан кийин, туура абалдагы баскычты көрсөтүү үчүн HTML текстин түзүү үчүн ошол маанини колдонуңуз:
HTTP GET Чыгуу абалын өзгөртүү өтүнүчү (JavaScript)
Баскычты басканда, thetoggleCheckbox() функциясы чакырылат. Бул функция ар кандай суроону берет URLс диодду күйгүзүү же өчүрүү үчүн.Светодиодду күйгүзүү үчүн, ал /update?state=1 боюнча суроо-талап кылат URL:
Болбосо, ал /update?state=0 боюнча суроо салат URL.
HTTP GET абалын жаңыртуу өтүнүчү (JavaScript)
Чыгуу абалын жаңыртып туруу үчүн web серверде, биз / абалына жаңы суроо-талапты жасаган төмөнкү функцияны чакырабыз URL секунд сайын.Сурамдарды иштетүү
Андан кийин, ESP32 же ESP8266 алар боюнча суроо-талаптарды алганда эмне болорун чечишибиз керек. URLs.
Талап тамырга түшкөндө /URL, биз HTML баракчасын, ошондой эле процессорду жөнөтөбүз.Төмөнкү саптар /update?state=1 же /update?state=0 боюнча сурам алганыңызды текшерет. URL жана ledStateди ошого жараша өзгөртөт.
/штат боюнча суроо-талап түшкөндө URL, биз учурдагы чыгаруу абалын жөнөтөбүз:
loop()
Циклде() биз баскычты жокко чыгарабыз жана LED абалынын маанисине жараша LEDди күйгүзүп же өчүрөбүз өзгөрмө.Демонстрация
Кодду ESP32 тактаңызга жүктөңүз. Коддун шилтеме кадамдарын жүктөө.
Андан соң Сериялык мониторду 115200 ылдамдыкта ачыңыз. IP дарегин алуу үчүн борттогу EN/RST баскычын басыңыз.Жергиликтүү тармагыңызда браузерди ачып, ESP IP дарегин териңиз. Сизге кирүү мүмкүнчүлүгү болушу керек web сервер төмөндө көрсөтүлгөндөй.
Эскертүү: Браузериңиз жана ESP32 бир LANга туташкан болушу керек.Сиз баскычты которуштурууга болот web LEDди күйгүзүү үчүн сервер.
Сиз ошондой эле физикалык баскыч менен ошол эле LEDди башкара аласыз. Анын абалы ар дайым автоматтык түрдө жаңыртылып турат web сервер.
Долбоор 9 ESP32 DHT11 Web Server
Бул долбоордо сиз асинхрондук ESP32 түзүүнү үйрөнөсүз web Arduino IDE аркылуу температураны жана нымдуулукту көрсөткөн DHT11 сервери.
Пререквизиттер
The web серверди биз жаңыртуунун зарылдыгы жок окууларды автоматтык түрдө жаңыртабыз web бет.
Бул долбоор менен сиз үйрөнөсүз:
- DHT сенсорлорунан температураны жана нымдуулукту кантип окуса болот;
- Асинхрондук түзүңүз web колдонуучу сервер ESPAsyncWebСервер китепканасы;
- Сенсордун көрсөткүчтөрүн жаңыртуунун кереги жок автоматтык түрдө жаңыртыңыз web бет.
Асинхрондуу Web Server
куруу үчүн web серверди биз колдонобуз ESPAsyncWebСервер китепканасы бул асинхрондук куруунун жеңил жолун камсыз кылат web сервер. Асинхронду куруу web сервер бир нече артыкчылыктарга ээtagкитепкана GitHub бетинде айтылгандай, мисалы:
- "Бир эле учурда бир нече байланышты иштетүү";
- "Сиз жооп жөнөткөнүңүздө, сервер жоопту фондо жөнөтүүгө кам көрүп жатканда, сиз дароо башка байланыштарды иштетүүгө даяр болосуз";
- "Шаблондорду иштетүү үчүн жөнөкөй калыптарды иштетүү кыймылдаткычы";
Бөлүктөр талап кылынат
Бул окуу куралын аяктоо үчүн сизге төмөнкү бөлүктөр керек:
- ESP32 өнүктүрүү тактасы
- DHT11 модулу
- Breadboard
- Секирүүчү зымдар
БУУнунКитепканаларды орнотуу
Бул долбоор үчүн сиз бир нече китепкананы орнотушуңуз керек:
- The DHT жана Adafruit бирдиктүү сенсор DHT сенсорунан окуу үчүн драйвер китепканалары.
- ESPAsyncWebServer жана Async TCP асинхрондуктарды куруу үчүн китепканалар web сервер.
Бул китепканаларды орнотуу үчүн кийинки нускамаларды аткарыңыз:
DHT сенсор китепканасын орнотуу
Arduino IDE аркылуу DHT сенсорунан окуу үчүн, орнотуу керек DHT сенсор китепканасы. Китепкананы орнотуу үчүн кийинки кадамдарды аткарыңыз.
- DHT Sensor китепканасын жүктөп алуу үчүн бул жерди басыңыз. Жүктөлүп алынгандар папкаңызда .zip папкаңыз болушу керек
- .zip папканы ачып, сиз DHT-сенсор-китепкана-мастер папканы алышыңыз керек
- Папкаңыздын атын DHT-sensor-librani-master дегенден DHT_sensor кылып өзгөртүңүз
- DHT_sensor папкасын Arduino IDE орнотуу китепканалары папкаңызга жылдырыңыз
- Акырында, Arduino IDEиңизди кайра ачыңыз
Adafruit Unified Sensor Driver орнотуу
Сиз ошондой эле орнотуу керек Adafruit Unified Sensor Driver китепканасы DHT сенсор менен иштөө үчүн. Китепкананы орнотуу үчүн кийинки кадамдарды аткарыңыз.
- Adafruit Unified Sensor китепканасын жүктөп алуу үчүн бул жерди басыңыз. Жүктөлүп алынгандар папкаңызда .zip папкаңыз болушу керек
- .zip папканы ачып, сиз Adafruit_sensor-мастер папканы алышыңыз керек
- Папкаңыздын атын Adafruit_sensor-masterден Adafruit_sensor кылып өзгөртүңүз
- Adafruit_sensor папкасын Arduino IDE орнотуу китепканалары папкаңызга жылдырыңыз
- Акырында, Arduino IDEиңизди кайра ачыңыз
ESPAsync орнотууWebСервер китепканасы
орнотуу үчүн кийинки кадамдарды аткарыңыз ESPAsyncWebServer китепкана:
- ESPAsync жүктөп алуу үчүн бул жерди басыңызWebСервер китепканасы. Сиз болушу керек
Жүктөлүп алынгандар папкаңыздагы .zip папка - .zip папканы ачыңыз жана сиз керек
ESPAsync алууWebСервер-мастер папка - ESPAsync'тен папкаңыздын атын өзгөртүңүзWebESPAsync үчүн сервер-мастерWebServer
- ESPAsyncти жылдырыңызWebArduino IDE орнотуу китепканалары папкаңызга сервер папкасы
ESP32 үчүн Async TCP китепканасын орнотуу
The ESPAsyncWebServer китепкана талап кылат AsyncTCP иштөө үчүн китепкана. Бул китепкананы орнотуу үчүн кийинки кадамдарды аткарыңыз:
- AsyncTCP китепканасын жүктөп алуу үчүн бул жерди басыңыз. Жүктөлүп алынгандар папкаңызда .zip папкаңыз болушу керек
- .zip папканы ачып, сиз AsyncTCP-мастер папканы алышыңыз керек
- Папкаңыздын атын AsyncTCP-мастерден AsyncTCPге өзгөртүңүз
- AsyncTCP папкасын Arduino IDE орнотуу китепканалары папкаңызга жылдырыңыз
- Акырында, Arduino IDEиңизди кайра ачыңыз
Code
Биз ESP32ди Arduino IDE аркылуу программалайбыз, андыктан улантуудан мурун ESP32 кошумчасы орнотулганын текшериңиз: (Эгер сиз бул кадамды жасаган болсоңуз, кийинки кадамга өтсөңүз болот.)
Arduino IDEде ESP32 кошумчасын орнотуу
Керектүү китепканаларды орноткондон кийин, кодду ачыңыз
Project_9_ESP32_DHT11_Web_Server.ino arduino IDEде.
Кодду жүктөөдөн мурун, ESP сиздин жергиликтүү тармагыңызга туташа алышы үчүн тармактык эсептик дайындарыңызды киргизүүнү унутпаңыз.Кодекс кантип иштейт
Кийинки абзацтарда биз коддун кантип иштээрин түшүндүрөбүз. Көбүрөөк билгиңиз келсе окууну улантыңыз же акыркы жыйынтыкты көрүү үчүн Демонстрация бөлүмүнө өтүңүз.
Китепканаларды импорттоо
Биринчиден, керектүү китепканаларды импорттоо. WiFi, ESPAsyncWebкуруу үчүн сервер жана ESPAsyncTCP керек web сервер. Adafruit_Sensor жана DHT китепканалары DHT11 же DHT22 сенсорлорунан окуу үчүн керек.Өзгөрмөлөрдүн аныктамасы
DHT маалымат пин туташкан GPIOну аныктаңыз. Бул учурда, ал GPIO 4 менен туташкан.Андан кийин, сиз колдонуп жаткан DHT сенсор түрүн тандаңыз. Биздин мурункуample, биз DHT22 колдонуп жатабыз. Эгер сиз башка түрүн колдонуп жатсаңыз, сенсоруңуздун комментарийин алып салып, калгандарына комментарий беришиңиз керек.
DHT объектисин биз мурда аныктаган түрү жана пин менен ишке киргизиңиз.Async түзүүWeb80 портундагы сервер объекти.
Температура жана нымдуулук функцияларын окуңуз
Икки функцияны курдук: бириистээх миэстэни ылан, икки функцияны курдук: бириистээх миэстэҕэ (readDHTTemperature()) иккис функциялаах (readDHTHumidity()).Сенсордун көрсөткүчтөрүн алуу, сенсордун көрсөткүчтөрүн алуу dht объектисинде readTemperature() жана readHumidity() ыкмаларын колдонуу сыяктуу жөнөкөй.
Ошондой эле сенсор көрсөткүчтөрдү ала албаса, эки сызыкчаны (-) кайтара турган шартыбыз бар.
Окуулар сап түрү катары кайтарылат. Флотту сапка айландыруу үчүн String() функциясын колдонуңуз
Демейки боюнча, биз температураны Цельсий градусунда окуп жатабыз. Температураны Фаренгейт градусунда алуу үчүн, температураны Цельсий боюнча комментарийлеңиз жана Фаренгейттеги температураны комментарийден чыгарыңыз, ошондо сизде төмөнкүлөр болот:
Кодду жүктөө
Эми, кодду ESP32ге жүктөңүз. Туура такта жана COM порту тандалганын текшериңиз. Кодду жүктөө кадамдары.
Жүктөп бергенден кийин Сериялык мониторду 115200 берүү ылдамдыгы менен ачыңыз. ESP32 баштапкы абалга келтирүү баскычын басыңыз. ESP32 IP дареги сериялык түрдө басылышы керек монитор.Демонстрация
Браузерди ачып, ESP32 IP дарегин териңиз. Сиздин web сервер акыркы сенсор окууларын көрсөтүшү керек.
Эскертүү: Браузериңиз жана ESP32 бир LANга туташкан болушу керек.
Температуранын жана нымдуулуктун көрсөткүчтөрү жаңыртуунун зарылдыгы жок автоматтык түрдө жаңыртылганына көңүл буруңуз web бет.
Project_10_ESP32_OLED_Display
Бул долбоор Arduino IDE аркылуу ESP0.96 менен 1306 дюймдук SSD32 OLED дисплейди кантип колдонууну көрсөтөт.
0.96 дюймдук OLED дисплейди киргизүү
The OLED дисплей Бул окуу куралында биз колдоно турган SSD1306 модели: төмөнкү сүрөттө көрсөтүлгөндөй, 0.96×128 пикселдүү моноколор, 64 дюймдук дисплей.OLED дисплейи арткы жарыкты талап кылбайт, бул караңгы чөйрөдө абдан жакшы контрастка алып келет. Кошумчалай кетсек, анын пикселдери күйүп турганда гана энергияны сарптайт, ошондуктан OLED дисплей башка дисплейлерге салыштырмалуу азыраак энергия керектейт.
OLED дисплейи I2C байланыш протоколун колдонгондуктан, зымдарды туташтыруу абдан жөнөкөй. Шилтеме катары төмөнкү таблицаны колдоно аласыз.
OLED Pin | ESP32 |
Vin | 3.3V |
GND | GND |
SCL | GPIO 22 |
SDA | GPIO 21 |
БУУнунSSD1306 OLED китепканасын орнотуу – ESP32
ESP32 менен OLED дисплейин башкаруу үчүн бир нече китепкана бар.
Бул окуу куралында биз эки Adafruit китепканасын колдонобуз: Adafruit_SSD1306 китепканасы жана Adafruit_GFX китепканасы.
Ошол китепканаларды орнотуу үчүн кийинки кадамдарды аткарыңыз.
- Arduino IDEиңизди ачып, Эскиз > Китепкананы кошуу > Китепканаларды башкаруу бөлүмүнө өтүңүз. Китепкана менеджери ачылышы керек.
- Издөө кутусуна "SSD1306" териңиз жана Adafruitтен SSD1306 китепканасын орнотуңуз.
- Adafruitтен SSD1306 китепканасын орноткондон кийин, издөө кутучасына "GFX" терип, китепкананы орнотуңуз.
- Китепканаларды орноткондон кийин, Arduino IDEиңизди өчүрүп күйгүзүңүз.
Code
Керектүү китепканаларды орноткондон кийин, Project_10_ESP32_OLED_Display.ino arduino IDEде ачыңыз. код
Биз ESP32ди Arduino IDE аркылуу программалайбыз, андыктан улантуудан мурун ESP32 кошумчасы орнотулганын текшериңиз: (Эгер сиз бул кадамды жасаган болсоңуз, кийинки кадамга өтсөңүз болот.)
Arduino IDEде ESP32 кошумчасын орнотууКодекс кантип иштейт
Китепканаларды импорттоо
Биринчиден, керектүү китепканаларды импорттоо керек. I2C колдонуу үчүн Wire китепканасы жана дисплейге жазуу үчүн Adafruit китепканалары: Adafruit_GFX жана Adafruit_SSD1306.OLED дисплейин баштаңыз
Андан кийин, сиз OLED туурасын жана бийиктигин аныктайсыз. Бул эксample, биз 128×64 OLED дисплейди колдонуп жатабыз. Эгер башка өлчөмдөрдү колдонуп жатсаңыз, аны SCREEN_WIDTH жана SCREEN_HEIGHT өзгөрмөлөрүндө өзгөртө аласыз.Андан кийин, I2C байланыш протоколу (&Wire) менен мурда аныкталган туурасы жана бийиктиги менен дисплей объектисин инициализациялаңыз.
(-1) параметр OLED дисплейиңизде RESET пини жок экенин билдирет. Эгерде сиздин OLED дисплейиңизде RESET пини бар болсо, анда ал GPIO менен туташтырылган болушу керек. Бул учурда, сиз параметр катары GPIO номерин өткөрүшүңүз керек.
Орнотууда()да мүчүлүштүктөрдү оңдоо максатында Сериялык мониторду 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): текстти ылдыйкы сол бурчтан жогорку оң бурчка жылдыруу
Кодду жүктөө
Эми, кодду ESP32.Upload кодунун шилтеме кадамдарына жүктөңүз.
Код жүктөлгөндөн кийин, OLED сыдырма текстти көрсөтөт.
Документтер / Ресурстар
![]() |
LAFVIN ESP32 негизги башталгыч комплект [pdf] Instruction Manual ESP32 Basic Starter Kit, ESP32, Basic Starter Kit, Starter Kit |