İçindekiler:

Flash ESP-01 (ESP8266) USB'den Seriye Adaptörsüz Raspberry Pi Kullanarak: 3 Adım
Flash ESP-01 (ESP8266) USB'den Seriye Adaptörsüz Raspberry Pi Kullanarak: 3 Adım

Video: Flash ESP-01 (ESP8266) USB'den Seriye Adaptörsüz Raspberry Pi Kullanarak: 3 Adım

Video: Flash ESP-01 (ESP8266) USB'den Seriye Adaptörsüz Raspberry Pi Kullanarak: 3 Adım
Video: Unknown USB Device Device Descriptor Request Failed | Fix 2024, Temmuz
Anonim
Flash ESP-01 (ESP8266) USB'den Seriye Adaptörsüz Raspberry Pi Kullanıyor
Flash ESP-01 (ESP8266) USB'den Seriye Adaptörsüz Raspberry Pi Kullanıyor

Bu Eğitilebilir Tablo, ESP8266 mikro denetleyicinizi bir ESP-01 WIFI modülünde programlamaya nasıl başlayacağınız konusunda size rehberlik eder. Başlamak için ihtiyacınız olan tek şey (elbette ESP-01 modülünün yanı sıra)

  • Ahududu Pi
  • Atlama telleri
  • 10K direnç

Eski bir başucu lambasını modern Alexa kontrollü LED gece lambasına dönüştürmek istedim. Sesli komutu kullanarak açıp kapatmak hiç hoş değil. En basit ESP-01 WIFI modülünü, LED'li röleyi ve kabloyu çevrimiçi sipariş ettim ve ESP8266 mikrodenetleyiciyi programlamak için USB'den seriye adaptör sipariş etmeyi tamamen unuttum. Ancak bir Raspberry Pi'ye sahip olduğum ve hem Raspberry Pi hem de ESP-01 kartının UART pinleri olduğu için, ESP8266'yı adaptör olmadan programlamak için RPi'mi kullanabileceğimi düşündüm.

Adım 1: Rapberry Pi'yi Yapılandırın

Rapberry Pi'yi yapılandırın
Rapberry Pi'yi yapılandırın

Raspberry Pi 3 Model B+ kullandım, ancak talimatlar diğer sürümlerde, özellikle B modelinde çalışmalıdır.

Bu nedenle, önce ilk şeyler - Pi'de UART'ı etkinleştirmemiz gerekiyor.

RPI yapılandırma ayarlarına gidin. Terminal penceresinde çalıştırma

$ sudo raspi yapılandırması

5 Arayüz Seçeneği'ne gidin, ardından P6 Seri'yi seçin. Ardından, bir oturum açma kabuğunun seri üzerinden erişilebilir olmasını ister misiniz? UART'ı Pi başsız çalıştırmak için değil, diğer cihazlarla iletişim kurmak için kullanmak istediğimiz için seçin, bu nedenle aşağıdaki ekranda sorulduğunda Seri port donanımının etkinleştirilmesini ister misiniz? Seçme. İstendiği gibi Pi'yi yeniden başlatın. UART şimdi Raspberry Pi 3'ün RX ve TX pininde Seri İletişim için etkinleştirilmelidir. Not: Bundan sonra /boot/config.txt'nin sonunda yeni bir enable_uart=1 girişi görünmelidir.

2. Adım: ESP-01'i Raspberry Pi'ye bağlayın

ESP-01'i Raspberry Pi'ye bağlayın
ESP-01'i Raspberry Pi'ye bağlayın

Şimdi her şeyi birlikte kablolamaya başlıyoruz.

Öncelikle, ESP8266 mikrodenetleyicisine güç sağlamak için RPi 3.3V güç ve GND (toprak) pinlerinizi, iletişim kurmak için TXD (iletim) ve RXD (alma) pinlerini ve ESP8266'yı çalıştırmak için iki genel amaçlı pini (yüksek veya yüksek olarak ayarlanabilen pinler) tanımlayın. düşük). pinout.xyz'de pin düzenlemesine bakın veya terminali yazın:

$ pin çıkışı

İkinci olarak ESP-01'deki gerekli pinleri tanımlayın. Ancak başlangıçta ESP-01 pinlerini anlamamız gerekiyor. İnternette bu konuda size yardımcı olacak bir dizi yararlı kaynak buldum. Bu en kısası olurken, bu çok daha iyi açıklama veriyor. Kısacası: 8 pin var, bunlardan 7 tanesine ihtiyacımız olacak, yani güç için VCC power ve GND (toprak) pinleri, iletişim için TXD ve RXD pinleri ve RST (reset), CH_PD (Chip Power Down, bazen etiketli) CH_EN veya çip etkinleştirme) ve modülü çalıştırmak için GPIO0. Genellikle ESP8266 normal modda çalışır, ancak ESP8266'ya bir kod yüklerken flaş modunda olması gerekir. Normal veya normal çalışma modu için modülün güce bağlı olması gerekir (tabii ki), ancak CH_PD pininin de 10K üzerinden VCC'ye bağlanması gerekir (bu değer farklı kaynaklarda değişir, 3K'ya kadar değerler buldum) pull-up önyüklemede direnç. diğer tarafta, yanıp sönme veya programlama moduna girmek için açılışta GPIO0 pinini topraklamanız gerekir. Topraklandığında GPIO0 üzerinden sınırsız akım akışını önlemek için GPIO0'u bazı düşük dirençli direnç 300Ω - 470Ω aracılığıyla toprağa bağlamanız önerilir (bu konuda daha fazlası burada). Adından da anlaşılacağı gibi RST pimi, MCU'yu sıfırlar (veya yeniden başlatır). Normal çalışma sırasında VCC'ye 10K çekme direnci ile bağlanabilir, ancak mikrodenetleyiciyi sıfırlamak için topraklanmalıdır. RST ve GPIO0 pinlerini topraklamak için fiziksel düğmeleri kullanmak (hatta bir düğmeyi simüle etmek için kabloları manuel olarak birleştirmek) her zaman mümkün olsa da, modülün RST ve GPIO0'ında voltajı yüksek ve düşük olarak ayarlamak için Raspberry Pi pinlerini kullanmak çok daha hoş bir deneyimdir. iğneler. Ayrıca o zaman 10K ve 470Ω dirençlere ihtiyaç yoktur.

Artık ESP-01 pinlerinin özelliklerinin farkında olarak, her şeyi birbirine bağlamaya başlayabiliriz. Aşağıdaki tabloyu yukarıdaki çizimle birlikte referans olarak kullanabilirsiniz:

ESP-01 Ahududu Pi

  • VCC (3.3V) pin #1 (3.3V)
  • GND pimi #6 (GND)
  • TXD pimi #10 (RXD / BCM 15)
  • RXD pimi #8 (TXD / BCM 14)
  • CH_PD pin #1 (3.3V)
  • RST pimi #3 (BCM 2)
  • GPIO 0 pin #5 (BMC 5)

VCC pinini en son bağlayın. VCC pinini bağladığınız an Wi-Fi modülünüz açılacaktır. RPi ve ESP8266'nın UART kullanarak iletişim kurup kuramadığını kontrol etmek için ekranı veya minicom'u kullanın (not: Raspbian'da varsayılan olarak yüklü görünmediğinden önce ekran veya minicom yüklemeniz gerekebilir).

Ekran çalıştırmayı kullanma:

$ sudo ekranı /dev/serial0 115200

Minicom çalıştırmayı kullanma:

$ sudo minicom -b 115200 -o -D /dev/serial0

Not: Birçok çevrimiçi kaynak, /dev/ttyAMA0 üzerinde ESP8266'ya bağlanmayı önerir, ancak bu, RPi belgelerine göre RPi 3 veya sonraki sürümlerde (sıfır W dahil) çalışmaz. Bunun yerine /dev/serial0 veya /dev/ttyS0 aracılığıyla bağlanın.

Ekrana veya minicom'a girdikten sonra, ESP8266 ile iletişim kurmak için AT komutlarını kullanın. AT yazın, ardından Enter'a basın ve ardından komutu göndermek için Ctrl+J'ye basın. Yanıt olarak Tamam almalısın. Kullanılabilir AT komutlarının listesi espressiff.com'da veya hemen burada bulunabilir.

Cihazlar fiziksel olarak bağlıysa ve birbirleriyle konuşuyorsa, RPi GPIO pinlerini ve son olarak ESP8266'nın kendisini programlamaya başlayabiliriz.

Adım 3: Yazılım Kurulumu (Python Çalıştırılacak ve Arduino IDE Programlanacak)

BÖLÜM 1. ESP8266 modlarını değiştirmek için python kullanma

Yukarıda belirtildiği gibi, ESP8266'nın çalışma modlarını değiştirmek için RPI'nin GPIO pinlerini kullanmak uygundur. ESP8266'yı normal veya programlama moduna sokan iki temel python kodu yazdım.

Normal mod: Mikrodenetleyiciyi normal çalışma moduna geçirmek için sadece onu çalıştırmamız ve CH_PD'yi pull-up direnci aracılığıyla VCC'ye bağlamamız gerekiyor, ancak MCU'yu programlamadan normal moda geçirmek için onu sıfırlamamız gerekiyor (yeniden başlatmayı düşünün). Bunu RPi'de yapmak için, ESP-01'deki RST pinine bağlı RPi'nin GPIO'sunu kısaca aşağı çekeceğiz (varsayılan olarak sıfırlama için kullandığım RPi pini HIGH olarak ayarlanmıştır). Nasıl kısaca? Benim için bu spekülatif bir soru. Farklı zaman aralıklarını deneyebilirsiniz, ancak 200 - 500 ms'nin gayet iyi çalıştığını gördüm. Daha iyi bir fikriniz varsa yorumlara yazın. Kodunuzu reset.py olarak kaydedin

#!/usr/bin/python

RPi. GPIO'yu GPIO olarak içe aktar GPIO.setmode(GPIO. BOARD) # GPIO kimliğini fiziksel pin numaralarına göre ayarlar resetPin = 3 # ESP8266 RST pinine bağlı RPi fiziksel pinini tanımla GPIO.setup(resetPin, GPIO. OUT) # set reset çıkış olarak pin GPIO.output(resetPin, GPIO. LOW) # RST'de voltaj düşmesi pin time.sleep(.2) # 0,2 sn bekleyin GPIO.output(resetPin, GPIO. HIGH) # RST pin GPIO'da voltajı geri yükleyin. cleanup() # gelecekteki çalışma zamanı uyarılarını önlemek için RPI'daki pinleri sıfırlayın

  • Programlama modu: MCU'yu programlama moduna geçirmek için ESP8266'yı GPIO0 topraklı olarak çalıştırmamız veya alternatif olarak önyükleme sırasında sıfırlamamız ve GPIO0'ı topraklamamız gerekiyor (yine voltaj düşüşlerinin tam süresi benim için tam olarak bilinmiyor, bu yüzden kesinlikle olma kullanılan değerler tarafından yönlendirilir). Kodu flash.py olarak kaydedin veya aşağıdan indirin. Eylemlerin ardışıklığı aşağıdaki gibidir:

    • RST pinini aşağı çekin
    • GPIO0 pinini aşağı çekin
    • RST pinini yukarı çekin
    • GPIO0 pinini yukarı çekin

#!/usr/bin/python

RPi. GPIO'yu GPIO olarak içe aktar GPIO.setmode(GPIO. BOARD) # GPIO tanımlamasını fiziksel pin numaralarına göre ayarlar resetPin = 3 # ESP8266'ya bağlı RPi fiziksel pinini tanımlayın RST pin flashPin = 5 # ESP8266 GPIO0 pinine bağlı RPi fiziksel pinini tanımlayın GPIO.setup(resetPin, GPIO. OUT) # reset pinini çıkış olarak ayarla GPIO.setup(flashPin, GPIO. OUT) # flaş pinini çıkış olarak ayarla GPIO.output(resetPin, GPIO. LOW) # RST pin süresinde voltaj düşüşü. uyku(.2) # bu bekleme ihtiyacı spekülatif GPIO.output(flashPin, GPIO. LOW) # GPIO0'da voltaj düşüşü time.sleep(.2) # bu bekleme ihtiyacı spekülatif GPIO.output(resetPin, GPIO. HIGH) # önyüklemeyi başlat ESP8266 time.sleep(.5) # ESP8266'nın GPIO.ouput(flashPin. GPIO. HIGH) önyüklemesini bekle

Terminal değişiklik izinlerinde:

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

Artık programlama moduna girmeniz gerektiğinde terminalde çalıştırın:

$ piton /flash.py

normal çalışma moduna girmek için kodu yükledikten sonra çalıştırın:

$ piton /reset.py

Bu noktada ESP8266 donanım yazılımını da güncellemek isteyebilirsiniz. Bunun nasıl yapılacağına dair birçok çevrimiçi eğitim var, bu yüzden bunun nasıl yapılacağına dair ayrıntılara girmeyeceğim.

BÖLÜM 2. Arduino IDE'yi Kurma

Arduino IDE'niz zaten kuruluysa, IDE'nizin ESP8266 için hazır olduğundan emin olmak için yine de bölüme göz atmak isteyebilirsiniz.

Rapberry Pi'de ESP8266'nızı programlamak için Arduino IDE'yi kullanabilirsiniz. IDE'yi RPi'ye kurmanın iki yolu vardır:

  • apt-get install kullanılarak depolardan komut satırı aracılığıyla
  • arduino.cc'den manuel olarak indirin ve kurun.

İkinci yoldan gitmenizi şiddetle tavsiye ederim. Depolardaki IDE sürümü eskimiş gibi görünüyor ve ESP8266'yı programlamaya hazır olmadan önce kesinlikle daha fazlasını yapmanız gerekecek. Güçlükten kaçınmak için Arduino.cc indirme sayfasına gidin ve Linux ARM sürümünü indirin. Daha sonra sıkıştırmayı açın ve kurun: İndirilen dosyanın adı bu arduino-X. Y. Z-linuxarm.tar.xz gibi görünüyorsa, indirme klasöründe şunu çalıştırın:

$ tar -xvf arduino-X. Y. Z-linuxarm.tar.xz

Bu, dosyayı arduino-X. Y. Z klasörüne açmalıdır. Çalıştırmak:

$ sudo./arduino-X. Y. Z/install.sh

Bu, IDE'yi yüklemelidir. Kurulum tamamlandıktan sonra IDE'yi başlatın.

  • Arduino IDE'den File > Preferences seçeneğine gidin. Tercihler penceresinin altındaki “Ek Pano Yöneticisi URL'leri”ni arayın. "Ek Pano Yöneticisi URL'leri" alanına https://arduino.esp8266.com/stable/package_esp8266com_index.json girin, "Tamam" düğmesini tıklayın.
  • Araçlar > Pano: XXX > Pano Yöneticisi seçeneğine gidin. Pencerede aramayı kullanın veya aşağı kaydırın, ESP8266 kart menüsünü seçin ve kur'a tıklayın. Kurulumun pencereyi tamamlamasını ve kapatmasını bekleyin.
  • Tekrar Araçlar > Pano: XXX'e gidin ve ESP8266 panolarını arayın. Genel ESP8266 Modülü'nü seçin.

Artık IDE, ESP8266'yı programlamaya hazırdır. İstediğiniz kodu IDE penceresine yazın veya yapıştırın ve kaydedin. Yükle'yi tıklayın. flash.py terminal çalıştırmasından, bu, kartınızı programlama moduna geçirmelidir. IDE'nin derlemeyi ve yüklemeyi bitirmesi için birkaç dakika bekleyin (not: ESP-01 tipik olarak 2 LED ile gelir, kod yüklenirken mavi LED yanıp söner) ve reset.py dosyasını çalıştırın. Artık ESP-01 kartınız görevleri yerine getirmeye hazır.

Önerilen: