Bối cảnh và vấn đề nghiên cứu

Sự phát triển của công nghệ kỹ thuật và xu hướng nhà thông minh (Smart Home) đã mang đến nhiều giải pháp tiện ích phục vụ đời sống sinh hoạt hàng ngày. Tuy nhiên, việc vận hành nhiều thiết bị đơn lẻ để đáp ứng từng nhu cầu riêng biệt (như xem thời gian, theo dõi thời tiết, ghi chú công việc, điều khiển thiết bị điện) tạo ra sự phân tán trong trải nghiệm người dùng. Nhằm tối ưu hóa không gian và tập trung hóa các tiện ích sinh hoạt vào một giao diện trực quan, đề tài "Thiết kế gương thông minh (Magic Mirror) dùng Raspberry Pi" được thực hiện nhằm nghiên cứu ứng dụng máy tính nhúng trong việc biến một vật dụng quen thuộc hàng ngày thành một trung tâm hiển thị và điều khiển đa chức năng.

Nhiệm vụ và mục tiêu nghiên cứu của đề tài bao gồm:

  1. Nghiên cứu cơ sở lý thuyết về hệ thống nhúng, máy tính nhúng Raspberry Pi và nền tảng mã nguồn mở Magic Mirror.
  2. Tích hợp các tính năng tiện ích cơ bản lên bề mặt gương: chức năng phản chiếu (soi gương truyền thống), hiển thị đồng hồ thời gian thực, cập nhật dự báo thời tiết, hiển thị album ảnh và danh sách lời nhắc lịch biểu.
  3. Xây dựng cơ chế điều khiển thông minh không chạm thông qua hai phương thức tương tác: điều khiển bằng giọng nói sử dụng trợ lý ảo Google Assistant và điều khiển chuyển đổi giao diện bằng cử chỉ tay thông qua camera và thư viện xử lý ảnh.
  4. Tích hợp khả năng điều khiển thiết bị ngoại vi trong nhà, cụ thể là điều khiển bật/tắt đèn thông qua ổ cắm thông minh liên kết với hệ thống.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Kỹ thuật chế tạo gương hai chiều (two-way mirror), máy tính nhúng Raspberry Pi, nền tảng Magic Mirror, các API dịch vụ trực tuyến và các giải thuật nhận diện cử chỉ bàn tay.
  • Phạm vi nghiên cứu:
    • Không gian: Thử nghiệm mô hình gương thông minh phục vụ trong không gian sinh hoạt gia đình (phòng ngủ, phòng khách, phòng tắm).
    • Công nghệ: Tập trung vào phần cứng máy tính nhúng Raspberry Pi 3, hệ điều hành Raspbian OS, mã nguồn mở Magic Mirror, thư viện MediaPipe và OpenCV trên ngôn ngữ Python.
    • Thời gian thực hiện: Năm 2023, thuộc chuyên ngành Điện tử - Viễn thông, Khoa Công nghệ Điện tử, Trường Đại học Công nghiệp Thành phố Hồ Chí Minh.

Cơ sở lý thuyết và phương pháp

Khung lý thuyết và công nghệ nền tảng

  • Máy tính nhúng và Raspberry Pi: Đề tài tiếp cận khái niệm máy tính nhúng theo định nghĩa của Wayne Wolf (thiết bị có thể lập trình, phục vụ các chức năng chuyên biệt) kết hợp phần cứng vi xử lý và phần mềm nhúng để thực thi tác vụ. Raspberry Pi (ra mắt từ năm 2006 bởi Eben Upton và Raspberry Pi Foundation) được sử dụng nhờ kích thước nhỏ gọn, khả năng chạy hệ điều hành Linux đầy đủ, tiêu thụ năng lượng thấp và hỗ trợ các cổng giao tiếp đa dạng (GPIO, HDMI, USB).
  • Hệ điều hành Raspbian (Raspberry Pi OS): Bản phân phối Linux tối ưu cho kiến trúc vi xử lý ARM của Raspberry Pi, cung cấp môi trường máy tính hoàn chỉnh để vận hành các ứng dụng nền tảng.
  • Nền tảng Magic Mirror: Framework mã nguồn mở dựa trên nền tảng Node.js và JavaScript, cho phép cấu hình giao diện module hóa theo cấu trúc tệp config.js để tổ chức vị trí hiển thị các khối dữ liệu trên màn hình gương.
  • Trợ lý ảo Google Assistant: Dịch vụ trí tuệ nhân tạo nhận dạng và xử lý ngôn ngữ tự nhiên từ giọng nói của Google, được liên kết qua giao thức Google Assistant API và Google Cloud Platform.
  • Nhận diện cử chỉ tay với MediaPipe: Giải pháp học máy từ Google hỗ trợ trích xuất và định vị không gian 21 khớp ngón tay từ khung hình camera, phục vụ cho việc ánh xạ tọa độ ngón tay sang sự kiện điều khiển màn hình ảo.
  • Dịch vụ dữ liệu trực tuyến: Tích hợp API OpenWeatherMap để truy xuất dữ liệu khí tượng theo mã định danh vị trí (locationID), API Google Photos (EXT-GooglePhotos) để đồng bộ hiển thị hình ảnh từ đám mây, và định dạng iCal từ Google Calendar để đồng bộ lịch trình.

Phương pháp nghiên cứu

  • Phương pháp thu thập và tổng hợp tài liệu: Nghiên cứu tài liệu kỹ thuật, sơ đồ chân GPIO của Raspberry Pi, tài liệu hướng dẫn phát triển module của cộng đồng Magic Mirror và các chuẩn giao tiếp phần cứng.
  • Phương pháp thiết kế và tích hợp hệ thống: Thiết kế sơ đồ khối phần cứng, phân tầng kiến trúc phần mềm, cấu hình API và lập trình xử lý tín hiệu camera.
  • Phương pháp thực nghiệm và kiểm thử chức năng: Thi công sản phẩm thực tế, cài đặt phần mềm trên thẻ nhớ 32GB, kiểm thử khả năng nhận dạng giọng nói "OK Google", độ trễ cập nhật API thời tiết/lịch trình và độ nhạy của giải thuật nhận diện cử chỉ ngón tay khi chuyển trang hiển thị.

Thiết kế và triển khai hệ thống

Hệ thống Gương thông minh được cấu trúc thành các khối chức năng liên kết chặt chẽ giữa phần cứng nhúng và phần mềm điều khiển:

Khối chức năng Thành phần phần cứng / dịch vụ Nhiệm vụ chính
Khối xử lý trung tâm Raspberry Pi 3 Tiếp nhận dữ liệu từ các khối ngoại vi, xử lý logic hệ thống, chạy nền tảng Magic Mirror và giải thuật Python.
Khối nguồn Bộ nguồn chuyển đổi DC Cung cấp nguồn điện ổn định cho bo mạch Raspberry Pi, màn hình hiển thị và các thiết bị ngoại vi.
Khối ngoại vi thu nhận Camera USB, Microphone USB Thu hình ảnh cử chỉ tay của người dùng; thu âm thanh giọng nói phục vụ trợ lý ảo Google Assistant.
Khối hiển thị Màn hình LCD + Kính gương 2 chiều Hiển thị các thông tin giao diện (giờ, thời tiết, lịch, ảnh) qua lớp kính phản xạ bán mạ.
Khối chấp hành & IoT Ổ cắm thông minh QCT Smart (Wi-Fi 2.4GHz) Đóng/cắt nguồn điện cấp cho đèn chiếu sáng theo lệnh điều khiển giọng nói từ trợ lý ảo.
Khối dịch vụ đám mây OpenWeatherMap, Google Cloud Console, Google Calendar, Google Photos Cung cấp API dữ liệu thời tiết, xác thực OAuth 2.0 (credentials.json), dữ liệu lịch biểu và lưu trữ album ảnh.

Quy trình triển khai phần mềm

  1. Cài đặt hệ điều hành và môi trường runtime: Sử dụng công cụ Raspberry Pi Imager để nạp hệ điều hành Raspbian OS lên thẻ nhớ 32GB; thiết lập môi trường máy ảo VNC Viewer để cấu hình từ xa; cài đặt môi trường NodeJS để thực thi nền tảng Magic Mirror viết bằng JavaScript.
  2. Cấu hình các Module hiển thị:
    • Module thời gian (clock): Khởi tạo đồng hồ số và ngày tháng thực tế.
    • Module thời tiết (weather): Đăng ký tài khoản OpenWeatherMap, cấu hình apiKey, trích xuất locationID từ cơ sở dữ liệu vị trí và xác định vị trí hiển thị (position) trên giao diện.
    • Module Google Photos (EXT-GooglePhotos): Cấu hình dự án trên Google Cloud Platform, tải tệp xác thực credentials.json, cấu hình thông số album ảnh (albums: ["Mirror"]), chế độ hiển thị toàn màn hình (displayType) và thời gian chuyển ảnh (displayDelay: 10000ms).
    • Module Google Calendar (lời nhắc): Trích xuất đường dẫn liên kết riêng tư định dạng iCal từ Google Calendar đưa vào cấu hình url, tùy biến màu sắc hiển thị sự kiện (color: "Violet", ngày lễ lunarColor: "Green").
  3. Triển khai Trợ lý ảo Google Assistant (MMM-GoogleAssistant):
    • Đăng ký Google Assistant API trên Google Cloud Console, thiết lập màn hình đồng thuận OAuth (OAuth Consent Screen) ở chế độ Người dùng ngoài (External).
    • Khởi tạo khóa xác thực OAuth Client ID dạng Web Application, khai báo đường dẫn chuyển hướng Authorized redirect URIs.
    • Nạp tệp credentials.json vào thư mục module MMM-GoogleAssistant và tích hợp micro thu âm để nhận diện câu lệnh kích hoạt "OK Google".
  4. Triển khai điều khiển đèn qua thiết bị bên thứ ba:
    • Kết nối ổ cắm thông minh QCT Smart vào mạng Wi-Fi băng tần 2.4GHz qua ứng dụng QCT Smart trên điện thoại thông minh.
    • Liên kết tài khoản QCT Smart vào dịch vụ Google Home / Google Assistant trên nền tảng đám mây.
    • Nhận lệnh điều khiển giọng nói từ micro của gương để gửi tín hiệu đóng/ngắt rơle của ổ cắm thông minh, điều khiển đèn chiếu sáng.
  5. Cấu hình đa màn hình và giải thuật nhận diện cử chỉ:
    • Cài đặt module phân chia trang màn hình với các tham số slides, chỉ báo trang showPageIndicators và mũi tên điều hướng showPageControls.
    • Viết chương trình Python sử dụng thư viện cv2 (OpenCV), mediapipepyautogui. Camera quét liên tục khung hình để nhận diện 21 khớp ngón tay; khi phát hiện tọa độ đầu ngón tay di chuyển theo hướng xác định, chương trình kích hoạt hàm điều khiển chuột ảo từ thư viện pyautogui để thực hiện thao tác chuyển trang hiển thị.

Nội dung chính theo từng chương

CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI

Chương 1 trình bày bối cảnh công nghệ và tính cấp thiết của việc tích hợp nhiều chức năng sinh hoạt vào một thiết bị duy nhất. Nội dung chương xác định rõ mục tiêu chế tạo mô hình Gương thông minh kết hợp tính năng soi gương truyền thống với khả năng hiển thị thông tin số và điều khiển nhà thông minh. Chương này cũng phân tích đối tượng nghiên cứu (gương 2 chiều), phạm vi nghiên cứu (Raspberry Pi 3 và nền tảng Magic Mirror), ý nghĩa thực tiễn của đề tài trong việc tiết kiệm thời gian và nâng cao chất lượng cuộc sống, cùng phương pháp tiếp cận từ nghiên cứu lý thuyết đến mô phỏng và hoàn thiện phần cứng.

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

Chương 2 tổng hợp các nền tảng lý thuyết và công nghệ được sử dụng trong đề tài:

  • Khái niệm và nguyên lý hoạt động của máy tính nhúng, phân tích cấu tạo và lịch sử phát triển của dòng máy tính nhúng Raspberry Pi từ năm 2006 (Eben Upton).
  • So sánh các hệ điều hành phổ biến chạy trên Raspberry Pi, trọng tâm là hệ điều hành Raspbian (đầy đủ tiện ích văn phòng, duyệt web) và Raspbmc (tối ưu hóa đa phương tiện dựa trên XBMC).
  • Nguyên lý hoạt động của trợ lý ảo Google Assistant và khả năng tương tác điều khiển bằng giọng nói.
  • Giới thiệu kiến trúc framework mã nguồn mở Magic Mirror hoạt động trên nền tảng Node.js, kèm theo cú pháp cấu hình JavaScript.
  • Giới thiệu ngôn ngữ lập trình bậc cao Python (phát triển từ năm 1991), đóng vai trò xử lý các luồng dữ liệu ngoại vi và thuật toán xử lý ảnh.

CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

Chương 3 xây dựng kiến trúc tổng thể của hệ thống Gương thông minh:

  • Thiết lập sơ đồ khối chức năng chi tiết gồm: Khối xử lý trung tâm (Raspberry Pi), Khối nguồn, Khối ngoại vi (Camera, Micro), Khối cảm biến/nhận diện vị trí, Khối hiển thị (LCD, Gương 2 chiều), Khối chấp hành (Ổ cắm QCT) và Khối liên kết Trợ lý ảo Google Assistant.
  • Liệt kê danh mục phần cứng cần thiết, thông số chân kết nối (GPIO, cổng USB, HDMI) và sơ đồ nguyên lý đấu nối dây giữa Raspberry Pi với các thiết bị ngoại vi thu phát tín hiệu.

CHƯƠNG 4: TIẾN HÀNH THỰC HIỆN

Chương 4 mô tả toàn bộ quy trình hiện thực hóa phần mềm và gia công phần cứng:

  • Hướng dẫn chi tiết từng bước nạp hệ điều hành Raspbian OS qua Raspberry Pi Imager và truy cập giao diện desktop qua VNC Viewer.
  • Quy trình cài đặt Node.js, tải mã nguồn Magic Mirror từ GitHub và khởi chạy phần mềm qua Terminal.
  • Cấu hình các module chức năng trong tệp config.js: Module thời gian, thời tiết (OpenWeatherMap API), album ảnh Google Photos (EXT-GooglePhotos), lịch nhắc Google Calendar (định dạng iCal).
  • Quy trình kích hoạt và lấy chứng thực OAuth 2.0 cho Google Assistant API trên Google Cloud Console để nạp tệp credentials.json.
  • Tích hợp ổ cắm thông minh QCT Smart (kết nối Wi-Fi 2.4GHz) qua ứng dụng QCT Smart và Google Home nhằm thực hiện đóng/ngắt nguồn đèn bằng giọng nói.
  • Triển khai module chia nhiều trang hiển thị và lập trình giải thuật nhận diện 21 khớp ngón tay qua MediaPipe kết hợp OpenCV và pyautogui trên Python để điều khiển lướt chuyển trang không chạm.
  • Thi công khung gương vật lý, lắp đặt tấm gương hai chiều phía trước màn hình hiển thị LCD, bố trí phần cứng bên trong hộp gương và tiến hành kiểm tra hoạt động của toàn bộ hệ thống.

Kết quả và đóng góp

Kết quả đạt được

  • Chế tạo thành công mô hình phần cứng: Hoàn thiện sản phẩm gương thông minh với mặt trước là kính gương hai chiều và mặt sau chứa bo mạch Raspberry Pi 3, màn hình LCD, bộ cấp nguồn, camera và microphone.
  • Hoạt động ổn định của các module phần mềm:
    • Hiển thị chính xác thời gian thực và dữ liệu dự báo thời tiết từ API OpenWeatherMap.
    • Tự động đồng bộ và hiển thị xoay vòng album ảnh từ dịch vụ Google Photos theo khoảng thời gian đặt trước (10 giây/ảnh).
    • Đồng bộ lịch trình cá nhân và ngày lễ từ Google Calendar qua luồng dữ liệu iCal.
  • Tương tác đa phương thức:
    • Trợ lý ảo Google Assistant nhận lệnh giọng nói qua microphone, phản hồi các câu hỏi thông tin và thực thi lệnh điều khiển.
    • Điều khiển bật/tắt thiết bị đèn chiếu sáng thành công bằng lệnh giọng nói thông qua việc kích hoạt ổ cắm thông minh QCT Smart liên kết Google Home.
    • Chuyển đổi linh hoạt giữa các trang giao diện (slides) bằng cử chỉ tay từ xa nhờ thuật toán nhận diện bàn tay MediaPipe trên Python.

Đóng góp của đề tài

  • Ứng dụng thành công máy tính nhúng giá thành thấp (Raspberry Pi 3) kết hợp nền tảng mã nguồn mở Magic Mirror để tạo ra một sản phẩm gia dụng thông minh có tính ứng dụng cao.
  • Kết hợp đồng thời hai giải pháp điều khiển không tiếp xúc (giọng nói AI và thị giác máy tính nhận diện cử chỉ ngón tay), giải quyết bài toán tương tác tiện lợi mà không làm bẩn hoặc lưu dấu vân tay trên bề mặt gương soi.
  • Cung cấp tài liệu hướng dẫn kỹ thuật chi tiết về cấu hình xác thực API dịch vụ đám mây của Google (OAuth 2.0) trên môi trường hệ điều hành Linux nhúng.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế của đề tài

  • Trợ lý ảo Google Assistant mới dừng lại ở việc tiếp nhận và phản hồi các câu lệnh điều khiển cơ bản cũng như trả lời các câu hỏi đơn giản.
  • Thuật toán nhận diện cử chỉ tay qua MediaPipe hiện mới chỉ khai thác theo dõi vị trí của một ngón tay để thực hiện tác vụ chuyển trang đơn giản, chưa mở rộng nhận diện các tổ hợp cử chỉ phức tạp hơn.
  • Ổ cắm thông minh điều khiển đèn vẫn phụ thuộc vào nền tảng ứng dụng trung gian của bên thứ ba (QCT Smart) và chỉ hỗ trợ băng tần mạng Wi-Fi 2.4GHz.

Hướng nghiên cứu tiếp

  • Nâng cấp phần cứng xử lý lên các phiên bản Raspberry Pi cao hơn (như Raspberry Pi 4 Model B) để tăng tốc độ xử lý khung hình camera và giảm độ trễ khi nhận diện cử chỉ.
  • Mở rộng tập lệnh cử chỉ bàn tay (nhận dạng cử chỉ nhiều ngón, cử chỉ vuốt, phóng to/thu nhỏ, điều chỉnh âm lượng hoặc chọn module trực tiếp).
  • Tích hợp thêm các cảm biến môi trường (nhiệt độ, độ ẩm, chất lượng không khí, cảm biến chuyển động PIR để tự động tắt/bật màn hình tiết kiệm điện khi có người đến gần).
  • Phát triển các module giao tiếp phần cứng trực tiếp qua cổng GPIO thay vì phụ thuộc hoàn toàn vào dịch vụ đám mây của thiết bị bên thứ ba.

Giá trị tham khảo

Tài liệu khóa luận tốt nghiệp này mang lại giá trị tham khảo hữu ích cho:

  • Sinh viên ngành Kỹ thuật Điện tử, Điện tử - Viễn thông, Công nghệ Thông tin, Kỹ thuật Máy tính: Nắm vững quy trình thiết kế một hệ thống IoT nhúng hoàn chỉnh từ khâu lựa chọn phần cứng, cài đặt hệ điều hành Linux trên vi xử lý ARM, đến cấu hình module và lập trình ứng dụng.
  • Người nghiên cứu và phát triển nhà thông minh (Smart Home / DIY): Tham khảo quy trình tích hợp các API dịch vụ trực tuyến (Google Assistant API, Google Photos, Google Calendar, OpenWeatherMap) và kỹ thuật kết nối thiết bị công tắc/ổ cắm thông minh.
  • Phần đáng tham khảo nhất: Quy trình cấu hình xác thực OAuth 2.0 cho Google Assistant trên nền tảng Linux nhúng và phương pháp tích hợp thư viện MediaPipe vào Python để điều khiển chuột ảo (pyautogui) phục vụ chuyển trang giao diện.

Câu hỏi thường gặp

1. Hệ thống Gương thông minh trong đề tài sử dụng loại phần cứng máy tính nhúng nào và chạy hệ điều hành gì?

Hệ thống sử dụng máy tính nhúng Raspberry Pi 3, kết hợp với thẻ nhớ dung lượng 32GB để cài đặt và vận hành hệ điều hành Raspbian (Raspberry Pi OS) thông qua phần mềm ghi đĩa Raspberry Pi Imager.

2. Giao diện và các thông tin trên gương được xây dựng bằng nền tảng phần mềm nào?

Giao diện gương được xây dựng dựa trên nền tảng mã nguồn mở Magic Mirror chạy trên môi trường Node.js. Các module hiển thị (đồng hồ, thời tiết, lịch, ảnh) được viết bằng JavaScript và cấu hình tập trung trong tệp config.js.

3. Phương thức nhận diện cử chỉ tay để chuyển đổi màn hình được thực hiện như thế nào?

Phương thức này sử dụng một camera kết nối với Raspberry Pi để liên tục bắt khung hình chuyển động của tay. Chương trình viết bằng ngôn ngữ Python sử dụng thư viện mediapipe để xác định tọa độ 21 khớp ngón tay kết hợp thư viện cv2 (OpenCV). Khi xác định được vị trí ngón tay chuyển động, thư viện pyautogui sẽ gửi lệnh điều khiển chuột ảo để nhấp chuyển đổi giữa các slide giao diện.

4. Hệ thống điều khiển bật/tắt đèn chiếu sáng trong nhà bằng cơ chế nào?

Hệ thống sử dụng một thiết bị phần cứng bên thứ ba là Ổ cắm thông minh QCT Smart (kết nối Wi-Fi 2.4GHz, giá thành từ 300.000 VNĐ). Ổ cắm được liên kết với ứng dụng QCT Smart và dịch vụ Google Home / Google Assistant. Khi người dùng ra lệnh giọng nói "bật ổ cắm" qua micro của gương, Google Assistant sẽ gửi tín hiệu kích hoạt rơle trên ổ cắm để cấp nguồn cho đèn.

5. Dữ liệu thời tiết và lời nhắc lịch trình được lấy từ nguồn nào để hiển thị lên gương?

Dữ liệu thời tiết được trích xuất thời gian thực từ nền tảng OpenWeatherMap thông qua khóa apiKey và mã định danh vị trí locationID. Dữ liệu lời nhắc được đồng bộ tự động từ Google Calendar của người dùng thông qua địa chỉ liên kết định dạng iCal.


Kết luận

Khóa luận tốt nghiệp "Thiết kế Gương thông minh (Magic Mirror) dùng Raspberry Pi" của sinh viên ngành Điện tử - Viễn thông, Trường Đại học Công nghiệp TP.HCM đã hoàn thành trọn vẹn mục tiêu nghiên cứu và chế tạo thành công sản phẩm thực nghiệm. Bằng sự kết hợp giữa máy tính nhúng Raspberry Pi 3, nền tảng Magic Mirror, dịch vụ trợ lý ảo Google Assistant và thư viện thị giác máy tính MediaPipe, hệ thống đã đáp ứng đầy đủ các chức năng hiển thị thông tin tiện ích, điều khiển thiết bị điện và tương tác không chạm thông minh qua giọng nói cùng cử chỉ tay. Đề tài là tài liệu tham khảo có tính ứng dụng thực tế cao cho các nghiên cứu và dự án phát triển thiết bị nhà thông minh trên nền tảng mã nguồn mở.