Mục lục:

Bắt đầu với Python cho ESP8266 & ESP32: 6 bước
Bắt đầu với Python cho ESP8266 & ESP32: 6 bước

Video: Bắt đầu với Python cho ESP8266 & ESP32: 6 bước

Video: Bắt đầu với Python cho ESP8266 & ESP32: 6 bước
Video: Lập trình python trên esp8266 - Ngôi Nhà IoT 2024, Tháng bảy
Anonim
Bắt đầu với Python cho ESP8266 & ESP32
Bắt đầu với Python cho ESP8266 & ESP32

Bacground

ESP8266 và người anh em nhỏ hơn của nó là ESP32 là những vi mạch Wi-Fi giá rẻ với khả năng ngăn xếp TCP / IP và bộ điều khiển vi mô đầy đủ. Chip ESP8266 lần đầu tiên được cộng đồng nhà sản xuất chú ý vào năm 2014. Kể từ đó, giá thành rẻ (<5 USD), khả năng kết nối Wi-Fi, bộ nhớ flash tích hợp 1 hoặc 4 MB và nhiều loại phát triển có sẵn. bo mạch, đã làm cho chip ESP trở thành một trong những bộ điều khiển vi mô phổ biến nhất cho các dự án WiFi và IoT DIY.

MicroPython là một triển khai gọn gàng và hiệu quả của ngôn ngữ lập trình Python ngày càng phổ biến bao gồm một tập hợp con nhỏ của thư viện chuẩn Python và được tối ưu hóa để chạy trên vi điều khiển.

Sự kết hợp của hai điều này là một lựa chọn rất thú vị cho các dự án DIY, cho cả người mới bắt đầu và người dùng cao cấp hơn.

Dự án MiPy-ESP

Trở lại năm 2015, các dự án đầu tiên của tôi với ESP8266 bắt đầu với chip ESP-01 sử dụng Arudions để chạy các lệnh AT chip qua kết nối nối tiếp. Sau đó, trong những năm tiếp theo, tôi đã áp dụng lõi Arduino cho ESP8266 để lập trình chip bằng ngôn ngữ C ++. Điều này hoạt động tốt, nhưng đối với một người đam mê Python, khám phá của tôi về việc triển khai MicroPython của Python 3 là một tin tuyệt vời.

Dự án MiPy-ESP là một khuôn khổ linh hoạt áp dụng MicroPython cho các dự án Python IoT toàn ngăn xếp trên các bộ điều khiển vi mô gia đình ESP.

Khung được phát triển bởi Nhóm phát triển phần mềm của Ủy ban kỹ thuật LeGarage (LG-TC-SWDT-01) nhằm mục đích thay thế mã dựa trên C ++ đã được thiết lập cho các ứng dụng vi điều khiển của chúng tôi.

Dự án cung cấp các tính năng cơ bản như

  • Quy trình kết nối mạng
  • Máy chủ web điểm truy cập chip (để kết nối wifi và phục vụ các trang web chip cho I / O dữ liệu)
  • Các chức năng MQTT
  • Ghi nhật ký / gỡ lỗi
  • Lập lịch sự kiện vi điều khiển
  • Quy trình I / O phần cứng

Với một tập lệnh mã nhỏ gọn chính (main.py), tất cả đều có cấu hình chung (config.py).

Mã mictocontroller này chạy với khả năng duy trì mạnh mẽ các kết nối chip với mạng WiFi và các nhà môi giới MQTT. Các mô-đun MicroPython hiện có cho các phần cứng khác nhau có thể được tích hợp dễ dàng vào hệ thống.

Khung công tác MiPy-ESP đã trở thành xương sống của tất cả các dự án IoT điện tử sở thích của chúng tôi liên quan đến bộ điều khiển vi mô gia đình ESP. Nó đã được thử nghiệm trên một số bảng mạch thuộc họ ESP, như bảng NodeMCU, Wemos và Lolin.

Hướng dẫn sau đây là hướng dẫn về cách bắt đầu với bộ vi điều khiển ESP-họ và MicroPython bằng cách sử dụng khuôn khổ MiPy-ESP.

Bước 1: Bảng Wemos D1 Mini ESP8266

Bảng Wemos D1 Mini ESP8266
Bảng Wemos D1 Mini ESP8266
Bảng Wemos D1 Mini ESP8266
Bảng Wemos D1 Mini ESP8266
Bảng Wemos D1 Mini ESP8266
Bảng Wemos D1 Mini ESP8266
Bảng Wemos D1 Mini ESP8266
Bảng Wemos D1 Mini ESP8266

Khung MiPy-ESP hoạt động với hầu hết các vi điều khiển dựa trên ESP8266.

Bảng phát triển Wemos D1 mini dựa trên chip ESP-8266EX. Trên kích thước 2,5 x 3,5 cm, nó có bộ nhớ flash 4MB, 11 chân đầu vào / đầu ra kỹ thuật số, tất cả các chân đều hỗ trợ ngắt, PWM, I2C, SPI, nối tiếp và 1 đầu vào tương tự với đầu vào tối đa 3,3V, có thể chạy trên nguồn 5V, có kết nối micro USB và tương thích với breadboard. Giá thấp và kích thước nhỏ của nó đã làm cho nó trở thành bảng ESP yêu thích của tôi.

Ngoài ra, phiên bản D1 mini pro của bo mạch còn có tùy chọn kết nối ăng-ten bên ngoài, giúp tăng phạm vi kết nối đáng kể (phạm vi +100 m). Thêm vào đó, bảng cũng đi kèm với nhiều loại bảng mở rộng ngoài hộp với kích thước nhỏ gọn tương tự.

Bước 2: Chuẩn bị sẵn sàng cho MicroPython trên chip ESP

Sẵn sàng cho MicroPython trên chip ESP
Sẵn sàng cho MicroPython trên chip ESP

Trong bước đầu tiên này, bạn sẽ

  • Kết nối bo mạch ESP qua USB với máy tính của bạn
  • Cài đặt phần mềm Esptool để nhấp nháy chip
  • Xóa bộ nhớ chip
  • Flash chip bằng phần mềm MicroPython
  • Cài đặt Rshell để cho phép tương tác dòng lệnh với chip của bạn
  • Cài đặt mpy-cross (để biên dịch các tệp.py thành tệp nhị phân)

Kết nối bo mạch với máy tính của bạn qua USBBoards có cổng nối tiếp USB tích hợp giúp UART khả dụng với PC của bạn và là tùy chọn dễ dàng nhất để bắt đầu. Đối với bo mạch không có kết nối USB, mô-đun FTDI với USB nối tiếp có thể được sử dụng để kết nối các chân GPIO để nhấp nháy kết nối với thế giới bên ngoài, nhưng điều này không được đề cập trong hướng dẫn này.

Đối với MicroPython sử dụng mã MiPy-ESP, yêu cầu tối thiểu cho kích thước flash chip là 1MB. Ngoài ra còn có một bản dựng đặc biệt dành cho bo mạch 512kB, nhưng điều này không hỗ trợ hệ thống tệp, mà MiPy-ESP phụ thuộc vào.

Khi sử dụng cáp USB, bo mạch sẽ được cấp nguồn bởi máy tính của bạn khi được kết nối. Điều này cũng cho phép lập trình và gỡ lỗi qua kết nối nối tiếp. Khi mã dự án được tải lên và dự án của bạn được triển khai, nguồn điện bên ngoài được cấp qua các chân cấp nguồn của bảng.

Cài đặt Esptool Thông tin về phần mềm Esptool có tại kho lưu trữ Esptool GitHub. Nếu bạn muốn sử dụng Windows / Linux / OSX (MAC), liên kết ở trên cũng bao gồm điều đó. Gói Python có thể được cài đặt bằng

pip cài đặt esptool

Đối với người dùng Linux, các gói cho Esptool được duy trì cho Debian và Ubuntu, và cũng có thể được cài đặt bằng

sudo apt cài đặt esptool

Xóa bộ nhớ flash ESP Sử dụng Esptool, sau đó bạn xóa bộ nhớ flash ESP bằng lệnh

esptool.py --port / dev / ttyUSB0 delete_flash

Tải xuống phần mềm MicroPyton Phần vững MicroPython nằm trong một tệp.bin có thể được tải xuống từ trang web của MicroPython.

Chi nhánh chính của dự án hiện tại của repo đã được thử nghiệm và đang hoạt động với Micropython v.1.12. Để đảm bảo thành công với khuôn khổ MiPY-ESP, hãy tải xuống tệp 'esp8266-20191220-v1.12.bin' từ liên kết này và ghi phần sụn vào chip bằng lệnh:

esptool.py --port / dev / ttyUSB0 --baud 460800 write_flash --flash_size = explore 0 esp8266-20191220-v1.12.bin

Cài đặt Rshell Gói Rshell cho phép tương tác dòng lệnh với môi trường MicroPython của bạn được cài đặt trên chip. Nó có thể được tìm thấy trong liên kết này. Rshell là một trình bao đơn giản chạy trên máy chủ và sử dụng raw-REPL của MicroPython để gửi các đoạn mã python đến pyboard nhằm nhận thông tin hệ thống tệp và sao chép tệp đến và từ hệ thống tệp của MicroPython. REPL là viết tắt của Read Assess Print Loop, và là tên được đặt cho lời nhắc MicroPython tương tác mà bạn có thể truy cập trên ESP8266. Sử dụng REPL cho đến nay là cách dễ nhất để kiểm tra mã của bạn và chạy các lệnh. Cài đặt Rshell bằng lệnh:

sudo pip cài đặt rshell

Cài đặt trình biên dịch mpy-cross MicroPython có thể được áp dụng với các tệp ascii.py được tải lên hệ thống tệp chip. MicroPython cũng định nghĩa khái niệm tệp.mpy là định dạng tệp vùng chứa nhị phân chứa mã được biên dịch trước và có thể được nhập giống như một mô-đun.py bình thường. Bằng cách biên dịch các tệp.py thành.mpy, nhiều bộ nhớ RAM hơn sẽ có sẵn cho mã đang chạy của bạn - và điều này là cần thiết để có một mô-đun lõi hoạt động của khuôn khổ MiPy-ESP.

Để triển khai mã MiPy-ESP, trình biên dịch chéo MicroPython mpy-cross sẽ biên dịch các tập lệnh.py thành.mpy trước khi tải lên chip. Cài đặt gói mpy-cross theo hướng dẫn trong liên kết này. Ngoài ra, lệnh mpy-cross có thể được cài đặt bằng lệnh pip Python hoặc chạy từ đường dẫn thư mục mpy-cross nếu bạn sao chép kho lưu trữ MicroPython từ GitHub tại đây.

Bây giờ bạn đã cài đặt MicroPython và tất cả các công cụ cần thiết để bắt đầu xây dựng dự án MiPy-ESP đầu tiên của mình

Bước 3: Bắt đầu với MiPy-ESP

Bắt đầu với MiPy-ESP
Bắt đầu với MiPy-ESP

Trong bước này, bạn sẽ

Tải xuống khung MyPy-ESP

Tải xuống khung công tác MiPy-ESP Dự án MiPy-ESP có thể được tìm thấy tại GitHub trong kho lưu trữ mã này. Từ GitHub, bạn có thể tải xuống cấu trúc tệp kho lưu trữ hoặc sao chép nó vào máy tính của bạn bằng cách

git clone

Với kho lưu trữ mã được cài đặt trên máy tính của bạn, bây giờ bạn có tất cả các mô-đun mã bạn cần để xây dựng một dự án ESP IoT hoàn chỉnh. Thêm chi tiết về hộp công cụ trong bước tiếp theo.

Bước 4: Kiến trúc khung MiPy-ESP

Kiến trúc khung MiPy-ESP
Kiến trúc khung MiPy-ESP

Trong bước này, bạn sẽ

tìm hiểu về quy trình mã MiPy-ESP

Kiến trúc mã MiPy-ESP

Tất cả các mô-đun khung Python được tìm thấy trong thư mục / src của kho lưu trữ mã MiPY-ESP. Thư mục src / core chứa các mô-đun cốt lõi đi vào mọi dự án. Thư mục src / driver có lựa chọn các mô-đun cho các phần cứng khác nhau được kết nối với chip của bạn. Thư mục src / tiện ích chứa các mô-đun tiện ích tùy chọn để đưa vào dự án của bạn.

Các tệp main.py và config.py được tìm thấy trong thư mục src /. Đây là những tệp chính cần chỉnh sửa để xây dựng dự án của bạn:

config.py:

Tệp này là tệp cấu hình chung cho dự án của bạn. Nó có nhiều cài đặt khác nhau, tất cả đều có nhận xét mô tả trong tệp.

main.py:

Đây là tập lệnh chính cho vòng lặp mã bộ điều khiển vi mô. Nó chứa mã dành riêng cho ứng dụng trong khuôn khổ. Khi khởi động chip, main.py chạy và nhập tất cả các mô-đun phụ thuộc vào dự án với các đầu vào nhất định từ tệp config.py. Lưu đồ trên cho thấy bố cục của tập lệnh main.py.

Hình trên mô tả quy trình làm việc của main.py:

  1. Khi khởi động, mã sẽ cố gắng kết nối chip với mạng Wi-Fi Các mạng được áp dụng trước đây và mật khẩu của chúng (được mã hóa trên chip) được lưu trữ trong bộ nhớ flash. SSID mạng và mật khẩu của chúng có thể được cung cấp trong tệp wifi.json theo định dạng {" SSID1 ":" Mật khẩu "," SSID ":" Mật khẩu2 "}. Các mạng nhất định trong tệp này được lưu trữ, mật khẩu được mã hóa và tệp sẽ bị xóa khi khởi động.
  2. Nếu không tìm thấy mạng nào đã biết, mã sẽ thiết lập một máy chủ web điểm truy cập (AP) SSID và mật khẩu của máy chủ AP chip được đặt trong tệp config.py. Bằng cách đăng nhập vào SSID của chip, một trang web để đăng nhập chip vào Wi-Fi được cung cấp tại địa chỉ 192.168.4.1. Các mạng phát hiện được hiển thị trong menu hoặc SSID có thể được nhập theo cách thủ công (mạng ẩn) cùng với mật khẩu Wi-Fi. Sau khi kết nối thành công chip với Wi-Fi, máy chủ AP sẽ tắt và mã main.py sẽ tiếp tục các bước tiếp theo của nó.
  3. Trong phần Thiết lập của main.py,

    • các chức năng cho các công việc và lệnh gọi lại (v.v. MQTT gọi lại) và các sự kiện thông thường được xác định.
    • Các công việc theo thời gian khác nhau cho các chức năng đang chạy được thiết lập.
    • Khách hàng nhà môi giới MQTT được thành lập
  4. Sau đó, mã đi vào vòng lặp bộ điều khiển vi mô chính,

    • liên tục kiểm tra kết nối mạng và nhà môi giới MQTT,
    • Đăng ký MQTT,
    • I / O phần cứng
    • và các công việc đã lên lịch.
    • Khi mất kết nối mạng hoặc nhà môi giới MQTT, mã sẽ cố gắng thiết lập lại.

Bước 5: Chuẩn bị mã dự án của bạn

Chuẩn bị mã dự án của bạn
Chuẩn bị mã dự án của bạn
Chuẩn bị mã dự án của bạn
Chuẩn bị mã dự án của bạn

Trong bước này, bạn sẽ

  • tìm hiểu về cấu trúc tệp kho lưu trữ MiPy-ESP
  • chuẩn bị mã dự án của bạn để tải lên chip

Cấu trúc thư mục kho lưu trữ Hình trên mô tả cấu trúc thư mục kho lưu trữ và liệt kê các mô-đun hiện tại của khung. Dự án của bạn là các giai đoạn trong thư mục src /. Các mô-đun khung Core MiPy-ESP nằm trong src / core, các mô-đun tiện ích tùy chọn trong src / tiện ích và mô-đun phần cứng trong src / driver.

Hầu hết các thư viện phần cứng MicroPython có sẵn đều có thể đi vào trình điều khiển / thư mục mà không cần bất kỳ sửa đổi nào. Tất cả các trình điều khiển hiện tại đều được kiểm tra với khung MiPy-ESP. Liên quan đến các mô-đun trong tiện ích / thư mục, nhiều hơn nữa sẽ được thêm vào khi chúng đi vào cuộc sống.

Phân đoạn mã dự án Mã dự án cụ thể của bạn nên được đặt trong thư mục src /. Đã có các tệp main.py và config.py bạn có thể chỉnh sửa. Đồng thời sao chép các tiện ích dự án mong muốn từ src / tiện ích và src / trình điều khiển sang src /.

Trong trường hợp bạn muốn cung cấp các mạng và mật khẩu Wi-Fi đã biết cho chip, hãy thêm tệp wifi.json vào src /.

Biên dịch và chuẩn bị tải lên Một Makefile được cung cấp có thể được áp dụng để chuẩn bị các tệp để chuyển sang chip bằng cách biên dịch tệp.py trong / src, biên dịch các mô-đun cốt lõi và chuyển các tệp đã biên dịch sang một thư mục mới có tên là build / bằng lệnh

xây dựng

Các tệp trong bản dựng đã sẵn sàng để tải lên hệ thống tệp chip. Theo mặc định, main.py và config.py không được biên dịch thành nhị phân, để dễ dàng truy cập chúng để kiểm tra các chip đã triển khai. Lệnh:

Làm sạch

Xóa bản dựng / thư mục và nội dung của nó.

Bước 6: Biên dịch và tải mã lên Vi điều khiển

Biên dịch và tải mã lên Vi điều khiển
Biên dịch và tải mã lên Vi điều khiển
Biên dịch và tải mã lên Vi điều khiển
Biên dịch và tải mã lên Vi điều khiển

Trong phần này bạn sẽ

  • tải lên các tệp đã chuẩn bị trong bản dựng / từ phần cuối cùng
  • bắt đầu và theo dõi mã đang chạy

Tải lên bản dựng / tệp bằng Rshell

Tải tất cả các tệp trong thư mục / build lên chip ESP bằng Rshell. Với bộ vi điều khiển được kết nối với USB, từ bản dựng / thư mục khởi động Rshell bằng lệnh

rshell -p / dev / ttyUSB0

Sau đó, kiểm tra các tệp chip (nếu có) bằng cách

ls / pyboard

Tất cả các tệp trên chip có thể bị xóa bằng

rm /pyboard/*.*

Sao chép tất cả các tệp dự án trong bản dựng / vào chip:

cp *. * / pyboard

Sau đó, khởi động thiết bị đầu cuối Python tương tác bằng lệnh

repl

Giờ đây, bạn có thể gọi các lệnh Python hoặc nhập các mô-đun và giám sát đầu ra nối tiếp chip từ mô-đun ghi nhật ký MiPy-ESP.

Khởi động lại chip bằng cách nhấn nút đặt lại hoặc từ dòng lệnh bằng cách

nhập khẩu chính

hoặc

máy nhập khẩu

và sau đó

machine.reset ()

Tùy thuộc vào cài đặt ghi nhật ký / gỡ lỗi của bạn trong tệp cấu hình dự án, repl bây giờ sẽ hiển thị thông báo gỡ lỗi từ chip ESP qua kết nối nối tiếp.

Điều này hy vọng sẽ giúp bạn bắt đầu.

Đề xuất: