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

BÁO cáo môn học hệ điều HÀNH NHÚNG THỜI GIAN THỰC đề tài thiết kế đồng hồ thời gian thực có LED nháy theo nhạc sử dụng hệ điều hành FREERTOS

45 36 0

Đ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 đề Thiết kế đồng hồ thời gian thực có LED nháy theo nhạc sử dụng hệ điều hành FreeRTOS
Tác giả Nguyễn Đình Hiếu, Nguyễn Đăng Toàn, Nguyễn Công Tùng
Người hướng dẫn Lê Thị Hồng Vân
Trường học Học viện Kỹ thuật Mật mã, Khoa Điện Tử - Viễn Thông
Chuyên ngành Hệ điều hành nhúng thời gian thực
Thể loại Báo cáo môn học
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 45
Dung lượng 1,64 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG I: TỔNG QUAN VỀ HỆ THỐNG (6)
    • 1.1. Đặt vấn đề (6)
    • 1.2. Lý do chọn đề tài (6)
    • 1.3. Mục đích nghiên cứu đề tài (6)
    • 1.4. Giải pháp thiết kế (6)
  • CHƯƠNG II: CƠ SỞ LÝ THUYẾT (8)
    • 2.1. Tìm hiểu về hệ điều hành nhúng thời gian thực FreeRTOS (8)
      • 2.1.1 Lịch sử phát triển của hệ điều hành nhúng thời gian thực FreeRTOS (8)
      • 2.1.2. Cách thức hoạt động của FreeRTOS (9)
      • 2.1.3. Các chức năng của FreeRTOS (11)
    • 2.2. Giới thiệu các thiết bị phần cứng sử dụng (12)
      • 2.2.1. Kit Arduino UNO R3 (12)
      • 2.2.2. Module thời gian thực Module Tiny RTC I2C (19)
      • 2.2.3. Module LED P10 (20)
      • 2.2.4. Module cảm biến âm thanh (22)
  • CHƯƠNG III: THIẾT KẾ VÀ THI CÔNG SẢN PHẨM (25)
    • 3.1. Thiết kế và thi công phần cứng (25)
    • 3.2. Thiết kế và thi công phần mềm (27)
      • 3.2.1. Chương trình hiển thị lên LED P10 (27)
      • 3.2.2. Thiết kế chương trình chính (29)
      • 3.2.3. Chương trình điều khiển sản phẩm (31)
  • CHƯƠNG IV: TỔNG KẾT (33)
    • 4.1. Nhận xét, đánh giá (33)
    • 4.2. Hướng phát triển (33)
    • 4.3. Kết luận (33)
  • PHỤ LỤC (35)

Nội dung

HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA ĐIỆN TỬ- VIỄN THÔNGBÁO CÁO MÔN HỌC HỆ ĐIỀU HÀNH NHÚNG THỜI GIAN THỰC Đề tài: “Thiết kế đồng hồ thời gian thực có LED nháy theo nhạc sử dụng hệ điều hành FR

TỔNG QUAN VỀ HỆ THỐNG

Đặt vấn đề

Khoa học kỹ thuật ngày càng phát triển đã thúc đẩy sự ra đời của các loại đồng hồ hiện đại nhằm cung cấp thời gian rõ ràng và chính xác hơn Đồng hồ số ra đời với nhiều tính năng vượt trội so với đồng hồ cơ truyền thống và các loại đồng hồ cũ, đặc biệt về mặt kinh phí, độ chính xác và các chức năng đa dạng Đồng hồ số mang lại trải nghiệm tiện lợi, chính xác và phù hợp với cuộc sống hiện đại, trở thành lựa chọn phổ biến cho người dùng đòi hỏi công nghệ tiên tiến và tính năng đa dạng.

Lý do chọn đề tài

Hiện nay, thị trường chủ yếu cung cấp các loại đồng hồ kim và đồng hồ số đơn giản dùng để xem giờ hàng ngày Tuy nhiên, thiết kế đồng hồ thời gian thực tích hợp LED nháy theo nhạc không chỉ giúp người dùng theo dõi thời gian một cách tiện lợi mà còn mang lại nét mới lạ, độc đáo và thẩm mỹ cao Sản phẩm này còn dễ sử dụng, phù hợp với nhiều đối tượng người dùng và đang ngày càng được ưa chuộng.

Thiết bị hoạt động dựa trên vi điều khiển, giúp xử lý chính xác cao và có khả năng giao tiếp trực tiếp với các module phổ biến thành hệ thống thống nhất Nhờ đó, thiết bị hỗ trợ người dùng và các thành viên trong gia đình trong việc sắp xếp, quản lý thời gian hiệu quả và chính xác hơn, mang lại độ tin cậy cao trong công việc hàng ngày.

Mục đích nghiên cứu đề tài

Thiết kế và thi công đồng hồ thời gian thực với khả năng hiển thị chính xác thời gian, mang lại sự tiện lợi và độ tin cậy cao cho người dùng Đồng hồ còn tích hợp tính năng LED nháy theo nhạc, tạo hiệu ứng sinh động và bắt mắt Giao diện của đồng hồ được thiết kế đẹp mắt, dễ sử dụng, phù hợp với nhiều không gian và phong cách trang trí Sản phẩm kết hợp giữa công nghệ hiện đại và thẩm mỹ cao, đáp ứng nhu cầu sử dụng linh hoạt trong cuộc sống hàng ngày.

Giải pháp thiết kế

Hệ thống được thiết kế gồm 6 khối: Khối nguồn, khối thời gian, khối vi điều khiển, khối hiển thị, khối điều khiển, khối cảm biến âm thanh.

Hình 1: Sơ đồ khối Chức năng của các khối:

- Khối nguồn: cung cấp nguồn hoạt động cho hệ thống vi điều khiển.

Khối xử lý trung tâm đóng vai trò là bộ não của hệ thống, nhận và xử lý tín hiệu từ khối thời gian thực cũng như cảm biến âm thanh để hiển thị thông tin chính xác trên màn hình Nó còn tiếp nhận các tín hiệu điều khiển để điều chỉnh trạng thái hoạt động của toàn bộ hệ thống, đảm bảo hoạt động trơn tru và hiệu quả.

- Khối hiển thị: Hiển thị các thông số thời gian như giờ, phút, giây và

Khối RTC (Real Time Clock) là chip thời gian thực cung cấp thời gian chính xác theo chuẩn tuyệt đối mà con người sử dụng hàng ngày Trong sơ đồ hệ thống, RTC đảm nhận vai trò cấp nguồn thời gian chính xác cho vi điều khiển xử lý, giúp đồng bộ các hoạt động dựa trên thời gian chính xác.

- Khối điều khiển: Sử dụng nút bấm Thực hiện chức năng nhập các dữ liệu đưa đến vi điều khiển và bao gồm thao tác thay đổi hiển thị.

- Khối cảm biến âm thanh: Cảm biến âm thanh có chức nặng nhận biết được âm thanh giúp LED nháy theo điệu nhạc.

CƠ SỞ LÝ THUYẾT

Tìm hiểu về hệ điều hành nhúng thời gian thực FreeRTOS

Hệ điều hành thời gian thực (RTOS) là một loại hệ điều hành dành cho các hệ thống nhúng, được thiết kế để tối ưu hóa tài nguyên và đảm bảo tính đáng tin cậy Các phần cứng chạy hệ điều hành nhúng thường có hạn chế về RAM và ROM, do đó RTOS được phát triển phù hợp với phạm vi ứng dụng cụ thể để đáp ứng các yêu cầu về thời gian thực Để tận dụng tối đa sức mạnh xử lý của CPU, các nhà phát triển thường viết mã quan trọng trực tiếp bằng ngôn ngữ máy hoặc sử dụng ngôn ngữ khả chuyển như C để đảm bảo hiệu quả, tốc độ và dễ bảo trì.

Trong số các hệ điều hành nhúng phổ biến hiện nay gồm có QNX, PDOS, pSOS, VxWorks, Nucleus, ERCOS, EMERALDS và Windows CE, nhưng trong đồ án môn học này, chúng tôi chọn sử dụng hệ điều hành nhúng thời gian thực FreeRTOS FreeRTOS phù hợp cho việc nghiên cứu và học tập về các kỹ thuật, công nghệ phát triển hệ điều hành nhúng, đặc biệt là hệ điều hành thời gian thực, nhờ khả năng mở rộng và tùy biến dễ dàng các thành phần như mô-đun, trình điều khiển và chuyển đổi môi trường thực thi.

2.1.1 Lịch sử phát triển của hệ điều hành nhúng thời gian thực

FreeRTOS là lõi của hệ điều hành thời gian thực miễn phí, được Richard Barry giới thiệu từ năm 2003 và ngày càng phát triển mạnh mẽ nhờ sự ủng hộ của cộng đồng mã nguồn mở Với tính di động cao, mã nguồn mở, khả năng tải xuống miễn phí và phù hợp cho các ứng dụng thương mại, FreeRTOS thích hợp cho các hệ nhúng nhỏ yêu cầu xử lý thời gian thực Hầu hết mã nguồn viết bằng ngôn ngữ C, giúp dễ dàng thích nghi với nhiều nền tảng khác nhau Ưu điểm nổi bật của FreeRTOS là dung lượng nhỏ gọn và khả năng chạy trên những nền tảng mà các hệ điều hành khác không thể, đồng thời dễ dàng port cho nhiều kiến trúc vi điều khiển và công cụ phát triển khác nhau Các port chính thức đi kèm với các ví dụ ứng dụng, cấu hình sẵn và tài liệu hướng dẫn, giúp người dùng nhanh chóng làm quen và phát triển Cộng đồng mạng cung cấp hỗ trợ miễn phí, trong khi các dịch vụ hỗ trợ thương mại và phát triển toàn diện cũng sẵn có để đáp ứng nhu cầu của doanh nghiệp.

FreeRTOS được cấp phép bởi phiên bản đã chỉnh sửa theo GPL (General Public License), cho phép sử dụng trong các ứng dụng thương mại Ngoài ra, liên quan đến FreeRTOS còn có các phiên bản như OpenRTOS, là bản thương mại của FreeRTOS.org và không liên quan đến GPL SafeRTOS là phiên bản dựa trên FreeRTOS, được phân tích, chứng minh bằng tài liệu và kiểm tra nghiêm ngặt theo tiêu chuẩn IEC61508 Chuẩn IEC61508 SIL3 đã được phát triển độc lập để hoàn thiện tài liệu và đảm bảo an toàn cho SafeRTOS.

2.1.2 Cách thức hoạt động của FreeRTOS.

RTOS là một thành phần quan trọng trong hệ thống điều hành, chịu trách nhiệm điều phối các tác vụ, lập lịch ưu tiên và phân mức ưu tiên cho từng task Nó giúp quản lý các thông điệp gửi đi giữa các task một cách hiệu quả, đảm bảo hoạt động trơn tru và đồng bộ của hệ thống RTOS đóng vai trò trung tâm trong việc tối ưu hóa hiệu suất và độ tin cậy của các ứng dụng thời gian thực.

RTOS khá phức tạp, nhưng có thể hiểu đơn giản là nó thực hiện xử lý các trạng thái của máy (State Machine) để quản lý các tác vụ đồng thời hiệu quả Để giải quyết các bài toán liên quan đến nhiều trạng thái máy, thông thường chúng ta sử dụng vòng lặp vô hạn while(1) để duy trì và kiểm soát trạng thái của hệ thống một cách liên tục và ổn định.

{ state= 2; case 2: //Code for Task 2; state= 3; case 3: //Code for Task 3; state= 4; case 4: //Code for Task 4; state=1;

Chương trình sẽ thực thi theo thứ tự từ trạng thái 1 đến trạng thái 4, sau đó quay trở lại trạng thái ban đầu để tiếp tục quá trình Mỗi khi trạng thái thay đổi, chương trình sẽ tự động chuyển sang xử lý tác vụ tương ứng của trạng thái mới Điều này giúp đảm bảo hoạt động của chương trình diễn ra liên tục và có tổ chức Quá trình chuyển đổi trạng thái diễn ra linh hoạt, phù hợp với yêu cầu của từng tác vụ cần thực hiện.

Phương pháp này có nhược điểm là sử dụng tài nguyên chung, dẫn đến khả năng tối ưu hóa hạn chế Tốc độ chuyển đổi trạng thái chậm do yêu cầu hoàn thành từng Task trước khi chuyển sang Task khác, gây ảnh hưởng đến hiệu suất hệ thống Ngoài ra, việc kiểm soát nhiều tác vụ cùng lúc gặp khó khăn, làm giảm tính ổn định và linh hoạt của quá trình xử lý.

Hình 2.1 mô tả cách hoạt động của RTOS, trong đó nhân Kernel điều phối các tác vụ (Task) dựa trên mức ưu tiên của chúng và thực thi theo chu kỳ cố định Khi có tác động như ngắt, tín hiệu hoặc tin nhắn giữa các Task, Kernel sẽ chuyển tiếp và điều phối hoạt động tới task phù hợp, đảm bảo hệ thống hoạt động hiệu quả và chính xác.

Sự chuyển dịch giữa các Task rất linh động, độ trễ thấp mang lại độ tin cậy cao cho chương trình.

2.1.3 Các chức năng của FreeRTOS.

Quản lý công việc trong ứng dụng được chia thành các đơn vị nhỏ gọi là Task (tác vụ), có thể lập lịch và thực hiện theo thứ tự để đảm bảo tính đồng thời trong môi trường thời gian thực Quản lý tác vụ bao gồm các hoạt động như tạo, kết thúc, thay đổi mức độ ưu tiên của tác vụ, nhằm tối ưu hóa hiệu suất hệ thống Việc tạo tác vụ liên quan đến việc xây dựng Khối điều khiển tác vụ (TCB), trong đó lưu trữ các thông tin quan trọng như ID tác vụ, mức độ ưu tiên, trạng thái hoạt động (nhàn rỗi, đang chạy, sẵn sàng hoặc đã kết thúc) Các bước này đảm bảo rằng hệ thống có khả năng điều phối và quản lý các tác vụ một cách hiệu quả, phù hợp với yêu cầu của hệ thống thời gian thực.

Lập lịch tác vụ ghi lại trạng thái của từng tác vụ và xác định tác vụ có mức độ ưu tiên cao nhất để thực thi, giúp bộ xử lý thực hiện tác vụ quan trọng nhất Đồng bộ hóa tác vụ cần thiết để truyền tải thông tin an toàn giữa các nhiệm vụ hoặc chủ đề khác nhau, cho phép các tác vụ chia sẻ tài nguyên như bộ đệm, thiết bị I/O một cách hiệu quả.

Quản lý bộ nhớ trong RTOS đảm bảo việc phân bổ và quản lý bộ nhớ cho từng chương trình một cách hiệu quả Có hai loại quản lý bộ nhớ chính trong RTOS là quản lý ngăn xếp và quản lý đống, giúp tối ưu hóa hiệu suất hệ thống và đảm bảo bộ nhớ được sử dụng một cách hợp lý và an toàn.

Quản lý thời gian hiệu quả yêu cầu lên lịch cho các tác vụ theo khung thời gian nhất định và cần có các ngắt định kỳ để đảm bảo tính chính xác Phần cứng Timer được lập trình để tạo ra các ngắt này, giúp bộ xử lý thực hiện các tác vụ theo đúng lịch trình Trong hệ thống điều khiển thời gian, ngắt thời gian còn được gọi là System Tick, đóng vai trò quan trọng trong việc duy trì đồng bộ và tối ưu hóa hiệu năng của hệ thống.

Xử lý ngắt là cơ chế phần cứng quan trọng giúp CPU phản ứng với các sự kiện không đồng bộ Khi một ngắt xảy ra, CPU nhận thông báo và kích hoạt trình xử lý ngắt để xử lý sự kiện đó nhanh chóng Quá trình này bao gồm tạo và xóa quy trình dịch vụ ngắt nhằm duy trì hiệu quả hoạt động của hệ thống Điều này đảm bảo hệ thống xử lý các sự kiện đột xuất một cách chính xác và hiệu quả, góp phần tối ưu hóa hiệu suất của hệ thống máy tính.

Quản lý I/O thiết bị đóng vai trò thiết yếu trong việc cung cấp một khung thống nhất (API - Giao diện lập trình viên ứng dụng), giúp đơn giản hóa quá trình tương tác với phần cứng Nó cho phép truy cập và điều khiển các trình điều khiển thiết bị phần cứng một cách chính xác, đảm bảo thiết bị phù hợp được định vị và hoạt động hiệu quả cho các yêu cầu I/O của hệ thống.

Giới thiệu các thiết bị phần cứng sử dụng

Khi nhắc đến lập trình và nghiên cứu chế tạo bằng Arduino, Arduino Uno R3 là dòng phổ biến nhất và phù hợp cho người mới bắt đầu Arduino Uno R3 đã trải qua nhiều phiên bản và hiện tại đã ở thế hệ thứ 3, mang lại sự ổn định và tính năng vượt trội Đối với người mới tiếp cận lĩnh vực lập trình, việc tập trung vào Arduino Uno R3 sẽ giúp dễ dàng học hỏi và phát triển dự án hơn so với các dòng Arduino khác Arduino Uno R3 được đánh giá cao về tính dễ sử dụng, phù hợp để học lập trình và chế tạo các thiết bị điện tử đơn giản đến phức tạp.

Arduino Uno là một bo mạch tích hợp vi điều khiển AVR Atmega 328, được thiết kế để phục vụ các dự án điện tử và lập trình nhúng Bo mạch này có cấu tạo chính gồm các thành phần quan trọng như bộ xử lý trung tâm, các chân GPIO để kết nối linh kiện ngoại vi, bộ nguồn ổn định và các cổng kết nối để giao tiếp với các thiết bị khác Với thiết kế đơn giản, dễ sử dụng, Arduino Uno phù hợp cho người mới bắt đầu học lập trình và phát triển các dự án sáng tạo.

Cổng USB là giao diện chính để upload code từ PC lên vi điều khiển, giúp dễ dàng lập trình và cập nhật phần mềm cho thiết bị Ngoài ra, cổng USB còn hoạt động như một giao diện truyền dữ liệu serial, cho phép trao đổi thông tin trực tiếp giữa vi điều khiển và máy tính Việc sử dụng cổng USB giúp đảm bảo quá trình giao tiếp diễn ra nhanh chóng, ổn định và thuận tiện cho các dự án điện tử và tự động hóa.

Để cấp nguồn cho Arduino, bạn có thể sử dụng cổng USB trên máy tính, tuy nhiên không phải lúc nào cũng có thể kết nối trực tiếp Khi đó, bạn cần sử dụng nguồn năng lượng từ 9V đến 12V để đảm bảo thiết bị hoạt động ổn định.

- Có 14 chân vào/ra số đánh số thứ tự từ 0 đến 13, ngoài ra có một chân nối đất (GND) và một chân điện áp tham chiếu (AREF).

Vi điều khiển AVR là bộ xử lý trung tâm của toàn bộ bo mạch Arduino Mỗi dòng Arduino sử dụng con chip AVR khác nhau để phù hợp với nhu cầu và đặc điểm kỹ thuật của từng mẫu Trong Arduino Uno, chip vi điều khiển được sử dụng là ATMega328, đóng vai trò quan trọng trong việc xử lý dữ liệu và điều khiển các thành phần của dự án.

- Điện áp đầu vào (Giới hạn): 6-20V

- Chân vào/ra (I/O) số: 14 ( 6 chân có thể cho đầu ra PWM)

- Dòng điện trong mỗi chân I/O: 40mA

- Dòng điện chân nguồn 3.3V: 50mA

- Bộ nhớ trong: 32 KB (ATmega328)

Vi điều khiển của Arduino Uno

Arduino UNO sử dụng bộ vi điều khiển 8-bit AVR gồm các dòng ATmega8, ATmega168, và ATmega328, giúp thực hiện các tác vụ như điều khiển đèn LED nhấp nháy, xử lý tín hiệu cho xe điều khiển từ xa, và xây dựng các trạm đo nhiệt độ - độ ẩm hiển thị trên màn hình LCD.

Thiết kế tiêu chuẩn của Arduino UNO sử dụng vi điều khiển ATmega328 với giá khoảng 90.000đ Tuy nhiên, nếu yêu cầu phần cứng không cao hoặc ngân sách hạn chế, bạn có thể lựa chọn các loại vi điều khiển thay thế như ATmega8 (bộ nhớ flash 8KB) với giá khoảng 45.000đ hoặc ATmega168 (bộ nhớ flash 16KB) chỉ với khoảng 65.000đ.

Arduino UNO có thể cấp nguồn 5V qua cổng USB hoặc nguồn ngoài với điện áp khuyên dùng từ 7-12V DC, trong khi giới hạn tối đa là 6-20V để tránh gây hỏng bo mạch Khi không có sẵn nguồn từ cổng USB, việc sử dụng pin vuông 9V là lựa chọn hợp lý nhất để cấp nguồn cho Arduino UNO Tuy nhiên, nếu cấp nguồn vượt quá giới hạn cho phép, có thể làm hỏng Arduino UNO nghiêm trọng.

GND (Ground) là cực âm của nguồn điện cấp cho Arduino UNO, đảm bảo mạch hoạt động ổn định Khi sử dụng các thiết bị có nguồn điện riêng biệt, các chân GND này cần phải được nối liên kết để đảm bảo mạch hoạt động chính xác và an toàn Việc kết nối đúng chân GND là yếu tố quan trọng trong các dự án Arduino để duy trì hiệu suất hệ thống.

- 5V ; cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA

- 3.3V : cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở chân này là 50mA

- Vin ( Voltage Input ) : để cấp nguồn ngoài cho Arduino UNO , bạn nối cực dương của nguồn với chân này và cực âm của nguồn với chân GND

Chân IOREF trên Arduino UNO cho phép đo điện áp hoạt động của vi điều khiển, thường là 5V Tuy nhiên, bạn không nên lấy nguồn 5V từ chân này để cấp điện cho các thiết bị khác, vì chức năng của IOREF là để thiết lập mức điện áp tham chiếu, không phải nguồn cấp năng lượng.

- RESET : việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc chân RESET được nối với GND qua 1 điện trở 10K

Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng :

Bộ nhớ Flash 32KB của vi điều khiển lưu trữ các đoạn lệnh mà bạn lập trình, đảm bảo chương trình của bạn được lưu trữ một cách bền bỉ Trong đó, khoảng vài KB dành cho bootloader, giúp khởi động hệ thống một cách ổn định Bạn không cần lo lắng quá nhiều về bộ nhớ này, vì thường bạn sẽ ít khi sử dụng tới hơn 20KB của tổng dung lượng Flash.

SRAM (Static Random Access Memory) là nơi lưu trữ các biến trong lập trình, giúp giữ dữ liệu tạm thời trong quá trình hoạt động của thiết bị Số lượng biến bạn khai báo càng nhiều thì yêu cầu bộ nhớ RAM cũng tăng theo, ảnh hưởng đến hiệu suất hệ thống Tuy nhiên, trong thực tế, bộ nhớ RAM hiếm khi trở thành yếu tố gây bận tâm lớn đối với người dùng lập trình Lưu ý rằng dữ liệu trên SRAM sẽ bị mất khi mất điện, do đó không dùng để lưu trữ dữ liệu lâu dài.

EEPROM (Electrically Erasable Programmable Read-Only Memory) là loại bộ nhớ lưu trữ dữ liệu có thể đọc và ghi lại nhiều lần mà không lo mất dữ liệu khi có sự cố mất điện Với dung lượng 1KB, EEPROM giống như một chiếc ổ cứng mini, giúp lưu trữ dữ liệu quan trọng một cách an toàn và dễ dàng truy cập Đây là lựa chọn phù hợp cho các dự án yêu cầu lưu trữ dữ liệu bền bỉ và khả năng chỉnh sửa linh hoạt.

Hình 2.4: Các chân trên Arduino Uno R3 giúp người dùng dễ dàng nhận biết các chân digital Arduino Uno R3 có 14 chân digital hỗ trợ đọc hoặc xuất tín hiệu với hai mức điện áp tiêu chuẩn là 0V và 5V, cùng dòng điện tối đa trên mỗi chân là 40mA Mỗi chân đều có điện trở pull-up nội bộ được tích hợp sẵn trong vi điều khiển ATmega328, mặc dù mặc định các điện trở này chưa được kết nối.

Một số chân digital có các chức năng đặc biệt như sau :

Trong Arduino Uno, chân 0 (RX) và chân 1 (TX) được sử dụng để truyền và nhận dữ liệu TTL Serial, giúp thiết bị giao tiếp dễ dàng với các thiết bị khác Kết nối Bluetooth không dây thường dựa trên nguyên lý Serial không dây, tận dụng các chân này để truyền dữ liệu không dây Tuy nhiên, nếu không cần thiết phải giao tiếp Serial, bạn nên tránh sử dụng hai chân này để giảm thiểu xung đột hoặc lỗi trong quá trình hoạt động của dự án.

2 chân này nếu không cần thiết.

THIẾT KẾ VÀ THI CÔNG SẢN PHẨM

Thiết kế và thi công phần cứng

Kết nối Arduino và các thiết bị.

Arduino và Module RTC Arduino và cảm biến âm thanh

Arduino UNO Module RTC Arduino UNO Cảm biến âm thanh

Sơ đồ kết nối các thiết bị mô phỏng trên proteus:

Trong thực tế, chúng tôi sử dụng dây cáp 7 màu để kết nối các module với nhau, giúp đảm bảo kết nối ổn định và dễ dàng trong quá trình nâng cấp, sửa chữa thiết bị Hình 3.1 mô phỏng mạch trên phần mềm Proteus, thể hiện rõ các kết nối giữa các module Việc sử dụng cáp đa màu sắc không chỉ nâng cao tính chuyên nghiệp mà còn tối ưu hóa quá trình lắp đặt và bảo trì hệ thống.

Sơ đồ kết nối các thiết bị thực tế:

Hình 3 2: Thiết kế và thi công vỏ hộp để chứa và bảo vệ các thiết bị

Thiết kế và thi công phần mềm

3.2.1 Chương trình hiển thị lên LED P10.

Hiển thị thông tin lên led ma trận nói chung và led p10 nói riêng thường sử dụng phương pháp quét led.

Thuật toán quét LED được tối ưu hóa bằng cách sử dụng phương pháp ngắt timer, giúp giảm khó chịu cho người dùng và nâng cao chất lượng hiển thị Thay vì lập trình truyền thống gây ra hiện tượng chập chờn hoặc không ổn định, chúng tôi đã áp dụng kỹ thuật tự động quét LED bằng module ngắt timer, đảm bảo quá trình hiển thị trở nên mượt mà và chính xác hơn Phương pháp này hoạt động như một module tự động quét LED, thực hiện công việc hiển thị một cách tự động, góp phần nâng cao trải nghiệm người dùng và độ tin cậy của hệ thống.

Trong hệ thống lập trình, cần có một mối liên hệ rõ ràng giữa chương trình chính và hàm ngắt để đảm bảo rằng hàm ngắt phản hồi đúng với yêu cầu của hàm main Phương pháp này sử dụng bộ đệm (Buffer) như một mảng chứa dữ liệu cần hiển thị, giúp quản lý dữ liệu hiệu quả Khi hàm main muốn hiển thị thông tin, chỉ cần ghi dữ liệu vào bộ đệm; hàm ngắt sẽ tự động lấy dữ liệu từ bộ đệm và thực hiện việc hiển thị một cách định kỳ và tự động, đảm bảo luồng xử lý dữ liệu mượt mà và chính xác.

502 Bad GatewayUnable to reach the origin service The service may be down or it may not be responding to traffic from cloudflared

Khai bảo một mảng 3 chiều: char Buffer_display[3][16][4] để quản lý ma trận LED và làm bộ đệm cho chương trình ngắt Timer.

502 Bad GatewayUnable to reach the origin service The service may be down or it may not be responding to traffic from cloudflared

Giá trị nạp vào thanh ghi TCNT1 = 2^16 – 0.0037*(16 *10^6)/256.

3.2.2 Thiết kế chương trình chính.

Lưu đồ thuật toán của chương trình chính.

502 Bad GatewayUnable to reach the origin service The service may be down or it may not be responding to traffic from cloudflared

502 Bad GatewayUnable to reach the origin service The service may be down or it may not be responding to traffic from cloudflared

Lưu đồ thuật toán tác vụ taskRealTime:

Hình 3 6: Lưu đồ thuật toán tác vụ taskRealTimeLưu đồ thuật toán tác vụ “animation”:

Hình 3 7: Lưu đồ thuật toán tác vụ “animation” 3.2.3 Chương trình điều khiển sản phẩm.

Sơ đồ điều khiển sản phẩm

Chương trình điều khiển nhận dữ liệu trực tiếp từ người dùng qua nút nhấn, giúp tăng tính tương tác của hệ thống Để đảm bảo quá trình này diễn ra một cách mượt mà và đáp ứng thời gian thực, chúng tôi sử dụng tính năng ngắt cứng (interrupt) trên Arduino Uno, giúp xử lý các sự kiện ngay lập tức và nâng cao hiệu quả hoạt động của dự án.

Lưu đồ thuật toán chương trình điều khiển:

Hình 3 9: Lưu đồ thuật toán chương trình điều khiển

TỔNG KẾT

Nhận xét, đánh giá

Sản phẩm hoạt động ổn định, đạt yêu cầu đã đặt ra, tuy nhiên vẫn còn một số hạn chế như sau:

- Chưa điều chỉnh được ngày, tháng, năm.

- Sản phẩm chưa có tính thẩm mỹ cao.

Hướng phát triển

- Có thêm hiển thị nhiệt độ và độ ẩm.

- Tích hợp thêm nhiều hiệu ứng có thể chuyển mode qua nút nhấn, không dây smartphone hoặc PC thông qua các chuẩn không dây (bluetooth, wifi, NFC, )

- Đọc tín hiệu âm thanh qua cổng usb của pc.

- Tích hợp phát nhạc trực tiếp từ SD Card hoặc USB có thêm các chức năng như máy nghe nhạc

- Bổ sung thêm cột led để nháy theo 2 mức âm thanh trái phải riêng biệt.

- Thiết kế mô hình với kích thước nhỏ gọn, kiểu dáng đẹp hơn.

Kết luận

Trong quá trình thực hiện đề tài, chúng em đã cố gắng và nỗ lực hết mình dưới sự hướng dẫn tận tình của cô Lê Thị Hồng Vân Dù còn một số hạn chế trong khâu thiết kế, nhưng dự án đã là một hành trang quý báu, giúp các sinh viên tự tin bước vào cuộc sống nghề nghiệp tương lai.

Dù đã cố gắng hết sức, nhưng do hạn chế về thời gian và khả năng, chúng tôi gặp phải một số sai sót và mong nhận được ý kiến đóng góp từ các thầy cô và bạn bè để bài viết hoàn thiện hơn.

Trong báo cáo này, chúng em đã sử dụng các tài liệu tham khảo:

[1] “Giáo Trình Vi Điều Khiển” Của GV Phạm Hùng Kim Khánh

[2] Từ các trang web: www.dientuvietnam.net, codientu.org

[3] Vi điều khiển với lập trình C_Ngô Diên Tập

Trang Web tham khảo http://arduino.vn/bai-viet/369-giao-tiep-i2c-va-su-dung-module-realtime- clock-ds1307

Ngày đăng: 27/12/2022, 05:09

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w