Hướng dẫn sử dụng raspberry pi 4
Các tính năng chính của sản phẩm này bao gồm bộ vi xử lý lõi tứ 64-bit hiệu suất cao, hỗ trợ hiển thị kép ở độ phân giải lên đến 4K thông qua một cặp cổng micro-HDMI, giải mã video phần cứng lên đến 4Kp60, RAM lên đến 8GB, kép. - LAN không dây băng tần 2.4 / 5.0 GHz, Bluetooth 5.0, Gigabit Ethernet, USB 3.0 và khả năng PoE (thông qua tiện ích bổ sung PoE HAT riêng biệt). Show Mạng LAN không dây băng tần kép và Bluetooth có chứng nhận tuân thủ theo mô-đun, cho phép bo mạch được thiết kế thành các sản phẩm cuối với việc kiểm tra tuân thủ giảm đáng kể, cải thiện cả chi phí và thời gian đưa ra thị trường. Đặc điểm kỹ thuậtBộ xử lý:Broadcom BCM2711, SoC lõi tứ Cortex-A72 (ARM v8) 64 bit @ 1.5GHzBộ nhớ:2GB, 4GB hoặc 8GB LPDDR4 (tùy thuộc vào kiểu máy)Kết nốiKhông dây 2.4 GHz và 5.0 GHz IEEE 802.11b / g / n / ac LAN, Bluetooth 5.0, BLE Gigabit Ethernet 2 cổng USB 3.0 2 cổng USB 2.0.GPIO:Đầu cắm GPIO 40 chân tiêu chuẩn (hoàn toàn tương thích ngược với các bo mạch trước đó)Video & Âm thanh:2 × cổng micro HDMI (hỗ trợ lên đến 4Kp60) Cổng hiển thị MIPI DSI 2 làn Cổng camera MIPI CSI 2 làn Cổng video tổng hợp và âm thanh stereo 4 cựcĐa phương tiện:H.265 (giải mã 4Kp60); H.264 (giải mã 1080p60, mã hóa 1080p30); Đồ họa OpenGL ES, 3.0Hỗ trợ thẻ SD:Khe cắm thẻ nhớ Micro SD để tải hệ điều hành và lưu trữ dữ liệuNguồn điện đầu vào:5V DC qua đầu nối USB-C (tối thiểu 3A 1) 5V DC qua đầu cắm GPIO (tối thiểu 3A1) Nguồn qua Ethernet (PoE) –được bật (yêu cầu PoE HAT riêng biệt)môi trường:Nhiệt độ hoạt động 0–50ºCTuân thủ:Để có danh sách đầy đủ các phê duyệt sản phẩm địa phương và khu vực, vui lòng truy cập https://www.raspberrypi.org/documentation/hardware/raspberrypi/conformity.mdThời gian sản xuất:Raspberry Pi 4 Model B sẽ vẫn được sản xuất cho đến ít nhất là tháng 2026 năm XNUMX. Thông số kỹ thuật vật lýCẢNH BÁOSản phẩm này chỉ nên được kết nối với nguồn điện bên ngoài được đánh giá ở mức tối thiểu 5V / 3A DC hoặc 5.1V / 3A DC Mọi nguồn điện bên ngoài được sử dụng với Raspberry Pi 4 Model B đều phải tuân thủ các quy định và tiêu chuẩn liên quan được áp dụng tại quốc gia dự định sử dụng sử dụng.
NHỮNG CHỈ DẪN AN TOÀNĐể tránh trục trặc hoặc hư hỏng cho sản phẩm này, vui lòng tuân thủ những điều sau:
Có thể sử dụng nguồn điện 2.5A chất lượng tốt nếu các thiết bị ngoại vi USB hạ nguồn tiêu thụ tổng cộng ít hơn 500mA. Từ 2019 MLAB có thêm một website cho riêng Raspberry Pi và trở thành website chính về Raspberry Pi tại MLAB, các thông tin về sản phẩm - tin tức cập nhật về Raspberry Pi - Bài viết kỹ thuật hỗ trợ cho Raspberry Pi, ... MLAB cập nhật tại website : pivietnam.com.vn MLAB trân trọng thông báo tới quý khách hàng!!! Các bạn có thể tham khảo các bài viết hỗ trợ kỹ thuật và các tin tức mới nhất tại phần "tin tức"trên website PVIETNAM.COM.VN Bài viết hỗ trợ kỹ thuật tại website PIVIETNAM.COM.VN - Bài 4: Lập trình Raspberry sử dụng cổng truyền thông (Link here) Giao tiếp qua cổng UART với Raspberry Pi1. Giới thiệu UART trên Raspberry PiRaspberry Pi hỗ trợ chuẩn Uart trên chân BCM14 (TX) và BCM15 (RX). Mặc định uart được sử dụng làm serial console; nó sẽ gửi toàn bộ thông tin của kernel trong quá trình Pi khởi động. Bạn có thể kết nối trực tiếp uart của pi thông qua mạch USB-TTL để xem thêm. Để sử dụng Uart với mục đích riêng bạn phải giải phóng chân Uart. Lưu ý với Raspberry Pi 3 Uart còn được sử dụng để kết nối bluetooth, và chân BCM14 và BCM15 trở thành mini uart port. Để Setup UART cho Pi dùng trong kết nối với các MCU khác, các bạn có thể tham khảo hướng dẫn trong video sau : 2. Giao tiếp UART với Raspberry PiHình 1 : chân GPIO của Raspberry Pi 2 model B Dưới đây là hai ví dụ đơn giản giao tiếp giữa Raspberry và Arduino Vn01: - Ví dụ 1 : Gửi chuỗi ký tự từ Raspberry tới Arduino. - Ví dụ 2 : Gửi chuỗi ký tự từ Arduino tới Raspberry. Thông tin : raspberry Pi 2 model B và Arduino Vn01 2.1 Kết nối phần cứngKết nối giữa Arduino và Pi như sau : RX của arduio <-> TX của Pi và ngược lại TX của arduino <-> RX của Pi, kết nối chung 2 chân GND với nhau. 2.2.1 Lập trình giao tiếp UARTChuẩn bị thư viện cho C là wiring-pi như trong bài 1 đã đề cập tới. Thư viện cho python là pySerial sudo apt-get install python-serial Khi cần dùng thư viện chỉ cần thực hiện “import serial” a. Lập trình bằng CVí dụ 1 Chương trình “uart-send.c” trên Raspberry // Compile : gcc -Wall uart-send.c -o uart-send -lwiringPi include
include
include
include
include
include int main() { int fd; printf("Raspberry's sending : \n"); while(1) { }
return 0;
}
Chương trình trên Pi sẽ gửi chuỗi ký tự “hello” thông qua uart tới arduino. Nó sẽ gửi liên tục sau 1s.Thư viện sử dụng : include - Mở cổng kết nối Serial. int serialOpen (char *device, int baud); Luôn nhớ rằng cổng uart có tên là ttyAMA0. Hàm này sẽ trả về file-descriptor. Nễu file-descritor lỗi sẽ có giá trị là -1. - Hàm gửi dữ liệu Void serialPutchar (int fd, unsigned char c) ; Hàm này gửi sẽ gửi 1 byte. Nếu muốn gửi một mảng (hoặc chuỗi ký tự) có thể sử dụng hàm sau. void serialPuts (int fd, char *s) ; - Hàm void serialFlush (int fd) : chờ đến khi dữ liệu được gửi xong hoặc bỏ qua tất cả dữ liệu được gửi tới. Hàm này rất cần với uart, nếu không có sẽ không thể gửi chính xác được. Bạn nên bỏ hàm này đi và xem thử. Có lẽ đây là một bug nhỏ đối với chương trình này vì đáng lý ra chương trình sau khi thực hiện lệnh gửi dữ liệu có thể thực hiện ngay lập tức lệnh tiếp theo, dữ liệu sẽ được uart tự động ngầm gửi đi. Chương trình không cần phải chờ. Các hàm được hỗ trợ : wiringPi Để compile được chương trình thực hiện lệnh gcc -Wall uart-send.c -o uart-send -lwiringPi Chương trình “uart-receive.ino” trên Arduino void setup() { Serial.begin(9600); // opens serial port, baudrate : 9600 bps } void loop() { }- Khởi tạo Uart : Serial.begin(9600); Lưu ý rằng baudrate bằng 9600 giống như trên Pi. - Hàm kiểm tra xem có dữ liệu tới uart không : Serial.available() Hàm này trả về số byte nhận được. - Đọc dữ liệu chuỗi ký tự : Serial.readString(); Trả về dữ liệu kiểu String. - Lưu ý: Serial.print(); Mục đích để hiện thị lên màn hình kết quả, nhưng nó gửi qua Uart nên cũng đồng thời nó gửi dữ liệu tới Pi. Kết quả : Ví dụ 2 Chương trình “uart-receive.c” trên Raspberry // Compile : gcc -Wall uart-receive.c -o uart-receive -lwiringPi include
include
include
include
include
include int main() { int fd; char c; printf("Raspberry's receiving : \n"); while(1) { }
return 0;
}- Kiểm tra xem có dữ liệu tới không : int serialDataAvail (int fd); Hàm này trả về số byte dữ liệu xuất hiện. Trả về -1 nếu bị lỗi. - Đọc dữ liệu int serialGetchar (int fd); Trả về một byte dữ liệu tới. Con trỏ của nó sẽ tự tăng sau mỗi lần gọi. Hàm sẽ chờ tới tận 10s nếu không có dữ liệu. Trả về -1 nếu bị lỗi. Chương trình “uart-send.ino” trên Arduino void setup() { // put your setup code here, to run once: Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: Serial.println("arduino say hello!"); delay(1000); } Kết quả : b. Lập trình PythonXem một số ví dụ về thư viện Ví dụ 1 Chương trình “uart-send.py” trên Raspberry #!/usr/bin/python3 import time import serial ser = serial.Serial( port = '/dev/ttyAMA0', baudrate = 9600, parity = serial.PARITY_NONE, stopbits = serial.STOPBITS_ONE, bytesize = serial.EIGHTBITS, timeout = 1 ) print("Raspberry's sending : ") try: except KeyboardInterrupt:
ser.close()- Thiết lập serial serial.Serial() Nếu không thể khởi tạo Serial được sau timeout thì sẽ thông báo lỗi. Ở đây đặt timeout = 1s. - Gửi dữ liệu : int write(data); Hàm nãy có thể gửi nhiều byte dữ liệu cùng lúc. Hàm trả vè là số byte đã gửi. - Hàm flush() Cũng như với chương trình C, cần flush nếu không serial sẽ không gửi đúng. - Đóng Serial close(); Nếu có interrupt xảy ra, ví dụ như CTR+C thì chương trình sẽ bắt được sự kiện đó và sẽ đóng serial. Lí do vì Serial sẽ không tự đóng lại khi chương trình bị ngắt không kiểm soát. Như vậy nó sẽ tiếp tục được mở và không cho phép chương trình nào khác sử dụng nó –> chương trình chạy sẽ bị lỗi ở lần tiếp theo. Đây là python version 3 nên khi chạy bạn thực hiện lệnh python3 uart-send.py Kết quả tương tự như chương trình C Ví dụ 2 Chương trình “uart-receive.py” trên Raspberry #!/usr/bin/python3 import time import serial ser = serial.Serial( port = '/dev/ttyAMA0', baudrate = 9600, parity = serial.PARITY_NONE, stopbits = serial.STOPBITS_ONE, bytesize = serial.EIGHTBITS, timeout = 1 ) print("Raspberry's receiving : ") try: except KeyboardInterrupt:
ser.close()- Đọc dữ liệu readline() Hàm trả về là những byte đọc được. Hàm đọc kết thúc với timeout=1 được thiết lập bên trên. - Lưu ý : Ở trên có sử dụng 2 hàm dưới đây trước khi hiển thị kết quả data=s.decode() data=data.rstrip() Mọi người nên kiểm tra kết quả khi không có 2 hàm trên để hiểu thêm về kết quả nhận được. Kết quả tương tự với chương trình C 3. Sử dụng cổng USB để kết nốiUart được Raspberry Pi với mục đích log cho kernel. Nếu không thiếu thốn hay bắt buộc phải sử dụng cổng uart các bạn có thể chuyển sang cổng usb để thay thế. Với hệ điều hành linux các kênh xuất nhập đều có thể kết nối thông qua file-descriptor, dù uart hay usb thì chỉ cân thay đổi file-descriptor thì có thể kết nối tới nó. Toàn bộ code bên trên có thể dùng kết nối qua cổng USB, chỉ cần thay “ttyAMA0” bằng tên cổng USB có dạng “ttyUSB*”. Các bạn có thể kết nối arduino với thiết bị USB-TTL như PL2303 và sau đó cắm thiết bị vào Pi qua cổng USB là có thể kết nối. Lưu ý đây là sử dụng cổng USB để kết nối chứ không phải kết nối hoàn tòan bằng giao thức USB vì phía bên arduino sử dụng phương thức uart. |