Hôm nay trong quá trình tìm lại tool  STMStudio thì vô tình mình đã thấy nó đã quá cũ và không còn được khuyến khích sử dụng nữa, thay vào đó lại là một tool rất mới nhưng không hề xa lạ với chúng ta. STM32CubeMonitor. Nay chia sẻ cho anh em cùng tìm hiểu về tool này xem nó ngon lành như thế nào nhé

Giới thiệu

STM32CubeMonitor giúp tinh chỉnh và chẩn đoán các ứng dụng STM32 tại thời điểm chạy bằng cách đọchiển thị các biến của chúng trong thời gian thực.
STM32CubeMonitor cung cấp flow-based graphical editor (trình chỉnh sửa đồ họa dựa trên luồng) để xây dựng dashboard (các trang tổng quan)  một cách đơn giản và nhanh chóng thêm các giao diện như như đồng hồ đo, biểu đồ và đồ thị.
Với khả năng giám sát không xâm nhập, STM32CubeMonitor duy trì hoạt động thời gian thực của các ứng dụng và bổ sung hoàn hảo cho các công cụ gỡ lỗi truyền thống để thực hiện việc ghi chép và phân tích ứng dụng.

Với tính năng remote monitoring (giám sát từ xa) và hỗ trợ nhiều dạn hiển thị, STM32CubeMonitor cho phép người dùng giám sát các ứng dụng thông qua mạng,
kiểm tra nhiều device đồng thời và trực quan trên các thiết bị khác nhau như PC, máy tính bảng hoặc điện thoại di động.
Hơn nữa, với sự hỗ trợ trực tiếp của cộng đồng Node-RED® , STM32CubeMonitor cho phép lựa chọn không giới hạn các phần mở rộng để giải quyết nhiều loại ứng dụng khác nhau.

Sau khi tải về và cài đặt thì không còn nghi ngờ gì nữa, nó chính là base trên Node-RED đó anh chị em ạ, nếu anh chị em chưa biết Node-RED là gì thì mình về bài viết này để hóng nhé.

Node-red cơ bản | Học ARM
Node-red nó là gì ? Node-RED được dựa trên Node.js, nó có thể được xem như một web server mà bạn có thể cấu hình tùy chỉnh các chức năng gọi là “flow” từ bất kỳ trình duyệt nào trên máy tính. Mỗi ứng dụng Node-RED bao gồm các node có thể liên kết được với nhau với các dạng là input, output và operat…

Ở bài viết trên, phải tốn rất nhiều công sức để cài đặt Node-RED, để nó work với STM32 thì phải nhiều công hơn nữa, tuy nhiên giờ đã có STM32CubeMonitor lo hết cho chúng ta rồi, chỉ việc tải về và cài đặt, sau đó có sẵn IDE để mọi người dùng luôn, quá tiện phải không nào.

Tính năng

STM32CubeMonitor có một số tính năng ngon lành mình xin list ra dưới đây

  • Trình editor giao diện đồ họa kéo thả, không cần lập trình để tạo dashboard
  • Kết nối với STM32 device thông qua ST-LINK (SWD hoặc JTAG protocols)
  • Đọc ghi variable on-the-fly từ RAM trong thời gian thực khi ứng dụng đang chạy
  • Lấy thông tin debug từ file thực thi (executable file)
  • Có 2 mode hoạt động là acquisition mode hoặc snapshot mode
  • Trigger thông tin tập trung vào ứng dụng hoặc các hành vi ưa thích
  • Cho phép log data vào file và có thể xem lại hoặc phân tích
  • Cung cấp hiển thị có thể tùy chỉnh biểu đồ với rất nhiều widget (như gauges, bar graphs và plots)
  • Multi-probe support hỗ trợ monitor nhiều target liên tiếp
  • Remote monitoring với nhiều dạng hiển thị khác nhau (PCs, tablets, mobile phones)
  • Hỗ trợ từ cộng đồng Node-RED®
  • Hỗ trợ Multi-OS: Windows®, Linux® Ubuntu® and macOS®

Cài đặt

Anh chị em có thể tải tool ở đây https://www.st.com/en/development-tools/stm32cubemonitor.html

Với window sau khi cài đặt phiên bản STM32CubeMonitor Windows installer xong với các bước ấn next thì chúng ta sẽ có giao diện như sau

  • [Palette] – Danh sách các node có sẵn để dùng
  • [Workspace] – Chương trình dưới dạng kéo thả và nối các khối với nhau
  • [Side bar] – Data & error messages giữa các node

Truy cập

Với STM32CubeMonitor ta có 2 cách có thể truy cập lấy thông tin từ board:

  • Chạy trên host PC kết nối với STM32 target
Local access
  • Chạy trên web browser dùng IP address của host PC
Remote access

Basic flow hoạt động như thế nào ?

Khi click nút “Start Acquisition” :

Dữ liệu được gửi để thăm dò và cấu hình đầu dò
Dữ liệu được nhận bằng đầu dò trong và được lọc bởi nút xử lý
Mỗi thông báo đầu vào đại diện cho một phép đo của một nhóm các biến, cứ 50 mili giây cho một thông báo cho mỗi biến có chứa một hoặc các ký hiệu phụ (x và y)
Nút biểu đồ nhận được những thông báo này và hiển thị nó trong bảng điều khiển dữ liệu

  1. Data sẽ được gửi tới probe out và cấu hình probe
  2. Data được nhận bởi probe in và filter (lọc) bởi processing node
  3. Với mỗi input message đại diện cho một phép đo chứa nhóm các biến, cứ 50 ms cho một message
  4. Chart node nhận messages và hiển thị data lên dashboard

Design nodes

Nói qua một chút về ý nghĩa của các node để mọi người có thể làm quen. Những node này được dùng để tạo ra các flow từ target tới variable, render những thứ này trên dashboard view. Tất nhiên là những thứ này không có hiển thị lên dashboard. Nó giống như là phần backend khi bạn dev web đó.

Acquisition out

Node này cho phép người dùng tự define và lựa chọn probe config (probe name, protocol và frequency). Nhiệm vụ chính của nó là mở và đóng connection, và gửi các command qua probe.

Acquisition in

Node này tương tự như acquisition out. Khác biệt là nó nhận data từ probe mà chúng ta lựa chọn. Ngoài ra nó được design để có thể link với một hoặc nhiều node khác .

Variables

Node này cho phép một nhóm biến được cấu hình để chứa một tập hợp các biến và một vài tham số bổ sung rất hữu ích cho việc giao tiếp với target

Processing

Điều này biến đổi mỗi message input vào đại diện cho một phép đo của một nhóm biến thành một message cứ sau 50 ms cho mỗi biến. Message  chứa một hoặc nhiều (x và y). Cũng có thể xác định các biểu thức và thống kê dựa trên các phép đo và các tùy chọn nhật ký riêng lẻ. Node này cho phép lọc dữ liệu từ probe, cho mỗi nhóm biến.

Dashboard nodes

Chart

Nút này cho phép các giá trị đầu vào được vẽ trên biểu đồ. Nó có thể là biểu đồ dạng line hoặc biểu đồ dạng bar.

Write panel

Node này cho phép bạn có thể vẽ thêm widget vào dashboard.

Ví dụ

Nói nhiều lý thuyết quá chắc anh chị em cũng hơi chán, giờ mình vào luôn ví dụ cụ thể cho dễ hình dung nha mọi người

Ví dụ 1

Trong ví dụ này mình sẽ sử dụng flow mặc định của STM32CubeMonitor. Monitor 1 biến tự tạo để kiểm tra flow hoạt động hay không

Đầu tiên ta chọn vào myVariables như hình trên, Add custom variable là Var với địa chỉ 0x00000000, kiểu dữ liệu uint8, biến này tự tạo và không có liên quan tới target, do đó giá trị nó sẽ không có thay đổi gì. Lưu lại bằng cách chọn Done

Sau đó là cấu hình cho probe_Out, nếu lần đầu thì bạn cần ấn vào add new probe và biểu tượng bút chì, tiếp tục chọn ST-Link và Add, sau đó ấn Done để hoàn thành

Tương tự với Probe_In, lần này thì có ST-Link sẵn trong list rồi chỉ việc lựa chọn và Done thôi

Cuối cùng là deploy và xem kết quả, nếu bạn thấy Sucessfull và p2p connect với STM32F4xxx nghĩa là bạn đã cấu hình thành công.

Lưu ý nhỏ: ở đây mình dùng board STM32F407 Discovery để demo, với các board khác cũng sẽ hoạt động tương tự nha mọi người

Sau đó ta kiểm tra dashboard hoạt động như thế nào, bạn có thể thấy biến Var của mình hiển thị giá trị lên biểu đồ như thế nào sau khi ấn vào nút Start Acquisition rồi, muốn dừng lại thì bạn có thể ấn Stop và Clear để xóa thông tin

Ví dụ 2

Ví dụ 1 chỉ cơ bản là thử dashboard xem có hiển thị được gì hay không thôi. Giờ là hiển thị variable thật từ ADC, lấy luôn một đoạn code có sẵn của STM32F4

STM32F4-Discovery-Tutorial/06_ADC_basic at master · hocarm/STM32F4-Discovery-Tutorial
Các ví dụ lập trình STM32F4 Discovery dùng CubeMX. Contribute to hocarm/STM32F4-Discovery-Tutorial development by creating an account on GitHub.

Mình dùng code này build và nạp cho kit.

Vẫn tận dụng ví dụ 1, giờ mình sửa lại myVariables lại, chỗ executable chọn vào biểu tượng bút chì trỏ tới folder ADC đã build trước đó

Xong phần cấu hình giờ là deploy và vào dashboard start thôi, bạn đã thấy value ADC được gửi lên từ kit rồi đấy. Ngon lành rồi nhé

Kết

Bài viết này đã giới thiệu cho các bạn về công cụ mới để monitor mọi thứ trong kit STM32, với STM32CubeMonitor ta có thể làm được rất nhiều thứ hay ho như quan sát giá trị, thậm chí monitor cũng như phân tích các giá trị đo đó. Hẹn gặp các bạn ở bài tiếp theo.

Tham khảo

[1][2]