BÁO CÁO BÀI TẬP LỚN Môn: Thiết kế hệ thống nhúng Mục lục 1 Yêu cầu bài tập lớn ................................................................................................................................3 2 Giới thiệu về phần cứng……………………………………………………………………………………………………………………3 2.1 Nguyên lý của các module phần cứng.….………………………………………………………………………………….3 2.2 Các ngoại vi của STM32 cần sử dụng……….………………………………………………………………………….……11 2.3 Sơ đồ ghép nối giữa STM32 và module phần cứng.…………………………………………………………….……15 2.4 Lưu đồ thuật toán giao tiếp giữa STM32 và các module.……………………………………………………….…15 3 Thiết kế phần mềm……………………………………………………………………………………………………………….……….18 3.1 Phân tích yêu cầu xử lý để đảm bảo tính thời gian thực………………………………………………………...18 3.2 Thiết kế bộ lập lịch với chu kỳ lặp lại khác nhau.........................................................................18 3.3 Lập trình đa nhiệm…………………………………………………………………………………………………………………19 4 Kết quả và đánh giá…………………………………………………………………………………………………………………..……22 4.1 Các kết quả đạt được..................................................................................................................22 4.2 Đánh giá kết quả .........................................................................................................................23 4.3 Thống kê công việc và mức độ đóng góp của thành viên………………………………………………………..23
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN BÁO CÁO BÀI TẬP LỚN Môn: Thiết kế hệ thống nhúng Giảng viên hướng dẫn: Thầy Lê Công Cường Danh sách thành viên nhóm: Vũ Hồng Quân 20181709 Nguyễn Tiến Đạt 20181386 Đỗ Năng Hiếu 20181470 Trần Quốc Thắng 20181758 Hà Nội, 02-2022 Mục lục Yêu cầu tập lớn .3 Giới thiệu phần cứng……………………………………………………………………………………………………………………3 2.1 Nguyên lý module phần cứng.….………………………………………………………………………………….3 2.2 Các ngoại vi STM32 cần sử dụng……….………………………………………………………………………….……11 2.3 Sơ đồ ghép nối STM32 module phần cứng.…………………………………………………………….……15 2.4 Lưu đồ thuật toán giao tiếp STM32 module.……………………………………………………….…15 Thiết kế phần mềm……………………………………………………………………………………………………………….……….18 3.1 Phân tích yêu cầu xử lý để đảm bảo tính thời gian thực……………………………………………………… 18 3.2 Thiết kế lập lịch với chu kỳ lặp lại khác 18 3.3 Lập trình đa nhiệm…………………………………………………………………………………………………………………19 Kết đánh giá………………………………………………………………………………………………………………… ……22 4.1 Các kết đạt 22 4.2 Đánh giá kết 23 4.3 Thống kê công việc mức độ đóng góp thành viên……………………………………………………… 23 Yêu cầu tập lớn Lập trình VĐK STM32 giao tiếp với cảm biến khí GAS, cảm biến nhiệt độ độ ẩm, thị LCD truyền thông số lên máy tính Cài đặt lập lịch từ máy tính Giới thiệu phần cứng 2.1 Nguyên lý module phần cứng 2.1.1 Board STM32F103C8T6 Giới thiệu tổng quan - STM32F103C8T6 vi điều khiển 32bit, thuộc họ F1 dòng chip STM32 hãng ST - Lõi ARM COTEX M3 - Tốc độ tối đa 72Mhz - Bộ nhớ : 64 kbytes nhớ Flash 20 kbytes SRAM - Clock, reset quản lý nguồn Điện áp hoạt động từ 2.0 → 3.6V Sử dụng thạch anh từ 4Mhz → 20Mhz Thạch anh nội dùng dao động RC mode 8Mhz 40Khz - Chế độ điện áp thấp: Có mode: ngủ, ngừng hoạt động hoạt động chế độ chờ Cấp nguồn chân Vbat pin để dùng RTC sử dụng liệu lưu trữ nguồn cấp - ADC 12 bit với kênh cho Khoảng giá trị chuyển đổi từ – 3.6 V Có chế độ lấy mẫu kênh nhiều kênh - DMA: kênh DMA Có hỗ trợ DMA cho ADC, UART, I2C, SPI - Timer: Timer 16 bit hỗ trợ mode Input Capture/ Output Compare/ PWM Timer 16 bit hỗ trợ để điều khiển động với mode bảo vệ ngắt Input, dead-time Watchdog Timer để bảo vệ kiểm tra lỗi Systick Timer 24 bit đếm xuống cho hàm Delay,… - Có hỗ trợ kênh giao tiếp: I2C USART SPI CAN USB 2.0 full-speed interface - Kiểm tra lỗi CRC 96-bit ID Giới thiệu kit STM32F103C8T6 Kit phát triển STM32F103C8T6 Blue Pill ARM Cortex-M3 loại sử dụng để nghiên cứu ARM nhiều Các thơng số kĩ thuật: • • • • • • Điện áp cấp 5VDC qua cổng Micro USB chuyển đổi thành 3.3VDC qua IC nguồn cấp cho Vi điều khiển Tích hợp sẵn thạch anh 8Mhz Tích hợp sẵn thạnh anh 32Khz cho ứng dụng RTC Ra chân đầy đủ tất GPIO giao tiếp: CAN, I2C, SPI, UART, USB, Tích hợp Led trạng thái nguồn, Led PC13, Nút Reset Kích thước: 53.34 x 15.24mm 2.2.2 Cảm biến khí GAS MQ2 Cảm biến khí gas MQ-2 sử dụng phần tử SnO2 có độ dẫn điện thấp khơng khí sạch, khí dễ cháy tồn tại, cảm biến có độ dẫn điện cao hơn, nồng độ chất dễ cháy cao độ dẫn điện SnO2 cao tương ứng chuyển đổi thành mức tín hiệu điện Cảm biến khí gas MQ-2 cảm biến khí có độ nhạy cao với LPG, Propane Hydrogen, mê-tan (CH4) dễ bắt lửa khác, với chi phí thấp phù hợp cho ứng dụng khác Cảm biến xuất hai dạng tín hiệu Analog Digital, tín hiệu Digital điều chỉnh mức báo biến trở THƠNG SỐ KỸ THUẬT • • Nguồn hoạt động: 5V Loại liệu: Analog • • • • Phạm vi phát rộng Tốc độ phản hồi nhanh độ nhạy cao Mạch đơn giản Ổn định sử dụng thời gian dài NGUYÊN LÝ HOẠT ĐỘNG • Đo hàm lượng chất gây cháy khơng khí đưa điện áp chân Analog • Phát chất gây cháy khơng khí đưa tín hiệu chân Digital 2.2.3 Cảm biến nhiệt độ độ ẩm DHT11 Thông số kỹ thuật: • • • • • • Nguồn: -> VDC Dòng sử dụng: 2.5mA max (khi truyền liệu) Đo tốt độ ẩm to 100%RH với sai số ±2% Đo tốt nhiệt độ -40 to 80°C sai số ±0.5°C Tần số lấy mẫu tối đa 0.5Hz (2 giây lần) Kích thước 27mm x 59mm x 13.5mm (1.05" x 2.32" x 0.53") Cấu tạo: • Cảm biến nhiệt độ độ ẩm kỹ thuật số DHT11 bao gồm cảm biến độ ẩm điện dung cảm biến nhiệt độ NTC (hoặc nhiệt điện trở) IC phía sau cảm biến • Để đo độ ẩm, họ sử dụng thành phần cảm biến độ ẩm có hai điện cực với chất giữ ẩm chúng Vì vậy, độ ẩm thay đổi, độ dẫn chất thay đổi điện trở điện cực thay đổi Sự thay đổi điện trở đo xử lý IC khiến cho vi điều khiển sẵn sàng để đọc Mặt khác, để đo nhiệt độ, cảm biến sử dụng cảm biến nhiệt độ NTC nhiệt điện trở Một nhiệt điện trở thực điện trở thay đổi điện trở với thay đổi nhiệt độ Những cảm biến chế tạo cách thiêu kết vật liệu bán dẫn gốm polyme để cung cấp thay đổi lớn điện trở với thay đổi nhỏ nhiệt độ Thuật ngữ có tên “NTC” có nghĩa hệ số nhiệt độ âm, có nghĩa điện trở giảm nhiệt độ tăng Nguyên lý hoạt động: • Nhận tín hiệu từ VĐK (Request) • DHT11 Gửi tín hiệu phản hồi (Response) • Thực qua trình truyền 40 bit liệu DHT11 trả giá trị nhiệt độ độ ẩm dạng byte Trong đó: + Byte 1: giá trị phần nguyên độ ẩm (RH%) + Byte 2: giá trị phần thập phân độ ẩm (RH%) + Byte 3: giá trị phần nguyên nhiệt độ (TC) + Byte : giá trị phần thập phân nhiệt độ (TC) + Byte : kiểm tra tổng.(checksum) Nếu Byte = (8 bit) (Byte1 +Byte2 +Byte3 + Byte4) giá trị độ ẩm nhiệt độ xác, sai kết đo khơng có nghĩa Nó dựa vào thời gian để xác định truyền bit bit Sau tín hiệu đưa 0, ta đợi chân DATA MCU DHT11 kéo lên Nếu chân DATA khoảng 26-28 us bit 0, cịn tồn 70us bit Do lập trình ta bắt sườn lên chân DATA, sau delay 40us Nếu giá trị đo ta đọc bit 0, giá trị đo ta đọc bit Cứ ta đọc bit 2.2.4 Màn hình hiển thị LCD Khối hiển thị LCD 2x16 (2 dòng, 16 cột) Chức chân LCD 1602: - Chân số - VSS : chân nối đất cho LCD nối với GND mạch điều khiển - Chân số - VDD : chân cấp nguồn cho LCD, nối với VCC=5V mạch điều khiển - Chân số - VEE : điều chỉnh độ tương phản LCD, sử dụng biến trở 10K - Chân số - RS : chân chọn ghi, nối với logic "0" logic "1": + Logic “0”: Bus DB0 - DB7 nối với ghi lệnh IR LCD (ở chế độ “ghi” - write) nối với đếm địa LCD (ở chế độ “đọc” - read) + Logic “1”: Bus DB0 - DB7 nối với ghi liệu DR bên LCD - Chân số - R/W : chân chọn chế độ đọc/ghi (Read/Write), nối với logic “0” để ghi nối với logic “1” đọc - Chân số - E : chân cho phép (Enable) Sau tín hiệu đặt lên bus DB0-DB7, lệnh chấp nhận có xung cho phép chân sau: + Ở chế độ ghi: Dữ liệu bus LCD chuyển vào ghi bên phát xung (high-to-low transition) tín hiệu chân E + Ở chế độ đọc: Dữ liệu LCD xuất DB0-DB7 phát cạnh lên (low-to-high transition) chân E LCD giữ bus đến chân E xuống mức thấp - Chân số đến 14 - D0 đến D7: đường bus liệu dùng để trao đổi thông tin với MCU Có chế độ sử dụng đường bus là: Chế độ bit (dữ liệu truyền đường, với bit MSB bit DB7) Chế độ bit (dữ liệu truyền đường từ DB4 tới DB7, bit MSB DB7) - Chân số 15 - A : nguồn dương cho đèn - Chân số 16 - K : nguồn âm cho đèn Chỉ dùng LCD để hiển thị (Write) nên chân RW nối mass 2.2.5 Module chuyển đổi USB to UART PL2303 10 Thông số kỹ thuật: • Sử dụng điện áp 5VDC cấp trực tiếp từ cổng USB • Các chân tín hiệu ngõ ra: o 3V3:Chân nguồn 3.3VDC (dòng cấp nhỏ tối đa 100mA), không sử dụng để cấp nguồn, thường sử dụng để thiết đặt mức tín hiệu Logic o TXD: chân truyền liệu UART TTL, dùng kết nối đến chân nhận RX module sử dụng mức tín hiệu TTL 3.3~5VDC o RXD: chân nhận liệu UART TTL, dùng kết nối đến chân nhận TX module sử dụng mức tín hiệu TTL 3.3~5VDC o GND: chân cấp nguồn 0VDC o 5V: Chân cấp nguồn 5VDC từ cổng USB, tối đa 500mA • Tích hợp led tín hiệu TX, RX • Kích thước: 15 x 31 mm 2.2 Các ngoại vi STM32 cần sử dụng 2.2.1 GPIO GPIO (General Purpose Input/Output) chân Đầu đầu vào dùng chung STM32 GPIO bao gồm nhiều Port, Port có tối đa 16 chân STM32 GPIO bao gồm khối bản: • Input Driver: Bao gồm ghi Input Data (IDR), trigger Tín hiệu Input ngồi việc ghi vào IDR cịn theo đường Analog 11 để vào ADC, theo đường Alternate function input vào ngoại vi khác • Output Drive: Bao gồm ghi Output Data (ODR), khối output control để chọn tín hiệu từ ODR hay từ ngoại vi khác Tiếp đến điều khiển mosfet cho điện áp I/O pin Chức STM32 GPIO bao gồm: Input: • Input pull up: Đầu vào có trở kéo lên (điện áp mặc định chân Vcc) • Input pull down: Đầu vào có trở kéo xuống (điện áp mặc định chân 0V) • Input floating: Đầu vào thả nổi, điện áp không cố định dao động từ 0V tới Vcc • Analog: Đầu vào tương tự, dùng để đo ADC Output: • Ouput Push Pull: Đầu dạng đẩy kéo, tín hiệu có Vcc 0V tương ứng với Bit ghi vào chân • Ouput Opendrain: Đầu dạng cực máng hở Chỉ kéo 0V cách ghi bit 0, ghi bit 1, chân IO có điện áp tương ứng với nguồn nối vào IO • Alternate function Push Pull: Đầu kểu đẩy kéo sử dụng ngoại vi • Alternate function Open Drain: Đầu dạng cực máng hở, sử dụng ngoại vi (thường gặp I2C) 2.2.2 ADC ADC Analog to Digital Convert chuyển đôi tương tự sang số Đại lượng tương tự Điện áp Vin so sánh với điện áp mẫu Vref (giá trị lớn nhất), sau chuyển đổi thành số lưu vào ghi DATA chuyển đổi Các chức ADC STM32 • Độ phân giải 12Bit 12 • Sinh ngắt kiện End of convert, End of Injected, Analog Watchdog • Chế độ Single Continuous • Chế độ Scan tự động quét từ Kênh đến Kênh n (mỗi có 10 kênh tối đa) • Có chế cân chỉnh tay • Data Alignment (Căn chỉnh Data) trái phải • Cài đặt thời gian chuyển đổi đến Kênh • Có thể kích hoạt xung bên ngồi • Chế độ Dual mode sử dụng lúc nhiều ADC • Hỗ trợ DMA 2.2.3 UART UART giao thức truyền thông không đồng bộ, nghĩa khơng có xung Clock, thiết bị hiểu Setting giống UART truyền thông song công(Full duplex) nghĩa thời điểm truyền nhận đồng thời Trong quan trọng Baund rate (tốc độ Baund) khoảng thời gian dành cho bit truyền Phải cài đặt giống gửi nhận Sau định dạng gói tin Định dạng gói tin sau: 13 -Start Bit: Start-bit cịn gọi bit đồng hóa đặt trước liệu thực tế Nói chung, đường truyền liệu không hoạt động điều khiển mức điện áp cao Để bắt đầu truyền liệu, truyền UART kéo đường liệu từ mức điện áp cao (1) xuống mức điện áp thấp (0) UART thu thông báo chuyển đổi từ mức cao sang mức thấp qua đường liệu bắt đầu hiểu liệu thực Nói chung, có start-bit -Stop Bit: Bit dừng đặt phần cuối gói liệu Thông thường, bit dài bit thường sử dụng bit Để dừng sóng, UART giữ đường liệu mức điện áp cao -Partity Bit: Bit chẵn lẻ cho phép người nhận đảm bảo liệu liệu thu thập có hay khơng Đây hệ thống kiểm tra lỗi cấp thấp & bit chẵn lẻ có sẵn hai phạm vi Chẵn lẻ – chẵn lẻ Chẵn lẻ – lẻ Trên thực tế, bit không sử dụng rộng rãi nên không bắt buộc -Data frame: Các bit liệu bao gồm liệu thực truyền từ người gửi đến người nhận Độ dài khung liệu nằm khoảng & Nếu bit chẵn lẻ khơng sử dụng chiều dài khung liệu dài bit Nói chung, LSB liệu truyền trước tiên sau hữu ích cho việc truyền 2.2.4 Timer Trong STM32F103C8 có Timer đó: • Timer 1: Là Advanced – control Timer Timer điều khiển nâng cao, có nhiều chức • Timer chung Timer 2,3,4 Có chức tương tự độc lập với Chế độ Timer-Base unit chế độ Timer bao gồm chế độ đếm: lên, xuống lên lên xuống Xung Clock chia chia tần Prescaler để lấy thời gian thích hợp đếm lần Các ghi quản lý bao gồm: 14 • Counter Register (TIMx_CNT): lưu giá trị đếm • Prescaler Register (TIMx_PSC): lưu giá trị chia từ tần số sở cấp cho Timer để tạo tần số thích hợp • Auto-Reload Registor(TIMx_ARR): lưu giá trị đích đếm lên đếm xuống Thanh ghi Auto-Reload nạp trước Timer hoạt động nạp Timer hoạt động, trước kiện cập nhật xảy (UEV) Chế độ đếm hoạt động Bit CEN ghi TIMx_CR1 bật 2.3 Sơ đồ ghép nối STM32 module phần cứng 2.4 Lưu đồ thuật toán giao tiếp STM32 module 15 2.4.1 Giao tiếp với cảm biến nhiệt độ độ ẩm DHT11 16 2.4.2 Giao tiếp với cảm biến khí GAS MQ2 2.4.3 Giao tiếp với hình LCD 1602 17 Thiết kế phần mềm 3.1 Phân tích yêu cầu xử lý để đảm bảo tính thời gian thực - Đối với đại lượng đo khí Gas: việc rị rỉ khí Gas nguy hiểm cần đo hiển thị nồng độ Gas cách liên tục, thời gian lấy mẫu tính đơn vị giây - Đối với đại lượng đo nhiệt độ độ ẩm mơi trường: thay đổi chậm thời gian lấy mẫu không cần thiết phải nhanh, khoảng lấy mẫu lần 3.2 Thiết kế lập lịch với chu kỳ lặp lại khác k t(k) (s) T(k) T1 T2 T1 T1 n = 4, P = (s) T1: đo hiển thị nồng độ khí Gas lên hình LCD máy tính T2: đo hiển thị giá trị nhiệt độ, độ ẩm lên hình LCD máy tính t(k) set từ máy tính Xây dựng chương trình: thực xong task T(k), VĐK vào chế độ ngủ, sử dụng ngắt timer có nhiệm vụ đánh thức VĐK dậy để thực task sau khoảng thời gian thiết lập từ máy tính việc dùng ngắt nhận UART Sau đó, VĐK lại vào chế độ ngủ chương trình tiếp tục lặp lại 18 3.3 Lập trình đa nhiệm Phân tích tốn: Đọc cảm biến nhiệt độ, cảm biến gas với chu kì khác (có thể thay đổi chu kì thơng qua UART) in kết LCD16x02 truyền qua UART Với u cầu tốn nhóm chia thành task với mức ưu tiên sau: • DHT task (cảm biến nhiệt độ): mức • ADC task (cảm biến gas): mức • LCD task (in lcd): mức • MENU task (menu chọn mode terminal): mức • Change dht’period task (thay đổi chu kì đọc dht): mức • Change adc’period task(thay đổi chu kì đọc adc): mức • Print task (in terminal): mức • Cmd task (xử lí u cầu gửi từ menu task): mức Giải thích thiết kế chương trình kỹ thuật sử dụng lập trình RTOS: - Dht task adc task: Do yêu cầu đọc cảm biến cần xác thời gian xét toán thực tế việc theo dõi cảm biến khí gas nhiệt độ quan trọng nên nhóm em sử dụng mức ưu tiên (cao nhất) Tuy nhiên cảm biến dht cần xác thời gian đọc khơng thể có task khác chen vào đọc xong cảm biến Hai task “dht adc” có mức ưu tiên nên xảy việc “dht” đọc chưa xong “adc” lại chen vào Do nhóm em sử dụng khóa “binary semaphore” để giải vấn đề trên, thực xong task trả khóa để task thực - Menu task, Change dht’period task, Change adc’period task, print task Nhiệm vụ task thay đổi chu kì đọc cảm biến in giá trị hình Nhiệm vụ không quan trọng để mức ưu tiên Các task chạy in hình cửa sổ sau 19 Sau cửa sổ xuất hiện, task đợi tín hiệu sau thực thi tiếp (cụ thể đợi người dùng nhập lựa chọn từ terminal gửi về) Do đó, chuyển task trạng thái “block state” để tránh tiêu thụ CPU có tín hiệu thực tiếp Để thực mục đích chuyển task “block state” đợi tín hiệu ta sử dụng: xTaskNotifyWait() (cơ chế Task notifications) Trong API có tham số “uint32_t *pulNotification Value” thơng qua tham số ta biết giá trị mà người dùng gửi từ terminal Có nghĩa có giá trị gửi task thông báo để chạy task lấy giá trị Cụ thể toán lựa chọn Menu task hay giá trị chu kì change dht, adc task - Cmd task: Khi nhập kí tự terminal để truyền sử dụng hàm chế ngắt USART hàm HAL_UART_RxCpltCallback() để xử lí lưu trữ kí tự gửi Với mục đích học tập nhóm em sử dụng hàng đợi (10 phần tử, phần tử có kích thước byte (char) ) Do phát kí tự ‘\n’ có nghĩa người dùng ấn enter gửi tín hiệu đến “Cmd task” để task thực thi (cmd task bị block để đợi tín hiệu) Trong “Cmd task” đọc giá trị hàng đợi, sử dụng xQueueReceive(), sau kiểm tra cửa sổ để biết lệnh sử dụng cửa sổ (chúng ta có cửa sổ: menu, change dht’period, change adc’period) Nhắc lại task: menu, change dht’period, change adc’period bị block để đợi lệnh nên sau cmd task lấy lệnh từ hàng đợi biết cửa sổ gửi tín hiệu đến cửa sổ tương ứng Sử dụng API 20 xTaskNotify(), API ta gửi kèm giá trị mà người dùng nhập để task nhận xử lí tiếp Đó hoạt động task, thêm vấn đề việc sử dụng tài nguyên chung: ghi USART_DR truyền liệu qua uart mà task sử dụng Các task: • menu task, print task, change dht’period task, change adc’period task: sử dụng ghi USART_DR có mức ưu tiên • adc task: sử dụng ghi USART_DR (in cảnh báo nồng độ gas nguy hiểm) có mức ưu tiên đây, để tránh xung đột việc sử dụng, cụ thể adc task cướp quyền sử dụng ghi USART_DR task có mức ưu tiên thấp gây sai thơng tin cần truyền Do sử dụng kỹ thuật Mutex, hoạt động khóa giống “Binary semaphore” Tuy nhiên trường hợp task có mức ưu tiên thấp chưa trả khóa rõ ràng task có mức ưu tiên cao thực cảnh báo Trong tốn “LCD task” có mức ưu tiên 2, rõ ràng task cướp quyền thực thi CPU task có mức ưu tiên mức ưu tiên phải đợi đến “LCD task thực xong” trả khóa cho task có mức ưu tiên sử dụng Vấn đề task có mức ưu tiên lại bị trễ phải phụ thuộc mức ưu tiên thấp Kỹ thuật Mutex giải vấn đề này, xảy tượng trên, tạm thời chuyển mức ưu tiên task có mức ưu tiên lên cao cụ thể 3, đợi trả khóa đưa lại mức ưu tiên ban đầu 21 Kết đánh giá 4.1 Các kết đạt Không dùng RTOS RTOS Kết cụ thể có video demo ( lưu folder với code ) 22 4.2 Đánh giá kết Các kết đạt theo yêu cầu toán đề ra, cụ thể đạt yêu cầu phần thiết kế xây dựng chương trình mục báo cáo 4.3 Thống kê công việc mức độ đóng góp thành viên - Thắng, Hiếu: • Lập trình UART • Giao tiếp hình LCD • Đọc cảm biến nhiệt độ độ ẩm DHT11 - Đạt, Qn: • Đọc cảm biến khí gas MQ2 • Lập trình lập lịch khơng dùng RTOS • Lập trình đa nhiệm RTOS • Làm báo cáo 23 ... 21 Kết đánh giá 4.1 Các kết đạt Không dùng RTOS RTOS Kết cụ thể có video demo ( lưu folder với code ) 22 4.2 Đánh giá kết Các kết đạt theo yêu cầu toán đề ra, cụ thể đạt yêu cầu phần thiết kế. .. nhiệm…………………………………………………………………………………………………………………19 Kết đánh giá………………………………………………………………………………………………………………… ……22 4.1 Các kết đạt 22 4.2 Đánh giá kết 23 4.3 Thống kê cơng việc mức độ đóng... module.……………………………………………………….…15 Thiết kế phần mềm……………………………………………………………………………………………………………….……….18 3.1 Phân tích yêu cầu xử lý để đảm bảo tính thời gian thực……………………………………………………… 18 3.2 Thiết kế lập lịch với