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).

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ật

Bộ 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ý

Hướng dẫn sử dụng raspberry pi 4

CẢNH BÁO

Sả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.

  • Sản phẩm này phải được vận hành trong môi trường thông gió tốt và nếu sử dụng bên trong hộp thì không được đậy nắp.
  • Sản phẩm này nên được đặt trên bề mặt ổn định, phẳng, không dẫn điện đang sử dụng và không được tiếp xúc với các vật dụng dẫn điện.
  • Kết nối của các thiết bị không tương thích với kết nối GPIO có thể ảnh hưởng đến việc tuân thủ và dẫn đến hư hỏng thiết bị và làm mất hiệu lực bảo hành.
  • Tất cả các thiết bị ngoại vi được sử dụng với sản phẩm này phải tuân theo các tiêu chuẩn liên quan của quốc gia sử dụng và được đánh dấu phù hợp để đảm bảo đáp ứng các yêu cầu về an toàn và hiệu suất. Các bài viết này bao gồm nhưng không giới hạn bàn phím, màn hình và chuột khi được sử dụng cùng với Raspberry Pi.
  • Khi các thiết bị ngoại vi được kết nối không bao gồm cáp hoặc đầu nối, cáp hoặc đầu nối phải có cách điện và hoạt động thích hợp để đáp ứng các yêu cầu về tính năng và an toàn liên quan.

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:

  • Không tiếp xúc với nước, hơi ẩm hoặc đặt trên bề mặt dẫn điện khi đang hoạt động.
  • Không để nó tiếp xúc với nhiệt từ bất kỳ nguồn nào; Raspberry Pi 4 Model B được thiết kế để hoạt động đáng tin cậy ở nhiệt độ phòng bình thường.
  • Cẩn thận trong khi xử lý để tránh hư hỏng về cơ hoặc điện đối với bảng mạch in và các đầu nối.
  • Tránh xử lý bảng mạch in trong khi được cấp nguồn và chỉ xử lý các cạnh để giảm thiểu nguy cơ hư hỏng do phóng điện.

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!!!

Hướng dẫn sử dụng raspberry pi 4

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

Hướng dẫn sử dụng raspberry pi 4

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 Pi


1. Giới thiệu UART trên Raspberry Pi

Raspberry 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 Pi

Hì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ứng

Kế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 UART

Chuẩ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 C

Ví 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) {

if((fd = serialOpen ("/dev/ttyAMA0", 9600)) < 0 ){  
  fprintf (stderr, "Unable to open serial device: %s\n", strerror (errno));  
}  
serialPuts(fd, "hello");  
serialFlush(fd);  
printf("%s\n", "hello");  
fflush(stdout);  
delay(1000);  
} 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() {

if (Serial.available() > 0) {  
    String str = Serial.readString();  
    Serial.print("Received: ");  
    Serial.println(str);  
}  
}

- 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ả :

Hướng dẫn sử dụng raspberry pi 4

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) {

if((fd = serialOpen ("/dev/ttyAMA0", 9600)) < 0 ){  
  fprintf (stderr, "Unable to open serial device: %s\n", strerror (errno)) ;  
}else{  
  do{  
    c = serialGetchar(fd);  
    printf("%c",c);  
    fflush (stdout);  
  }while(serialDataAvail(fd));  
}  
} 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ả :

Hướng dẫn sử dụng raspberry pi 4

b. Lập trình Python

Xem 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:

while True:  
  ser.write(b'hehe')  
  ser.flush()  
  print("hehe")  
  time.sleep(1)  
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:

while True:  
    s = ser.readline()  
    data = s.decode()      # decode s  
    data = data.rstrip()      # cut "\r\n" at last of string  
    print(data)        # print string  
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ối

Uart đượ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.