Đũa phép AI kết hợp với TensorFlow Lite cho Vi điều khiển và Arduino

1. Giới thiệu

Sản phẩm bạn sẽ tạo ra

Trong lớp học lập trình này, chúng ta sẽ tìm hiểu cách sử dụng TensorFlow Lite cho vi điều khiển để chạy mô hình học sâu trên Arduino Nano 33 BLE. Bộ vi điều khiển được biến thành "đũa phép" kỹ thuật số do người dùng tạo ra để vẫy tay và phù phép khác nhau. Khi người dùng di chuyển đũa, dữ liệu cảm biến đa chiều, phức tạp này mà con người không thể hiểu được, sẽ được truyền dưới dạng dữ liệu đầu vào cho mô hình, từ đó tạo ra một cách phân loại đơn giản nhằm cảnh báo chúng ta nếu một trong nhiều chuyển động xảy ra.

9208eb1207211349.gif

Công nghệ học máy trên vi điều khiển

Công nghệ học máy có thể được dùng để tạo ra các công cụ thông minh giúp người dùng sống dễ dàng hơn, chẳng hạn như Trợ lý Google. Tuy nhiên, những trải nghiệm này thường đòi hỏi nhiều hoạt động tính toán hoặc tài nguyên, trong đó có thể bao gồm một máy chủ đám mây mạnh mẽ hoặc một máy tính để bàn. Tuy nhiên, hiện có thể chạy dự đoán học máy trên phần cứng nhỏ, tiết kiệm năng lượng, chẳng hạn như vi điều khiển.

Bộ vi điều khiển cực kỳ thông dụng, rẻ tiền, tiêu tốn rất ít năng lượng và rất đáng tin cậy. Chúng là một phần của tất cả các loại thiết bị gia dụng, chẳng hạn như thiết bị gia dụng, ô tô và đồ chơi. Trên thực tế, mỗi năm có khoảng 30 tỷ thiết bị chạy vi điều khiển được sản xuất.

1914a419dfacf0b5.jpeg

Bằng cách đưa công nghệ học máy vào các bộ vi điều khiển nhỏ bé, chúng ta có thể nâng cao trí tuệ cho hàng tỷ thiết bị mà chúng ta sử dụng trong cuộc sống mà không cần dựa vào phần cứng đắt tiền hay kết nối Internet đáng tin cậy. Hãy tưởng tượng những thiết bị thông minh có thể thích ứng với thói quen hằng ngày của bạn, các cảm biến công nghiệp thông minh có khả năng hiểu được sự khác biệt giữa vấn đề và hoạt động bình thường, cùng những đồ chơi kỳ diệu có thể giúp trẻ học tập theo những cách thú vị và vui vẻ.

TensorFlow Lite cho vi điều khiển (Phần mềm)

864114d0c2b4c919.pngS

TensorFlow là bộ khung máy học nguồn mở của Google để huấn luyện và chạy các mô hình. TensorFlow Lite là một khung phần mềm, là một phiên bản được tối ưu hoá của TensorFlow, nhằm chạy các mô hình tensorflow trên các thiết bị nhỏ và tương đối tiết kiệm năng lượng như điện thoại di động.

TensorFlow Lite cho vi điều khiển là một khung phần mềm, một phiên bản được tối ưu hoá của TensorFlow, được nhắm mục tiêu để chạy các mô hình tensorflow trên phần cứng nhỏ, tiết kiệm năng lượng như vi điều khiển. Thư viện tuân thủ những điều kiện ràng buộc bắt buộc trong các môi trường nhúng này, tức là có kích thước nhị phân nhỏ, không cần hỗ trợ hệ điều hành hay bất kỳ thư viện C hoặc C++ tiêu chuẩn nào hay quy trình phân bổ bộ nhớ động, v.v.

Arduino Nano 33 BLE (Phần cứng)

bcd452d4d660efa9.jpeg

Arduino là một nền tảng nguồn mở phổ biến, dùng để xây dựng các dự án điện tử. Bộ công cụ này bao gồm:

  1. Một bảng mạch lập trình vật lý (thường là bộ vi điều khiển) như Arduino Nano 33 BLE được dùng trong lớp học lập trình này.
  2. Phần mềm Arduino IDE (Môi trường phát triển tích hợp) dùng để viết và tải mã máy tính lên bảng thực.

