Cách sử dụng Serial Monitor & Serial Plotter trên phần mềm Arduino

From MakerLab Wiki
Jump to navigation Jump to search

Serial Monitor & Serial Plotter là gì?

Serial Monitor là một công cụ tích hợp sẵn trong phần mềm Arduino cho phép trao đổi dữ liệu giữa mạch Arduino và máy tính (PC) qua giao tiếp Serial UART. Nó có thể hiển thị dữ liệu nhận được từ mạch Arduino gửi lên máy tính ở dạng văn bản, cũng như ngược lại có thể gửi bất kì nội dung dữ liệu nào từ máy tính xuống mạch Arduino.

Serial Plotter là một công cụ tích hợp sẵn trong phần mềm Arduino cho giúp bạn vẽ đồ thị các giá trị được mạch Arduino gửi lên máy tính qua giao tiếp Serial UART, các giá trị phải được gửi theo một quy chuẩn nhất định để có thể hiển thị.

Serial Monitor & Serial Plotter
Serial Monitor & Serial Plotter

Cách sử dụng Serial Monitor

Icon-Info-White.png Lưu ý:
Mặc định nếu chưa kết nối và cấu hình mạch, cổng kết nối trên phần mềm Arduino thì Serial Monitor sẽ không thể khởi động.

Code Mẫu Serial Monitor:

Để có thể hiểu được các chức năng nhận và truyền ký tự của Serial Monitor ta sử dụng đoạn code mẫu như sau để nạp vào mạch Arduino:

// Hello Arduino Example

/* ----------------------------------------------------- */

void setup()
{
  // Khởi động chuẩn kết nối Serial với tốc độ Baudrate 115200bps
  Serial.begin(115200);
}

/* ----------------------------------------------------- */

void loop()
{
  // Nội dung này được in ra cứ mỗi 2 giây (2000 mili giây)
  Serial.print("Hello Arduino!");
  delay(1000);
  Serial.println("_Done");
  delay(1000);
  // In ra ký tự được tryền từ máy tính
  while (Serial.available()){
      char key = Serial.read();
      Serial.print("Received_");
      Serial.println(key);
      delay(1000);
     }
}

Giải thích code

Chương trình gồm các câu lệnh được đặt trong 2 hàm bắt buộc của một chương trình Arduino là void setup()void loop()

void setup() (chứa các câu lệnh chỉ khởi chạy 1 lần khi khởi động)

  • Serial.begin(baudrate): khởi động cổng kết nối Serial trên mạch Vietduino Uno với tốc độ (baudrate) mong muốn, các tốc độ hỗ trợ thường là: 9600, 115200,...

void loop() (chứa các câu lệnh chạy lặp đi lặp lại )

  • Serial.print(data): gửi dữ liệu từ mạch Vietduino Uno lên máy tính "không" kèm theo ký tự xuống dòng, nếu dữ liệu là kiểu ký tự thì cần để trong dấu "".
  • Serial.println(data): gửi dữ liệu từ mạch Vietduino Uno lên máy tính kèm theo ký tự xuống dòng, nếu dữ liệu là kiểu ký tự thì cần để trong dấu "".
  • delay(time): yêu cầu Vietduino Uno chờ (không làm gì cả) trong một khoảng thời gian nhất định, đơn vị là mili giây (ms).
  • Serial.available(): kiểm tra có dữ liệu gửi về cổng Serial hay không, ví dụ bạn gửi: "abc" thì giá trị của hàm này là 3.
  • Serial.read(): đọc dữ liệu nhận được từ cổng Serial dưới dạng ký tự.

Kết quả

Sau khi đã nạp code thành công, nhấn vào "biểu tượng kính lúp" hoặc chọn Tools > Serial Monitor để mở Serial Monitor, chọn đúng tốc độ Baudrate là 115200bps để thấy chương trình hoạt động, nhập ký tự "abcd" sẽ nhận được kết quả như sau:

Chương trình Xin Chào Arduino!
Chương trình Xin Chào Arduino!

Giao diện của Serial Monitor:

Serial Monitor Interface
Serial Monitor Interface
  • Vùng màu đỏ: là vùng để nhập các giá trị truyền từ máy tính xuống mạch Arduino.
  • Vùng màu xanh lá: là vùng thiết lập các kiểu truyền giá trị:
    • No Line Ending: không kèm theo ký tự cuối nào khi truyền.
    • New Line: kèm theo ký tự xuống dòng /n.
    • Carriage Return: kèm theo ký tự về đầu dòng /r.
    • Both NL & CR: kèm theo cả hay ký tự /n và /r.
  • Vùng màu xanh dương: là vùng thiết lập tốc độ truyền nhận Baudrate, phải đúng với tốc độ truyền đã thiết lập cho mạch Arduino qua hàm Serial.begin(baudrate), thông thường sẽ là 9600 hoặc 115200.

Cách sử dụng Serial Plotter

Icon-Info-White.png Lưu ý:
Mặc định nếu chưa kết nối và cấu hình mạch, cổng kết nối trên phần mềm Arduino thì Serial Plotter sẽ không thể khởi động.

Code Mẫu Serial Plotter:

Để có thể hiểu được chức năng vẽ đồ thị của Serial Plotter ta sử dụng đoạn code mẫu như sau để nạp vào mạch Arduino:

// Serial Plotter Arduino Example
/* ----------------------------------------------------- */

//Khởi tạo hai biến đếm
int count1 = 0;
int count2 = 0;

void setup()
{
  // Khởi động chuẩn kết nối Serial với tốc độ Baudrate 115200bps
  Serial.begin(115200);
}

/* ----------------------------------------------------- */

void loop()
{
  // Giảm dần giá trị của biến đếm để quan sát trên Serial Plotter
  for (count1 = 100; count1 >= 0; count1--)
  {
    Serial.print("count1:");
    Serial.print(count1);
    Serial.print(" ");
    count2=count1*2;
    Serial.print("count2:");
    Serial.print(count2);
    Serial.println();
    delay(100);
  }
}

Giải thích code

Chương trình sẽ giảm dần giá trị biến "count1" từ 100 về 0, biến "count2" cũng giảm dần giá trị và chạm "count1" ở giá trị bằng 0, cấu trúc hiển thị hai biến "count1" và "count2" trên Serial Plotter có dạng: "name_1:value_1 name_2:value_2 ... name_N:value_N" theo sau là "kí tự xuống dòng" (\n) được tạo bới hàm Serial.println().

Kết quả

Dữ liệu sẽ được gửi lên Serial Monitor và hiển thị dạng đồ thị trên Serial Plotter như hình:

Serial Plotter Example
Serial Plotter Example