ESP32 Temel Başlangıç
Kit
Paket listesi
ESP32 Giriş
ESP32'ye yeni misiniz? Buradan başlayın! ESP32, Espressif tarafından geliştirilen, Wi-Fi ve Bluetooth kablosuz yetenekleri ve çift çekirdekli işlemci içeren düşük maliyetli ve düşük güçlü bir Yonga Üzerinde Sistem (SoC) mikrodenetleyici serisidir. ESP8266'ya aşinaysanız, ESP32 onun halefidir ve birçok yeni özellik ile donatılmıştır.ESP32 Özellikleri
Biraz daha teknik ve spesifik olmak isterseniz, ESP32'nin aşağıdaki detaylı özelliklerine göz atabilirsiniz (kaynak: http://esp32.net/)—daha fazla ayrıntı için, veri sayfasını kontrol edin):
- Kablosuz bağlantı WiFi: HT150.0 ile 40 Mbps veri hızı
- Bluetooth: BLE (Bluetooth Düşük Enerji) ve Bluetooth Classic
- İşlemci: 32 veya 6 MHz'de çalışan Tensilica Xtensa Çift Çekirdekli 160-bit LX240 mikroişlemci
- Hafıza:
- ROM: 448 KB (önyükleme ve çekirdek işlevleri için)
- SRAM: 520 KB (veri ve talimatlar için)
- RTC fas SRAM: 8 KB (derin uyku modundan RTC Önyükleme sırasında veri depolama ve ana CPU için)
- RTC yavaş SRAM: 8KB (derin uyku modunda eş işlemci erişimi için) eFuse: 1 Kbit (bunun 256 biti sistem için kullanılır (MAC adresi ve çip yapılandırması) ve kalan 768 bit Flash Şifreleme ve Çip Kimliği dahil olmak üzere müşteri uygulamaları için ayrılmıştır)
Gömülü flaş: ESP16-D17WD ve ESP0-PICO-D1'te IO32, IO2, SD_CMD, SD_CLK, SD_DATA_32 ve SD_DATA_4 üzerinden dahili olarak bağlanan flaş.
- 0 MiB (ESP32-D0WDQ6, ESP32-D0WD ve ESP32-S0WD yongaları)
- 2 MiB (ESP32-D2WD çipi)
- 4 MiB (ESP32-PICO-D4 SiP modülü)
Düşük Güç: ADC dönüşümlerini kullanmaya devam edebilmenizi sağlar, örneğinample, derin uyku sırasında.
Çevresel Giriş/Çıkış:
- kapasitif dokunmatik içeren DMA'lı çevresel arayüz
- ADC'ler (Analog-Dijital Dönüştürücü)
- DAC'ler (Dijital-Analog Dönüştürücü)
- I²C (Entegre Devreler Arası)
- UART (Evrensel Asenkron Alıcı/Verici)
- SPI (Seri Çevre Birimi Arayüzü)
- I²S (Entegre Çip Arası Ses)
- RMII (Azaltılmış Ortam Bağımsız Arayüz)
- PWM (Darbe Genişlik Modülasyonu)
Güvenlik: AES ve SSL/TLS için donanım hızlandırıcıları
ESP32 Geliştirme Kartları
ESP32, çıplak ESP32 çipini ifade eder. Ancak, "ESP32" terimi aynı zamanda ESP32 geliştirme kartlarını ifade etmek için de kullanılır. Çıplak ESP32 çiplerini kullanmak, özellikle öğrenme, test etme ve prototipleme sırasında kolay veya pratik değildir. Çoğu zaman, bir ESP32 geliştirme kartı kullanmak isteyeceksiniz.
Referans olarak ESP32 DEVKIT V1 kartını kullanacağız. Aşağıdaki resim ESP32 DEVKIT V1 kartının 30 GPIO pinli versiyonunu göstermektedir.Özellikler – ESP32 DEVKIT V1
Aşağıdaki tabloda ESP32 DEVKIT V1 DOIT kartının özellikleri ve teknik özellikleri özetlenmiştir:
Çekirdek sayısı | 2 (çift çekirdek) |
Wifi | 2.4 GHz'den 150 Mbit/s'ye kadar |
Bluetooth | BLE (Bluetooth Düşük Enerji) ve eski Bluetooth |
Mimarlık | 32 bit |
Saat frekansı | 240 MHz'e kadar |
Veri deposu | 512 KB |
Pinler | 30(modele bağlı olarak) |
Çevre Birimleri | Kapasitif dokunmatik, ADC (analogdan dijitale dönüştürücü), DAC (dijitalden analoğa dönüştürücü), 12C (Entegre Devreler Arası), UART (evrensel asenkron alıcı/verici), CAN 2.0 (Denetleyici Alan Ağı), SPI (Seri Çevre Birimi Arayüzü), 12S (Entegre Entegre Devreler Arası) Ses), RMII (Azaltılmış Ortam Bağımsız Arayüz), PWM (darbe genişlik modülasyonu) ve daha fazlası. |
Dahili düğmeler | RESET ve BOOT düğmeleri |
Dahili LED'ler | GPIO2'ye bağlı dahili mavi LED; kartın güç aldığını gösteren dahili kırmızı LED |
USB'den UART'a köprü |
CP2102 |
Kartı bilgisayarınıza bağlayıp kod yüklemek veya güç vermek için kullanabileceğiniz bir microUSB arayüzüyle birlikte geliyor.
Bilgisayarınızla seri bir arayüz kullanarak bir COM portu üzerinden iletişim kurmak için CP2102 çipini (USB'den UART'a) kullanır. Bir diğer popüler çip ise CH340'tır. Bilgisayarınızın kartla iletişim kurabilmesi için gerekli sürücüleri yüklemeniz gerekeceğinden kartınızdaki USB'den UART'a çip dönüştürücünün ne olduğunu kontrol edin (bununla ilgili daha fazla bilgi bu kılavuzun ilerleyen kısımlarında).
Bu kart ayrıca kartı yeniden başlatmak için bir RESET düğmesi (EN olarak etiketlenmiş olabilir) ve kartı yanıp sönme moduna almak için bir BOOT düğmesiyle (kod almak için kullanılabilir) birlikte gelir. Bazı kartlarda BOOT düğmesi olmayabilir.
Ayrıca dahili olarak GPIO 2'ye bağlı yerleşik bir mavi LED ile birlikte gelir. Bu LED, bir tür görsel fiziksel çıktı sağlamak için hata ayıklamada kullanışlıdır. Ayrıca, karta güç sağladığınızda yanan kırmızı bir LED de vardır.ESP32 Pinout
ESP32 çevre birimleri şunları içerir:
- 18 Analog-Dijital Dönüştürücü (ADC) kanalı
- 3 SPI arayüzü
- 3 UART arayüzü
- 2 I2C arayüzü
- 16 PWM çıkış kanalı
- 2 Dijital-Analog Dönüştürücü (DAC)
- 2 I2S arayüzü
- 10 Kapasitif algılama GPIO'ları
ADC (analogdan dijitale dönüştürücü) ve DAC (dijitalden analoga dönüştürücü) özellikleri belirli statik pinlere atanmıştır. Ancak hangi pinlerin UART, I2C, SPI, PWM, vb. olduğuna siz karar verebilirsiniz – bunları kodda atamanız yeterlidir. Bu, ESP32 çipinin multipleksleme özelliği sayesinde mümkündür.
Yazılımda pin özelliklerini tanımlayabilmenize rağmen, aşağıdaki şekilde gösterildiği gibi varsayılan olarak atanmış pinler vardırEk olarak, belirli bir proje için uygun veya uygun olmayan belirli özelliklere sahip pinler vardır. Aşağıdaki tablo, hangi pinlerin giriş, çıkış olarak kullanılmasının en iyi olduğunu ve hangilerine dikkat etmeniz gerektiğini gösterir.
Yeşil renkle vurgulanan pinler kullanıma uygundur. Sarı renkle vurgulananlar kullanıma uygundur, ancak özellikle önyükleme sırasında beklenmedik davranışlar sergileyebilecekleri için dikkat etmeniz gerekir. Kırmızı renkle vurgulanan pinlerin giriş veya çıkış olarak kullanılması önerilmez.
GP GÇ | Giriş | Çıktı | Notlar |
0 | yukarı çekilmiş | OK | önyüklemede PWM sinyali çıkışı verir, yanıp sönme moduna girmek için DÜŞÜK olmalıdır |
1 | Teksas pini | OK | önyüklemede hata ayıklama çıktısı |
2 | OK | OK | yerleşik LED'e bağlı, yanıp sönme moduna girmek için yüzer veya DÜŞÜK bırakılmalıdır |
3 | OK | RX pimi | Önyüklemede YÜKSEK |
4 | OK | OK | |
5 | OK | OK | önyüklemede PWM sinyali çıkışı, bağlama pimi |
12 | OK | OK | önyükleme yukarı çekilirse başarısız olur, bağlama pimi |
13 | OK | OK | |
14 | OK | OK | önyüklemede PWM sinyali çıkışı |
15 | OK | OK | önyüklemede PWM sinyali çıkışı, bağlama pimi |
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ızca giriş | |
35 | OK | yalnızca giriş | |
36 | OK | yalnızca giriş | |
39 | OK | yalnızca giriş |
ESP32 GPIO'ları ve işlevleri hakkında daha detaylı ve derinlemesine bir analiz için okumaya devam edin.
Yalnızca giriş pinleri
34 ila 39 arasındaki GPIO'lar GPI'lerdir - yalnızca giriş pinleri. Bu pinlerin dahili çekme veya çekme dirençleri yoktur. Çıkış olarak kullanılamazlar, bu yüzden bu pinleri yalnızca giriş olarak kullanın:
- 34
- 35
- 36
- 39
ESP-WROOM-32'ye entegre edilmiş SPI flaş
GPIO 6 ila GPIO 11 bazı ESP32 geliştirme kartlarında açığa çıkar. Ancak, bu pinler ESP-WROOM-32 çipindeki entegre SPI flaşına bağlıdır ve diğer kullanımlar için önerilmez. Bu yüzden, projelerinizde bu pinleri kullanmayın:
- GPIO6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO8 (SDI/SD1)
- GPIO9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
Kapasitif dokunmatik GPIO'lar
ESP32'de 10 dahili kapasitif dokunmatik sensör bulunur. Bunlar, insan cildi gibi elektrik yükü tutan herhangi bir şeydeki değişiklikleri algılayabilir. Bu nedenle, GPIO'lara parmakla dokunulduğunda oluşan değişiklikleri algılayabilirler. Bu pinler kapasitif pedlere kolayca entegre edilebilir ve mekanik düğmelerin yerini alabilir. Kapasitif dokunmatik pinler ayrıca ESP32'yi derin uykudan uyandırmak için de kullanılabilir. Bu dahili dokunmatik sensörler şu GPIO'lara bağlıdır:
- T0 (GPIO4)
- T1 (GPIO0)
- T2 (GPIO2)
- T3 (GPIO15)
- T4 (GPIO13)
- T5 (GPIO12)
- T6 (GPIO14)
- T7 (GPIO27)
- T8 (GPIO33)
- T9 (GPIO32)
Analogdan Dijitale Dönüştürücü (ADC)
ESP32'nin 18 x 12 bit ADC giriş kanalı vardır (ESP8266'nın ise sadece 1x 10 bit ADC'si vardır). Bunlar ADC olarak kullanılabilen GPIO'lar ve ilgili kanallardır:
- ADC1_CH0 (GPIO36)
- ADC1_CH1 (GPIO37)
- ADC1_CH2 (GPIO38)
- ADC1_CH3 (GPIO39)
- ADC1_CH4 (GPIO32)
- ADC1_CH5 (GPIO33)
- ADC1_CH6 (GPIO34)
- ADC1_CH7 (GPIO35)
- ADC2_CH0 (GPIO4)
- ADC2_CH1 (GPIO0)
- ADC2_CH2 (GPIO2)
- ADC2_CH3 (GPIO15)
- ADC2_CH4 (GPIO13)
- ADC2_CH5 (GPIO12)
- ADC2_CH6 (GPIO14)
- ADC2_CH7 (GPIO27)
- ADC2_CH8 (GPIO25)
- ADC2_CH9 (GPIO26)
Not: Wi-Fi kullanıldığında ADC2 pinleri kullanılamaz. Bu nedenle, Wi-Fi kullanıyorsanız ve bir ADC2 GPIO'dan değer almakta sorun yaşıyorsanız, bunun yerine bir ADC1 GPIO kullanmayı düşünebilirsiniz. Bu sorununuzu çözmelidir.
ADC giriş kanalları 12 bit çözünürlüğe sahiptir. Bu, 0 ila 4095 aralığında analog okumalar alabileceğiniz anlamına gelir; burada 0, 0V'a ve 4095, 3.3V'a karşılık gelir. Ayrıca kanallarınızın çözünürlüğünü kodda ve ADC aralığında ayarlayabilirsiniz.
ESP32 ADC pinleri doğrusal bir davranışa sahip değildir. Muhtemelen 0 ile 0.1 V veya 3.2 ile 3.3 V arasında ayrım yapamayacaksınız. ADC pinlerini kullanırken bunu aklınızda bulundurmanız gerekir. Aşağıdaki şekilde gösterilene benzer bir davranış elde edeceksiniz.Dijitalden Analoga Dönüştürücü (DAC)
ESP2'de dijital sinyalleri analog sese dönüştürmek için 8 x 32 bit DAC kanalı bulunmaktadır.tage sinyal çıkışları. Bunlar DAC kanallarıdır:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIO'lar
ESP32'de RTC GPIO desteği vardır. RTC düşük güç alt sistemine yönlendirilen GPIO'lar, ESP32 derin uykudayken kullanılabilir. Bu RTC GPIO'lar, Ultra Düşük olduğunda ESP32'yi derin uykudan uyandırmak için kullanılabilir.
Güç (ULP) yardımcı işlemcisi çalışıyor. Aşağıdaki GPIO'lar harici uyandırma kaynağı olarak kullanılabilir.
- 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 kontrol cihazı, farklı özelliklere sahip PWM sinyalleri üretmek üzere yapılandırılabilen 16 bağımsız kanala sahiptir. Çıkış olarak işlev görebilen tüm pinler PWM pinleri olarak kullanılabilir (GPIO'lar 34 ila 39 PWM üretemez).
Bir PWM sinyali ayarlamak için kodda şu parametreleri tanımlamanız gerekir:
- Sinyalin frekansı;
- Görev döngüsü;
- PWM kanalı;
- Sinyali çıkış olarak vermek istediğiniz GPIO.
I2C
ESP32'nin iki I2C kanalı vardır ve herhangi bir pin SDA veya SCL olarak ayarlanabilir. ESP32'yi Arduino IDE ile kullanırken varsayılan I2C pinleri şunlardır:
- GPIO21 (SDA)
- GPIO22 (SCL)
Wire kütüphanesini kullanırken diğer pinleri kullanmak isterseniz, sadece şunu çağırmanız yeterli:
Tel.başla(SDA, SCL);
SPI
Varsayılan olarak SPI için pin eşlemesi şöyledir:
SPI | MOSI | MİSO | CLK | CS |
VSPI | 23 | 19 | 18 | 5 |
HSPİ | 13 | 12 | 14 | 15 |
Kesmeler
Tüm GPIO'lar kesme olarak yapılandırılabilir.
Çemberleme Pimleri
ESP32 çipinin bağlama pinleri şu şekildedir:
- GPIO 0 (önyükleme moduna girmek için DÜŞÜK olmalıdır)
- GPIO 2 (önyükleme sırasında yüzer veya DÜŞÜK olmalıdır)
- 4
- GPIO 5 (önyükleme sırasında YÜKSEK olmalıdır)
- GPIO 12 (önyükleme sırasında DÜŞÜK olmalıdır)
- GPIO 15 (önyükleme sırasında YÜKSEK olmalıdır)
Bunlar ESP32'yi önyükleyici veya flaş moduna sokmak için kullanılır. Dahili USB/Seri'ye sahip çoğu geliştirme kartında bu pinlerin durumu hakkında endişelenmenize gerek yoktur. Kart pinleri flaş veya önyükleme modu için doğru duruma getirir. ESP32 Önyükleme Modu Seçimi hakkında daha fazla bilgi burada bulunabilir.
Ancak, bu pinlere bağlı çevre birimleriniz varsa, yeni kod yüklemeyi, ESP32'yi yeni bir yazılımla flaşlamayı veya kartı sıfırlamayı denerken sorun yaşayabilirsiniz. Bağlama pinlerine bağlı bazı çevre birimleriniz varsa ve kod yüklemede veya ESP32'yi flaşlamada sorun yaşıyorsanız, bunun nedeni bu çevre birimlerinin ESP32'nin doğru moda girmesini engellemesi olabilir. Doğru yöne gitmeniz için Önyükleme Modu Seçimi belgelerini okuyun. Sıfırladıktan, flaşladıktan veya önyükleme yaptıktan sonra, bu pinler beklendiği gibi çalışır.
Pins Önyüklemede YÜKSEK
Bazı GPIO'lar önyükleme veya sıfırlama sırasında durumlarını HIGH'a değiştirir veya PWM sinyalleri gönderir.
Bu, bu GPIO'lara bağlı çıkışlarınız varsa, ESP32 sıfırlandığında veya önyüklendiğinde beklenmeyen sonuçlar alabileceğiniz anlamına gelir.
- 1
- 3
- 5
- GPIO 6 ila GPIO 11 (ESP32 entegreli SPI flaş belleğe bağlı – kullanılması önerilmez).
- 14
- 15
Etkinleştir (TR)
Enable (EN), 3.3V regülatörünün etkinleştirme pinidir. Yukarı çekilir, bu yüzden 3.3V regülatörünü devre dışı bırakmak için toprağa bağlayın. Bu, örneğin ESP32'nizi yeniden başlatmak için bir basmalı düğmeye bağlı bu pini kullanabileceğiniz anlamına gelirampley.
GPIO akımı çekildi
ESP40 veri sayfasındaki “Önerilen Çalışma Koşulları” bölümüne göre GPIO başına çekilen mutlak maksimum akım 32mA’dir.
ESP32 Dahili Hall Etkisi Sensörü
ESP32 ayrıca çevresindeki manyetik alandaki değişiklikleri algılayan dahili bir Hall etkisi sensörüne sahiptir
ESP32 Arduino IDE
Arduino IDE için, ESP32'yi Arduino IDE ve programlama dilini kullanarak programlamanıza olanak tanıyan bir eklenti var. Bu eğitimde, Windows, Mac OS X veya Linux kullanıyor olmanıza bakılmaksızın ESP32 kartını Arduino IDE'ye nasıl yükleyeceğinizi göstereceğiz.
Önkoşullar: Arduino IDE Kurulu
Bu kurulum prosedürüne başlamadan önce, bilgisayarınızda Arduino IDE'nin yüklü olması gerekir. Yükleyebileceğiniz iki Arduino IDE sürümü vardır: sürüm 1 ve sürüm 2.
Aşağıdaki bağlantıya tıklayarak Arduino IDE'yi indirip kurabilirsiniz: arduino.cc/tr/Ana/Yazılım
Hangi Arduino IDE sürümünü öneriyoruz? Şu anda, bazı plugins ESP32 için (SPIFFS gibi) FileArduino 2'de henüz desteklenmeyen sistem Yükleyici Eklentisi). Bu nedenle, gelecekte SPIFFS eklentisini kullanmayı düşünüyorsanız, eski sürüm 1.8.X'i yüklemenizi öneririz. Bunu bulmak için Arduino yazılım sayfasında aşağı kaydırmanız yeterlidir.
Arduino IDE'ye ESP32 Eklentisinin Kurulumu
ESP32 kartını Arduino IDE'nize kurmak için aşağıdaki talimatları izleyin:
- Arduino IDE'nizde şuraya gidin: File> Tercihler
- Aşağıdakileri "Ek Yönetim Kurulu Yöneticisi"ne girin URLs” alanı:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Daha sonra “Tamam” butonuna tıklayın:Not: Eğer halihazırda ESP8266 kartlarınız varsa URL, ayırabilirsiniz URLs'yi virgülle şu şekilde ayırın:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Boards Manager'ı açın. Tools > Board > Boards Manager'a gidin…Arama ESP32 and press install button for the “ESP32 by Espressif Systems“:
İşte bu kadar. Birkaç saniye sonra kurulmuş olması lazım.
Test Kodunu Yükle
ESP32 kartını bilgisayarınıza takın. Arduino IDE'niz açıkken şu adımları izleyin:
- Araçlar > Kart menüsünden kartınızı seçin (benim durumumda ESP32 DEV Modülü)
- Portu seçin (Eğer Arduino IDE'nizde COM Portunu görmüyorsanız, CP210x USB to UART Bridge VCP Sürücülerini yüklemeniz gerekir):
- Aşağıdaki örneği açınampaltında File > Eskiamples > WiFi
(ESP32) > WiFi Tarama - Arduino IDE'nizde yeni bir taslak açılacaktır:
- Arduino IDE'deki Yükle düğmesine basın. Kod derlenirken ve kartınıza yüklenirken birkaç saniye bekleyin.
- Her şey beklendiği gibi gittiyse, "Yükleme tamamlandı." mesajını görmelisiniz.
- Arduino IDE Seri Monitörünü 115200 baud hızında açın:
- ESP32'nin yerleşik Etkinleştirme düğmesine basın ve ESP32'nizin yakınında bulunan ağları görmelisiniz:
Sorun giderme
ESP32'nize yeni bir taslak yüklemeye çalışırsanız ve şu hata mesajını alırsanız "Ölümcül bir hata oluştu: ESP32'ye bağlanılamadı: Zaman aşımına uğradı... Bağlanıyor...". Bu, ESP32'nizin yanıp sönme/yükleme modunda olmadığı anlamına gelir.
Doğru kart adını ve COM por'u seçtikten sonra şu adımları izleyin:
ESP32 kartınızdaki “BOOT” düğmesini basılı tutun
- Çiziminizi yüklemek için Arduino IDE'deki "Yükle" düğmesine basın:
- Arduino IDE’nizde “Bağlanıyor…” mesajını gördükten sonra parmağınızı “ÖNYÜKLEME” düğmesinden çekin:
- Bundan sonra, "Yükleme tamamlandı" mesajını görmelisiniz
İşte bu kadar. ESP32'nizde yeni taslak çalışıyor olmalı. ESP32'yi yeniden başlatmak ve yeni yüklenen taslağı çalıştırmak için "ETKİNLEŞTİR" düğmesine basın.
Ayrıca yeni bir çizim yüklemek istediğiniz her seferinde bu düğme dizisini tekrarlamanız gerekecek.
Proje 1 ESP32 Girişler Çıkışlar
Bu başlangıç kılavuzunda, ESP32'yi Arduino IDE ile kullanarak düğme anahtarı gibi dijital girişleri nasıl okuyacağınızı ve LED gibi dijital çıkışları nasıl kontrol edeceğinizi öğreneceksiniz.
Ön koşullar
ESP32'yi Arduino IDE kullanarak programlayacağız. Bu nedenle, devam etmeden önce ESP32 boards eklentisinin yüklü olduğundan emin olun:
- Arduino IDE'ye ESP32 Eklentisinin Kurulumu
ESP32 Kontrol Dijital Çıkışları
İlk olarak, kontrol etmek istediğiniz GPIO'yu bir OUTPUT olarak ayarlamanız gerekir. pinMode() fonksiyonunu aşağıdaki gibi kullanın:
pinMode(GPIO, ÇIKIŞ);
Dijital bir çıkışı kontrol etmek için, argüman olarak atıfta bulunduğunuz GPIO'yu (int sayı) ve YÜKSEK veya DÜŞÜK durumunu kabul eden digitalWrite() fonksiyonunu kullanmanız yeterlidir.
digitalWrite(GPIO, DURUM);
GPIO'lar 6 ila 11 (entegre SPI flaşına bağlı) ve GPIO'lar 34, 35, 36 ve 39 (yalnızca giriş GPIO'ları) hariç tüm GPIO'lar çıkış olarak kullanılabilir;
ESP32 GPIO'lar hakkında daha fazla bilgi edinin: ESP32 GPIO Referans Kılavuzu
ESP32 Dijital Girişleri Oku
Öncelikle pinMode() fonksiyonunu kullanarak okumak istediğiniz GPIO'yu INPUT olarak aşağıdaki gibi ayarlayın:
pinMode(GPIO, GİRİŞ);
Bir düğme gibi dijital bir girişi okumak için, argüman olarak atıfta bulunduğunuz GPIO'yu (int sayı) kabul eden digitalRead() fonksiyonunu kullanırsınız.
dijitalOkuma(GPIO);
32 ila 6 numaralı GPIO'lar (entegre SPI flaşına bağlı) hariç, tüm ESP11 GPIO'ları giriş olarak kullanılabilir.
ESP32 GPIO'lar hakkında daha fazla bilgi edinin: ESP32 GPIO Referans Kılavuzu
Proje Eskiample
Dijital giriş ve dijital çıkışların nasıl kullanılacağını size göstermek için basit bir proje oluşturacağız.ampbir buton ve bir LED ile. Aşağıdaki şekilde gösterildiği gibi, buton durumunu okuyacağız ve LED'i buna göre yakacağız.
Gerekli Parçalar
Devreyi oluşturmak için ihtiyacınız olan parçaların listesi şöyle:
- ESP32 DEVKIT V1
- 5 mm'lik LED
- 220 Ohm direnç
- Butona basınız
- 10k Ohm direnç
- Ekmek tahtası
- Bağlantı kabloları
Şematik Diyagram
İşleme başlamadan önce LED ve butondan oluşan bir devre kurmanız gerekiyor.
LED'i GPIO 5'e ve basmalı düğmeyi GPIO'ya bağlayacağız 4.Kod
Project_1_ESP32_Inputs_Outputs.ino kodunu arduino IDE'de açınKod Nasıl Çalışır?
Aşağıdaki iki satırda pinleri atamak için değişkenler oluşturuyorsunuz:
Buton GPIO 4'e, LED ise GPIO 5'e bağlanır. Arduino IDE'yi ESP32 ile kullanırken 4, GPIO 4'e, 5 ise GPIO 5'e karşılık gelir.
Sonra, düğme durumunu tutacak bir değişken yaratırsınız. Varsayılan olarak, 0'dır (basılmamış).
int düğmeDurumu = 0;
Setup()'ta butonu GİRİŞ olarak, LED'i ise ÇIKIŞ olarak başlatırsınız.
Bunun için, atıfta bulunduğunuz pini ve modunu (GİRİŞ veya ÇIKIŞ) kabul eden pinMode() fonksiyonunu kullanırsınız.
pinMode(buttonPin, GİRİŞ);
pinMode(ledPin, ÇIKIŞ);
Döngüde() butonun durumunu okuyup LED'i buna göre ayarladığınız yerdir.
Bir sonraki satırda buton durumunu okuyup buttonState değişkenine kaydediyorsunuz.
Daha önce gördüğümüz gibi digitalRead() fonksiyonunu kullanırsınız.
buttonState = digitalRead(buttonPin);
Aşağıdaki if ifadesi, düğme durumunun YÜKSEK olup olmadığını kontrol eder. Eğer öyleyse, ledPin'i ve YÜKSEK durumunu argüman olarak kabul eden digitalWrite() fonksiyonunu kullanarak LED'i açar.
eğer (buttonState == YÜKSEK)Düğme durumu YÜKSEK değilse, LED'i kapatırsınız. Sadece digitalWrite() fonksiyonunda ikinci argüman olarak DÜŞÜK'ü ayarlayın.
Kodun Yüklenmesi
Yükleme butonuna tıklamadan önce Araçlar > Kart kısmına gidin ve :DOIT ESP32 DEVKIT V1 kartını seçin.
Araçlar > Bağlantı Noktası'na gidin ve ESP32'nin bağlı olduğu COM bağlantı noktasını seçin. Ardından, yükleme düğmesine basın ve "Yükleme tamamlandı" mesajını bekleyin.Not: Hata ayıklama penceresinde çok sayıda nokta (bağlanıyor…__…__) ve “ESP32'ye bağlanılamadı: Paket başlığı beklenirken zaman aşımına uğradı” mesajı görüyorsanız, bu, noktalardan sonra ESP32 yerleşik ÖNYÜKLEME düğmesine basmanız gerektiği anlamına gelir.
görünmeye başla.Sorun giderme
Gösteri
Kodu yükledikten sonra devrenizi test edin. Basmalı düğmeye bastığınızda LED'iniz yanmalıdır:Ve bıraktığınızda kapatın:
Proje 2 ESP32 Analog Girişler
Bu proje Arduino IDE kullanarak ESP32 ile analog girişlerin nasıl okunacağını göstermektedir.
Analog okuma, potansiyometre gibi değişken dirençlerden veya analog sensörlerden gelen değerleri okumak için kullanışlıdır.
Analog Girişler (ADC)
ESP32 ile analog bir değeri okumak, değişken hacimleri ölçebileceğiniz anlamına gelirtag0 V ile 3.3 V arasındaki seviyeler.
cilttagÖlçülen değer daha sonra 0 ile 4095 arasında bir değere atanır; burada 0 V 0'a, 3.3 V ise 4095'e karşılık gelir. Herhangi bir hacimtage 0 V ile 3.3 V arasındaki değerlere, aradaki karşılık gelen değer verilecektir.ADC doğrusal değildir
ESP32 ADC pinlerini kullanırken ideal olarak doğrusal bir davranış beklersiniz.
Ancak bu gerçekleşmez. Elde edeceğiniz şey aşağıdaki grafikte gösterildiği gibi bir davranıştır:Bu davranış, ESP32'nizin 3.3 V ile 3.2 V'u ayırt edemediği anlamına gelir.
Her iki vol için de aynı değeri elde edeceksiniztagTürkçe: 4095.
Aynı durum çok düşük hacimli işlemler için de geçerlidirtage değerleri: 0 V ve 0.1 V için aynı değeri elde edersiniz: 0. ESP32 ADC pinlerini kullanırken bunu aklınızda bulundurmanız gerekir.
analogRead() İşlevi
Arduino IDE'yi kullanarak ESP32 ile analog bir girişi okumak analogRead() fonksiyonunu kullanmak kadar basittir. Argüman olarak okumak istediğiniz GPIO'yu kabul eder:
analogOkuma(GPIO);
DEVKIT V15board'da (1 GPIO'lu versiyon) sadece 30 adet mevcuttur.
ESP32 kartınızın pinout'unu alın ve ADC pinlerini bulun. Bunlar aşağıdaki şekilde kırmızı bir kenarlıkla vurgulanmıştır.Bu analog giriş pinleri 12 bit çözünürlüğe sahiptir. Bu, bir analog girişi okuduğunuzda aralığının 0 ila 4095 arasında değişebileceği anlamına gelir.
Not: Wi-Fi kullanıldığında ADC2 pinleri kullanılamaz. Bu nedenle, Wi-Fi kullanıyorsanız ve bir ADC2 GPIO'dan değer almakta sorun yaşıyorsanız, bunun yerine bir ADC1 GPIO kullanmayı düşünebilirsiniz, bu sorununuzu çözmelidir.
Her şeyin nasıl bir araya geldiğini görmek için basit bir örnek yapalımampPotansiyometreden analog bir değer okumak için kullanılır.
Gerekli Parçalar
Bu eski içinample, aşağıdaki parçalara ihtiyacınız olacak:
- ESP32 DEVKIT V1 Kartı
- Potansiyometre
- Ekmek tahtası
- Bağlantı kabloları
Şematik
ESP32'nize bir potansiyometre bağlayın. Potansiyometrenin orta pimi GPIO 4'e bağlanmalıdır. Aşağıdaki şematik diyagramı referans olarak kullanabilirsiniz.Kod
ESP32'yi Arduino IDE kullanarak programlayacağız, bu yüzden devam etmeden önce ESP32 eklentisinin yüklü olduğundan emin olun: (Bu adımı zaten yaptıysanız, bir sonraki adıma geçebilirsiniz.)
Arduino IDE'ye ESP32 Eklentisinin Kurulumu
Project_2_ESP32_Inputs_Outputs.ino kodunu arduino IDE'de açınBu kod basitçe potansiyometreden gelen değerleri okur ve bu değerleri Seri Monitör'e yazdırır.
Kodda, potansiyometrenin bağlı olduğu GPIO'yu tanımlayarak başlıyorsunuz. Bu örnekteample, GPIO 4.Setup()'ta 115200 baud hızında seri iletişimi başlatın.
Loop()'ta analogRead() fonksiyonunu kullanarak potPin'den gelen analog girişi okuyun.
Son olarak potansiyometreden okunan değerleri seri monitöre yazdırın.
Sağlanan kodu ESP32'nize yükleyin. Araçlar menüsünde doğru kartın ve COM portunun seçildiğinden emin olun.
Eskiyi Test Etmekample
Kodu yükledikten ve ESP32 reset butonuna bastıktan sonra Seri Monitörü 115200 baud hızında açın. Potansiyometreyi çevirin ve değerlerin değiştiğini görün.Alacağınız maksimum değer 4095, minimum değer ise 0'dır.
Özetleme
Bu makalede Arduino IDE ile ESP32 kullanarak analog girişleri nasıl okuyacağınızı öğrendiniz. Özetle:
- ESP32 DEVKIT V1 DOIT kartında (30 pinli versiyon) analog girişleri okuyabilmeniz için kullanabileceğiniz 15 adet ADC pini bulunmaktadır.
- Bu pinlerin çözünürlüğü 12 bittir, yani 0 ile 4095 arasında değerler alabilirsiniz.
- Arduino IDE'de bir değeri okumak için analogRead() fonksiyonunu kullanmanız yeterlidir.
- ESP32 ADC pinleri doğrusal bir davranışa sahip değildir. Muhtemelen 0 ile 0.1V veya 3.2 ile 3.3V arasında ayrım yapamayacaksınız. ADC pinlerini kullanırken bunu aklınızda bulundurmanız gerekir.
Proje 3 ESP32 PWM(Analog Çıkış)
Bu eğitimde size Arduino IDE kullanarak ESP32 ile PWM sinyallerinin nasıl üretileceğini göstereceğiz. Örnek olarakampESP32'nin LED PWM kontrolcüsünü kullanarak bir LED'i karartan basit bir devre inşa edeceğiz.ESP32 LED PWM Kontrol Cihazı
ESP32, farklı özelliklerde PWM sinyalleri üretecek şekilde yapılandırılabilen 16 bağımsız kanala sahip bir LED PWM kontrol cihazına sahiptir.
Arduino IDE'yi kullanarak PWM ile bir LED'i karartmak için izlemeniz gereken adımlar şunlardır:
- Öncelikle bir PWM kanalı seçmeniz gerekiyor. 16'dan 0'e kadar 15 kanal var.
- Daha sonra, PWM sinyal frekansını ayarlamanız gerekir. Bir LED için 5000 Hz frekansı kullanmak uygundur.
- Ayrıca sinyalin görev döngüsü çözünürlüğünü de ayarlamanız gerekir: 1 ila 16 bit arasında çözünürlükleriniz var. 8 bit çözünürlük kullanacağız, bu da LED parlaklığını 0 ila 255 arasında bir değer kullanarak kontrol edebileceğiniz anlamına gelir.
- Sonra, sinyalin hangi GPIO veya GPIO'larda görüneceğini belirtmeniz gerekir. Bunun için aşağıdaki işlevi kullanacaksınız:
ledcAttachPin(GPIO, kanal)
Bu fonksiyon iki argüman kabul eder. Birincisi, sinyali çıkışa verecek olan GPIO'dur ve ikincisi sinyali üretecek olan kanaldır. - Son olarak, PWM kullanarak LED parlaklığını kontrol etmek için aşağıdaki fonksiyonu kullanabilirsiniz:
ledcWrite(kanal, görev döngüsü)
Bu fonksiyon, PWM sinyalini üreten kanalı ve görev döngüsünü argüman olarak kabul eder.
Gerekli Parçalar
Bu eğitimi takip etmek için şu parçalara ihtiyacınız var:
- ESP32 DEVKIT V1 Kartı
- 5mm LED
- 220 Ohm direnç
- Ekmek tahtası
- Bağlantı kabloları
Şematik
Aşağıdaki şematik diyagramda gösterildiği gibi ESP32'nize bir LED bağlayın. LED, GPIO'ya bağlanmalıdır 4.Not: istediğiniz herhangi bir pini kullanabilirsiniz, yeter ki çıkış görevi görebilsin. Çıkış görevi görebilen tüm pinler PWM pinleri olarak kullanılabilir. ESP32 GPIO'ları hakkında daha fazla bilgi için şunu okuyun: ESP32 Pinout Referansı: Hangi GPIO pinlerini kullanmalısınız?
Kod
ESP32'yi Arduino IDE kullanarak programlayacağız, bu yüzden devam etmeden önce ESP32 eklentisinin yüklü olduğundan emin olun: (Bu adımı zaten yaptıysanız, bir sonraki adıma geçebilirsiniz.)
Arduino IDE'ye ESP32 Eklentisinin Kurulumu
Project_3_ESP32_PWM.ino kodunu arduino IDE'de açınLED'in bağlı olduğu pini tanımlayarak başlıyorsunuz. Bu durumda LED GPIO 4'e bağlıdır.
Daha sonra, PWM sinyal özelliklerini ayarlarsınız. 5000 Hz'lik bir frekans tanımlarsınız, sinyali oluşturmak için 0 kanalını seçersiniz ve 8 bitlik bir çözünürlük ayarlarsınız. Farklı PWM sinyalleri oluşturmak için bunlardan farklı diğer özellikleri seçebilirsiniz.
Setup()'ta, ledChannel, frekans ve çözünürlüğü argüman olarak kabul eden ledcSetup() fonksiyonunu kullanarak daha önce tanımladığınız özelliklerle LED PWM'yi aşağıdaki gibi yapılandırmanız gerekir:
Sonra, sinyali alacağınız GPIO'yu seçmeniz gerekir. Bunun için, sinyali almak istediğiniz GPIO'yu ve sinyali üreten kanalı argüman olarak kabul eden ledcAttachPin() fonksiyonunu kullanın. Bu örnekteample, GPIO 4'e karşılık gelen ledPin GPIO'sundan sinyali alacağız. Sinyali üreten kanal ise 0 kanalına karşılık gelen ledChannel'dır.
Döngüde, LED parlaklığını artırmak için görev döngüsünü 0 ile 255 arasında değiştireceksiniz.
Ve sonra parlaklığı azaltmak için 255 ile 0 arasında.
LED'in parlaklığını ayarlamak için, sinyali üreten kanalı ve görev döngüsünü argüman olarak kabul eden ledcWrite() fonksiyonunu kullanmanız yeterlidir.
8 bit çözünürlük kullandığımız için görev döngüsü 0 ile 255 arasında bir değer kullanılarak kontrol edilecektir. ledcWrite() fonksiyonunda sinyali üreten kanalı kullandığımızı ve GPIO'yu kullanmadığımızı unutmayın.
Eskiyi Test Etmekample
Kodu ESP32'nize yükleyin. Doğru kartı ve COM portunu seçtiğinizden emin olun. Devrenize bakın. Parlaklığı artıran ve azaltan bir dimmer LED'iniz olmalı.
Proje 4 ESP32 PIR Hareket Sensörü
Bu proje, bir PIR hareket sensörü kullanarak ESP32 ile hareketin nasıl algılanacağını göstermektedir. Hareket algılandığında buzzer bir alarm sesi çıkaracak ve önceden belirlenmiş bir süre (örneğin 4 saniye) boyunca hareket algılanmadığında alarmı durduracaktır.
HC-SR501 Hareket Sensörü Nasıl Çalışır?
.HC-SR501 sensörünün çalışma prensibi, hareket eden nesne üzerindeki kızılötesi radyasyonun değişimine dayanmaktadır. HC-SR501 sensörü tarafından algılanabilmesi için nesnenin iki gereksinimi karşılaması gerekir:
- Nesne kızılötesi yolla yayılıyor.
- Nesne hareket ediyor veya sallanıyor
Bu yüzden:
Eğer bir nesne kızılötesi ışın yayıyorsa ancak hareket etmiyorsa (örneğin, bir kişi hareketsiz duruyorsa) sensör tarafından algılanmaz.
Eğer bir nesne hareket ediyorsa ancak kızılötesi ışın yaymıyorsa (örneğin robot veya araç), sensör tarafından ALGILANMAZ.
Zamanlayıcıların Tanıtımı
Bu eskiampAyrıca zamanlayıcıları da tanıtacağız. Hareket algılandıktan sonra LED'in önceden belirlenmiş saniye sayısı kadar açık kalmasını istiyoruz. Kodunuzu engelleyen ve belirli saniye sayısı kadar başka bir şey yapmanıza izin vermeyen bir delay() fonksiyonu kullanmak yerine bir zamanlayıcı kullanmalıyız.Delay() fonksiyonu
Yaygın olarak kullanıldığı için delay() fonksiyonuna aşina olmalısınız. Bu fonksiyonun kullanımı oldukça basittir. Bağımsız değişken olarak tek bir int sayı kabul eder.
Bu sayı, programın bir sonraki kod satırına geçene kadar beklemesi gereken süreyi milisaniye cinsinden ifade eder.Delay(1000) yaptığınızda programınız o satırda 1 saniye durur.
delay() bir engelleme fonksiyonudur. Engelleme fonksiyonları, belirli bir görev tamamlanana kadar bir programın başka bir şey yapmasını engeller. Aynı anda birden fazla görevin gerçekleşmesi gerekiyorsa, delay() kullanamazsınız.
Çoğu projede gecikmeleri kullanmaktan kaçınmalı ve bunun yerine zamanlayıcıları kullanmalısınız.
millis() fonksiyonu
millis() adlı bir fonksiyonu kullanarak programın ilk başlatılmasından bu yana geçen milisaniye sayısını döndürebilirsiniz.Bu fonksiyon neden yararlıdır? Çünkü biraz matematik kullanarak, kodunuzu engellemeden ne kadar zaman geçtiğini kolayca doğrulayabilirsiniz.
Gerekli Parçalar
Bu eğitimi takip etmek için aşağıdaki parçalara ihtiyacınız var
- ESP32 DEVKIT V1 Kartı
- PIR hareket sensörü (HC-SR501)
- Aktif Buzzer
- Bağlantı kabloları
- Ekmek tahtası
ŞematikNot: Çalışma hacmitagHC-SR501'in e'si 5V'tur. Güç vermek için Vin pinini kullanın.
Kod
Bu eğitime devam etmeden önce Arduino IDE'nizde ESP32 eklentisinin yüklü olması gerekir. Eğer daha önce yapmadıysanız, ESP32'yi Arduino IDE'nize yüklemek için aşağıdaki eğitimlerden birini izleyin. (Bu adımı zaten yaptıysanız, bir sonraki adıma geçebilirsiniz.)
Arduino IDE'ye ESP32 Eklentisinin Kurulumu
Project_4_ESP32_PIR_Motion_Sensor.ino kodunu arduino IDE'de açın.
Gösteri
Kodu ESP32 kartınıza yükleyin. Doğru kartı ve COM portunu seçtiğinizden emin olun.Kod referans adımlarını yükleyin.
Seri Monitörü 115200 baud hızında açın.Elinizi PIR sensörünün önüne getirin. Buzzer açılmalı ve Seri Monitörde “Hareket algılandı! Buzzer alarmı” mesajı yazdırılmalıdır.
4 saniye sonra buzzer'ın kapanması gerekir.
Proje 5 ESP32 Anahtarı Web Sunucu
Bu projede bağımsız bir web Arduino IDE programlama ortamını kullanarak çıkışları (iki LED) kontrol eden bir ESP32'ye sahip sunucu. web sunucu mobil uyumludur ve yerel ağda bir tarayıcı olarak herhangi bir cihazla erişilebilir. Size nasıl oluşturulacağını göstereceğiz web sunucu ve kodun adım adım nasıl çalıştığı.
Proje Bittiview
Doğrudan projeye geçmeden önce, ne yapacağımızı ana hatlarıyla belirtmek önemlidir. web sunucu bunu yapacaktır, böylece daha sonraki adımları takip etmek daha kolay olacaktır.
- The web ESP32 GPIO 26 ve GPIO 27'ye bağlı iki LED'i kontrol edecek sunucuyu inşa edeceksiniz;
- ESP32'ye erişebilirsiniz web yerel ağdaki bir tarayıcıya ESP32 IP adresini yazarak sunucuya bağlanabilirsiniz;
- Cihazınızdaki butonlara tıklayarak web Sunucunuzda her bir LED'in durumunu anında değiştirebilirsiniz.
Gerekli Parçalar
Bu eğitim için aşağıdaki parçalara ihtiyacınız olacak:
- ESP32 DEVKIT V1 Kartı
- 2x 5mm LED
- 2x 200 Ohm direnç
- Ekmek tahtası
- Bağlantı kabloları
Şematik
Devreyi kurarak başlayın. Aşağıdaki şematik diyagramda gösterildiği gibi iki LED'i ESP32'ye bağlayın - bir LED GPIO 26'ya, diğeri ise GPIO 27'ye bağlansın.
Not: 32 pinli ESP36 DEVKIT DOIT kartını kullanıyoruz. Devreyi birleştirmeden önce kullandığınız kartın pinout'unu kontrol ettiğinizden emin olun.Kod
Burada ESP32'yi oluşturan kodu sağlıyoruz web sunucu. Project_5_ESP32_Switch kodunu açın _Web_Server.ino arduino IDE'de, ancak henüz yüklemeyin. Sizin için çalışması için bazı değişiklikler yapmanız gerekiyor.
ESP32'yi Arduino IDE kullanarak programlayacağız, bu yüzden devam etmeden önce ESP32 eklentisinin yüklü olduğundan emin olun: (Bu adımı zaten yaptıysanız, bir sonraki adıma geçebilirsiniz.)
Arduino IDE'ye ESP32 Eklentisinin Kurulumu
Ağ Kimlik Bilgilerinizi Ayarlama
Aşağıdaki satırları ağ kimlik bilgilerinizle değiştirmeniz gerekir: SSID ve parola. Kod, değişiklikleri nerede yapmanız gerektiği konusunda iyi bir şekilde yorumlanmıştır.Kodun Yüklenmesi
Artık kodu yükleyebilir ve web sunucu hemen çalışacaktır.
ESP32'ye kod yüklemek için şu adımları izleyin:
- ESP32 kartınızı bilgisayarınıza takın;
- Arduino IDE'de Araçlar > Kart kısmından kartınızı seçin (bizim örneğimizde ESP32 DEVKIT DOIT kartını kullanıyoruz);
- Araçlar > Port kısmından COM portunu seçin.
- Arduino IDE'deki Yükle butonuna basın ve kod derlenip kartınıza yüklenirken birkaç saniye bekleyin.
- “Yükleme tamamlandı” mesajını bekleyin.
ESP IP Adresini Bulma
Kodu yükledikten sonra Seri Monitörü 115200 baud hızında açın.ESP32 EN düğmesine basın (sıfırlama). ESP32 Wi-Fi'ye bağlanır ve Seri Monitörde ESP IP adresini çıkarır. Bu IP adresini kopyalayın, çünkü ESP32'ye erişmek için buna ihtiyacınız var web sunucu.
Erişim Web Sunucu
Erişim için web Sunucuya bağlanın, tarayıcınızı açın, ESP32 IP adresini yapıştırın, aşağıdaki sayfayı göreceksiniz.
Not: Tarayıcınız ve ESP32'niz aynı LAN'a bağlı olmalıdır.Seri Monitör'e bir göz atarsanız, arka planda neler olduğunu görebilirsiniz. ESP yeni bir istemciden (bu durumda tarayıcınız) bir HTTP isteği alır.
HTTP isteği hakkında diğer bilgileri de görebilirsiniz.
Gösteri
Artık test edebilirsiniz web sunucu düzgün çalışıyor. LED'leri kontrol etmek için düğmelere tıklayın.Aynı zamanda, arka planda neler olup bittiğini görmek için Seri Monitör'e bakabilirsiniz. ÖrneğinampÖrneğin, GPIO 26'yı açmak için düğmeye tıkladığınızda, ESP32 /26/on üzerinde bir istek alır URL.
ESP32 bu isteği aldığında GPIO 26'ya bağlı LED'i açar ve durumunu günceller. web sayfa.
GPIO 27 için düğme benzer şekilde çalışır. Düzgün çalıştığını test edin.
Kod Nasıl Çalışır?
Bu bölümde kodun nasıl çalıştığını daha yakından inceleyeceğiz.
İlk yapmanız gereken WiFi kütüphanesini dahil etmek.Daha önce de belirttiğimiz gibi aşağıdaki satırlara çift tırnak işaretleri arasına ssid ve şifrenizi yazmanız gerekmektedir.
Daha sonra, web sunucudan 80 numaralı porta.
Aşağıdaki satır, HTTP isteğinin başlığını saklamak için bir değişken oluşturur:
Sonra, çıktılarınızın geçerli durumunu depolamak için yardımcı değişkenler yaratırsınız. Daha fazla çıktı eklemek ve durumunu kaydetmek istiyorsanız, daha fazla değişken yaratmanız gerekir.
Ayrıca her çıkışınıza bir GPIO atamanız gerekir. Burada GPIO 26 ve GPIO 27 kullanıyoruz. Herhangi bir uygun GPIO'yu kullanabilirsiniz.
kurmak()
Şimdi setup()'a geçelim. İlk olarak hata ayıklama amaçlı 115200 baud hızında seri iletişim başlatıyoruz.Ayrıca GPIO'larınızı OUTPUT olarak tanımlayıp LOW olarak ayarlayın.
Aşağıdaki satırlar Wi-Fi bağlantısını WiFi.begin(ssid, password) ile başlatır, başarılı bir bağlantı için bekler ve Seri Monitörde ESP IP adresini yazdırır.
döngü()
Döngüde() yeni bir istemcinin sunucuyla bağlantı kurduğunda ne olacağını programlıyoruz. web sunucu.
ESP32, aşağıdaki satırla gelen istemcileri her zaman dinler:Bir istemciden bir istek alındığında, gelen verileri kaydedeceğiz. Bunu izleyen while döngüsü, istemci bağlı kaldığı sürece çalışmaya devam edecektir. Ne yaptığınızı tam olarak bilmiyorsanız, kodun aşağıdaki bölümünü değiştirmenizi önermiyoruz.
If ve else ifadelerinin bir sonraki bölümü, bilgisayarınızda hangi düğmeye basıldığını kontrol eder. web sayfa ve çıktıları buna göre kontrol eder. Daha önce gördüğümüz gibi, farklı bir istekte bulunuruz URLBasılan düğmeye göre değişir.
ÖrneğinampÖrneğin, GPIO 26 ON düğmesine bastıysanız, ESP32 /26/ON üzerinde bir istek alır URL (bu bilgiyi Seri Monitör'deki HTTP başlığında görebiliriz). Yani, başlığın GET /26/on ifadesini içerip içermediğini kontrol edebiliriz. İçeriyorsa, output26state değişkenini ON olarak değiştiririz ve ESP32 LED'i açar.
Bu, diğer düğmeler için de benzer şekilde çalışır. Yani, daha fazla çıktı eklemek istiyorsanız, bunları dahil etmek için kodun bu bölümünü değiştirmelisiniz.
HTML'yi görüntüleme web sayfa
Yapmanız gereken bir sonraki şey, web sayfa. ESP32, tarayıcınıza bazı HTML kodları içeren bir yanıt gönderecektir. web sayfa.
The web sayfa istemciye bu ifadeyi kullanarak gönderilir client.println(). İstemciye argüman olarak ne göndermek istediğinizi girmelisiniz.
Göndermemiz gereken ilk şey her zaman HTML gönderdiğimizi belirten şu satırdır.Daha sonra, aşağıdaki satır şu şekilde yapılır: web sayfa herhangi bir şekilde duyarlı web tarayıcı.
Ve favicon üzerindeki istekleri engellemek için aşağıdaki satır kullanılır. – Bu satır için endişelenmenize gerek yok.
Şekillendirme Web Sayfa
Sonra, düğmeleri ve öğeleri biçimlendirmek için biraz CSS metnimiz var web sayfa görünümü.
Helvetica yazı tipini seçiyoruz, blok halinde ve ortaya hizalanmış olarak gösterilecek içeriği tanımlıyoruz.Butonlarımızı #4CAF50 rengiyle, kenarlıksız, beyaz renkli metinle ve şu dolguyla biçimlendiriyoruz: 16px 40px. Ayrıca text-decoration'ı none olarak ayarlıyoruz, font boyutunu, kenar boşluğunu ve imleci bir işaretçiye tanımlıyoruz.
Ayrıca, daha önce tanımladığımız düğmenin tüm özelliklerine sahip ancak farklı bir renge sahip ikinci bir düğme için stil tanımlıyoruz. Bu, kapatma düğmesinin stili olacak.
Ayarlama Web Sayfa İlk Başlık
Bir sonraki satırda, makalenizin ilk başlığını ayarlayabilirsiniz. web sayfa. Burada “ESP32 Web Sunucu” olarak yazabilir, ancak bu metni istediğiniz gibi değiştirebilirsiniz.Düğmeleri ve Karşılık Gelen Durumu Görüntüleme
Daha sonra, GPIO 26'nın geçerli durumunu görüntülemek için bir paragraf yazarsınız. Gördüğünüz gibi, output26State değişkenini kullanıyoruz, böylece bu değişken değiştiğinde durum anında güncelleniyor.Daha sonra, GPIO'nun geçerli durumuna bağlı olarak açık veya kapalı düğmesini görüntüleriz. GPIO'nun geçerli durumu kapalıysa, AÇIK düğmesini gösteririz, değilse KAPALI düğmesini gösteririz.
Aynı prosedürü GPIO 27 için de kullanıyoruz.
Bağlantıyı Kapatma
Son olarak, yanıt sona erdiğinde, başlık değişkenini temizliyoruz ve client.stop() ile istemciyle olan bağlantıyı durduruyoruz.
Özetleme
Bu eğitimde size bir web ESP32 ile sunucu. Size basit bir örnek gösterdikampİki LED'i kontrol eden bir çıkış var, ancak fikir bu LED'leri bir röle veya kontrol etmek istediğiniz herhangi bir çıkışla değiştirmek.
Proje 6 RGB LED Web Sunucu
Bu projede size bir RGB LED'i ESP32 kartı kullanarak uzaktan nasıl kontrol edeceğinizi göstereceğiz. web renk seçicili sunucu.
Proje Bittiview
Başlamadan önce bu projenin nasıl çalıştığına bakalım:
- ESP32 web sunucu bir renk seçici görüntüler.
- Bir renk seçtiğinizde tarayıcınız bir istekte bulunur URL Seçili rengin R, G ve B parametrelerini içeren.
- ESP32'niz isteği alır ve her renk parametresi için değeri böler.
- Daha sonra RGB LED'i kontrol eden GPIO'lara karşılık gelen değerde bir PWM sinyali gönderir.
RGB LED'ler nasıl çalışır?
Ortak katotlu RGB LED'lerde üç LED'in hepsi negatif bağlantıyı (katot) paylaşır. Kit içerisinde bulunanların hepsi ortak katotlu RGB'dir.Farklı renkler nasıl yaratılır?
RGB LED ile elbette kırmızı, yeşil ve mavi ışık üretebilirsiniz ve her bir LED'in yoğunluğunu ayarlayarak diğer renkleri de üretebilirsiniz.
ÖrneğinampÖrneğin, tamamen mavi ışık üretmek için, mavi LED'i en yüksek yoğunluğa, yeşil ve kırmızı LED'leri ise en düşük yoğunluğa ayarlarsınız. Beyaz ışık için, üç LED'i de en yüksek yoğunluğa ayarlarsınız.
Renkleri karıştırmak
Diğer renkleri üretmek için üç rengi farklı yoğunluklarda birleştirebilirsiniz. Her bir LED'in yoğunluğunu ayarlamak için bir PWM sinyali kullanabilirsiniz.
LED'ler birbirine çok yakın olduğu için gözümüz üç rengi tek tek görmek yerine renklerin birleşiminden oluşan sonucu görür.
Renkleri nasıl kombinleyeceğinize dair fikir edinmek için aşağıdaki tabloya göz atabilirsiniz.
Bu en basit renk karıştırma tablosudur, ancak size nasıl çalıştığı ve farklı renklerin nasıl üretileceği konusunda bir fikir verir.Gerekli Parçalar
Bu proje için aşağıdaki parçalara ihtiyacınız var:
- ESP32 DEVKIT V1 Kartı
- RGB LED
- 3x 220 ohm dirençler
- Bağlantı kabloları
- Ekmek tahtası
ŞematikKod
ESP32'yi Arduino IDE kullanarak programlayacağız, bu yüzden devam etmeden önce ESP32 eklentisinin yüklü olduğundan emin olun: (Bu adımı zaten yaptıysanız, bir sonraki adıma geçebilirsiniz.)
- Arduino IDE'ye ESP32 Eklentisinin Kurulumu
Devreyi birleştirdikten sonra kodu açın
Proje_6_RGB_LED_WebArduino IDE'de _Server.ino.
Kodu yüklemeden önce, ESP'nin yerel ağınıza bağlanabilmesi için ağ kimlik bilgilerinizi girmeyi unutmayın.Kod nasıl çalışır?
ESP32 taslağı WiFi.h kütüphanesini kullanıyor.Aşağıdaki satırlar, istekteki R, G ve B parametrelerini tutacak dize değişkenlerini tanımlar.
Sonraki dört değişken HTTP isteğini daha sonra çözümlemek için kullanılır.
Şerit R, G ve B parametrelerini kontrol edecek GPIO'lar için üç değişken oluşturun. Bu durumda GPIO 13, GPIO 12 ve GPIO 14 kullanıyoruz.
Bu GPIO'ların PWM sinyalleri çıkışına ihtiyacı vardır, bu yüzden önce PWM özelliklerini yapılandırmamız gerekir. PWM sinyal frekansını 5000 Hz'e ayarlayın. Ardından, her renk için bir PWM kanalı ilişkilendirin
Ve son olarak PWM kanallarının çözünürlüğünü 8 bit olarak ayarlayın
Setup()'ta PWM özelliklerini PWM kanallarına atayın
PWM kanallarını ilgili GPIO'lara bağlayın
Aşağıdaki kod bölümü, renk seçicinizi görüntüler web sayfaya gidin ve seçtiğiniz renge göre bir istekte bulunun.
Bir renk seçtiğinizde aşağıdaki formatta bir talep alırsınız.
Yani, R, G ve B parametrelerini elde etmek için bu dizeyi bölmemiz gerekiyor. Parametreler redString, greenString ve blueString değişkenlerinde kaydedilir ve 0 ile 255 arasında değerlere sahip olabilir.Şeridi ESP32 ile kontrol etmek için, HTTP'den kodlanmış değerlerle PWM sinyalleri üretmek üzere ledcWrite() işlevini kullanın. rica etmek.
Not: ESP32 ile PWM hakkında daha fazla bilgi edinin: Proje 3 ESP32 PWM (Analog Çıkış)
Şeridi ESP8266 ile kontrol etmek için sadece şunu kullanmamız gerekiyor:
HTPP isteğinden kodlanan değerlerle PWM sinyalleri üretmek için analogWrite() fonksiyonu.
analogWrite(kırmızıPin, kırmızıDize.toInt());
analogWrite(yeşilPin, yeşilDize.toInt());
analogWrite(maviPin, maviDize.toInt())
Değerleri bir string değişkeninde aldığımız için toInt() metodunu kullanarak bunları tam sayılara dönüştürmemiz gerekiyor.
Gösteri
Ağ bilgilerinizi girdikten sonra doğru kartı ve COM portunu seçin ve kodu ESP32'nize yükleyin. Kod yükleme referans adımları.
Yüklemeden sonra Seri Monitörü 115200 baud hızında açın ve ESP Etkinleştir/Sıfırla düğmesine basın. Kartın IP adresini almalısınız.Tarayıcınızı açın ve ESP IP adresini girin. Şimdi, RGB LED için bir renk seçmek üzere renk seçiciyi kullanın.
Daha sonra rengin etkili olması için “Renk Değiştir” butonuna basmanız gerekiyor.RGB LED'i kapatmak için siyah rengi seçin.
En güçlü renkler (renk seçicinin en üstünde) daha iyi sonuçlar üretecek olanlardır.
Proje 7 ESP32 Rölesi Web Sunucu
ESP32 ile bir röle kullanmak, AC ev aletlerini uzaktan kontrol etmenin harika bir yoludur. Bu eğitim, bir röle modülünün ESP32 ile nasıl kontrol edileceğini açıklar.
Bir röle modülünün nasıl çalıştığına, rölenin ESP32'ye nasıl bağlanacağına ve nasıl inşa edileceğine bir göz atacağız. web Bir röleyi uzaktan kontrol eden sunucu.
Rölelerin Tanıtımı
Röle elektrikle çalışan bir anahtardır ve diğer tüm anahtarlar gibi açılıp kapatılabilir, akımın geçmesine izin verebilir veya vermeyebilir. Düşük voltajla kontrol edilebilir.tagESP3.3 GPIO'ları tarafından sağlanan 32V gibi ve yüksek hacimli kontrol etmemize olanak tanırtag12V, 24V veya şebeke voltajı gibitage (Avrupa'da 230V, ABD'de 120V).Sol tarafta, yüksek ses seviyesini bağlamak için iki adet üçlü soket seti bulunmaktadır.tagve sağ taraftaki pimler (düşük hacimli)tage) ESP32 GPIO'larına bağlanın.
Şebeke Hacmitage BağlantılarÖnceki fotoğrafta görülen röle modülünde, her biri üç sokete sahip iki konnektör vardır: ortak (COM), Normalde Kapalı (NC) ve Normalde Açık (NO).
- COM: Kontrol etmek istediğiniz akımı (şebeke voltajı) bağlayıntage).
- NC (Normalde Kapalı): normalde kapalı yapılandırma, rölenin varsayılan olarak kapalı olmasını istediğinizde kullanılır. NC veya COM pinleri bağlıdır, yani devreyi açmak ve akım akışını durdurmak için ESP32'den röle modülüne bir sinyal göndermediğiniz sürece akım akmaktadır.
- NO (Normalde Açık): Normalde açık yapılandırma tam tersi şekilde çalışır: NO ve COM pinleri arasında bir bağlantı yoktur, dolayısıyla devreyi kapatmak için ESP32'den bir sinyal göndermediğiniz sürece devre kesilir.
Kontrol PimleriDüşük hacimlitage tarafında dört pinlik bir set ve üç pinlik bir set bulunur. İlk set, modülü çalıştırmak için VCC ve GND'den ve sırasıyla alt ve üst röleleri kontrol etmek için giriş 1 (IN1) ve giriş 2'den (IN2) oluşur.
Röle modülünüzde yalnızca bir kanal varsa, yalnızca bir IN pininiz olur. Dört kanalınız varsa, dört IN pininiz olur ve bu şekilde devam eder.
IN pinlerine gönderdiğiniz sinyal, rölenin aktif olup olmadığını belirler. Giriş yaklaşık 2V'un altına düştüğünde röle tetiklenir. Bu, aşağıdaki senaryolara sahip olacağınız anlamına gelir:
- Normalde Kapalı konfigürasyon (NC):
- YÜKSEK sinyal – akım akıyor
- DÜŞÜK sinyal – akım akmıyor
- Normalde Açık yapılandırma (NO):
- YÜKSEK sinyal – akım akmıyor
- DÜŞÜK sinyal – akan akım
Akımın çoğunlukla akması gerekiyorsa ve yalnızca ara sıra durdurmak istiyorsanız, normalde kapalı bir yapılandırma kullanmalısınız.
Akımın ara sıra akmasını istiyorsanız normalde açık bir yapılandırma kullanın (örneğinample, al'ı açamp ara sıra).
Güç Kaynağı Seçimiİkinci pin grubu GND, VCC ve JD-VCC pinlerinden oluşur.
JD-VCC pimi rölenin elektromıknatısına güç verir. Modülün VCC ve JD-VCC pimlerini bağlayan bir jumper başlığına sahip olduğunu fark edin; burada gösterilen sarıdır, ancak sizinki farklı bir renkte olabilir.
Jumper kapağı takılıyken, VCC ve JD-VCC pinleri bağlanır. Bu, röle elektromıknatısının doğrudan ESP32 güç pininden güç aldığı anlamına gelir, bu nedenle röle modülü ve ESP32 devreleri birbirlerinden fiziksel olarak izole edilmez.
Jumper kapağı olmadan, rölenin elektromıknatısını JD-VCC pimi üzerinden çalıştırmak için bağımsız bir güç kaynağı sağlamanız gerekir. Bu yapılandırma, röleleri modülün dahili optocoupler'ı ile ESP32'den fiziksel olarak izole eder ve bu da elektriksel yükselmeler durumunda ESP32'nin hasar görmesini önler.
ŞematikUyarı: Yüksek hacim kullanımıtagGüç kaynakları ciddi yaralanmalara neden olabilir.
Bu nedenle yüksek beslemeli LED'ler yerine 5mm LED'ler kullanılır.tagDeneyde ampuller var. Eğer şebeke voltajına aşina değilseniztagSize yardımcı olacak birine sorun. ESP'yi programlarken veya devrenizi kablolarken her şeyin ana güç kaynağından ayrıldığından emin olun.tage.ESP32 için Kütüphanenin Kurulumu
Bunu inşa etmek için web sunucu, ESPAsync kullanıyoruzWebSunucu kütüphanesi ve AsyncTCP Kütüphanesi.
ESPAsync'i yüklemeWebSunucu kütüphanesi
Yüklemek için aşağıdaki adımları izleyin ESPA senkronizasyonuWebSunucu kütüphane:
- ESPAsync'i indirmek için buraya tıklayınWebSunucu kütüphanesi. Şunlara sahip olmalısınız:
İndirilenler klasörünüzde bir .zip klasörü - .zip klasörünü açın ve ESPAsync'i edinmelisinizWebServer-master klasörü
- Klasörünüzü ESPAsync'ten yeniden adlandırınWebSunucu-ana bilgisayardan ESPAsync'eWebSunucu
- ESPAsync'i taşıyınWebSunucu klasörünü Arduino IDE kurulum kütüphaneleri klasörünüze taşıyın
Alternatif olarak, Arduino IDE'nizde Sketch > Include'a gidebilirsiniz
Kütüphane > .ZIP kütüphanesi ekle… seçeneğine tıklayın ve yeni indirdiğiniz kütüphaneyi seçin.
ESP32 için AsyncTCP Kütüphanesini Yükleme
The ESPA senkronizasyonuWebSunucu kütüphane gerektirir AsenkronTCP kütüphaneden işe. Takip et
Bu kütüphaneyi kurmak için bir sonraki adımlar:
- AsyncTCP kütüphanesini indirmek için buraya tıklayın. İndirmeler klasörünüzde bir .zip klasörü olmalı
- .zip klasörünü açın ve AsyncTCP-master klasörünü elde etmelisiniz
1. Klasörünüzün adını AsyncTCP-master'dan AsyncTCP'ye değiştirin
3. AsyncTCP klasörünü Arduino IDE kurulum kütüphaneleri klasörünüze taşıyın
4. Son olarak Arduino IDE'nizi yeniden açın
Alternatif olarak, Arduino IDE'nizde Sketch > Include'a gidebilirsiniz
Kütüphane > .ZIP kütüphanesi ekle… seçeneğine tıklayın ve yeni indirdiğiniz kütüphaneyi seçin.
Kod
ESP32'yi Arduino IDE kullanarak programlayacağız, bu yüzden devam etmeden önce ESP32 eklentisinin yüklü olduğundan emin olun: (Bu adımı zaten yaptıysanız, bir sonraki adıma geçebilirsiniz.)
Arduino IDE'ye ESP32 Eklentisinin Kurulumu
Gerekli kütüphaneleri yükledikten sonra Project_7_ESP32_Relay_ kodunu açınWebArduino IDE'de _Server.ino.
Kodu yüklemeden önce, ESP'nin yerel ağınıza bağlanabilmesi için ağ kimlik bilgilerinizi girmeyi unutmayın.Gösteri
Gerekli değişiklikleri yaptıktan sonra kodunuzu ESP32'nize yükleyin. Kod yükleme referans adımları.
Seri Monitörü 115200 baud hızında açın ve IP adresini almak için ESP32 EN düğmesine basın. Ardından, yerel ağınızda bir tarayıcı açın ve erişim sağlamak için ESP32 IP adresini yazın. web sunucu.
Seri Monitörü 115200 baud hızında açın ve IP adresini almak için ESP32 EN düğmesine basın. Ardından, yerel ağınızda bir tarayıcı açın ve erişim sağlamak için ESP32 IP adresini yazın. web sunucu.Not: Tarayıcınız ve ESP32'niz aynı LAN'a bağlı olmalıdır.
Kodunuzda tanımladığınız röle sayısı kadar iki butonla aşağıdaki gibi bir şey elde etmelisiniz.Artık rölelerinizi akıllı telefonunuz üzerinden butonlarla kontrol edebilirsiniz.
Proje_8_Çıktı_Durum_Eşitleme_ Web_Sunucu
Bu proje, ESP32 veya ESP8266 çıkışlarının bir web sunucu ve fiziksel bir düğme aynı anda. Çıktı durumu, sunucuda güncellenir. web sayfa fiziksel düğmeyle mi değiştiriliyor yoksa web sunucu.
Proje Bittiview
Gelin projenin nasıl çalıştığına kısaca bir bakalım.ESP32 veya ESP8266 bir web Bir çıktının durumunu kontrol etmenizi sağlayan sunucu;
- Mevcut çıkış durumu şu şekilde görüntülenir: web sunucu;
- ESP aynı zamanda aynı çıkışı kontrol eden fiziksel bir basmalı düğmeye de bağlıdır;
- Çıkış durumunu fiziksel düğmeyi kullanarak değiştirirseniz, geçerli durumu da güncellenir. web sunucu.
Özetle, bu proje aynı çıktıyı bir web sunucu ve bir basma düğmesi aynı anda. Çıkış durumu her değiştiğinde, web sunucu güncellendi.
Gerekli Parçalar
Devreyi oluşturmak için ihtiyacınız olan parçaların listesi şöyle:
- ESP32 DEVKIT V1 Kartı
- 5 mm'lik LED
- 220Ohm direnç
- Butona basınız
- 10k Ohm direnç
- Ekmek tahtası
- Bağlantı kabloları
ŞematikESP32 için Kütüphanenin Kurulumu
Bunu inşa etmek için web sunucu, ESPAsync kullanıyoruzWebSunucu kütüphanesi ve AsyncTCP Kütüphanesi.(Bu adımı daha önce yaptıysanız bir sonraki adıma geçebilirsiniz.)
ESPAsync'i yüklemeWebSunucu kütüphanesi
ESPAsync'i yüklemek için aşağıdaki adımları izleyinWebSunucu kütüphanesi:
- ESPAsync'i indirmek için buraya tıklayınWebSunucu kütüphanesi. Şunlara sahip olmalısınız:
İndirilenler klasörünüzde bir .zip klasörü - .zip klasörünü açın ve ESPAsync'i edinmelisinizWebServer-master klasörü
- Klasörünüzü ESPAsync'ten yeniden adlandırınWebSunucu-ana bilgisayardan ESPAsync'eWebSunucu
- ESPAsync'i taşıyınWebSunucu klasörünü Arduino IDE kurulum kütüphaneleri klasörünüze taşıyın
Alternatif olarak, Arduino IDE'nizde Sketch > Include'a gidebilirsiniz
Kütüphane > .ZIP kütüphanesi ekle… seçeneğine tıklayın ve yeni indirdiğiniz kütüphaneyi seçin.
ESP32 için AsyncTCP Kütüphanesini Yükleme
ESPAsyncWebSunucu kitaplığının çalışması için AsyncTCP kitaplığına ihtiyaç vardır. Bu kitaplığı yüklemek için aşağıdaki adımları izleyin:
- AsyncTCP kütüphanesini indirmek için buraya tıklayın. İndirmeler klasörünüzde bir .zip klasörü olmalı
- .zip klasörünü açın ve AsyncTCP-master klasörünü elde etmelisiniz
- Klasörünüzün adını AsyncTCP-master'dan AsyncTCP'ye değiştirin
- AsyncTCP klasörünü Arduino IDE kurulum kütüphaneleri klasörünüze taşıyın
- Son olarak Arduino IDE'nizi yeniden açın
Alternatif olarak, Arduino IDE'nizde Sketch > Include'a gidebilirsiniz
Kütüphane > .ZIP kütüphanesi ekle… seçeneğine tıklayın ve yeni indirdiğiniz kütüphaneyi seçin.
Kod
ESP32'yi Arduino IDE kullanarak programlayacağız, bu yüzden devam etmeden önce ESP32 eklentisinin yüklü olduğundan emin olun: (Bu adımı zaten yaptıysanız, bir sonraki adıma geçebilirsiniz.)
Arduino IDE'ye ESP32 Eklentisinin Kurulumu
Gerekli kütüphaneleri yükledikten sonra kodu açın
Proje_8_Çıktı_Durum_Eşitleme_WebArduino IDE'de _Server.ino.
Kodu yüklemeden önce, ESP'nin yerel ağınıza bağlanabilmesi için ağ kimlik bilgilerinizi girmeyi unutmayın.
Kod Nasıl Çalışır?
Düğme Durumu ve Çıkış Durumu
ledState değişkeni LED çıkış durumunu tutar. Varsayılan olarak, LED web sunucu başlıyor, DÜŞÜK.
buttonState ve lastButtonState, basmalı butona basılıp basılmadığını tespit etmek için kullanılır.Düğme (web sunucusu)
Buton oluşturmak için gerekli HTML kodunu index_html değişkenine eklemedik.
Çünkü mevcut LED durumuna bağlı olarak bunu da butonla değiştirebilmek istiyoruz.
Yani, daha sonra kodda düğmeyi oluşturmak için HTML metniyle değiştirilecek olan %BUTTONPLACEHOLDER% düğmesi için bir yer tutucu oluşturduk (bu, processor() fonksiyonunda yapılır).işlemci()
Processor() fonksiyonu HTML metnindeki tüm yer tutucuları gerçek değerlerle değiştirir. İlk olarak, HTML metinlerinin herhangi bir
yer tutucular %BUTTONPLACEHOLDER%.Ardından, geçerli çıktı durumunu döndüren theoutputState() fonksiyonunu çağırın. Bunu outputStateValue değişkenine kaydederiz.
Daha sonra bu değeri kullanarak butonu doğru durumda görüntüleyecek HTML metnini oluşturun:
Çıktı Durumunu Değiştirmek İçin HTTP GET İsteği (JavaScript)
Butona bastığınızda thetoggleCheckbox() fonksiyonu çağrılır. Bu fonksiyon farklı bir istekte bulunacaktır. URLLED'i açmak veya kapatmak için s.LED'i yakmak için /update?state=1'e bir istek yapılır URL:
Aksi takdirde /update?state=0 üzerinde bir istekte bulunur URL.
HTTP GET Durumu Güncelleme İsteği (JavaScript)
Çıkış durumunu güncel tutmak için web sunucu, /state üzerinde yeni bir istek yapan aşağıdaki fonksiyonu çağırırız URL her saniye.İstekleri Yönet
Daha sonra, ESP32 veya ESP8266'nın bu cihazlarda istekler aldığında ne olacağını ele almamız gerekiyor URLs.
Kök / üzerinde bir istek alındığındaURL, hem HTML sayfasını hem de işlemciyi gönderiyoruz.Aşağıdaki satırlar /update?state=1 veya /update?state=0 üzerinde bir istek alıp almadığınızı kontrol eder URL ve ledState'i buna göre değiştirir.
/state üzerinde bir istek alındığında URL, mevcut çıktı durumunu gönderiyoruz:
döngü()
Loop()'ta, pushbutton'ı geri tepiyoruz ve ledState değerine bağlı olarak LED'i açıp kapatıyoruz. değişken.Gösteri
Kodu ESP32 kartınıza yükleyin.Kod referans adımlarını yükleyin.
Daha sonra Seri Monitörü 115200 baud hızında açın. Dahili EN/RST butonuna basarak IP adresini alın.Yerel ağınızda bir tarayıcı açın ve ESP IP adresini yazın. Şuraya erişiminiz olmalıdır: web sunucu aşağıda gösterildiği gibidir.
Not: Tarayıcınız ve ESP32'niz aynı LAN'a bağlı olmalıdır.Düğmeyi açıp kapatabilirsiniz web LED'i açmak için sunucu.
Aynı LED'i fiziksel basmalı düğmeyle de kontrol edebilirsiniz. Durumu her zaman otomatik olarak güncellenecektir. web sunucu.
Proje 9 ESP32 DHT11 Web Sunucu
Bu projede, asenkron bir ESP32'nin nasıl oluşturulacağını öğreneceksiniz web Arduino IDE kullanarak sıcaklık ve nemi gösteren DHT11'li sunucu.
Ön koşullar
The web Oluşturacağımız sunucu, yenilemeye gerek kalmadan okumaları otomatik olarak günceller web sayfa.
Bu proje ile şunları öğreneceksiniz:
- DHT sensörlerinden sıcaklık ve nem nasıl okunur;
- Eşzamansız bir yapı oluşturun web sunucuyu kullanarak ESPA senkronizasyonuWebSunucu kütüphanesi;
- Sensör okumalarını, cihazı yenilemeye gerek kalmadan otomatik olarak güncelleyin web sayfa.
Eşzamansız Web Sunucu
İnşa etmek için web sunucuyu kullanacağız ESPA senkronizasyonuWebSunucu kütüphanesi asenkron bir yapı oluşturmanın kolay bir yolunu sağlar web sunucu. Eşzamansız bir yapı oluşturma web sunucunun birkaç avantajı vartagKütüphanenin GitHub sayfasında belirtildiği gibi:
- “Aynı anda birden fazla bağlantıyı yönetin”;
- "Cevabınızı gönderdiğinizde, sunucu arka planda cevabı göndermekle ilgilenirken, siz diğer bağlantıları hemen yönetmeye hazır olursunuz";
- “Şablonları işlemek için basit şablon işleme motoru”;
Gerekli Parçalar
Bu eğitimi tamamlamak için aşağıdaki parçalara ihtiyacınız var:
- ESP32 geliştirme kartı
- DHT11 Modülü
- Ekmek tahtası
- Bağlantı kabloları
ŞematikKütüphaneleri Yükleme
Bu proje için birkaç kütüphane yüklemeniz gerekiyor:
- The DHT ve Adafruit Birleşik Sensör DHT sensöründen okunacak sürücü kütüphaneleri.
- ESPA senkronizasyonuWebSunucu Ve Asenkron TCP asenkron oluşturmak için kütüphaneler web sunucu.
Bu kütüphaneleri yüklemek için aşağıdaki talimatları izleyin:
DHT Sensör Kütüphanesini Yükleme
Arduino IDE'yi kullanarak DHT sensöründen okumak için, şunu yüklemeniz gerekir: DHT sensör kütüphanesi. Kütüphaneyi kurmak için aşağıdaki adımları izleyin.
- DHT Sensör kütüphanesini indirmek için buraya tıklayın. İndirmeler klasörünüzde bir .zip klasörünüz olmalı
- .zip klasörünü açın ve DHT-sensor-library-master klasörünü elde etmelisiniz
- Klasörünüzün adını DHT-sensor-library-master'dan DHT_sensor'a değiştirin
- DHT_sensor klasörünü Arduino IDE kurulum kütüphaneleri klasörünüze taşıyın
- Son olarak Arduino IDE'nizi yeniden açın
Adafruit Unified Sensör Sürücüsünü Yükleme
Ayrıca şunu da yüklemeniz gerekir: Adafruit Unified Sensor Sürücü kütüphanesi DHT sensörüyle çalışmak için. Kütüphaneyi yüklemek için sonraki adımları izleyin.
- Adafruit Unified Sensor kütüphanesini indirmek için buraya tıklayın. İndirmeler klasörünüzde bir .zip klasörünüz olmalı
- .zip klasörünü açın ve Adafruit_sensor-master klasörünü elde etmelisiniz
- Klasörünüzün adını Adafruit_sensor-master'dan Adafruit_sensor'a değiştirin
- Adafruit_sensor klasörünü Arduino IDE kurulum kütüphaneleri klasörünüze taşıyın
- Son olarak Arduino IDE'nizi yeniden açın
ESPAsync'i yüklemeWebSunucu kütüphanesi
Yüklemek için aşağıdaki adımları izleyin ESPA senkronizasyonuWebSunucu kütüphane:
- ESPAsync'i indirmek için buraya tıklayınWebSunucu kütüphanesi. Şunlara sahip olmalısınız:
İndirilenler klasörünüzde bir .zip klasörü - .zip klasörünün sıkıştırmasını açın ve şunları yapmalısınız:
ESPAsync'i edininWebServer-master klasörü - Klasörünüzü ESPAsync'ten yeniden adlandırınWebSunucu-ana bilgisayardan ESPAsync'eWebSunucu
- ESPAsync'i taşıyınWebSunucu klasörünü Arduino IDE kurulum kütüphaneleri klasörünüze taşıyın
ESP32 için Async TCP Kütüphanesini Yükleme
The ESPA senkronizasyonuWebSunucu kütüphane gerektirir AsenkronTCP kütüphanenin çalışması için. Bu kütüphaneyi kurmak için aşağıdaki adımları izleyin:
- AsyncTCP kütüphanesini indirmek için buraya tıklayın. İndirmeler klasörünüzde bir .zip klasörü olmalı
- .zip klasörünü açın ve AsyncTCP-master klasörünü elde etmelisiniz
- Klasörünüzün adını AsyncTCP-master'dan AsyncTCP'ye değiştirin
- AsyncTCP klasörünü Arduino IDE kurulum kütüphaneleri klasörünüze taşıyın
- Son olarak Arduino IDE'nizi yeniden açın
Kod
ESP32'yi Arduino IDE kullanarak programlayacağız, bu yüzden devam etmeden önce ESP32 eklentisinin yüklü olduğundan emin olun: (Bu adımı zaten yaptıysanız, bir sonraki adıma geçebilirsiniz.)
Arduino IDE'ye ESP32 Eklentisinin Kurulumu
Gerekli kütüphaneleri yükledikten sonra kodu açın
Proje_9_ESP32_DHT11_WebArduino IDE'de _Server.ino.
Kodu yüklemeden önce, ESP'nin yerel ağınıza bağlanabilmesi için ağ kimlik bilgilerinizi girmeyi unutmayın.Kod Nasıl Çalışır?
Aşağıdaki paragraflarda kodun nasıl çalıştığını açıklayacağız. Daha fazla bilgi edinmek istiyorsanız okumaya devam edin veya nihai sonucu görmek için Gösterim bölümüne geçin.
Kitaplıkları içe aktarma
Öncelikle gerekli kütüphaneleri içe aktarın. WiFi, ESPAsyncWebSunucu ve ESPAsyncTCP'nin oluşturulması için gereklidir web Sunucu. DHT11 veya DHT22 sensörlerinden okumak için Adafruit_Sensor ve DHT kütüphanelerine ihtiyaç vardır.Değişken tanımı
DHT veri pininin bağlı olduğu GPIO'yu tanımlayın. Bu durumda GPIO 4'e bağlıdır.Ardından, kullandığınız DHT sensör tipini seçin. Örnek örneğimizdeample, DHT22 kullanıyoruz. Başka bir tür kullanıyorsanız, sensörünüzün yorumunu kaldırmanız ve diğerlerinin yorumunu kaldırmanız yeterlidir.
Daha önce tanımladığımız tür ve pin ile bir DHT nesnesi oluşturalım.Bir Async OluşturWeb80 numaralı porttaki sunucu nesnesi.
Sıcaklık ve Nem Fonksiyonlarını Oku
İki fonksiyon oluşturduk: Biri sıcaklığı okumak için. İki fonksiyon oluşturduk: Biri sıcaklığı okumak için (readDHTTemperature()) ve diğeri nemi okumak için (readDHTHumidity()).Sensör okumalarını almak, dht nesnesinde readTemperature() ve readHumidity() yöntemlerini kullanmak kadar basittir. Sensör okumalarını almak, dht nesnesinde readTemperature() ve readHumidity() yöntemlerini kullanmak kadar basittir.
Ayrıca sensörün okumaları alamaması durumunda iki çizgi (–) döndüren bir koşulumuz da var.
Okumalar dize türü olarak döndürülür. Bir float'ı dizeye dönüştürmek için String() fonksiyonunu kullanın
Varsayılan olarak, sıcaklığı Celsius derece cinsinden okuyoruz. Sıcaklığı Fahrenheit derece cinsinden almak için, sıcaklığı Celsius cinsinden yorumlayın ve Fahrenheit cinsinden sıcaklığı yorumdan çıkarın, böylece aşağıdakine sahip olursunuz:
Kodu Yükle
Şimdi, kodu ESP32'nize yükleyin. Doğru kartı ve COM portunu seçtiğinizden emin olun.Kod referans adımlarını yükleyin.
Yüklemeden sonra Seri Monitörü 115200 baud hızında açın. ESP32 sıfırlama düğmesine basın. ESP32 IP adresi seri olarak yazdırılmalıdır monitör.Gösteri
Bir tarayıcı açın ve ESP32 IP adresini yazın. web Sunucu en son sensör okumalarını görüntülemelidir.
Not: Tarayıcınız ve ESP32'niz aynı LAN'a bağlı olmalıdır.
Sıcaklık ve nem okumalarının, ekranı yenilemeye gerek kalmadan otomatik olarak güncellendiğini unutmayın. web sayfa.
Proje_10_ESP32_OLED_Ekran
Bu proje Arduino IDE kullanarak ESP0.96 ile 1306 inç SSD32 OLED ekranın nasıl kullanılacağını göstermektedir.
0.96 inç OLED Ekranı Tanıtıyoruz
The OLED ekran Bu eğitimde kullanacağımız model SSD1306 modelidir: Aşağıdaki şekilde gösterildiği gibi 0.96x128 piksel çözünürlüğe sahip, tek renkli, 64 inçlik bir ekran.OLED ekran arka aydınlatmaya ihtiyaç duymaz, bu da karanlık ortamlarda çok hoş bir kontrastla sonuçlanır. Ayrıca pikselleri yalnızca açıkken enerji tüketir, bu nedenle OLED ekran diğer ekranlarla karşılaştırıldığında daha az güç tüketir.
OLED ekran I2C iletişim protokolünü kullandığı için kablolama çok basittir. Aşağıdaki tabloyu referans olarak kullanabilirsiniz.
OLED Pimi | ESP32 |
Şarap | 3.3V |
Yeraltı | Yeraltı |
SCL | 22 |
SDA | 21 |
ŞematikSSD1306 OLED Kütüphanesini Yükleme – ESP32
OLED ekranı ESP32 ile kontrol etmek için çeşitli kütüphaneler mevcuttur.
Bu eğitimde iki Adafruit kütüphanesini kullanacağız: Adafruit_SSD1306 kütüphanesi Ve Adafruit_GFX kütüphanesi.
Bu kütüphaneleri yüklemek için aşağıdaki adımları izleyin.
- Arduino IDE'nizi açın ve Sketch > Include Library > Manage Libraries'e gidin. Library Manager açılmalıdır.
- Arama kutusuna “SSD1306” yazın ve Adafruit’ten SSD1306 kütüphanesini yükleyin.
- Adafruit’ten SSD1306 kütüphanesini kurduktan sonra arama kutusuna “GFX” yazın ve kütüphaneyi kurun.
- Kütüphaneleri yükledikten sonra Arduino IDE'nizi yeniden başlatın.
Kod
Gerekli kütüphaneleri yükledikten sonra, arduino IDE'de Project_10_ESP32_OLED_Display.ino'yu açın. kod
ESP32'yi Arduino IDE kullanarak programlayacağız, bu yüzden devam etmeden önce ESP32 eklentisinin yüklü olduğundan emin olun: (Bu adımı zaten yaptıysanız, bir sonraki adıma geçebilirsiniz.)
Arduino IDE'ye ESP32 Eklentisinin KurulumuKod Nasıl Çalışır?
Kitaplıkları içe aktarma
Öncelikle gerekli kütüphaneleri içe aktarmanız gerekiyor. I2C'yi kullanmak için Wire kütüphanesi ve ekrana yazmak için Adafruit kütüphaneleri: Adafruit_GFX ve Adafruit_SSD1306.OLED ekranını başlatın
Daha sonra OLED genişliğinizi ve yüksekliğinizi tanımlarsınız. Bu örnekteample, 128x64 OLED ekran kullanıyoruz. Başka boyutlar kullanıyorsanız, bunu SCREEN_WIDTH ve SCREEN_HEIGHT değişkenlerinde değiştirebilirsiniz.Daha sonra I2C haberleşme protokolü (&Wire) ile daha önce tanımlanmış genişlik ve yüksekliğe sahip bir görüntüleme nesnesi başlatın.
(-1) parametresi, OLED ekranınızın bir RESET pinine sahip olmadığı anlamına gelir. OLED ekranınızın bir RESET pini varsa, bir GPIO'ya bağlanmalıdır. Bu durumda, GPIO numarasını bir parametre olarak geçirmelisiniz.
Setup()'ta, hata ayıklama amacıyla Seri Monitörü 115200 baud hızında başlatın.OLED ekranını begin() metoduyla aşağıdaki gibi başlatın:
Bu kod parçası aynı zamanda ekrana bağlanamadığımız durumda Seri Monitörde bir mesaj yazdırır.
Farklı bir OLED ekran kullanıyorsanız, OLED adresini değiştirmeniz gerekebilir. Bizim durumumuzda, adres 0x3C'dir.
Ekranı başlattıktan sonra, OLED'in metni yazmadan önce başlatılması için yeterli zamana sahip olması için iki saniyelik bir gecikme ekleyin:
Ekranı temizleyin, yazı tipi boyutunu ve rengini ayarlayın ve metin yazın
Görüntüyü başlattıktan sonra, clearDisplay() metodu ile görüntü arabelleğini temizleyin:
Metin yazmadan önce, metin boyutunu, rengini ve metnin OLED'de nerede görüntüleneceğini ayarlamanız gerekir.
setTextSize() metodunu kullanarak yazı tipi boyutunu ayarlayın:setTextColor() metodu ile yazı rengini ayarlayın:
WHITE, yazı tipini beyaz, arka planı siyah olarak ayarlar.
setCursor(x,y) metodunu kullanarak metnin başladığı konumu tanımlayın. Bu durumda, metni (0,0) koordinatlarında - sol üst köşede - başlayacak şekilde ayarlıyoruz.Son olarak, println() metodunu kullanarak metni aşağıdaki gibi ekrana gönderebilirsiniz
Daha sonra metni ekranda görüntülemek için display() metodunu çağırmanız gerekir.
Adafruit OLED kütüphanesi, metinleri kolayca kaydırmak için kullanışlı yöntemler sunar.
- startscrollright(0x00, 0x0F): metni soldan sağa kaydır
- startscrollleft(0x00, 0x0F): metni sağdan sola kaydır
- startscrolldiagright(0x00, 0x07): metni sol alt köşeden sağ üst köşeye kaydır startscrolldiagleft(0x00, 0x07): metni sağ alt köşeden sol üst köşeye kaydır
Kodu Yükle
Şimdi kodu ESP32'nize yükleyin. Kod yükleme referans adımları.
Kodu yükledikten sonra OLED'de kayan yazılar gösterilecektir.
Belgeler / Kaynaklar
![]() |
LAFVIN ESP32 Temel Başlangıç Seti [pdf] Kullanım Kılavuzu ESP32 Temel Başlangıç Seti, ESP32, Temel Başlangıç Seti, Başlangıç Seti |