Arduino Nano 33 BLE là một nền tảng dựa trên bộ vi điều khiển: một máy tính nhỏ bé trên một bảng mạch duy nhất. Thiết bị này có bộ xử lý, bộ nhớ và phần cứng I/O cho phép thiết bị gửi và nhận tín hiệu kỹ thuật số đến các thiết bị khác. Không giống như máy tính, bộ vi điều khiển không mạnh mẽ và thường không chạy hệ điều hành. Thay vào đó, chúng có bộ xử lý nhỏ, không có nhiều bộ nhớ và các chương trình bạn viết chạy trực tiếp trên phần cứng. Nhưng do chúng được thiết kế đơn giản nhất có thể nên bộ vi điều khiển có thể sử dụng rất ít năng lượng.

Bạn sẽ thực hiện

  • Thiết lập bộ vi điều khiển Arduino Nano 33 BLE và biến bộ vi điều khiển này thành "đũa thần" kỹ thuật số
  • Thiết lập IDE Arduino rồi cài đặt các thư viện cần thiết
  • Triển khai chương trình trên thiết bị
  • Phù phép bằng cách vẫy đũa thần và xem dự đoán

Bạn cần có

  • Máy tính xách tay Linux, MacOS hoặc Windows
  • Arduino Nano BLE Sense 33 (không có tiêu đề)
  • Cáp Micro USB (Nếu bạn dùng máy tính xách tay USB-C, hãy mua cáp USB-C sang Micro USB)
  • (không bắt buộc) Dính, khoảng 12 inch (dài 30 cm)
  • (không bắt buộc) Băng dính

2. Thiết lập Vi điều khiển Arduino

Giải nén Arduino

Lấy bộ sạc ra khỏi hộp rồi kéo ra khỏi lớp mút xốp. Nó dẫn điện và có thể gây ra sự cố!

6ed84a651c871a58.jpeg

Cắm thiết bị vào máy tính xách tay

  • Cắm cáp MicroUSB vào ổ cắm trên chip.
  • Cắm đầu còn lại của cáp vào ổ cắm USB trên máy tính xách tay.
  • Đèn LED ở dưới cùng bên trái trên Arduino (ở trên cùng bên trái trong hình bên dưới) sẽ sáng lên.

c6936696f9659104.jpeg

Làm quen với quy trình công việc

99852afbed7e78b0.pngS

Như minh hoạ trong sơ đồ trên, trình thông dịch TFLite trên Arduino định kỳ chạy suy luận trên mô hình. Mô hình này sử dụng dữ liệu gia tốc kế đã xử lý làm dữ liệu đầu vào và đưa ra thông tin dự đoán cho thấy cử chỉ có nhiều khả năng xảy ra nhất. Ngoài ra, kết quả mong muốn sẽ được in và các đèn LED bên phải sẽ sáng lên.

3. Thiết lập Arduino IDE

1. Tải Arduino IDE xuống

Để triển khai chương trình cho Vi điều khiển Arduino, chúng tôi sử dụng IDE Arduino.

Sau khi tải ứng dụng xuống, hãy cài đặt và mở Arduino IDE bằng cách nhấp vào ứng dụng có biểu tượng như sau: 75717f13527f36b9.pngS

Trang đích ban đầu sẽ mở ra như sau:

933c91e6e1997c61.pngS

2. Thiết lập Board Manager (Quản lý hội đồng)

  1. Trên trình đơn Arduino, hãy chọn Tools -> Board: "Arduino .." —> Boards Manager
  2. Tìm "Arduino Nano 33 BLE" rồi cài đặt Arduino nRF528x Boards (Mbed OS). Việc này sẽ đảm bảo rằng Vi điều khiển Arduino Nano 33 BLE của chúng tôi được IDE Arduino hỗ trợ. 817c63346152eda9.png.
  1. Trên trình đơn Arduino, hãy chọn Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"

9357691e1a1348eb.png.

  1. Cuối cùng, hãy xác minh bảng đã chọn là "Arduino Nano 33 BLE" ở dưới cùng bên phải của IDE.

aa08706bb84fa9b2.png

3. Thiết lập Cổng

Trên trình đơn Arduino, hãy chọn Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE). Bạn sẽ thấy mã tương tự như sau:

8c25990d0c6fb6f8.png.

4. Kiểm tra kết nối với bo mạch

Trên trình đơn Arduino, hãy chọn Tools -> Get Board Info. Bạn sẽ thấy mã tương tự như sau:

ccd8f5305be6cf59.png

4. Cài đặt thư viện

1. Thư viện TensorFlow Arduino

Thư viện này chứa tất cả các ví dụ về TensorFlow Lite cho Vi điều khiển, bao gồm cả mã nguồn cây đũa thần cần thiết cho lớp học lập trình này.

  1. Trên trình đơn Arduino, hãy chọn Sketch -> Include Library -> Add .ZIP Library...
  2. Thêm Thư viện TensorFlow Arduino .zip mà bạn đã tải xuống.

2. Thư viện Arduino LSM9DS1

Thư viện này cho phép bạn đọc các giá trị gia tốc kế, từ kế và con quay hồi chuyển từ LSM9DS1 IMU trên Arduino Nano 33 BLE Sense.

  1. Trên trình đơn Arduino, hãy chọn Sketch -> Include -> Manage Libraries...
  2. Tìm kiếm và cài đặt "Arduino_LSM9DS1". ac2f78a737c5f233.png

5. Tải và tạo ví dụ

1. Tải ví dụ

Trong trình đơn Arduino, hãy chọn File -> Examples -> Arduino_TensorFlowLite -> magic_wand để tải mã mẫu.

de349f2d3cb49b98.png

Thao tác này sẽ tải mã nguồn đũa thần.

cda8c35a597b0798.png

2. Xây dựng ví dụ

Nhấp vào nút Upload trong cửa sổ phác thảo.

71cb1474d5e14669.pngS

Sau vài phút, bạn sẽ thấy văn bản màu đỏ cho biết quá trình nhấp nháy đã hoàn tất. Trong quá trình tải lên, đèn LED bên phải sẽ nhấp nháy rồi chuyển sang tối ở cuối.

3df1d0858c6e40a4.pngS

6. Bản minh hoạ

Đũa phép hiện có thể phát hiện 3 cử chỉ như minh hoạ dưới đây: 99a607da66af9fc8.pngS

  1. Cánh: Bắt đầu từ góc trên bên trái và vẽ cẩn thận chữ "W" trong 2 giây.
  2. Vòng: Khởi động thẳng đứng, di chuyển đũa theo vòng tròn theo chiều kim đồng hồ trong 1 giây.
  3. Dốc: Bắt đầu bằng cách giữ cây đũa hướng lên, với đèn LED về phía bạn. Di chuyển đũa xuống theo hướng nghiêng sang trái rồi sang phải theo chiều ngang trong một giây.

Hình ảnh sau đây minh hoạ 2 cử chỉ. Đầu tiên là lope (Dọc) rồi đến Wing (chọn một cánh (đây là tài liệu tham khảo cho bản minh hoạ của bạn).

9208eb1207211349.gif

Để chạy bản minh hoạ, hãy làm theo hướng dẫn ở bên dưới:

  1. Sau khi cắm USB, hãy chọn Tools -> Serial Monitor trong trình đơn Arduino. Ban đầu, thao tác này sẽ mở ra một màn hình trống không có đầu ra.

38e8d53652eb28f2.pngs

  1. Di chuyển bộ vi điều khiển Arduino để theo dõi cẩn thận từng hình dạng ở trên và xem màn hình nối tiếp có phát hiện thấy cử chỉ hay không.

60b8a0017bcae419.pngS

  1. Từ dữ liệu đầu ra của màn hình nối tiếp, chúng ta nhận thấy rằng đũa thần thực sự đã phát hiện được tất cả các hình dạng! Bạn cũng sẽ thấy đèn LED bên phải sáng lên.

7. Các bước tiếp theo

Xin chúc mừng! Bạn đã tạo thành công "đũa phép thuật" đầu tiên nhận dạng cử chỉ trên bộ vi điều khiển Arduino!

Chúng tôi hy vọng bạn thích phần giới thiệu ngắn gọn này về quá trình phát triển bằng TensorFlow Lite dành cho Vi điều khiển. Ý tưởng học sâu về vi điều khiển là một phương pháp mới và thú vị. Chúng tôi khuyến khích bạn tham gia và thử nghiệm!

Tài liệu tham khảo

647c3ef0dc103804.png.

Cảm ơn và chúc bạn xây dựng vui vẻ!