1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đồ án tốt nghiệp: “Nghiên cứu thiết kế ứng dụng điều khiển nhà Thông minh trên nền tảng Raspberry Pi và công nghệ AI xử lý tiếng nói”

77 155 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu thiết kế ứng dụng điều khiển nhà Thông minh trên nền tảng Raspberry Pi và công nghệ AI xử lý tiếng nói
Tác giả Nguyễn Tiến Hải
Người hướng dẫn TS. Nguyễn Việt Hưng
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Viễn thông
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 77
Dung lượng 8,82 MB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN VỀ IOT, NHÀ THÔNG MINH VÀ NỀN TẢNG (12)
    • 1.1. IoT là gì? (12)
      • 1.1.1. Giới thiệu thổng quát về IoT (12)
      • 1.1.2. Phân loại IoT (13)
      • 1.1.3. Hoạt động trong một mạng IoT (13)
      • 1.1.4. Giao thức truyền tải dữ liệu (16)
    • 1.2. Nhà thông minh – Smart Home (16)
      • 1.2.1. Khái niệm nhà thông minh (16)
      • 1.2.2. Cấu trúc của hệ thống nhà thông minh (17)
      • 1.2.3. Ưu và nhược điểm của nhà thông minh (18)
      • 1.2.4. Hoạt động của nhà thông minh (19)
    • 1.3. Raspberry Pi (20)
      • 1.3.1. Sơ lược về Raspberry Pi (20)
      • 1.3.2. Các thiết bị Raspberry Pi (21)
      • 1.3.3. Hoạt động và Ứng dụng của Raspberry Pi (24)
      • 1.3.4. GPIO trong Raspberry Pi (24)
    • 1.4. KẾT LUẬN CHƯƠNG (26)
  • CHƯƠNG 2: CÔNG NGHỆ AI TRONG XỬ LÝ TIẾNG NÓI (27)
    • 2.1. Công nghệ AI (27)
      • 2.1.1. Tổng quan về trí tuệ nhân tạo AI (27)
      • 2.1.2. Các loại công nghệ AI (27)
      • 2.1.3. Ứng dụng của AI (29)
    • 2.2. Mạng nơ-ron (Neural Networks) (29)
      • 2.2.1. Khái niệm (29)
      • 2.2.2. Công thức cơ bản của mạng nơ-ron (30)
    • 2.4. Quy trình xử lý dữ liệu âm thanh (34)
      • 2.4.1. Tiền xử lý dữ liệu (35)
      • 2.4.2. Kiến trúc hệ thống (36)
    • 2.5. Ứng dụng công nghệ AI vào nhận diện giọng nói (39)
      • 2.5.1. Mô hình nhận dạng các mẫu giọng nói (39)
      • 2.5.2. Cách hệ thống hoạt động (40)
      • 2.5.3. Thuật toán xử lý giọng nói (40)
    • 2.6. KẾT LUẬN CHƯƠNG (40)
  • CHƯƠNG 3: XÂY DỰNG HỆ THỐNG THỬ NGHIỆM (41)
    • 3.1. Kiến trúc của hệ thống thử nghiệm (41)
    • 3.2. Các công nghệ sử dụng trong hệ thống (41)
      • 3.2.1. Framework React Native (41)
      • 3.2.2. NodeJS (47)
      • 3.2.3. Hệ thống quản lý cơ sở dữ liệu InfluxDB (49)
      • 3.2.4. Kết nối MQTT (50)
    • 3.3. Xây dựng hệ thống thực nghiệm (52)
      • 3.3.1. Thiết lập Raspberry Pi (52)
      • 3.3.2. Thiết lập kết nối MQTT tại Server (62)
      • 3.3.3. Cơ sở dữ liệu lưu trữ các thông số (64)
      • 3.3.4. Thiết kế ứng dụng Rsmart (65)
    • 3.4. KẾT LUẬN CHƯƠNG (74)
  • KẾT LUẬN (11)

Nội dung

TỔNG QUAN VỀ IOT, NHÀ THÔNG MINH VÀ NỀN TẢNG

IoT là gì?

1.1.1 Giới thiệu thổng quát về IoT:

Internet of Things (IoT) là khái niệm chỉ hàng tỷ thiết bị vật lý toàn cầu được kết nối internet, cho phép thu thập và chia sẻ dữ liệu Nhờ vào bộ xử lý nội bộ và mạng không dây, IoT giúp nâng cao tính chủ động và thông minh cho mọi thiết bị.

IoT hiện diện trong nhiều lĩnh vực, từ hệ thống cửa tự động đến máy bay và xe tự lái, trở thành một phần quan trọng của cuộc sống hiện đại Công nghệ này mang lại khả năng thông minh cho các thiết bị thụ động, cho phép chúng truyền tải dữ liệu thời gian thực mà không cần sự can thiệp của con người, giúp kết nối hiệu quả giữa thế giới kỹ thuật số và vật lý.

Kể từ khi khái niệm Internet of Things (IoT) ra đời vào năm 1999, IoT đã chuyển từ một giấc mơ mơ hồ thành hiện thực rõ ràng nhờ vào sự phổ biến của giao thức Internet (IP), sự phát triển của máy tính và phân tích dữ liệu Đến năm 2020, số lượng thiết bị kết nối qua IoT ước tính đạt 20,4 tỷ Mặc dù phát triển mạnh mẽ, khái niệm IoT vẫn thường mơ hồ và được coi là một thuật ngữ trừu tượng Định nghĩa về hệ thống IoT đã thay đổi nhiều lần, do sự kết hợp của nhiều công nghệ khác nhau như thống kê thời gian thực, học máy, cảm biến và hệ thống nhúng Các lĩnh vực như hệ thống nhúng, mạng cảm biến không dây và hệ thống điều khiển tự động (bao gồm tự động hóa nhà và tòa nhà) đã cùng nhau tạo điều kiện cho sự hoạt động của IoT.

IoT, hay Internet of Things, được định nghĩa là sự mở rộng của Internet và các mạng lưới khác đến các cảm biến và thiết bị, cho phép những vật dụng đơn giản như bóng đèn, khóa và cửa thông khí có khả năng tính toán và phân tích cao hơn.

Theo Hội đồng kiến trúc mạng, IoT đại diện cho xu hướng ngày càng tăng của việc sử dụng một lượng lớn thiết bị nhúng, thường được gọi là "vật thông minh", để áp dụng các dịch vụ giao tiếp thông qua các giao thức mạng Những thiết bị này không được điều khiển trực tiếp bởi con người, mà hoạt động tự động, đóng vai trò quan trọng trong việc kết nối và tương tác trong hệ sinh thái mạng lưới thiết bị thông minh.

Nguyễn Tiến Hải – D17CQVT08B 3 thành phần trong các tòa nhà hoặc phương tiện giao thông, hoặc được trải ra trong môi trường.”

Khả năng tương tác cao là yếu tố quan trọng thúc đẩy sự phát triển và phổ biến của Internet vạn vật (IoT) Các thiết bị kết nối không ngừng gia tăng, tạo ra một mạng lưới thông minh giúp tối ưu hóa trải nghiệm người dùng và nâng cao hiệu suất hoạt động Sự tương tác này không chỉ cải thiện tính năng của các thiết bị mà còn mở ra nhiều cơ hội mới trong các lĩnh vực khác nhau.

Các "vật thông minh" trong IoT có khả năng thu thập và chia sẻ dữ liệu từ môi trường xung quanh với các thiết bị và mạng khác Nhờ vào việc phân tích và xử lý dữ liệu, các thiết bị này có thể tự động thực hiện chức năng mà không cần hoặc chỉ cần rất ít sự can thiệp từ con người.

Trong Internet of Things, tất cả những thứ đang được kết nối với internet có thể được chia thành ba loại:

1 Loại thu thập thông tin và sau đó gửi nó:

Các thiết bị cảm biến như cảm biến nhiệt độ, chuyển động, độ ẩm và ánh sáng giúp tự động thu thập thông tin từ môi trường Nhờ vào khả năng kết nối, những cảm biến này cho phép chúng ta đưa ra quyết định thông minh hơn.

2 Loại nhận được thông tin và sau đó hành động:

Ví dụ: máy in nhận được một tài liệu và in nó Xe nhận được tín hiệu từ chìa khóa xe và cửa mở

Trong ngành nông nghiệp hiện đại, cảm biến độ ẩm đất đóng vai trò quan trọng, giúp nông dân xác định lượng nước cần tưới cho cây trồng Hệ thống tưới tự động có thể hoạt động dựa trên dữ liệu thu thập từ cảm biến, giảm thiểu sự can thiệp của con người và tối ưu hóa quy trình tưới tiêu.

Các nhà nông nghiệp đã phát minh ra một bước tiến mới trong hệ thống thủy lợi, cho phép nó nhận thông tin thời tiết qua kết nối internet Nhờ đó, hệ thống có thể dự đoán thời điểm mưa và quyết định không tưới nước cho cây trồng, tận dụng hiệu quả nguồn nước mưa.

1.1.3 Hoạt động trong một mạng IoT

Các thiết bị trong hệ thống IoT có thể đa dạng, từ máy theo dõi vận động đơn giản đến phương tiện giao thông thông minh Dù mang lại những tính năng khác nhau cho người dùng, tất cả các thiết bị này đều cần có những thành phần thiết yếu để hoạt động hiệu quả trong hệ thống IoT.

Cảm biến là thiết bị đầu tiên thu thập dữ liệu từ môi trường cho hệ thống IoT, giúp phát hiện và đo đạc các thay đổi hoặc hiện tượng xảy ra.

Nguyễn Tiến Hải – D17CQVT08B 4 nghiên cứu về môi trường, nơi mà các thiết bị đo lường thu thập dữ liệu dựa trên chức năng của chúng Những loại dữ liệu này có thể bao gồm nhịp tim, nhiệt độ môi trường, độ ẩm, âm thanh, hoặc khoảng cách đến vật thể gần nhất.

Hình 1 1 Các cảm biến thông thường

Để đảm bảo việc giao tiếp dữ liệu giữa các thiết bị trong mạng diễn ra hiệu quả, mỗi thiết bị cần có một phương thức định danh riêng, như địa chỉ IP, nhằm phân biệt nó với các thiết bị khác.

Các thiết bị IoT thường hoạt động độc lập mà không cần sự can thiệp của người dùng, nhờ vào khả năng tự động thực hiện các thay đổi dựa trên dữ liệu từ cảm biến và phản hồi từ mạng Chẳng hạn, bóng đèn thông minh có thể được điều khiển từ xa, trong khi van thông minh tự động mở hoặc đóng dựa trên thông tin về mực nước và áp suất mà nó thu thập được.

Nhà thông minh – Smart Home

1.2.1 Khái niệm nhà thông minh

Nhà thông minh là một hệ thống tiện nghi cho phép điều khiển tự động các thiết bị và thiết bị từ xa thông qua kết nối internet, mang lại sự thuận tiện và linh hoạt cho người sử dụng.

Nguyễn Tiến Hải – D17CQVT08B 7 cho biết rằng, trong ngôi nhà thông minh, các thiết bị di động và thiết bị kết nối mạng khác được liên kết qua internet Điều này cho phép người dùng dễ dàng kiểm soát các chức năng như an ninh, nhiệt độ, ánh sáng và hệ thống rạp hát tại nhà từ xa.

1.2.2 Cấu trúc của hệ thống nhà thông minh:

Có nhiều phương pháp thiết kế hệ thống nhà thông minh, nhưng những thành phần cơ bản không thể thiếu bao gồm: hệ thống điều khiển trung tâm, cảm biến thông minh, thiết bị tự động hóa và giao diện người dùng thân thiện.

Hệ thống điều khiển trung tâm đóng vai trò quan trọng trong việc nhận lệnh từ các thiết bị điều khiển và giao diện người dùng, đồng thời ra lệnh cho các thiết bị khác Nó cũng thu thập dữ liệu từ các cảm biến và, tùy thuộc vào mức độ "thông minh" của hệ thống, có khả năng phân tích dữ liệu hiện có để đưa ra lệnh phù hợp với nhu cầu của người dùng.

- Data Server: Nơi lưu trữ dữ liệu hoạt động của toàn bộ hệ thống

- Home Appliances: Các thiết bị điện tử có tích hợp hệ thống điều khiển thông minh

Hệ thống cảm biến và máy đo cung cấp dữ liệu và thông số trong nhà, giúp người dùng dễ dàng lựa chọn lệnh phù hợp dựa trên các thông tin hiện có.

Giao diện người dùng ứng dụng (Application GUI) là phần mềm được cài đặt trên các thiết bị như máy tính, máy tính bảng và điện thoại thông minh, giúp người dùng dễ dàng quản lý và thao tác với hệ thống nhà thông minh.

Hình 1 4 Cấu trúc cơ bản của một hệ thống nhà thông minh

1.2.3 Ưu và nhược điểm của nhà thông minh

Tự động hóa nhà mang lại lợi ích lớn nhất là sự an tâm cho chủ nhà, cho phép họ giám sát ngôi nhà từ xa và bảo vệ khỏi những rủi ro như máy pha cà phê bị bỏ quên hay cửa trước không được khóa.

Domotics mang lại nhiều lợi ích cho người cao tuổi, giúp họ duy trì sự thoải mái và an toàn tại nhà Hệ thống giám sát thông minh có thể hỗ trợ người cao tuổi, giảm thiểu nhu cầu chuyển đến viện dưỡng lão hoặc cần chăm sóc tại nhà 24/7.

Nhà thông minh mang lại sự tiện lợi cho người dùng bằng cách tùy chỉnh theo sở thích cá nhân Chẳng hạn, người dùng có thể lập trình để cửa nhà để xe tự động mở, đèn sáng lên, lò sưởi khởi động và âm nhạc yêu thích phát lên ngay khi họ trở về nhà.

Tự động hóa nhà giúp nâng cao hiệu quả sử dụng năng lượng cho người tiêu dùng Hệ thống nhà thông minh có khả năng học hỏi thói quen của chủ nhà, tự động điều chỉnh nhiệt độ để tiết kiệm điện khi không có ai ở nhà Điều này không chỉ mang lại sự tiện lợi mà còn giảm thiểu chi phí cho các thiết bị điện tử trong gia đình.

Nguyễn Tiến Hải – D17CQVT08B 9 giới thiệu hệ thống tưới thông minh, cho phép bãi cỏ chỉ được tưới khi cần thiết và với lượng nước chính xác Việc tự động hóa trong nhà giúp sử dụng hiệu quả năng lượng, nước và các nguồn tài nguyên khác, từ đó tiết kiệm tài nguyên thiên nhiên và chi phí cho người tiêu dùng.

Mặc dù hệ thống tự động hóa gia đình đang phát triển, nhưng chúng vẫn chưa trở thành xu hướng chủ đạo do tính phức tạp của công nghệ Nhiều người dùng gặp khó khăn trong việc sử dụng hoặc dễ dàng từ bỏ khi gặp bất tiện Các nhà sản xuất đang nỗ lực giảm thiểu sự phức tạp và cải thiện trải nghiệm người dùng để thu hút mọi đối tượng Để hệ thống tự động hóa hoạt động hiệu quả, các thiết bị cần tương tác với nhau, bất kể nhà sản xuất, và sử dụng các giao thức tương thích Thị trường này vẫn còn mới mẻ, chưa có tiêu chuẩn vàng cho tự động hóa gia đình, nhưng các liên minh tiêu chuẩn đang hợp tác với các nhà sản xuất để đảm bảo tính tương tác và trải nghiệm người dùng mượt mà.

An ninh nhà thông minh đang trở thành mối quan tâm lớn, với 80% người tiêu dùng Hoa Kỳ lo ngại về tính bảo mật dữ liệu của thiết bị thông minh Nếu tin tặc xâm nhập vào hệ thống, họ có thể kiểm soát các thiết bị như đèn, báo động và khóa cửa, khiến ngôi nhà dễ bị đột nhập Hơn nữa, việc truy cập vào mạng của chủ nhà có thể dẫn đến các cuộc tấn công nghiêm trọng hơn Một ví dụ điển hình là mạng botnet Mirai IoT đã gây ra các cuộc tấn công DDoS lớn vào tháng 10 năm 2016, lợi dụng các thiết bị như camera và bộ định tuyến có bảo mật kém.

Ngoài an ninh gia đình, quyền riêng tư dữ liệu cũng là mối quan tâm lớn của người tiêu dùng đối với thiết bị nhà thông minh Theo báo cáo của NTT Data, 73% người tiêu dùng lo ngại về tính riêng tư của dữ liệu từ các thiết bị này Mặc dù các nhà sản xuất có thể thu thập dữ liệu để cải thiện sản phẩm và dịch vụ, nhưng sự tin tưởng và minh bạch là yếu tố quyết định để thu hút khách hàng mới.

1.2.4 Hoạt động của nhà thông minh

Những ngôi nhà mới thường tích hợp hạ tầng nhà thông minh ngay từ đầu, trong khi các ngôi nhà cũ có thể được nâng cấp bằng cách lắp đặt thêm các công nghệ hiện đại.

Nguyễn Tiến Hải – D17CQVT08B 10 thông minh Trong khi nhiều hệ thống nhà thông minh vẫn chạy trên X10 hoặc Insteon, Bluetooth và Wi-Fi đã trở nên phổ biến

Raspberry Pi

1.3.1 Sơ lược về Raspberry Pi

Raspberry Pi là một loạt các máy tính sử dụng một bảng mạch nhỏ (small single-

Raspberry Pi, một loại máy tính bảng (SBC) được phát triển bởi Quỹ Raspberry Pi kết hợp với Broadcom tại Vương quốc Anh, ban đầu được thiết kế để thúc đẩy giảng dạy khoa học máy tính cơ bản trong trường học và các nước đang phát triển Tuy nhiên, mô hình này đã nhanh chóng trở nên phổ biến hơn dự đoán và được sử dụng rộng rãi trong nhiều lĩnh vực, bao gồm cả chế tạo robot và theo dõi thời tiết, nhờ vào chi phí thấp, tính mô đun và thiết kế mở Raspberry Pi thường được ưa chuộng bởi những người yêu thích máy tính và điện tử, nhờ vào khả năng kết nối với các thiết bị HDMI và USB.

1.3.2 Các thiết bị Raspberry Pi

Có ba loại Raspberry Pi, bao gồm Raspberry Pi cơ bản, Raspberry Pi Zero và Raspberry Pi Pico, với nhiều thế hệ đã được phát hành Raspberry Pi SBC được trang bị hệ thống Broadcom trên chip (SoC), bao gồm bộ xử lý trung tâm ARM và bộ xử lý đồ họa tích hợp Trong khi đó, Raspberry Pi Pico sử dụng hệ thống RP2040 trên chip với đơn vị xử lý trung tâm ARM tích hợp.

Raspberry Pi là phiên bản hoàn chỉnh nhất trong dòng sản phẩm máy tính mini này, với tổng cộng 4 thế hệ đã được phát hành Phiên bản mới nhất hiện nay là Raspberry Pi 4 model.

B, ra đời vào tháng 6 năm 2019 Với bộ xử lý ARM Cortex-A72 lõi tứ 64 bit 1,5 GHz, Wi-Fi 802.11ac trên bo mạch, Bluetooth 5, đầy đủ gigabit Ethernet (thông lượng không giới hạn), hai cổng USB 2.0, hai cổng USB 3.0, 2-8 GB RAM và hỗ trợ màn hình kép thông qua một cặp cổng micro HDMI (HDMI Loại D) cho độ phân giải lên đến 4K

Vào tháng 11 năm 2020, Raspberry Pi 400 đã được ra mắt như một phiên bản mới của Raspberry Pi 4 Thiết bị này đi kèm với một bộ bàn phím và chuột rời, cùng với nâng cấp tản nhiệt và bộ nguồn, giúp tối ưu hóa hiệu suất của vi xử lý.

Pi 400 hoạt động ở mức 1.8 GHz, cao hơn so với bộ Raspberry Pi 4 thông thường

Hình 1 7 Bộ sản phẩm Raspberry Pi 400

Raspberry Pi Zero là một sản phẩm nhỏ gọn, được phát hành vào tháng 11 năm 2015, với khả năng nhập/xuất (I/O) và GPIO giảm thiểu.

Vào năm 2015, Raspberry Pi Zero với kích thước nhỏ gọn và giá thành hợp lý đã trở thành lựa chọn lý tưởng cho học sinh, sinh viên trong việc thực hiện các thí nghiệm với Raspberry Pi.

Raspberry Pi Pico, được phát hành vào tháng 1 năm 2021, là bo mạch đầu tiên của Raspberry Pi sử dụng chip vi điều khiển RP2040 do chính Raspberry Pi thiết kế tại Vương quốc Anh Với 264 KB RAM và 2 MB bộ nhớ flash, Pico có khả năng lập trình bằng MicroPython, CircuitPython và C Sản phẩm này đã hợp tác với nhiều nhà sản xuất như Vilros, Adafruit, Pimoroni, Arduino và SparkFun để phát triển phụ kiện cho Raspberry Pi Pico và các bảng khác sử dụng nền tảng silicon RP2040 Khác với các máy tính đa năng, Pico được thiết kế chủ yếu cho các ứng dụng tính toán vật lý, tương tự như Arduino.

1.3.3 Hoạt động và Ứng dụng của Raspberry Pi

Hệ điều hành cho tất cả các sản phẩm Raspberry Pi là Linux, một hệ điều hành mã nguồn mở giúp kết nối phần cứng và phần mềm Raspberry Pi sử dụng ngôn ngữ lập trình Python, nổi bật với tính đa năng và khả năng phát triển ứng dụng, trang web, cũng như giao diện người dùng đồ họa (GUI) Một trong những ưu điểm của Raspberry Pi là người dùng không cần có kiến thức sâu về Linux hay Python để bắt đầu dự án Mục tiêu của sản phẩm là giáo dục người dùng về hệ thống và ngôn ngữ lập trình thông qua các dự án thú vị.

Raspberry Pi là giải pháp lý tưởng cho các dự án tự động hóa nhỏ và vừa, nhờ vào sự kết hợp đơn giản giữa phần mềm và phần cứng, cùng với khả năng cung cấp các giải pháp dễ dàng để thiết lập kết nối.

Các ứng dụng đơn giản có thể kể đến như:

- Làm các loại máy chủ cầu nối, như máy chủ trang web, máy chủ cho máy in phục vụ việc in ấn, máy chủ chơi game, …

- Hệ thống tự động hóa đơn giản kết hợp với các mạch Arduino

- Thay thế như một máy tính thông thường

Raspberry Pi trang bị một hệ thống chân cắm GPIO dọc theo cạnh trên của bảng mạch, với GPIO là viết tắt của General-Purpose Input / Output Các chân này đóng vai trò là giao diện vật lý giữa Raspberry Pi và môi trường bên ngoài Ở mức độ cơ bản, chúng có thể được coi như các công tắc cho phép người dùng bật hoặc tắt (đầu vào) hoặc cho phép Raspberry Pi thực hiện các thao tác bật hoặc tắt (đầu ra).

Các chân GPIO trên Raspberry Pi cho phép điều khiển và giám sát thiết bị vật lý thông qua kết nối với các mạch điện tử Raspberry Pi có khả năng điều khiển đèn LED, bật tắt chúng, điều khiển động cơ và thực hiện nhiều tác vụ khác Ngoài ra, nó còn có thể phát hiện trạng thái công tắc, cũng như đo nhiệt độ và ánh sáng.

Có 40 chân trên Raspberry Pi (26 chân trên các mẫu đầu tiên) và chúng cung cấp nhiều chức năng khác nhau

Nhãn ghim RasPiO giúp xác định chức năng của từng ghim, đảm bảo việc kết nối dễ dàng và chính xác Hãy chắc chắn rằng nhãn ghim được gắn với lỗ khóa hướng ra ngoài các cổng USB để thuận tiện trong sử dụng.

Hình 1 10 Danh sách các chân GPIO của Raspberry Pi

Ta có thể thấy các chân cắm được đặt là 3V3, 5V, GND và GP2, GP3, …

Bảng 1 1 Bảng chức năng các chân cắm GPIO

Tên chân cắm Ý nghĩa Chức năng

3V3 3.3 volts Bất kỳ thứ gì được kết nối với các chân này sẽ luôn nhận được nguồn điện 3,3V

5V 5 volts Bất kỳ thứ gì được kết nối với các chân này sẽ luôn nhận được nguồn điện 5V

GND Ground 0 volt, được sử dụng để hoàn thành một mạch

GP2 GPIO pin 2 Các chân này được sử dụng cho mục đích chung và có thể được cấu hình làm chân đầu vào hoặc đầu ra

ID_SC/ID_SD/DNC Các chân có mục đích đặc biệt

KẾT LUẬN CHƯƠNG

Chương 1 đã trình bày tổng quan về khái niệm IoT, nhà thông minh cũng như Raspberry Pi Dựa trên mục tiêu của đề tài, em chọn Raspberry Pi 4 model B để làm thực nghiệm cho đề tài Do Raspberry Pi 4 model B hiện tại là thế hệ mới nhất của Raspberry Pi, cùng với đó là tính ổn định cao, dễ sử dụng nên sẽ là lựa chọn tốt nhất để hoàn thành thực nghiệm cho đề tài Chương tiếp theo sẽ trình bày về công nghệ AI cũng như cách áp dụng nó trong vấn đề xử lý tiếng nói

CÔNG NGHỆ AI TRONG XỬ LÝ TIẾNG NÓI

Công nghệ AI

2.1.1 Tổng quan về trí tuệ nhân tạo AI

Trí tuệ nhân tạo (AI) là một lĩnh vực quan trọng trong khoa học máy tính, tập trung vào việc phát triển các hệ thống thông minh có khả năng thực hiện những nhiệm vụ thường cần đến trí thông minh của con người.

Trí tuệ nhân tạo (AI) khác biệt với lập trình logic truyền thống nhờ vào việc áp dụng các hệ thống học máy (machine learning), cho phép mô phỏng khả năng trí tuệ của con người trong những tác vụ mà con người thực hiện hiệu quả hơn so với máy tính.

Trí tuệ nhân tạo (AI) cho phép máy tính phát triển khả năng tương tự như con người, bao gồm khả năng suy nghĩ và lập luận để giải quyết vấn đề, giao tiếp hiệu quả nhờ hiểu ngôn ngữ và tiếng nói, cũng như khả năng học hỏi và tự thích nghi với môi trường xung quanh.

Trí thông minh nhân tạo (AI) là một lĩnh vực quan trọng trong tin học, không chỉ được nhắc đến trong các tác phẩm khoa học viễn tưởng mà còn liên quan đến khả năng học hỏi, thích ứng và hành vi thông minh của máy móc.

2.1.2 Các loại công nghệ AI:

Công nghệ AI được chia làm 4 loại chính:

2.1.2.1 Công nghệ AI phản ứng:

Cỗ máy phản ứng hoạt động dựa trên những nguyên tắc cơ bản của trí tuệ nhân tạo, cho phép nó nhận thức và phản ứng với môi trường xung quanh Tuy nhiên, máy phản ứng không có khả năng lưu trữ bộ nhớ, nên không thể sử dụng kinh nghiệm quá khứ để đưa ra quyết định trong thời gian thực.

Nhận thức thế giới một cách trực tiếp cho thấy rằng các máy phản ứng được thiết kế để thực hiện những nhiệm vụ chuyên biệt hạn chế Việc hạn chế thế giới quan của máy phản ứng không phải là biện pháp cắt giảm chi phí, mà nhằm đảm bảo rằng loại AI này sẽ đáng tin cậy hơn, phản ứng nhất quán với các kích thích tương tự ở mọi thời điểm.

Deep Blue, một sản phẩm nổi bật của công nghệ AI, là chương trình chơi cờ vua tự động do IBM phát triển Nó có khả năng phân tích các nước cờ hiện tại và dự đoán các bước đi tiếp theo của đối thủ, từ đó đưa ra những nước đi tối ưu nhất.

2.1.2.2 Công nghệ AI với bộ nhớ hạn chế:

Trí tuệ nhân tạo có bộ nhớ hạn chế có khả năng lưu trữ và phân tích dữ liệu để dự đoán các quyết định tiềm năng, bằng cách xem xét thông tin trong quá khứ So với các máy phản ứng đơn giản, trí tuệ nhân tạo có bộ nhớ hạn chế phức tạp hơn và thể hiện nhiều khả năng hơn trong việc đưa ra quyết định.

AI với bộ nhớ hạn chế được phát triển thông qua việc liên tục đào tạo mô hình để phân tích và sử dụng dữ liệu mới Để áp dụng trí nhớ giới hạn trong học máy, cần tuân theo sáu bước: tạo dữ liệu đào tạo, xây dựng mô hình học máy, đảm bảo mô hình có khả năng dự đoán, nhận phản hồi từ con người hoặc môi trường, lưu trữ phản hồi dưới dạng dữ liệu và lặp lại các bước này như một chu kỳ Công nghệ này cho phép AI sử dụng kinh nghiệm quá khứ để đưa ra quyết định trong tương lai, thường kết hợp với cảm biến môi trường để dự đoán tình huống và tối ưu hóa quyết định cho thiết bị.

Xe không người lái được trang bị nhiều cảm biến xung quanh và ở đầu xe để đo khoảng cách với các phương tiện phía trước Công nghệ AI sẽ dự đoán khả năng va chạm và tự động điều chỉnh tốc độ xe nhằm đảm bảo an toàn.

2.1.2.3 Công nghệ AI theo lý thuyết

Chúng ta vẫn chưa đạt được khả năng công nghệ và khoa học cần thiết để đạt đến cấp độ trí tuệ nhân tạo tiếp theo này

Khái niệm này dựa trên tiền đề tâm lý rằng các sinh vật sống có suy nghĩ và cảm xúc ảnh hưởng đến hành vi của chúng Đối với công nghệ AI, điều này có nghĩa là AI có khả năng hiểu cảm xúc của con người, động vật và máy móc khác, từ đó đưa ra quyết định thông qua sự tự phản ánh Máy móc cần nắm bắt và xử lý khái niệm “tâm trí”, cảm xúc trong quá trình ra quyết định, cùng với nhiều khái niệm tâm lý khác trong thời gian thực, tạo ra mối quan hệ tương tác giữa con người và trí tuệ nhân tạo.

2.1.2.4 Trí tuệ nhân tạo tự nhận thức

Khi lý thuyết về trí tuệ nhân tạo được thiết lập, một ngày nào đó, AI có thể đạt đến mức độ tự nhận thức Loại trí tuệ nhân tạo này sẽ có ý thức tương đương với con người và nhận thức được sự tồn tại của chính mình.

Nguyễn Tiến Hải – D17CQVT08B 19 có khả năng hiểu và nhận biết cảm xúc của người khác, cũng như sự hiện diện của họ trong thế giới xung quanh Anh có thể nắm bắt những nhu cầu của người khác không chỉ qua lời nói mà còn qua cách thức mà họ truyền đạt thông tin.

Tự nhận thức trong trí tuệ nhân tạo phụ thuộc vào việc các nhà nghiên cứu hiểu rõ tiền đề của ý thức và học cách tái tạo nó để phát triển các hệ thống máy móc có khả năng tự nhận thức.

Trí tuệ nhân tạo (AI) là hệ thống máy tính có khả năng thực hiện các nhiệm vụ cần đến trí thông minh con người Nhiều hệ thống AI hiện nay được phát triển dựa trên công nghệ máy học (Machine Learning), trong khi một số khác sử dụng học sâu (Deep Learning) Bên cạnh đó, cũng có những hệ thống AI hoạt động dựa trên các quy tắc định sẵn.

Trí tuệ nhân tạo thường được ứng dụng theo hai loại lớn:

Mạng nơ-ron (Neural Networks)

Mạng nơron là một tập hợp các nút, được gọi chung là tài khoản đặc biệt, trong đó mỗi nút hoạt động như một đơn vị tài khoản tiêu chuẩn và hợp đồng Các nút này có thể tương tác và hoạt động song song, phụ thuộc vào mối quan hệ giữa chúng và các học giả đã được định nghĩa.

Các mô hình toán học mô phỏng các đặc điểm của hệ thống sinh học xử lý thông tin song song, sử dụng các phần tử tương đối đơn giản để thể hiện cách thức hoạt động của hệ thống này.

Các thuật toán được tổ chức dưới dạng biểu đồ là một lớp thực thể đơn giản, giúp nhóm nhiều lược đồ và cung cấp giải pháp cho các vấn đề phức tạp.

Nguyễn Tiến Hải – D17CQVT08B 20 nhấn mạnh rằng hoạt động chính của mạng nơ-ron là quá trình phân loại và mã hóa Đồng thời, các thuộc tính nổi bật của mạng nơ-ron cũng được làm rõ để hiểu rõ hơn về chức năng và ứng dụng của nó.

- Linh hoạt trong việc xử lý dữ liệu bị méo

- Khả năng chống thẻ tối đa đối với hình ảnh bị phân mảnh hoặc mất một phần

Sự kết hợp của các quá trình song song và số lượng lớn đơn vị vận hành tạo ra sự phụ thuộc lẫn nhau giữa các quá trình ngoài kho thông tin phân phối song song Các hoạt động phi tuyến tính, với khả năng tạo ra các mối quan hệ phi tuyến tính và bản đồ nhiễu, trở thành nguồn xếp hạng và phân bổ hiệu quả, giúp dự đoán phân loại chính xác hơn.

Năng lực vượt trội trong việc thích ứng với hệ thống logarit và quyền hạn của đào tạo nội bộ giúp điều chỉnh hiệu quả trong môi trường thay đổi lâu dài.

2.2.2 Công thức cơ bản của mạng nơ-ron: Để tính toán đầu ra của mạng nơ-ron, phải hoàn thành các bước liên tiếp sau:

- Bước 1: Khởi tạo tất cả các context của tất cả các nơ-ron trong lớp ẩn (hidden layer)

- Bước 2: Áp dụng bộ số đầu tiên cho mạng nơ-ron Tính toán đầu ra của lớp ẩn

𝑦 ! = 𝑓(∑ # "$# 𝜔 "! 𝑋 #" + 𝛽 " + 𝜔 ! 𝑋 ! ) F(x) – Hàm phi tuyến tính cho các số từ 0-9:

Hình 2 1 Cấu trúc của một mạng nơ ron với các phản hồi Trong đó, các biến được định nghĩa như sau:

Bảng 2 1 Bảng định nghĩa các biến

𝑥 (" q thứ I là giá trị đầu vào của tập số

𝑦 " Đầu ra của lớp j-neurons

𝜔 "! Liên kết giữa nơ-ron thứ i và nơ-ron thứ j

𝛽 ! Liên kết phản hồi của nơ-ron thứ j

Việc đào tạo mạng nơ-ron diễn ra thông qua việc sử dụng tập dữ liệu huấn luyện một cách nhất quán, kết hợp với các điều chỉnh theo quy trình cụ thể, cho đến khi các lỗi cấu hình đạt mức chấp nhận được Lỗi trong chức năng hệ thống được tính toán theo một công thức nhất định.

"$# trong đó N là số lượng mẫu huấn luyện được xử lý bởi mạng nơ-ron, ví dụ đầu ra thực của mạng nơ-ron

Tế bào thần kinh, một nguyên mẫu của sinh học tế bào thần kinh, bao gồm một thân tế bào (soma) và hai loại nhánh: sợi trục và sợi đuôi gai Cơ thể tế bào chứa nhân, nơi lưu trữ thông tin di truyền và các công cụ phân tử cần thiết để sản xuất và truyền các thành phần của nơ-ron Tế bào thần kinh nhận tín hiệu từ các tế bào khác qua các đuôi gai và truyền các tín hiệu dọc theo sợi trục đến các đầu mút của khớp thần kinh.

Mô hình toán học của một nơ-ron:

Trong mô hình nơron, tín hiệu đầu ra y được xác định bởi hàm f(s), trong đó s là tín hiệu đầu vào Khớp thần kinh w" và trọng số b (giá trị offset) đóng vai trò quan trọng trong quá trình này Số đầu vào n cho nơron cũng ảnh hưởng đến kết quả đầu ra Hàm f cần được kích hoạt để tạo ra tín hiệu y từ các đầu vào.

Hình 2 2 Mô hình kỹ thuật của một nơ-ron

Sơ đồ khối của một nơ-ron:

- 𝑥 # , 𝑥 * , … , 𝑥 , : Đầu vào của nơ-ron

- 𝑤 # , 𝑤 * , … , 𝑤 , : Trọng số của đầu vào tương ứng

Hàm kích hoạt F(S) đóng vai trò quan trọng trong việc điều khiển các hoạt động đơn giản như tổng trọng số và xử lý kết quả của chuyển đổi ngưỡng phi tuyến Phương pháp tiếp cận mạng nơ-ron nổi bật với cấu trúc các phần tử đồng nhất đơn giản, giúp giải quyết các thách thức liên quan đến mối quan hệ phức tạp giữa các mục Cấu trúc của các quan hệ này xác định các thuộc tính chức năng của mạng nơ-ron nói chung.

Các đặc điểm chức năng của nơ-ron và sự kết hợp của chúng trong cấu trúc mạng nơ-ron quyết định tính chất của mạng Để đối phó với những thách thức trong việc xác định và quản lý, đặc biệt là trong hành động của mạng nơ-ron đa lớp, cần có những phương pháp hiệu quả.

Nguyễn Tiến Hải – D17CQVT08B 23 nhận thức về phân lớp trong thiết kế nơ-ron Mỗi lớp nơ-ron sẽ tiếp nhận và xử lý tín hiệu vectơ từ lớp trước, tạo ra một hệ thống hoạt động hiệu quả và có cấu trúc rõ ràng.

Hình 2 3 Sơ đồ cấu trúc của mạng nơ-ron hai lớp

Việc triển khai mô hình của mạng nơron hai lớp hoạt động trực tiếp có biểu diễn toán học sau:

Trong đó các đầu vào vectơ là:

- 𝑛ℎ: Số lượng tế bào thần kinh trong lớp ẩn (hidden layer)

- 𝜃: vectơ của các tham số có thể định cấu hình của mạng nơ-ron, bao gồm trọng số và độ lệch nơ-ron (𝑤 !" , 𝑊 "! )

- 𝑓 ! (𝑥): Hàm kích hoạt cho các nơ-ron lớp ẩn

Hàm kích hoạt nơ-ron ở lớp đầu ra, ký hiệu là 𝐹 " (𝑥), đóng vai trò quan trọng trong mạng nơ-ron Một trong những đặc điểm nổi bật của phương pháp này là khả năng xử lý song song, cho phép tăng tốc đáng kể quá trình xử lý dữ liệu khi có nhiều kết nối thần kinh Điều này đặc biệt hữu ích trong việc xử lý tín hiệu giọng nói trong thời gian thực.

2.3 Nhận diện giọng nói và chuyển hóa thành văn bản

Lời nói của con người đóng vai trò quan trọng trong cuộc sống cá nhân và công việc hàng ngày, và chức năng Chuyển lời nói thành văn bản (Speech-to-text) có nhiều ứng dụng hữu ích Nó có thể được sử dụng để ghi lại nội dung cuộc gọi hỗ trợ khách hàng, phát triển chatbot định hướng bằng giọng nói, hoặc ghi lại nội dung các cuộc họp và thảo luận khác.

Dữ liệu âm thanh cơ bản bao gồm âm thanh và tiếng ồn, trong đó lời nói của con người là một trường hợp đặc biệt Việc số hóa âm thanh và xử lý dữ liệu âm thanh, cũng như chuyển đổi âm thanh thành phổ tần số, cũng áp dụng cho việc hiểu giọng nói Tuy nhiên, lời nói trở nên phức tạp hơn vì nó là dạng mã hóa của ngôn ngữ.

Quy trình xử lý dữ liệu âm thanh

Chúng ta sẽ bắt đầu bằng cách chuyển đổi các tệp âm thanh thành quang phổ, sau đó nhập vào mô hình mạng nơ-ron sử dụng Bộ phân loại tuyến tính để dự đoán lớp mà âm thanh đó thuộc về.

Hình 2 5 Quy trình xử lý âm thanh và dự đoán đầu ra

2.4.1 Tiền xử lý dữ liệu:

Quy trình tiền xử lý âm thanh giọng nói sẽ diễn ra các bước sau:

Để nhập tệp âm thanh, thường sử dụng định dạng “.wav” hoặc “.mp3” Sau khi đọc tệp, dữ liệu sẽ được chuyển đổi thành một mảng một chiều (mảng 2D), trong đó mỗi số đại diện cho cường độ hoặc biên độ âm thanh tại một thời điểm cụ thể Số lượng phép đo này phụ thuộc vào tốc độ lấy mẫu; ví dụ, với tốc độ 44,1kHz, mảng sẽ có 44.100 số cho mỗi giây âm thanh Âm thanh có thể ở dạng mono hoặc stereo; nếu là âm thanh stereo, sẽ có một mảng số biên độ thứ hai cho kênh thứ hai, tạo thành một mảng 3D với độ sâu là 2.

- Chuyển đổi thành dạng Stereo (âm thanh 2 kênh)

- Đưa về 2 mảng có cùng độ dài cố định

Để cải thiện chất lượng âm thanh, chúng ta có thể áp dụng các kỹ thuật nâng cao dữ liệu nhằm tăng tính đa dạng cho dữ liệu đầu vào Một số phương pháp bao gồm dịch chuyển thời gian âm thanh ngẫu nhiên sang trái hoặc phải với tỷ lệ nhỏ, cũng như điều chỉnh cao độ và tốc độ của âm thanh một cách nhẹ nhàng Những biện pháp này giúp mô hình học cách khái quát hóa tốt hơn cho nhiều loại đầu vào khác nhau.

Âm thanh thô đã được chuyển đổi sang quang phổ Mel, một phương pháp ghi lại bản chất của âm thanh dưới dạng hình ảnh Quang phổ Mel phân tách âm thanh thành các tần số khác nhau, giúp hiển thị cấu trúc và đặc điểm của âm thanh một cách trực quan.

- Tiếp tục tăng cường chất lượng quang phổ nhận được

MFCC, hay Hệ số Cepstral Tần số Mel, là một phương pháp chuyển đổi Quang phổ Mel thành dạng biểu diễn nén cho lời nói của con người Bằng cách trích xuất các hệ số tần số cơ bản nhất, MFCC giúp tối ưu hóa thông tin từ Mel Spectrogram, tương ứng với các dải tần số mà con người sử dụng khi giao tiếp.

Hình 2 6 Các bước tiền xử lý âm thanh

Có nhiều biến thể trong kiến trúc deep learning cho hệ thống nhận diện giọng nói tự động, nhưng hai phương pháp chính thường được áp dụng là

CNN (Mạng nơ-ron tổng hợp) kết hợp với kiến trúc RNN (Mạng nơ-ron lặp lại) sử dụng thuật toán CTC Loss để xác định ranh giới từng ký tự trong các từ của lời nói.

- Một mạng liên kết trình tự dựa trên RNN xử lý mỗi 'lát cắt' (slice) của phổ là một phần tử trong một quá trình lặp lại (sequence)

Mạng CNN với kiến trúc RNN bao gồm nhiều lớp CNN để xử lý phổ âm thanh, tạo ra đầu ra là các bản đồ đặc trưng của phổ đó.

Hình 2 7 Các lớp CNN xử lý phổ để tạo Feature Maps

Một mạng lặp lại (RNN) thông thường sử dụng các lớp LSTM (Long Short Term Memory) hai chiều để xử lý bản đồ đối tượng địa lý dưới dạng chuỗi các bước thời gian Điều này cho phép mạng rời rạc hóa các feature maps, tương ứng với các khung riêng biệt trong chuỗi ký tự đầu ra mong muốn.

Hình 2 8 RNN rời rạc hóa Feature maps và chuyển cho lớp LSTM 2 chiều

Sau đó, một lớp tuyến tính với softmax sử dụng đầu ra LSTM để tạo ra xác suất ký tự cho mỗi bước thời gian của đầu ra

Cuối cùng, chúng ta sẽ kết hợp các "khung" đã chia trong phổ với bảng xác suất ký tự để giải mã đầu ra cuối cùng.

Hình 2 10 Giải mã bảng xác suất ký tự để đưa ra đầu ra cuối

Ứng dụng công nghệ AI vào nhận diện giọng nói

2.5.1 Mô hình nhận dạng các mẫu giọng nói

Các mẫu nhận dạng, mô tả, phân loại và nhóm tự động đóng vai trò quan trọng trong nhiều lĩnh vực khoa học và công nghệ như sinh học, tâm lý học, y học, tiếp thị, thị giác máy tính, và viễn thông Những mẫu này có thể bao gồm hình ảnh, dấu vân tay, chữ viết tay, khuôn mặt con người hoặc tín hiệu giọng nói Quy trình nhận dạng và phân loại các mẫu này thường được chia thành hai nhiệm vụ chính.

- Phân loại có giám sát, phân tích phân biệt, trong đó mẫu đầu vào được xác định là thành viên của một lớp được xác định trước

- Phân loại không giám sát, phân cụm trong đó lớp của mẫu không xác định

Các ứng dụng khai thác dữ liệu hiện nay định nghĩa “kế hoạch” thông qua việc phân tích mối tương quan và độc lập trong hàng triệu mô hình đa chiều Chúng hỗ trợ phân loại tài liệu và tìm kiếm hiệu quả trong các lĩnh vực như văn bản, tài chính, dự báo và cơ sở dữ liệu đa phương tiện Sự phát triển nhanh chóng của sức mạnh tính toán cho phép xử lý khối lượng dữ liệu khổng lồ, đồng thời thúc đẩy việc áp dụng các phương pháp phân loại và phân tích phức tạp Nhu cầu nhận dạng mẫu tự động ngày càng gia tăng do sự bùng nổ của cơ sở dữ liệu lớn và yêu cầu khắt khe về tốc độ, độ chính xác và chi phí Thiết kế mẫu hệ thống nhận dạng bao gồm ba khía cạnh chính.

- Thu thập, xử lý trước và báo cáo về dữ liệu

- Quá trình đưa ra dự đoán (decision-making)

- Phạm vi có thể xảy ra của các dự đoán

Việc định nghĩa rõ ràng và đủ giới hạn sẽ giúp tạo ra một mô hình nhỏ gọn, từ đó đơn giản hóa quá trình đưa ra dự đoán.

Học từ một tập hợp các ví dụ cho sẵn là một thuộc tính quan trọng và cần thiết của hầu hết các hệ thống mẫu nhận dạng

Các cách tiếp cận nổi bật nhất để nhận dạng mẫu là:

- Sự phù hợp về cú pháp hoặc cấu trúc và mạng nơ-ron

2.5.2 Cách hệ thống hoạt động:

Phương pháp này tập trung vào việc lặp lại các điểm số xa nhất so với giá trị trung bình Khi điểm số vượt quá ngưỡng quy định, chúng sẽ bị loại bỏ, và từ đó, độ lệch chuẩn cũng như giá trị trung bình sẽ được tính toán lại Việc chỉ sử dụng một số ít mốc để ước tính giá trị trung bình và phương sai giúp cải thiện đáng kể kết quả.

2.5.3 Thuật toán xử lý giọng nói

- Nhập tín hiệu vào máy tính và chọn ranh giới từ

- Phân bổ các tham số đặc trưng cho phổ tín hiệu

- Sử dụng mạng nơron nhân tạo để đánh giá mức độ gần nhau của các thông số âm thanh

- So sánh với các tiêu chuẩn trong từ điển

KẾT LUẬN CHƯƠNG

Chương 2 đã trình bày về khái niệm trí tuệ nhân tạo, vấn đề nhận diện giọng nói và chuyển đổi chúng thành văn bản và cách trí tuệ nhân tạo ứng dụng vào vấn đề nhận diện giọng nói Việc áp dụng trí tuệ nhân tạo vào nhận diện, chuyển đổi giọng nói thành văn bản là công nghệ đi đầu của các ông lớn trong ngành công nghệ, làm cơ sở để chương 3 trình bày hệ thống thực tế có tính năng chuyển đổi giọng nói thành văn bản sử dụng công nghệ được xây dựng sẵn của hai hệ điều hành Android và iOS

XÂY DỰNG HỆ THỐNG THỬ NGHIỆM

Kiến trúc của hệ thống thử nghiệm

Hệ thống thử nghiệm sẽ bao gồm các thành phần chính:

Ứng dụng di động dành cho người dùng cung cấp giao diện thân thiện, giúp người dùng dễ dàng tương tác với hệ thống nhà thông minh Ứng dụng được phát triển trên nền tảng React Native, mang lại trải nghiệm mượt mà và hiệu quả.

Server đóng vai trò quan trọng trong việc nhận lệnh từ ứng dụng di động và gửi các chỉ thị tới hệ thống điều khiển thiết bị trong nhà, được phát triển bằng NodeJS.

- Cơ sở dữ liệu: Lưu trữ các dữ liệu cần thiết của toàn bộ hệ thống, sử dụng InfluxDB

- Kết nối MQTT: Là kết nối được sử dụng để kết nối giữa Server và Raspberry Pi cho việc trao đổi thông tin và ra lệnh cho hệ thống

Raspberry Pi đóng vai trò quan trọng trong việc kết nối vật lý với các thiết bị cuối như đèn và cửa, đồng thời nhận lệnh từ máy chủ để điều khiển các thiết bị này một cách hiệu quả.

- Các thiết bị cuối: Các thiết bị cơ bản trong nhà như đèn, cửa, …

Hình 3 1 Kiến trúc cơ bản của hệ thống thử nghiệm

Các công nghệ sử dụng trong hệ thống

3.2.1.1 Khái niệm về React và React Native

React, hay còn gọi là React.js hoặc ReactJS, là một thư viện JavaScript mã nguồn mở và miễn phí, được sử dụng để phát triển giao diện người dùng và các thành phần cho ứng dụng web.

React là một thư viện do Facebook duy trì, cùng với sự hỗ trợ từ cộng đồng các nhà phát triển và công ty cá nhân, cho phép phát triển ứng dụng một trang và ứng dụng di động Đặc biệt, React Native, một framework mã nguồn mở do Facebook sáng tạo, giúp các nhà phát triển xây dựng ứng dụng di động cho Android, iOS, Web và UWP bằng cách kết hợp React với môi trường ứng dụng gốc.

3.2.1.2 Luồng hoạt động của React Native

Trong môi trường thực thi React Native, có ba luồng chính: luồng JavaScript, luồng chính Native và luồng nền để xử lý Shadow Node Giao tiếp giữa các luồng này được thực hiện thông qua thư viện "cầu nối" Nhóm React Native đang nỗ lực cải tiến kiến trúc, và bài viết này mang đến cái nhìn tổng quan về lý do cũng như cách thức cần thiết cho sự thay đổi này.

Hình 3 3 Luồng hoạt động của React Native

3.2.1.3 Các kiến trúc thường dùng trong dự án React Native

MVC, MVP và MVVM là ba kiến trúc phổ biến cho ứng dụng di động, với MVC là Model-View-Controller, MVP là Model-View-Presenter và MVVM là Model-View-ViewModel Những kiến trúc này hỗ trợ phát triển ứng dụng nhanh chóng, dễ dàng kiểm thử và bảo trì Chúng giúp giảm thiểu sự phức tạp của mã nguồn ở tầng giao diện, đồng thời tạo ra giao diện người dùng đơn giản và dễ quản lý.

Mẫu thiết kế Model View Controller (MVC) quy định rằng một ứng dụng phải bao gồm ba thành phần chính: mô hình dữ liệu, thông tin trình bày và thông tin điều khiển Theo nguyên tắc của MVC, mỗi thành phần này cần được tách biệt thành các đối tượng riêng biệt để đảm bảo tính linh hoạt và khả năng bảo trì của ứng dụng.

MVC không chỉ đơn thuần là một mô hình kiến trúc mà còn là một phần quan trọng trong việc phát triển ứng dụng Nó chủ yếu tập trung vào giao diện người dùng và lớp tương tác, giúp cải thiện trải nghiệm người dùng trong các ứng dụng.

Hình 3.4 Sơ đồ mô hình MVC

- Model: chỉ chứa dữ liệu ứng dụng thuần túy, nó không chứa logic mô tả cách trình bày dữ liệu cho người dùng

View là thành phần hiển thị dữ liệu từ Model cho người dùng Nó có khả năng truy cập dữ liệu của Model nhưng không hiểu ý nghĩa của dữ liệu đó cũng như các thao tác mà người dùng có thể thực hiện.

Controller đóng vai trò trung gian giữa View và Model, chịu trách nhiệm lắng nghe các sự kiện do View hoặc nguồn bên ngoài kích hoạt, từ đó thực hiện các hành động phù hợp.

Nguyễn Tiến Hải – D17CQVT08B 34 nhấn mạnh rằng trong hầu hết các tình huống, phản ứng thường là gọi một phương thức trên Model Điều này xảy ra vì View và Model được liên kết thông qua cơ chế thông báo, cho phép kết quả của hành động được cập nhật tự động tại View.

Mẫu MVP, tương tự như mẫu MVC, được phát triển từ mẫu MVC bằng cách thay thế Controller bằng Presenter Mô hình này chia ứng dụng thành ba thành phần chính: Model, View và Presenter.

Hình 3 4 Sơ đồ mô hình MVP

Mô hình đại diện cho một tập hợp các lớp mô tả logic nghiệp vụ và dữ liệu, đồng thời xác định các quy tắc nghiệp vụ cho dữ liệu, tức là cách thức dữ liệu có thể được thay đổi và thao tác.

- View: là một thành phần tương tác trực tiếp với người dùng như XML, Activity, các phân đoạn Nó không chứa bất kỳ logic nào được thực hiện

Người trình bày (Presenter) nhận thông tin từ người dùng qua View, xử lý dữ liệu với sự hỗ trợ của Model và gửi kết quả trở lại View Presenter giao tiếp với View thông qua một giao diện được định nghĩa trong lớp Presenter, nơi truyền tải dữ liệu cần thiết Các thành phần View như Activity, fragment hoặc bất kỳ thành phần nào khác triển khai giao diện này để hiển thị dữ liệu theo cách mong muốn.

Trong mô hình MVP, Presenter tương tác với Model và cập nhật View một cách hiệu quả Mô hình này đảm bảo sự tách biệt hoàn toàn giữa View và Presenter, cho phép chúng giao tiếp một cách độc lập và linh hoạt.

Nguyễn Tiến Hải – D17CQVT08B 35 nhấn mạnh rằng việc sử dụng giao diện giúp phân tách View một cách dễ dàng hơn Điều này cũng làm cho việc kiểm thử các ứng dụng áp dụng mẫu thiết kế MVP trở nên thuận lợi hơn so với mẫu thiết kế MVC.

Mẫu MVVM cho phép liên kết dữ liệu hai chiều giữa View và View-Model, tự động truyền các thay đổi từ trạng thái của View-Model đến View View-Model sử dụng mẫu quan sát để thông báo các thay đổi này đến Model.

Hình 3 5 Sơ đồ mô hình MVVM

Xây dựng hệ thống thực nghiệm

3.3.1.1 Kết nối vật lý với các thiết bị cuối: Ở thử nghiệm lần này, em sẽ sử dụng 3 thiết bị cuối gồm:

- Đèn LED: Tượng trưng cho bóng đèn trong nhà

- Mô-tơ bước: Tượng trưng cho việc đóng cửa, rèm cửa

- Cảm biến nhiệt độ, độ ẩm: Đưa ra thông tin về nhiệt độ, độ ẩm cho người dùng

Kết nối với đèn LED cần lưu ý rằng chúng rất dễ chập cháy nếu bị quá tải dòng điện Để tránh tình trạng này, việc sử dụng một điện trở mắc nối tiếp là rất quan trọng nhằm hạn chế dòng điện đi qua đèn LED, từ đó bảo vệ đèn khỏi nguy cơ chập cháy hoặc nổ.

Kết nối chân dài của đèn LED với chân 3V3 của Pi và chân ngắn với chân GND Điện trở có thể có giá trị khoảng 50Ω, và trong trường hợp này, chúng ta sẽ sử dụng điện trở 330Ω.

Hình 3 11 Kết nối Raspberry Pi với LED

Trong thử nghiệm này, chúng ta sẽ kết nối đèn LED với chân GPIO 23 để điều khiển việc bật tắt đèn Để thực hiện điều này, bạn có thể sử dụng đoạn mã sau: import RPi.GPIO as GPIO import time.

GPIO.setup(23,GPIO.OUT) print "LED on"

GPIO.output(23,GPIO.HIGH) time.sleep(1) print "LED off"

3.3.1.1.2 Kết nối với Mô-tơ bước: Đối với mô-tơ bước, em lựa chọn mô-tơ bước 28BYJ-48 cùng với bộ điều khiển ULN2003 đi kèm

Hình 3 12 Mô-tơ bước 28BYJ-48 và với bộ điều khiển ULN2003

Bộ điều khiển ULN2003 gồm có 4 chân đầu vào và 2 chân nguồn 5-12V

Kết nối bộ điều khiển ULN2003 với Raspberry Pi:

- Kết nối IN1 với GPIO Port 17

- Kết nối IN2 với GPIO Port 18

- Kết nối IN3 với GPIO Port 27

- Kết nối IN4 với GPIO Port 22

- Đầu vào nguồn âm nối với cổng GND

- Đầu vào nguồn dương nối với Đầu ra nguồn 5V của Raspberry Pi

Hình 3 13 Sơ đồ kết nối Mô-tơ bước với Raspberry Pi

Hình 3 14 Kết nối thực tế với Mô-tơ bước Sau đó ta có thể điều khiển được các mô-tơ bằng code:

This Python script utilizes the RPi.GPIO library to control a stepper motor using a Raspberry Pi It defines four GPIO pins (17, 18, 27, and 22) for motor control and sets the sleep time between steps to 0.002 seconds With a total of 4096 steps, the motor can complete a full 360° rotation, where each step corresponds to 5.625 degrees The direction of rotation is controlled by a boolean variable, allowing for both clockwise and counter-clockwise movement The step sequence is initialized as a binary pattern to facilitate precise motor control.

GPIO.setup( in1, GPIO.OUT )

GPIO.setup( in2, GPIO.OUT )

GPIO.setup( in3, GPIO.OUT )

GPIO.setup( in4, GPIO.OUT )

GPIO.output( in1, GPIO.LOW )

GPIO.output( in2, GPIO.LOW )

GPIO.output( in3, GPIO.LOW )

GPIO.output( in4, GPIO.LOW ) motor_pins = [in1,in2,in3,in4] motor_step_counter = 0 ; def cleanup():

GPIO.output( in1, GPIO.LOW )

GPIO.output( in2, GPIO.LOW )

GPIO.output( in3, GPIO.LOW )

GPIO.output( in4, GPIO.LOW )

GPIO.cleanup() try: i = 0 for i in range(step_count): for pin in range(0, len(motor_pins)):

The code snippet controls a motor's direction using GPIO output based on a specified step sequence When the direction is set to True, the motor step counter decreases, cycling through a range of values, while if the direction is set to False, the counter increases The code includes defensive programming to handle unexpected direction values, prompting an error message and executing a cleanup function before exiting A sleep function is also implemented to regulate the timing of the steps, and the program can be interrupted safely with a KeyboardInterrupt, ensuring proper cleanup before termination.

Nguyễn Tiến Hải – D17CQVT08B 47 cleanup() exit( 0 )

Khi mô-tơ hoạt động, nó quay theo chiều kim đồng hồ, với mỗi bước di chuyển được 0.087890625 độ Vì vậy, sau 4096 bước, mô-tơ sẽ hoàn thành một vòng tròn.

Hình 3 15 Bộ điều khiển và Mô-tơ đang hoạt động

Để đo nhiệt độ và độ ẩm trong phòng, tôi sử dụng cảm biến SHT31-D, có 4 chân kết nối.

- Chân Vin: Cấp nguồn dương

- Chân GND: Cấp nguồn âm (GND-mass)

- Chân SDA: Chân dữ liệu I2C

Hình 3 16 Cảm biến nhiệt độ, độ ẩm SHT31-D Để kết nối SHT31-D và Raspberry Pi, ta cần kích hoạt chế độ I2C của Raspberry

Pi, sau đó kết nối chân Vin và chân GND với chân nguồn 3V và GND của Raspberry

Pi Chân SCL và SDA lần lượt nối với chân GPIO 2 và GPIO 3 (hỗ trợ I2C)

Hình 3 17 Sơ đồ kết nối với SHT31-D

Hình 3 18 Kết nối thực tế với SHT31-D Sau đó ta có thể nhận thông số nhiệt độ, độ ẩm bằng code: import smbus import time

# Get I2C bus bus = smbus.SMBus(1)

# SHT31 address, 0x44(68) bus.write_i2c_block_data(0x44, 0x2C, [0x06]) time.sleep(0.5)

# Read data back from 0x00(00), 6 bytes

# Temp MSB, Temp LSB, Temp CRC, Humididty MSB, Humidity LSB, Humidity CRC data = bus.read_i2c_block_data(0x44, 0x00, 6)

# Convert the data temp = data[0] * 256 + data[1] cTemp = -45 + (175 * temp / 65535.0) fTemp = -49 + (315 * temp / 65535.0) humidity = 100 * (data[3] * 256 + data[4]) / 65535.0

# Output data to screen print "Temperature in Celsius is : %.2f C" %cTemp print "Temperature in Fahrenheit is : %.2f F" %fTemp print "Relative Humidity is : %.2f %%RH" %humidity

Hình 3 19 Kết quả thu được từ cảm biến

Hệ thống hoàn chỉnh được kết nối với Raspberry Pi, cho phép điều khiển đèn và mô-tơ, đồng thời nhận dữ liệu từ cảm biến.

Hình 3 20 Hình ảnh thực tế của hệ thống

3.3.1.2 Kết nối với Server qua MQTT

Sau khi lấy được thông số từ cảm biến, ta sử dụng MQTT để gửi dữ liệu về cho người dùng

Để nhận tin tức về một chủ đề cụ thể, người dùng cần thông báo cho MQTT Broker về việc đăng ký chủ đề đó.

Mặt khác, nếu ta muốn tạo một tin cho một chủ đề cụ thể, ta trực tiếp gửi nó đến MQTT Broker

Tại đây em sử dụng thư viện MQTT.js là một thư viện dành cho Node.js để có thể kết nối được với MQTT

To establish a connection with the MQTT Broker, use the following code: `transmitter.connect = function connect(cb) { const connectOptions = { port: config.mqtt.port, host: config.mqtt.broker, rejectUnauthorized: false, protocol: 'mqtts', username: config.mqtt.username, password: config.mqtt.password }` This snippet sets the necessary connection parameters, including the port, host, protocol, and authentication details.

The MQTT broker connection attempt is initiated, logging the broker's address and port from the configuration settings Upon establishing a successful connection, a confirmation message is logged, indicating that the transmitter client has connected to the MQTT broker.

${config.mqtt.broker} on port ${config.mqtt.port}`); cb();

}); transmitter.client.on('error', (err) => { log.error(`An error occurred ${err}`);

MQTT Broker sẽ sử dụng username và password để xác thực người dùng

The temperature and humidity sensor data will be transmitted using the "publish" function from the mqtt.js library The information is converted into a string format using the JSON.stringify function before being sent The transmission function is defined as follows: transmitter.send = function send(temperature, humidity, cb) { const message = { temperature, humidity, timeStamp: moment().unix(), };

}; transmitter.client.publish(“house/sensors”, JSON.stringify(message), (err) => { if (err) { log.error(`An error occurred while trying to publish a message

} else { log.debug('Successfully published message');

Khi đó, hệ thống sẽ gửi đi một tin đến chủ đề “house/sensors”

3.3.2 Thiết lập kết nối MQTT tại Server

In this article, we utilize the Aedes library, a Node.js framework designed for MQTT connections, which offers essential functionalities and the potential for further development through external plugins To get started, we initialize Aedes and set it up to listen for MQTT packets on the configured ports, using the following code: broker.listen = function listen(cb) { broker.aedes = aedes(); const options = { key: fs.readFileSync('./certificates/broker-private.pem'), cert: fs.readFileSync('./certificates/broker-public.pem'),

}; broker.server = tls.createServer(options, broker.aedes.handle); log.info(`Starting MQTT broker on port:${config.mqtt.port}`); broker.server.listen(config.mqtt.port); cb();

Next, client machines must be authenticated using a username and password To set up authentication for Aedes, you can implement the following code: `broker.setupAuthentication = function setupAuthentication() { broker.aedes.authenticate = (client, username, password, cb) => { if (username && typeof username === 'string' && username === config.mqtt.username) { if (password && typeof password === 'object' && password.toString()`.

=== config.mqtt.password) { cb(null, true); log.info(`Client: ${client} authenticated successfully`);

}; Để nhận được gói tin về thông số nhiệt độ và độ ẩm bên trên, ta cần đăng kí tại Server lắng nghe gói tin “house/sensors” như sau:

Nguyễn Tiến Hải – D17CQVT08B 54 receiver.client.on('connect', () => { log.info(`Connected successfully to the MQTT broker at

The receiver client connects to the MQTT broker at ${config.mqtt.broker} on port ${config.mqtt.port} and subscribes to the specified topic Upon receiving a message, it checks if the topic matches the configured topic, then parses the message into an object using the helper function and triggers the message callback with the parsed data.

Ngày đăng: 06/02/2022, 20:53

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Samuel Greengard; The Internet of Things; March 20, 2015 Sách, tạp chí
Tiêu đề: The Internet of Things
[2] Adam Juniper; The Smart Smart Home Handbook: Control Your Home With Your Voice; November 6, 2018 Sách, tạp chí
Tiêu đề: The Smart Smart Home Handbook: Control Your Home With Your Voice
[3] Steven Goodwin; Smart Home Automation with Linux and Raspberry Pi; June 10, 2013 Sách, tạp chí
Tiêu đề: Smart Home Automation with Linux and Raspberry Pi
[4] Dong Yu, Automatic Speech Recognition: A Deep Learning Approach (Signals and Communication Technology), 2015th edition (November 28, 2014) Sách, tạp chí
Tiêu đề: Automatic Speech Recognition: A Deep Learning Approach (Signals and Communication Technology)
[5] Vishal Passricha, Rajesh Aggarwal; Convolutional Neural Networks for Raw Speech Recognition, December 2018 Sách, tạp chí
Tiêu đề: Convolutional Neural Networks for Raw Speech Recognition

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w