Daftar Isi:

Flash ESP-01 (ESP8266) Tanpa Adaptor USB-to-serial Menggunakan Raspberry Pi: 3 Langkah
Flash ESP-01 (ESP8266) Tanpa Adaptor USB-to-serial Menggunakan Raspberry Pi: 3 Langkah

Video: Flash ESP-01 (ESP8266) Tanpa Adaptor USB-to-serial Menggunakan Raspberry Pi: 3 Langkah

Video: Flash ESP-01 (ESP8266) Tanpa Adaptor USB-to-serial Menggunakan Raspberry Pi: 3 Langkah
Video: ESP8266 ESP-01E ESP-01 ESP01 WIFI WIRELESS TRANSCEIVER MODULE 1M 2024, November
Anonim
Flash ESP-01 (ESP8266) Tanpa Adaptor USB-ke-serial Menggunakan Raspberry Pi
Flash ESP-01 (ESP8266) Tanpa Adaptor USB-ke-serial Menggunakan Raspberry Pi

Instruksi ini memandu Anda tentang cara memulai pemrograman mikrokontroler ESP8266 Anda pada modul WIFI ESP-01. Yang Anda butuhkan untuk memulai (selain modul ESP-01, tentu saja) adalah

  • Raspberry Pi
  • Kabel jumper
  • resistor 10K

Saya ingin memperbarui lampu samping tempat tidur tua menjadi lampu malam LED yang dikendalikan Alexa modern. Tidak ada yang mewah hanya menyalakan/mematikan menggunakan perintah suara. Saya memesan modul WIFI ESP-01 paling sederhana, relai dan kabel dengan LED online, dan benar-benar lupa memesan adaptor USB-ke-serial untuk memprogram mikrokontroler ESP8266. Tetapi karena saya memiliki Raspberry Pi dan Raspberry Pi dan papan ESP-01 memiliki pin UART, saya pikir saya dapat menggunakan RPi saya untuk memprogram ESP8266 tanpa adaptor.

Langkah 1: Konfigurasikan Rapberry Pi

Konfigurasi Rapberry Pi
Konfigurasi Rapberry Pi

Saya menggunakan Raspberry Pi 3 Model B+, namun, instruksi harus bekerja pada versi lain, terutama pada model B.

Jadi, hal pertama yang pertama - kita perlu mengaktifkan UART di Pi.

Buka pengaturan konfigurasi RPi. Di jendela terminal jalankan

$ sudo raspi-config

Masuk ke 5 Interfacing Options, lalu pilih P6 Serial. Anda kemudian diminta Apakah Anda ingin shell login dapat diakses melalui serial? pilih karena kami tidak ingin menggunakan UART untuk menjalankan Pi tanpa kepala, tetapi untuk berkomunikasi dengan perangkat lain, maka pada layar berikut ketika ditanya Apakah Anda ingin perangkat keras port serial diaktifkan? Pilih. Mulai ulang Pi seperti yang diminta. UART sekarang harus diaktifkan untuk Komunikasi Serial pada pin RX dan TX dari Raspberry Pi 3. Catatan: setelah ini akan muncul entri baru enable_uart=1 di akhir /boot/config.txt.

Langkah 2: Hubungkan ESP-01 ke Raspberry Pi

Hubungkan ESP-01 ke Raspberry Pi
Hubungkan ESP-01 ke Raspberry Pi

Sekarang kita turun ke kabel semuanya bersama-sama.

Pertama, identifikasi pada daya RPi 3.3V Anda dan pin GND (ground) untuk memberi daya pada mikrokontroler ESP8266, pin TXD (transmit) dan RXD (receive) untuk berkomunikasi, dan dua pin tujuan umum untuk mengoperasikan ESP8266 (pin yang dapat disetel tinggi atau rendah). Cari susunan pin di pinout.xyz atau ketik terminal:

$ pinout

Kedua, identifikasi pin yang diperlukan pada ESP-01. Tetapi pada awalnya kita perlu memiliki pemahaman tentang pin ESP-01. Saya menemukan sejumlah sumber daya bermanfaat yang tersedia di internet untuk membantu Anda dalam hal itu. Yang ini adalah yang terpendek, sementara yang ini memberikan penjelasan yang jauh lebih baik. Singkatnya: Ada 8 pin, kita akan membutuhkan 7 pin, yaitu pin VCC power dan GND (ground) untuk power, pin TXD dan RXD untuk komunikasi, dan RST (reset), CH_PD (Chip Power Down, kadang-kadang diberi label CH_EN atau chip enable) dan GPIO0 untuk mengoperasikan modul. Biasanya ESP8266 beroperasi dalam mode biasa, tetapi ketika mengunggah kode ke ESP8266, itu harus dalam mode flash. Untuk mode operasi reguler atau normal, modul harus terhubung ke daya (jelas), tetapi juga pin CH_PD harus terhubung ke VCC melalui 10K (nilai ini bervariasi dalam sumber daya yang berbeda, saya menemukan nilai hingga 3K) pull-up resistor saat boot. di sisi lain, untuk masuk ke mode flashing atau pemrograman, Anda perlu menghubungkan pin GPIO0 saat boot. Untuk mencegah aliran arus tak terbatas melalui GPIO0 saat diarde, disarankan untuk menghubungkan GPIO0 ke ground melalui beberapa resistor resistansi rendah 300Ω - 470Ω (lebih lanjut tentang ini di sini). Pin RST seperti namanya me-reset (atau me-restart) MCU. Selama operasi normal, ini dapat dihubungkan ke VCC melalui resistor pull-up 10K, tetapi harus diarde untuk mengatur ulang mikrokontroler. Meskipun selalu memungkinkan untuk menggunakan tombol fisik untuk menghubungkan pin RST dan GPIO0 (atau bahkan menghubungkan kabel secara manual untuk mensimulasikan tombol), jauh lebih menyenangkan menggunakan pin Raspberry Pi untuk mengatur tegangan tinggi dan rendah pada modul RST dan GPIO0 pin. Juga tidak perlu resistor 10K dan 470Ω.

Sekarang menyadari kekhasan pin ESP-01, kita dapat mulai menghubungkan semuanya bersama-sama. Anda dapat menggunakan tabel berikut sebagai referensi bersama dengan gambar di atas:

ESP-01 Raspberry Pi

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

Hubungkan pin VCC yang terakhir. Instance Anda menghubungkan pin VCC modul Wi-Fi Anda akan menyala. Gunakan screen atau minicom untuk memeriksa apakah RPi dan ESP8266 dapat berkomunikasi menggunakan UART (catatan: Anda mungkin perlu menginstal screen atau minicom terlebih dahulu, karena tampaknya tidak diinstal pada Raspbian secara default).

Menggunakan menjalankan layar:

$ layar sudo /dev/serial0 115200

Menggunakan minicom run:

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

Catatan: banyak sumber online menyarankan untuk menghubungkan ke ESP8266 pada /dev/ttyAMA0, tetapi ini tidak berfungsi untuk RPi 3 atau yang lebih baru (termasuk nol W) sesuai dengan dokumentasi RPi. Hubungkan melalui /dev/serial0 sebagai gantinya atau /dev/ttyS0.

Setelah Anda memasuki layar atau minicom, gunakan perintah AT untuk berkomunikasi dengan ESP8266. Ketik AT, lalu tekan Enter lalu tekan Ctrl+J untuk mengirim perintah. Anda harus mendapatkan OK sebagai tanggapan. Daftar perintah AT yang tersedia dapat ditemukan di espressiff.com atau hanya di sini.

Setelah perangkat terhubung secara fisik dan berbicara satu sama lain, kita dapat mulai memprogram pin RPi GPIO dan, akhirnya, ESP8266 itu sendiri.

Langkah 3: Pengaturan Perangkat Lunak (Python untuk Mengoperasikan dan Arduino IDE untuk Memprogram)

BAGIAN 1. Menggunakan python untuk mengganti mode ESP8266

Seperti disebutkan di atas, lebih mudah menggunakan pin GPIO RPI untuk mengganti mode operasi ESP8266. Saya menulis dua kode python dasar yang menempatkan ESP8266 ke mode reguler atau pemrograman.

Mode Reguler: Untuk menempatkan mikrokontroler ke mode operasi biasa kita hanya perlu menyalakannya dan menghubungkan CH_PD melalui resistor pull-up ke VCC, tetapi untuk mengalihkan MCU dari pemrograman ke mode normal kita perlu mengatur ulang (pikirkan restart). Untuk melakukan itu pada RPi kita akan secara singkat menarik GPIO RPi yang terhubung ke pin RST pada ESP-01 (secara default pin RPi yang saya gunakan untuk mengatur ulang diatur ke HIGH). Bagaimana secara singkat? Bagi saya itu adalah pertanyaan spekulatif. Anda dapat mencoba interval waktu yang berbeda, tetapi saya menemukan bahwa 200 - 500 ms berfungsi dengan baik. Tulis di komentar jika Anda punya ide yang lebih baik. Simpan kode Anda sebagai reset.py

#!/usr/bin/python

impor RPi. GPIO sebagai GPIO waktu impor GPIO.setmode(GPIO. BOARD) # set identifikasi GPIO dengan nomor pin fisik resetPin = 3 # identifikasi pin fisik RPi terhubung ke ESP8266 RST pin GPIO.setup(resetPin, GPIO. OUT) # setel ulang pin sebagai output GPIO.output(resetPin, GPIO. LOW) # drop voltage pada waktu pin RST.sleep(.2) # tunggu.2 s GPIO.output(resetPin, GPIO. HIGH) # mengembalikan tegangan pada pin RST GPIO. cleanup() # reset pin pada RPI untuk mencegah peringatan runtime di masa mendatang

  • Mode pemrograman: Untuk memasukkan MCU ke mode pemrograman, kita perlu menyalakan ESP8266 dengan ground GPIO0, atau sebagai alternatif reset dan ground GPIO0 saat booting (sekali lagi durasi pasti penurunan tegangan tidak cukup diketahui oleh saya, jadi jangan terlalu ketat dipandu oleh nilai-nilai yang digunakan). Simpan kode sebagai flash.py atau unduh di bawah. Rangkaian aksinya adalah sebagai berikut:

    • tarik ke bawah pin RST
    • tarik ke bawah pin GPIO0
    • tarik pin RST
    • tarik pin GPIO0

#!/usr/bin/python

impor RPi. GPIO sebagai GPIO waktu impor GPIO.setmode(GPIO. BOARD) # menetapkan identifikasi GPIO dengan nomor pin fisik resetPin = 3 # mengidentifikasi pin fisik RPi yang terhubung ke ESP8266 Pin RST flashPin = 5 # mengidentifikasi pin fisik RPi yang terhubung ke pin ESP8266 GPIO0 GPIO.setup(resetPin, GPIO. OUT) # set reset pin sebagai output GPIO.setup(flashPin, GPIO. OUT) # set flash pin sebagai output GPIO.output(resetPin, GPIO. LOW) # drop voltage pada waktu pin RST. sleep(.2) # kebutuhan untuk menunggu ini bersifat spekulatif GPIO.output(flashPin, GPIO. LOW) # drop voltage pada waktu GPIO0.sleep(.2) # kebutuhan untuk menunggu ini bersifat spekulatif GPIO.output(resetPin, GPIO. HIGH) # mulai boot ESP8266 time.sleep(.5) # tunggu ESP8266 mem-boot GPIO.ouput(flashPin. GPIO. HIGH) # pulihkan voltase pada GPIO pinGPIO.cleanup() # reset pin pada RPI untuk mencegah peringatan runtime di masa mendatang

Dalam izin perubahan terminal:

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

Mulai sekarang kapan pun Anda perlu masuk ke mode pemrograman, jalankan di terminal:

$ python /flash.py

setelah mengunggah kode untuk masuk ke mode operasi normal, jalankan:

$ python /reset.py

Pada titik ini Anda mungkin juga ingin memperbarui firmware ESP8266. Ada banyak tutorial online tentang cara melakukannya, jadi saya tidak akan membahas detail tentang cara melakukannya.

BAGIAN 2. Menyiapkan Arduino IDE

jika Anda sudah menginstal Arduino IDE, Anda mungkin masih ingin membaca bagian ini untuk memastikan IDE Anda siap untuk ESP8266.

Di Rapberry Pi Anda dapat menggunakan Arduino IDE untuk memprogram ESP8266 Anda. Ada dua cara untuk menginstal IDE di RPi:

  • melalui baris perintah dari repositori menggunakan apt-get install
  • unduh dan instal secara manual dari arduino.cc.

Saya sangat menyarankan untuk mengambil jalan yang terakhir. Versi IDE dari repositori tampaknya sudah usang dan Anda pasti harus berbuat lebih banyak sebelum Anda siap untuk memulai pemrograman ESP8266. Untuk menghindari kerumitan, buka halaman unduh Arduino.cc dan unduh versi Linux ARM. Selanjutnya uncompress dan install: Jika nama file yang didownload terlihat seperti ini arduino-X. Y. Z-linuxarm.tar.xz, di folder download jalankan:

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

Ini harus membuka kompres file ke folder arduino-X. Y. Z. Lari:

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

Ini harus menginstal IDE. Setelah instalasi selesai, mulai IDE.

  • Dari Arduino IDE, buka File > Preferences. Cari “Additional Board Manager URLs” di bagian bawah jendela preferensi. Masukkan https://arduino.esp8266.com/stable/package_esp8266com_index.json ke dalam bidang “Additional Board Manager URLs”, klik tombol “OK”.
  • Buka Alat > Papan: XXX > Manajer Papan. Di jendela gunakan pencarian atau gulir ke bawah, pilih menu papan ESP8266 dan klik instal. Tunggu instalasi selesai dan tutup jendela.
  • Sekali lagi pergi ke Tools > Board: XXX dan cari papan ESP8266. Pilih Modul ESP8266 Generik.

Sekarang IDE siap untuk memprogram ESP8266. Ketik atau tempel kode yang diinginkan ke jendela IDE dan simpan. Klik Unggah. Dari terminal run flash.py, ini akan menempatkan papan Anda ke mode pemrograman. Tunggu beberapa menit hingga IDE selesai dikompilasi dan diunggah (catatan: ESP-01 biasanya dilengkapi dengan 2 LED, LED biru akan berkedip saat kode sedang diunggah) dan jalankan reset.py. Sekarang papan ESP-01 Anda siap untuk melakukan tugas.

Direkomendasikan: