ESP8266-01 Pimleri ve Ledleri Kullanma
1 Temmuz 2018'de güncellendi - GPIO0 bir çıktı olarak kullanıldığında yeniden programlama hakkında not eklendi.
ESP8266-01 Led'leri göstermek için 2 Nisan 2018'de güncellendi. Bu ledleri bağlı oldukları pimlerden kontrol edebilirsiniz.
Giriş
ESP8266-01, çok düşük maliyetli bir WiFi özellikli çiptir. Ancak çok sınırlı bir G / Ç vardır. İlk bakışta, programlama için yapılandırdığınızda tüm pimler kullanılır.
Bu öğretici, ESP8266 GPIO0 / GPIO2 / GPIO15 pinlerini kullanarak bir sonraki ESP8266-01 projeniz için nasıl dört (4) kullanılabilir giriş / çıkış alabileceğinizi ve daha fazla girdi almak için IC2'yi nasıl kullanabileceğinizi göstermek için kullanılır.
Buradaki kod, modülü Kurullar Yöneticisi ile Yükleme altında //github.com/esp8266/arduino'da açıklandığı gibi Arduino IDE kurulumunu kullanarak programladığınızı varsayar. Araçlar → Pano menüsünden Boards Manager'ı açarken ve Katkıda Bulunan Türü'nü seçin ve esp8266 platformunu yükleyin.
Bu yönergeleri www.pfod.com.au adresinden ESP8266-01 Pin Magic adresinden de edinebilirsiniz.
Adım 1: ESP8266-01 Pimleri
ESP8266-01, en küçük ESP8266 modülüdür ve sadece 8 pimi vardır. Bu VCC, GND, RST (sıfırlama) ve CH_PD (yonga seçimi) G / Ç pinleri değildir, ancak modülün çalışması için gereklidir. Bu, GPIO0, GPIO2, TX ve RX'i mümkün olan G / Ç pinleri olarak kullanılabilir halde bırakır, ancak bunların önceden atanmış işlevleri de vardır. GPIO0 ve GPIO2, modülün hangi modda başladığını belirler ve TX / RX pinleri modülü programlamak için ve hata ayıklama için yaygın olarak kullanılan Seri I / O için kullanılır. GPIO0 ve GPIO2'de modülün doğru şekilde başlatılmasını sağlamak için çekme dirençlerinin bağlı olması gerekir.
Adım 2: ESP8266 Programlama İpuçları (espcomm Başarısız Oldu)
ESP8266'yı Arduino IDE kullanarak programlarken (bkz. ESP8266-01 Wifi Shield) bazen (genellikle) Arduino IDE'de aşağıdaki gibi bir hata mesajı alırsınız: -
esp_com açık başarısız oldu
hata: COM33 açılamadı
hata: espcomm_open başarısız oldu
hata: espcomm_upload_mem başarısız oldu
Bu durumda, çalışması için şu adımları izleyin: -
- Arduino Tools menüsünde ESP8266 kartınızın seçili olup olmadığını kontrol edin
- Arduino Tools menüsünde bir COM portu seçtiğinizi kontrol edin
- GPIO0 topraklı ESP8266 güç döngüsü (temiz güç uygulaması, aşağıya bakın)
- 3) düzeltmezse, USB kablosunu bilgisayardan çıkarın, birkaç saniye bekleyin ve tekrar takın
- 4) düzeltmezse, USB kablosunu PC'den çıkarın, Arduino IDE'yi kapatın, Arduino IDE'yi açın, USB kablosunu tekrar takın.
ESP8266'ya güç uyguladığınızda, GPIO0'ı toprakladıktan sonra temiz şekilde uygulandığından emin olun. Bağlantıyı sallamayın. ESP8266 led'i yanıp sönmeden yanmalı ve açık kalmalıdır.
Adım 3: En İyi Hile - I2C Kullanın
ESP8266-01'e ekstra girişler almanın en iyi hilesi bir I2C arayüzü kullanmaktır.
Bir seçenek GPIO0 ve GPIO2'yi I2C veri yolu olarak kullanmaktır.
Modülün doğru şekilde başlatılması için gereken çekme dirençleri, I2C veri yolu pull-up dirençleri ve diğer, bağımlı, veri yolu üzerindeki bileşenler açık kollektör olduğu için ikiye katlanabilir ve bu nedenle güç açıkken veri yolunu aşağı çekmemelidir. Bununla birlikte, bazı durumlarda köleler, özellikle de batarya yedeklemeli olanlar sıkışabilir ve veri yolunu tutabilirler. Bu durumlarda, ESP8266 önyükleme aşamasına gelene kadar otobüsü yalıtmanız gerekir.
I2C veri yolu için TX ve RX kullanarak bu sorunu önleyebilirsiniz
Unutulmaması gereken birkaç nokta:
- GPIO1 (TX) Veri hattı olarak kullanılır, çünkü açılışta GPIO1'de her zaman bazı hata ayıklama çıktıları alırsınız. Bu çıktıyı bastırmanın bir yolu yoktur, ancak Saat hattı (RX) yüksek tutulur, bu nedenle bu verilerin hiçbiri köle olarak saatlenmez
- ESP8266 programlanırken, RX hattı programlayıcının çıkışına bağlanır. Programlamanın sonunda ESP8266 yeniden başlatılır ve 330 Koruma direnci RX'in programlayıcının çıkış sürücüsünün kısa devre yapmasını önler.
- I2C serisi dirençler, I2C veriyolundaki şortlardan TX, RX için benzer koruma sağlar
ESP8266, 3.3V'luk bir cihazdır, bu nedenle tercihen 3.3V I2C slave kullanın. Hepsi olmasa da çoğu I2C cihazı bugünlerde 3.3V. “Genel olarak, bir cihazın diğerinden daha yüksek voltajda olduğu bir sistemde, iki cihazı, aralarında herhangi bir seviye kaydırma devresi olmadan I2C üzerinden bağlamak mümkün olabilir. İşin püf noktası, çekme dirençlerini iki voltajın altına bağlamaktır. ” (SparkFun I2C eğitimi) 5V ve 3.3V cihazların bir karışımı için, çekme dirençlerini yukarıda gösterildiği gibi 3.3V hattına bağlayın.
I2C kullanmak, ESP8266-01'e temel modülün tek ADC girişini göstermeyen çok kanallı bir A-D dönüştürücü eklemek için harika bir yoldur. Örneğin Adafruit 12bit I2C 4 kanal ADC kullanarak veya analog çıkış için SparkFun'un I2C DAC Breakout - MCP4725 kartı. I2C veriyollarında başka birçok sensör türü de mevcuttur.
I2C sorunlarının üstesinden gelmek için //www.i2c-bus.org/i2c-primer/common-problems ... sayfasına bakınız. Ayrıca, veri yolunun temizlenmesine yardımcı olacak kısa bir yöntem için I2C Pil Destekli RTC için Güvenilir Başlangıç'a bakın
Adım 4: ÇIKTI için GPIO0 / GPIO2 ve GİRİŞ için RX kullanma
WiFi bağlantısı üzerinden hata ayıklama mesajları gönderebilirken, TX bağlantısını kullanmak genellikle uygundur. Bir sonraki örnek, çıkış olarak GPIO0 ve GPIO2'nin ve giriş olarak RX'in nasıl kullanılacağını gösterir.
kullanma
Serial.begin (115200, SERIAL_8N1, SERIAL_TX_ONLY);
Seri'ye hata ayıklama iletileri yazarken, RX'i genel amaçlı giriş (veya başka bir çıkış) olarak kullanmanızı sağlar. Yine RX'teki 330 ohm direnç, Flash programlayıcısına programcının sürücüsünü kısa devre yapmaya karşı korur. NOT: ESP8266'yı programlamak için S1'in açık olması gerekir.
TX pinine çizimden GPIO1 ve RX GPIO3 olarak erişilebilir
GPIO0'ı çıkış olarak kullanırken yeniden programlama
Not: Programlama moduna geçmek için GPIO0'ın topraklanması gerekir. Çiziminiz yüksek sürüyorsa, topraklamak ESP8266 yongasına zarar verebilir. Kodunuz GPIO0 çıkışını çalıştırdığında ESP8266'yı yeniden programlamanın güvenli yolu: -
a) Kartı kapatın
b) GPIO0'dan gnd'ye kısa devre
c) GPIO0'daki kısa devre nedeniyle program moduna giren panoya güç verin
d) kısa programı GPIO0'dan çıkarın, böylece program çalıştığında çıkışı kısaltmazsınız
e) tahtayı yeniden programlayın
f) gerekirse kartın gücünü kapatıp açın.
Adım 5: Başka Bir Numara - Bir Röleyi Sürmek ve GPIO0 / GPIO2 Kullanarak Bir Basma Düğmesini Okumak
Pimleri yapılandırmanın başka bir yolu. Not: Bu hile yalnızca izole girişli bir röle modülünüz varsa (N1 ve N1-com) çalışır. Bu sınırlama ve destekleyici kodun karmaşıklığı nedeniyle RX'i girdi olarak kullanan önceki örnek tercih edilir.
ESP8266 GPIO0 / GPIO2 / GPIO15 pinlerini kullanmak, ekstra bir giriş elde etmek için GPIO0 / GPIO2'nin birlikte nasıl kullanılacağını zaten ele almıştır. Burada bu örnek, röle sürücü çıkışı olarak GPIO0'ı ve giriş olarak GPIO0 / GPIO2'yi kullanacak şekilde genişletilecektir.
İşte bir pdf olarak şematik.
Burada GPIO0, röleyi çalıştırmak için bir çıkış olarak kullanılır ve GPIO0 / GPIO2, WiFi üzerinden uzaktan kumandaya ek olarak, röleyi açmak ve kapatmak için manuel geçersiz kılma olarak kullanılan anlık butonu okumak için bir giriş olarak kullanılır. bağ. Anlık basma düğmesi, güç uygulandığında basıldığında yapılandırma modunu etkinleştirmek için de kullanılır.
Buradaki hile, ESP8266 modülü başlatılırken GPIO0 ve GPIO2'yi yüksek tutarken tüm bunları yapmaktır.
Çekme dirençleri, R1 ve R3, bu iki pim için gerekli olan Yüksekliği sağlar, ancak GPIO0 ve GPIO2'ye bağlı herhangi bir ekstra devrenin pimleri düşük çekemediğinden emin olmanız gerekir. Optik olarak izole edilmiş röle + 3.3V ve GPIO0 arasında bağlanır. Bu, GPIO0'u başlatma sırasında yüksek tutar, ancak başlatmadan sonra GPIO0'un bir çıkış yapmasını sağlar ve röleyi çalıştırmak için röle girişini topraklar. Anlık basma düğmesinin modül başlatılırken çalıştırılmasının önemi yoktur, çünkü sadece GPIO0'ı GPIO2'ye bağlar ve her ikisini de çekme dirençlerine bağlar.
Yapılandırma Modunu Algılama
ESP8266'yı geçici erişim noktası olarak kullanarak, burada açıklandığı gibi bir web sayfası üzerinden yapılandırabilirsiniz. Bu işlemin bir kısmı, açılış modunda yapılandırma moduna girmek istediğiniz yazılımı belirtmek için bir basma düğmesi veya kısa devre bağlantısı kullanmaktır.
ESP8266 modülü başlatıldıktan sonra, setup () kodunu çalıştırır. Bu kodda, anlık basma düğmesine basılıp basılmadığını tespit etmek için, basma düğmesine GND sağlamak için GPIO0'u düşük yapmanıza ve ardından düşük olup olmadığını görmek için GPIO2 girişini kontrol etmenize gerek yoktur. Bu kontrolün bir yan etkisi, ünite yapılandırma moduna alındığında rölenin her zaman çalıştırılmasıdır. Rölenin çalıştığını gördüğünüzde basma düğmesini bırakabilirsiniz, çünkü girişi o zamana kadar algılanacaktır. Burada kurulumda bazı örnek kodlar ()
boolean configMode = yanlış; // yapılandırma modunda değil normalde void setup () {pinMode (0, OUTPUT); digitalWrite (0, DÜŞÜK); // GPIO0 çıkışını düşük yapın // GPIO0 girişine bastırarak basma düğmesinin basılı olup olmadığını görmek için GPIO2 girişini kontrol edin configMode = (digitalRead (2) == LOW); if (configMode) {// AP'yi başlat ve yapılandırma web sayfasını sunmaya hazır ol // yapılandırma modunda belirtmek için röleyi açık bırak // ......} else {// normal kullanım // GPIO0'ı YÜKSEK kapat röle digitalWrite (0, YÜKSEK); // .....} // kurulumun geri kalanı ()}
Manuel Geçersiz Kılma Basma Düğmesini Tespit Etme
Bir önceki bölüm, yapılandırma modunu etkinleştirmek için basma düğmesine basıldığında algılanmayı tespit etti. Bu düğmeyi, röleyi WiFi bağlantısı üzerinden kontrol edebilmenin yanı sıra röleyi açmak ve kapatmak için manuel geçersiz kılma olarak kullanmak istiyoruz.
Rölenin WiFi kontrolü burada ele alınmamıştır, ancak pfodApp kullanılarak kolayca yapılabilir. ESP8266 modülleri için pfodDesigner ile Arduino kodu oluşturma hakkında bilgi için OLIMEX Menu Generator'a bakın.
Bu bölüm, düğmeye basıldığında kullanıcının röleyi değiştirmek istediğini belirten, yani KAPALI olduğu açıksa veya kapalı ise AÇIK duruma getirildiğinin nasıl tespit edileceği ile ilgilidir. Şema yukarıdakiyle aynıdır, tüm hileler koddadır. Dikkate alınması gereken iki durum vardır: -
- Röle KAPALI ve kullanıcı basma düğmesini kullanarak açmak istiyor,
- Röle AÇIK ve kullanıcı basma düğmesini kullanarak kapatmak istiyor.
Röle KAPALI ve kullanıcı basma düğmesini kullanarak açmak istiyor.
Bu durumda GPIO0 çıkışı YÜKSEK olur. Aslında GPIO0 bu durumda bir giriş olabilir, çünkü R1 çekme direnci rölenin açılmamasını sağlayacaktır. İşte bu hile. Bu durumda GPIO0'ı Giriş yapın ve GPIO2 Çıkışını DÜŞÜK hale getirin ve ardından kullanıcı basma düğmesine bastığında iki şey olur: - a) basma düğmesi aracılığıyla GPIO2 tarafından sağlanan toprak nedeniyle röle açılır ve b) GPIO0 girişi düşecektir. Kod Giriş GPIO0'un durumunu kontrol eder ve DÜŞÜK olduğunda kod kullanımın basma düğmesine bastığını bilir ve rölenin açık olmasını ister. Kod daha sonra basma düğmesi bırakıldığında röleyi açık tutmak için GPIO0'u bir Çıkış DÜŞÜK yapar.
Röle AÇIK ve kullanıcı basma düğmesini kullanarak kapatmak istiyor.
Bu durumda, yukarıdaki durumdan sonra, GPIO0 röleyi AÇIK tutan bir Çıkış DÜŞÜK'tür. Şimdi bu durumda GPIO2'yi bir Giriş (R3 tarafından çekilir) yapın ve ardından kullanıcı basma düğmesine bastığında, GPIO2 Girişi GPIO0'daki DÜŞÜK Çıkış tarafından DÜŞÜK çekilir. Kullanım basma düğmesini serbest bıraktığında, kod DÜŞÜK ila YÜKSEK geçişi algılar ve ardından GPIO0'u, yukarı çekme direnci R1 nedeniyle röleyi serbest bırakan ve GPIO2'yi yukarıdaki i) durumu için bir Çıkış DÜŞÜK yapan bir Giriş yapar.
Bir numara daha. Durum ii) için, röleyi KAPALI konuma getirmek üzere DÜŞÜK ila YÜKSEK geçiş algılayan Giriş olarak GPIO2'ye ihtiyacımız vardır. Ancak GPIO2 ve i) vakasının sonunda giriş yaparsak, kullanıcı röleyi AÇMAK için bastığı düğmeyi bıraktığından DÜŞÜK - YÜKSEK geçiş elde ederiz. Rölenin hemen tekrar kapatılmasını önlemek için, röleyi açtıktan sonraki ilk DÜŞÜK ila YÜKSEK geçiş, yalnızca röleyi AÇMAK için bastığı düğmeyi bıraktığı için yok sayılır.
Örnek döngü () Röle Manuel Aşırı Sürüş Kodu
Bu kodda basitlik için anahtar açmayı görmezden geliyorum. Herhangi bir gerçek uygulamada girişler iptal edilmelidir.
Örnek kod burada, ESP8266_01pinMagic_1.ino
Yine bu, Seri hata ayıklama veya diğer G / Ç olarak kullanmak için TX / RX pinlerini bırakır
Sonuç
Bu sayfa ESP8266-01'de bulunan sınırlı pinlerden nasıl en iyi şekilde yararlanabileceğinizi göstermektedir. GPIO0 / GPIO2'yi I2C veri yolu olarak kullanmak, en büyük genişletmeyi sağlar, ancak projeyi I2C kullanmıyorsanız, GPIO0 / GPIO2'yi kullanarak bir röle kullanabilir ve bir düğme girişi algılayabilirsiniz. Her iki durumda da Seri hata ayıklama için TX / RX kullanılabilir veya WiFi bağlantısı üzerinden hata ayıklama yazdırma bildirimleri gönderirseniz, bu pinler genel G / Ç için de kullanılabilir.