Arduino UNO R4 Minima Cheat Sheet

Arduino® UNO R4 Minima là bo mạch phát triển có kiểu dáng UNO cổ điển, dựa trên bộ vi điều khiển RA4M1 do Renesas sản xuất . Hiện tại nó đi kèm với bộ nhớ RAM 32 kB, tốc độ xung nhịp 48 MHz và cổng USB-C.

Đây là bo mạch UNO đầu tiên sử dụng kiến ​​trúc 32 bit, trước đây dựa trên kiến ​​trúc AVR 8 bit.

Bài viết này là tài liệu tham khảo kỹ thuật về bảng của bạn, giới thiệu các thành phần khác nhau của bảng cũng như các tài nguyên để bắt đầu.

Datasheet

Bạn có thể tải xuống datasheet đầy đủ dưới dạng PDF theo liên kết bên dưới:

Nguồn cấp

Để cấp nguồn cho UNO R4 Minima, bạn có thể sử dụng cáp USB-C hoặc chân VIN.

Bo mạch có thể được cấp nguồn thông qua chân VIN, hỗ trợ phạm vi điện áp trong khoảng 6-24V. Chân VIN cũng được kết nối với jack cắm DC .

Khi được cấp nguồn qua chân VIN, bạn đang sử dụng bộ điều chỉnh trên bo mạch để hạ điện áp xuống 5V, nghĩa là chân 5V có thể cung cấp dòng điện lên tới 1,2A. Hãy nhớ rằng bộ điều chỉnh điện áp này cũng cấp nguồn cho phần còn lại của bảng mạch , bao gồm MCU, đèn LED và các thành phần khác.

Các thiết bị bên ngoài có dòng điện cao (ví dụ: động cơ servo) không bao giờ được cấp nguồn qua chân 5V. Nó chủ yếu dành cho các thiết bị có dòng điện thấp hơn như mô-đun cảm biến.

Nếu bạn đang sử dụng đầu nối USB-C, bạn phải cấp nguồn cho nó ở mức 5V.

Khi được cấp nguồn qua USB, bạn sẽ bỏ qua hoàn toàn bộ điều chỉnh điện áp trên bo mạch. Trong trường hợp này, chân 5V có thể cung cấp tới 2A mà không làm hỏng bo mạch.

Board Package

UNO R4 Minima dựa trên UNO R4 Board Package.

Cài đặt

UNO R4 Minima có thể được lập trình thông qua Arduino IDE, Arduino Web Editor hoặc Arduino CLI.

Arduino IDE

Để sử dụng bo mạch trong Arduino IDE, bạn cần cài đặt phiên bản mới nhất của gói bo mạch Arduino UNO R4 từ trình quản lý bo mạch.

Đọc thêm trong hướng dẫn Bắt đầu với UNO R4 Minima.

Trình biên tập web Arduino

Web Editor là một IDE trực tuyến bao gồm tất cả các bảng chính thức, không cần cài đặt Gói Board. Bạn sẽ cần cài đặt Create Plugin trên máy tính của mình để sử dụng Web Editor.

Đọc thêm trong hướng dẫn Bắt đầu với Arduino Web Editor.

Renesas RA4M1

UNO R4 Minima có bộ vi điều khiển Renesas mạnh mẽ và rất chắc chắn cũng có trên UNO R4 WiFi. Bộ vi điều khiển Renesas được biết đến với hiệu suất cao và độ chắc chắn, bao gồm cả bộ ngoại vi tích hợp.

Các thiết bị ngoại vi này bao gồm bộ chuyển đổi tín hiệu analog sang tín hiệu số, bộ hẹn giờ, bộ điều chế độ rộng xung (PWM), giao tiếp truyền thông (như UART, SPI và I2C), v.v.

Bộ vi điều khiển trên UNO R4 Minima

Memory

Tính năng của bảng

  • 32 kB SRAM
  • 256 kB flash
  • Dữ liệu 8 kB (EEPROM).

Chân (PIN)

UNO R4 Minima cho phép bạn truy cập vào nhiều chân khác nhau và nhiều chân trong số đó có các tính năng đặc biệt sẽ được đề cập trong các phần sắp tới của bài viết này. Hãy đọc để tìm hiểu những gì bạn có thể làm với chúng.

Đây là bảng đầy đủ tất cả các chân IO trên UNO R4 Minima:

Pin Type Chức năng
D0 Digital UART Receive
D1 Digital UART Transmit
D2 Digital GPIO pin, Interrupt
D3 Digital GPIO pin, Interrupt, PWM
D4 Digital GPIO pin
D5 Digital GPIO pin, PWM
D6 Digital GPIO pin, PWM
D7 Digital GPIO pin
D8 Digital GPIO pin
D9 Digital GPIO pin, PWM
D10 Digital SPI (CS), GPIO pin, PWM
D11 Digital SPI (CIPO), GPIO pin, PWM
D12 Digital SPI (COPI), GPIO pin
D13 Digital SPI (SCK), GPIO pin, Built-in LED
A0 Analog Analog In, DAC
A1 Analog Analog In, OPAMP +
A2 Analog Analog In, OPAMP -
A3 Analog Analog In, OPAMP OUT
A4 Analog Analog In, SDA*
A5 Analog Analog In, SCL*

Các chân A4 và A5 đều được kết nối với cùng một bus I2C.

Analog Pins

UNO R4 Minima có sáu chân đầu vào tương tự (A0-A5) có thể được đọc bằng cách sử dụng analogRead() function.

Pin Type Chức năng
A0 Analog Analog In, DAC
A1 Analog Analog In, OPAMP +
A2 Analog Analog In, OPAMP -
A3 Analog Analog In, OPAMP OUT
A4 Analog Analog In, SDA*
A5 Analog Analog In, SCL*

Các chân A4 và A5 đều được kết nối với cùng một bus I2C.

value = analogRead(pin);

Điện áp tham chiếu mặc định của các chân này là 5 V, nhưng có thể thay đổi như sau:

  • analogReference(AR_DEFAULT) (Tham chiếu mặc định là 5 V)
  • analogReference(AR_INTERNAL) (Được xây dựng trong tham chiếu 1,5 V.)

Độ phân giải mặc định được đặt thành 10 bit nhưng có thể cập nhật lên độ phân giải 12 và 14 bit. Để làm như vậy, hãy sử dụng phương pháp sau trong setup() bản phác thảo của bạn.

  • analogReadResolution(10) (mặc định)
  • analogReadResolution(12)
  • analogReadResolution(14)

Để tìm hiểu thêm về khả năng ADC của UNO R4 Minima, hãy tham khảo Hướng dẫn về độ phân giải ADC.

Chân OPAMP

RA4M1 có OPAMP bên trong được trình bày trên UNO R4 Minima như sau :

Ghim OPAMP
A1 OPAMP +
A2 OPAMP -
A3 ĐẦU RA OPAMP

PWM

Khả năng PWM (Điều chế độ rộng xung) cho phép chân kỹ thuật số mô phỏng đầu ra tương tự bằng cách nhấp nháy rất nhanh, cho phép bạn làm mờ đèn LED được kết nối với chân kỹ thuật số.

UNO R4 Minima hỗ trợ PWM trên các chân được đánh dấu bằng ~ trên các đầu cắm. Các chân được hỗ trợ chính thức là:

Pin RA4M1 Timer
D3 P104 GTIOC1B
D5 P102 GTIOC2B
D6 P106 GTIOC0B
D9 P303 GTIOC7B
D10 P112 GTIOC3B
D11 P109 GTIOC1A

Bạn có thể sử dụng chúng làm chân đầu ra tương tự với chức năng:

analogWrite(pin, value);

Theo mặc định, độ phân giải là 8 bit (0-255), Bạn có thể sử dụng analogWriteResolution() để thay đổi điều này, hỗ trợ độ phân giải lên tới 12 bit (0-4096).

analogWriteResolution(resolution);

Digital Pins

UNO R4 Minima có tổng cộng 14 chân kỹ thuật số. Mặc dù một số trong số chúng phục vụ mục đích khác và không nên được sử dụng cho GPIO nếu bạn có sẵn các chân khác.

Pin Type Function
D0 Digital UART Receive
D1 Digital UART Transmit
D2 Digital GPIO pin, Interrupt
D3 Digital GPIO pin, Interrupt, PWM
D4 Digital GPIO pin
D5 Digital GPIO pin, PWM
D6 Digital GPIO pin, PWM
D7 Digital GPIO pin
D8 Digital GPIO pin
D9 Digital GPIO pin, PWM
D10 Digital SPI (CS), GPIO pin, PWM
D11 Digital SPI (CIPO), GPIO pin, PWM
D12 Digital SPI (COPI), GPIO pin
D13 Digital SPI (SCK), GPIO pin, Built-in LED

Ngoài ra, các chân analog A0-A5 cũng có thể được sử dụng làm chân kỹ thuật số. Lưu ý rằng A4/A5 được dành riêng cho bus I2C.

Điện áp tham chiếu của tất cả các chân kỹ thuật số là 5V.

LED

UNO R4 Minima có tổng cộng bốn đèn LED, ba trong số đó có thể lập trình được:

  • ON - đèn LED nguồn, không thể lập trình được.
  • LED_BUILTIN - "đèn LED tích hợp", được gắn vào chân 13.
  • LED_RX - Đèn LED có nhãn "RX" trên bảng.
  • LED_TX - Đèn LED có nhãn “TX” trên bảng.

Để kiểm soát những thứ này, hãy định nghĩa chúng là đầu ra và viết trạng thái mong muốn. Ví dụ bên dưới nhấp nháy từng đèn LED mỗi giây.

 
void setup(){
  //define pins as output
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(LED_RX, OUTPUT);
  pinMode(LED_TX, OUTPUT);
}

void loop(){
  //turn on all LEDs
  digitalWrite(LED_BUILTIN, HIGH);
  digitalWrite(LED_RX, LOW);
  digitalWrite(LED_TX, LOW);
  delay(1000);

  //turn off all LEDs
  digitalWrite(LED_BUILTIN, LOW);
  digitalWrite(LED_RX, HIGH);
  digitalWrite(LED_TX, HIGH);
  delay(1000);
}

DAC

Chân cắm DAC

UNO R4 Minima có DAC với độ phân giải lên tới 12-bit, có thể hoạt động như một chân đầu ra analog thực sự, nghĩa là nó thậm chí còn có khả năng hơn các chân PWM.

analogWrite(pin, value);

Pin DAC này có độ phân giải ghi mặc định là 8 bit. Điều này có nghĩa là các giá trị được ghi vào pin phải nằm trong khoảng từ 0-255.

Tuy nhiên, bạn có thể thay đổi độ phân giải ghi này nếu cần, lên tới 12 bit và trong trường hợp này, các giá trị bạn ghi vào mã pin phải nằm trong khoảng 0-4096.

analogWriteResolution(12);

Để tìm hiểu thêm về khả năng DAC của UNO R4 Minima, hãy xem Hướng dẫn về DAC .

RTC

Đồng hồ thời gian thực (RTC) được sử dụng để đo thời gian và rất hữu ích trong mọi ứng dụng theo dõi thời gian.

Dưới đây là một ví dụ tối thiểu cho thấy cách lấy ngày và giờ từ RTC:

 
#include "RTC.h"

void setup() {
  Serial.begin(9600);

  RTC.begin();
  RTCTime mytime(30, Month::JUNE, 2023, 13, 37, 00, DayOfWeek::WEDNESDAY, SaveLight::SAVING_TIME_ACTIVE);

  RTC.setTime(mytime);
}

void loop() {
  RTCTime currenttime;

 // Get current time from RTC
  RTC.getTime(currenttime);
  
  // Print out date (DD/MM//YYYY)
  Serial.print(currenttime.getDayOfMonth());
  Serial.print("/");
  Serial.print(Month2int(currenttime.getMonth()));
  Serial.print("/");
  Serial.print(currenttime.getYear());
  Serial.print(" - ");

  // Print time (HH/MM/SS)
  Serial.print(currenttime.getHour());
  Serial.print(":");
  Serial.print(currenttime.getMinutes());
  Serial.print(":");
  Serial.println(currenttime.getSeconds());

  delay(1000);
}

Để tìm hiểu thêm về khả năng RTC của UNO R4 Minima, hãy xem Hướng dẫn RTC .

Bộ nhớ EEPROM

EEPROM, còn được gọi là bộ nhớ 'dữ liệu', là loại bộ nhớ có thể lưu giữ dữ liệu ngay cả sau khi bo mạch đã tắt nguồn. Arduino Uno R4 Minima có EEPROM 8 kB.

EEPROM.write(address, val);
EEPROM.read(address);

Nó có số lượng chu kỳ ghi hạn chế, nghĩa là nó phù hợp nhất cho các ứng dụng chỉ đọc. Đảm bảo không bao giờ sử dụng write() bên trong void loop() vì bạn có thể sử dụng tất cả các chu kỳ ghi cho chip.

Đọc thêm trong Hướng dẫn về EEPROM .

Nếu bạn muốn tìm hiểu thêm về EEPROM, hãy xem bài viết này về Arduino UNO R4 Minima EEPROM .

SPI

Chân SPI

UNO R4 Minima có bus Giao tiếp ngoại vi nối tiếp (SPI). Bus (đầu nối), 'SPI' sử dụng các chân sau:

Pin Type
D13 SCK
D12 CIPO
D11 COPI
D10 CS

Ví dụ sau đây cho thấy cách sử dụng SPI:

#include <SPI.h>

const int CS = 10;


void setup() {
  pinMode(CS, OUTPUT);

  SPI.begin();

  digitalWrite(CS, LOW);

  SPI.transfer(0x00);
  
  digitalWrite(CS, HIGH);
}

void loop() {
}

I2C

Chân I2C

I2C cho phép bạn kết nối nối tiếp nhiều thiết bị tương thích I2C chỉ bằng hai chân. Bộ điều khiển sẽ gửi thông tin qua bus I2C đến địa chỉ 7 bit, nghĩa là giới hạn kỹ thuật của thiết bị I2C trên một dòng là 128. Trên thực tế, bạn sẽ không bao giờ đạt tới 128 thiết bị trước khi các giới hạn khác xuất hiện.

UNO R4 Minima có một bus I2C được đánh dấu bằng SCL và SDA. Chúng được chia sẻ với A4 (SDA) và A5 (SCL) mà chủ sở hữu của UNO trước đây đã quen thuộc. Các pullup không được gắn trên PCB nhưng có các footprint để làm như vậy nếu cần.

Có một số lợi thế khi không lắp điện trở pullup từ nhà máy:

  • Vì các chân được sử dụng cho I2C được kết nối trực tiếp với A4 và A5 tương ứng, chúng cũng có thể được sử dụng làm đầu vào/đầu ra kỹ thuật số và chân đầu vào tương tự. Việc gắn điện trở kéo lên I2C vào các chân này sẽ giới hạn chức năng chỉ dành cho I2C, vì chúng sẽ cục bộ HIGH theo mặc định.
  • Bằng cách chọn gắn các điện trở khác nhau, bạn có thể chọn xem bạn muốn vận hành thiết bị I2C 3,3V hay 5V với các chân này.

Các chân được sử dụng cho I2C trên UNO R4 Minima như sau:

  • SDA-D18 hoặc A4
  • SCL - D19 hoặc A5

Để kết nối các thiết bị I2C, bạn sẽ cần đưa thư viện Wire vào đầu bản phác thảo.

#include <Wire.h>

Bên trong void setup() bạn cần khởi tạo thư viện và khởi tạo cổng I2C mà bạn muốn sử dụng.

Wire.begin() //SDA & SDL

Và để ghi một cái gì đó vào một thiết bị được kết nối qua I2C, chúng ta có thể sử dụng các lệnh sau:

Wire.beginTransmission(1); //begin transmit to device 1
Wire.write(byte(0x00)); //send instruction byte 
Wire.write(val); //send a value
Wire.endTransmission(); //stop transmit

Tìm hiểu thêm về giao thức I2C trong Hướng dẫn giao thức I2C của chúng tôi

USB Serial & UART

Bo mạch Minima UNO R4 có hai cổng nối tiếp phần cứng riêng biệt.

  • Một cổng được hiển thị thông qua USB-C và
  • Một được tiếp xúc thông qua chân RX/TX.

Đây là một trong số ít điểm khác biệt rõ rệt giữa UNO R3 và UNO R4, vì UNO R3 chỉ có một cổng nối tiếp phần cứng được kết nối với cả cổng USB và chân RX/TX trên bo mạch.

Native USB

Việc gửi dữ liệu nối tiếp đến máy tính của bạn được thực hiện bằng cách sử dụng chuẩn Serial sự vật.

Serial.begin(9600);
Serial.print("hello world");

Để gửi và nhận dữ liệu qua UART, trước tiên chúng ta cần phải thiết lập tốc độ truyền dữ liệu bên trong void setup()

UART

Các chân được sử dụng cho UART trên UNO R4 Minima như sau:

Pin Function
D0 RX (Receive)
D1 TX (Transmit)

Để gửi và nhận dữ liệu qua UART, trước tiên chúng ta cần phải thiết lập tốc độ truyền dữ liệu bên trong void setup(). Lưu ý rằng khi sử dụng UART (chân RX/TX), chúng ta sử dụng đối tượng Serial1.

Serial1.begin(9600);

Để đọc dữ liệu đến, chúng ta có thể sử dụng vòng lặp while() để đọc từng ký tự riêng lẻ và thêm vào chuỗi.

while(Serial1.available()){
    delay(2);
    char c = Serial1.read();
    incoming += c;
  }

Và để viết một cái gì đó, chúng ta có thể sử dụng lệnh sau:

Serial1.write("Hello world!");
 

Serial Event

Phương thức serialEvent() được hỗ trợ trên các phiên bản cũ hơn của bảng UNO, nhưng không được hỗ trợ trên bảng UNO R4 (hoặc bất kỳ bảng Arduino mới hơn nào khác).

Tuy nhiên, vì phương pháp này chỉ được sử dụng để phát hiện dữ liệu nối tiếp và thực hiện một chức năng, bạn cũng có thể sử dụng Serial.available() để phát hiện khi có dữ liệu mới:

if(Serial.available() > 0) {
  //code goes here
}

Serial USB

UNO R4 Minima có một bộ phương thức Nối tiếp mở rộng:

  • Serial.baud() - Trả về tốc độ truyền (int) hiện đang được sử dụng.
  • Serial.stopbits() - Trả về số bit dừng (int) được sử dụng trong giao tiếp.
  • Serial.paritytype() - Trả về kiểu chẵn lẻ (int) được sử dụng trong giao tiếp.
  • Serial.numbits() - Trả về số bit dữ liệu (int) được sử dụng trong giao tiếp.
  • Serial.dtr() - Trả về trạng thái của tín hiệu Data Terminal Ready (DTR) (bool) và cũng đặt cờ ignore_dtr thành true nếu tín hiệu DTR đang được sử dụng.
  • Serial.rts() - Trả về trạng thái của tín hiệu Yêu cầu gửi (RTS) (bool) .

Các liên kết được hỗ trợ:

USB HID

Bảng này có thể hoạt động như một HID (bàn phím/chuột) và gửi tổ hợp phím hoặc tọa độ đến máy tính của bạn qua USB gốc.

keyboard.press('W');
mouse.move(x,y);

Hỗ trợ này được kích hoạt bởi các thư viện bàn phím và chuột mà bạn có thể cài đặt từ trình quản lý thư viện trong IDE.

Để tìm hiểu thêm về khả năng HID của UNO R4 Minima, hãy tham khảo Hướng dẫn HID .

Đầu nối SWD

Kết nối SWD

Trên UNO R4 Minima, có sẵn tùy chọn gỡ lỗi bằng cách sử dụng các chân đầu nối SWD, cung cấp các chức năng gỡ lỗi nâng cao cho những người dùng cao cấp hơn.

CAN Module

RA4M1 của UNO R4 Minima có mô-đun CAN tích hợp tuân thủ tiêu chuẩn CAN 2.0A/CAN 2.0B.

Các chân CANRX và CANTX có thể được kết nối với bộ thu phát CAN, chẳng hạn như IC MCP2551 hoặc TJA1050.

Pin Function
D4 CANTX
D5 CANRX

Thư viện Arduino_CAN tích hợp được sử dụng để giao tiếp với các thiết bị CAN khác.

//set CAN bit rate and init library at
//choose from BR_125k,BR_250k,BR_500k,BR_1000k 
CAN.begin(CanBitRate::BR_250k);

Xây dựng một tin nhắn CAN và gửi nó:

uint8_t const msg_data[] = {0xCA,0xFE,0,0,0,0,0,0};
memcpy((void *)(msg_data + 4), &msg_cnt, sizeof(msg_cnt));
CanMsg msg(CAN_ID, sizeof(msg_data), msg_data);
CAN.write(msg);

Đọc tin nhắn CAN đến.

CanMsg const msg = CAN.read(); //read

Xin lưu ý rằng nếu không có bộ thu phát CAN thì không thể giao tiếp với các thiết bị CAN khác.

Bộ nạp khởi động (Bootloader)

Trong trường hợp bạn cần flash bộ nạp khởi động trên UNO R4 Minima, bạn có thể làm theo các bước dưới đây:

Bước 1 Cài đặt UNO R4 Board Package như được mô tả trong Hướng dẫn bắt đầu .

Bước 2 Điều hướng đến: "C:\Users\YourWindowsUserName\AppData\Local\Arduino15\packages\arduino\hardware\ Renesas_uno\1.X\bootloaders\UNO_R4"

Bước 3 Xác định dfu_minima.hex

Bước 4 Cài đặt Renesas flash programmer ( trang tải xuống )

Phần mềm lập trình flash Renesas hiện chỉ có trên Windows.

Bước 5: Flash bộ nạp khởi động bằng bộ lập trình Renesas:

  • Lựa chọn dfu_minima.hex.
  • Kết nối board của bạn.
  • Nối tắt chân BOOT và GND trên UNO R4 Minima.
  • Vào tab Cài đặt kết nối (Connect Settings).
  • Chọn cổng COM trong Tool > chọn cổng hiển thị trong IDE.
  • Nhấn bắt đầu.

Để biết thêm chi tiết hãy kiểm tra README.md hoặc trang GitHub .

Nhận xét

Mới hơn Cũ hơn