Mündəricat:

Raspberry Pi istifadə edərək USB-dən seriala adapter olmadan Flash ESP-01 (ESP8266): 3 addım
Raspberry Pi istifadə edərək USB-dən seriala adapter olmadan Flash ESP-01 (ESP8266): 3 addım

Video: Raspberry Pi istifadə edərək USB-dən seriala adapter olmadan Flash ESP-01 (ESP8266): 3 addım

Video: Raspberry Pi istifadə edərək USB-dən seriala adapter olmadan Flash ESP-01 (ESP8266): 3 addım
Video: USB Zigbee координатор Sonoff CC2652P ZBDongle-P - обзор и тестирование с zigbee2mqtt 2024, Iyul
Anonim
Raspberry Pi istifadə edərək USB-dən seriala adapter olmadan Flash ESP-01 (ESP8266)
Raspberry Pi istifadə edərək USB-dən seriala adapter olmadan Flash ESP-01 (ESP8266)

Bu Təlimat ESP-01 WIFI modulunda ESP8266 mikrokontrollerinizin proqramlaşdırılmasına necə başlamağınız barədə sizə bələdçilik edir. Başlamaq üçün lazım olan hər şey (əlbəttə ESP-01 modulundan başqa)

  • Moruq Pi
  • Jumper telləri
  • 10K müqavimət

Köhnə bir yataq lampasını müasir Alexa idarə olunan LED gecə lampasına dəyişdirmək istədim. Səs əmrindən istifadə edərək onu açmaq/söndürmək heç bir şeyi düşünmür. Ən sadə ESP-01 WIFI modulunu, LEDləri olan röleyi və teli onlayn sifariş etdim və ESP8266 mikro nəzarətçisini proqramlaşdırmaq üçün USB-dən seriyaya adapter sifariş etməyi tamamilə unutdum. Ancaq bir Raspberry Pi-yə sahib olduğum üçün həm Raspberry Pi-də, həm də ESP-01 lövhəsində UART pinləri olduğundan, ESP8266-nı adapter olmadan proqramlaşdırmaq üçün RPi-dən istifadə edə biləcəyimi düşündüm.

Addım 1: Rapberry Pi -ni konfiqurasiya edin

Rapberry Pi -ni konfiqurasiya edin
Rapberry Pi -ni konfiqurasiya edin

Raspberry Pi 3 Model B+istifadə etdim, lakin təlimatlar digər versiyalarda, xüsusən də B modelində işləməlidir.

Beləliklə, ilk növbədə UART -ı Pi -də aktiv etməliyik.

RPi konfiqurasiya parametrlərinə keçin. Terminal pəncərəsində işləyin

$ sudo raspi-config

5 Arayüz Seçiminə gedin, sonra P6 Serialını seçin. Daha sonra bir giriş qabığının serial üzərindən əlçatan olmasını istərdinizmi? Pi -ni başsız işlətmək üçün UART -dan istifadə etmək istəmədiyimizdən, digər cihazlarla ünsiyyət qurmaq istədiyimiz üçün seçin, buna görə də aşağıdakı ekranda soruşulduqda serial portunun aktiv olmasını istəyirsiniz? seçin. İstədiyiniz kimi Pi'yi yenidən başladın. UART indi Raspberry Pi 3 -ün RX və TX pinlərində Serial Əlaqə üçün aktiv olmalıdır. Qeyd: bundan sonra /boot/config.txt -in sonunda yeni bir enable_uart = 1 girişi görünməlidir.

Addım 2: ESP-01-i Raspberry Pi-yə qoşun

ESP-01-i Raspberry Pi-yə qoşun
ESP-01-i Raspberry Pi-yə qoşun

İndi hər şeyi birlikdə bağlamağa başlayırıq.

Birincisi, RPi 3.3V gücünüzü və GND (torpaq) pinlərinizi ESP8266 mikrokontrolörünü, TXD (ötürmə) və RXD (qəbul) pinlərini və ESP8266 (yüksək və ya aşağı). Pinout.xyz -də pin tənzimləməsinə baxın və ya terminala yazın:

$ pinout

İkincisi, ESP-01-də lazımlı sancaqları müəyyənləşdirin. Ancaq əvvəlcə ESP-01 pinləri haqqında anlayışa sahib olmalıyıq. İnternetdə bu mövzuda sizə kömək edəcək bir çox faydalı qaynaq tapdım. Bu ən qısa olanıdır, bu isə daha yaxşı bir şərh verir. Qısacası: 8 sancaq var, bunlardan 7 -nə ehtiyacımız olacaq, yəni güc üçün VCC gücü və GND (torpaq) pinləri, ünsiyyət üçün TXD və RXD sancaqları və RST (sıfırlama), CH_PD (Çip Gücü Düşür, bəzən etiketlənir) CH_EN və ya çip aktivləşdirmə) və GPIO0 modulu idarə etmək üçün. Adətən ESP8266 normal rejimdə işləyir, ancaq ESP8266 -ya kod yükləyərkən flaş rejimində olmağı nəzərə alır. Normal və ya normal iş rejimi üçün modulun gücə (açıq şəkildə) qoşulması lazımdır, həm də CH_PD pininin VCC-yə 10K vasitəsilə bağlanması lazımdır (bu dəyər müxtəlif vasitələrdə dəyişir, 3K-a qədər dəyərlər tapdım) çəkmə açılışdakı rezistor. digər tərəfdən, yanıb -sönən və ya proqramlaşdırma rejiminə girmək üçün açılışda GPIO0 pinini yerə qoymalısınız. Torpaqlandıqda GPIO0 vasitəsilə məhdudiyyətsiz cərəyan axınının qarşısını almaq üçün GPIO0 -nu 300Ω - 470Ω aşağı müqavimət göstərən bir müqavimət vasitəsi ilə yerə bağlamaq məsləhət görülür (bu barədə burada ətraflı). RST pin, adından göründüyü kimi MCU -nu sıfırlayır (və ya yenidən başlatır). Normal əməliyyat zamanı 10K çəkmə rezistoru vasitəsilə VCC-yə qoşula bilər, lakin mikrokontrolörün yenidən qurulması üçün topraklanmalıdır. RST və GPIO0 sancaqlarını birləşdirmək üçün fiziki düymələrdən istifadə etmək həmişə mümkün olsa da (və ya hətta düyməni simulyasiya etmək üçün telləri əl ilə birləşdirmək), modulun RST və GPIO0 -da yüksək və aşağı gərginliyi təyin etmək üçün Raspberry Pi pinlərindən istifadə etmək daha xoş təcrübədir. sancaqlar. Həmçinin 10K və 470Ω rezistorlara ehtiyac yoxdur.

İndi ESP-01 pinlərinin xüsusiyyətlərindən xəbərdar olaraq hər şeyi bir-birinə bağlamağa başlaya bilərik. Aşağıdakı cədvəldən yuxarıdakı rəsmlə birlikdə istinad olaraq istifadə edə bilərsiniz:

ESP-01 Moruq Pi

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

VCC pinini son olaraq bağlayın. Wi-Fi modulunuzu VCC pininə bağladığınız halda açılacaq. RPi və ESP8266 -nın UART istifadə edərək ünsiyyət qura biləcəyini yoxlamaq üçün ekran və ya minicomdan istifadə edin (qeyd: əvvəlcə ekran və ya minicom qurmalısınız, çünki onlar standart olaraq Raspbian -da quraşdırılmır.

Ekran işindən istifadə:

$ sudo ekran /dev /serial0 115200

Minicom run istifadə edərək:

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

Qeyd: bir çox onlayn qaynaqlar /dev /ttyAMA0 -da ESP8266 -ya qoşulmağı təklif edir, lakin bu RPi sənədlərinə görə RPi 3 və ya daha sonra (sıfır W daxil olmaqla) işləmir. Bunun əvəzinə /dev /serial0 və ya /dev /ttyS0 vasitəsi ilə qoşulun.

Ekrana və ya minikoma daxil olduqdan sonra ESP8266 ilə əlaqə qurmaq üçün AT əmrlərindən istifadə edin. AT yazın, sonra Enter düyməsini basın və sonra əmr göndərmək üçün Ctrl+J düymələrini basın. Cavab olaraq OK yazmalısınız. Mövcud AT əmrlərinin siyahısını espressiff.com saytında və ya burada tapa bilərsiniz.

Cihazlar fiziki olaraq bağlıdır və bir -biri ilə danışa bilərik ki, RPi GPIO pinlərini və nəhayət ESP8266 -nın özünü proqramlaşdıra bilək.

Addım 3: Proqram Quraşdırması (İşlətmək üçün Python və Arduino IDE proqramlaşdırmaq üçün)

BÖLÜM 1. ESP8266 rejimini dəyişdirmək üçün pythondan istifadə

Yuxarıda qeyd edildiyi kimi, ESP8266 -nın iş rejimlərini dəyişdirmək üçün RPI -nin GPIO pinlərindən istifadə etmək rahatdır. ESP8266 -nı normal və ya proqramlaşdırma rejiminə keçirən iki əsas python kodu yazdım.

Daimi rejim: Mikro nəzarətçini normal iş rejiminə salmaq üçün onu işə salmalı və CH_PD-ni çəkmə rezistoru ilə VCC-yə bağlamalıyıq, ancaq MCU-nu proqramlaşdırmadan normal rejimə keçirmək üçün onu sıfırlamalıyıq (yenidən başladın). Bunu RPi-də etmək üçün, ESP-01-də RST pininə bağlı olan RPi-nin GPIO-nu qısaca çəkəcəyik (sıfırlama üçün istifadə etdiyim RPi pin YÜKSƏK olaraq təyin olunur). Necə qısaca? Mənim üçün bu spekulyativ bir sualdır. Fərqli vaxt aralıqlarını sınaya bilərsiniz, amma gördüm ki, 200 - 500 ms yaxşı işləyir. Daha yaxşı bir fikriniz varsa şərhlərdə yazın. Kodunuzu reset.py olaraq qeyd edin

#!/usr/bin/python

GPIO idxal vaxtı GPIO.setmode (GPIO. BOARD) kimi # RPi. GPIO idxal edin # fiziki pin nömrələri ilə GPIO identifikasiyasını təyin edirPPIN = 3 # ESP8266 RST pininə bağlı RPi fiziki pinini təyin edin GPIO.setup (resetPin, GPIO. OUT) # sıfırlama qurun çıxış GPIO.output (resetPin, GPIO. LOW) kimi pin # RST pin vaxtında yuxu (.2) #.2 s GPIO.output (resetPin, GPIO. HIGH) gözləyin # RST pin GPIO -da gərginliyi bərpa edin. cleanup () # gələcəkdə işləmə xəbərdarlıqlarının qarşısını almaq üçün RPI -də pinləri sıfırlayın

  • Proqramlaşdırma rejimi: MCU -nu proqramlaşdırma rejiminə keçirmək üçün ESP8266 -nı GPIO0 -a əsaslandırılmış şəkildə işə salmalıyıq və ya alternativ olaraq onu yenidən qurub GPIO0 -u yükləyərkən işə salmalıyıq (yenə də gərginliyin düşməsinin dəqiq müddəti mənə məlum deyil, buna görə ciddi şəkildə istifadə olunan dəyərləri rəhbər tutur). Kodu flash.py olaraq qeyd edin və ya aşağıda yükləyin. Hərəkətlərin ardıcıllığı aşağıdakılardır:

    • RST pinini aşağı çəkin
    • GPIO0 pinini aşağı çəkin
    • RST pinini çəkin
    • GPIO0 pinini çəkin

#!/usr/bin/python

GPIO idxal vaxtı GPIO.setmode (GPIO. BOARD) kimi # RPi. GPIO idxal edin # fiziki pin nömrələri ilə GPIO identifikasiyasını təyin edir resetPin = 3 # ESP8266 RST pininə qoşulmuş RPi fiziki pinini təyin edin GPIO.setup (resetPin, GPIO. OUT) # sıfırlama pinini GPIO.setup (flashPin, GPIO. OUT) kimi təyin edin # flaş pinini GPIO.output (resetPin, GPIO. LOW) # RST pin vaxtında düşmə gərginliyi olaraq təyin edin. yuxu (.2) # bu gözləməyə ehtiyac spekulyativ GPIO.output (flashPin, GPIO. LOW) # GPIO0 vaxtında düşmə gərginliyi.yuxu (.2) # bu gözləməyə ehtiyac spekulyativ GPIO.output (resetPin, GPIO. HIGH)) # ESP8266 -ı yükləməyə başlayın time.sleep (.5) # ESP8266 -nın GPIO.ouput (flashPin. GPIO. HIGH) açılmasını gözləyin # GPIO pinGPIO.cleanup -da gərginliyi bərpa edin () # gələcək iş vaxtı xəbərdarlıqlarının qarşısını almaq üçün pinləri yenidən qurun

Terminal dəyişdirmə icazələrində:

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

Bundan sonra proqramlaşdırma rejiminə girməyiniz lazım olduqda terminalda işləyin:

$ python /flash.py

kodu yüklədikdən sonra normal iş rejiminə keçin:

$ python /reset.py

Bu nöqtədə ESP8266 firmware proqramını da yeniləmək istəyə bilərsiniz. Bunun necə ediləcəyinə dair bir çox onlayn dərslər var, buna görə də bunu necə edəcəyimi ətraflı izah etməyəcəyəm.

BÖLÜM 2. Arduino IDE qurmaq

Arduino IDE -ni əvvəlcədən qurmusunuzsa, IDE -nin ESP8266 üçün hazır olduğundan əmin olmaq üçün hələ də bölmədən keçmək istəyə bilərsiniz.

Rapberry Pi -də ESP8266 -nı proqramlaşdırmaq üçün Arduino IDE -dən istifadə edə bilərsiniz. IDE -ni RPi -yə quraşdırmağın iki yolu var:

  • apt-get install istifadə edərək depolardan əmr satırı vasitəsilə
  • arduino.cc saytından əl ilə yükləyin və quraşdırın.

Sonuncu yolu keçməyi şiddətlə təklif edirəm. Depolardakı IDE versiyası köhnəlmiş kimi görünür və ESP8266 proqramlaşdırmağa başlamazdan əvvəl daha çox iş görməli olacaqsınız. Çətinliyin qarşısını almaq üçün Arduino.cc yükləmə səhifəsinə daxil olun və Linux ARM versiyasını yükləyin. Növbəti açmayın və yükləyin: Yüklənmiş faylın adı arduino-X. Y. Z-linuxarm.tar.xz kimi bir şeyə bənzəyirsə, yükləmə qovluğunda işləyin:

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

Bu faylı arduino-X. Y. Z qovluğuna sıxışdırmalıdır. Qaç:

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

Bu IDE yükləməlidir. Quraşdırma başa çatdıqdan sonra IDE -ni işə salın.

  • Arduino IDE -dən Fayl> Tercihlər bölməsinə keçin. Tercihlər pəncərəsinin altındakı "Əlavə İdarə Heyəti Menecer URLləri" ni axtarın. Http://arduino.esp8266.com/stable/package_esp8266com_index.json faylını "Əlavə İdarə Heyəti Meneceri URLləri" sahəsinə daxil edin və "OK" düyməsini basın.
  • Alətlər> Lövhə: XXX> Lövhələr Menecerinə gedin. Pəncərədə axtarışdan istifadə edin və ya aşağıya fırladın, ESP8266 lövhə menyusunu seçin və quraşdırın. Quraşdırmanın tamamlanmasını gözləyin və pəncərəni bağlayın.
  • Yenə Tools> Board: XXX bölməsinə gedin və ESP8266 lövhələrini axtarın. Ümumi ESP8266 Modulunu seçin.

İndi IDE ESP8266 proqramına hazırdır. IDE pəncərəsinə istədiyiniz kodu daxil edin və ya yapışdırın və qeyd edin. Yüklə vurun. Flash.py terminalından bu, lövhənizi proqramlaşdırma rejiminə keçirməlidir. IDE-nin tərtib etməyi və yükləməyi bitirməsi üçün bir neçə dəqiqə gözləyin (qeyd: ESP-01 adətən 2 LED ilə gəlir, kod yüklənərkən mavi LED yanıb sönəcək) və reset.py faylını işə salın. İndi ESP-01 lövhəniz vəzifələrini yerinə yetirməyə hazırdır.

Tövsiyə: