- MicroPython là gì?
- Tại sao sử dụng MicroPython cho NodeMCU?
- ESP8266 (NodeMCU) là gì?
- Phần cứng được sử dụng
- Cài đặt chương trình cơ sở MicroPython cho ESP8266
- Giao tiếp với NodeMCU bằng PuTTY
- Tải lên mã nhấp nháy LED dựa trên Python bằng Ampy
- MicroPython trên ESP8266: Nhận Nhiệt độ và Độ ẩm với DHT22
Đối với người mới bắt đầu quan tâm đến việc lập trình các bộ vi điều khiển hỗ trợ Wi-Fi như ESP8266, hiểu môi trường lập trình ESP-IDF hoặc Arduino IDE có thể là một nhiệm vụ khó khăn, cú pháp khó hiểu của ngôn ngữ C và C ++ đòi hỏi nhiều kiến thức hơn về khoa học máy tính. Tại sao những ngôn ngữ đó không phải lúc nào cũng thân thiện với người mới bắt đầu, vì vậy trong bài viết này, chúng ta sẽ tìm hiểu cách thiết lập và lập trình ESP8266 với MicroPython, và cuối cùng, chúng ta sẽ nhận được dữ liệu nhiệt độ và độ ẩm từ cảm biến nhiệt độ và độ ẩm DHT22 yêu thích của chúng ta. Trước đây, chúng tôi cũng đã thực hiện một bài hướng dẫn về cách lập trình ESP32 với Micro Python, bạn cũng có thể kiểm tra nếu quan tâm.
MicroPython là gì?
Có thể nói MicroPython là một phiên bản mới của python, được thiết kế để hoạt động với vi điều khiển và hệ thống nhúng. Cú pháp và quy trình mã hóa của MicroPython giống với python. Vì vậy, nếu bạn đã biết python, bạn đã biết cách viết mã của mình bằng MicroPython. Nếu bạn là một người hâm mộ Python, bạn có thể xem bài viết này.
MicroPython được phát triển ở Vương quốc Anh, do Damion jones dẫn đầu, và họ đã tung ra Kickstarter trong thời gian trở lại đây, nơi họ tung ra một bộ bảng phát triển cụ thể sẽ chạy phần mềm cơ sở, cho phép bạn chạy MicroPython trên đó, phần sụn hiện đã được chuyển ra để chạy trên ESP8266, trong bài này bạn sẽ tìm hiểu.
Tại sao sử dụng MicroPython cho NodeMCU?
Python là một trong những ngôn ngữ lập trình được sử dụng rộng rãi và dễ học nhất cho đến nay. Vì vậy, với sự ra đời của MicroPython, việc lập trình các bộ vi điều khiển dựa trên phần cứng trở nên rất dễ dàng. Nếu bạn chưa từng lập trình vi điều khiển trước đây và muốn bắt đầu học lập trình, thì MicroPython là một khởi đầu tốt.
MicroPython sử dụng phiên bản rút gọn của các thư viện chuẩn Python, vì vậy tất cả các thư viện chuẩn đều không khả dụng. Tuy nhiên, MicroPython bao gồm các mô-đun đơn giản và dễ sử dụng để giao tiếp với phần cứng, có nghĩa là với sự trợ giúp của MicroPython, việc đọc và ghi vào thanh ghi GPIO trở nên dễ dàng hơn.
Mục tiêu cuối cùng của MicroPython là làm cho các bộ vi điều khiển lập trình trở nên đơn giản nhất có thể, do đó, nó có thể được sử dụng bởi bất kỳ ai. Với MicroPython việc nhập thư viện và viết mã trở nên dễ dàng, đoạn mã hiển thị dưới đây là một ví dụ đơn giản làm nháy đèn LED trên bo mạch NodeMCU, chúng ta sẽ đề cập chi tiết về đoạn mã sau bài viết.
từ máy nhập Pin từ lúc nhập khi ngủ LED = Pin (2, Pin.OUT) trong khi True: LED.value (không phải LED.value ()) ngủ (0,5)
ESP8266 (NodeMCU) là gì?
ESP8266 là một mô-đun Wi-Fi giá rẻ, được thiết kế cho các ứng dụng liên quan đến Internet of Things (IoT).
Nó đi kèm với các chân đầu vào và đầu ra đa năng (GPIO) và nó cũng hỗ trợ nhiều giao thức được sử dụng phổ biến như SPI, I2C, UART, v.v. Tuy nhiên, tính năng thú vị nhất của vi điều khiển này là nó được tích hợp Wi-Fi. Với nó, chúng tôi có thể kết nối với bất kỳ Wi-Fi 2.4GHz nào rất dễ dàng.
Bây giờ những điều cơ bản đã hết, chúng ta có thể chuyển sang phần thực hành, nơi chúng tôi sẽ chỉ cho bạn phần cứng cần thiết và quá trình cài đặt MicroPython trên IC ESP8266.
Phần cứng được sử dụng
Danh sách vật liệu được sử dụng
- 1 x Breadboard
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (Cảm biến nhiệt độ & độ ẩm)
- 1 x 3mm LED (Điốt phát sáng)
- Điện trở 1 x 1K
- 5 x Dây nhảy
Cài đặt chương trình cơ sở MicroPython cho ESP8266
Có hai cách để cài đặt phần sụn MicroPython vào ESP8266 trong bài viết này. Chúng ta sẽ nói về cả hai, nhưng trước tiên, chúng ta cần tải xuống.
Tải xuống chương trình cơ sở MicroPython cho ESP8266:
Trước khi chúng tôi kết nối bo mạch NodeMCU (ESP8266) với PC, chúng tôi cần tải xuống phiên bản mới nhất của MicroPython sau đó chúng tôi có thể cài đặt chương trình cơ sở trên NodeMCU, bạn có thể tải xuống từ trang tải xuống Micropython chính thức
Cài đặt chương trình cơ sở MicroPython trên ESP8266:
Trước khi có thể cài đặt phần sụn vào ESP8266, chúng ta cần đảm bảo rằng chúng ta có ổ đĩa phù hợp cho Bộ chuyển đổi USB sang nối tiếp, hầu hết bo mạch NodeMCU sử dụng IC chuyển đổi CP2102 USB sang UART, đó là lý do tại sao chúng ta cần tải xuống và cài đặt trình điều khiển cho bộ chuyển đổi CP2102 USB sang UART, Sau khi ổ đĩa được tải xuống và cài đặt, chúng ta cần tải xuống esptool, là một công cụ dựa trên python được tạo ra để đọc và ghi phần sụn trên ESP8266.
Cách dễ nhất để có Python là thông qua Microsoft Store, từ đó bạn cần tải xuống và cài đặt một bản sao của Python. Sau khi Python được cài đặt, chúng ta có thể sử dụng lệnh pip3 install esptool để cài đặt esptool. Quá trình sẽ giống như hình bên dưới.
Sau khi cài đặt, hãy kiểm tra xem bạn có truy cập esptool từ cổng lệnh hay không.
Để thực hiện, bạn chỉ cần chạy lệnh, phiên bản esptool.py nếu gặp cửa sổ như hình bên dưới là bạn đã cài đặt thành công esptool trên PC Windows của mình.
Và nếu bạn gặp sự cố khi truy cập esptool từ cửa sổ lệnh, hãy thử thêm đường dẫn cài đặt đầy đủ vào biến môi trường windows.
Tìm PORT được phân bổ cho NodeMCU Board:
Bây giờ chúng ta cần tìm ra cổng được phân bổ cho bo mạch NodeMCU, để làm điều đó chỉ cần vào cửa sổ trình quản lý thiết bị của bạn và tìm một tùy chọn có tên là Cổng nếu bạn mở rộng mà bạn có thể tìm ra cổng được liên kết với bo mạch NodeMCU. Đối với chúng tôi, nó trông giống như hình ảnh hiển thị bên dưới.
Xóa bộ nhớ flash của ESP8266:
Bây giờ chúng ta đã tìm ra cổng COM liên kết, chúng ta có thể chuẩn bị mô-đun NodeMCU bằng cách xóa bộ nhớ flash của nó. Để làm như vậy, lệnh sau được sử dụng, esptool.py --port COM6 delete_flash . Quá trình sẽ giống như hình dưới đây.
Cài đặt chương trình cơ sở:
Chạy lệnh sau sẽ cài đặt tệp nhị phân MicroPython vào bảng NodeMCU, sau khi cài đặt tệp nhị phân này sẽ cho phép chúng tôi tải lên các chương trình python của mình và giao tiếp với vòng lặp Đọc đánh giá và In .
esptool.py --port COM6 --baud 460800 write_flash --flash_size = phát hiện 0 esp8266-20200911-v1.13.bin
Quá trình sẽ giống như hình ảnh bên dưới,
Xin lưu ý rằng tại thời điểm cài đặt, tệp nhị phân đã ở trên máy tính để bàn của tôi nên tôi có một cd trên Máy tính để bàn và chạy lệnh.
Bây giờ đã xong, đã đến lúc giao tiếp với bảng và nhấp nháy một số đèn LED.
Giao tiếp với NodeMCU bằng PuTTY
Bây giờ chúng ta hãy bắt đầu chương trình Hello World đầu tiên của chúng ta bằng cách sử dụng PuTTY, PuTTY để làm như vậy chúng ta cần đặt loại kết nối là Serial, tiếp theo chúng ta đặt dòng Serial (Trong trường hợp của chúng ta là COM6) và cuối cùng, chúng ta đặt Tốc độ thành 115200 baud.
Nếu mọi thứ được thực hiện đúng cách, một cửa sổ tương tự như hình bên dưới sẽ xuất hiện và chúng ta có thể dễ dàng viết mã của mình vào đó, nó thường hoạt động giống như một thiết bị đầu cuối iPython. Ngoài ra, chúng tôi đã chạy chương trình hello world đầu tiên của mình, chỉ có hai dòng đơn giản và khi chúng tôi đã đặt bản in của mình, chúng tôi đã nhận được phản hồi.
Tải lên mã nhấp nháy LED dựa trên Python bằng Ampy
Truy cập MicroPython với sự trợ giúp của thiết bị đầu cuối PuTTY là một cách tốt để giao tiếp với mô-đun ESP, nhưng một cách dễ dàng khác là tải mã lên là thông qua công cụ Adafruit Ampy, để cài đặt ampy, chúng ta chỉ cần chạy một pip3 install adafruit- lệnh ampy và nó sẽ cài đặt ampy trên PC của chúng tôi. Quá trình sẽ giống như hình dưới đây.
Bây giờ khi bạn có điều này, chúng tôi vẫn cần thông tin của chúng tôi về cổng nối tiếp mà chúng tôi được kết nối. Trong trường hợp của chúng tôi, nó là COM6. Bây giờ chúng ta chỉ cần viết mã LED Blink của mình bằng MicroPython, chúng tôi đã sử dụng hướng dẫn được cung cấp trong trang web chính thức của micro python
Với sự trợ giúp của hướng dẫn, đoạn mã sau được thực hiện.
từ máy nhập Pin từ lúc nhập khi ngủ LED = Pin (2, Pin.OUT) trong khi True: LED.value (không phải LED.value ()) ngủ (0,5)
Mã rất đơn giản. Đầu tiên, chúng ta nhập thư viện Pin từ máy. Ghim lớp. Tiếp theo, chúng ta cần nhập thư viện thời gian, được sử dụng để tạo một hàm trì hoãn. Tiếp theo, chúng tôi đặt Pin2 (là đèn LED trên bo mạch được gắn vào mô-đun ESP12E) làm đầu ra. Tiếp theo, chúng tôi thiết lập một vòng lặp trong khi chúng tôi bật và tắt đèn LED với độ trễ 500ms.
Đó là cách bạn tải mã lên NodeMCU. Để làm điều đó, bạn cần chạy lệnh ampy sau, ampy --port COM6 đặt main.py
Nếu chương trình được thực thi được sửa chữa, bạn sẽ thấy một đèn LED nhấp nháy như hình dưới đây.
Lưu ý: Trong khi tải mã lên, tôi đã đặt vị trí lời nhắc hiện tại của mình cho Máy tính để bàn, vì vậy tôi không cần chỉ định đường dẫn đầy đủ cho tệp main.py nếu trường hợp đó không xảy ra, bạn cần chỉ định đường dẫn đầy đủ cho tệp chính tệp.py.
Tiếp theo, chúng tôi chuyển sang nhận dữ liệu nhiệt độ và độ ẩm từ Cảm biến DHT22.
MicroPython trên ESP8266: Nhận Nhiệt độ và Độ ẩm với DHT22
Sơ đồ giao tiếp DHT22 với NodeMCU:
Sơ đồ mạch hoàn chỉnh cho dự án này có thể được tìm thấy bên dưới. Tôi đã sử dụng fritzing để tạo ra mạch này.
Như bạn có thể thấy, mạch rất đơn giản và có thể dễ dàng xây dựng trên bảng mạch bằng dây nhảy. Mạch hoàn chỉnh có thể được cấp nguồn bằng cổng micro-USB trên NodeMCU. Thiết lập phần cứng của tôi được hiển thị bên dưới.
Mã:
Rất dễ dàng lấy dữ liệu nhiệt độ và độ ẩm từ cảm biến DHT22 hoặc DHT11 bằng MicroPython vì phần mềm MicroPython mà chúng tôi đã cài đặt trước đó đi kèm với thư viện DHT tích hợp sẵn.
1. Chúng tôi bắt đầu mã của mình bằng cách nhập thư viện DHT và thư viện pin từ lớp máy.
nhập dht từ Pin nhập máy
2. Tiếp theo, chúng tôi tạo một đối tượng DHT đề cập đến pin, trong đó chúng tôi đã gắn cảm biến của mình.
cảm biến = dht.DHT22 (Pin (14))
3. Cuối cùng, để đo giá trị cảm biến, chúng ta phải sử dụng ba lệnh sau.
sensor.measure () sensor.tempether () sensor.humidity ()
Đối với mã cuối cùng, chúng tôi đặt nó trong một vòng lặp while và in ra các giá trị đánh dấu phần cuối của mã của chúng tôi. Ngoài ra, cảm biến DHT22 cần 2 giây trước khi có thể đọc bất kỳ dữ liệu nào, vì vậy chúng tôi cần thêm độ trễ 2 giây.
from machine import Pin from time import sleep import dht dht22 = dht.DHT22 (Pin (14)) trong khi True: try: sleep (2) dht22.measure () temp = dht22.tempe Heat () hum = dht22.humidity () print ('Nhiệt độ:% 3.2f C'% temp) print ('Humidity:% 3.2f %%'% hum) ngoại trừ OSError as e: print ('Không thể đọc dữ liệu từ cảm biến DHT22.')
Sau khi mã hóa xong, chúng ta có thể tải mã lên với sự trợ giúp của lệnh ampy.
ampy --port COM6 đặt main.py
Sau khi thực thi mã thành công, bạn có thể theo dõi các giá trị nhiệt độ và độ ẩm trên bất kỳ màn hình nối tiếp nào. Tôi đã sử dụng putty và như bạn có thể thấy bên dưới, tôi có thể nhận các giá trị nhiệt độ và độ ẩm trên COM5.
Hy vọng bạn thích bài viết và học được một cái gì đó hữu ích. Nếu bạn có bất kỳ câu hỏi nào, bạn có thể để lại trong phần bình luận bên dưới hoặc sử dụng diễn đàn của chúng tôi để đăng các câu hỏi kỹ thuật khác.