Raspberry Pi Pico là thành viên mới nhất của Gia đình Raspberry Pi. Trước đó, dòng sản phẩm Raspberry Pi là máy tính một bo mạch có khả năng chạy một hệ điều hành.
Dựa trên chip RP2040 mới, Raspberry Pi Pico hỗ trợ cả MicroPython và C / C ++. Với Raspberry Pi Pico, người mới bắt đầu và những người đam mê có thể điều khiển phần cứng và các thiết bị được kết nối. Các chân GPIO của Raspberry Pi Pico có thể được sử dụng để làm mờ đèn, đọc trạng thái của công tắc và hơn thế nữa.
MicroPython là gì?
Việc lập trình trên vi điều khiển chủ yếu được thực hiện bằng ngôn ngữ C, như được sử dụng trong các bảng phát triển Arduino . Sau đó, vào năm 2014, một ngôn ngữ lập trình mới cho vi điều khiển, MicroPython, đã được xuất bản. MicroPython cho phép bạn viết mã Python trên kim loại trần của vi điều khiển. Điều này có nghĩa là bạn có thể viết mã Python mà không cần hệ điều hành.
Python là một ngôn ngữ lập trình cấp cao, thân thiện với người mới bắt đầu cho phép người dùng tập trung vào việc học các khái niệm lập trình. Điều này cũng giống với MicroPython.
Sử dụng đèn LED
Để kiểm soát phần cứng, Pico nói chuyện với một loạt các chân dọc theo cả hai cạnh của nó. Chúng được gọi là các chân đầu ra đầu vào mục đích chung (GPIO) và có thể tìm thấy đèn LED trên bo mạch trên GPIO 25. Để điều khiển nó, trước tiên hãy nhập các thư viện cần thiết:
import machine
import utime
Sau đó gọi hàm Pin bằng cách sử dụng thư viện máy để xử lý chân GPIO của Pin, trong trường hợp này chúng ta đang thiết lập Pin tại GPIO 25, vì vậy nó là tham số đầu tiên. Tham số thứ hai đặt nó như một chân đầu ra chứ không phải là một chân đầu vào, làm như vậy, chân sẽ biết nó phải làm gì:
onboard_led = machine.Pin(25, machine.Pin.OUT)
Để tiếp tục, trong đoạn mã sau, chúng tôi yêu cầu Pico đặt giá trị pin của nó ở GPIO 25 thành 1, hoặc 'bật'.
while True: onboard_led.value(1)
Tuy nhiên, bạn có thể nhận ra rằng dường như không có gì xảy ra. Điều này là do Pico hoạt động rất nhanh, vì vậy đèn LED sáng nhanh hơn bạn có thể cảm nhận bằng mắt. Để khắc phục điều này, chúng ta cần làm chậm chương trình bằng cách sử dụng lệnh sleep từ thư viện utime . Bạn có thể xem mã đầy đủ nơi đèn LED sẽ bật và tắt bên dưới:
import machine import utime onboard_led = machine.Pin(25, machine.Pin.OUT) while True: onboard_led.value(1) utime.sleep(5) onboard_led.value(0) utime.sleep(5)
Bật và tắt đèn LED
Ngoài ra, có một cách khác để bật và tắt đèn LED, bằng lệnh chuyển đổi :
import machine import utime onboard_led = machine.Pin(25, machine.Pin.OUT) while True: led_onboard.toggle() utime.sleep(5)
Trong ví dụ này, lệnh bật tắt thay thế yêu cầu đặt giá trị của đèn LED thành 1 và sau đó là 0. Nó vẫn sáng trong 5 giây rồi tắt trong 5 giây nữa, miễn là chương trình đang chạy.
Tạo các chức năng
Khi các chương trình ngày càng phức tạp, nó sẽ giúp nhóm các đoạn mã lại với nhau để nó duy trì sự mạch lạc. Để làm như vậy, MicroPython như Python cho phép sử dụng các hàm. Hàm là một nhóm các câu lệnh liên quan thực hiện một nhiệm vụ cụ thể. Ví dụ trong đoạn mã sau, một hàm được gọi là printNames được định nghĩa:
def printNames: print(“Raspberry Pi 1”) print(“Raspberry Pi 2”) print(“Raspberry Pi 3”) print(“Raspberry Pi 4”) print(“Raspberry Pi Compute Module”) print(“Raspberry Pi 400”) print(“Raspberry Pi Pico”) printNames()
Dòng cuối cùng trong mã gọi hàm để nó thực thi.
Vòng lặp
Logic có điều kiện thực hiện các hành động khác nhau tùy thuộc vào việc một ràng buộc Boolean đánh giá là đúng hay sai. Rất nhiều dự án Raspberry Pi Pico dựa trên những tuyên bố hợp lý này. Trong ví dụ sau, một câu lệnh if-else được sử dụng để xác định xem một câu lệnh print có thực thi hay không:
i = 17 def printNames(): if i > 15: print("i is greater than 15!") else: print("i is not greater than 15") printNames()
Trong ví dụ tiếp theo, vòng lặp for được sử dụng với hàm phạm vi . Các vòng lặp này có thể được sử dụng để lặp lại một khối mã nhiều lần.
Đối với ví dụ này, lệnh in sẽ được thực hiện năm lần với độ trễ là năm giây giữa mỗi lần với lệnh ngủ :
import utime def printNames(): for i in range(5): print("Raspberry Pi Pico") utime.sleep(5) printNames()
Bộ chuyển đổi tương tự sang kỹ thuật số (ADC)
Mặc dù bạn sẽ không thể nhìn thấy nó, Raspberry Pi Pico có bộ chuyển đổi tín hiệu tương tự sang kỹ thuật số bên trong. Trong ví dụ sau, một chiết áp được nối với Raspberry Pi Pico trên GPIO 26, có khả năng thực hiện chức năng ADC:
import machine import utime pot = machine.ADC(26) while True: print(pot.read_u16()) utime.sleep(1)
Ở đây, trước khi chúng ta có thể sử dụng chân có khả năng ADC này, nó cần được thiết lập với chức năng ADC. Sau đó, trong khi chương trình đang chạy, giá trị của chiết áp sẽ in ra mỗi giây. Các chân khác trên Raspberry Pi Pico có khả năng ADC bao gồm GPIO27, 28 và 29.
Điều chế độ rộng xung (Pwm)
Đầu ra kỹ thuật số của vi điều khiển chỉ có thể là 1 hoặc 0. Để tạo tín hiệu tương tự, bạn cần có bộ chuyển đổi tín hiệu số sang tín hiệu tương tự. Tuy nhiên, có một cách khác là tạo tín hiệu tương tự một cách giả tạo, bằng cách sử dụng điều chế độ rộng xung hay viết tắt là PWM.
Bằng cách bật và tắt tín hiệu kỹ thuật số, đây được gọi là xung. Bằng cách điều chỉnh độ rộng của một xung, điều này tạo ra một tín hiệu tương tự một cách giả tạo như trong ví dụ sau:
import machine import utime pot = machine.ADC(26 led = machine.PWM(machine.Pin(21)) led.freq(1000) while True: led.duty_u16(pot.read_u16())
Đầu tiên, máy và thư viện utime đã được nhập. Một đối tượng, onboard_led được tạo với đầu ra PWM được kích hoạt trên chân GPIO 21. Sau đó, sử dụng lệnh freq , lệnh này đặt tần số để điều chỉnh độ rộng xung. Hãy tưởng tượng xoay chiết áp, đèn LED sẽ sáng hơn khi quay theo một chiều.
Điều này xảy ra vì giá trị tương tự từ chiết áp được sử dụng làm giá trị cho chu kỳ làm việc của tín hiệu PWM, nó là giá trị từ 0 đến 65535. Tuy nhiên, nếu không chuyển đổi, việc xoay một chút chiết áp có thể khiến đèn LED đạt đến mức độ sáng tối đa .
Để khắc phục điều này, để chiết áp chỉ đạt đến độ sáng đầy đủ khi xoay về phía cuối cùng, giá trị được chuyển đổi bằng hàm duty_u16 . Hàm này biến nó thành một số nguyên 16 bit có giá trị từ 0 đến 1024, là cùng một dải giá trị mà bạn sẽ nhận được từ chân tương tự của Pico.
Tạo nhiều hơn với Raspberry Pi Pico
Bài viết này đã trình bày các lệnh cơ bản trong MicroPython trên Raspberry Pi Pico. Để biết thêm thông tin, hãy xem tài liệu chính thức về lập trình MicroPython với Raspberry Pi Pico .
Nếu nó chưa được thiết lập trên Raspberry Pi Pico của bạn, hãy lấy Thonny IDE để chạy mã MicroPython của bạn hoặc kiểm tra trình giả lập CPU Unicorn để chạy vi điều khiển ảo trực tiếp trên máy tính của bạn.