ĐỒ ÁN TỐT NGHIỆP HỆ THỐNG QUẢN LÝ BÃI ĐÕ XE TÀI LIỆU ĐÍNH KÈM FILE CODE CHI TIẾT Sừ dụng vi điều khiển STM32, ESP 32 cùng các giao thức UART, I2C Ban đầu khi khởi động nó sẽ thực hiện việc đọc dữ liêu ngày giờ từ internet bằng ESP8266 sau đấy chuyển sang STM32F103C8T6 qua giao tiếp UART để xử lý chuyển dữ liệu ngày giờ hiện tại lên LCD qua giao thưc I2C. Với xe đi vào nếu như cảm biến hồng ngoại thứ nhất thay đổi thì động cơ servo hoạt động sẽ nhấc thanh chắn lên)đồng thời sau khi ô tô đi qua cảm biến hồng ngoại thứ 2 thì động cơ servo sẽ hạ thanh chắn xuống như ban đầu , đồng thời thì biến đếm sẽ tăng lên 1. Với xe đi ra thì mạch cũng hoạt động tương tự .
BỘ THÔNG TIN & TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG Khoa Kỹ Thuật Điện Tử BÁO CÁO ĐỒ ÁN Môn học: Đồ án thiết kế hệ thống số Đề tài: Hệ thống quản lý bãi đỗ xe Giảng viên hướng dẫn: Nguyễn Ngọc Minh Hà Nội, 2022 Nhận xét giáo viên hướng dẫn Hà Nội, Ngày Tháng Năm 2022 Giáo Viên hướng dẫn MỤC LỤC CHƯƠNG CƠ SỞ LÝ THUYẾT 1.1 Khái niệm Vi xử lý Vi điều khiển 1.1.1 Vi xử lý 1.1.2 Vi điều khiển(microcontroller) 1.1.3 Đặc điểm bật STM32 1.2 Hệ điều hành thời gian thực (Real-time operating system) 1.3 Giao thức kết nối 1.3.1 Giao thức UART 1.3.2 Giao thức I2C 14 CHƯƠNG THIẾT KẾ HỆ THỐNG 18 2.1 Phần cứng vật lý 18 2.1.1 Khối nguồn 18 2.1.2 Khối đầu vào 18 2.1.3 Khối đầu 22 2.1.4 Khối xử lý (vi điều khiển STM32F103C8T6) 24 2.2 Hệ điều hành µC/OS 26 2.2.1 Quản lý miền găng 26 2.2.2 Cấu trúc trạng thái tác vụ 26 2.2.3 Lập lịch tác vụ 28 2.2.4 Ngắt µC/OS 28 2.2.5 Nhịp đồng hồ 29 2.2.6 Khởi động hệ thống µC/OS 29 CHƯƠNG XÂY DỰNG HỆ THỐNG 30 3.1 Sơ đồ nguyên lý 30 3.2 Mơ hình thực tế 33 DANH MỤC HÌNH ẢNH, SƠ ĐỒ… Hình 1.1 Các loại cấu trúc Hình 1.2.Vi điều khiển Hình 1.3 Sơ đồ kết nối UART Hình 1.4 Gói packet 11 Hình 1.5 Start bit 11 Hình 1.6 Data Frame 11 Hình 2.1 Hình thực tế esp8266 18 Hình 2.2 Cảm biến vật cản hồng ngoại LM393 20 Hình 2.3 Shematic LM393 20 Hình 2.4 Chip STM32F103C8TX 25 Sơ đồ 2.1 Sơ đồ khối 18 Sơ đồ 2.2 Sơ đồ chân esp8266 19 Sơ đồ 2.3 Sơ đồ cảm biến vật cản hồng ngoại 21 Sơ đồ 2.4 Sơ đồ chân LCD 22 Sơ đồ 3.1 Sơ đồ nguyên lý 30 Mơ hình 3.1 Mơ hình thực tế TÀI LIỆU THAM KHẢO 33 LỜI MỞ ĐẦU Ngành điện tử ngày phát triển, dần thay thiết bị thô sơ,bằng thiết bị điện tử có độ tự động cao,tiết kiệm công sức cho người Hiện với phát triển vi điều khiển cần động tác nhẹ nhàng thiết bị điều khiển cách nhanh chống Người ta thường nói : “Học đơi với hành” , để tạo tảng , tăng thêm hiểu biết vào thực tế em lựa chọn đề tài “Quản lý bãi đỗ xe thơng minh” Trong q trình thực đề tài , Chúng em cố gắng , có lẽ vốn kiến thức nguyên nhân chủ quan khác mà đề tài chắn khơng tránh khỏi thiếu sót Chúng em mong đóng góp ý kiến, phê bình hướng dẫn thêm thầy cô bạn đọc Sinh viên thực CHƯƠNG CƠ SỞ LÝ THUYẾT 1.1 Khái niệm Vi xử lý Vi điều khiển 1.1.1 Vi xử lý Bộ vi xử lý (microprocessor) máy tính nhỏ CPU (đơn vị xử lý trung tâm) sử dụng để tính tốn, thực phép toán logic, kiểm soát hệ thống lưu trữ liệu vv Vi xử lý xử lý liệu đầu vào / đầu (input/output) thiết bị ngoại vi đưa kết trở lại để chúng hoạt động Dòng vi xử lý bit Intel sản xuất vào tháng 11/1971 với tên gọi 4004 Các loại cấu trúc: Hình 1.1 Các loại cấu trúc + Các vi xử lý sử dụng cấu trúc Von-Neumann Trong cấu trúc Von Neumann nhớ liệu nhớ chương trình đặt nhớ Để xử lý lệnh từ nhớ yêu cầu từ I / O, nhận lệnh thơng qua bus từ nhớ I / O, đặt vào ghi, xử lý ghi Bộ xử lý lưu kết nhớ thơng qua bus Nhưng kiến trúc có số nhược điểm chậm trình truyền liệu không đồng thời xảy lúc chia sẻ bus chung + Sau cấu trúc Harvard (Atmega328, Atmega168, Arduino dùng) phát triển Trong cấu trúc Harvard nhớ liệu nhớ chương trình bus tách biệt với Ngồi cịn có hai loại CPU micro programming hardwired programming Microprogramming chậm so sánh với hardwired programming + Kiến trúc tập lệnh Complex Instruction Set Computer: Complex instruction set computer (CISC) tập lệnh phức tạp nên tốn nhiều thời gian để thực hiện; tập lệnh phức tạp bao gồm q trình xử lý opcode tốn hạng …vv tốc độ thực lệnh chậm Cấu trúc X86 ví dụ + Reduced Instruction Set Computer: Reduced Instruction Set Computer (RISC) tập lệnh thu gọn tốc độ thực nhanh Việc thực đơn giản không yêu cầu cấu trúc phức tạp RISC sử dụng rộng rãi -các ứng dụng hệ thống nhúng SHARC PowerPC sử dụng RISC Bộ vi xử lý thường dùng ứng dụng nhỏ Tùy theo ứng dụng thiết bị ngoại vi bạn sử dụng mà chọn vi xử lý cần thiết để thực 1.1.2 Vi điều khiển(microcontroller) Nó máy tính nhỏ, CPU, nhớ (RAM, ROM), I / O thiết bị ngoại vi, timers, counters, nhúng vào mạch tích hợp (IC) nơi mà vi xử lý tất khối kết hợp vào board thông qua hệ thống bus Vi điều khiển dễ dàng giao tiếp với thiết bị ngoại vi bên cổng nối tiếp, ADC, DAC, Bluetooth, Wi-Fi, …vv trình giao tiếp nhanh so sánh với vi xử lý Hầu hết vi điều khiển sử dụng cấu trúc RISC Ngồi cịn có số vi điều khiển sử dụng cấu trúc CISC 8051, motorolla, vv Hình 1.2.Vi điều khiển 1.1.3 Đặc điểm bật STM32 Những đặc điểm trội dòng ARM Cortex thu hút nhà sản xuất IC, 240 dòng vi điều khiển dựa vào nhân Cortex giới thiệu Khơng nằm ngồi xu hướng đó, hãng sản xuất chip ST Microelectronic nhanh chóng đưa dịng STM32F1 STM32F1 vi điều khiển dựa tảng lõi ARM Cortex-M3 hãng ARM thiết kế Lõi ARM Cortex-M3 cải tiến từ lõi ARM7 truyền thống mang lại thành công vang dội cho công ty ARM STM đưa thị trường dòng vi điều khiển dựa ARM7 ARM9, STM32 bước tiến quan trọng đường cong chi phí hiệu suất (price/performance), giá gần Euro với số lượng lớn, STM32 thách thức thật với vi điều khiển 16-bit truyền thống STM32 gồm 14 biến thể khác nhau, phân thành hai dịng: dịng Performance có tần số hoạt động CPU lên tới 72Mhz dịng Access có tần số hoạt động lên tới 36Mhz Các biến thể STM32 hai nhóm tương thích hồn tồn cách bố trí chân (pin) phần mềm, đồng thời kích thước nhớ FLASH ROM lên tới 512K 64K SRAM - Sự tinh vi Thoạt nhìn ngoại vi STM32 giống vi điều khiển khác, hai chuyển đổi ADC, timer, I2C, SPI, CAN, USB RTC Tuy nhiên ngoại vi có nhiều đặc điểm thú vị Ví dụ ADC 12-bit có tích hợp cảm biến nhiệt độ để tự động hiệu chỉnh nhiệt độ thay đổi hỗ trợ nhiều chế độ chuyển đổi Mỗi định thời có khối capture compare (dùng để bắt kiện với tính input capture tạo dạng sóng ngõ với output compare), khối định thời liên kết với khối định thời khác để tạo mảng định thời tinh vi Một định thời cao cấp chuyên hỗ trợ điều khiển động cơ, với đầu PWM với dead time (khoảng thời gian chèn vào hai đầu tín hiệu xuất PWM bù điều khiển mạch cầu H) lập trình đường break input (khi phát điều kiện dừng khẩn cấp) buộc tín hiệu PWM sang trạng thái an toàn cài sẵn Ngoại vi nối tiếp SPI có khối kiểm tổng (CRC) phần cứng cho 16 word hỗ trợ tích cực cho giao tiếp thẻ nhớ SD MMC STM32 có hỗ trợ thêm tối đa 12 kênh DMA (Direct Memory Access) Mỗi kênh dùng để truyền liệu đến ghi ngoại vi từ ghi ngoại vi với kích thước từ (word) liệu truyền 8/16 32-bit Mỗi ngoại vi có điều khiển DMA (DMA controller) kèm dùng để gửi đòi hỏi liệu yêu cầu Một phân xử bus nội (bus arbiter) ma trận bus (bus matrix) tối thiểu hoá tranh chấp bus truy cập liệu thông qua CPU (CPU data access) kênh DMA Điều cho phép đơn vị DMA hoạt động linh hoạt, dễ dùng tự động điều khiển luồng liệu bên vi điều khiển STM32 vi điều khiển tiêu thụ lượng thấp đạt hiệu suất cao Nó hoạt động điện áp 2V, chạy tần số 72MHz dịng tiêu thụ có 36mA với tất khối bên vi điều khiển hoạt động Kết hợp với chế độ tiết kiệm lượng Cortex, STM32 tiêu thụ 2μA chế độ Standby Một dao động nội RC 8MHz cho phép chip nhanh chóng khỏi chế độ tiết kiệm lượng dao động khởi động Khả nhanh vào thoát khỏi chế độ tiết kiệm lượng làm giảm nhiều tiêu thụ lượng tổng thể - Sự an toàn Ngày ứng dụng đại thường phải hoạt động môi trường khắc khe, địi hỏi tính an tồn cao, địi hỏi sức mạnh xử lý nhiều thiết bị ngoại vi tinh vi Để đáp ứng yêu cầu khắc khe đó, STM32 cung cấp số tính phần cứng hỗ trợ ứng dụng cách tốt Chúng bao gồm phát điện áp thấp, hệ thống bảo vệ xung Clock hai Watchdogs Bộ Watchdog cửa sổ (windowed watchdog) Watchdog phải làm tươi khung thời gian xác định Nếu nhấn sớm, q muộn, Watchdog kích hoạt Bộ thứ hai Watchdog độc lập (independent watchdog), có dao động bên tách biệt với xung nhịp hệ thống Hệ thống bảo vệ xung nhịp phát lỗi dao động bên ngồi (thường thạch anh) tự động chuyển sang dùng dao động nội RC 8MHz - Tính bảo mật Hình 2.2 Cảm biến vật cản hồng ngoại LM393 Nguyên lý hoạt động Hình 2.3 Shematic LM393 Cảm biến hồng ngoại có nhiều ứng dụng khác từ robot đến tự động hóa Ngun lí làm việc cảm biến hồng ngoại sau : - Led hồng ngoại song ánh sang có bước song hồng ngoại, led thu bình thường có nội trở lớn ( khoảng vài tram kohm), led thu nhận tia hồng ngoại chiếu vào đủ lớn nội trở giảm xuống, khoảng vài chục ohm - Khi có vật cản phía trước, chum hồng ngoại đập vào vật cản phản xạ lại led thu thay đổi giá trị nội trở dẫn đến thay đổi mức điện áp đầu vào không đảo Op amp Khoảng cách gần thay dổi lớn Khi điện áp đầu vào không đảo so sánh với giá trị điện áp không đổi ghim R3, giá trị điệp áp đầu vào không đảo lớn đầu đảo , op amp xuất mức (+Vcc), ngược lại xuất mức (GND) Điện trở R1 , R2, R4 20 sử dụng để đảm bả dòng điện tối thiểu 10mA qua thiết bị led IR photodiode đèn led thông thường Biến trở R3 dùng để chỉnh độ nhạy mạch Thông số kỹ thuật - IC so sánh: LM393 - Điện áp: 3.3V - 6VDC - Dòng tiêu thụ: + Vcc = 3.3V: 23 mA + Vcc = 5.0V: 43 mA - Góc hoạt động: 35° - Khoảng cách phát hiện: ~ 30 cm - LED báo nguồn LED báo tín hiệu ngõ - Mức logic ngõ ra: + Mức thấp - 0V: có vật cản + Mức cao - 5V: khơng có vật cản Sơ đồ 2.3 Sơ đồ cảm biến vật cản hồng ngoại Cổng giao tiếp: • VCC: điện áp chuyển đổi từ 3.3V đến 5V (có thể kết nối trực tiếp đến vi điều khiển 5V 3.3V) 21 • GND: GND ngồi • OUT: đầu kỹ thuật số (0 1) 2.1.3 Khối đầu a LCD 16x2 giao tiếp với vi điều khiển : VEE LCD nối với biến trở nguồn 5V để diều chỉnh độ sáng LCD - chân điều khiển (RS,RW,E ) - Đường liệu D0 đến D7 Chân điều khiển độ sáng tối LCD chân VEE ta sử dụng biến trở để điều chỉnh thích hợp 5v 10 11 12 13 14 16 15 VSS VDD VEE RS RW E D0 D1 D2 D3 D4 D5 D6 D7 K A U3 LC D R7 R ESI STOR R8 VAR 5v Sơ đồ 2.4 Sơ đồ chân LCD LCD có nhiều nhiều chân gây khó khăn trình đấu nối chiếm dụng nhiều chân vi điều khiển • Module I2C LCD đời giải vấn để Thay phải chân vi điều khiển để kết nối với LCD 16×2 (RS, EN, D7, D6, D5 D4) module IC2 bạn cần tốn chân (SCL, SDA) để kết nối Module I2C hỗ trợ loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4, …) tương thích với hầu hết vi điều khiển • Ưu điểm Tiết kiệm chân cho vi điều khiển Dễ dàng kết nối với LCD 22 • Thơng số kĩ thuật - Điện áp hoạt động: 2.5-6V DC - Hỗ trợ hình: LCD1602,1604,2004 (driver HD44780) - Giao tiếp: I2C Địa mặc định: 0X27 (có thể điều chỉnh ngắn mạch chân A0/A1/A2) - Tích hợp Jump chốt để cung cấp đèn cho LCD ngắt - Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD - Các lỗi thường gặp sử dụng I2C LCD - Hiển thị dãy vng - Màn hình in ký tự đầu - Màn hình nhấp nháy Các lỗi chủ yếu sai địa bus, để fix lỗi cần thay địa mặc định “0x27” thành “0x3F Trong trường hợp không bạn fix lỗi cách nạp code tìm địa bus I2C Sau tìm xong bạn thay địa vừa tìm vào vị trí “0x27” xong b Động servo SG90 Động servo SG90 có kích thước nhỏ, loại sử dụng nhiều để làm mơ hình nhỏ cấu kéo không cần đến lực nặng Động servo SG90 180 độ có tốc độ phản ứng nhanh, bánh làm nhựa nên cần lưu ý nâng tải nặng làm hư bánh răng, động RC Servo 9G có tích hợp sẵn Driver điều khiển động bên nên dễ dàng điều khiển góc quay phương pháp điều độ rộng xung PWM ❖ Thông số kỹ thuật • Điện áp hoạt động: 4.8-5VDC • Tốc độ: 0.12 sec/ 60 deg (4.8VDC) • Lực kéo: 1.6 Kg.cm • Kích thước: 21x12x22mm 23 • Trọng lượng: 9g ❖ Phương pháp điều khiển PWM: • Độ rộng xung 0.5ms ~ 2.5ms tương ứng 0-180 độ • Tần số 50Hz, chu kỳ 20ms c LED LED (viết tắt light-emitting diode, có nghĩa diode phát sáng diode phát quang) diode có khả phát ánh sáng hay tia hồng ngoại, tử ngoại Cũng giống diode, LED cấu tạo từ khối bán dẫn loại p ghép với khối bán dẫn loại n 2.1.4 Khối xử lý (vi điều khiển STM32F103C8T6) STM32F103C8T6 vi điều khiển 32bit, thuộc họ F1 dòng chipSTM32 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ờ - 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: 24 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, deadtime 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 Hình 2.4 Chip STM32F103C8TX 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 25 2.2 Hệ điều hành µC/OS µC/OS hệ điều hành thời gian thực áp dụng cho nhiều dự án có yêu cầu cao đáp ứng thời gian (hàng khơng, y tế ) µC/OS khơng phải hệ điều hành hoàn chỉnh mà nhân thời gian thực dùng để cung cấp cho ứng dụng Và hệ điều hành µC/OS hỗ trợ tính sau: • Quản lý truy cập tới miền gng ca àC/OS ã Cu trỳc v trng thỏi ca tác vụ • Hàm xử lý ngắt • Quản lý nhp ng h ã Khi ng h thng àC/OS, hệ thống đa nhiệm 2.2.1 Quản lý miền găng Miền găng µC/OS vũng mà mã lệnh xảy tranh chấp tài nguyên dùng chung có nhiều tiến trình thực miền găng VD: Vào thời điểm có request tới server để cập nhật đối tượng mà giá trị request lại ảnh hưởng tới request khác Và đoạn code gọi miền găng Với hệ điều hành hay hệ thống mà có nhiều tiến trình chạy phải đảm bảo thời điểm có tiến trình thực đoạn găng để đảm bảo tồn vẹn liệu Có nhiều giải pháp để xử ý trường hợp như: Sermaphore, Test&Set, cấm ngắt µC/OS sử dụng giải pháp vơ hiệu hóa ngắt tiến trình thực thi miền găng OS_ENTER_CRITICAL() OS_EXIT_CRITICAL() hàm để vơ hiệu hay hữu hiệu ngắt Các hàm định nghĩa khác tùy vào vi xử lý nên đặt file cấu hình (OS_CPU.H) 2.2.2 Cấu trúc trạng thái tác vụ Một tác vụ hàm lặp vô hạn Nó giống hàm khác C VD: void Tesk(void *data) { 26 For (; ;) { /* CODE */ Call one of µC/OS's services: OSMboxPend(); OSSemPend(); OSTaskDel(OS_PROI_SELF); /* CODE */ } } µC/OS quản lý tối đa 64 tác vụ: có tác vụ hệ thống có độ ưu tiên OS_LOWEST_PRIO-0 tới OS_LOWEST_PRIO-3 => Người dùng quản lý 56 tác vụ với tác vụ có độ ưu tiên từ OS_LOWEST_PRIO0 tới OS_LOWEST_PRIO-2 µC/OS ln chạy tác vụ có độ ưu tiên cao trước OSTaskCreate() OSTaskCreateEx() hàm µC/OS dùng để tạo tác vụ Mỗi tác vụ µC/OS trạng thái sau: DORMANT: Tác vụ nằm nhớ (ROM RAM) chưa khởi tạo - READY: Đây trạng thái tác vụ tạo - RUNNING: Là trạng thái tác vụ thực thi WAITING (WAITING FOR AN EVENT): Đang chờ kiện INTERRUPTED: Ngắt xuất thực thi tác vụ CPU thực thi thủ tục ngắt Trạng thái DORMANT tương ứng với tác vụ nằm chương trình chưa nằm quản lý µC/OS Khi µC/OS gọi hàm tạo 27 (OSTaskCreate() OSTaskCreateEx()) tác vụ quản lý hệ điều hành, chuyển sang trạng thái READY Khi tác vụ bị xóa khỏi µC/OS lệnh OSTaskDel() tác vụ bị chuyển trạng thái DORMANT Các tác vụ tạo lúc nào, tạo mà gán quyền cao chiếm quyền điều khiển CPU Quá trình đa nhiệm bắt đầu gọi OSStart() Sau OSStart() chọn tác vụ có trạng thái READY có độ ưu tiên cao để chuyển sang trạng thái RUNNING Một tác vụ chạy tự trì hỗn cách gọi OSTimeDly() Trong tác vụ khác có quyền ưu tiên cao chiếm quyền CPU OSTimeTick() khơi phục lại trạng thái RUNNING cho tác vụ thời gian trì hỗn kết thúc Tác vụ chạy đợi xuất kiện khác việc gọi OSMboxPend(), OSSemPend() OSQPend(), gọi hàm tác vụ chuyển sang trạng thái WAITTING Khi tác vụ trạng WAITTING tác vụ có độ ưu tiên cao quyền sử dụng CPU Khi kiện xuất tác vụ lại chuyển sang trạng thái READY báo bới tác vụ khác ISR Tác vụ chạy ln bị ngắt trừ µC/OS vơ hiệu hóa ngắt (thường miền găng) tác vụ chuyển sang trạng thái INTERRUPTED Khi ngắt xuất hiện, tác vụ bị tạm dừng, ISR chiếm quyền điều khiển CPU Khi tất tác vụ đợi kiện µC/OS thực tác vụ OSTaskIdle() 2.2.3 Lập lịch tác vụ µC/OS dụng lập lịch tác vụ thực hàm OSSched(), ln chọn tác vụ có độ ưu tiên cao để thực thi Lập lịch mức ISR quản lý hàm OSIntExit() (lập lịch sau thoát khỏi ngắt) Thời gian để lập lịch tác vụ số không phụ thuộc vào số tác vụ Nếu ứng dụng gọi OSSchedLock() xuất ngắt (OSIntNessting>0), tác vụ lập lịch kết thúc 2.2.4 Ngắt µC/OS µC/OS yêu cầu dịch vụ ngắt ISR viết hợp ngữ 28 ISR: Save all CPU registers; Call OSIntEnter() or increment OSIntNesting directly; Excute user code to service ISR; Call OSIntExit(); Restore all CPU registers; Exucute a return from interrup instructions; Khi tăng trực tiếp OSIntNesting ngắt nhanh việc gọi hàm OSIntEnter() phải thực vô hiệu hóa ngắt khác 2.2.5 Nhịp đồng hồ µC/OS yêu cầu cung cấp đồng hồ thời gian để thực thi chức liên quan đến đo thời gian mà dịch vụ cần đến Trong µC/OS, người phát triển cho phép ngắt thời gian sau khởi động hệ thống đa nhiệm (OSTart()) không cho phép ngắt thời gian xảy OSInit() OSStart() µC/OS trạng thái khơng định nghĩa xảy lỗi Nhịp đồng hồ µC/OS sử dụng qua hàm OSTimeTick() từ ngắt đồng hồ Mã ngắt cho đồng hồ phải viết hợp ngữ gọi hàm OSTimeTick() từ tác vụ có độ ưu tiên cao tác vụ có Tác vụ gọi TickTask 2.2.6 Khởi động hệ thống µC/OS Như viết khởi tạo hệ thống µC/OS gọi hàm OSInit() hàm phải gọi trước gọi dịch vụ OSInit() khởi tạo biến cấu trúc liệu µC/OS khởi tạo tác vụ OSTaskIdle() với độ ưu tiên ko đổi OS_LOWEST_PRIO Khởi động hệ thống đa nhiệm hàm OSStart() trước khởi tạo hàm ta phải tạo tác vụ cho chương trình ứng dung 29 CHƯƠNG XÂY DỰNG HỆ THỐNG 3.1 Sơ đồ nguyên lý Sơ đồ 3.1 Sơ đồ nguyên lý Khi đảm bảo cấp nguồn cho mạch ổn định, mạch hoạt đông sau: Ban đầu khởi động thực việc đọc liêu ngày từ internet ESP8266 sau chuyển sang STM32F103C8T6 qua giao tiếp UART để xử lý chuyển liệu ngày lên LCD qua giao thưc I2C Với xe vào cảm biến hồng ngoại thứ thay đổi động servo hoạt động nhấc chắn lên)đồng thời sau ô tô qua cảm biến hồng ngoại thứ động servo hạ chắn xuống ban đầu , đồng thời biến đếm tăng lên Với xe mạch hoạt động tương tự 30 3.2 Mơ Altium Hình 3.1 Mạch PCB 31 Hình 3.2 Mạch 3D 32 3.3 Mơ hình thực tế Mơ hình 3.1 Mơ hình thực tế 33 TÀI LIỆU THAM KHẢO [1] N N MINH L C DUẨN, BÀI GIẢNG HỆ THỐNG NHÚNG, HÀ NỘI: HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG, 2019 [2] J J Labrosse, MicroC/OS-II The Real-Time Kernel, Kansas: CMP Books, 2002 34