ESP32 Əsas Başlanğıc
Kit
Qablaşdırma Siyahısı
ESP32 Giriş
ESP32-də yenisiniz? Buradan başlayın! ESP32, Espressif tərəfindən hazırlanmış, Wi-Fi və Bluetooth simsiz imkanları və ikinüvəli prosessoru özündə birləşdirən bir çip üzərində (SoC) mikrokontrollerlər seriyasıdır. ESP8266 ilə tanışsınızsa, ESP32 çoxlu yeni funksiyalarla yüklənmiş onun varisidir.ESP32 Spesifikasiyaları
Bir az daha texniki və spesifik olmaq istəyirsinizsə, ESP32-nin aşağıdakı ətraflı spesifikasiyalarına nəzər sala bilərsiniz (mənbə: http://esp32.net/)-ətraflı məlumat üçün, məlumat cədvəlini yoxlayın):
- Simsiz bağlantı WiFi: HT150.0 ilə 40 Mbps məlumat sürəti
- Bluetooth: BLE (Bluetooth Low Energy) və Bluetooth Classic
- Prosessor: Tensilica Xtensa Dual-Core 32-bit LX6 mikroprosessor, 160 və ya 240 MHz tezliyində işləyir
- Yaddaş:
- ROM: 448 KB (yükləmə və əsas funksiyalar üçün)
- SRAM: 520 KB (məlumat və təlimatlar üçün)
- RTC fas SRAM: 8 KB (dərin yuxu rejimindən RTC yükləmə zamanı məlumatların saxlanması və əsas CPU üçün)
- RTC yavaş SRAM: 8KB (dərin yuxu rejimində birgə prosessor girişi üçün) eFuse: 1 Kbit (bundan 256 bit sistem üçün istifadə olunur (MAC ünvanı və çip konfiqurasiyası) və qalan 768 bit müştəri proqramları üçün qorunur, o cümlədən Flash-Şifrələmə və Chip-ID)
Daxili flaş: ESP16-D17WD və ESP0-PICO-D1-də IO32, IO2, SD_CMD, SD_CLK, SD_DATA_32 və SD_DATA_4 vasitəsilə daxili qoşulmuş flaş.
- 0 MiB (ESP32-D0WDQ6, ESP32-D0WD və ESP32-S0WD çipləri)
- 2 MiB (ESP32-D2WD çipi)
- 4 MiB (ESP32-PICO-D4 SiP modulu)
Aşağı Güc: məsələn, ADC dönüşümlərindən hələ də istifadə edə biləcəyinizi təmin edirample, dərin yuxu zamanı.
Periferik Giriş/Çıxış:
- kapasitiv toxunuşu ehtiva edən DMA ilə periferik interfeys
- ADC (Analoqdan Rəqəmə Çevirici)
- DAC (Rəqəmdən Analoqa çevirici)
- I²C (Integrated Circuit)
- UART (Universal asinxron qəbuledici/ötürücü)
- SPI (Serial Periferik İnterfeys)
- I²S (Integrated Interchip Sound)
- RMII (Azaldılmış Media-Müstəqil İnterfeys)
- PWM (Pulse-Width Modulation)
Təhlükəsizlik: AES və SSL/TLS üçün aparat sürətləndiriciləri
ESP32 İnkişaf lövhələri
ESP32 çılpaq ESP32 çipinə aiddir. Bununla birlikdə, "ESP32" termini ESP32 inkişaf lövhələrinə istinad etmək üçün də istifadə olunur. ESP32 çılpaq çiplərindən istifadə asan və praktik deyil, xüsusən də öyrənərkən, sınaqdan keçirərkən və prototip hazırlayarkən. Çox vaxt siz ESP32 inkişaf lövhəsindən istifadə etmək istərdiniz.
Biz ESP32 DEVKIT V1 lövhəsindən istinad kimi istifadə edəcəyik. Aşağıdakı şəkildə 32 GPIO pinli versiya olan ESP1 DEVKIT V30 lövhəsi göstərilir.Spesifikasiyalar – ESP32 DEVKIT V1
Aşağıdakı cədvəl ESP32 DEVKIT V1 DOIT lövhəsinin xüsusiyyətləri və spesifikasiyalarının xülasəsini göstərir:
Nüvələrin sayı | 2 (iki nüvəli) |
Wi-Fi | 2.4 GHz-dən 150 Mbit/s-ə qədər |
Bluetooth | BLE (Bluetooth Low Energy) və köhnə Bluetooth |
Memarlıq | 32 bit |
Saat tezliyi | 240 MHz-ə qədər |
RAM | 512 KB |
Sancaqlar | 30 (modeldən asılı olaraq) |
Periferik qurğular | Kapasitif toxunma, ADC (analoqdan rəqəmsal çeviriciyə), DAC (rəqəmdən analoqa çeviriciyə), 12C (Integrated Circuit), UART (universal asinxron qəbuledici/ötürücü), CAN 2.0 (Controller Area Netwokr), SPI (Serial Periferik İnterfeys) , 12S (Integrated Inter-IC Səs), RMII (Azaldılmış Media-Müstəqil İnterfeys), PWM (pulse eninin modulyasiyası) və s. |
Quraşdırılmış düymələr | RESET və BOOT düymələri |
Daxili LEDlər | GPIO2-ə qoşulmuş daxili mavi LED; lövhəyə enerji verildiyini göstərən daxili qırmızı LED |
USB-dən UART-a körpü |
CP2102 |
O, kodu yükləmək və ya güc tətbiq etmək üçün lövhəni kompüterinizə qoşmaq üçün istifadə edə biləcəyiniz microUSB interfeysi ilə gəlir.
O, serial interfeysdən istifadə edərək COM portu vasitəsilə kompüterinizlə əlaqə saxlamaq üçün CP2102 çipindən (USB-dən UART-a) istifadə edir. Digər məşhur çip CH340-dır. Lövhənizdə USB-UART çip çeviricisinin nə olduğunu yoxlayın, çünki kompüterinizin lövhə ilə əlaqə qura bilməsi üçün tələb olunan sürücüləri quraşdırmalı olacaqsınız (bu barədə daha ətraflı məlumat bu təlimatda daha sonra).
Bu lövhədə həmçinin lövhəni yenidən işə salmaq üçün RESET düyməsi (EN etiketi ilə qeyd oluna bilər) və lövhəni yanıb-sönən rejimə keçirmək üçün BOOT düyməsi (kodu qəbul etmək mümkündür) ilə təchiz edilmişdir. Qeyd edək ki, bəzi lövhələrdə BOOT düyməsi olmaya bilər.
O, həmçinin daxili olaraq GPIO 2-yə qoşulmuş mavi LED ilə təchiz edilmişdir. Bu LED bir növ vizual fiziki çıxış vermək üçün sazlama üçün faydalıdır. Lövhəni enerji ilə təmin etdiyiniz zaman yanan qırmızı LED də var.ESP32 Pin çıxışı
ESP32 periferiyasına aşağıdakılar daxildir:
- 18 Analoqdan Rəqəmə Çevirici (ADC) kanalı
- 3 SPI interfeysi
- 3 UART interfeysi
- 2 I2C interfeysi
- 16 PWM çıxış kanalı
- 2 Rəqəmsaldan Analoqa çevirici (DAC)
- 2 I2S interfeysi
- 10 Kapasitiv həssas GPIO
ADC (analoqdan rəqəmsal çeviriciyə) və DAC (rəqəmdən analoqa çeviriciyə) xüsusiyyətləri xüsusi statik pinlərə təyin edilmişdir. Bununla belə, hansı pinlərin UART, I2C, SPI, PWM və s. olduğuna qərar verə bilərsiniz – sadəcə onları kodda təyin etməlisiniz. Bu, ESP32 çipinin multipleksləmə xüsusiyyəti sayəsində mümkündür.
Proqramda sancaqlar xassələrini təyin edə bilsəniz də, aşağıdakı şəkildə göstərildiyi kimi standart olaraq təyin edilmiş sancaqlar var.Əlavə olaraq, onları müəyyən bir layihə üçün uyğun və ya uyğun olmayan xüsusi xüsusiyyətləri olan sancaqlar var. Aşağıdakı cədvəldə hansı sancaqların giriş, çıxış kimi istifadə etmək daha yaxşı olduğu və hansılarından ehtiyatlı olmaq lazım olduğu göstərilir.
Yaşıl rənglə vurğulanan sancaqlar istifadə üçün uyğundur. Sarı rənglə vurğulananlar istifadə üçün uyğundur, lakin diqqət etməlisiniz, çünki onlar əsasən yükləmə zamanı gözlənilməz davranışa səbəb ola bilər. Qırmızı rənglə vurğulanan sancaqların giriş və ya çıxış kimi istifadə edilməsi tövsiyə edilmir.
GP IO | Giriş | Çıxış | Qeydlər |
0 | yuxarı çəkdi | OK | yükləmə zamanı PWM siqnalını çıxarır, yanıb-sönən rejimə daxil olmaq üçün LOW olmalıdır |
1 | TX pin | OK | yükləmə zamanı debug çıxışı |
2 | OK | OK | on-board LED-ə qoşulmuşdur, yanıb-sönən rejimə daxil olmaq üçün üzən və ya LOW olmalıdır |
3 | OK | RX pin | Yükləmə zamanı YÜKSƏK |
4 | OK | OK | |
5 | OK | OK | yükləmə zamanı PWM siqnalını verir, bağlama pin |
12 | OK | OK | çəkmə yüksək, bağlama pininə çəkildikdə uğursuz olur |
13 | OK | OK | |
14 | OK | OK | yükləmə zamanı PWM siqnalını çıxarır |
15 | OK | OK | yükləmə zamanı PWM siqnalını verir, bağlama pin |
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 | yalnız giriş | |
35 | OK | yalnız giriş | |
36 | OK | yalnız giriş | |
39 | OK | yalnız giriş |
ESP32 GPIO-ların və onun funksiyalarının daha ətraflı və dərin təhlili üçün oxumağa davam edin.
Yalnız pinləri daxil edin
34-dən 39-a qədər olan GPIO-lar GPI-lərdir – yalnız giriş pinləri. Bu sancaqlarda daxili açılan və ya aşağı açılan rezistorlar yoxdur. Onlar çıxış kimi istifadə edilə bilməz, ona görə də bu pinləri yalnız giriş kimi istifadə edin:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
ESP-WROOM-32-ə inteqrasiya olunmuş SPI flash
GPIO 6-dan GPIO 11-ə qədər bəzi ESP32 inkişaf lövhələrində ifşa olunur. Bununla belə, bu sancaqlar ESP-WROOM-32 çipindəki inteqrasiya olunmuş SPI flaşına qoşulur və digər istifadələr üçün tövsiyə edilmir. Beləliklə, layihələrinizdə bu sancaqlardan istifadə etməyin:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
Kapasitiv toxunma GPIO-ları
ESP32-də 10 daxili kapasitiv toxunma sensoru var. Bunlar insan dərisi kimi elektrik yükü olan hər şeydə dəyişiklikləri hiss edə bilər. Beləliklə, onlar GPIO-lara barmaqla toxunduqda yaranan dəyişiklikləri aşkar edə bilirlər. Bu sancaqlar asanlıqla kapasitiv yastıqlara birləşdirilə və mexaniki düymələri əvəz edə bilər. Kapasitiv toxunma sancaqları ESP32-ni dərin yuxudan oyatmaq üçün də istifadə edilə bilər. Həmin daxili toxunma sensorları bu GPIO-lara qoşulur:
- 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)
Analoqdan Rəqəmsal Çeviriciyə (ADC)
ESP32-də 18 x 12 bit ADC giriş kanalı var (ESP8266-da yalnız 1x 10 bit ADC var). Bunlar ADC və müvafiq kanallar kimi istifadə edilə bilən GPIO-lardır:
- 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)
Qeyd: Wi-Fi istifadə edildikdə ADC2 pinləri istifadə edilə bilməz. Beləliklə, əgər siz Wi-Fi istifadə edirsinizsə və ADC2 GPIO-dan dəyər əldə etməkdə çətinlik çəkirsinizsə, bunun əvəzinə ADC1 GPIO-dan istifadə etməyi düşünə bilərsiniz. Bu, probleminizi həll etməlidir.
ADC giriş kanalları 12 bitlik qətnaməyə malikdir. Bu o deməkdir ki, 0-dan 4095-ə qədər olan analoq oxunuşları əldə edə bilərsiniz, burada 0 0V və 4095-dən 3.3V-ə uyğundur. Siz həmçinin kod və ADC diapazonunda kanallarınızın həllini təyin edə bilərsiniz.
ESP32 ADC pinlərinin xətti davranışı yoxdur. Yəqin ki, siz 0 və 0.1V və ya 3.2 ilə 3.3V arasında fərqi ayıra bilməyəcəksiniz. ADC pinlərindən istifadə edərkən bunu yadda saxlamalısınız. Aşağıdakı şəkildə göstərilənə bənzər bir davranış alacaqsınız.Rəqəmsaldan Analoqa çevirici (DAC)
Rəqəmsal siqnalları analoq səsə çevirmək üçün ESP2-də 8 x 32 bit DAC kanalı vartage siqnal çıxışları. Bunlar DAC kanallarıdır:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIO-ları
ESP32-də RTC GPIO dəstəyi var. RTC aşağı güc alt sisteminə yönləndirilmiş GPIO-lar ESP32 dərin yuxu rejimində olduqda istifadə edilə bilər. Bu RTC GPIO-ları Ultra Low olduqda ESP32-ni dərin yuxudan oyatmaq üçün istifadə edilə bilər
Güc (ULP) birgə prosessoru işləyir. Aşağıdakı GPIO-lar xarici oyandırma mənbəyi kimi istifadə edilə bilər.
- 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 nəzarətçisi müxtəlif xüsusiyyətlərə malik PWM siqnalları yaratmaq üçün konfiqurasiya edilə bilən 16 müstəqil kanala malikdir. Çıxış kimi çıxış edə bilən bütün pinlər PWM sancaqları kimi istifadə edilə bilər (34-39 GPIO-lar PWM yarada bilməz).
PWM siqnalını təyin etmək üçün kodda bu parametrləri təyin etməlisiniz:
- Siqnal tezliyi;
- Vəzifə dövrü;
- PWM kanalı;
- Siqnal çıxarmaq istədiyiniz GPIO.
I2C
ESP32 iki I2C kanalına malikdir və istənilən pin SDA və ya SCL kimi təyin edilə bilər. ESP32-ni Arduino IDE ilə istifadə edərkən standart I2C pinləri bunlardır:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Tel kitabxanasından istifadə edərkən digər sancaqlardan istifadə etmək istəyirsinizsə, sadəcə zəng etməlisiniz:
Wire.begin(SDA, SCL);
SPI
Varsayılan olaraq, SPI üçün pin xəritəsi:
SPI | MOSI | MİSO | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Fasilələr
Bütün GPIO-lar fasilələr kimi konfiqurasiya edilə bilər.
Bağlayıcı sancaqlar
ESP32 çipində aşağıdakı bağlama sancaqları var:
- GPIO 0 (yükləmə rejiminə daxil olmaq üçün LOW olmalıdır)
- GPIO 2 (yükləmə zamanı üzən və ya LOW olmalıdır)
- GPIO 4
- GPIO 5 (yükləmə zamanı YÜKSƏK olmalıdır)
- GPIO 12 (yükləmə zamanı LOW olmalıdır)
- GPIO 15 (yükləmə zamanı YÜKSƏK olmalıdır)
Bunlar ESP32-ni yükləyici və ya yanıb-sönən rejimə qoymaq üçün istifadə olunur. Daxili USB/Serial olan əksər inkişaf lövhələrində bu pinlərin vəziyyətindən narahat olmaq lazım deyil. Lövhə sancaqları yanıb-sönmə və ya yükləmə rejimi üçün düzgün vəziyyətə qoyur. ESP32 Boot Mode Selection haqqında daha çox məlumatı burada tapa bilərsiniz.
Bununla belə, bu sancaqlara qoşulmuş periferiya qurğularınız varsa, yeni kodu yükləməyə çalışmaqda, ESP32-ni yeni proqram təminatı ilə yandırmaqda və ya lövhəni sıfırlamaqda çətinlik çəkə bilərsiniz. Əgər kəmər sancaqlarına qoşulmuş bəzi periferiya qurğularınız varsa və kodu yükləməkdə və ya ESP32-ni yandırmaqda problem yaşayırsınızsa, bu, həmin periferiyaların ESP32-nin düzgün rejimə daxil olmasına mane olması ola bilər. Sizi düzgün istiqamətə yönəltmək üçün Boot Mode Selection sənədlərini oxuyun. Sıfırladıqdan, yanıb-sönəndən və ya yükləndikdən sonra bu sancaqlar gözlənildiyi kimi işləyir.
Yükləmə zamanı YÜKSƏK sancaqlar
Bəzi GPIO-lar yükləmə və ya sıfırlama zamanı vəziyyətlərini YÜKSEK vəziyyətə dəyişdirir və ya PWM siqnallarını çıxarır.
Bu o deməkdir ki, bu GPIO-lara qoşulmuş çıxışlarınız varsa, ESP32 sıfırlandıqda və ya işə salındıqda gözlənilməz nəticələr əldə edə bilərsiniz.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6-dan GPIO 11-ə qədər (ESP32 inteqrasiya olunmuş SPI flash yaddaşına qoşulub – istifadə etmək tövsiyə edilmir).
- GPIO 14
- GPIO 15
Aktivləşdirin (EN)
Enable (EN) 3.3V tənzimləyicinin aktivləşdirmə pinidir. O, yuxarı çəkilib, ona görə də 3.3V tənzimləyicini söndürmək üçün yerə qoşulun. Bu o deməkdir ki, siz ESP32-ni yenidən işə salmaq üçün düyməyə qoşulmuş bu pindən istifadə edə bilərsiniz, məsələnample.
GPIO cərəyanı çəkildi
GPIO üçün çəkilən mütləq maksimum cərəyan ESP40 məlumat cədvəlindəki “Tövsiyə olunan əməliyyat şərtləri” bölməsinə uyğun olaraq 32mA-dır.
ESP32 Daxili Hall Effekt Sensoru
ESP32 həmçinin ətrafdakı maqnit sahəsindəki dəyişiklikləri aşkar edən daxili holl effekti sensoruna malikdir.
ESP32 Arduino IDE
Arduino IDE üçün Arduino IDE və onun proqramlaşdırma dilindən istifadə edərək ESP32-ni proqramlaşdırmağa imkan verən əlavə var. Bu dərslikdə sizə Windows, Mac OS X və ya Linux istifadə etməyinizdən asılı olmayaraq Arduino IDE-də ESP32 lövhəsini necə quraşdıracağınızı göstərəcəyik.
Tələblər: Arduino IDE quraşdırılıb
Bu quraşdırma proseduruna başlamazdan əvvəl kompüterinizdə Arduino IDE quraşdırılmış olmalıdır. Quraşdıra biləcəyiniz Arduino IDE-nin iki versiyası var: versiya 1 və versiya 2.
Arduino IDE-ni aşağıdakı linkə klikləməklə yükləyə və quraşdıra bilərsiniz: arduino.cc/en/Main/Software
Hansı Arduino IDE versiyasını tövsiyə edirik? Hazırda bəziləri var plugins ESP32 üçün (SPIFFS kimi Filesystem Uploader Plugin) hələ Arduino 2-də dəstəklənmir. Beləliklə, gələcəkdə SPIFFS plaginindən istifadə etmək niyyətindəsinizsə, köhnə versiya 1.8.X-i quraşdırmağı tövsiyə edirik. Onu tapmaq üçün sadəcə Arduino proqram səhifəsində aşağı diyirləməlisiniz.
Arduino IDE-də ESP32 Əlavəsinin quraşdırılması
ESP32 lövhəsini Arduino IDE-də quraşdırmaq üçün aşağıdakı təlimatları izləyin:
- Arduino IDE-də gedin File> Üstünlüklər
- “Əlavə Şura Meneceri”nə aşağıdakıları daxil edin URLs" sahəsi:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Sonra, "OK" düyməsini basın:Qeyd: Əgər siz artıq ESP8266 lövhələriniz varsa URL, ayıra bilərsiniz URLs vergüllə aşağıdakı kimi:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Lövhələr Menecerini açın. Alətlər > Lövhə > Lövhə meneceri…axtarın ESP32 and press install button for the “ESP32 by Espressif Systems“:
bu qədər. Bir neçə saniyədən sonra quraşdırılmalıdır.
Test kodunu yükləyin
ESP32 lövhəsini kompüterinizə qoşun. Arduino IDE açıq halda bu addımları yerinə yetirin:
- Alətlər > Lövhə menyusunda lövhənizi seçin (mənim vəziyyətimdə bu, ESP32 DEV Moduludur)
- Portu seçin (Arduino IDE-də COM Portunu görmürsünüzsə, CP210x USB-dən UART Bridge VCP Sürücülərinə quraşdırmalısınız):
- Aşağıdakı keçmişi açınample altında File > Məsamples > WiFi
(ESP32) > WiFiScan - Arduino IDE-də yeni eskiz açılır:
- Arduino IDE-də Yüklə düyməsini basın. Kod tərtib olunana və lövhənizə yüklənənə qədər bir neçə saniyə gözləyin.
- Hər şey gözlənildiyi kimi getdisə, "Yükləmə tamamlandı" görməlisiniz. mesaj.
- Arduino IDE Serial Monitoru 115200 ötürmə sürətində açın:
- ESP32 on-board Enable düyməsini basın və siz ESP32-nin yaxınlığında mövcud şəbəkələri görməlisiniz:
Problemlərin aradan qaldırılması
ESP32-yə yeni eskiz yükləməyə cəhd etsəniz və bu xəta mesajını alsanız, “Öldürücü xəta baş verdi: ESP32-yə qoşulmaq mümkün olmadı: Vaxt bitdi… Qoşulur…”. Bu o deməkdir ki, ESP32 yanıb-sönən/yükləmə rejimində deyil.
Düzgün lövhə adını və COM portunu seçdikdən sonra bu addımları yerinə yetirin:
ESP32 lövhənizdə “BOOT” düyməsini basıb saxlayın
- Eskizinizi yükləmək üçün Arduino IDE-də “Yüklə” düyməsini basın:
- "Qoşulur..." yazısını gördükdən sonra. Arduino IDE-də mesaj göndərmək üçün barmağınızı “BOOT” düyməsindən buraxın:
- Bundan sonra "Yükləmə tamamlandı" mesajını görməlisiniz
bu qədər. ESP32-də yeni eskiz işləməlidir. ESP32-ni yenidən başlatmaq və yeni yüklənmiş eskizi işə salmaq üçün “ENABLE” düyməsini basın.
Siz həmçinin hər dəfə yeni eskiz yükləmək istədiyiniz zaman həmin düymə ardıcıllığını təkrarlamalı olacaqsınız.
Layihə 1 ESP32 Girişlər Çıxışlar
Bu başlanğıc təlimatında siz Arduino IDE ilə ESP32-dən istifadə edərək düymə açarı kimi rəqəmsal girişləri necə oxumağı və LED kimi rəqəmsal çıxışları idarə etməyi öyrənəcəksiniz.
İlkin şərtlər
Arduino IDE istifadə edərək ESP32-ni proqramlaşdıracağıq. Beləliklə, davam etməzdən əvvəl ESP32 lövhələri əlavəsinin quraşdırıldığından əmin olun:
- Arduino IDE-də ESP32 Əlavəsinin quraşdırılması
ESP32 Rəqəmsal Çıxışlara Nəzarət
Əvvəlcə nəzarət etmək istədiyiniz GPIO-nu ÇIXIŞ kimi təyin etməlisiniz. pinMode() funksiyasından aşağıdakı kimi istifadə edin:
pinMode (GPIO, OUTPUT);
Rəqəmsal çıxışa nəzarət etmək üçün sadəcə olaraq arqument kimi qəbul edən digitalWrite() funksiyasından, istinad etdiyiniz GPIO (int nömrəsi) və ya YÜKSƏK və ya LOW vəziyyətini istifadə etməlisiniz.
digitalWrite (GPIO, STATE);
6-dan 11-ə qədər GPIO (inteqrasiya edilmiş SPI flaşına qoşulmuşdur) və GPIO 34, 35, 36 və 39 (yalnız daxil olan GPIO-lar) istisna olmaqla, bütün GPIO-lar çıxış kimi istifadə edilə bilər;
ESP32 GPIO-lar haqqında ətraflı məlumat əldə edin: ESP32 GPIO Referans Bələdçisi
ESP32 Rəqəmsal Girişləri Oxu
Əvvəlcə pinMode() funksiyasından istifadə edərək aşağıdakı kimi oxumaq istədiyiniz GPIO-nu INPUT kimi təyin edin:
pinMode (GPIO, INPUT);
Rəqəmsal girişi oxumaq üçün düymə kimi siz istinad etdiyiniz GPIO (int nömrəsi) arqument kimi qəbul edilən digitalRead() funksiyasından istifadə edirsiniz.
digitalRead (GPIO);
32-dan 6-ə qədər GPIO-lar (inteqrasiya edilmiş SPI flaşına qoşulmuş) istisna olmaqla, bütün ESP11 GPIO-lar giriş kimi istifadə edilə bilər.
ESP32 GPIO-lar haqqında ətraflı məlumat əldə edin: ESP32 GPIO Referans Bələdçisi
Layihə Example
Rəqəmsal girişləri və rəqəmsal çıxışları necə istifadə edəcəyinizi göstərmək üçün biz sadə bir layihə hazırlayacağıqampbir düymə və LED ilə. Aşağıdakı şəkildə göstərildiyi kimi, düymənin vəziyyətini oxuyacağıq və müvafiq olaraq LED-i yandıracağıq.
Tələb olunan hissələr
Budur, dövrə qurmaq üçün lazım olan hissələrin siyahısı:
- ESP32 DEVKIT V1
- 5 mm LED
- 220 Ohm müqavimət
- Düymə
- 10k Ohm rezistor
- Çörək lövhəsi
- Jumper telləri
Sxematik diaqram
Davam etməzdən əvvəl, bir LED və bir düymə ilə bir dövrə yığmaq lazımdır.
Biz LED-i GPIO 5-ə, düyməni isə GPIO-ya bağlayacağıq 4.Kod
Arduino IDE-də Project_1_ESP32_Inputs_Outputs.ino kodunu açınKodeks Necə İşləyir
Aşağıdakı iki sətirdə pin təyin etmək üçün dəyişənlər yaradırsınız:
Düymə GPIO 4-ə, LED isə GPIO 5-ə qoşulub. Arduino IDE-ni ESP32 ilə istifadə edərkən, 4 GPIO 4-ə, 5 isə GPIO 5-ə uyğun gəlir.
Sonra, düymə vəziyyətini saxlamaq üçün dəyişən yaradırsınız. Varsayılan olaraq, 0-dır (basılmır).
int düyməsiState = 0;
Setup()-da siz düyməni GİRİŞ kimi, LED-i isə ÇIXIŞ kimi işə salırsınız.
Bunun üçün siz istinad etdiyiniz pin-i qəbul edən pinMode() funksiyasından və rejimdən istifadə edirsiniz: INPUT və ya OUTPUT.
pinMode(düyməPin, INPUT);
pinMode(ledPin, OUTPUT);
Döngədə () düymənin vəziyyətini oxuduğunuz və LED-i müvafiq olaraq təyin etdiyiniz yerdir.
Növbəti sətirdə siz düymənin vəziyyətini oxuyursunuz və onu buttonState dəyişənində saxlayırsınız.
Daha əvvəl gördüyümüz kimi, siz digitalRead() funksiyasından istifadə edirsiniz.
buttonState = digitalRead(buttonPin);
Aşağıdakı if ifadəsi düymənin vəziyyətinin YÜKSƏK olub-olmadığını yoxlayır. Əgər belədirsə, o, ledPin və YÜKSƏK vəziyyətini arqument kimi qəbul edən digitalWrite() funksiyasından istifadə edərək LED-i yandırır.
əgər (buttonState == YÜKSƏK)Əgər düymənin vəziyyəti YÜKSƏK deyilsə, siz LED-i söndürəcəksiniz. DigitalWrite() funksiyasında LOW-u ikinci arqument kimi təyin edin.
Kodun yüklənməsi
Yükləmə düyməsini klikləməzdən əvvəl Alətlər > Lövhəyə keçin və lövhəni seçin: DOIT ESP32 DEVKIT V1 lövhəsi.
Alətlər > Porta gedin və ESP32-nin qoşulduğu COM portunu seçin. Sonra yükləmə düyməsini basın və “Yükləmə tamamlandı” mesajını gözləyin.Qeyd: Sazlama pəncərəsində çoxlu nöqtə (qoşulur…__…__) və “ESP32-yə qoşulmaq mümkün olmadı: Paket başlığını gözləmək vaxtı bitdi” mesajını görürsünüzsə, bu o deməkdir ki, siz ESP32-nin bortda BOOT düyməsini sıxmalısınız. nöqtələrdən sonra düymə
görünməyə başlayın. Problemlərin aradan qaldırılması
Nümayiş
Kodu yüklədikdən sonra dövrənizi sınayın. Düyməni basdığınız zaman LED yanmalıdır:Və buraxdığınız zaman söndürün:
Layihə 2 ESP32 Analoq Girişlər
Bu layihə Arduino IDE istifadə edərək ESP32 ilə analoq girişlərin necə oxunacağını göstərir.
Analoq oxu potensiometrlər və ya analoq sensorlar kimi dəyişən rezistorlardan dəyərləri oxumaq üçün faydalıdır.
Analoq Girişlər (ADC)
ESP32 ilə analoq dəyərin oxunması müxtəlif həcmləri ölçə biləcəyiniz deməkdirtage səviyyələri 0 V ilə 3.3 V arasındadır.
CildtagÖlçülən e daha sonra 0 ilə 4095 arasındakı qiymətə təyin edilir, burada 0 V 0-a, 3.3 V isə 4095-ə uyğundur. İstənilən həcmtage 0 V ilə 3.3 V arasında olanlar arasında müvafiq dəyər veriləcək.ADC qeyri-xəttidir
İdeal olaraq, ESP32 ADC pinlərindən istifadə edərkən xətti davranış gözləyərdiniz.
Lakin, bu baş vermir. Alacağınız şey aşağıdakı diaqramda göstərildiyi kimi bir davranışdır:Bu davranış o deməkdir ki, ESP32 3.3 V-ni 3.2 V-dan ayıra bilmir.
Hər iki cild üçün eyni dəyəri əldə edəcəksiniztages: 4095.
Eyni şey çox aşağı həcmdə olurtage dəyərləri: 0 V və 0.1 V üçün eyni dəyəri alacaqsınız: 0. ESP32 ADC pinlərindən istifadə edərkən bunu yadda saxlamalısınız.
analogRead() funksiyası
Arduino IDE-dən istifadə edərək ESP32 ilə analoq girişi oxumaq analogRead() funksiyasından istifadə etmək qədər sadədir. Oxumaq istədiyiniz GPIO-nu arqument kimi qəbul edir:
analogRead (GPIO);
DEVKIT V15board-da yalnız 1-i mövcuddur (30 GPIO-lu versiya).
ESP32 lövhəsinin pinoutunu tutun və ADC sancaqlarını tapın. Bunlar aşağıdakı şəkildə qırmızı haşiyə ilə vurğulanır.Bu analoq giriş pinləri 12 bitlik qətnaməyə malikdir. Bu o deməkdir ki, siz analoq girişi oxuduğunuz zaman onun diapazonu 0 ilə 4095 arasında dəyişə bilər.
Qeyd: Wi-Fi istifadə edildikdə ADC2 pinləri istifadə edilə bilməz. Beləliklə, Wi-Fi istifadə edirsinizsə və ADC2 GPIO-dan dəyər əldə etməkdə çətinlik çəkirsinizsə, bunun əvəzinə ADC1 GPIO-dan istifadə etməyi düşünə bilərsiniz, bu, probleminizi həll etməlidir.
Hər şeyin bir-birinə necə bağlandığını görmək üçün sadə bir keçmiş edəcəyikamppotensiometrdən analoq dəyəri oxumaq üçün.
Tələb olunan hissələr
Bunun üçün məsələnample, aşağıdakı hissələrə ehtiyacınız var:
- ESP32 DEVKIT V1 lövhəsi
- Potansiyometresi
- Çörək lövhəsi
- Jumper telləri
Sxematik
ESP32-yə bir potensiometr bağlayın. Potensiometrin orta sancağı GPIO 4-ə qoşulmalıdır. Siz aşağıdakı sxematik diaqramdan istinad kimi istifadə edə bilərsiniz.Kod
ESP32-ni Arduino IDE-dən istifadə edərək proqramlaşdıracağıq, ona görə də davam etməzdən əvvəl ESP32 əlavəsinin quraşdırıldığından əmin olun: (Əgər bu addımı artıq etmisinizsə, növbəti addıma keçə bilərsiniz.)
Arduino IDE-də ESP32 Əlavəsinin quraşdırılması
Arduino IDE-də Project_2_ESP32_Inputs_Outputs.ino kodunu açınBu kod sadəcə olaraq potensiometrdəki dəyərləri oxuyur və bu dəyərləri Serial Monitorda çap edir.
Kodda siz potensiometrin qoşulduğu GPIO-nu təyin etməklə başlayırsınız. Bu keçmişdəample, GPIO 4.Setup()-da 115200 ötürmə sürətində serial rabitəni işə salın.
Loop()-da potPin-dən analoq girişi oxumaq üçün analogRead() funksiyasından istifadə edin.
Nəhayət, seriyalı monitorda potensiometrdən oxunan dəyərləri çap edin.
Təqdim olunan kodu ESP32-yə yükləyin. Alətlər menyusunda düzgün lövhənin və COM portunun seçildiyinə əmin olun.
Ex sınaqdan keçirilirample
Kodu yüklədikdən və ESP32 sıfırlama düyməsini basdıqdan sonra Serial Monitoru 115200 ötürmə sürətində açın. Potensiometri fırladın və dəyərlərin dəyişməsinə baxın.Alacağınız maksimum dəyər 4095, minimum dəyər isə 0-dır.
Sarma
Bu yazıda siz Arduino IDE ilə ESP32-dən istifadə edərək analoq girişləri necə oxumağı öyrəndiniz. Xülasə:
- ESP32 DEVKIT V1 DOIT lövhəsi (30 pinli versiya) analoq girişləri oxumaq üçün istifadə edə biləcəyiniz 15 ADC pininə malikdir.
- Bu sancaqlar 12 bit ayırdetmə qabiliyyətinə malikdir, yəni 0-dan 4095-ə qədər dəyərlər əldə edə bilərsiniz.
- Arduino IDE-də dəyəri oxumaq üçün sadəcə analogRead() funksiyasından istifadə edirsiniz.
- ESP32 ADC pinlərinin xətti davranışı yoxdur. Yəqin ki, siz 0 və 0.1V və ya 3.2 ilə 3.3V arasında fərqi ayıra bilməyəcəksiniz. ADC pinlərindən istifadə edərkən bunu yadda saxlamalısınız.
Layihə 3 ESP32 PWM (Analoq Çıxış)
Bu dərslikdə sizə Arduino IDE-dən istifadə edərək ESP32 ilə PWM siqnallarının necə yaradılacağını göstərəcəyik. Keçmiş kimiample biz ESP32-nin LED PWM nəzarətçisindən istifadə edərək LED-i tündləşdirən sadə bir dövrə quracağıq.ESP32 LED PWM nəzarətçisi
ESP32 müxtəlif xüsusiyyətlərə malik PWM siqnalları yaratmaq üçün konfiqurasiya edilə bilən 16 müstəqil kanala malik LED PWM nəzarətçisinə malikdir.
Arduino IDE-dən istifadə edərək PWM ilə LED-i söndürmək üçün aşağıdakı addımları yerinə yetirməli olacaqsınız:
- Əvvəlcə bir PWM kanalı seçməlisiniz. 16-dan 0-ə qədər 15 kanal var.
- Sonra PWM siqnal tezliyini təyin etməlisiniz. Bir LED üçün 5000 Hz tezliyindən istifadə etmək yaxşıdır.
- Siz həmçinin siqnalın iş dövrü həllini təyin etməlisiniz: 1 ilə 16 bit arasında qətnaməniz var. Biz 8 bit ayırdetmədən istifadə edəcəyik, yəni siz 0-dan 255-ə qədər olan dəyərdən istifadə edərək LED parlaqlığını idarə edə bilərsiniz.
- Sonra, siqnalın hansı GPIO və ya GPIO-larda görünəcəyini təyin etməlisiniz. Bunun üçün aşağıdakı funksiyadan istifadə edəcəksiniz:
ledcAttachPin(GPIO, kanal)
Bu funksiya iki arqument qəbul edir. Birincisi, siqnalı çıxaracaq GPIO, ikincisi isə siqnal yaradacaq kanaldır. - Nəhayət, PWM istifadə edərək LED parlaqlığını idarə etmək üçün aşağıdakı funksiyadan istifadə edirsiniz:
ledcWrite(kanal, vəzifə dövrü)
Bu funksiya PWM siqnalını yaradan kanalı və iş dövrünü arqument kimi qəbul edir.
Tələb olunan hissələr
Bu təlimatı izləmək üçün bu hissələrə ehtiyacınız var:
- ESP32 DEVKIT V1 lövhəsi
- 5mm LED
- 220 Ohm müqavimət
- Çörək lövhəsi
- Jumper telləri
Sxematik
Aşağıdakı sxematik diaqramda olduğu kimi ESP32-yə bir LED naqil edin. LED GPIO-ya qoşulmalıdır 4.Qeyd: siz istədiyiniz hər hansı bir pin istifadə edə bilərsiniz, yalnız bir çıxış kimi çıxış edə bilər. Çıxış kimi çıxış edə bilən bütün pinlər PWM sancaqları kimi istifadə edilə bilər. ESP32 GPIO-ları haqqında ətraflı məlumat üçün oxuyun: ESP32 Pinout Reference: Hansı GPIO pinlərindən istifadə etməlisiniz?
Kod
ESP32-ni Arduino IDE-dən istifadə edərək proqramlaşdıracağıq, ona görə də davam etməzdən əvvəl ESP32 əlavəsinin quraşdırıldığından əmin olun: (Əgər bu addımı artıq etmisinizsə, növbəti addıma keçə bilərsiniz.)
Arduino IDE-də ESP32 Əlavəsinin quraşdırılması
Arduino IDE-də Project_3_ESP32_PWM.ino kodunu açınSiz LED-in qoşulduğu pin təyin etməklə başlayırsınız. Bu halda LED GPIO 4-ə əlavə olunur.
Sonra PWM siqnal xüsusiyyətlərini təyin edirsiniz. Siz 5000 Hz tezliyi təyin edirsiniz, siqnal yaratmaq üçün 0 kanalını seçirsiniz və 8 bitlik qətnamə təyin edirsiniz. Fərqli PWM siqnalları yaratmaq üçün bunlardan fərqli digər xassələri seçə bilərsiniz.
Setup()-da siz LED PWM-ni arqumentlər kimi qəbul edən ledcSetup() funksiyasını, ledChannel-i, tezliyi və qətnaməni aşağıdakı kimi istifadə edərək əvvəllər təyin etdiyiniz xüsusiyyətlərlə konfiqurasiya etməlisiniz:
Sonra, siqnal alacağınız GPIO-nu seçməlisiniz. Bunun üçün siqnalı almaq istədiyiniz GPIO-nu və siqnalı yaradan kanalı arqument kimi qəbul edən ledcAttachPin() funksiyasından istifadə edin. Bu keçmişdəample, biz GPIO 4-ə uyğun gələn ledPin GPIO-da siqnal alacağıq. Siqnal yaradan kanal 0 kanalına uyğun gələn ledChannel-dir.
Döngüdə LED parlaqlığını artırmaq üçün iş dövrünü 0 ilə 255 arasında dəyişəcəksiniz.
Və sonra, parlaqlığı azaltmaq üçün 255 ilə 0 arasında.
LED-in parlaqlığını təyin etmək üçün sadəcə olaraq siqnalı yaradan kanalı və iş dövrünü arqument kimi qəbul edən ledcWrite() funksiyasından istifadə etməlisiniz.
8-bit ayırdetmədən istifadə etdiyimiz üçün iş dövrü 0-dan 255-ə qədər olan dəyərdən istifadə etməklə idarə olunacaq. Qeyd edək ki, ledcWrite() funksiyasında biz GPIO-dan deyil, siqnalı yaradan kanaldan istifadə edirik.
Ex sınaqdan keçirilirample
Kodu ESP32-yə yükləyin. Düzgün lövhə və COM portunu seçdiyinizə əmin olun. Dövrənizə baxın. Parlaqlığı artıran və azaldan bir dimmer LED olmalıdır.
Layihə 4 ESP32 PIR Hərəkət Sensoru
Bu layihə PIR hərəkət sensorundan istifadə edərək ESP32 ilə hərəkətin necə aşkar ediləcəyini göstərir. Siqnal hərəkət aşkar edildikdə həyəcan siqnalı verəcək və əvvəlcədən təyin edilmiş vaxt ərzində (məsələn, 4 saniyə) heç bir hərəkət aşkarlanmadıqda siqnalı dayandıracaq.
HC-SR501 Hərəkət Sensoru Necə İşləyir
.HC-SR501 sensorunun iş prinsipi hərəkət edən obyektdə infraqırmızı şüalanmanın dəyişməsinə əsaslanır. HC-SR501 sensoru tərəfindən aşkarlanması üçün obyekt iki tələbə cavab verməlidir:
- Obyekt infraqırmızı yolla yayılır.
- Obyekt hərəkət edir və ya titrəyir
Beləliklə:
Əgər obyekt infraqırmızı şüa yayırsa, lakin Hərəkət etmirsə (məsələn, insan hərəkətsiz dayanırsa), bu sensor tərəfindən aşkar edilmir.
Əgər obyekt hərəkət edirsə, lakin infraqırmızı şüa yaymırsa (məsələn, robot və ya avtomobil), o, sensor tərəfindən aşkar olunmur.
Taymerləri təqdim edirik
Bu keçmişdəample biz də taymerləri təqdim edəcəyik. Hərəkət aşkar edildikdən sonra LED-in əvvəlcədən müəyyən edilmiş bir neçə saniyə ərzində yanmasını istəyirik. Kodunuzu bloklayan və müəyyən saniyələr ərzində başqa bir şey etməyə imkan verməyən gecikmə () funksiyasından istifadə etmək əvəzinə, biz taymerdən istifadə etməliyik.gecikmə () funksiyası
Delay() funksiyası ilə tanış olmalısınız, çünki o, geniş istifadə olunur. Bu funksiyadan istifadə etmək olduqca sadədir. Arqument kimi tək int nömrəsini qəbul edir.
Bu rəqəm proqramın növbəti kod sətirinə keçənə qədər gözləməli olduğu vaxtı millisaniyələrlə ifadə edir.Gecikmə (1000) etdiyiniz zaman proqramınız həmin sətirdə 1 saniyə dayanır.
delay() bloklama funksiyasıdır. Bloklama funksiyaları proqramın həmin tapşırıq tamamlanana qədər başqa bir şey etməsinə mane olur. Əgər eyni vaxtda bir neçə tapşırığın yerinə yetirilməsi lazımdırsa, siz gecikdirmə () funksiyasından istifadə edə bilməzsiniz.
Əksər layihələr üçün gecikmələrdən istifadə etməməli və yerinə taymerlərdən istifadə etməlisiniz.
millis() funksiyası
Millis() adlı funksiyadan istifadə edərək, proqramın ilk başladığı gündən keçən millisaniyələrin sayını qaytara bilərsiniz.Bu funksiya niyə faydalıdır? Çünki bəzi riyaziyyatdan istifadə edərək, kodunuzu bloklamadan nə qədər vaxt keçdiyini asanlıqla yoxlaya bilərsiniz.
Tələb olunan hissələr
Bu təlimatı izləmək üçün sizə aşağıdakı hissələr lazımdır
- ESP32 DEVKIT V1 lövhəsi
- PIR hərəkət sensoru (HC-SR501)
- Aktiv Buzzer
- Jumper telləri
- Çörək lövhəsi
SxematikQeyd: İşçi cildtagHC-SR501-in e-si 5V-dir. Onu gücləndirmək üçün Vin pinindən istifadə edin.
Kod
Bu dərsliyə davam etməzdən əvvəl Arduino IDE-də ESP32 əlavəsi quraşdırılmalıdır. ESP32-ni Arduino IDE-də quraşdırmaq üçün aşağıdakı dərsliklərdən birini izləyin, əgər hələ də quraşdırmamısınızsa. (Əgər bu addımı artıq etmisinizsə, növbəti addıma keçə bilərsiniz.)
Arduino IDE-də ESP32 Əlavəsinin quraşdırılması
Arduino IDE-də Project_4_ESP32_PIR_Motion_Sensor.ino kodunu açın.
Nümayiş
Kodu ESP32 boardunuza yükləyin. Düzgün lövhənin və COM portunun seçildiyinə əmin olun. Kodun istinad addımlarını yükləyin.
Serial Monitoru 115200 ötürmə sürətində açın.Əlinizi PIR sensorunun qarşısında hərəkət etdirin. Siqnal aktiv olmalıdır və “Hərəkət aşkarlandı! Siqnal siqnalı” mesajı Serial Monitorda çap olunur.
4 saniyədən sonra səs siqnalı sönməlidir.
Layihə 5 ESP32 Switch Web Server
Bu layihədə siz müstəqil yaradacaqsınız web Arduino IDE proqramlaşdırma mühitindən istifadə edərək çıxışları (iki LED) idarə edən ESP32 ilə server. The web server mobil cavabdehdir və yerli şəbəkədə brauzer kimi istənilən cihazla daxil olmaq olar. Sizə necə yaratacağınızı göstərəcəyik web server və kodun addım-addım necə işlədiyi.
Layihə bitdiview
Birbaşa layihəyə keçməzdən əvvəl, bizim nə olduğumuzu qeyd etmək vacibdir web server edəcək, belə ki, daha sonra addımları izləmək daha asan olsun.
- The web quracağınız server ESP32 GPIO 26 və GPIO 27-yə qoşulmuş iki LED-i idarə edir;
- ESP32-yə daxil ola bilərsiniz web yerli şəbəkədəki brauzerdə ESP32 IP ünvanını yazaraq server;
- Üzərinizdəki düymələri klikləməklə web serverdə hər bir LED-in vəziyyətini dərhal dəyişə bilərsiniz.
Tələb olunan hissələr
Bu dərslik üçün sizə aşağıdakı hissələr lazımdır:
- ESP32 DEVKIT V1 lövhəsi
- 2x 5mm LED
- 2x 200 Ohm rezistor
- Çörək lövhəsi
- Jumper telləri
Sxematik
Dövrə qurmaqla başlayın. Aşağıdakı sxematik diaqramda göstərildiyi kimi iki LED-i ESP32-yə qoşun - biri GPIO 26-ya, digəri isə GPIO 27-yə qoşulmuşdur.
Qeyd: Biz 32 pinli ESP36 DEVKIT DOIT lövhəsindən istifadə edirik. Dövrəni yığmadan əvvəl, istifadə etdiyiniz lövhənin pinoutunu yoxladığınızdan əmin olun.Kod
Burada ESP32 yaradan kodu təqdim edirik web server. Project_5_ESP32_Switch _ kodunu açınWeb_Server.ino arduino IDE-də, lakin onu hələ yükləməyin. Bunun sizin üçün işləməsi üçün bəzi dəyişikliklər etməlisiniz.
ESP32-ni Arduino IDE-dən istifadə edərək proqramlaşdıracağıq, ona görə də davam etməzdən əvvəl ESP32 əlavəsinin quraşdırıldığından əmin olun: (Əgər bu addımı artıq etmisinizsə, növbəti addıma keçə bilərsiniz.)
Arduino IDE-də ESP32 Əlavəsinin quraşdırılması
Şəbəkə Etibarnamələrinizin qurulması
Siz şəbəkə etimadnaməsininizlə aşağıdakı sətirləri dəyişdirməlisiniz: SSID və parol. Dəyişiklikləri harada etməyiniz barədə kod yaxşı şərh edilmişdir.Kodun yüklənməsi
İndi kodu yükləyə bilərsiniz və web server dərhal işləyəcək.
Kodu ESP32-yə yükləmək üçün növbəti addımları yerinə yetirin:
- ESP32 lövhənizi kompüterinizə qoşun;
- Arduino IDE-də Alətlər > Lövhədə lövhənizi seçin (bizim halda biz ESP32 DEVKIT DOIT lövhəsindən istifadə edirik);
- Alətlər > Port bölməsində COM portunu seçin.
- Arduino IDE-də Yüklə düyməsini basın və kodun tərtib edilməsi və lövhənizə yüklənməsi zamanı bir neçə saniyə gözləyin.
- “Yükləmə tamamlandı” mesajını gözləyin.
ESP IP ünvanının tapılması
Kodu yüklədikdən sonra Serial Monitoru 115200 ötürmə sürətində açın.ESP32 EN düyməsini (sıfırla) basın. ESP32 Wi-Fi şəbəkəsinə qoşulur və Serial Monitorda ESP IP ünvanını verir. Həmin IP ünvanını kopyalayın, çünki ESP32-yə daxil olmaq üçün bu lazımdır web server.
daxil olmaq Web Server
daxil olmaq üçün web server, brauzerinizi açın, ESP32 IP ünvanını yapışdırın və aşağıdakı səhifəni görəcəksiniz.
Qeyd: Brauzeriniz və ESP32 eyni LAN şəbəkəsinə qoşulmalıdır.Serial Monitora nəzər salsanız, fonda nə baş verdiyini görə bilərsiniz. ESP yeni müştəridən HTTP sorğusu alır (bu halda brauzeriniz).
HTTP sorğusu ilə bağlı digər məlumatları da görə bilərsiniz.
Nümayiş
İndi siz olub olmadığını yoxlaya bilərsiniz web server düzgün işləyir. LEDləri idarə etmək üçün düymələri basın.Eyni zamanda, arxa planda nə baş verdiyini görmək üçün Serial Monitora nəzər sala bilərsiniz. məsələnample, GPIO 26-nı AÇMAQ üçün düyməni kliklədiyiniz zaman ESP32 /26/on-da sorğu alır. URL.
ESP32 həmin sorğunu qəbul etdikdə, GPIO 26-a əlavə edilmiş LED-i ON vəziyyətinə çevirir və vəziyyətini cihazda yeniləyir. web səhifə.
GPIO 27 üçün düymə oxşar şəkildə işləyir. Düzgün işlədiyini yoxlayın.
Kodeks Necə İşləyir
Bu bölmədə onun necə işlədiyini görmək üçün koda daha yaxından nəzər salacağıq.
Etməli olduğunuz ilk şey WiFi kitabxanasını daxil etməkdir.Daha əvvəl qeyd edildiyi kimi, ssid və parolunuzu qoşa dırnaq içərisində aşağıdakı sətirlərə daxil etməlisiniz.
Sonra, siz özünüz təyin edin web serverdən 80 portuna.
Aşağıdakı sətir HTTP sorğusunun başlığını saxlamaq üçün dəyişən yaradır:
Sonra, çıxışlarınızın cari vəziyyətini saxlamaq üçün köməkçi dəyişənlər yaradırsınız. Daha çox çıxış əlavə etmək və onun vəziyyətini saxlamaq istəyirsinizsə, daha çox dəyişən yaratmalısınız.
Siz həmçinin çıxışlarınızın hər birinə GPIO təyin etməlisiniz. Burada biz GPIO 26 və GPIO 27-dən istifadə edirik. Siz istənilən digər uyğun GPIO-lardan istifadə edə bilərsiniz.
quraşdırma()
İndi quraşdırmaya () keçək. Birincisi, sazlama məqsədləri üçün 115200 ötürmə sürətində serial rabitəyə başlayırıq.Siz həmçinin GPIO-larınızı ÇIXIŞ kimi təyin edirsiniz və onları LOW olaraq təyin edirsiniz.
Aşağıdakı sətirlər WiFi.begin (ssid, parol) ilə Wi-Fi bağlantısını başlayır, uğurlu əlaqəni gözləyin və Serial Monitorda ESP IP ünvanını çap edin.
loop()
Döngüdə() biz yeni müştəri ilə əlaqə qurduqda nə baş verdiyini proqramlaşdırırıq web server.
ESP32 həmişə aşağıdakı xətt ilə gələn müştəriləri dinləyir:Müştəridən sorğu qəbul edildikdə, daxil olan məlumatları yadda saxlayacağıq. Müştəri bağlı qaldığı müddətcə aşağıdakı while döngüsü işləyəcək. Nə etdiyinizi dəqiq bilmirsinizsə, kodun aşağıdakı hissəsini dəyişdirməyi məsləhət görmürük.
if və else ifadələrinin növbəti bölməsi sizin hansı düymənin basıldığını yoxlayır web səhifə və çıxışlara müvafiq olaraq nəzarət edir. Daha əvvəl də gördüyümüz kimi, biz fərqli bir sorğu edirik URLs basılan düymədən asılı olaraq.
məsələnample, əgər siz GPIO 26 ON düyməsini basmısınızsa, ESP32 /26/ON-da sorğu qəbul edir. URL (bu məlumatı Serial Monitordakı HTTP başlığında görə bilərik). Beləliklə, başlıqda GET /26/on ifadəsinin olub olmadığını yoxlaya bilərik. Əgər o varsa, biz output26state dəyişənini ON vəziyyətinə dəyişdiririk və ESP32 LED-i yandırır.
Bu, digər düymələr üçün də eyni şəkildə işləyir. Beləliklə, daha çox çıxış əlavə etmək istəyirsinizsə, kodun bu hissəsini onları daxil etmək üçün dəyişdirməlisiniz.
HTML göstərilir web səhifə
Etməli olduğunuz növbəti şey yaratmaqdır web səhifə. ESP32 qurmaq üçün bəzi HTML kodu ilə brauzerinizə cavab göndərəcək web səhifə.
The web səhifə bu ifadəli client.println() istifadə edərək müştəriyə göndərilir. Müştəriyə arqument olaraq göndərmək istədiyinizi daxil etməlisiniz.
Göndərməli olduğumuz ilk şey həmişə HTML göndərdiyimizi göstərən aşağıdakı sətirdir.Sonra, aşağıdakı xətt edir web istənilən halda cavab verən səhifə web brauzer.
Və aşağıdakılar favikonda sorğuların qarşısını almaq üçün istifadə olunur. - Bu xətt üçün narahat olmaq lazım deyil.
Styling Web Səhifə
Sonra, düymələri və düymələri tərtib etmək üçün bəzi CSS mətnimiz var web səhifənin görünüşü.
Biz Helvetica şriftini seçirik, blok şəklində göstəriləcək məzmunu müəyyənləşdiririk və mərkəzə düzülürük.Düymələrimizi #4CAF50 rəngi, haşiyəsiz, ağ rəngli mətn və bu dolgu ilə tərtib edirik: 16px 40px. Biz həmçinin mətn dekorasiyasını heç biri kimi təyin etdik, şriftin ölçüsünü, kənarı və kursoru göstəriciyə təyin etdik.
Biz həmçinin ikinci düymənin üslubunu daha əvvəl müəyyən etdiyimiz düymənin bütün xüsusiyyətləri ilə, lakin fərqli rənglə müəyyən edirik. Bu söndürmə düyməsinin üslubu olacaq.
təyin edilməsi Web Səhifənin Birinci Başlığı
Növbəti sətirdə ilk başlığınızı təyin edə bilərsiniz web səhifə. Burada “ESP32 Web Server”, lakin siz bu mətni istədiyinizə dəyişə bilərsiniz.Düymələr və müvafiq vəziyyət göstərilir
Sonra, GPIO 26 cari vəziyyətini göstərmək üçün bir paraqraf yazırsınız. Gördüyünüz kimi, biz output26State dəyişənindən istifadə edirik ki, bu dəyişən dəyişdikdə vəziyyət dərhal yenilənir.Sonra, GPIO-nun cari vəziyyətindən asılı olaraq yandırma və ya söndürmə düyməsini göstəririk. GPIO-nun cari vəziyyəti sönükdürsə, biz ON düyməsini, yoxsa, OFF düyməsini göstəririk.
Eyni proseduru GPIO 27 üçün istifadə edirik.
Bağlantının bağlanması
Nəhayət, cavab başa çatdıqda, başlıq dəyişənini təmizləyirik və client.stop() ilə müştəri ilə əlaqəni dayandırırıq.
Sarma
Bu dərslikdə sizə necə quracağınızı göstərdik web ESP32 ilə server. Biz sizə sadə keçmişi göstərdikample ki, iki LED-i idarə edir, lakin ideya həmin LED-ləri rele və ya idarə etmək istədiyiniz hər hansı digər çıxışla əvəz etməkdir.
Layihə 6 RGB LED Web Server
Bu layihədə biz sizə RGB LED-i ESP32 lövhəsi ilə uzaqdan necə idarə edəcəyinizi göstərəcəyik web rəng seçicisi olan server.
Layihə bitdiview
Başlamazdan əvvəl bu layihənin necə işlədiyini görək:
- ESP32 web server rəng seçicisini göstərir.
- Rəng seçdiyiniz zaman brauzeriniz a.-da sorğu göndərir URL seçilmiş rəngin R, G və B parametrlərini ehtiva edir.
- ESP32 sorğunu qəbul edir və hər bir rəng parametri üçün dəyəri bölür.
- Sonra, RGB LED-i idarə edən GPIO-lara müvafiq dəyərlə PWM siqnalı göndərir.
RGB LED-lər necə işləyir?
Ümumi katodlu RGB LED-də hər üç LED mənfi əlaqəni (katod) bölüşür. Dəstə daxil olanların hamısı ümumi katodlu RGB-dir.Fərqli rəngləri necə yaratmaq olar?
RGB LED ilə, əlbəttə ki, qırmızı, yaşıl və mavi işıq yarada bilərsiniz və hər bir LED-in intensivliyini konfiqurasiya etməklə digər rəngləri də istehsal edə bilərsiniz.
məsələnample, sırf mavi işıq yaratmaq üçün mavi LED-i ən yüksək intensivliyə, yaşıl və qırmızı LED-ləri isə ən aşağı intensivliyə təyin edərdiniz. Ağ işıq üçün hər üç LED-i ən yüksək intensivliyə təyin edərdiniz.
Rənglərin qarışdırılması
Digər rənglər yaratmaq üçün üç rəngi müxtəlif intensivliklərdə birləşdirə bilərsiniz. Hər bir LED-in intensivliyini tənzimləmək üçün PWM siqnalından istifadə edə bilərsiniz.
LED-lər bir-birinə çox yaxın olduğu üçün gözlərimiz üç rəngin ayrı-ayrılıqda deyil, rənglərin birləşməsinin nəticəsini görür.
Rəngləri necə birləşdirəcəyinizə dair fikir əldə etmək üçün aşağıdakı cədvələ nəzər salın.
Bu, ən sadə rəng qarışdırma cədvəlidir, lakin sizə onun necə işlədiyini və müxtəlif rənglərin necə istehsal olunacağı barədə fikir verir.Tələb olunan hissələr
Bu layihə üçün sizə aşağıdakı hissələr lazımdır:
- ESP32 DEVKIT V1 lövhəsi
- RGB LED
- 3x 220 ohm rezistorlar
- Jumper telləri
- Çörək lövhəsi
SxematikKod
ESP32-ni Arduino IDE-dən istifadə edərək proqramlaşdıracağıq, ona görə də davam etməzdən əvvəl ESP32 əlavəsinin quraşdırıldığından əmin olun: (Əgər bu addımı artıq etmisinizsə, növbəti addıma keçə bilərsiniz.)
- Arduino IDE-də ESP32 Əlavəsinin quraşdırılması
Dövrəni yığdıqdan sonra kodu açın
Layihə_6_RGB_LED_WebArduino IDE-də _Server.ino.
Kodu yükləməzdən əvvəl ESP-nin yerli şəbəkənizə qoşula bilməsi üçün şəbəkə etimadnaməsini daxil etməyi unutmayın.Kod necə işləyir
ESP32 eskizi WiFi.h kitabxanasından istifadə edir.Aşağıdakı sətirlər sorğudan R, G və B parametrlərini saxlamaq üçün sətir dəyişənlərini müəyyənləşdirir.
Növbəti dörd dəyişən daha sonra HTTP sorğusunu deşifrə etmək üçün istifadə olunur.
R, G və B parametrlərini idarə edəcək GPIO-lar üçün üç dəyişən yaradın. Bu halda biz GPIO 13, GPIO 12 və GPIO 14-dən istifadə edirik.
Bu GPIO-lar PWM siqnallarını çıxarmalıdır, buna görə də əvvəlcə PWM xüsusiyyətlərini konfiqurasiya etməliyik. PWM siqnal tezliyini 5000 Hz-ə təyin edin. Sonra hər rəng üçün bir PWM kanalı birləşdirin
Və nəhayət, PWM kanallarının qətnaməsini 8 bit olaraq təyin edin
Quraşdırmada() PWM xassələrini PWM kanallarına təyin edin
PWM kanallarını müvafiq GPIO-lara əlavə edin
Aşağıdakı kod bölməsində rəng seçiciniz göstərilir web səhifəni açır və seçdiyiniz rəngə əsasən sorğu göndərir.
Rəng seçdiyiniz zaman aşağıdakı formatda sorğu alırsınız.
Beləliklə, R, G və B parametrlərini əldə etmək üçün bu sətri bölmək lazımdır. Parametrlər redString, greenString və blueString dəyişənlərində saxlanılır və 0 ilə 255 arasında dəyərlər ola bilər.ESP32 ilə zolağı idarə etmək üçün ledcWrite() funksiyasından istifadə edərək HTTP-dən deşifrə edilmiş dəyərlərlə PWM siqnalları yaradın. xahiş.
Qeyd: ESP32 ilə PWM haqqında daha çox öyrənin: Project 3 ESP32 PWM(Analoq Çıxış)
ESP8266 ilə zolağı idarə etmək üçün sadəcə istifadə etməliyik
HTPP sorğusundan deşifr edilmiş dəyərlərlə PWM siqnalları yaratmaq üçün analogWrite() funksiyası.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Dəyərləri sətir dəyişənində əldə etdiyimiz üçün toInt() metodundan istifadə edərək onları tam ədədlərə çevirməliyik.
Nümayiş
Şəbəkə etimadnaməsini daxil etdikdən sonra düzgün lövhəni və COM portunu seçin və kodu ESP32.Yükləmə kodu istinad addımlarınıza yükləyin.
Yüklədikdən sonra Serial Monitoru 115200 ötürmə sürətində açın və ESP Enable/Reset düyməsini basın. Lövhənin IP ünvanını almalısınız.Brauzerinizi açın və ESP IP ünvanını daxil edin. İndi RGB LED üçün rəng seçmək üçün rəng seçicidən istifadə edin.
Sonra rəngin qüvvəyə minməsi üçün "Rəng dəyişdir" düyməsini sıxmalısınız.RGB LED-i söndürmək üçün qara rəngi seçin.
Ən güclü rənglər (rəng seçicinin yuxarı hissəsində) daha yaxşı nəticələr verəcəkdir.
Layihə 7 ESP32 Relay Web Server
ESP32 ilə reledən istifadə AC məişət cihazlarını uzaqdan idarə etmək üçün əla yoldur. Bu dərslik ESP32 ilə rele modulunu necə idarə etməyi izah edir.
Biz rele modulunun necə işlədiyinə, releyi ESP32-yə necə qoşacağına və relenin necə qurulacağına baxacağıq. web releyi uzaqdan idarə etmək üçün server.
Rele ilə tanış olun
Röle elektriklə idarə olunan açardır və hər hansı digər açar kimi, cərəyanın keçib-keçməməsinə imkan verən açıla və ya söndürülə bilər. Aşağı səslə idarə oluna bilərtages, ESP3.3 GPIO-lar tərəfindən təmin edilən 32V kimi və bizə yüksək səsi idarə etməyə imkan verir.tag12V, 24V və ya elektrik cərəyanı kimitage (Avropada 230V və ABŞ-da 120V).Sol tərəfdə yüksək səsi birləşdirmək üçün üç yuvadan ibarət iki dəst vartages və sağ tərəfdəki sancaqlar (aşağı cildtage) ESP32 GPIO-lara qoşulun.
Mains Voltage ƏlaqələrƏvvəlki fotoşəkildə göstərilən rele modulunun hər birində üç yuva olan iki bağlayıcı var: ümumi (COM), Normalda Bağlı (NC) və Normal Açıq (NO).
- COM: nəzarət etmək istədiyiniz cərəyanı birləşdirin (şəbəkə ctagvə).
- NC (Normal olaraq Qapalı): normal olaraq qapalı konfiqurasiya siz relenin defolt olaraq bağlanmasını istədiyiniz zaman istifadə olunur. NC COM sancaqları bağlıdır, yəni dövrəni açmaq və cərəyan axını dayandırmaq üçün ESP32-dən rele moduluna siqnal göndərməsəniz, cərəyan axır.
- NO (Normal Açıq): normal açıq konfiqurasiya əksinə işləyir: NO və COM pinləri arasında heç bir əlaqə yoxdur, ona görə də ESP32-dən dövrəni bağlamaq üçün siqnal göndərməyincə dövrə pozulur.
Nəzarət sancaqlarıAşağı həcmlitage tərəfində dörd sancaq dəsti və üç sancaq dəsti var. Birinci dəst modulu gücləndirmək üçün VCC və GND-dən və müvafiq olaraq alt və yuxarı releləri idarə etmək üçün giriş 1 (IN1) və giriş 2 (IN2)-dən ibarətdir.
Əgər rele modulunuz yalnız bir kanala malikdirsə, sizdə yalnız bir IN pin olacaq. Dörd kanalınız varsa, dörd IN pininiz olacaq və s.
IN pinlərinə göndərdiyiniz siqnal, relenin aktiv olub olmadığını müəyyənləşdirir. Giriş təxminən 2V-dən aşağı düşdükdə rele işə salınır. Bu o deməkdir ki, sizdə aşağıdakı ssenarilər olacaq:
- Normalda Qapalı konfiqurasiya (NC):
- YÜKSƏK siqnal - cərəyan axır
- LOW siqnal - cərəyan axmır
- Normalda açıq konfiqurasiya (NO):
- YÜKSƏK siqnal - cərəyan axmır
- LOW siqnal - axındakı cərəyan
Cərəyanın çox vaxt axması lazım olduqda və yalnız bəzən onu dayandırmaq istədiyiniz zaman normal qapalı konfiqurasiyadan istifadə etməlisiniz.
Cərəyanın arabir axmasını istədiyiniz zaman normal açıq konfiqurasiyadan istifadə edin (məsample, alamp arabir).
Enerji təchizatı seçimiİkinci sancaqlar dəsti GND, VCC və JD-VCC sancaqlarından ibarətdir.
JD-VCC pin relenin elektromaqnitini gücləndirir. Diqqət yetirin ki, modulda VCC və JD-VCC pinlərini birləşdirən keçid qapağı var; burada göstərilən sarıdır, lakin sizinki fərqli rəng ola bilər.
Jumper qapağı açıq olduqda, VCC və JD-VCC sancaqları birləşdirilir. Bu o deməkdir ki, rele elektromaqnit birbaşa ESP32 güc pinindən qidalanır, buna görə də rele modulu və ESP32 sxemləri bir-birindən fiziki olaraq təcrid olunmur.
Jumper qapağı olmadan, JD-VCC pin vasitəsilə relenin elektromaqnitini gücləndirmək üçün müstəqil enerji mənbəyi təmin etməlisiniz. Bu konfiqurasiya modulun daxili optokuplatoru ilə releləri ESP32-dən fiziki olaraq təcrid edir ki, bu da elektrik sıçrayışları zamanı ESP32-nin zədələnməsinin qarşısını alır.
SxematikXəbərdarlıq: Yüksək həcmdən istifadətage enerji təchizatı ciddi zədələrə səbəb ola bilər.
Buna görə də, yüksək tədarük həcmi əvəzinə 5 mm LED-lər istifadə olunurtagtəcrübədə e ampüller. Magistral vol ilə tanış deyilsinizsətagsizə kömək edəcək birindən soruşun. ESP-ni proqramlaşdırarkən və ya dövrənizi bağlayarkən hər şeyin elektrik şəbəkəsindən ayrıldığından əmin oluntage.ESP32 üçün Kitabxananın quraşdırılması
Bunu qurmaq üçün web server, biz ESPAsync istifadə edirikWebServer kitabxanası və AsyncTCP Kitabxanası.
ESPAsync quraşdırılmasıWebServer kitabxanası
Quraşdırmaq üçün növbəti addımları izləyin ESPAsyncWebServer kitabxana:
- ESPAsync proqramını yükləmək üçün bura klikləyinWebServer kitabxanası. Sən olmalısan
Yükləmələr qovluğunda .zip qovluğu - .zip qovluğunu açın və siz ESPAsync əldə etməlisinizWebServer-master qovluğu
- Qovluqunuzun adını ESPAsync-dən dəyişdirinWebESPAsync üçün server-masterWebServer
- ESPAsync-i köçürünWebServer qovluğunu Arduino IDE quraşdırma kitabxanaları qovluğuna köçürün
Alternativ olaraq, Arduino IDE-də Sketch > Include bölməsinə keçə bilərsiniz
Kitabxana > .ZIP kitabxana əlavə edin… və yenicə endirdiyiniz kitabxananı seçin.
ESP32 üçün AsyncTCP Kitabxanasının quraşdırılması
The ESPAsyncWebServer kitabxana tələb edir AsyncTCP işləmək üçün kitabxana. İzləyin
həmin kitabxananı quraşdırmaq üçün növbəti addımlar:
- AsyncTCP kitabxanasını yükləmək üçün bura klikləyin. Yükləmələr qovluğunda .zip qovluğu olmalıdır
- .zip qovluğunu açın və siz AsyncTCP-master qovluğunu almalısınız
1. Qovluqunuzun adını AsyncTCP-master-dən AsyncTCP-yə dəyişdirin
3. AsyncTCP qovluğunu Arduino IDE quraşdırma kitabxanaları qovluğuna köçürün
4. Nəhayət, Arduino IDE-ni yenidən açın
Alternativ olaraq, Arduino IDE-də Sketch > Include bölməsinə keçə bilərsiniz
Kitabxana > .ZIP kitabxana əlavə edin… və yenicə endirdiyiniz kitabxananı seçin.
Kod
ESP32-ni Arduino IDE-dən istifadə edərək proqramlaşdıracağıq, ona görə də davam etməzdən əvvəl ESP32 əlavəsinin quraşdırıldığından əmin olun: (Əgər bu addımı artıq etmisinizsə, növbəti addıma keçə bilərsiniz.)
Arduino IDE-də ESP32 Əlavəsinin quraşdırılması
Lazımi kitabxanaları quraşdırdıqdan sonra Project_7_ESP32_Relay_ kodunu açınWebArduino IDE-də _Server.ino.
Kodu yükləməzdən əvvəl ESP-nin yerli şəbəkənizə qoşula bilməsi üçün şəbəkə etimadnaməsini daxil etməyi unutmayın.Nümayiş
Lazımi dəyişiklikləri etdikdən sonra kodu ESP32.Yükləmə kodu istinad addımlarınıza yükləyin.
Serial Monitoru 115200 ötürmə sürətində açın və onun IP ünvanını əldə etmək üçün ESP32 EN düyməsini basın. Sonra yerli şəbəkənizdə brauzer açın və ESP32 IP ünvanını yazın. web server.
Serial Monitoru 115200 ötürmə sürətində açın və onun IP ünvanını əldə etmək üçün ESP32 EN düyməsini basın. Sonra yerli şəbəkənizdə brauzer açın və ESP32 IP ünvanını yazın. web server.Qeyd: Brauzeriniz və ESP32 eyni LAN şəbəkəsinə qoşulmalıdır.
Kodunuzda təyin etdiyiniz relelərin sayı kimi iki düymə ilə aşağıdakı kimi bir şey əldə etməlisiniz.İndi siz smartfonunuzdan istifadə edərək relelərinizi idarə etmək üçün düymələrdən istifadə edə bilərsiniz.
Layihə_8_Çıxış_Vəziyyəti_Sinxronizasiya_ Web_Server
Bu Layihə, a istifadə edərək ESP32 və ya ESP8266 çıxışlarının necə idarə olunacağını göstərir web server və fiziki düymə eyni vaxtda. Çıxış vəziyyəti yenilənir web fiziki düymə ilə dəyişdirilib və ya səhifə web server.
Layihə bitdiview
Gəlin layihənin necə işlədiyinə qısaca nəzər salaq.ESP32 və ya ESP8266 hostları a web çıxışın vəziyyətini idarə etməyə imkan verən server;
- Cari çıxış vəziyyəti ekranda göstərilir web server;
- ESP həmçinin eyni çıxışı idarə edən fiziki düyməyə qoşulmuşdur;
- Fiziki düymədən istifadə edərək çıxış vəziyyətini dəyişdirsəniz, onun cari vəziyyəti də yenilənir web server.
Xülasə, bu layihə a istifadə edərək eyni çıxışı idarə etməyə imkan verir web server və təkan düyməsi eyni vaxtda. Çıxış vəziyyəti dəyişdikdə web server yenilənir.
Tələb olunan hissələr
Budur, dövrə qurmaq üçün lazım olan hissələrin siyahısı:
- ESP32 DEVKIT V1 lövhəsi
- 5 mm LED
- 220 Ohm rezistor
- Düymə
- 10k Ohm rezistor
- Çörək lövhəsi
- Jumper telləri
SxematikESP32 üçün Kitabxananın quraşdırılması
Bunu qurmaq üçün web server, biz ESPAsync istifadə edirikWebServer kitabxanası və AsyncTCP Kitabxanası.(Əgər bu addımı artıq etmisinizsə, növbəti addıma keçə bilərsiniz.)
ESPAsync quraşdırılmasıWebServer kitabxanası
ESPAsync quraşdırmaq üçün növbəti addımları izləyinWebServer kitabxanası:
- ESPAsync proqramını yükləmək üçün bura klikləyinWebServer kitabxanası. Sən olmalısan
Yükləmələr qovluğunda .zip qovluğu - .zip qovluğunu açın və siz ESPAsync əldə etməlisinizWebServer-master qovluğu
- Qovluqunuzun adını ESPAsync-dən dəyişdirinWebESPAsync üçün server-masterWebServer
- ESPAsync-i köçürünWebServer qovluğunu Arduino IDE quraşdırma kitabxanaları qovluğuna köçürün
Alternativ olaraq, Arduino IDE-də Sketch > Include bölməsinə keçə bilərsiniz
Kitabxana > .ZIP kitabxana əlavə edin… və yenicə endirdiyiniz kitabxananı seçin.
ESP32 üçün AsyncTCP Kitabxanasının quraşdırılması
ESPAsyncWebServer kitabxanası işləmək üçün AsyncTCP kitabxanasını tələb edir. Həmin kitabxananı quraşdırmaq üçün növbəti addımları yerinə yetirin:
- AsyncTCP kitabxanasını yükləmək üçün bura klikləyin. Yükləmələr qovluğunda .zip qovluğu olmalıdır
- .zip qovluğunu açın və siz AsyncTCP-master qovluğunu almalısınız
- Qovluqunuzun adını AsyncTCP-master-dən AsyncTCP-yə dəyişdirin
- AsyncTCP qovluğunu Arduino IDE quraşdırma kitabxanaları qovluğuna köçürün
- Nəhayət, Arduino IDE-ni yenidən açın
Alternativ olaraq, Arduino IDE-də Sketch > Include bölməsinə keçə bilərsiniz
Kitabxana > .ZIP kitabxana əlavə edin… və yenicə endirdiyiniz kitabxananı seçin.
Kod
ESP32-ni Arduino IDE-dən istifadə edərək proqramlaşdıracağıq, ona görə də davam etməzdən əvvəl ESP32 əlavəsinin quraşdırıldığından əmin olun: (Əgər bu addımı artıq etmisinizsə, növbəti addıma keçə bilərsiniz.)
Arduino IDE-də ESP32 Əlavəsinin quraşdırılması
Lazımi kitabxanaları quraşdırdıqdan sonra kodu açın
Layihə_8_Çıxış_Vəziyyəti_Sinxronizasiya_WebArduino IDE-də _Server.ino.
Kodu yükləməzdən əvvəl ESP-nin yerli şəbəkənizə qoşula bilməsi üçün şəbəkə etimadnaməsini daxil etməyi unutmayın.
Kodeks Necə İşləyir
Düymə Vəziyyəti və Çıxış Vəziyyəti
ledState dəyişəni LED çıxış vəziyyətini saxlayır. Varsayılan olaraq, zaman web server başlayır, AZALDIR.
ButtonState və lastButtonState düymənin basılıb-basılmadığını aşkar etmək üçün istifadə olunur.Düymə (web server)
Biz index_html dəyişənində düymə yaratmaq üçün HTML daxil etməmişik.
Bunun səbəbi, biz düymə ilə dəyişdirilə bilən cari LED vəziyyətindən asılı olaraq onu dəyişdirə bilmək istəyirik.
Beləliklə, biz %BUTTONPLACEHOLDER% düyməsi üçün yertutan yaratdıq, o düyməni kodda daha sonra yaratmaq üçün HTML mətni ilə əvəz olunacaq (bu prosessor() funksiyasında edilir).prosessor()
Prosessor() funksiyası HTML mətnindəki hər hansı yer tutucuları faktiki dəyərlərlə əvəz edir. Birincisi, HTML mətnlərində hər hansı bir mətnin olub olmadığını yoxlayır
yer tutucular %BUTTONPLACEHOLDER%.Sonra cari çıxış vəziyyətini qaytaran theoutputState() funksiyasını çağırın. Biz onu outputStateValue dəyişənində saxlayırıq.
Bundan sonra, düyməni düzgün vəziyyətdə göstərmək üçün HTML mətni yaratmaq üçün həmin dəyərdən istifadə edin:
Çıxış Vəziyyətini Dəyişdirmək üçün HTTP GET Sorğusu (JavaScript)
Düyməni basdığınız zaman thetoggleCheckbox() funksiyası çağırılır. Bu funksiya fərqli bir sorğu verəcəkdir URLs LED-i yandırmaq və ya söndürmək üçün.LED-i yandırmaq üçün o, /update?state=1-də sorğu göndərir URL:
Əks halda, /update?state=0 üzərində sorğu göndərir URL.
Vəziyyəti yeniləmək üçün HTTP GET sorğusu (JavaScript)
Çıxış vəziyyətini yeniləmək üçün web server, biz /statusda yeni sorğu verən aşağıdakı funksiyanı çağırırıq URL hər saniyə.Sorğuları idarə edin
Sonra, ESP32 və ya ESP8266 həmin sorğular qəbul etdikdə nə baş verdiyini idarə etməliyik. URLs.
Kökdə sorğu alındıqda /URL, biz HTML səhifəsini, eləcə də prosessoru göndəririk.Aşağıdakı sətirlər /update?state=1 və ya /update?state=0 ilə bağlı sorğu qəbul edib-etmədiyinizi yoxlayır. URL və müvafiq olaraq ledState dəyişir.
/dövlətində sorğu qəbul edildikdə URL, biz cari çıxış vəziyyətini göndəririk:
loop()
Döngüdə() biz düyməni ləğv edirik və ledState dəyərindən asılı olaraq LED-i yandırırıq və ya söndürürük. dəyişən.Nümayiş
Kodu ESP32 boardunuza yükləyin. Kod istinad addımlarını yükləyin.
Sonra Serial Monitoru 115200 ötürmə sürətində açın. IP ünvanını əldə etmək üçün bortda EN/RST düyməsini basın.Yerli şəbəkənizdə bir brauzer açın və ESP IP ünvanını yazın. -a girişiniz olmalıdır web server aşağıda göstərildiyi kimi.
Qeyd: Brauzeriniz və ESP32 eyni LAN şəbəkəsinə qoşulmalıdır.Üzərindəki düyməni dəyişə bilərsiniz web LED-i yandırmaq üçün server.
Eyni LED-i fiziki düymə ilə idarə edə bilərsiniz. Onun vəziyyəti həmişə avtomatik olaraq yenilənəcək web server.
Layihə 9 ESP32 DHT11 Web Server
Bu layihədə siz asinxron ESP32 qurmağı öyrənəcəksiniz web Arduino IDE istifadə edərək temperatur və rütubəti göstərən DHT11 ilə server.
İlkin şərtlər
The web biz quracağımız server oxunuşları yeniləməyə ehtiyac olmadan avtomatik olaraq yeniləyir web səhifə.
Bu layihə ilə siz öyrənəcəksiniz:
- DHT sensorlarından temperatur və rütubəti necə oxumaq olar;
- Asinxron qurun web serverdən istifadə edir ESPAsyncWebServer kitabxanası;
- Sensor oxunuşlarını yeniləməyə ehtiyac olmadan avtomatik olaraq yeniləyin web səhifə.
Asinxron Web Server
qurmaq üçün web serverdən istifadə edəcəyik ESPAsyncWebServer kitabxanası asinxron qurmaq üçün asan bir yol təqdim edir web server. Asinxronun qurulması web server bir neçə üstünlüklərə malikdirtages kitabxanasının GitHub səhifəsində qeyd edildiyi kimi, məsələn:
- “Eyni anda birdən çox əlaqəni idarə edin”;
- “Cavab göndərdiyiniz zaman server arxa fonda cavab göndərməklə məşğul olarkən siz dərhal digər əlaqələri idarə etməyə hazırsınız”;
- “Şablonları idarə etmək üçün sadə şablon emal mühərriki”;
Tələb olunan hissələr
Bu təlimatı tamamlamaq üçün sizə aşağıdakı hissələr lazımdır:
- ESP32 inkişaf lövhəsi
- DHT11 modulu
- Çörək lövhəsi
- Jumper telləri
SxematikKitabxanaların quraşdırılması
Bu layihə üçün bir neçə kitabxana quraşdırmalısınız:
- The DHT və Adafruit Vahid Sensor DHT sensorundan oxumaq üçün sürücü kitabxanaları.
- ESPAsyncWebServer və Async TCP asinxron qurmaq üçün kitabxanalar web server.
Həmin kitabxanaları quraşdırmaq üçün növbəti təlimatları izləyin:
DHT Sensor Kitabxanasının quraşdırılması
Arduino IDE istifadə edərək DHT sensorundan oxumaq üçün quraşdırmanız lazımdır DHT sensor kitabxanası. Kitabxananı quraşdırmaq üçün növbəti addımları izləyin.
- DHT Sensor kitabxanasını yükləmək üçün bura klikləyin. Yükləmələr qovluğunda .zip qovluğu olmalıdır
- .zip qovluğunu açın və siz DHT-sensor-library-master qovluğunu almalısınız
- Qovluqunuzun adını DHT-sensor-librani-master-dən DHT_sensor olaraq dəyişdirin
- DHT_sensor qovluğunu Arduino IDE quraşdırma kitabxanaları qovluğuna köçürün
- Nəhayət, Arduino IDE-ni yenidən açın
Adafruit Birləşdirilmiş Sensor Sürücüsünün quraşdırılması
Siz həmçinin quraşdırmaq lazımdır Adafruit Unified Sensor Driver kitabxanası DHT sensoru ilə işləmək üçün. Kitabxananı quraşdırmaq üçün növbəti addımları izləyin.
- Adafruit Unified Sensor kitabxanasını yükləmək üçün bura klikləyin. Yükləmələr qovluğunda .zip qovluğu olmalıdır
- .zip qovluğunu açın və siz Adafruit_sensor-master qovluğunu almalısınız
- Qovluğun adını Adafruit_sensor-master-dən Adafruit_sensor olaraq dəyişdirin
- Adafruit_sensor qovluğunu Arduino IDE quraşdırma kitabxanaları qovluğuna köçürün
- Nəhayət, Arduino IDE-ni yenidən açın
ESPAsync quraşdırılmasıWebServer kitabxanası
Quraşdırmaq üçün növbəti addımları izləyin ESPAsyncWebServer kitabxana:
- ESPAsync proqramını yükləmək üçün bura klikləyinWebServer kitabxanası. Sən olmalısan
Yükləmələr qovluğunda .zip qovluğu - .zip qovluğunu açın və siz etməlisiniz
ESPAsync əldə edinWebServer-master qovluğu - Qovluqunuzun adını ESPAsync-dən dəyişdirinWebESPAsync üçün server-masterWebServer
- ESPAsync-i köçürünWebServer qovluğunu Arduino IDE quraşdırma kitabxanaları qovluğuna köçürün
ESP32 üçün Async TCP Kitabxanasının quraşdırılması
The ESPAsyncWebServer kitabxana tələb edir AsyncTCP işləmək üçün kitabxana. Həmin kitabxananı quraşdırmaq üçün növbəti addımları yerinə yetirin:
- AsyncTCP kitabxanasını yükləmək üçün bura klikləyin. Yükləmələr qovluğunda .zip qovluğu olmalıdır
- .zip qovluğunu açın və siz AsyncTCP-master qovluğunu almalısınız
- Qovluqunuzun adını AsyncTCP-master-dən AsyncTCP-yə dəyişdirin
- AsyncTCP qovluğunu Arduino IDE quraşdırma kitabxanaları qovluğuna köçürün
- Nəhayət, Arduino IDE-ni yenidən açın
Kod
ESP32-ni Arduino IDE-dən istifadə edərək proqramlaşdıracağıq, ona görə də davam etməzdən əvvəl ESP32 əlavəsinin quraşdırıldığından əmin olun: (Əgər bu addımı artıq etmisinizsə, növbəti addıma keçə bilərsiniz.)
Arduino IDE-də ESP32 Əlavəsinin quraşdırılması
Lazımi kitabxanaları quraşdırdıqdan sonra kodu açın
Layihə_9_ESP32_DHT11_WebArduino IDE-də _Server.ino.
Kodu yükləməzdən əvvəl ESP-nin yerli şəbəkənizə qoşula bilməsi üçün şəbəkə etimadnaməsini daxil etməyi unutmayın.Kodeks Necə İşləyir
Növbəti paraqraflarda kodun necə işlədiyini izah edəcəyik. Daha çox öyrənmək istəyirsinizsə oxumağa davam edin və ya yekun nəticəni görmək üçün Nümayiş bölməsinə keçin.
Kitabxanaların idxalı
Əvvəlcə tələb olunan kitabxanaları idxal edin. WiFi, ESPAsyncWebqurmaq üçün server və ESPAsyncTCP lazımdır web server. Adafruit_Sensor və DHT kitabxanaları DHT11 və ya DHT22 sensorlarından oxumaq üçün lazımdır.Dəyişənlərin tərifi
DHT məlumat pininin qoşulduğu GPIO-nu təyin edin. Bu halda, o, GPIO 4-ə qoşulur.Sonra, istifadə etdiyiniz DHT sensor növünü seçin. Keçmişimizdəampbiz DHT22-dən istifadə edirik. Əgər başqa növdən istifadə edirsinizsə, sadəcə olaraq sensorunuzun şərhini ləğv etməli və bütün digərlərini şərh etməlisiniz.
Daha əvvəl müəyyən etdiyimiz tip və pin ilə DHT obyektini işə salın.Async yaradınWeb80 portunda server obyekti.
Temperatur və Rütubət Funksiyalarını oxuyun
Biz iki funksiya yaratdıq: biri temperaturu oxumaq üçün Biz iki funksiya yaratdıq: biri temperaturu oxumaq (readDHTTemperature()) və digəri rütubəti oxumaq (readDHTHumidity()).Sensor oxunuşlarını əldə etmək, sensor oxunuşlarını əldə etmək dht obyektində readTemperature() və readHumidity() metodlarından istifadə etmək qədər sadədir.
Sensorun oxunuşları ala bilməməsi halında iki tire (-) qaytaran bir şərtimiz də var.
Oxunmalar simli tip kimi qaytarılır. Şamandıranı sətirə çevirmək üçün String() funksiyasından istifadə edin
Varsayılan olaraq, biz temperaturu Selsi dərəcəsində oxuyuruq. Fahrenheit dərəcəsində temperaturu əldə etmək üçün Selsidəki temperaturu şərh edin və Fahrenheitdəki temperaturu şərhdən çıxarın ki, sizdə aşağıdakılar olsun:
Kodu yükləyin
İndi kodu ESP32-yə yükləyin. Düzgün lövhənin və COM portunun seçildiyinə əmin olun. Kodun istinad addımlarını yükləyin.
Yüklədikdən sonra Serial Monitoru 115200 ötürmə sürətində açın. ESP32 sıfırlama düyməsini basın. ESP32 IP ünvanı serialda çap edilməlidir monitor.Nümayiş
Brauzeri açın və ESP32 IP ünvanını yazın. Sizin web server ən son sensor oxunuşlarını göstərməlidir.
Qeyd: Brauzeriniz və ESP32 eyni LAN şəbəkəsinə qoşulmalıdır.
Diqqət yetirin ki, temperatur və rütubət oxunuşları yenilənməyə ehtiyac olmadan avtomatik olaraq yenilənir web səhifə.
Project_10_ESP32_OLED_Display
Bu layihə Arduino IDE istifadə edərək ESP0.96 ilə 1306 düymlük SSD32 OLED displeyindən necə istifadə olunacağını göstərir.
0.96 düymlük OLED Ekranı təqdim edirik
The OLED displey Bu dərslikdə istifadə edəcəyimiz SSD1306 modelidir: aşağıdakı şəkildə göstərildiyi kimi 0.96×128 pikselli monorəngli, 64 düymlük displey.OLED displeyi arxa işıq tələb etmir, bu da qaranlıq mühitlərdə çox gözəl kontrastla nəticələnir. Bundan əlavə, onun pikselləri yalnız açıq olduqda enerji sərf edir, beləliklə, OLED displey digər displeylərlə müqayisədə daha az enerji sərf edir.
OLED displeyi I2C rabitə protokolundan istifadə etdiyi üçün naqillərin çəkilməsi çox sadədir. Aşağıdakı cədvəldən istinad kimi istifadə edə bilərsiniz.
OLED Pin | ESP32 |
Vin | 3.3V |
GND | GND |
SCL | GPIO 22 |
SDA | GPIO 21 |
SxematikSSD1306 OLED Kitabxanasının quraşdırılması – ESP32
ESP32 ilə OLED displeyini idarə etmək üçün bir neçə kitabxana mövcuddur.
Bu dərslikdə biz iki Adafruit kitabxanasından istifadə edəcəyik: Adafruit_SSD1306 kitabxanası və Adafruit_GFX kitabxanası.
Həmin kitabxanaları quraşdırmaq üçün növbəti addımları izləyin.
- Arduino IDE-ni açın və Sketch > Kitabxana daxil edin > Kitabxanaları idarə edin. Kitabxana meneceri açılmalıdır.
- Axtarış qutusuna “SSD1306” yazın və Adafruit-dən SSD1306 kitabxanasını quraşdırın.
- Adafruit-dən SSD1306 kitabxanasını quraşdırdıqdan sonra axtarış qutusuna “GFX” yazın və kitabxananı quraşdırın.
- Kitabxanaları quraşdırdıqdan sonra Arduino IDE-ni yenidən başladın.
Kod
Tələb olunan kitabxanaları quraşdırdıqdan sonra Project_10_ESP32_OLED_Display.ino faylını arduino IDE-də açın. kod
ESP32-ni Arduino IDE-dən istifadə edərək proqramlaşdıracağıq, ona görə də davam etməzdən əvvəl ESP32 əlavəsinin quraşdırıldığından əmin olun: (Əgər bu addımı artıq etmisinizsə, növbəti addıma keçə bilərsiniz.)
Arduino IDE-də ESP32 Əlavəsinin quraşdırılmasıKodeks Necə İşləyir
Kitabxanaların idxalı
Əvvəlcə lazımi kitabxanaları idxal etməlisiniz. I2C-dən istifadə etmək üçün Wire kitabxanası və ekrana yazmaq üçün Adafruit kitabxanaları: Adafruit_GFX və Adafruit_SSD1306.OLED ekranını işə salın
Sonra OLED eninizi və hündürlüyü təyin edirsiniz. Bu keçmişdəample, biz 128×64 OLED ekrandan istifadə edirik. Başqa ölçülərdən istifadə edirsinizsə, bunu SCREEN_WIDTH və SCREEN_HEIGHT dəyişənlərində dəyişə bilərsiniz.Sonra, I2C rabitə protokolu (&Wire) ilə əvvəllər müəyyən edilmiş eni və hündürlüyü ilə ekran obyektini işə salın.
(-1) parametri o deməkdir ki, OLED displeyinizdə RESET pin yoxdur. OLED displeyinizdə RESET pin varsa, o, GPIO-ya qoşulmalıdır. Bu halda, GPIO nömrəsini parametr kimi ötürməlisiniz.
Quraşdırmada() sazlama məqsədləri üçün Serial Monitoru 115200 ötürmə sürətində işə salın.OLED ekranını start() metodu ilə aşağıdakı kimi işə salın:
Bu fraqment həmçinin ekrana qoşula bilməyəcəyimiz halda Serial Monitorda mesaj çap edir.
Fərqli OLED displeydən istifadə edirsinizsə, OLED ünvanını dəyişməli ola bilərsiniz. Bizim vəziyyətimizdə ünvan 0x3C-dir.
Ekranı işə saldıqdan sonra iki saniyə gecikmə əlavə edin ki, OLED-in mətn yazmadan əvvəl işə salmaq üçün kifayət qədər vaxtı olsun:
Ekranı təmizləyin, şrift ölçüsünü, rəngini təyin edin və mətn yazın
Ekranı işə saldıqdan sonra clearDisplay() metodu ilə displey buferini təmizləyin:
Mətni yazmazdan əvvəl mətnin ölçüsünü, rəngini və mətnin OLED-də harada göstəriləcəyini təyin etməlisiniz.
setTextSize() metodundan istifadə edərək şrift ölçüsünü təyin edin:Şrift rəngini setTextColor() metodu ilə təyin edin:
WHITE ağ şrift və qara fon təyin edir.
setCursor(x,y) metodundan istifadə edərək mətnin başladığı mövqeyi müəyyənləşdirin. Bu halda, mətni yuxarı sol küncdə (0,0) koordinatlarından başlamağa təyin edirik.Nəhayət, aşağıdakı kimi println() metodundan istifadə edərək mətni ekrana göndərə bilərsiniz
Sonra, mətni ekranda həqiqətən göstərmək üçün display() metodunu çağırmalısınız.
Adafruit OLED kitabxanası mətni asanlıqla sürüşdürmək üçün faydalı üsullar təqdim edir.
- startscrollright(0x00, 0x0F): mətni soldan sağa sürüşdürün
- startscrollleft(0x00, 0x0F): mətni sağdan sola sürüşdürün
- startscrolldiagright(0x00, 0x07): mətni sol alt küncdən sağ yuxarı küncə sürüşdürün startscrolldiagleft(0x00, 0x07): mətni sağ alt küncdən yuxarı sol küncə sürüşdürün
Kodu yükləyin
İndi kodu ESP32.Yükləmə kodu istinad addımlarınıza yükləyin.
Kodu yüklədikdən sonra OLED sürüşən mətni göstərəcək.
Sənədlər / Resurslar
![]() |
LAFVIN ESP32 Əsas Başlanğıc Dəsti [pdf] Təlimat kitabçası ESP32 Basic Starter Kit, ESP32, Basic Starter Kit, Starter Kit |