ESP32 Basic Starter
Жинақ
Тоғанақ парағы
ESP32 Кіріспе
ESP32 жаңадан келдіңіз бе? Осы жерден бастаңыз! ESP32 - Wi-Fi және Bluetooth сымсыз мүмкіндіктері мен екі ядролы процессорды қамтитын Espressif әзірлеген Chip (SoC) микроконтроллерлеріндегі төмен және төмен қуатты жүйе. Егер сіз ESP8266-мен таныс болсаңыз, ESP32 көптеген жаңа мүмкіндіктермен жүктелген оның мұрагері болып табылады.ESP32 Техникалық сипаттамалары
Егер сіз біршама техникалық және нақтырақ алғыңыз келсе, ESP32 (көзі: http://esp32.net/) - толығырақ, деректер парағын тексеріңіз):
- Сымсыз қосылым WiFi: HT150.0 көмегімен 40 Мбит/с деректер жылдамдығы
- Bluetooth: BLE (Bluetooth төмен энергия) және Bluetooth Classic
- Процессор: Tensilica Xtensa екі ядролы 32 биттік LX6 микропроцессоры, 160 немесе 240 МГц жиілікте жұмыс істейді
- Жад:
- ROM: 448 КБ (жүктеу және негізгі функциялар үшін)
- SRAM: 520 КБ (деректер мен нұсқаулар үшін)
- RTC fas SRAM: 8 КБ (терең ұйқы режимінен RTC жүктеу кезінде деректерді сақтау және негізгі процессор үшін)
- RTC баяу SRAM: 8 КБ (терең ұйқы режимі кезінде қосалқы процессорға кіру үшін) eFuse: 1 Кбит (оның ішінде 256 бит жүйе үшін пайдаланылады (MAC мекенжайы және чип конфигурациясы) және қалған 768 бит тұтынушы қолданбалары үшін сақталған, соның ішінде Flash-шифрлау және чип-идентификатор)
Енгізілген жарқыл: ESP16-D17WD және ESP0-PICO-D1 құрылғыларында IO32, IO2, SD_CMD, SD_CLK, SD_DATA_32 және SD_DATA_4 арқылы ішкі қосылған жарқыл.
- 0 МБ (ESP32-D0WDQ6, ESP32-D0WD және ESP32-S0WD чиптері)
- 2 МБ (ESP32-D2WD чипі)
- 4 МБ (ESP32-PICO-D4 SiP модулі)
Төмен қуат: ADC түрлендірулерін әлі де пайдалана алатыныңызды қамтамасыз етеді, мысалыample, терең ұйқы кезінде.
Перифериялық кіріс/шығыс:
- сыйымдылықты жанасуды қамтитын DMA-мен перифериялық интерфейс
- ADC (аналогты-сандық түрлендіргіш)
- DAC (сандық-аналогтық түрлендіргіш)
- I²C (интегралдық схема)
- 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 (екі ядролы) |
Сымсыз дәлдiк | 2.4 ГГц 150 Мбит/с дейін |
Блютез | BLE (Bluetooth төмен энергия) және бұрынғы Bluetooth |
Архитектура | 32 бит |
Сағат жиілігі | 240 МГц дейін |
Жедел Жадтау Құрылғысы | 512 КБ |
түйреуіштер | 30 (үлгіге байланысты) |
Перифериялық құрылғылар | Сыйымдылық сенсоры, ADC (аналогты сандық түрлендіргіш), DAC (цифрлық аналогты түрлендіргіш), 12C (интегралды схема), UART (әмбебап асинхронды қабылдағыш/таратқыш), CAN 2.0 (Controller Area Netwokr), SPI (сериялық перифериялық интерфейс) , 12S (Integrated Inter-IC Дыбыс), RMII (қысқартылған медиа-тәуелсіз интерфейс), PWM (импульстік ен модуляциясы) және т.б. |
Кірістірілген түймелер | RESET және BOOT түймелері |
Кірістірілген жарықдиодты шамдар | GPIO2-ге қосылған кіріктірілген көк жарық диоды; тақтаға қуат беріліп жатқанын көрсететін кіріктірілген қызыл жарық диоды |
USB-ден UART-қа дейін көпір |
CP2102 |
Ол кодты жүктеп салу немесе қуат беру үшін тақтаны компьютерге қосу үшін пайдалануға болатын microUSB интерфейсімен келеді.
Ол сериялық интерфейсті пайдаланып COM порты арқылы компьютермен байланысу үшін CP2102 чипін (USB - UART) пайдаланады. Тағы бір танымал чип - CH340. Тақтада USB-UART чип түрлендіргішінің не екенін тексеріңіз, себебі компьютеріңіз тақтамен байланыса алуы үшін қажетті драйверлерді орнатуыңыз қажет (бұл туралы қосымша ақпаратты кейінірек осы нұсқаулықта қараңыз).
Бұл тақта сонымен қатар тақтаны қайта іске қосу үшін RESET түймешігімен (EN деп белгіленуі мүмкін) және тақтаны жыпылықтау режиміне қою үшін BOOT түймешігімен (кодты алу үшін қол жетімді) келеді. Кейбір тақталарда BOOT түймесі болмауы мүмкін екенін ескеріңіз.
Ол сонымен қатар GPIO 2-ге ішкі қосылған көк жарық диодымен бірге жеткізіледі. Бұл жарық диоды көрнекі физикалық шығыстың қандай да бір түрін беру үшін отладтау үшін пайдалы. Сондай-ақ тақтаға қуат бергенде жанатын қызыл жарық диоды бар.ESP32 шығысы
ESP32 перифериялық құрылғыларына мыналар кіреді:
- 18 Аналогты-сандық түрлендіргіш (ADC) арналары
- 3 SPI интерфейсі
- 3 UART интерфейсі
- 2 I2C интерфейсі
- 16 PWM шығыс арналары
- 2 Сандық-аналогтық түрлендіргіштер (DAC)
- 2 I2S интерфейсі
- 10 сыйымдылықты сезгіш GPIO
ADC (аналогты сандық түрлендіргіш) және DAC (цифрлық аналогты түрлендіргіш) мүмкіндіктері арнайы статикалық түйреуіштерге тағайындалған. Дегенмен, қандай түйреуіштер UART, I2C, SPI, PWM және т.б. екенін шеше аласыз – оларды кодта тағайындау жеткілікті. Бұл ESP32 чипінің мультиплекстеу мүмкіндігінің арқасында мүмкін.
Бағдарламалық құралда түйреуіштердің сипаттарын анықтауға болатынына қарамастан, келесі суретте көрсетілгендей әдепкі бойынша тағайындалған түйреуіштер бар.Бұған қоса, оларды белгілі бір жоба үшін қолайлы немесе жарамсыз ететін ерекше мүмкіндіктері бар түйреуіштер бар. Төмендегі кестеде кірістер, шығыстар ретінде қандай түйреуіштерді пайдалану жақсы және қайсысына сақ болу керектігі көрсетілген.
Жасыл түспен белгіленген түйреуіштерді қолдануға болады. Сары түспен белгіленгендерді қолдануға болады, бірақ оларға назар аудару керек, себебі олар негізінен жүктеу кезінде күтпеген әрекетке ие болуы мүмкін. Қызыл түспен белгіленген түйреуіштерді кіріс немесе шығыс ретінде пайдалану ұсынылмайды.
GP IO | Енгізу | Шығару | Ескертпелер |
0 | тартылды | OK | жүктеу кезінде PWM сигналын шығарады, жыпылықтау режиміне өту үшін ТӨМЕН болуы керек |
1 | TX түйреуіш | OK | жүктеу кезінде отладка шығысы |
2 | OK | OK | борттық жарық диодыға қосылған, жыпылықтау режиміне өту үшін қалқымалы немесе ТӨМЕН күйде қалдыру керек |
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 және оның функцияларын толығырақ және терең талдау үшін оқуды жалғастырыңыз.
Тек түйреуіштерді енгізіңіз
34-39 GPIOs GPI болып табылады – тек енгізу түйреуіштері. Бұл түйреуіштерде ішкі тартылатын немесе төмен тартылатын резисторлар жоқ. Оларды шығыс ретінде пайдалану мүмкін емес, сондықтан бұл түйреуіштерді тек кіріс ретінде пайдаланыңыз:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
ESP-WROOM-32 құрылғысына біріктірілген SPI жарқылы
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)
Сыйымды сенсорлық 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)
Аналогты цифрлық түрлендіргішке (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 0В және 4095-тен 3.3В-қа сәйкес келеді. Сондай-ақ, код пен ADC ауқымында арналарыңыздың ажыратымдылығын орнатуға болады.
ESP32 ADC түйреуіштерінде сызықтық мінез-құлық жоқ. Сіз 0 мен 0.1 В немесе 3.2 мен 3.3 В арасын ажырата алмайтын шығарсыз. ADC түйреуіштерін пайдаланған кезде мұны есте сақтау керек. Төмендегі суретте көрсетілгенге ұқсас әрекетті аласыз.Цифрлық-аналогтық түрлендіргіш (DAC)
Сандық сигналдарды аналогтық дыбысқа түрлендіру үшін ESP2 құрылғысында 8 x 32 бит DAC арналары барtage сигнал шығыстары. Бұл DAC арналары:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIO
ESP32 құрылғысында RTC GPIO қолдауы бар. RTC төмен қуатты ішкі жүйесіне бағытталатын GPIO құрылғыларын ESP32 терең ұйқы режимінде болғанда пайдалануға болады. Бұл RTC GPIO құрылғыларын 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 контроллерінде әртүрлі сипаттары бар PWM сигналдарын жасау үшін конфигурацияланатын 16 тәуелсіз арна бар. Шығыс ретінде әрекет ете алатын барлық түйреуіштерді PWM түйреуіштері ретінде пайдалануға болады (GPIO 34-39 PWM жасай алмайды).
PWM сигналын орнату үшін кодта мына параметрлерді анықтау керек:
- Сигнал жиілігі;
- Жұмыс циклі;
- PWM арнасы;
- Сигнал шығарғыңыз келетін GPIO.
I2C
ESP32-де екі I2C арнасы бар және кез келген түйреуіш SDA немесе SCL ретінде орнатылуы мүмкін. ESP32-ні Arduino IDE-мен пайдалану кезінде әдепкі 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 (жүктеу режиміне өту үшін ТӨМЕН болуы керек)
- GPIO 2 (жүктеу кезінде қалқымалы немесе төмен болуы керек)
- GPIO 4
- GPIO 5 (жүктеу кезінде ЖОҒАРЫ болуы керек)
- GPIO 12 (жүктеу кезінде ТӨМЕН болуы керек)
- GPIO 15 (жүктеу кезінде ЖОҒАРЫ болуы керек)
Олар ESP32 құрылғысын жүктеуші немесе жыпылықтау режиміне қою үшін қолданылады. Кірістірілген USB/сериялық бар әзірлеу тақталарының көпшілігінде бұл түйреуіштердің күйі туралы алаңдамаудың қажеті жоқ. Тақта жыпылықтау немесе жүктеу режимі үшін түйреуіштерді дұрыс күйге қояды. ESP32 жүктеу режимін таңдау туралы қосымша ақпаратты мына жерден табуға болады.
Дегенмен, сол түйреуіштерге қосылған перифериялық құрылғыларыңыз болса, жаңа кодты жүктеп салу, ESP32 құрылғысын жаңа микробағдарламамен жыпылықтау немесе тақтаны қалпына келтіру кезінде қиындықтар туындауы мүмкін. Егер сізде байлау түйреуіштеріне қосылған кейбір перифериялық құрылғылар болса және кодты жүктеп салуда немесе ESP32 жыпылықтауда қиындықтар туындаса, бұл перифериялық құрылғылар ESP32 дұрыс режимге өтуіне кедергі болуы мүмкін. Сізге дұрыс бағытты көрсету үшін Жүктеу режимін таңдау құжаттамасын оқыңыз. Қалпына келтіру, жыпылықтау немесе жүктеуден кейін бұл түйреуіштер күтілгендей жұмыс істейді.
Жүктеу кезінде ЖОҒАРЫ түйреуіштер
Кейбір GPIO құрылғылары жүктеу немесе қалпына келтіру кезінде күйін HIGH күйіне өзгертеді немесе PWM сигналдарын шығарады.
Бұл осы GPIO құрылғыларына қосылған шығыстарыңыз болса, ESP32 қалпына келтірілгенде немесе жүктелгенде күтпеген нәтижелер алуыңыз мүмкін дегенді білдіреді.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 - GPIO 11 (ESP32 біріктірілген SPI флэш-жадына қосылған – пайдалану ұсынылмайды).
- GPIO 14
- GPIO 15
Қосу (EN)
Қосу (EN) - 3.3 В реттегішінің қосу пин. Ол жоғары тартылды, сондықтан 3.3 В реттегішті өшіру үшін жерге қосыңыз. Бұл ESP32 құрылғысын қайта іске қосу үшін түймеге жалғанған бұл түйреуішті пайдалана алатыныңызды білдіреді, мысалыampле.
GPIO ток тартылды
GPIO үшін алынатын абсолютті максималды ток ESP40 деректер парағындағы «Ұсынылатын жұмыс шарттары» бөліміне сәйкес 32 мА құрайды.
ESP32 кіріктірілген зал әсерінің сенсоры
ESP32 сонымен қатар оның айналасындағы магнит өрісіндегі өзгерістерді анықтайтын кіріктірілген зал әсерінің сенсорымен жабдықталған.
ESP32 Arduino IDE
Arduino IDE және оның бағдарламалау тілін пайдаланып ESP32 бағдарламасын бағдарламалауға мүмкіндік беретін Arduino IDE қосымшасы бар. Бұл оқулықта Windows, Mac OS X немесе Linux пайдалансаңыз да, Arduino IDE жүйесінде ESP32 тақтасын қалай орнату керектігін көрсетеміз.
Пререквизиттер: 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, ажыратуға болады 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 модулі)
- Портты таңдаңыз (Arduino IDE-де COM портын көрмесеңіз, CP210x USB-UART Bridge VCP драйверлерін орнату керек):
- Келесі экс-ді ашыңызampастында File > Мысалыamples > WiFi
(ESP32) > WiFiScan - Arduino IDE-де жаңа эскиз ашылады:
- Arduino IDE ішіндегі Жүктеп салу түймесін басыңыз. Код жинақталып, тақтаға жүктелгенше бірнеше секунд күтіңіз.
- Егер бәрі күткендей болса, «Жүктеп салу аяқталды» дегенді көресіз. хабар.
- Arduino IDE сериялық мониторын 115200 жіберу жылдамдығымен ашыңыз:
- ESP32 борттық қосу түймесін басыңыз, сонда сіз ESP32 жанында қолжетімді желілерді көресіз:
Ақаулықтарды жою
Егер сіз ESP32 жүйесіне жаңа эскизді жүктеп салуға әрекеттенсеңіз және осы қате туралы хабарды алсаңыз: «Қауіпті қате орын алды: ESP32-ге қосылу сәтсіз аяқталды: Уақыт бітті... Қосылуда...». Бұл сіздің ESP32 жыпылықтау/жүктеп салу режимінде емес екенін білдіреді.
Дұрыс тақта атауы мен COM порты таңдалған болса, мына қадамдарды орындаңыз:
ESP32 тақтасындағы «BOOT» түймесін басып тұрыңыз
- Эскизіңізді жүктеп салу үшін Arduino IDE ішіндегі «Жүктеп салу» түймесін басыңыз:
- «Қосылуда...» көрсетілгеннен кейін. Arduino IDE ішіндегі хабарды «BOOT» түймесінен босатыңыз:
- Осыдан кейін сіз «Жүктеп салу аяқталды» хабарын көресіз
Міне бітті. ESP32-де жаңа эскиз іске қосылуы керек. ESP32 қайта іске қосу және жаңа жүктеп салынған эскизді іске қосу үшін «ҚОСУ» түймесін басыңыз.
Сондай-ақ, жаңа эскизді жүктеп салғыңыз келген сайын сол түймелер тізбегін қайталауға тура келеді.
1 жоба ESP32 кірістері шығыстары
Бұл бастау нұсқаулығында Arduino IDE бар ESP32 көмегімен түйме қосқышы сияқты сандық кірістерді оқуды және жарық диоды сияқты сандық шығыстарды басқаруды үйренесіз.
Алғы шарттар
Arduino IDE көмегімен ESP32 бағдарламасын бағдарламалаймыз. Сонымен, жалғастырмас бұрын ESP32 тақталары қондырмасы орнатылғанына көз жеткізіңіз:
- Arduino IDE жүйесінде ESP32 қондырмасын орнату
ESP32 сандық шығыстарды басқару
Біріншіден, сіз басқарғыңыз келетін GPIO-ны OUTPUT ретінде орнатуыңыз керек. pinMode() функциясын келесідей пайдаланыңыз:
pinMode(GPIO, OUTPUT);
Сандық шығысты басқару үшін сізге дәлел ретінде қабылдайтын digitalWrite() функциясын, сіз айтып отырған GPIO (int нөмірі) және ЖОҒАРЫ немесе ТӨМЕН күйді пайдалану қажет.
digitalWrite(GPIO, STATE);
GPIO 6-дан 11-ге дейін (біріктірілген SPI жарқылына қосылған) және GPIO 34, 35, 36 және 39 (тек GPIO енгізу) қоспағанда, барлық GPIO шығыстары ретінде пайдаланылуы мүмкін;
ESP32 GPIO туралы көбірек біліңіз: ESP32 GPIO анықтамалық нұсқаулығы
ESP32 Сандық кірістерді оқу
Алдымен, pinMode() функциясын пайдаланып, оқығыңыз келетін GPIO-ны келесідей етіп INPUT ретінде орнатыңыз:
pinMode(GPIO, INPUT);
Түйме сияқты сандық кірісті оқу үшін сіз сілтеме жасап отырған GPIO (int нөмірі) аргумент ретінде қабылдайтын digitalRead() функциясын пайдаланасыз.
цифрлық оқу (GPIO);
32-6 GPIO (кіріктірілген SPI жарқылына қосылған) қоспағанда, барлық ESP11 GPIO кірістер ретінде пайдалануға болады.
ESP32 GPIO туралы көбірек біліңіз: ESP32 GPIO анықтамалық нұсқаулығы
Жоба Example
Сандық кірістер мен сандық шығыстарды қалай пайдалану керектігін көрсету үшін біз қарапайым жобаны құрастырамызampтүймесі мен жарық диоды бар. Біз түйменің күйін оқимыз және келесі суретте көрсетілгендей жарық диодты шамды қосамыз.
Міндетті бөлшектер
Міне, схеманы құру үшін қажет бөліктердің тізімі:
- 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, OUTPUT);
Loop() - бұл түйме күйін оқып, жарық диодты сәйкесінше орнату.
Келесі жолда түйме күйін оқисыз және оны buttonState айнымалысында сақтайсыз.
Бұрын көргеніміздей, сіз digitalRead() функциясын пайдаланасыз.
buttonState = digitalRead(buttonPin);
Келесі if операторы түйме күйінің ЖОҒАРЫ екенін тексереді. Егер солай болса, ол ledPin және ЖОҒАРЫ күйді аргумент ретінде қабылдайтын digitalWrite() функциясын пайдаланып ЖШД қосады.
егер (buttonState == HIGH)Түйменің күйі ЖОҒАРЫ болмаса, жарық диоды өшіріледі. DigitalWrite() функциясында ТӨМЕН мәнін екінші аргумент ретінде орнатыңыз.
Кодты жүктеп салу
Жүктеп салу түймесін баспас бұрын Құралдар > Тақта тармағына өтіп, тақтаны таңдаңыз: DOIT ESP32 DEVKIT V1 тақтасы.
Құралдар > Порт тармағына өтіп, ESP32 қосылған COM портын таңдаңыз. Содан кейін жүктеп салу түймесін басып, «Жүктеп салу аяқталды» хабарын күтіңіз.Ескертпе: Түзету терезесінде көптеген нүктелерді (қосылуда…__…__) және «ESP32-ге қосылу сәтсіз аяқталды: пакет тақырыбын күту уақыты аяқталды» хабарын көрсеңіз, бұл ESP32 борттық BOOT түймесін басу керек дегенді білдіреді. нүктелерден кейінгі түймені басыңыз
пайда бола бастайды. Ақаулықтарды жою
Демонстрация
Кодты жүктеп салғаннан кейін, схемаңызды тексеріңіз. Түймені басқан кезде жарық диоды жануы керек:Оны шығарған кезде өшіріңіз:
Жоба 2 ESP32 аналогтық кірістер
Бұл жоба Arduino IDE көмегімен ESP32 көмегімен аналогтық кірістерді қалай оқу керектігін көрсетеді.
Аналогты оқу потенциометрлер немесе аналогтық сенсорлар сияқты айнымалы резисторлардың мәндерін оқу үшін пайдалы.
Аналогтық кірістер (ADC)
ESP32 көмегімен аналогтық мәнді оқу әр түрлі көлемді өлшеуге болатындығын білдіредіtage деңгейлері 0 В пен 3.3 В арасындағы.
ТомtagСодан кейін өлшенген e 0 мен 4095 арасындағы мәнге тағайындалады, онда 0 В 0-ге, ал 3.3 В 4095-ке сәйкес келеді. Кез келген көлемtage 0 В пен 3.3 В арасындағы сәйкес мән арасында беріледі.ADC сызықты емес
Ең дұрысы, ESP32 ADC түйреуіштерін пайдаланған кезде сызықтық әрекет күтесіз.
Алайда, бұл болмайды. Келесі диаграммада көрсетілгендей әрекетті аласыз:Бұл әрекет ESP32 құрылғысы 3.3 В-ты 3.2 В-тан ажырата алмайтынын білдіреді.
Екі том үшін бірдей мән аласызtages: 4095.
Өте төмен көлем үшін де солай боладыtage мәндері: 0 В және 0.1 В үшін бірдей мәнді аласыз: 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 тақтасы
- Потенциометр
- Нан тақтасы
- Секіргіш сымдар
Схемалық
Потенциометрді ESP32 құрылғысына жалғаңыз. Потенциометрдің ортаңғы істікшесін GPIO 4 желісіне қосу керек. Анықтама ретінде келесі схемалық диаграмманы пайдалануға болады.Код
Біз ESP32 бағдарламасын Arduino IDE арқылы бағдарламалаймыз, сондықтан жалғастырмас бұрын ESP32 қондырмасы орнатылғанына көз жеткізіңіз: (Егер сіз бұл қадамды орындаған болсаңыз, келесі қадамға өтуге болады.)
Arduino IDE жүйесінде ESP32 қондырмасын орнату
Project_2_ESP32_Inputs_Outputs.ino кодын arduino IDE ішінде ашыңызБұл код потенциометрдегі мәндерді жай ғана оқиды және сол мәндерді сериялық мониторда басып шығарады.
Кодта сіз потенциометр қосылған GPIO-ны анықтаудан бастайсыз. Бұл бұрынғыample, GPIO 4.Setup() ішінде 115200 жіберу жылдамдығымен сериялық байланысты инициализациялаңыз.
Циклде() 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 контроллерін пайдаланып жарық диодты жарықтандыратын қарапайым схеманы құрастырамыз.ESP32 LED PWM контроллері
ESP32-де әртүрлі сипаттары бар PWM сигналдарын жасау үшін конфигурацияланатын 16 тәуелсіз арнасы бар LED PWM контроллері бар.
Arduino IDE көмегімен PWM бар жарықдиодты күңгірттеу үшін келесі қадамдарды орындау керек:
- Алдымен PWM арнасын таңдау керек. 16-ден 0-ке дейін 15 арна бар.
- Содан кейін PWM сигнал жиілігін орнату керек. Жарық диодты үшін 5000 Гц жиілікті пайдалану жақсы.
- Сондай-ақ сигналдың жұмыс циклінің ажыратымдылығын орнату қажет: сізде 1-ден 16 битке дейінгі ажыратымдылықтар бар. Біз 8-биттік ажыратымдылықты қолданамыз, яғни 0-ден 255-ке дейінгі мәнді пайдаланып, жарық диодты жарықтығын басқара аласыз.
- Содан кейін сигнал қай GPIO немесе GPIO құрылғыларында пайда болатынын көрсетуіңіз керек. Ол үшін келесі функцияны пайдаланасыз:
ledcAttachPin(GPIO, арна)
Бұл функция екі аргументті қабылдайды. Біріншісі - сигналды шығаратын GPIO, ал екіншісі - сигнал шығаратын арна. - Соңында, PWM көмегімен жарық диоды жарықтығын басқару үшін келесі функцияны пайдаланасыз:
ledcWrite(арна, жұмыс циклі)
Бұл функция PWM сигналын жасайтын арнаны және жұмыс циклін аргументтер ретінде қабылдайды.
Міндетті бөлшектер
Бұл оқулықты орындау үшін сізге мына бөліктер қажет:
- ESP32 DEVKIT V1 тақтасы
- 5mm жарықдиодты шам
- 220 Ом резисторы
- Нан тақтасы
- Секіргіш сымдар
Схемалық
Келесі схемалық диаграммадағыдай жарық диодты ESP32 құрылғысына жалғаңыз. Жарық диодты GPIO желісіне қосылуы керек 4.Ескерту: сіз қалаған кез келген түйреуішті пайдалана аласыз, тек ол шығыс ретінде әрекет ете алады. Шығыс ретінде әрекет ете алатын барлық түйреуіштерді PWM түйреуіштері ретінде пайдалануға болады. ESP32 GPIO құрылғылары туралы қосымша ақпарат алу үшін мынаны оқыңыз: ESP32 Pinout Анықтамасы: Қандай GPIO түйреуіштерін пайдалану керек?
Код
Біз ESP32 бағдарламасын Arduino IDE арқылы бағдарламалаймыз, сондықтан жалғастырмас бұрын ESP32 қондырмасы орнатылғанына көз жеткізіңіз: (Егер сіз бұл қадамды орындаған болсаңыз, келесі қадамға өтуге болады.)
Arduino IDE жүйесінде ESP32 қондырмасын орнату
Project_3_ESP32_PWM.ino кодын arduino IDE ішінде ашыңызСіз жарық диоды бекітілген түйреуішті анықтаудан бастайсыз. Бұл жағдайда жарық диоды GPIO 4-ке қосылады.
Содан кейін PWM сигналының сипаттарын орнатыңыз. Сіз 5000 Гц жиілігін анықтайсыз, сигналды жасау үшін 0 арнасын таңдап, 8 бит ажыратымдылығын орнатасыз. Әртүрлі PWM сигналдарын жасау үшін осылардан өзгеше басқа сипаттарды таңдауға болады.
setup() параметрінде сіз ledcSetup() функциясын пайдаланып, бұрын анықталған сипаттармен LED PWM конфигурациялауыңыз қажет, ол аргументтер, ledChannel, жиілік және ажыратымдылық ретінде төмендегідей қабылданады:
Әрі қарай, сіз сигнал алатын GPIO-ны таңдауыңыз керек. Ол үшін сигналды алғыңыз келетін GPIO және сигнал жасайтын арнаны дәлел ретінде қабылдайтын ledcAttachPin() функциясын пайдаланыңыз. Бұл бұрынғыample, біз GPIO 4 сәйкес келетін ledPin GPIO сигналын аламыз. Сигнал генерациялайтын арна ledChannel болып табылады, ол 0 арнасына сәйкес келеді.
Жарық диодты жарықтылығын арттыру үшін циклде жұмыс циклін 0 мен 255 арасында өзгертесіз.
Содан кейін, жарықтылықты азайту үшін 255 пен 0 арасында.
Жарық диодты шамның жарықтығын орнату үшін сигналды жасайтын арнаны және жұмыс циклін дәлел ретінде қабылдайтын ledcWrite() функциясын пайдалану қажет.
Біз 8-биттік ажыратымдылықты пайдаланатындықтан, жұмыс циклі 0-ден 255-ке дейінгі мән арқылы басқарылатын болады. ledcWrite() функциясында GPIO емес, сигнал жасайтын арнаны қолданатынымызды ескеріңіз.
Экс. тестілеуample
Кодты ESP32 жүйесіне жүктеп салыңыз. Дұрыс тақта мен COM порты таңдалғанына көз жеткізіңіз. Тізбекті қараңыз. Жарықтылықты арттыратын және азайтатын жарық диодты шам болуы керек.
Жоба 4 ESP32 PIR қозғалыс сенсоры
Бұл жоба PIR қозғалыс сенсорын пайдаланып ESP32 көмегімен қозғалысты қалай анықтау керектігін көрсетеді. Қозғалыс анықталған кезде дыбыстық сигнал сигналын береді және алдын ала белгіленген уақыт ішінде қозғалыс анықталмаған кезде дабылды тоқтатады (мысалы, 4 секунд)
HC-SR501 қозғалыс сенсоры қалай жұмыс істейді
.HC-SR501 сенсорының жұмыс принципі қозғалатын нысандағы инфрақызыл сәулеленудің өзгеруіне негізделген. HC-SR501 сенсоры арқылы анықтау үшін нысан екі талапқа сай болуы керек:
- Нысан инфрақызыл жолмен сәуле шығарады.
- Нысан қозғалады немесе дірілдейді
Сонымен:
Егер объект инфрақызыл сәулені шығарса, бірақ қозғалмаса (мысалы, адам қозғалмай тұрып қалса), оны сенсор анықтамайды.
Нысан қозғалып тұрса, бірақ инфрақызыл сәулені шығармаса (мысалы, робот немесе көлік), оны сенсор ТАҢДАмайды.
Таймерлермен таныстыру
Бұл бұрынғыampСонымен қатар біз таймерлерді енгіземіз. Қозғалыс анықталғаннан кейін жарық диодының алдын ала белгіленген секундтар санына қосулы болуын қалаймыз. Кодыңызды блоктайтын және белгілі бір секунд ішінде басқа ештеңе істеуге мүмкіндік бермейтін delay() функциясын пайдаланудың орнына таймерді пайдалану керек.delay() функциясы
Delay() функциясымен таныс болуыңыз керек, себебі ол кеңінен қолданылады. Бұл функцияны пайдалану өте оңай. Ол аргумент ретінде жалғыз int санын қабылдайды.
Бұл сан бағдарлама кодтың келесі жолына өткенше күтетін уақытты миллисекундтармен көрсетеді.Кешіктіргенде (1000) сіздің бағдарламаңыз сол жолда 1 секундқа тоқтайды.
delay() блоктау функциясы болып табылады. Бұғаттау функциялары бағдарламаның сол тапсырма орындалмайынша басқа ештеңе істеуіне жол бермейді. Бір уақытта бірнеше тапсырманы орындау қажет болса, delay() функциясын пайдалана алмайсыз.
Көптеген жобалар үшін кідірістерді пайдаланудан аулақ болу керек және оның орнына таймерлерді пайдалану керек.
millis() функциясы
millis() деп аталатын функцияны пайдаланып, бағдарлама алғаш рет іске қосылғаннан бері өткен миллисекундтар санын қайтаруға болады.Неліктен бұл функция пайдалы? Өйткені кейбір математиканы қолдану арқылы сіз кодты блоктамастан қанша уақыт өткенін оңай тексере аласыз.
Міндетті бөлшектер
Бұл оқулықты орындау үшін сізге келесі бөліктер қажет
- ESP32 DEVKIT V1 тақтасы
- PIR қозғалыс сенсоры (HC-SR501)
- Белсенді Бұзер
- Секіргіш сымдар
- Нан тақтасы
СхемалықЕскерту: Жұмыс томtagHC-SR501 e - 5 В. Оны қуаттандыру үшін Vin істікшесін пайдаланыңыз.
Код
Осы оқулықты жалғастырмас бұрын Arduino IDE-де ESP32 қондырмасы орнатылған болуы керек. Arduino IDE жүйесіне ESP32 орнату үшін келесі оқулықтардың бірін орындаңыз, егер әлі орнатпасаңыз. (Егер сіз бұл қадамды орындаған болсаңыз, келесі қадамға өтуіңізге болады.)
Arduino IDE жүйесінде ESP32 қондырмасын орнату
Project_4_ESP32_PIR_Motion_Sensor.ino кодын arduino IDE ішінде ашыңыз.
Демонстрация
Кодты ESP32 тақтасына жүктеп салыңыз. Дұрыс тақта мен COM порты таңдалғанына көз жеткізіңіз. Жүктеп салу кодының анықтамалық қадамдары.
Сериялық мониторды 115200 жіберу жылдамдығымен ашыңыз.Қолыңызды PIR сенсорының алдында жылжытыңыз. Сигнал қосылып, сериялық мониторда «Қозғалыс анықталды! Сигнал дабылы» деген хабар басылады.
4 секундтан кейін дыбыстық сигнал өшуі керек.
Жоба 5 ESP32 қосқышы Web Сервер
Бұл жобада сіз автономды жасайсыз web Arduino IDE бағдарламалау ортасын пайдаланып шығыстарды (екі жарық диоды) басқаратын ESP32 сервері. The web сервер мобильді жауап береді және оған жергілікті желідегі шолғыш ретінде кез келген құрылғымен кіруге болады. Біз сізге қалай жасау керектігін көрсетеміз web сервер және кодтың қадамдық жұмысы.
Жоба аяқталдыview
Тікелей жобаға бармас бұрын, біздің нені сипаттайтынымыз маңызды web сервер жасайды, осылайша кейінірек қадамдарды орындау оңайырақ болады.
- The web сіз құрастыратын сервер ESP32 GPIO 26 және GPIO 27 құрылғыларына қосылған екі жарық диодты басқарады;
- ESP32 қол жеткізуге болады web жергілікті желідегі браузерде ESP32 IP мекенжайын теру арқылы серверге;
- Өзіңіздегі түймелерді басу арқылы web серверде әрбір жарық диодының күйін лезде өзгертуге болады.
Міндетті бөлшектер
Бұл оқулық үшін сізге келесі бөліктер қажет:
- ESP32 DEVKIT V1 тақтасы
- 2x5 мм жарықдиодты
- 2х 200 Ом резистор
- Нан тақтасы
- Секіргіш сымдар
Схемалық
Схеманы құрудан бастаңыз. Екі жарық диодты ESP32-ге келесі схемалық диаграммада көрсетілгендей қосыңыз – бір жарық диоды GPIO 26-ға, екіншісі GPIO 27-ге қосылған.
Ескерту: Біз 32 істікшелі ESP36 DEVKIT DOIT тақтасын қолданамыз. Тізбекті жинамас бұрын, пайдаланып жатқан тақтаның түйреуіштерін тексергеніңізге көз жеткізіңіз.Код
Мұнда біз 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 Сервер
қол жеткізу үшін web серверді ашыңыз, браузеріңізді ашыңыз, ESP32 IP мекенжайын қойыңыз және келесі бетті көресіз.
Ескерту: Браузер мен ESP32 бір LAN желісіне қосылған болуы керек.Сериялық мониторға қарасаңыз, фондық режимде не болып жатқанын көре аласыз. 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 ретінде анықтап, оларды ТӨМЕН күйіне орнатасыз.
Келесі жолдар WiFi.begin (ssid, құпия сөз) арқылы Wi-Fi қосылымын бастайды, сәтті қосылымды күтіңіз және ESP IP мекенжайын Сериялық мониторда басып шығарыңыз.
цикл()
циклде() біз жаңа клиентпен байланыс орнатқанда не болатынын бағдарламалаймыз web сервер.
ESP32 әрқашан келесі жолдағы кіріс клиенттерді тыңдайды:Клиенттен сұрау түскенде, біз кіріс деректерді сақтаймыз. Клиент қосылып тұрғанда, келесі уақытша цикл жұмыс істейді. Не істеп жатқаныңызды нақты білмесеңіз, кодтың келесі бөлігін өзгертуді ұсынбаймыз.
if және else операторларының келесі бөлімінде сізде қай түйме басылғанын тексереді web бетін ашады және сәйкесінше шығыстарды басқарады. Бұрын көргеніміздей, біз басқаша сұрау жасаймыз URLs басылған түймеге байланысты.
Мысалыample, егер сіз 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 браузер.
Ал мыналар фавикондағы сұрауларды болдырмау үшін қолданылады. – Бұл желіге алаңдаудың қажеті жоқ.
Сәндеу Web Бет
Әрі қарай, бізде түймелерді және түймелерді стильдеу үшін кейбір CSS мәтіні бар web беттің көрінісі.
Біз Helvetica қаріпін таңдаймыз, блок ретінде көрсетілетін мазмұнды анықтаймыз және ортаға туралаймыз.Түймелерді #4CAF50 түсімен, жиегі жоқ, ақ түсті мәтінмен және осы толтырғышпен сәндейміз: 16px 40px. Сондай-ақ біз мәтінді безендіруді none мәніне орнатамыз, қаріп өлшемін, жиегін және меңзерді көрсеткішке анықтаймыз.
Біз сондай-ақ екінші түйменің мәнерін біз бұрын анықтаған түйменің барлық қасиеттерімен, бірақ басқа түспен анықтаймыз. Бұл өшіру түймесі үшін стиль болады.
параметрін орнату Web Беттің бірінші тақырыбы
Келесі жолда сіз өзіңіздің бірінші тақырыбын орната аласыз web бет. Мұнда бізде «ESP32 Web Сервер», бірақ бұл мәтінді қалағаныңызша өзгерте аласыз.Түймелерді және сәйкес күйді көрсету
Содан кейін GPIO 26 ағымдағы күйін көрсету үшін абзац жазасыз. Көріп отырғаныңыздай, біз output26State айнымалысын қолданамыз, осылайша бұл айнымалы өзгерген кезде күй дереу жаңартылады.Содан кейін біз GPIO ағымдағы күйіне байланысты қосу немесе өшіру түймесін көрсетеміз. GPIO ағымдағы күйі өшірулі болса, біз ON түймесін көрсетеміз, егер жоқ болса, біз OFF түймесін көрсетеміз.
Біз GPIO 27 үшін бірдей процедураны қолданамыз.
Қосылымды жабу
Соңында, жауап аяқталғанда, тақырып айнымалы мәнін тазалап, клиентпен клиент.stop() арқылы байланысты тоқтатамыз.
Орау
Бұл оқулықта біз сізге қалай құру керектігін көрсеттік web ESP32 бар сервер. Біз сізге қарапайым бұрынғыны көрсеттікampБұл екі жарық диодты басқарады, бірақ идея сол жарық диодтарын релемен немесе басқарғыңыз келетін кез келген басқа шығыспен ауыстыру болып табылады.
Жоба 6 RGB жарық диоды Web Сервер
Бұл жобада біз ESP32 тақтасы арқылы RGB жарық диодын қашықтан басқару әдісін көрсетеміз web түс таңдау құралы бар сервер.
Жоба аяқталдыview
Бастамас бұрын, бұл жоба қалай жұмыс істейтінін көрейік:
- ESP32 web сервер түс таңдау құралын көрсетеді.
- Түсті таңдаған кезде браузеріңіз a URL таңдалған түстің R, G және B параметрлерін қамтитын.
- ESP32 сұрауды қабылдайды және әрбір түс параметрі үшін мәнді бөледі.
- Содан кейін ол RGB жарық диодты басқаратын GPIO құрылғыларына сәйкес мәні бар PWM сигналын жібереді.
RGB жарық диодтары қалай жұмыс істейді?
Жалпы катодты RGB жарық диодыда барлық үш жарық диоды теріс қосылымды (катодты) бөліседі. Жинаққа барлығы ортақ катодты RGB кіреді.Әртүрлі түстерді қалай жасауға болады?
RGB жарық диоды арқылы сіз, әрине, қызыл, жасыл және көк шамдарды шығара аласыз және әрбір жарық диодының қарқындылығын конфигурациялау арқылы басқа түстерді де жасай аласыз.
Мысалыample, таза көк жарық шығару үшін көк жарық диодты ең жоғары қарқындылыққа, ал жасыл және қызыл жарық диодтарын ең төменгі қарқындылыққа орнату керек. Ақ жарық үшін сіз барлық үш жарықдиодты ең жоғары қарқындылыққа орнатқан боларсыз.
Түстерді араластыру
Басқа түстерді шығару үшін үш түсті әртүрлі қарқындылықта біріктіруге болады. Әрбір жарық диодының қарқындылығын реттеу үшін PWM сигналын пайдалануға болады.
Жарықдиодты шамдар бір-біріне өте жақын болғандықтан, біздің көздер үш түсті жеке емес, түстер үйлесімінің нәтижесін көреді.
Түстерді біріктіру туралы түсінік алу үшін келесі диаграмманы қараңыз.
Бұл түстерді араластырудың ең қарапайым диаграммасы, бірақ оның қалай жұмыс істейтіні және әртүрлі түстерді қалай шығаруға болатыны туралы түсінік береді.Міндетті бөлшектер
Бұл жоба үшін сізге келесі бөліктер қажет:
- ESP32 DEVKIT V1 тақтасы
- RGB жарық диоды
- 3x 220 Ом резисторлар
- Секіргіш сымдар
- Нан тақтасы
СхемалықКод
Біз 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 пайдаланамыз.
Бұл GPIO құрылғылары PWM сигналдарын шығаруы керек, сондықтан біз алдымен PWM сипаттарын конфигурациялауымыз керек. PWM сигнал жиілігін 5000 Гц етіп орнатыңыз. Содан кейін әр түс үшін PWM арнасын байланыстырыңыз
Соңында, PWM арналарының ажыратымдылығын 8-битке орнатыңыз
Setup() ішінде PWM арналарына PWM сипаттарын тағайындаңыз
PWM арналарын сәйкес GPIO құрылғыларына бекітіңіз
Келесі код бөлімі сізде түс таңдау құралын көрсетеді web бетін ашады және таңдаған түс негізінде сұрау жасайды.
Түсті таңдаған кезде сіз келесі пішімдегі сұрау аласыз.
Сонымен, R, G және B параметрлерін алу үшін осы жолды бөлу керек. Параметрлер redString, greenString және blueString айнымалыларында сақталады және 0 мен 255 арасындағы мәндерге ие болуы мүмкін.Жолақты ESP32 арқылы басқару үшін HTTP кодынан декодталған мәндермен PWM сигналдарын жасау үшін ledcWrite() функциясын пайдаланыңыз. сұрау.
Ескерту: ESP32 бар PWM туралы көбірек біліңіз: Project 3 ESP32 PWM (аналогтық шығыс)
Жолақты ESP8266 көмегімен басқару үшін бізге жай ғана пайдалану керек
HTPP сұрауынан декодталған мәндермен PWM сигналдарын жасау үшін analogWrite() функциясы.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Жолдық айнымалы мәндерді алатындықтан, біз оларды toInt() әдісі арқылы бүтін сандарға түрлендіруіміз керек.
Демонстрация
Желі тіркелгі деректерін енгізгеннен кейін оң жақ тақтаны және COM портын таңдап, кодты ESP32. Upload кодының анықтамалық қадамдарына жүктеңіз.
Жүктеп салғаннан кейін сериялық мониторды 115200 беру жылдамдығымен ашыңыз және ESP Enable/Reset түймесін басыңыз. Сіз тақтаның IP мекенжайын алуыңыз керек.Браузерді ашыңыз және ESP IP мекенжайын енгізіңіз. Енді RGB жарық диоды үшін түс таңдау үшін түс таңдау құралын пайдаланыңыз.
Содан кейін түс күшіне енуі үшін «Түсті өзгерту» түймесін басу керек.RGB ЖШД өшіру үшін қара түсті таңдаңыз.
Ең күшті түстер (түс таңдау құралының жоғарғы жағында) жақсы нәтиже беретін түстер болып табылады.
Жоба 7 ESP32 релесі Web Сервер
ESP32 көмегімен релені пайдалану айнымалы токтағы тұрмыстық құрылғыларды қашықтан басқарудың тамаша тәсілі болып табылады. Бұл оқулық ESP32 көмегімен релелік модульді басқару жолын түсіндіреді.
Біз релелік модульдің қалай жұмыс істейтінін, релені ESP32-ге қалай қосу керектігін және web релені қашықтан басқаруға арналған сервер.
Эстафеталармен таныстыру
Реле - бұл электрмен басқарылатын қосқыш және кез келген басқа қосқыш сияқты, оны қосуға немесе өшіруге, ток өтуге немесе өтпеуге болады. Оны төмен дыбыспен басқаруға боладыtages, ESP3.3 GPIO құрылғыларымен қамтамасыз етілген 32 В сияқты және жоғары дыбысты басқаруға мүмкіндік береді.tagсияқты 12V, 24V немесе электр тогыtage (Еуропада 230 В және АҚШ-та 120 В).Сол жағында жоғары дыбысты қосу үшін үш розеткадан тұратын екі жиынтық барtages және оң жағындағы түйреуіштер (төмен томtage) ESP32 GPIO құрылғыларына қосылу.
Mains Voltage ҚосылымдарАлдыңғы фотосуретте көрсетілген релелік модульдің әрқайсысында үш ұясы бар екі қосқыш бар: жалпы (COM), Қалыпты жабық (NC) және Қалыпты ашық (NO).
- COM: басқарғыңыз келетін токты қосыңыз (электр тогыtagд).
- NC (Қалыпты жабық): әдетте жабық конфигурация реле әдепкі бойынша жабылған кезде пайдаланылады. NC - COM түйреуіштері қосылған, яғни тізбекті ашу және ток ағынын тоқтату үшін ESP32-ден релелік модульге сигнал жібермейінше, ток өтіп жатыр.
- ЖОҚ (Қалыпты ашық): әдетте ашық конфигурация керісінше жұмыс істейді: ЖОҚ және COM түйреуіштері арасында байланыс жоқ, сондықтан тізбекті жабу үшін ESP32 сигналын жібермейінше, тізбек үзіледі.
Басқару түйреуіштеріТөмен көлемдіtage жағында төрт түйреуіш және үш түйреуіш жинағы бар. Бірінші жиынтық модульді қуаттандыру үшін VCC және GND, ал төменгі және жоғарғы релелерді басқару үшін тиісінше 1 кіріс (IN1) және кіріс 2 (IN2) тұрады.
Егер релелік модульде тек бір арна болса, сізде тек бір IN пин болады. Егер сізде төрт арна болса, сізде төрт IN түйреуіштері болады және т.б.
IN түйреуіштеріне жіберетін сигнал реле белсенді немесе белсенді емес екенін анықтайды. Кіріс шамамен 2 В төмен түскен кезде реле іске қосылады. Бұл сізде келесі сценарийлер болатынын білдіреді:
- Қалыпты жабық конфигурация (NC):
- ЖОҒАРЫ сигнал – ток өтіп жатыр
- ТӨМЕН сигнал – ток өтпейді
- Әдетте ашық конфигурация (NO):
- ЖОҒАРЫ сигнал – ток өтпейді
- ТӨМЕН сигнал – ағып жатқан ток
Ток көп рет ағып тұру керек болғанда және оны тек анда-санда тоқтатқыңыз келсе, әдетте жабық конфигурацияны пайдалануыңыз керек.
Токтың анда-санда ағып кетуін қаласаңыз, әдетте ашық конфигурацияны пайдаланыңыз (мысалыample, alamp анда-санда).
Қуат көзін таңдауІстіктердің екінші жинағы GND, VCC және JD-VCC түйреуіштерінен тұрады.
JD-VCC түйреуіш реле электромагнитін қуаттайды. Модульде VCC және JD-VCC түйреуіштерін қосатын секіргіш қалпақ бар екеніне назар аударыңыз; мұнда көрсетілген сары, бірақ сіздікі басқа түс болуы мүмкін.
Секіргіш қақпақ қосулы кезде VCC және JD-VCC істіктері қосылады. Бұл реле электромагнитінің тікелей ESP32 қуат түйреуішінен қуат алатынын білдіреді, сондықтан реле модулі мен ESP32 тізбектері бір-бірінен физикалық түрде оқшауланбаған.
Секіргіш қақпақсыз реле электромагнитін JD-VCC істікшесі арқылы қуаттандыру үшін тәуелсіз қуат көзін қамтамасыз ету керек. Бұл конфигурация ESP32 релелерін модульдің кірістірілген оптикалық қондырғышымен физикалық түрде оқшаулайды, бұл электр тогы болған жағдайда ESP32 зақымдалуын болдырмайды.
СхемалықЕскерту: Жоғары көлемді пайдалануtage қуат көздері ауыр жарақатқа әкелуі мүмкін.
Сондықтан 5 мм жарық диодтары жоғары қуат көлемінің орнына пайдаланыладыtagэксперименттегі электронды шамдар. Егер сіз негізгі томмен таныс болмасаңызtagСізге көмектесетін біреуден сұраңыз. ESP бағдарламасын бағдарламалағанда немесе электр тізбегін қосқанда барлығының желіден ажыратылғанына көз жеткізіңізtage.ESP32 үшін кітапхананы орнату
Мұны салу үшін web серверде біз ESPAsync пайдаланамызWebСервер кітапханасы және AsyncTCP кітапханасы.
ESPAsync орнатуWebСервер кітапханасы
орнату үшін келесі қадамдарды орындаңыз ESPAsyncWebСервер кітапхана:
- ESPAsync жүктеп алу үшін осы жерді басыңызWebСервер кітапханасы. Сізде болуы керек
Жүктеулер қалтасындағы .zip қалтасы - .zip қалтасын ашыңыз және ESPAsync бағдарламасын алуыңыз керекWebСервер-басты қалта
- Қалтаның атын ESPAsync жүйесінен өзгертіңізWebESPAsync үшін сервер-мастерWebСервер
- ESPAsync құралын жылжытыңызWebArduino IDE орнату кітапханалары қалтасына сервер қалтасы
Сонымен қатар, Arduino IDE жүйесінде Sketch > Include тармағына өтуге болады
Кітапхана > .ZIP кітапханасын қосу… және жаңа ғана жүктеп алған кітапхананы таңдаңыз.
ESP32 үшін AsyncTCP кітапханасын орнату
The ESPAsyncWebСервер кітапхана талап етеді AsyncTCP жұмыс істеуге арналған кітапхана. Бақылаңыз
сол кітапхананы орнату үшін келесі қадамдар:
- AsyncTCP кітапханасын жүктеп алу үшін осы жерді басыңыз. Жүктеулер қалтасында .zip қалтасы болуы керек
- .zip қалтасын ашыңыз және AsyncTCP-мастер қалтасын алуыңыз керек
1. Қалтаның атын AsyncTCP-мастер қалтасынан AsyncTCP деп өзгертіңіз
3. AsyncTCP қалтасын Arduino IDE орнату кітапханалары қалтасына жылжытыңыз
4. Соңында, Arduino IDE қайта ашыңыз
Сонымен қатар, Arduino IDE жүйесінде Sketch > Include тармағына өтуге болады
Кітапхана > .ZIP кітапханасын қосу… және жаңа ғана жүктеп алған кітапхананы таңдаңыз.
Код
Біз 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 шығыстарын a көмегімен басқару жолын көрсетеді web сервер және физикалық түйме бір уақытта. Шығыс күйі келесіде жаңартылады web ол физикалық түйме арқылы өзгертілген бе, әлде web сервер.
Жоба аяқталдыview
Жобаның қалай жұмыс істейтінін жылдам қарастырайық.ESP32 немесе ESP8266 хосттары а web шығыс күйін басқаруға мүмкіндік беретін сервер;
- Ағымдағы шығыс күйі экранда көрсетіледі web сервер;
- ESP сонымен қатар бірдей шығысты басқаратын физикалық түймеге қосылған;
- Физикалық түймені пайдаланып шығыс күйін өзгертсеңіз, оның ағымдағы күйі де жаңартылады web сервер.
Қорытындылай келе, бұл жоба a көмегімен бірдей шығысты басқаруға мүмкіндік береді web сервер мен бір уақытта басу түймесі. Шығу күйі өзгерген сайын web сервер жаңартылды.
Міндетті бөлшектер
Міне, схеманы құру үшін қажет бөліктердің тізімі:
- ESP32 DEVKIT V1 тақтасы
- 5 мм жарықдиодты
- 220 Ом резистор
- Батырмаға басу
- 10 к Ом резистор
- Нан тақтасы
- Секіргіш сымдар
СхемалықESP32 үшін кітапхананы орнату
Мұны салу үшін web серверде біз ESPAsync пайдаланамызWebСервер кітапханасы және AsyncTCP кітапханасы.(Егер бұл қадамды орындаған болсаңыз, келесі қадамға өтуге болады.)
ESPAsync орнатуWebСервер кітапханасы
ESPAsync орнату үшін келесі қадамдарды орындаңызWebСервер кітапханасы:
- ESPAsync жүктеп алу үшін осы жерді басыңызWebСервер кітапханасы. Сізде болуы керек
Жүктеулер қалтасындағы .zip қалтасы - .zip қалтасын ашыңыз және ESPAsync бағдарламасын алуыңыз керекWebСервер-басты қалта
- Қалтаның атын ESPAsync жүйесінен өзгертіңізWebESPAsync үшін сервер-мастерWebСервер
- ESPAsync құралын жылжытыңызWebArduino IDE орнату кітапханалары қалтасына сервер қалтасы
Сонымен қатар, Arduino IDE жүйесінде Sketch > Include тармағына өтуге болады
Кітапхана > .ZIP кітапханасын қосу… және жаңа ғана жүктеп алған кітапхананы таңдаңыз.
ESP32 үшін AsyncTCP кітапханасын орнату
ESPAsyncWebСервер кітапханасы жұмыс істеу үшін AsyncTCP кітапханасын қажет етеді. Бұл кітапхананы орнату үшін келесі қадамдарды орындаңыз:
- AsyncTCP кітапханасын жүктеп алу үшін осы жерді басыңыз. Жүктеулер қалтасында .zip қалтасы болуы керек
- .zip қалтасын ашыңыз және AsyncTCP-мастер қалтасын алуыңыз керек
- Қалтаның атын AsyncTCP-мастер қалтасынан AsyncTCP деп өзгертіңіз
- AsyncTCP қалтасын Arduino IDE орнату кітапханалары қалтасына жылжытыңыз
- Соңында, Arduino IDE-ді қайта ашыңыз
Сонымен қатар, Arduino IDE жүйесінде Sketch > Include тармағына өтуге болады
Кітапхана > .ZIP кітапханасын қосу… және жаңа ғана жүктеп алған кітапхананы таңдаңыз.
Код
Біз ESP32 бағдарламасын Arduino IDE арқылы бағдарламалаймыз, сондықтан жалғастырмас бұрын ESP32 қондырмасы орнатылғанына көз жеткізіңіз: (Егер сіз бұл қадамды орындаған болсаңыз, келесі қадамға өтуге болады.)
Arduino IDE жүйесінде ESP32 қондырмасын орнату
Қажетті кітапханаларды орнатқаннан кейін кодты ашыңыз
Жоба_8_шығыс_күй_синхрондау_Web_Server.ino arduino IDE ішіндегі.
Кодты жүктеп салмас бұрын, ESP жергілікті желіге қосылуы үшін желі тіркелгі деректерін енгізуді ұмытпаңыз.
Кодекс қалай жұмыс істейді
Түйме күйі және шығыс күйі
ledState айнымалысы ЖШД шығыс күйін ұстайды. Әдепкі бойынша, қашан web сервер іске қосылды, ол ТӨМЕН.
ButtonState және lastButtonState түймешіктің басылғанын немесе басылғанын анықтау үшін пайдаланылады.Түйме (web сервер)
Біз index_html айнымалысында түймені жасау үшін HTML қоспадық.
Себебі біз оны ағымдағы жарық диоды күйіне байланысты өзгерткіміз келеді, оны түйме арқылы өзгертуге болады.
Сонымен, біз %BUTTONPLACEHOLDER% түймесі үшін толтырғыш жасадық, ол кодта кейінірек түймені жасау үшін HTML мәтінімен ауыстырылады (бұл процессор() функциясында орындалады).процессор()
processor() функциясы HTML мәтініндегі кез келген толтырғыштарды нақты мәндермен ауыстырады. Біріншіден, ол HTML мәтіндерінде бар-жоғын тексереді
%BUTTONPLACEHOLDER% толтырғыштары.Содан кейін ағымдағы шығыс күйін қайтаратын theoutputState() функциясын шақырыңыз. Біз оны outputStateValue айнымалысында сақтаймыз.
Осыдан кейін түймені дұрыс күймен көрсету үшін HTML мәтінін жасау үшін осы мәнді пайдаланыңыз:
Шығыс күйін өзгертуге арналған HTTP GET сұрауы (JavaScript)
Түймені басқан кезде toggleCheckbox() функциясы шақырылады. Бұл функция басқаға сұрау жасайды URLЖШД қосу немесе өшіру үшін s.Жарық диодты қосу үшін ол /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 және led күйін сәйкесінше өзгертеді.
Сұраныс /күйіне түскенде URL, біз ағымдағы шығыс күйін жібереміз:
цикл()
Циклда() біз түймені өшіреміз және LED күйінің мәніне байланысты жарық диодты қосамыз немесе өшіреміз. айнымалы.Демонстрация
Кодты ESP32 тақтасына жүктеп салыңыз. Код анықтамалық қадамдарын жүктеп салыңыз.
Содан кейін сериялық мониторды 115200 жіберу жылдамдығымен ашыңыз. IP мекенжайын алу үшін борттық EN/RST түймесін басыңыз.Жергілікті желіде шолғышты ашып, ESP IP мекенжайын теріңіз. Сізде рұқсат болуы керек web сервер төменде көрсетілгендей.
Ескерту: Браузер мен ESP32 бір LAN желісіне қосылған болуы керек.түймешігін ауыстырып қосуға болады web ЖШД қосу үшін сервер.
Сондай-ақ, сол жарық диодты физикалық түймені басқара аласыз. Оның күйі әрқашан автоматты түрде жаңартылады web сервер.
9 жоба ESP32 DHT11 Web Сервер
Бұл жобада сіз асинхронды ESP32 құру жолын үйренесіз web Arduino IDE көмегімен температура мен ылғалдылықты көрсететін DHT11 сервері.
Алғы шарттар
The web Біз құрастыратын сервер оқуларды жаңартуды қажет етпестен автоматты түрде жаңартады web бет.
Бұл жоба арқылы сіз үйренесіз:
- DHT сенсорларынан температура мен ылғалдылықты қалай оқуға болады;
- Асинхронды құру web көмегімен сервер ESPAsyncWebСервер кітапханасы;
- Сенсор көрсеткіштерін жаңарту қажетсіз автоматты түрде жаңартыңыз web бет.
Асинхронды Web Сервер
салу үшін web серверді қолданамыз ESPAsyncWebСервер кітапханасы бұл асинхронды құрудың оңай жолын қамтамасыз етеді web сервер. Асинхронды құру web серверде бірнеше артықшылықтар барtages кітапханасының GitHub бетінде айтылғандай, мысалы:
- «Бір уақытта бірнеше қосылымды өңдеу»;
- «Жауапты жіберген кезде, сервер жауапты фондық режимде жіберуге қамқорлық жасап жатқанда, сіз басқа қосылымдарды өңдеуге бірден дайын боласыз»;
- «Үлгілерді өңдеуге арналған қарапайым үлгілерді өңдеу механизмі»;
Міндетті бөлшектер
Бұл оқулықты аяқтау үшін сізге келесі бөліктер қажет:
- ESP32 әзірлеу тақтасы
- DHT11 модулі
- Нан тақтасы
- Секіргіш сымдар
СхемалықКітапханаларды орнату
Бұл жоба үшін бірнеше кітапхананы орнату қажет:
- The DHT және Adafruit Бірыңғай сенсоры DHT сенсорынан оқуға арналған драйвер кітапханалары.
- ESPAsyncWebСервер және Синхронды TCP асинхронды құру үшін кітапханалар web сервер.
Бұл кітапханаларды орнату үшін келесі нұсқауларды орындаңыз:
DHT сенсорының кітапханасын орнату
Arduino IDE көмегімен DHT сенсорынан оқу үшін, орнату керек DHT сенсорының кітапханасы. Кітапхананы орнату үшін келесі қадамдарды орындаңыз.
- DHT Sensor кітапханасын жүктеп алу үшін осы жерді басыңыз. Жүктеулер қалтасында .zip қалтасы болуы керек
- .zip қалтасын ашыңыз және сіз DHT-sensor-library-master қалтасын алуыңыз керек
- Қалтаның атын DHT-sensor-libraries-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-ді қайта ашыңыз
ESPAsync орнатуWebСервер кітапханасы
орнату үшін келесі қадамдарды орындаңыз ESPAsyncWebСервер кітапхана:
- ESPAsync жүктеп алу үшін осы жерді басыңызWebСервер кітапханасы. Сізде болуы керек
Жүктеулер қалтасындағы .zip қалтасы - .zip қалтасын ашыңыз және сізге керек
ESPAsync алыңызWebСервер-басты қалта - Қалтаның атын ESPAsync жүйесінен өзгертіңізWebESPAsync үшін сервер-мастерWebСервер
- ESPAsync құралын жылжытыңызWebArduino IDE орнату кітапханалары қалтасына сервер қалтасы
ESP32 үшін Async TCP кітапханасын орнату
The ESPAsyncWebСервер кітапхана талап етеді AsyncTCP жұмыс істеуге арналған кітапхана. Бұл кітапхананы орнату үшін келесі қадамдарды орындаңыз:
- AsyncTCP кітапханасын жүктеп алу үшін осы жерді басыңыз. Жүктеулер қалтасында .zip қалтасы болуы керек
- .zip қалтасын ашыңыз және AsyncTCP-мастер қалтасын алуыңыз керек
- Қалтаның атын AsyncTCP-мастер қалтасынан AsyncTCP деп өзгертіңіз
- AsyncTCP қалтасын Arduino IDE орнату кітапханалары қалтасына жылжытыңыз
- Соңында, Arduino IDE-ді қайта ашыңыз
Код
Біз 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 нысанын біз бұрын анықтаған түрі мен түйреуішпен іске қосыңыз.Асинхронды жасау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 көмегімен 0.96 дюймдік SSD1306 OLED дисплейін ESP32 көмегімен қалай пайдалану керектігін көрсетеді.
0.96 дюймдік OLED дисплейімен таныстыру
The OLED дисплейі Бұл оқулықта біз SSD1306 үлгісін қолданатын боламыз: келесі суретте көрсетілгендей 0.96×128 пиксельді бір түсті, 64 дюймдік дисплей.OLED дисплейі артқы жарықты қажет етпейді, бұл қараңғы ортада өте жақсы контрастқа әкеледі. Оған қоса, оның пикселдері қосулы кезде ғана энергияны тұтынады, сондықтан OLED дисплейі басқа дисплейлермен салыстырғанда қуатты аз тұтынады.
OLED дисплейі I2C байланыс протоколын пайдаланатындықтан, сымдарды қосу өте қарапайым. Сілтеме ретінде келесі кестені пайдалануға болады.
OLED түйреуіш | ESP32 |
Вин | 3.3В |
GND | GND |
SCL | GPIO 22 |
SDA | GPIO 21 |
СхемалықSSD1306 OLED кітапханасын орнату – ESP32
OLED дисплейін ESP32 көмегімен басқаруға арналған бірнеше кітапханалар бар.
Бұл оқулықта біз екі Adafruit кітапханасын қолданамыз: Adafruit_SSD1306 кітапханасы және Adafruit_GFX кітапханасы.
Сол кітапханаларды орнату үшін келесі қадамдарды орындаңыз.
- Arduino IDE ашыңыз және Эскиз > Кітапхананы қосу > Кітапханаларды басқару тармағына өтіңіз. Кітапхана менеджері ашылуы керек.
- Іздеу жолағына «SSD1306» деп теріп, Adafruit-тен SSD1306 кітапханасын орнатыңыз.
- Adafruit-тен SSD1306 кітапханасын орнатқаннан кейін іздеу жолағына «GFX» деп теріп, кітапхананы орнатыңыз.
- Кітапханаларды орнатқаннан кейін Arduino IDE қайта іске қосыңыз.
Код
Қажетті кітапханаларды орнатқаннан кейін Project_10_ESP32_OLED_Display.ino файлын arduino IDE ішінде ашыңыз. код
Біз ESP32 бағдарламасын Arduino IDE арқылы бағдарламалаймыз, сондықтан жалғастырмас бұрын ESP32 қондырмасы орнатылғанына көз жеткізіңіз: (Егер сіз бұл қадамды орындаған болсаңыз, келесі қадамға өтуге болады.)
Arduino IDE жүйесінде ESP32 қондырмасын орнатуКодекс қалай жұмыс істейді
Кітапханаларды импорттау
Алдымен сізге қажетті кітапханаларды импорттау керек. I2C пайдаланатын Wire кітапханасы және дисплейге жазу үшін Adafruit кітапханалары: Adafruit_GFX және Adafruit_SSD1306.OLED дисплейін инициализациялаңыз
Содан кейін сіз OLED ені мен биіктігін анықтайсыз. Бұл бұрынғыampбіз 128×64 OLED дисплейін пайдаланып жатырмыз. Басқа өлшемдерді пайдалансаңыз, оны SCREEN_WIDTH және SCREEN_HEIGHT айнымалы мәндерінде өзгертуге болады.Содан кейін I2C байланыс протоколымен (&Wire) бұрын анықталған ені мен биіктігі бар дисплей нысанын инициализациялаңыз.
(-1) параметрі OLED дисплейінде RESET pinінің жоқтығын білдіреді. Егер 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. Upload кодының анықтамалық қадамдарына жүктеңіз.
Кодты жүктеп салғаннан кейін OLED айналдыру мәтінін көрсетеді.
Құжаттар / Ресурстар
![]() |
LAFVIN ESP32 негізгі бастау жинағы [pdf] Instruction Manual ESP32 Basic Starter Kit, ESP32, Basic Starter Kit, Starter Kit |