Cytron Technologies

Giờ làm việc: 8:00 - 17:00

Thứ 2 - Thứ 6 (trừ ngày lễ)

Hotline 0362917357 

Cover

Màn Hình LCD Nối Tiếp 3.3V với Raspberry Pi Pico qua SPI hoặc I2C

Màn hình LCD ký tự nối tiếp 3.3V là một công cụ hiển thị tốt để xuất thông tin từ các nền tảng vi điều khiển như Raspberry Pi Pico, microbit, hoặc 3.3V Arduino. 

Nó đi kèm với cả cổng kết nối Inter IC (I2C hoặc IIC) và cổng kết nối Serial ngoại vi (SPI). Với hiển thị 2 dòng x 16 ký tự và 5 × 8 chấm chắc chắn là sự lựa chọn tốt nhất cho nhiều nhà sản xuất để hiển thị dữ liệu của họ. Nguồn điện yêu cầu là 3.3V và tương thích với hầu hết các MCU hiện có trên thị trường. Vì vậy, trong hướng dẫn này, chúng mình sẽ trình bày thiết lập và chương trình của Raspberry Pi Pico để hiển thị trên màn hình LCD này.

Video

Phần Cứng

Phần Mềm

Mình sử dụng Raspberry Pi 400 để phát triển chương trình cho Pico 🙂 Bạn có thể sử dụng bất ky máy tính hoặc laptop có Thonny Python IDE để làm.

Cài đặt

 

Bước 1: Cài MicroPython thành Raspberry Pi Pico

If you are new and have a fresh Pi Pico, you might need this step to help you. You can refer to this tutorial How to Set Up and Program Raspberry Pi Pico to help you set up your new Raspberry Pi Pico. If you confirmed that your Pi Pico is already been installed with MicroPython, you can skip this STEP and go straight to the next step.

Bước 2: Tải thư viện

Khởi động máy tính để lập trình màn hình. Trong hướng dẫn này, tôi đang sử dụng  Raspberry Pi 400 làm máy tính của mình để truy cập  Thonny Python IDE Python IDE để viết mã. Bạn có thể sử dụng bất kỳ máy tính hoặc máy tính xách tay nào miễn là nó có Thonny Python IDE để lập trình Pi Pico. Để lập trình màn hình, chúng ta cần thư viện hoặc “trình điều khiển” của màn hình LCD này. Bạn có thể lấy thư viện tại GitHub LCM1602-14_LCD_Librarynày được tạo bởi Bhavithiran. Hình ảnh sau đây sẽ hướng dẫn bạn cách tải xuống tệp từ GitHub:

Nhấp vào liên kết được đưa ra, chế độ xem sẽ như thế này.

Lcd 1
Lcd 2

Sau đó nhấp chọn‘code’ nút xanh và chọn download ZIP. Tệp này sẽ tự động tải xuống và chúng ta có thể sử dụng nó.

Bộ giao thức

Màn Hình LCD “Xin Chào Thế Giới”với I2C Bộ Giao Thức Giao Tiếp Nối Tiếp

I2C hoặc Inter-Integrated Circuit là giao thức truyền thông chỉ sử dụng hai dây để truyền thông là dữ liệu (SDA) và một dây khác, đồng hồ (SCL). Địa chỉ giao tiếp giữa màn hình LCD này và thiết bị là 62 (DEC) hoặc 0x3E. Đầu tiên, hãy lập trình để hiển thị “Hello World” trên màn hình LCD này với giao thức I2C sử dụng MicroPython. Dưới đây là sơ đồ mạch để thiết lập màn hình LCD với giao thức I2C trên Pi Pico:

I2c Combine

Chế độ xem thực tế của thiết lập : 

Bước 1 : Tải Lập Trình và Thư Viện vào Raspberry Pi Pico

Mở Thonny Python IDE trên máy tính, cắm USB vào máy tính. 

2021 02 18 104505 1920x1080 Scrot

Nếu hệ thống không phát hiện nhấp chọn Stop/Restart backened button. Sau đó chúng ta có thể xác định liệu thiết bị kết nối hay không bằng cách xem thiết bị đầu cuối.

2021 02 18 104515 1920x1080 Scrot 1

Nhấp chuột phải vào vị trí tệp thiết bị MicroPython và nhấp vào Thư mục mới để tạo thư mục thư viện để lưu trữ tệp. Nhập tên bất kỳ và thư mục sẽ được tạo. Đối với tôi, tôi đã sử dụng lib làm tên cho thư mục thư viện.

2021 02 18 105553 1920x1080 Scrot 1

 lib folder đã được tạo

2021 02 18 105610 1920x1080 Scrot

Nhấn lib folder dưới phần MicroPython devices. Tại tệp ‘This computer’ tìm tên LCD_I2C.py sau đó nhấp phải vào nó và nhấp Upload to /lib. Chúng ta sẽ thấy tệp đã được copy dưới dạng  MicroPython device .

2021 02 18 110138 1920x1080 Scrot

Thoát lib folder trong phần MicroPython device sau đó nhấn  Examples folder trong phần This Computer để tải chương trình trong Pi Pico.

2021 02 18 110600 1920x1080 Scrot

Nhấp chuột phải tệp  hello_world_i2c.py trong phần This computer và nhấp chọn  Upload to /  để tải tệp vào Pi Pico. Chúng ta có thể thấy tệp đã được sao chép dưới trong phần MicroPython device .

2021 02 18 110903 1920x1080 Scrot

Chúng ta đã tải xong chương trình Raspberry Pi Pico. Phần còn lại la thực hiện chương trình

Bước 2: Thực Hiện Chương Trình

Tìm tệp hello_world_i2c.py trong phần  MicroPython device sau đó nhấp chọn:

2021 02 18 111932 1920x1080 Scrot
Sau đó, tìm nút Run current script, nút play màu xanh lục để thực thi chương trình.
2021 02 18 112247 1920x1080 Scrot 2

Chương trình sẽ thực hiện và đầu ra sẽ như thế này:

Dsc 0128 1

Việc hình thành chương trình mẫu sẽ làm cho màn hình LCD:

  • Hiển thị văn bản trong khoảng 1 giây sau đó nó sẽ nhấp nháy.
  • Văn bản sẽ biến mất và con trỏ sẽ nhấp nháy.

Nếu bạn muốn duy trì hiển thị văn bản LCD trong Pi Pico mà không cần phải luôn thực thi với Thonny Python IDE, bạn cần lưu tên tệp là main.py. Tìm ‘tệp’ ở ngay phía trên của Thonny Python IDE, nhấp vào nó và tìm “lưu dưới dạng“.

Lưu dưới dạng MicroPython device :

2021 02 25 170218 1920x1080 Scrot

Name it as main.py

2021 02 25 170307 1920x1080 Scrot

Xác minh nó bằng cách cắm nó ra và kết nối với bất kỳ nguồn điện nào.

Như vậy là chúng ta đã hoàn thành việc hiển thị văn bản trên màn hình LCD với giao thức truyền thông I2C.

SPI hoặc Giao diện ngoại vi nối tiếp là giao thức truyền thông song công dựa trên bốn dây bao gồm bốn dây cho giao tiếp là MOSI (master out slave in), MISO (master in slave out), SCL (đồng hồ nối tiếp được tạo ra bởi chủ) và SS (dòng chọn phụ dùng để chọn phụ cụ thể trong quá trình giao tiếp). Ở đây, chúng ta sẽ tìm hiểu về cách hiển thị “Hello World” trên màn hình LCD này với giao thức SPI sử dụng MicroPython. Dưới đây là sơ đồ mạch để thiết lập màn hình LCD với giao thức SPI trên Pi Pico:

Spi Combine

Hiển thị cài đặt : 

Mở Thonny Python IDE, sau đó cắm Pi Pico vào máy tính. Nếu hệ thống không phát hiện, hãy nhấp vào nút Stop / Restart Backened. Đảm bảo rằng thư mục lib đã được tạo. Nếu thư mục lib chưa được tạo, bạn có thể chuyển đến BƯỚC 1 theo các bước giao thức I2C để được hỗ trợ.

2021 02 18 123858 1920x1080 Scrot 1

Nhập thư mục lib trong phần thiết bị MicroPython. Trong vị trí tệp ‘Máy tính này‘, hãy tìm tên LCD_SPI.py, sau đó nhấp chuột phải vào nó và nhấp vào Tải lên / lib. Chúng ta có thể thấy rằng tệp đã được sao chép trong phần thiết bị MicroPython.

2021 02 18 124157 1920x1080 Scrot

Thoát thư mục lib trong phần thiết bị MicroPython, sau đó nhập thư mục Ví dụ trong phần Máy tính này để chúng tôi tải lên chương trình trong Pi Pico.

2021 02 18 124326 1920x1080 Scrot

Nhấp chuột phải vào tệp hello_world_spi.py tại phần Máy tính này và nhấp vào Tải lên / để tải tệp lên Pi Pico. Chúng ta có thể thấy tệp đã được sao chép trong phần thiết bị MicroPython.

2021 02 18 124839 1920x1080 Scrot

Bây giờ chúng ta đã hoàn tất việc tải chương trình vào Raspberry Pi Pico. Những gì còn lại là thực hiện chương trình.

Ứng Dụng

Như chúng ta đã biết, Pi Pico đã được tích hợp sẵn một cảm biến nhiệt độ. Vì vậy, làm thế nào về việc chúng ta tạo một số ứng dụng với nó và hiển thị nhiệt độ trên màn hình LCD. Điều này có thể giúp chúng ta sửa đổi những gì chúng ta đã học được ở trên. Dưới đây mình đã bao gồm mã cho cả hai giao thức, bạn có thể sửa đổi, cải thiện và rất tốt cho bạn khi tự viết mã. Giải thích về cách mã hoạt động được bao gồm trong mã (xem bình luận).

Hiển thị nhiệt độ cho mã giao thức :

from LCD_I2C import *    #import LCD I2C library
import math
import machine
import utime

_tempSensor = machine.ADC(machine.ADC.CORE_TEMP) #initialize temperature sensor in Pi Pico
lcd = LCD(sda=2, scl=3) #I2C communcation

conv = 3.3 / (65535) #convert raw reading from sensor to voltage

lcd.set_cursor(0,0)
lcd.write("Temperature :")
lcd.set_cursor(3,1)
lcd.write("Deg Celcius")

while True:
    reading = _tempSensor.read_u16() * conv #analog input read and apply the conversion factor
    temperature = 27 - (reading - 0.706)/0.001721 #convert temperature to degree celcius
    lcd.set_cursor(0,1)
    lcd.write(str(math.trunc(temperature))) #display the temperature and round off it
    utime.sleep(1)

Đặt mã code trong main.py để thực hiện vĩnh viễn :

2021 03 11 103649 1920x1080 Scrot

Temperature display for SPI protocol code :

from LCD_SPI import *    #import LCD_SPI library
import math
import machine
import utime

_tempSensor = machine.ADC(machine.ADC.CORE_TEMP) #initialize temperature sensor in Pi Pico
lcd = LCD(sck=2, tx=3, cs=5) #SPI communcation

conv = 3.3 / (65535) #convert raw reading from sensor to voltage

lcd.set_cursor(0,0)
lcd.write("Temperature :")
lcd.set_cursor(3,1)
lcd.write("Deg Celcius")

while True:
    reading = _tempSensor.read_u16() * conv #analog input read and apply the conversion factor
    temperature = 27 - (reading - 0.706)/0.001721 #convert temperature to degree celcius
    lcd.set_cursor(0,1)
    lcd.write(str(math.trunc(temperature))) #display the temperature and round off it
    utime.sleep(1)

Đặt mã code trong main.py để thực hiện vĩnh viễn :

2021 03 11 095539 1920x1080 Scrot 1

Đâu ra cho cả hai mã code :

Dsc 0246

Kết Luận

Kết luận, màn hình LCD ký tự nối tiếp3V3 là một thiết bị hiển thị tuyệt vời vi có sẵn hai loại giao tiếp nối tiếp. Điều này giúp sử dụng giao tiếp SPI đông thời thử nghiệm với I2C. Bảng bên dưới hiển thị sự so sánh đơn giản giữa hai bộ giao thức cho sản phẩm này.

Inter-Integrated Circuit (I2C)Serial Peripheral Interface (SPI)
Ít dây kết nối hơnNhiều dây kết nối hơn
Giao tiếp chậm hơnGiao tiếp nhanh hơn

hello_world_spi.py and hello_world_i2c.py chỉ là mã code mẫu để bạn thử chạy và xem liệu màn hình có hoạt động hay không. Bạn có thể cải thiện, sửa đổi, cập nhật hoặc tạo mã của riêng mình. Tuy nhiên, hãy luôn bao gồm thư viện vi bộ hướng dẫn phần cứng để màn hình có thể hoạt động.

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận