Mục lục:

Flash ESP-01 (ESP8266) Không có Bộ điều hợp USB-to-serial Sử dụng Raspberry Pi: 3 bước
Flash ESP-01 (ESP8266) Không có Bộ điều hợp USB-to-serial Sử dụng Raspberry Pi: 3 bước

Video: Flash ESP-01 (ESP8266) Không có Bộ điều hợp USB-to-serial Sử dụng Raspberry Pi: 3 bước

Video: Flash ESP-01 (ESP8266) Không có Bộ điều hợp USB-to-serial Sử dụng Raspberry Pi: 3 bước
Video: #1 From ESP-01 to ESP-DIY 2024, Tháng bảy
Anonim
Flash ESP-01 (ESP8266) Không có Bộ điều hợp USB-to-serial Sử dụng Raspberry Pi
Flash ESP-01 (ESP8266) Không có Bộ điều hợp USB-to-serial Sử dụng Raspberry Pi

Tài liệu hướng dẫn này hướng dẫn bạn cách bắt đầu lập trình bộ vi điều khiển ESP8266 của bạn trên mô-đun WIFI ESP-01. Tất cả những gì bạn cần để bắt đầu (tất nhiên là ngoài mô-đun ESP-01) là

  • Raspberry Pi
  • Dây nhảy
  • Điện trở 10K

Tôi muốn tân trang một chiếc đèn ngủ cũ thành đèn ngủ LED hiện đại được điều khiển bằng Alexa. Không có gì ưa thích chỉ cần bật / tắt nó bằng lệnh thoại. Tôi đã đặt mua mô-đun WIFI ESP-01 đơn giản nhất, rơ le và dây dẫn có đèn LED trực tuyến và hoàn toàn quên đặt mua bộ chuyển đổi USB-to-serial để lập trình vi điều khiển ESP8266. Nhưng vì tôi đã có Raspberry Pi và cả Raspberry Pi và bo mạch ESP-01 đều có chân UART, tôi nghĩ rằng tôi có thể sử dụng RPi của mình để lập trình ESP8266 mà không cần bộ điều hợp.

Bước 1: Định cấu hình Rapberry Pi

Định cấu hình Rapberry Pi
Định cấu hình Rapberry Pi

Tôi đã sử dụng Raspberry Pi 3 Model B +, tuy nhiên, hướng dẫn sẽ hoạt động trên các phiên bản khác, đặc biệt là trên model B.

Vì vậy, điều đầu tiên - chúng ta cần bật UART trên Pi.

Chuyển đến cài đặt cấu hình RPi. Trong cửa sổ đầu cuối chạy

$ sudo raspi-config

Đi tới 5 Tùy chọn Giao diện, sau đó chọn P6 Serial. Sau đó, bạn được nhắc Bạn có muốn một trình bao đăng nhập có thể truy cập được qua nối tiếp không? chọn vì chúng tôi không muốn sử dụng UART để chạy Pi không đầu, nhưng để giao tiếp với các thiết bị khác, do đó, trên màn hình sau khi được hỏi Bạn có muốn bật phần cứng cổng nối tiếp không? lựa chọn. Khởi động lại Pi như được nhắc. UART bây giờ sẽ được kích hoạt cho Giao tiếp nối tiếp trên chân RX và TX của Raspberry Pi 3. Lưu ý: sau bước này sẽ xuất hiện một mục mới enable_uart = 1 ở cuối /boot/config.txt.

Bước 2: Kết nối ESP-01 với Raspberry Pi

Kết nối ESP-01 với Raspberry Pi
Kết nối ESP-01 với Raspberry Pi

Bây giờ chúng ta bắt đầu kết nối mọi thứ lại với nhau.

Đầu tiên, xác định trên các chân nguồn RPi 3.3V và chân GND (nối đất) để cấp nguồn cho bộ vi điều khiển ESP8266, các chân TXD (truyền) và RXD (nhận) để giao tiếp và hai chân đa năng để vận hành ESP8266 (các chân có thể được đặt ở mức cao hoặc Thấp). Tra cứu cách sắp xếp pin trên pinout.xyz hoặc nhập vào terminal:

$ pinout

Thứ hai xác định các chân cần thiết trên ESP-01. Nhưng ban đầu chúng ta cần hiểu rõ về các chân của ESP-01. Tôi đã tìm thấy một số nguồn hữu ích có sẵn trên internet để hỗ trợ bạn về vấn đề đó. Cái này là ngắn nhất, trong khi cái này giải thích tốt hơn nhiều. Tóm lại: Có 8 chân, chúng ta sẽ cần 7 chân trong số đó, đó là chân nguồn VCC và chân GND (nối đất) cho nguồn, chân TXD và RXD cho giao tiếp, và RST (đặt lại), CH_PD (Chip Nguồn, đôi khi được dán nhãn CH_EN hoặc cho phép chip) và GPIO0 để vận hành mô-đun. Thường thì ESP8266 hoạt động ở chế độ thông thường, nhưng khi tải mã lên ESP8266, nó phải ở chế độ flash. Đối với chế độ hoạt động thường xuyên hoặc bình thường, mô-đun cần được kết nối với nguồn (hiển nhiên), nhưng chân CH_PD cũng phải được kết nối với VCC thông qua 10K (giá trị này thay đổi trong các tài nguyên khác nhau, tôi tìm thấy giá trị xuống đến 3K) kéo lên điện trở lúc khởi động. ở phía bên kia, để vào chế độ nhấp nháy hoặc chế độ lập trình, bạn cần nối đất chân GPIO0 khi khởi động. Để ngăn dòng điện không hạn chế qua GPIO0 khi nối đất, bạn nên kết nối GPIO0 với đất qua một số điện trở có điện trở thấp 300Ω - 470Ω (thêm về điều này ở đây). Chân RST như tên cho thấy đặt lại (hoặc khởi động lại) MCU. Trong quá trình hoạt động bình thường, nó có thể được kết nối với VCC thông qua một điện trở kéo lên 10K, nhưng phải được nối đất để đặt lại bộ vi điều khiển. Mặc dù luôn có thể sử dụng các nút vật lý để nối đất các chân RST và GPIO0 (hoặc thậm chí nối dây thủ công để mô phỏng một nút), trải nghiệm thú vị hơn nhiều khi sử dụng các chân Raspberry Pi để đặt điện áp cao và thấp trên RST và GPIO0 của mô-đun ghim. Ngoài ra, không cần điện trở 10K và 470Ω.

Bây giờ nhận thức được các đặc thù của chân ESP-01, chúng ta có thể bắt đầu kết nối mọi thứ với nhau. Bạn có thể sử dụng bảng sau làm tài liệu tham khảo cùng với hình vẽ ở trên:

ESP-01 Raspberry Pi

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

Kết nối chân VCC cuối cùng. Ví dụ bạn đã kết nối VCC, ghim mô-đun Wi-Fi của bạn sẽ bật. Sử dụng screen hoặc minicom để kiểm tra xem RPi và ESP8266 có thể giao tiếp bằng UART hay không (lưu ý: bạn có thể cần cài đặt screen hoặc minicom trước, vì chúng dường như không được cài đặt trên Raspbian theo mặc định).

Sử dụng màn hình chạy:

$ sudo screen / dev / serial0 115200

Sử dụng minicom run:

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

Lưu ý: nhiều tài nguyên trực tuyến đề xuất kết nối với ESP8266 trên / dev / ttyAMA0, nhưng điều này không hoạt động với RPi 3 trở lên (bao gồm không W) theo tài liệu RPi. Thay vào đó, kết nối qua / dev / serial0 hoặc / dev / ttyS0.

Sau khi bạn vào màn hình hoặc minicom, hãy sử dụng lệnh AT để giao tiếp với ESP8266. Nhập AT, sau đó nhấn Enter rồi nhấn Ctrl + J để gửi lệnh. Bạn sẽ nhận được sự đồng ý khi trả lời. Danh sách các lệnh AT có sẵn có thể được tìm thấy trên espressiff.com hoặc ngay tại đây.

Ngoài các thiết bị được kết nối vật lý và nói chuyện với nhau, chúng ta có thể bắt đầu lập trình các chân GPIO RPi và cuối cùng là chính ESP8266.

Bước 3: Thiết lập phần mềm (Python để vận hành và Arduino IDE để lập trình)

PHẦN 1. Sử dụng python để chuyển chế độ ESP8266

Như đã đề cập ở trên, rất tiện lợi khi sử dụng các chân GPIO của RPI để chuyển đổi chế độ hoạt động của ESP8266. Tôi đã viết hai mã python cơ bản đặt ESP8266 vào chế độ thông thường hoặc chế độ lập trình.

Chế độ thường xuyên: Để đưa bộ vi điều khiển về chế độ hoạt động bình thường, chúng ta chỉ cần cấp nguồn cho nó và kết nối CH_PD thông qua điện trở kéo lên VCC, nhưng để chuyển MCU từ chế độ lập trình sang chế độ bình thường, chúng ta cần phải thiết lập lại nó (khởi động lại). Để làm điều đó trên RPi, chúng tôi sẽ kéo ngắn GPIO của RPi được kết nối với chân RST trên ESP-01 (theo mặc định, chân RPi mà tôi sử dụng để đặt lại được đặt thành CAO). Ngắn gọn như thế nào? Đối với tôi đó là một câu hỏi suy đoán. Bạn có thể thử các khoảng thời gian khác nhau, nhưng tôi thấy rằng 200 - 500 ms hoạt động tốt. Viết bình luận nếu bạn có ý tưởng hay hơn. Lưu mã của bạn dưới dạng reset.py

#! / usr / bin / python

nhập RPi. GPIO làm thời gian nhập GPIO GPIO.setmode (GPIO. BOARD) # đặt nhận dạng GPIO bằng số chân vật lý resetPin = 3 # xác định chân vật lý RPi được kết nối với ESP8266 chân RST GPIO.setup (resetPin, GPIO. OUT) # đặt lại pin làm đầu ra GPIO.output (resetPin, GPIO. LOW) # tụt điện áp trên RST pin time.sleep (.2) # đợi.2 giây GPIO.output (resetPin, GPIO. HIGH) # khôi phục điện áp trên GPIO chân RST. cleanup () # đặt lại các chân trên RPI để ngăn cảnh báo thời gian chạy trong tương lai

  • Chế độ lập trình: Để đặt MCU vào chế độ lập trình, chúng ta cần cấp nguồn cho ESP8266 với GPIO0 nối đất, hoặc cách khác là đặt lại nó và nối đất GPIO0 trong khi khởi động (một lần nữa, thời gian chính xác của điện áp giảm thì tôi không biết rõ lắm, vì vậy đừng quá nghiêm ngặt được hướng dẫn bởi các giá trị đã sử dụng). Lưu mã dưới dạng flash.py hoặc tải xuống bên dưới. Sự liên tiếp của các hành động như sau:

    • kéo chốt RST xuống
    • kéo chân GPIO0 xuống
    • kéo chân RST lên
    • kéo chân GPIO0 lên

#! / usr / bin / python

nhập RPi. GPIO làm thời gian nhập GPIO GPIO.setmode (GPIO. BOARD) # đặt nhận dạng GPIO bằng số chân vật lý resetPin = 3 # xác định chân vật lý RPi được kết nối với chân ESP8266 RST flashPin = 5 # xác định chân vật lý RPi được kết nối với chân ESP8266 GPIO0 GPIO.setup (resetPin, GPIO. OUT) # đặt chân đặt lại làm đầu ra GPIO.setup (flashPin, GPIO. OUT) # đặt chân flash làm đầu ra GPIO.output (resetPin, GPIO. LOW) # giảm điện áp trên thời gian chân RST. sleep (.2) # nhu cầu chờ đợi này là GPIO.output suy đoán (flashPin, GPIO. LOW) # sụt áp vào thời gian GPIO0.sleep (.2) # cần chờ đợi này là GPIO.output suy đoán (resetPin, GPIO. HIGH) # bắt đầu khởi động ESP8266 time.sleep (.5) # đợi ESP8266 khởi động GPIO.ouput (flashPin. GPIO. HIGH) # khôi phục điện áp trên chân GPIO pinGPIO.cleanup () # đặt lại trên RPI để ngăn cảnh báo thời gian chạy trong tương lai

Trong quyền thay đổi thiết bị đầu cuối:

$ sudo chmod + x flash.py

$ sudo chmod + x reset.py

Từ bây giờ bất cứ khi nào bạn cần vào chế độ lập trình, hãy chạy trong terminal:

$ python /flash.py

sau khi tải lên mã để vào chế độ hoạt động bình thường chạy:

$ python /reset.py

Tại thời điểm này, bạn cũng có thể muốn cập nhật chương trình cơ sở ESP8266. Có rất nhiều hướng dẫn trực tuyến về cách làm điều đó, vì vậy tôi sẽ không đi vào chi tiết về cách thực hiện điều đó.

PHẦN 2. Thiết lập Arduino IDE

nếu bạn đã cài đặt Arduino IDE, bạn vẫn có thể muốn lướt qua phần để đảm bảo rằng IDE của bạn đã sẵn sàng cho ESP8266.

Trên Rapberry Pi, bạn có thể sử dụng Arduino IDE để lập trình ESP8266 của mình. Có hai cách để cài đặt IDE trên RPi:

  • thông qua dòng lệnh từ kho lưu trữ bằng cách sử dụng apt-get install
  • tải xuống và cài đặt thủ công từ arduino.cc.

Tôi thực sự khuyên bạn nên đi con đường thứ hai. Phiên bản IDE từ kho lưu trữ dường như đã lỗi thời và bạn chắc chắn sẽ phải làm nhiều việc hơn trước khi sẵn sàng bắt đầu lập trình ESP8266. Để tránh rắc rối, hãy truy cập trang tải xuống Arduino.cc và tải xuống phiên bản Linux ARM. Tiếp theo giải nén và cài đặt: Nếu tên của tệp đã tải xuống giống như sau: arduino-X. Y. Z-linuxarm.tar.xz, trong thư mục tải xuống, hãy chạy:

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

Thao tác này sẽ giải nén tệp vào thư mục arduino-X. Y. Z. Chạy:

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

Điều này sẽ cài đặt IDE. Sau khi cài đặt xong, hãy khởi động IDE.

  • Từ IDE Arduino, đi tới Tệp> Tùy chọn. Tìm "URL của Trình quản lý Hội đồng Quản trị bổ sung" ở cuối cửa sổ tùy chọn. Nhập https://arduino.esp8266.com/stable/package_esp8266com_index.json vào trường “URL Trình quản lý Ban bổ sung”, nhấp vào nút “OK”.
  • Đi tới Công cụ> Bảng: XXX> Trình quản lý Bảng. Trong cửa sổ sử dụng tìm kiếm hoặc cuộn xuống, chọn menu bảng ESP8266 và nhấp vào cài đặt. Chờ cài đặt hoàn tất và đóng cửa sổ.
  • Một lần nữa đi tới Công cụ> Bảng: XXX và tìm bảng ESP8266. Chọn Mô-đun ESP8266 Chung.

Bây giờ IDE đã sẵn sàng để lập trình ESP8266. Nhập hoặc dán mã mong muốn vào cửa sổ IDE và lưu nó. Nhấp vào Tải lên. Từ terminal chạy flash.py, điều này sẽ đưa bảng của bạn vào chế độ lập trình. Chờ một vài phút để IDE hoàn tất quá trình biên dịch và tải lên (lưu ý: ESP-01 thường đi kèm với 2 đèn LED, đèn LED màu xanh lam sẽ nhấp nháy trong khi mã đang được tải lên) và chạy reset.py. Bây giờ bo mạch ESP-01 của bạn đã sẵn sàng để thực hiện nhiệm vụ.

Đề xuất: