TỔNG QUAN VỀ HỆ THỐNG LƯU TRỮ THÔNG MINH
Đ ẶT VẤN ĐỀ
Bảo quản tài liệu lưu trữ là quá trình áp dụng các biện pháp khoa học và kỹ thuật nhằm kéo dài tuổi thọ và đảm bảo an toàn cho tài liệu Công việc này bao gồm xây dựng và cải tạo kho lưu trữ, trang bị thiết bị bảo quản, xử lý kỹ thuật và tổ chức tài liệu Các biện pháp kỹ thuật bảo quản nhằm chống lại ảnh hưởng của khí hậu, môi trường, côn trùng và các tác nhân khác, trong đó xử lý nhiệt độ và độ ẩm là phổ biến nhất Để bảo quản tài liệu hiệu quả, cần phát triển hệ thống lưu trữ đáp ứng các tiêu chuẩn chất lượng và tạo ra môi trường tối ưu cho tài liệu.
T ỔNG QUAN VỀ HỆ THỐNG LƯU TRỮ TÀI LIỆU
1.2.1 Tổng quan về hệ thống lưu trữ tài liệu truyền thống
Hệ thống lưu trữ tài liệu truyền thống được chỉ ra trong Hình 1.1:
Hình 1.1 Hình ảnh tủ lưu trữ tài liệu truyền thống
Hệ thống lưu trữ có cấu trúc cơ khí đơn giản với các tủ lưu trữ cố định, cách nhau một khoảng đủ rộng để người dùng dễ dàng lấy tài liệu Thiết kế này giúp tối ưu hóa diện tích phòng lưu trữ Tuy nhiên, hệ thống không được trang bị các thiết bị điều khiển hoặc giám sát bổ sung.
CHƯƠNG 1 TỔNG QUAN VỀ HỆ THỐNG LƯU
Môi trường lưu trữ tài liệu trong các tủ lưu trữ phụ thuộc hoàn toàn vào điều kiện của phòng lưu trữ, và hệ thống hiện tại không có khả năng phản hồi thông tin về môi trường này Điều này gây khó khăn trong việc đảm bảo rằng môi trường lưu trữ tài liệu là tối ưu.
Việc tìm kiếm tài liệu trong hệ thống lưu trữ truyền thống thường diễn ra một cách thủ công, nơi người dùng phải dựa vào các bảng chỉ dẫn gắn bên ngoài tủ để xác định vị trí tài liệu Các tài liệu thường được nhóm lại dựa trên những thuộc tính như sắp xếp theo bảng chữ cái, theo chủ đề hoặc theo mã số mã hóa, giúp người dùng dễ dàng hơn trong việc tìm kiếm.
1.2.2 Tổng quan về hệ thống lưu trữ tài liệu thông minh
Hệ thống lưu trữ tài liệu thông minh được chỉ ra trong Hình 1.2:
Hình 1.2 Hình ảnh hệ thống lưu trữ tài liệu thông minh
Hệ thống lưu trữ cơ khí bao gồm nhiều tủ được sắp xếp sát nhau và có khả năng di chuyển nhờ vào cơ chế truyền động động cơ, bánh răng, dây xích và ray dẫn hướng Thiết kế này tối ưu hóa không gian lưu trữ, cho phép người dùng dễ dàng lấy tài liệu bằng cách kích hoạt tủ lưu trữ Khi đó, hệ thống sẽ tạo ra một lối đi rộng rãi tại tủ có chứa tài liệu cần thiết, trong khi các tủ khác vẫn giữ nguyên vị trí sát nhau.
Hệ thống được trang bị chức năng giám sát và điều khiển, có nhiệm vụ thu thập dữ liệu về điều kiện môi trường lưu trữ Nó tự động phân tích dữ liệu và đưa ra tín hiệu điều khiển phù hợp Bên cạnh đó, hệ thống cũng cho phép người dùng tương tác và ra lệnh điều khiển trực tiếp.
4 thiết lập thông số, thiết lập bảo mật đến việc tìm kiếm tài liệu thông qua màn hình hiển thị được đặt tại mỗi tủ trong hệ thống
Việc tìm kiếm tài liệu trở nên dễ dàng hơn rất nhiều so với hệ thống lưu trữ truyền thống Người dùng chỉ cần nhập tên hoặc mã tài liệu tại bất kỳ màn hình hiển thị nào Hệ thống sẽ tự động phân tích dữ liệu và so sánh với cơ sở dữ liệu Nếu tài liệu cần tìm có trong hệ thống, người dùng sẽ nhận thông báo về vị trí của tài liệu và khoang giá chứa tài liệu đó sẽ được mở tự động.
Hệ thống lưu trữ thông minh có thể được nâng cấp với tính năng bảo mật, ngăn chặn truy cập trái phép từ bên ngoài Để vận hành và điều khiển hệ thống, người dùng cần đăng nhập qua màn hình hiển thị, cho phép thiết lập thông số và tìm kiếm tài liệu một cách an toàn.
Sau khi tìm hiểu khái quát về 2 hệ thống lưu trữ truyền thống và thông minh, ta rút ra được bảng so sánh sau:
Bảng 1.1 Bảng so sánh hệ thống lưu trữ truyền thống với hệ thống lưu trữ thông minh
Tiêu chí đánh giá Hệ thống lưu trữ truyền thống
Hệ thống lưu trữ thông minh
Diện tích Cần nhiều không gian lưu trữ Giải pháp tối ưu cho tiết kiệm không gian lưu trữ
Kết cấu Kết cấu cơ khí đơn giản
Kết cấu phức tạp của hệ thống được hình thành từ việc bổ sung phần điều khiển, cùng với đó, kết cấu cơ khí trở nên phức tạp hơn nhờ vào việc trang bị các cơ cấu truyền động như động cơ, bánh răng, dây xích và ray dẫn hướng.
Không có hệ thống đánh giá và thu thập dữ liệu về môi trường lưu trữ tài liệu sẽ dẫn đến việc không đảm bảo điều kiện lưu trữ tối ưu Việc trang bị hệ thống cảm biến nhiệt độ và độ ẩm cùng với hệ thống giám sát cho phép theo dõi điều kiện môi trường lưu trữ, từ đó giúp kiểm soát và đưa ra giải pháp lưu trữ tối ưu cho tài liệu.
Tài liệu được đánh số thủ công theo quy tắc sắp xếp nhất định, dẫn đến việc lưu trữ qua sổ sách hoặc dữ liệu số trên máy tính, gây khó khăn trong việc tra cứu và tìm kiếm tài liệu.
Tài liệu được số hóa trước khi sắp xếp lên các giá, cho phép người dùng tìm kiếm qua màn hình hiển thị bằng tên hoặc mã tài liệu Hệ thống sẽ tìm kiếm trong cơ sở dữ liệu và thông báo vị trí tài liệu cần tìm, đồng thời mở khoang giá chứa tài liệu đó.
Tài liệu hiện nay thường thiếu bảo mật, cho phép người dùng tự do sử dụng mà không có kiểm soát chặt chẽ Giải pháp bảo mật khả quan nhất trong hệ thống lưu trữ truyền thống là gắn chip từ cho mỗi tài liệu, giúp hệ thống phát cảnh báo khi người dùng chưa thực hiện thủ tục gỡ từ.
Người dùng cần đăng nhập vào hệ thống bằng tài khoản và mật khẩu được cung cấp để vận hành và tìm kiếm tài liệu Hệ thống phân cấp quyền truy cập cho các tài khoản, điều này giúp tăng cường tính bảo mật cho tài liệu và hệ thống.
Rất khó để quản lý khi số lượng tài liệu lưu trữ lớn
Tài liệu được số hóa và hệ thống hóa cho phép lưu trữ tài liệu với số lượng lớn
Cung cấp khả năng mở rộng thành nhiều chuỗi hệ thống lưu trữ dùng chung một cơ sở dữ liệu
Giá thành Rẻ Cao hơn đáng kể so với hệ thống lưu trữ truyền thống
Hệ thống lưu trữ thông minh nổi bật với nhiều ưu điểm vượt trội so với hệ thống lưu trữ truyền thống Mặc dù có chi phí cao hơn, nhưng những tính năng ưu việt của nó đã khiến hệ thống này dần thay thế các phương pháp lưu trữ cũ Ngày càng nhiều doanh nghiệp, cơ quan và tổ chức lựa chọn hệ thống lưu trữ thông minh để nâng cao hiệu quả quản lý dữ liệu.
Việc nghiên cứu và phát triển hệ thống lưu trữ thông minh đang trở thành ưu tiên hàng đầu của các doanh nghiệp trong lĩnh vực lưu trữ, chỉnh lý và tự động hóa, nhằm làm chủ công nghệ và nâng cao hiệu quả hoạt động.
T ỔNG QUAN CẤU TRÚC XÂY DỰNG HỆ THỐNG LƯU TRỮ THÔNG MINH
1.3.1 Tổng quan các tính năng trong hệ thống lưu trữ thông minh
Hệ thống lưu trữ thông minh được xây dựng gồm nhiều giá (tủ lưu trữ) được đặt sát cạnh nhau nhằm tối ưu không gian lưu trữ
Hệ thống lưu trữ thông minh phục vụ cho công tác lưu trữ tài liệu cần đáp ứng được các tiêu chí sau:
- Hệ thống có khả năng di chuyển, đảm bảo không gian lưu trữ tối ưu
- Hệ thống có khả năng điều khiển, giám sát, thu thập dữ liệu của môi trường lưu trữ, đảm đảm điều kiện lưu trữ tối ưu
- Hệ thống có khả năng vận hành trơn tru, đảm bảo các yếu tố an toàn cho người dùng
- Hệ thống có khả năng tìm kiếm tài liệu ngay tại hệ thống, hoặc thông qua
- Hệ thống có khả năng bảo mật tài liệu
- Hệ thống có khả năng theo dõi, chuẩn đoán các thiết bị, cảm biến phục vụ công tác bảo trì, bảo dưỡng hệ thống
Hệ thống tự động theo dõi và cảnh báo người dùng khi xảy ra sự cố Để đáp ứng các tiêu chí và yêu cầu, hệ thống lưu trữ thông minh được xây dựng với nhiều tính năng nổi bật.
Mỗi tủ lưu trữ trong hệ thống đều được trang bị động cơ truyền động để di chuyển, ngoại trừ tủ Master không có động cơ Điều quan trọng là phải phối hợp hoạt động của toàn bộ hệ thống nhằm tránh va chạm trong quá trình di chuyển của các tủ lưu trữ.
❖ Tính năng bảo vệ an toàn
- Bảo vệ an toàn cho người sử dụng:
Hệ thống sẽ được trang bị cảm biến đếm người, giúp kiểm soát việc ra vào tủ lưu trữ và đảm bảo an toàn cho người sử dụng khi lấy tài liệu trong các khoang giá.
- Bảo vệ an toàn cho hệ thống trong quá trình làm việc:
Để ngăn chặn tình trạng va chạm giữa các tủ khi kết thúc hành trình, mỗi tủ sẽ được trang bị bộ cảm biến tiệm cận, ngoại trừ tủ Master không cần thiết bị này.
Để đảm bảo an toàn trong quá trình hoạt động của hệ thống, mỗi tủ lưu trữ sẽ được trang bị bộ cảm biến thu - phát hồng ngoại dọc theo tủ, giúp phát hiện tài liệu lưu trữ bị nhô ra ngoài Riêng tủ Master không cần trang bị bộ cảm biến này.
Mỗi tủ trong hệ thống đều được trang bị khóa cơ để giữ tủ lưu trữ ở vị trí cố định, nhưng điều này có thể gây mất an toàn khi hệ thống điều khiển yêu cầu di chuyển tủ đang bị khóa Để khắc phục vấn đề này, mỗi tủ lưu trữ sẽ được trang bị cảm biến phát hiện khóa cơ, đảm bảo an toàn trong quá trình vận hành.
Mỗi hệ thống đều có giới hạn hoạt động trong không gian lưu trữ nhất định Để đảm bảo an toàn, các tủ ngoài cùng của hệ thống được trang bị cảm biến phát hiện hết hành trình, ngăn chặn việc hệ thống vượt quá hành trình do nguyên nhân bất thường.
Mỗi tủ lưu trữ sẽ được trang bị cảm biến đo nồng độ khí để phát hiện các tác nhân có thể gây ra cháy và tổn hại cho hệ thống.
❖ Tính năng điều khiển, giám sát
Mỗi tủ lưu trữ sẽ được trang bị màn hình hiển thị kết nối với hệ thống điều khiển, nhằm phục vụ cho việc theo dõi, kiểm tra, giám sát và ra lệnh điều khiển hiệu quả.
Tủ Master sẽ được trang bị máy tính công nghiệp IPC để lưu trữ toàn bộ cơ sở dữ liệu tài liệu số hóa, đồng thời hỗ trợ việc chuẩn đoán, phân tích và đánh giá các hoạt động Hệ thống này cũng cho phép thu thập và giám sát dữ liệu hiệu quả.
Để đảm bảo môi trường lưu trữ tối ưu cho tài liệu, việc thu thập dữ liệu về các yếu tố như nhiệt độ và độ ẩm không khí là rất quan trọng Mỗi tủ lưu trữ sẽ được trang bị cảm biến để theo dõi nhiệt độ và độ ẩm, giúp duy trì điều kiện lý tưởng cho tài liệu.
Để nâng cao bảo mật cho tài liệu và dữ liệu trong hệ thống, người dùng cần đăng nhập bằng tài khoản và mật khẩu được cấp, nhằm thực hiện việc điều khiển hệ thống một cách hiệu quả.
Tài khoản và mật khẩu của người dùng được phân quyền theo mức độ truy cập vào hệ thống, cho phép người dùng chỉ sử dụng các tính năng mà tài khoản của họ được cấp quyền.
Hệ thống sẽ được trang bị cảm biến vân tay, cho phép người dùng đăng nhập nhanh chóng và tiết kiệm thời gian Vân tay sẽ được liên kết với tài khoản của người dùng, tăng cường khả năng truy cập.
❖ Tính năng tìm kiếm tài liệu
Hệ thống cung cấp cơ sở dữ liệu cho phép người quản lý thiết lập các thông số tài liệu như tên, vị trí trong khoang giá và số lượng Kết hợp với phần mềm trên máy tính, người dùng chỉ cần nhập mã hoặc tên tài liệu để hệ thống tự động cung cấp vị trí lưu trữ của tài liệu đó.
- Người dùng sau khi đăng nhập vào hệ thống có thể thực hiện tìm kiếm tài liệu tại bất kỳ tủ lưu trữ nào trong hệ thống
- Ngoài ra, để tăng tính đa dụng cho hệ thống, người dùng có thể tìm kiếm tài liệu thông qua máy tính để bàn hoặc Smartphone
✓ Để thông báo cho người dùng về các trạng thái hoạt động của hệ thống, ở đây hệ thống sẽ được trang bị loa cảnh báo
✓ Ngoài ra hệ thống cũng sẽ hiển thị nội dung của các cảnh báo trên màn hình hiển thị để cho người dùng tiện theo dõi
T ỔNG KẾT CHƯƠNG 1
Chương 1 đã trình bày tổng quan về các hệ thống lưu trữ tài liệu truyền thống và thông minh, đồng thời đánh giá sự khác biệt giữa hai hệ thống này Hệ thống lưu trữ thông minh, với những tính năng vượt trội, được xem là bước tiến quan trọng trong kỷ nguyên cách mạng công nghiệp 4.0.
Dựa trên việc phân tích các tính năng cần thiết để đáp ứng tiêu chí và yêu cầu công nghệ của hệ thống lưu trữ thông minh, chúng tôi đã đề xuất một cấu trúc thiết kế tổng thể cho hệ thống này.
Các chương tiếp theo sẽ phân tích và thiết kế chi tiết cả cấu trúc phần cứng lẫn phần mềm cho toàn bộ hệ thống.
Phần cứng trong hệ thống lưu trữ thông minh bao gồm tất cả các mảng mạch, linh kiện và thiết bị ngoại vi kết nối với chúng Việc thiết kế các mảng mạch và lựa chọn thiết bị, linh kiện phù hợp với hệ thống được thực hiện dựa trên các tiêu chí nhất định.
Dựa trên thiết kế tổng thể của hệ thống được trình bày trong mục 1.3.2 và sơ đồ cấu trúc hệ thống lưu trữ thông minh trong Hình 1.3, hệ thống bao gồm các mảng mạch phần cứng quan trọng.
✓ Mạch điều khiển trung tâm
✓ Mạch điều khiển động cơ
✓ Mạch led 7 thanh hiển thị số tủ
Yêu cầu thiết kế các mảng mạch tương ứng với các ngoại vi đã chọn, đồng thời đảm bảo kết nối và giao tiếp hiệu quả giữa các mảng mạch trong mỗi tủ cũng như giữa các tủ với nhau.
2.2 Cơ sở thiết kế mạch phần cứng
Các mảng mạch tương ứng với từng loại tủ lưu trữ (trong đó tủ Slave và Outmost Slave có cùng các mảng mạch) đó là:
✓ Mạch điều khiển trung tâm
✓ Mạch led 7 thanh hiển thị số tủ
• Tủ Slave và Outmost Slave:
✓ Mạch điều khiển trung tâm
✓ Mạch đếm người (gồm mạch đếm người thu và mạch đếm người phát)
✓ Mạch điều khiển động cơ
Mạch LED 7 thanh hiển thị số tủ là một phần quan trọng trong thiết kế mạch phần cứng cho hệ thống lưu trữ thông minh Để thực hiện công việc này, tôi đã sử dụng phần mềm Altium Designer, một công cụ thiết kế mạch điện tử mạnh mẽ và phổ biến trên thị trường.
Trong luận văn “Phát triển hệ điều hành thời gian thực trên chip ARM ứng dụng trong hệ thống lưu trữ thông minh”, việc thiết kế phần cứng đóng vai trò quan trọng Hệ điều hành thời gian thực được phát triển nhằm tối ưu hóa hiệu suất và khả năng xử lý của hệ thống lưu trữ thông minh Thiết kế phần cứng phù hợp sẽ hỗ trợ việc triển khai hiệu quả các ứng dụng, đảm bảo tính ổn định và đáp ứng nhanh chóng với các yêu cầu trong môi trường lưu trữ.
CƠ SỞ VÀ CẤU TRÚC THIẾT KẾ PHẦN CỨNG
Đ ẶT VẤN ĐỀ
"Phần cứng" trong hệ thống lưu trữ thông minh bao gồm tất cả các mảng mạch, linh kiện và thiết bị ngoại vi kết nối Việc thiết kế các mảng mạch và lựa chọn thiết bị, linh kiện phù hợp với hệ thống được thực hiện dựa trên các tiêu chí cụ thể.
Dựa trên thiết kế tổng thể của hệ thống được trình bày trong mục 1.3.2 và sơ đồ cấu trúc hệ thống lưu trữ thông minh trong Hình 1.3, các thành phần phần cứng của hệ thống bao gồm:
✓ Mạch điều khiển trung tâm
✓ Mạch điều khiển động cơ
✓ Mạch led 7 thanh hiển thị số tủ
Yêu cầu thiết kế các mảng mạch tương ứng với các ngoại vi đã chọn, đồng thời đảm bảo kết nối và giao tiếp giữa các mảng mạch trong mỗi tủ và giữa các tủ với nhau.
C Ơ SỞ THIẾT KẾ MẠCH PHẦN CỨNG
Các mảng mạch tương ứng với từng loại tủ lưu trữ (trong đó tủ Slave và Outmost Slave có cùng các mảng mạch) đó là:
✓ Mạch điều khiển trung tâm
✓ Mạch led 7 thanh hiển thị số tủ
• Tủ Slave và Outmost Slave:
✓ Mạch điều khiển trung tâm
✓ Mạch đếm người (gồm mạch đếm người thu và mạch đếm người phát)
✓ Mạch điều khiển động cơ
Mạch LED 7 thanh hiển thị số tủ là một phần quan trọng trong thiết kế mạch phần cứng cho hệ thống lưu trữ thông minh Để thực hiện thiết kế này, tôi sử dụng phần mềm Altium Designer, một công cụ thiết kế mạch điện tử mạnh mẽ và phổ biến trên thị trường.
Trong luận văn "Phát triển hệ điều hành thời gian thực trên chip ARM ứng dụng trong hệ thống lưu trữ thông minh", việc thiết kế phần cứng đóng vai trò quan trọng Hệ điều hành thời gian thực được phát triển nhằm tối ưu hóa hiệu suất và khả năng xử lý trong các hệ thống lưu trữ thông minh, giúp nâng cao hiệu quả quản lý dữ liệu Việc áp dụng chip ARM cho thiết kế phần cứng không chỉ mang lại tính linh hoạt mà còn cải thiện khả năng tương thích với các ứng dụng hiện đại.
CHƯƠNG 2 CƠ SỞ VÀ CẤU TRÚC THIẾT KẾ
13 chỉ trình bày khái quát cấu trúc thiết kế và kết quả nghiên cứu các mạch nguyên lý có sử dụng chip ARM trên phần mềm Altium Designer.
T HIẾT KẾ PHẦN CỨNG CHO HỆ THỐNG LƯU TRỮ THÔNG MINH
Các mạch được trang bị chip điều khiển ARM bao gồm mạch điều khiển trung tâm, mạch điều khiển động cơ và mạch đếm người thu Sơ đồ kết nối các mảng mạch tại tủ Slave và Outmost Slave được trình bày trong Hình 2.1.
Mạch điều khiển trung tâm
Mạch điều khiển động cơ BLDC
Mạch hiển thị led 7 thanh
Hình 2.1 Sơ đồ kết nối các mảng mạch tại tủ Slave và Outmost Slave
2.3.1 Thiết kế mạch đếm người thu
Mạch đếm người sử dụng hai cặp LED thu phát hồng ngoại để theo dõi số lượng người ra vào tủ lưu trữ Thiết kế của mạch bao gồm hai mảng, một cho việc đếm người thu và một cho việc đếm người phát, dựa trên nguyên lý hoạt động của cặp LED hồng ngoại Mạch này sẽ được lắp đặt ở đầu mỗi tủ, ngoại trừ tủ Master không được trang bị mạch đếm người.
Mạch hoạt động dựa trên nguyên lý sử dụng 2 cặp LED phát và thu hồng ngoại với tần số khác nhau, cụ thể là 38KHz và 56KHz Khi có người vào tủ, tín hiệu từ cặp LED thu phát đầu tiên sẽ thay đổi trước, làm tăng biến đếm số người trong tủ lên 1 Ngược lại, khi có người ra khỏi tủ, tín hiệu từ cặp LED thu phát thứ hai sẽ thay đổi trước, dẫn đến việc giảm biến đếm số người trong tủ đi 1, với giá trị tối thiểu là 0.
Mạch thu có chức năng thu thập dữ liệu từ hai đèn LED hồng ngoại và xử lý tín hiệu nhận được Để thực hiện nhiệm vụ này, mạch thu cần được trang bị một chip điều khiển, trong đó chip ARM STM32F030F4P6 Cortex-M0 là lựa chọn phù hợp.
Dữ liệu sau khi xử lý, chứa thông tin về số người trong tủ, sẽ được gửi lên mạch điều khiển trung tâm qua giao tiếp UART theo chuẩn RS485 2 dây, nhằm truyền nhận dữ liệu giữa mạch đếm người và mạch điều khiển Để thiết kế giao tiếp UART thành chuẩn RS485 2 dây, mạch thiết kế sử dụng IC Max3485, mang lại tốc độ truyền nhận cao hơn và hiệu quả hơn so với IC Max485.
Chip ARM được cấp xung clock từ nguồn thạch anh ngoài (8MHz)
Mạch thu được cấp nguồn nuôi 3,3V (do chip ARM hoạt động ở điện áp 3,3V) được lấy từ mạch điều khiển trung tâm
Sơ đồ nguyên lý mạch đếm người thu được chỉ ra trong Hình 2.2:
Hình 2.2 Sơ đồ nguyên lý mạch đếm người thu 2.3.2 Thiết kế mạch điều khiển động cơ BLDC
Mỗi tủ Slave và Outmost Slave trong hệ thống được trang bị động cơ BLDC 120W 24VDC có hộp số tỉ lệ 1:50, trong khi tủ Master không có động cơ do tính cố định của nó Động cơ này được điều khiển thông qua bộ điều khiển BLDC MOTOR Driver, như thể hiện trong Hình 2.3.
Hình 2.3 Động cơ BLDC 120W có hộp số và Driver động cơ
Mạch điều khiển động cơ BLDC được thiết kế để điều chỉnh tốc độ động cơ dựa trên quãng đường đã di chuyển, đồng thời tính toán quãng đường này Các khối chức năng trong mạch bao gồm nhiều thành phần quan trọng nhằm tối ưu hóa hiệu suất hoạt động của động cơ.
Chip điều khiển được sử dụng trong mạch là chip ARM STM32F030F4P6 Cortex-M0 (giống với chip được sử dụng trong mạch đếm người thu)
Tín hiệu giữa Driver và mạch điều khiển động cơ được cách ly nhờ IC TXS0108, do chip ARM hoạt động ở điện áp 3,3V trong khi mức logic cao trên chân tín hiệu của Driver là 5V.
Ngoài ra, để phát hiện quá tải trong quá trình động cơ di chuyển tôi sử dụng
IC đo dòng ACS712 cung cấp dữ liệu về dòng điện qua động cơ, được cách ly bởi IC HCPL-7800 Sau đó, tín hiệu này được khuếch đại thông qua IC OP-AMP MCP601 trước khi truyền đến chip ARM.
Mạch điều khiển động cơ kết nối với mạch điều khiển trung tâm thông qua giao tiếp UART, tuân theo chuẩn RS485 2 dây Dữ liệu được truyền và nhận giữa hai mạch được bảo vệ an toàn nhờ vào IC cách ly quang 6N137.
❖ Khối nguồn: Mạch điều khiển động cơ BLDC được cấp nguồn từ 2 nơi:
- Nguồn 24VDC cấp nguồn cho Driver được lấy từ nguồn tổ ong OMRON 220VAC/24VDC 14,6A
Nguồn 5VDC cung cấp cho phần điều khiển, bao gồm chip ARM, các IC và chân điều khiển trên Driver, được lấy từ nguồn cách ly trên mạch điều khiển trung tâm Nguồn này sau đó được cách ly thông qua IC nguồn cách ly DC/DC Traco TBA2-0511 trước khi được hạ xuống 3,3V bằng IC nguồn AMS1117 để cấp nguồn cho chip.
Sơ đồ nguyên lý mạch điều khiển động cơ được chỉ ra trong Hình 2.4:
Hình 2.4 Sơ đồ nguyên lý mạch điều khiển động cơ BLDC
2.3.3 Thiết kế mạch điều khiển trung tâm
Mạch điều khiển trung tâm sẽ được thiết kế đồng nhất cho ba loại tủ trong hệ thống, sử dụng chip ARM STM32F407VGT6 Cortex-M4 Mỗi loại tủ lưu trữ sẽ kết nối với các ngoại vi riêng biệt thông qua mạch điều khiển trung tâm tương ứng.
❖ Các ngoại vi kết nối với mạch điều khiển trung tâm tại tủ Master
- 2 cảm biến khí NH3 MQ135 sử dụng tín hiệu digital được đặt bên trong và bên ngoài tủ
- 2 cảm biến nhiệt độ, độ ẩm SHT30 giao tiếp theo chuẩn I2C được đặt bên trong và bên ngoài tủ
- 1 máy tính công nghiệp IPC (Industrial Panel PC) Advantech PPC3100S-PBE 10 inch cảm ứng điện dung giao tiếp theo chuẩn truyền thông RS485 2 dây có cách ly
- 2 quạt gió 220VAC được điều khiển thông qua relay
- 1 công tắc hành trình phát hiện tủ bị khóa cơ
- 1 mạch led 7 thanh báo số tủ (chỉ lấy nguồn từ mạch điều khiển trung tâm)
❖ Các ngoại vi kết nối với mạch điều khiển trung tâm tại tủ Slave
- 1 màn hình công nghiệp Weintek 8102iP 10 inch cảm ứng điện trở giao tiếp theo chuẩn truyền thông RS485 2 dây có cách ly
- 1 mạch điều khiển động cơ BLDC kết nối theo giao tiếp UART được thiết kế theo chuẩn truyền thông RS485 2 dây có cách ly
- 1 mạch đếm người thu kết nối theo giao tiếp UART được thiết kế theo chuẩn truyền thông RS485 2 dây có cách ly
- 1 mạch đếm người phát (chỉ lấy nguồn từ mạch điều khiển trung tâm)
- 1 mạch led 7 thanh báo số tủ (chỉ lấy nguồn từ mạch điều khiển trung tâm)
- 1 cảm biến khí NH3 MQ135 sử dụng tín hiệu digital được đặt bên trong tủ
- 1 cảm biến nhiệt độ, độ ẩm SHT30 giao tiếp theo chuẩn I2C được đặt bên trong tủ
- 2 cảm biến tiệm cận điện cảm OMRON sử dụng tín hiệu digital được đặt ở 2 bên đầu tủ
- 1 cảm biến hồng ngoại phát hiện tài liệu nhô sử dụng tín hiệu digital được đặt theo dọc tủ
- 1 công tắc hành trình phát hiện tủ bị khóa cơ
- 1 dải đèn led chiếu sáng
❖ Các ngoại vi kết nối với mạch điều khiển trung tâm tại tủ Outmost Slave
- 1 màn hình công nghiệp Weintek 8102iP 10 inch cảm ứng điện trở giao tiếp theo chuẩn truyền thông RS485 2 dây có cách ly
- 1 mạch điều khiển động cơ BLDC kết nối theo giao tiếp UART được thiết kế theo chuẩn truyền thông RS485 2 dây có cách ly
- 1 mạch đếm người thu kết nối theo giao tiếp UART được thiết kế theo chuẩn truyền thông RS485 2 dây có cách ly
- 1 mạch đếm người phát (chỉ lấy nguồn từ mạch điều khiển trung tâm)
- 1 mạch led 7 thanh báo số tủ (chỉ lấy nguồn từ mạch điều khiển trung tâm)
- 1 cảm biến khí NH3 MQ135 sử dụng tín hiệu digital được đặt bên trong tủ
- 1 cảm biến nhiệt độ, độ ẩm SHT30 giao tiếp theo chuẩn I2C được đặt bên trong tủ
- 1 cảm biến tiệm cận điện cảm OMRON sử dụng tín hiệu digital được đặt ở một bên đầu tủ
- 1 cảm biến hồng ngoại phát hiện tài liệu nhô sử dụng tín hiệu digital được đặt theo dọc tủ
- 1 công tắc hành trình phát hiện tủ bị khóa cơ
- 1 dải đèn led chiếu sáng
- 1 công tắc hành trình phát hiện giới hạn quãng đường mà tủ có thể đạt được
Các chip ARM trong các mạch điều khiển trung tâm giao tiếp với nhau qua truyền thông CAN có cách ly
Toàn bộ ngoại vi kết nối với chip ARM được cách ly và lọc nhiễu qua mạch lọc thông thấp RC, giúp đảm bảo tín hiệu vào chip ARM ít bị ảnh hưởng bởi nhiễu Vì lý do này, nguồn cấp cho mạch điều khiển trung tâm cũng được thiết kế sử dụng IC nguồn cách ly.
Các nguồn cách ly được tạo ra trong mạch điều khiển trung tâm gồm có:
- Nguồn cách ly 24VDC/5VDC (24VDC lấy từ nguồn tổ ong)
- Nguồn cách ly 5VDC/5VDC cấp nguồn cho chip ARM
- Nguồn cách ly 5VDC/5VDC cấp nguồn cho truyền thông CAN
- Nguồn cách ly 5VDC/5VDC cấp nguồn cho truyền thông RS485
- Nguồn cách ly 5VDC/5VDC cấp nguồn cho truyền thông UART
Trong đó, nguồn cách ly 24VDC/5VDC được sử dụng là module nguồn
MEANWELL NSD15-12S5 còn nguồn cách ly 5VDC/5VDC được sử dụng là IC
Sơ đồ nguyên lý thiết kế mạch điều khiển trung tâm được chỉ ra trong các hình dưới đây:
Hình 2.5 Nguồn cấp cho toàn bộ mạch điều khiển trung tâm
Hình 2.6 Sơ đồ nguyên lý thiết kế chip ARM, truyền thông CAN, RS485 2 dây
Hình 2.7 Sơ đồ nguyên lý kết nối với các ngoại vi (1)
Hình 2.8 Sơ đồ nguyên lý kết nối với các ngoại vi (2)
T ỔNG KẾT CHƯƠNG 2
Tóm lại, chương 2 đã cung cấp cái nhìn tổng quan về các mảng mạch trong hệ thống lưu trữ thông minh Trong phạm vi của luận văn, tôi chỉ giới thiệu sơ lược về thiết kế mạch cho các mảng mạch sử dụng chip ARM, mà không đi sâu vào phân tích và lựa chọn thiết bị, linh kiện cho các mảng mạch này.
Sơ đồ thiết kế cho các mảng mạch sử dụng chip ARM cung cấp cái nhìn tổng quan về các ngoại vi và cách kết nối của chúng Điều này là cơ sở quan trọng cho việc phát triển ý tưởng và phần mềm cho các mảng mạch, sẽ được trình bày chi tiết trong các chương tiếp theo.
3.1 Phân tích và lựa chọn hướng tiếp cận
Hệ thống lưu trữ thông minh được phát triển thành một hệ thống nhúng với chip điều khiển ARM STM32F407VGT6 Cortex-M4 cho mạch điều khiển trung tâm và ARM STM32F030F4P6 Cortex-M0 cho mạch đếm người và mạch điều khiển động cơ BLDC Nhiệm vụ quan trọng là phát triển code nhúng cho các dòng chip này nhằm xử lý các nhiệm vụ và chu trình hoạt động của từng tủ lưu trữ cũng như toàn bộ hệ thống.
Tùy thuộc vào đặc thù của ba loại tủ lưu trữ (Master, Slave và Outmost Slave), các chip điều khiển ARM STM32F407VGT6 trên mạch điều khiển trung tâm sẽ được thiết kế và phát triển các thuật toán, chương trình nhúng chuyên biệt để tối ưu hóa hiệu suất và chức năng của từng loại tủ.
3.1.1 Phương pháp lập trình nhúng
Việc sử dụng chip ARM STM32 trong hệ thống lưu trữ thông minh giúp đồng bộ hóa và nhất quán quá trình phát triển phần mềm Điều quan trọng là lựa chọn định hướng phát triển code nhúng phù hợp với hệ thống và dòng chip Hai phương pháp phát triển code nhúng hỗ trợ chip ARM STM32 bao gồm lập trình siêu vòng lặp và lập trình hệ điều hành thời gian thực.
❖ Phương pháp lập trình siêu vòng lặp (Super-loop)
Siêu vòng lặp là một cấu trúc chương trình bao gồm một vòng lặp vô hạn
Super-loop cho phép thực hiện các câu lệnh và đoạn lệnh một cách tuần tự từ trên xuống dưới, với chu trình công việc lặp lại vô hạn Các đoạn chương trình xử lý ngắt (ISR) được đặt ở vị trí riêng biệt, giúp bỏ qua tính tuần tự của vòng lặp vô hạn, vì tín hiệu ngắt là trạng thái không mong muốn và luôn phải được ưu tiên xử lý khi xảy ra Trong bài viết này, tôi sẽ sử dụng ký hiệu ISR để chỉ chương trình phục vụ xử lý ngắt.
XÂY DỰNG MÔI TRƯỜNG NHÚNG HỆ ĐIỀU HÀNH THỜI
P HÂN TÍCH VÀ LỰA CHỌN HƯỚNG TIẾP CẬN
Hệ thống lưu trữ thông minh được xây dựng trên nền tảng hệ thống nhúng với chip điều khiển ARM STM32F407VGT6 Cortex-M4 cho mạch điều khiển trung tâm và ARM STM32F030F4P6 Cortex-M0 cho mạch đếm người và điều khiển động cơ BLDC Nhiệm vụ quan trọng là phát triển mã nhúng cho các chip này nhằm xử lý các chức năng và chu trình hoạt động của từng tủ lưu trữ cũng như toàn bộ hệ thống.
Tùy thuộc vào đặc thù của từng loại tủ lưu trữ, bao gồm Master, Slave và Outmost Slave, các chip điều khiển ARM STM32F407VGT6 trên mạch điều khiển trung tâm sẽ được thiết kế và phát triển với các thuật toán và chương trình nhúng chuyên biệt.
3.1.1 Phương pháp lập trình nhúng
Việc sử dụng chip ARM STM32 trong hệ thống lưu trữ thông minh giúp đồng bộ hóa và nhất quán quá trình phát triển phần mềm Điều quan trọng là lựa chọn định hướng phát triển code nhúng phù hợp với hệ thống và dòng chip Các phương pháp phát triển code nhúng cho chip ARM STM32 bao gồm lập trình siêu vòng lặp và lập trình hệ điều hành thời gian thực.
❖ Phương pháp lập trình siêu vòng lặp (Super-loop)
Siêu vòng lặp là một cấu trúc chương trình bao gồm một vòng lặp vô hạn
Super-loop cho phép thực hiện các câu lệnh một cách tuần tự từ trên xuống dưới, với chu trình công việc lặp lại vô hạn Các đoạn chương trình xử lý ngắt (ISR) được đặt riêng biệt, nhằm bỏ qua tính tuần tự của vòng lặp vô hạn, vì tín hiệu ngắt là trạng thái không mong muốn và cần được ưu tiên xử lý ngay khi xảy ra Từ giờ, tôi sẽ sử dụng ký hiệu ISR để chỉ các chương trình phục vụ xử lý ngắt.
CHƯƠNG 3 XÂY DỰNG MÔI TRƯỜNG NHÚNG
HỆ ĐIỀU HÀNH THỜI GIAN THỰC TRÊN
Hình 3.1 Pseudo code của siêu vòng lặp (Super-loop)
• Ưu điểm của Super-loop
Phương pháp lập trình Super loop nổi bật với tính đơn giản, điều này khiến nó trở thành lựa chọn lý tưởng cho các hệ thống nhúng nhỏ và có cấu trúc đơn giản.
- Super-loop rất dễ sử dụng, dễ chỉnh sửa, dễ gỡ lỗi và dễ lập trình với hầu hết các lập trình viên
- Super-loop ít bị phụ thuộc vào phần cứng
• Nhược điểm của Super-loop
Các nhiệm vụ quan trọng cần được thực hiện trong hàm ngắt (ISR) có thể làm cho các hàm này trở nên phức tạp và tốn thời gian xử lý tín hiệu ngắt Hơn nữa, việc xử lý ngắt có thể bị chồng chéo và xảy ra một cách không lường trước, đặc biệt khi nhiều ngắt xảy ra đồng thời, dẫn đến nguy cơ hệ thống bị treo.
Dữ liệu giữa Super-loop và ISR được trao đổi thông qua các biến toàn cục, vì vậy lập trình viên cần đảm bảo tính nhất quán cho các biến này.
- Super Loop có thể dễ dàng đồng bộ với timer nhưng:
✓ Nếu hệ thống yêu cầu nhiều chu kỳ timer khác nhau thì nó rất khó đáp ứng
✓ Việc phân chia thành nhiều hàm timer làm tốn thời gian để xử lý và có thể vượt quá chu kỳ của Super-loop
✓ Tạo ra các đoạn chương trình ứng dụng khó hiểu
Super-loop làm cho hệ thống trở nên phức tạp và khó mở rộng, vì một thay đổi nhỏ trong thứ tự thực hiện các hàm có thể gây ra những lỗi không mong muốn.
❖ Phương pháp lập trình hệ điều hành thời gian thực RTOS (Real Time Operating System)
Thời gian thực (Real-time) là thuật ngữ chỉ quá trình mà hệ thống xử lý thông tin với tốc độ gần như ngay lập tức hoặc chỉ có độ trễ rất ngắn.
Hệ điều hành thời gian thực (RTOS) là một loại hệ điều hành được thiết kế để xử lý các ứng dụng thời gian thực mà không có sự chậm trễ Thời gian xử lý được yêu cầu thường tính bằng phần mười giây hoặc ngắn hơn, và các hệ thống này có thể hoạt động dựa trên sự kiện điều khiển hoặc chia sẻ thời gian Trong các hệ thống điều khiển sự kiện, nhiệm vụ được chuyển đổi dựa trên ưu tiên, trong khi các hệ thống chia sẻ thời gian thực hiện công việc theo xung nhịp đồng hồ.
RTOS chia chương trình thành các nhiệm vụ độc lập và thực hiện lập lịch trình cho chúng theo yêu cầu thông qua bộ lập lịch.
Hình 3.2 Thành phần của RTOS
- Task Scheduling (lập lịch trình)
✓ Các task được thực hiện theo mức độ ưu tiên (priority) hoặc chia sẻ cùng mức độ ưu tiên (time-slicing)
✓ Đáp ứng được các yêu cầu về thời gian thực
Inter-task communication allows tasks to share data and utilize a common resource, enhancing collaboration and efficiency within a system.
Đồng bộ hóa và loại trừ lẫn nhau là quá trình quan trọng trong quản lý các tác vụ, cho phép các task tương tác và kích hoạt hoặc kết thúc các task khác Điều này đảm bảo rằng chỉ một task được thực hiện tại một thời điểm, giúp duy trì tính nhất quán và hiệu quả trong hệ thống.
- Memory management (quản lý bộ nhớ): Có thể phân chia bộ nhớ cho từng task một cách dễ dàng
- Scalability (khả năng mở rộng): các thư viện được thêm vào tại thời điểm biên dịch code giúp giảm kích thước của RTOS
- Một số đặc điểm khác: date/time, timer (bộ đếm thời gian), networking, security (bảo mật),… cũng được hỗ trợ
Hệ điều hành điều phối các chu trình hoạt động của hệ thống thông qua bộ lập lịch, phân bổ các tác vụ với mức ưu tiên khác nhau hoặc cùng mức ưu tiên, cho phép các tác vụ được thực hiện gần như đồng thời.
- Các task được gọi khi cần thiết nhằm đảm bảo luồng chương trình và phản ứng sự kiện tốt hơn
- Các sự kiện và ISR được xử lý trong một khoảng thời gian nhất định
- Cho phép quản lý các nguồn tài nguyên dùng chung như dữ liệu, bộ nhớ và phần cứng giữa các task một cách khá dễ dàng
- Mỗi task được cấp phát một vùng nhớ có kích thước xác định, điều này cho phép tính toán được dung lượng bộ nhớ đã được sử dụng
- Tính năng quản lý hệ thống cho phép người lập trình tập trung vào phát triển ứng dụng hơn là quản lý nguồn tài nguyên
- Phù hợp với những hệ thống phức tạp, khắc phục được hầu hết các nhược điểm của phương pháp Super-loop
- Công việc lập trình phức tạp hơn, đòi hỏi người lập trình phải tổ chức hệ thống thật chặt chẽ và logic
- Yêu cầu có nền tảng kiến thức về kiến trúc CPU, kiến trúc bộ nhớ,…
- Thử thách trong việc quản lý tài nguyên dùng chung giữa các task
❖ Đánh giá và lựa chọn phương pháp lập trình
Phân tích chi tiết hai phương pháp lập trình Super-loop và RTOS cho thấy rõ ràng rằng lập trình nhúng với hệ điều hành thời gian thực RTOS mang lại nhiều ưu điểm vượt trội.
C Ơ SỞ PHÁT TRIỂN HỆ ĐIỀU HÀNH THỜI GIAN THỰC RTOS
❖ Phân loại RTOS (dựa trên tiêu chí bản quyền):
- Hệ điều hành sử dụng miễn phí (Open Source RTOS)
- Hệ điều hành trả phí (Licensed RTOS)
Bảng 3.1 Bảng so sánh Open Source RTOS và Licensed RTOS
Tiêu chí Open Source RTOS Licensed RTOS Đặc điểm
Mã nguồn miễn phí cho phép người dùng tự do sửa đổi, cải tiến và phát triển phần mềm mà không cần xin phép, theo các nguyên tắc trong giấy phép phần mềm nguồn mở (GPL) Điều này trái ngược với phần mềm nguồn đóng, nơi người dùng không có quyền thực hiện các thay đổi tương tự.
Phần mềm bản quyền yêu cầu người dùng trả phí để sử dụng và không cho phép sửa đổi mã nguồn Người dùng phải tuân thủ các quy tắc sử dụng của nhà phát hành Khi áp dụng phần mềm vào sản phẩm thương mại, việc đàm phán với nhà phát hành là cần thiết, và chi phí bản quyền có thể rất cao.
Hệ thống lưu trữ thông minh được thiết kế nhằm đáp ứng nhu cầu lưu trữ ngày càng tăng và yêu cầu bảo mật tài liệu cao của các doanh nghiệp Để sản phẩm có thể thương mại hóa và cho phép người dùng tùy chỉnh hầu hết các chức năng, việc phát triển mã nhúng RTOS trên chip điều khiển là rất cần thiết.
Để khẳng định tính độc quyền của sản phẩm "hệ thống lưu trữ thông minh," nhà sản xuất sẽ phát triển các tính năng đặc biệt chỉ họ mới có thể sử dụng Điều này rất phù hợp với tính thương mại của sản phẩm Để phát triển những tính năng độc quyền này, quá trình phát triển mã nhúng RTOS trên các chip điều khiển cần can thiệp sâu vào mã nguồn RTOS nhằm tạo ra các đoạn mã đặc biệt Do đó, việc sử dụng Open Source RTOS là lựa chọn tối ưu để có thể thoải mái can thiệp vào mã nguồn.
Chính vì vậy, để phát triển code nhúng RTOS trên chip ARM STM32 tôi quyết định sử dụng Open Source RTOS
3.2.2 Cơ sở lựa chọn Open Source RTOS phù hợp với chip ARM
❖ Một số hệ điều hành Open Source RTOS hiện nay (có tiềm năng phát triển) hỗ trợ tốt trên dòng chip ARM STM32 Cortex-M đó là:
Khi phát triển trên chip ARM trong các mảng mạch của hệ thống, việc lựa chọn hệ điều hành phù hợp là rất quan trọng Bài viết này sẽ khám phá những đặc điểm nổi bật của các hệ điều hành thời gian thực, sau đó đưa ra bảng so sánh để giúp người đọc dễ dàng nhận biết sự khác biệt giữa chúng Cuối cùng, tác giả sẽ lựa chọn hệ điều hành tối ưu nhất cho việc phát triển trên chip ARM.
FreeRTOS là một hệ điều hành thời gian thực với nhân mở rộng, được thiết kế dành riêng cho các hệ thống nhúng vừa và nhỏ, phù hợp với những ứng dụng không quá phức tạp.
Hình 3.3 Kiến trúc hệ điều hành thời gian thực FreeRTOS
✓ Nhân (Kernel) FreeRTOS có thể thực thi các task theo mức độ ưu tiên (pre-emptive) hoặc phối hợp thực hiện (co-operative) hoặc cả hai (hybrid configuration options) [5]
✓ Cung cấp độ tin cậy cao về tính toàn vẹn của các đoạn mã
✓ Hỗ trợ lên đến 23 kiến trúc ARM, đặc biệt thích hợp với dòng ARM Cortex-M
✓ FreeRTOS-MPU hỗ trợ tốt cho các dòng chip Cortex-M3, M4 cần bảo vệ bộ nhớ (Memory Protection Unit)
✓ Nhân (Kernel) được thiết kế nhỏ gọn, đơn giản và dễ sử dụng Vùng nhớ dành cho Kernel của FreeRTOS thông thường chỉ là 4-9KB
✓ Cấu trúc tập lệnh linh hoạt và chủ yếu được viết bằng ngôn ngữ C
✓ Hỗ trợ phát triển cho cả task (pre-emptive) và co-routine (non- preemptive)
✓ Rất mạnh trong thực thi tính năng theo dõi
✓ Tùy chọn tính năng phát hiện tràn bộ nhớ
✓ Không bị giới hạn về số lượng các task có thể được tạo
✓ Không bị giới hạn về số lượng mức độ ưu tiên áp dụng cho các task (trừ một vài ứng dụng đặc biệt)
✓ Không bị hạn chế khi gán mức độ ưu tiên cho các task Các task có thể được gán cùng một mức ưu tiên
Data exchange and synchronization between tasks or between tasks and interrupts can be achieved using mechanisms such as Queues, Binary Semaphores, Counting Semaphores, Recursive Semaphores, or Mutexes.
✓ Hỗ trợ nhiều công cụ phát triển và đều miễn phí (Cortex-M3, ARM7, MSP430, H8/S, AMD, AVR, x86 và 8051)
✓ Mã nguồn phần mềm nhúng và bản quyền miễn phí
✓ Có thể phát triển code nhúng trên hệ điều hành Windows (tối ưu nhất là trên LINUX OS)
Trang chủ cung cấp ứng dụng mẫu có sẵn cùng với hướng dẫn chi tiết, giúp người dùng dễ dàng và nhanh chóng tiếp cận cũng như nghiên cứu mã nguồn.
ChibiOS là một môi trường phát triển toàn diện cho ứng dụng nhúng, bao gồm hệ điều hành thời gian thực (RTOS), thư viện phần cứng trừu tượng (HAL), điều khiển ngoại vi, quản lý tệp, và các công cụ hỗ trợ phát triển.
Hình 3.4 Kiến trúc hệ điều hành ChibiOS/RT
- Đặc điểm của ChibiOS/RT
ChibiOS/RT được phát triển nhằm phục vụ cho các ứng dụng thời gian thực trong môi trường nhúng sâu, nơi mà hiệu suất thực thi và kích thước mã lệnh nhỏ gọn là những yếu tố quan trọng hàng đầu.
✓ ChibiOS được thiết kế cho các dòng vi điều khiển 8 bit, 16 bit và 32 bit
ChibiOS cung cấp các thành phần dưới dạng mã nguồn mở với giấy phép GPL3 hoặc Apache2.0, bên cạnh đó còn có tùy chọn bản quyền thương mại Điều này có nghĩa là để khai thác toàn bộ tài nguyên của ChibiOS, các nhà phát triển ứng dụng cần phải mua bản quyền thương mại.
RTOS (Hệ điều hành thời gian thực) nổi bật với độ linh hoạt cao và kích thước nhỏ gọn, nhờ vào kiến trúc được tối ưu hóa cho nhiệm vụ chuyển đổi ngữ cảnh.
“Context switching” cực kỳ hiệu quả
✓ Kernel ưu tiên linh hoạt và hiệu quả và có kích thước vô cùng nhỏ gọn chỉ từ 1.2 KiB đến 5.5 KiB
✓ Kiến trúc tĩnh Mọi thứ được cấp phát bộ nhớ tĩnh tại thời điểm biên dịch chương trình
✓ Khả năng cấp phát động Các thành phần cần cấp phát động được cấp phát một vùng nhớ động nằm trên phần đầu của bộ nhớ
✓ Objects hỗ trợ đa dạng: threads, virtual timers, semaphores, mutexes, condition variables, messages, mailboxes, eventflags
✓ Hỗ trợ thuật toán kế thừa mức ưu tiên trên mutexes
✓ HAL tương thích với nhiều drivers: Port, Serial, ADC, CAN, I2C, MAC, MMC, PWM, SPI, UART
✓ Hỗ trợ nhiều thành phần ngoại vi: uIP, IwIP, FatFs
✓ Hỗ trợ nhiều kiến trúc “target architecture”, trong đó bao gồm dòng ARM Cortex-M
- TinyOS là một hệ điều hành thời gian thực mã nguồn mở được thiết kế cho các thiết bị không dây có công suất tiêu thụ thấp [7]
Hình 3.5 Kiến trúc hệ điều hành thời gian thực TinyOS
✓ TinyOS là hệ điều hành đơn giản và nhỏ gọn
Các ứng dụng trên TinyOS được phát triển bằng ngôn ngữ lập trình nesC, một phương ngữ của C được tối ưu hóa cho các hệ thống nhúng trong mạng cảm biến, nhằm đáp ứng các giới hạn về bộ nhớ.
✓ Được ứng dụng phổ biến trong các mạng cảm biến, mạng khu vực cá nhân, nhà thông minh và đồng hồ, thiết bị di động thông minh
✓ Kích thước nhỏ Mã nguồn của TinyOS rất nhỏ Chương trình được tối ưu hóa để chạy trên bất kỳ thiết bị cụ thể nào
✓ Tính module hóa TinyOS chứa nhiều module, mỗi module thực hiện chức năng cụ thể của chính nó Các module bao gồm “tasks”,
“commands”, “events”, “microcontroller”, “hardware” và “software Các module này giao tiếp với nhau và làm cho các thiết bị không dây hoạt động bình thường
TinyOS có khả năng tái sử dụng cao, cho phép chương trình hoạt động trên các thiết bị tương tự mà không cần thay đổi Điều này đảm bảo tính nhất quán và hiệu quả trong việc triển khai các ứng dụng trên những thiết bị có cùng bản chất.
Sau khi nghiên cứu các hệ điều hành tương thích với chip ARM Cortex-M, chúng tôi sẽ tiến hành xây dựng bảng so sánh giữa các hệ điều hành này.
Bảng 3.2 Bảng so sánh các hệ điều hành thời gian thực
Tiêu chí FreeRTOS ChibiOS TinyOS
Kernel 4-9 KB 1.2-5.5 KiB Rất nhỏ
Queue, Binary semaphore, Counting semaphore, Mutex, Recursive mutex, Task notification,
Queue, Thread, Vitual timer, Semaphore, Mutex, Condition variable, Message, Mailbox, Event flags
Static và Dynamic Static và Dynamic Static
Hỗ trợ tới 40 kiến trúc MCU (23 ARMs)
MCU 8 bit, 16 bit, 32 bit (AVR, Atmel, ARM,…)
Chip điều khiển dung lượng bộ nhớ nhỏ
Ngôn ngữ C và Assembly C và Assembly C và nesC
Trình biên dịch Đa dạng (GCC, IAR, ARMClang, CCS, BCC, MSVC, Keil, RVDS MemMang, MikroC, )
GNU toochain NesC compiler, AVR toolchain, GNU toochain
Port, Serial, ADC, CAN, I2C, MAC, MMC, PWM, SPI, UART
Wireless Wifi Ứng dụng Hệ thống nhúng vừa và nhỏ
Hệ thống nhúng sâu mã lệnh nhỏ gọn
Thiết bị không dây công suất thấp Bản quyền Hoàn toàn miễn phí Một vài tính năng có bản quyền thương mại
Last Version 10.4.1 (release 2020) 20.3.2 (release 2020) 2.1.2 (release 2012)
X ÂY DỰNG MÔI TRƯỜNG NHÚNG
3.3.1 Định hướng môi trường phát triển code nhúng Để phát triển code nhúng hệ điều hành thời gian thực trên chip ARM hiện nay có hai phương pháp đó là:
- Sử dụng nền tảng môi trường phát triển tích hợp (Integrated Environment Development (IDE)) có sẵn
- Phát triển môi trường nhúng riêng (không sử dụng IDE có sẵn)
Tùy thuộc vào độ phức tạp của hệ thống nhúng, việc lựa chọn phương pháp phát triển phù hợp cho dự án là rất quan trọng Chúng ta sẽ khám phá cả hai phương pháp này để hiểu rõ hơn về cách áp dụng chúng.
35 lựa chọn phương án phát triển phù hợp trên chip ARM STM32 cho hệ thống lưu trữ thông minh
❖ Phát triển code nhúng sử dụng IDE
Môi trường phát triển tích hợp (IDE) là một loại phần mềm máy tính có công dụng giúp đỡ các lập trình viên trong việc phát triển phần mềm [8]
Các môi trường phát triển tích hợp thường bao gồm:
- Một trình soạn thảo code (source code editor)
- Trình biên dịch (compiler) và/hoặc trình thông dịch (interpreter)
Công cụ xây dựng tự động là một phần mềm giúp biên dịch hoặc thông dịch mã nguồn, thực hiện liên kết và tự động chạy chương trình.
Bên cạnh đó, hệ thống quản lý phiên bản và các công cụ hỗ trợ cũng có thể được tích hợp để tối ưu hóa quy trình phát triển giao diện người dùng đồ họa (GUI).
Các IDE phổ biến để phát triển code nhúng trên chip ARM Cortex-M bao gồm EWARM V7, EWARM V8, MDK-ARM V4 (Keil uVision4), MDK-ARM V5 (Keil uVision5), TrueSTUDIO, và SW4STM32 Trong bài viết này, tôi sẽ tập trung vào MDK-ARM V5 (Keil uVision5), một trong những IDE được lập trình viên ưa chuộng nhất Bên cạnh đó, tôi sẽ sử dụng phần mềm STM32CUBEMX để cấu hình cho chip ARM Cortex-M Cả hai phần mềm này đều tương thích với nền tảng Windows và dễ sử dụng cho người dùng.
Quá trình phát triển code nhúng hệ điều hành thời gian thực FreeRTOS được chỉ ra trong Hình 3.6 dưới đây
STM32CUBEMX (Software) (Configuration CHIP)
STM32F407VGT6 (Target) (Central Control Circuit)
Hình 3.6 Phát triển code nhúng trên chip ARM sử dụng IDE
IDE MDK-ARM V5 sử dụng gói thư viện HAL (Hardware Abstraction Layer) viết bằng ngôn ngữ C, cho phép phát triển mã nguồn hiệu quả Mọi mã nguồn được xây dựng dựa trên thư viện HAL, cùng với mã cấu hình chip tự động sinh ra từ phần mềm STM32CUBEMX và mã FreeRTOS để phát triển hệ điều hành Cuối cùng, mã này sẽ được biên dịch thành tệp thực thi có định dạng ".bin" trước khi nhúng vào chip ARM STM32 Cortex.
Mạch nạp chương trình ST-Link V2 cho phép M thực hiện toàn bộ quá trình phát triển, biên dịch và gỡ lỗi code trong môi trường IDE MDK-ARM V5.
❖ Phát triển code nhúng không sử dụng IDE
Việc phát triển code mà không sử dụng IDE đòi hỏi lập trình viên tự xây dựng môi trường làm việc cho các công đoạn như phát triển, biên dịch, nạp và gỡ lỗi code Điều này tương tự như việc thiết kế một IDE cơ bản Để thực hiện các công việc này, cần một hệ điều hành mã nguồn mở, vì nó cho phép can thiệp sâu vào mã nguồn hệ thống Do đó, Windows không còn phù hợp làm nền tảng phát triển Tôi sẽ sử dụng hệ điều hành mã nguồn mở mạnh mẽ là LINUX OS, cụ thể là Ubuntu OS, để xây dựng môi trường nhúng code cho hệ điều hành thời gian thực FreeRTOS trên chip ARM.
Hình 3.7 Hệ điều hành Ubuntu
Toàn bộ quá trình phát triển code nhúng không dùng IDE trên nền tảng hệ điều hành Ubuntu (Ubuntu OS) được chỉ ra trong Hình 3.8:
STM32F407VGT6 (Target) (Central Control Circuit) ARM-GCC Compiler
Linker Script (Programming language) objcopy
Object Files (.o extension) (Machine Code)
Images.elf (Executable and Linkable Format)
ST-LINK V2 (Hardware + Software) Linker
Target Config (Jim-TCL Programming language)
Hình 3.8 Phát triển code nhúng trên chip ARM không dùng IDE
Source code được phát triển dựa trên thư viện Libopencm3 và hệ điều hành FreeRTOS, sử dụng ngôn ngữ lập trình C Quá trình biên dịch code được thực hiện bằng Makefile và trình biên dịch ARM-GCC, trong khi phân vùng bộ nhớ trên chip được thực hiện qua LinkerScript Sau khi biên dịch, code sẽ được chuyển đổi thành file thực thi với đuôi ".bin" và được nạp vào chip thông qua phần mềm ST-Link và mạch nạp ST-LINK V2 Để gỡ lỗi chương trình, code sử dụng ngôn ngữ Jim-TCL, cho phép chạy chương trình thực thi trên phần mềm OpenOCD.
❖ Đánh giá hai hướng phát triển
Bảng 3.3 Bảng so sánh phát triển code nhúng dùng IDE và không dùng IDE
Tiêu chí Phát triển code sử dụng IDE Phát triển code không sử dụng
- Phần mềm cấu hình chip và sinh code tự động STM32CUBEMX giúp việc lập trình đơn giản và dễ dàng hơn
IDE KEIL C Uvision V5 là công cụ lý tưởng giúp lập trình viên dễ dàng thực hiện việc lập trình, biên dịch, nạp mã xuống chip và gỡ lỗi Tất cả các tính năng cần thiết đã được tích hợp sẵn trong phần mềm KEIL C, mang lại sự tiện lợi tối đa cho người dùng.
Các lập trình viên chịu trách nhiệm cấu hình chip và hệ điều hành RTOS, giúp tối ưu hóa chương trình và nâng cao hiệu suất thực thi của chip.
- Phù hợp với phát triển những hệ thống lớn, dễ dàng phân công công việc cho các thành viên trong nhóm phát triển
Cả hai phần mềm đều dễ sử dụng và lý tưởng cho việc phát triển ứng dụng thực tế nhờ vào tính đơn giản và khả năng đóng gói, phù hợp với các hệ thống nhỏ.
- Việc kế thừa code, nâng cấp hệ thống dễ dàng hơn bởi không phụ thuộc vào IDE
- Chương trình được xây dựng hoàn toàn bởi người lập trình, do đó dễ quản lý, debug code
- Sinh code tự động tạo ra những đoạn code rườm rà, không cần thiết, làm tốn tài nguyên, tăng thời gian thực thi của chip
- Sử dụng STM32CUBEMX + Keil C khiến việc nâng cấp hệ thống trở nên khó khăn bởi các khối chương trình khó kiểm soát
- Chuyển giao code gặp khó khăn bởi người thừa kế phải download cùng phiên bản IDE, các gói thư viện nếu không muốn bị xung đột phiên bản
Các phần mềm IDE đều yêu cầu người dùng mua bản quyền để đảm bảo đầy đủ tính năng Đặc biệt, IDE KeilC uVision5 có hạn chế lớn, cho phép gỡ lỗi chỉ với mã nguồn dưới 32KB nếu không có bản quyền.
- Khó phân công công việc cho team phát triển (chỉ nên giao cho
1 người lập trình cho toàn bộ hệ thống)
Nhóm lập trình không sử dụng IDE, dẫn đến việc họ phải thực hiện nhiều công việc hơn, bao gồm viết mã nguồn, biên dịch code, phân vùng bộ nhớ trên chip, nạp code và debug.
- Sử dụng nhiều công cụ phát triển, nhiều ngôn ngữ lập trình (bao gồm: C/C++, Makefile, Linkerscript, FreeRTOS, Jim- TCL programming languages)
Việc phát triển code nhúng không sử dụng IDE mang lại nhiều ưu điểm vượt trội so với việc dùng IDE, đặc biệt khi kết hợp với hệ thống lưu trữ thông minh phục vụ mục đích thương mại Điều này giúp giảm thiểu sự phụ thuộc vào các phần mềm bản quyền từ bên thứ ba.
T ỔNG KẾT CHƯƠNG 3
Chương 3 đã phân tích các hệ điều hành thời gian thực phù hợp với chip ARM Cortex-M và lựa chọn FreeRTOS cho phát triển code nhúng trên hệ thống lưu trữ thông minh Tiếp theo, bài viết đã xem xét các môi trường phát triển code nhúng, quyết định sử dụng môi trường không IDE trên nền tảng Ubuntu Cuối cùng, môi trường nhúng cho chip được xây dựng với các gói phần mềm, thư viện và mã nguồn phù hợp.
Sau khi hoàn tất việc xây dựng môi trường nhúng, bước tiếp theo là phát triển thuật toán cho các tác vụ trên hệ điều hành thời gian thực FreeRTOS, sẽ được trình bày trong chương tiếp theo.
As outlined in section 3.2.2, the real-time operating system FreeRTOS features a kernel capable of executing tasks in a pre-emptive manner, a co-operative manner, or through hybrid configuration options In the context of FreeRTOS, pre-emptive execution is referred to as "tasks," while co-operative execution is termed "co-routines." Therefore, I will use "tasks" to denote pre-emptive execution and "co-routines" to indicate co-operative execution, aligning with the terminology used by FreeRTOS.
Một ứng dụng có thể được phát triển chỉ với tasks, chỉ với co-routines, hoặc kết hợp cả hai; tuy nhiên, do việc sử dụng các hàm API khác nhau, không thể truyền dữ liệu giữa tasks và co-routines bằng queue hoặc semaphore API (Giao diện lập trình ứng dụng) là các hàm đã được xây dựng sẵn, giúp lập trình viên phát triển mã nguồn cho dự án Vì lý do này, việc phát triển thuật toán cho các tác vụ trong hệ thống lưu trữ thông minh sẽ chỉ sử dụng tasks hoặc co-routines riêng biệt.
Ứng dụng thời gian thực sử dụng hệ điều hành thời gian thực (RTOS) được tổ chức thành các nhiệm vụ độc lập, gọi là "tasks" Mỗi task thực hiện công việc riêng mà không phụ thuộc vào các task khác trong hệ thống hoặc bộ lập lịch Chỉ một task được thực hiện tại một thời điểm, và bộ lập lịch RTOS quyết định task nào sẽ được thực hiện tiếp theo Điều này cho phép Scheduler kiểm soát thời gian bắt đầu và dừng của mỗi task, hoán đổi chúng khi ứng dụng chạy Mỗi task có vùng nhớ riêng, và khi một task dừng, dữ liệu của nó sẽ được lưu trữ và có thể khôi phục khi task đó tiếp tục thực thi.
❖ Đặc điểm của “Co-routine”
Co-routine có đặc điểm gần tương tự với tasks nhưng có một vài khác biệt sau: