I. PHÂN TÍCH YÊU CẦU BÀI TOÁN 1. Yêu cầu bài toán. Sử dụng vi điều khiển STM32 lập trình giao tiếp với cảm biến nhiệt độ và độ ẩm DHT11. Từ vi điều khiển STM32 đo được 4 giá trị điện áp từ 4 biến trở rồi truyền thông số lên máy tính. Thiết kế bộ lập lịch từ máy tính cho STM32. Tìm hiểu giao tiếp với các ngoại vi bằng STM32 Tìm hiểu giao tiếp UART với máy tính từ STM32 Sử dụng STM32 lập trình đọc nhiệt độ, độ ẩm từ cảm biến DHT11 Sử dụng STM32 lập trình đọc 4 giá trị điện áp từ 4 biến trở Từ dữ liệu nhận được, truyền thông UART lên máy tính Thiết kế và lập trình theo bộ lập lịch cho STM32 Phân tích yêu cầu đảm bảo tính thời gian thực Phân tích áp dụng các kỹ thuật lập trình đa nhiệm trong FreeRTOS Lập trình đa nhiệm trên FreeRTOS
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 Thiết kế hệ thống nhúng (EE4251) GVHD: ThS Lê Cơng Cường Sinh viên: Hồng Văn Hoàng Chu Kim Khánh Nguyễn Xuân Cường Lê Gia Long 20181485 20173984 20181374 20181598 HÀ NỘI, 02/2022 MỤC LỤC I PHÂN TÍCH U CẦU BÀI TỐN Yêu cầu toán Sơ đồ khối II GIỚI THIỆU PHẦN CỨNG Nguyên lý module phần cứng .4 1.1 Kit STM32F103C8T6 .4 1.2 Module TTL CH340 1.3 DHT11 .6 1.4 Biến trở 11 Các ngoại vi STM32 sử dụng 12 2.1 GPIO 12 2.2 UART .12 2.3 ADC 14 Sơ đồ ghép nối STM32 module phần cứng 15 Thiết kế lưu đồ thuật toán giao tiếp 16 III STM32 cảm biến DHT11 16 4.2 STM32 biến trở: .17 THIẾT KẾ VÀ LẬP TRÌNH CHƯƠNG TRÌNH 17 Phân tích yêu cầu xử lý để đảm bảo tính thời gian thực 17 Thiết kế lập lịch 19 Lập trình đa nhiệm 20 IV 3.1 Phân tích tốn .20 3.2 Lập trình đa nhiệm FreeRTOS 20 KẾT QUẢ VÀ ĐÁNH GIÁ .23 Các kết đạt 23 Phân tích đánh giá kết 23 V 4.1 2.1 Các giá trị thông số .23 2.2 Lập trình với lập lịch 24 2.3 Lập trình đa nhiệm với FreeRTOS .26 Thống kê công việc đánh giá thành viên nhóm 27 LINK SHARE THƯ MỤC LẬP TRÌNH .27 I PHÂN TÍCH U CẦU BÀI TỐN u cầu tốn Sử dụng vi điều khiển STM32 lập trình giao tiếp với cảm biến nhiệt độ độ ẩm DHT11 Từ vi điều khiển STM32 đo giá trị điện áp từ biến trở truyền thông số lên máy tính Thiết kế lập lịch từ máy tính cho STM32 Tìm hiểu giao tiếp với ngoại vi STM32 Tìm hiểu giao tiếp UART với máy tính từ STM32 Sử dụng STM32 lập trình đọc nhiệt độ, độ ẩm từ cảm biến DHT11 Sử dụng STM32 lập trình đọc giá trị điện áp từ biến trở Từ liệu nhận được, truyền thơng UART lên máy tính Thiết kế lập trình theo lập lịch cho STM32 Phân tích yêu cầu đảm bảo tính thời gian thực Phân tích áp dụng kỹ thuật lập trình đa nhiệm FreeRTOS Lập trình đa nhiệm FreeRTOS Sơ đồ khối Theo yêu cầu toán ta lập sơ đồ khối: Hình : Sơ đồ khối toán II GIỚI THIỆU PHẦN CỨNG Để giải u cầu tốn, nhóm cần sử dụng đến phần cứng sau: kit STM32 F103C8T6, Module TTL CH340, cảm biến nhiệt độ, độ ẩm biến trở Nguyên lý module phần cứng 1.1 Kit STM32F103C8T6 Kit STM32 F103C8T6 bo mạch phát triển sử dụng MCU STM32 F103C8T6 thuộc họ F1 Tập đoàn ST Microelectronic, dựa lõi ARM Cortex-M3 hệ hãng ARM thiết kế Bo mạch phát triển hệ thống tối thiểu chi phí thấp, thiết kế nhỏ gọn, hoạt động vô ổn định, chân ngoại vi đưa giúp dễ dàng kết nối, giao tiếp Đặc biệt có đồ sộ ngoại vi ngoại vi (GPIO, I2C, SPI, ADC, USB, Ethernet, CAN ), Hình : STM32F1 Hình 3: Kit STM32F103C8T6 Thơng số kỹ thuật Lõi ARM®32-bit Cortex®-M3 CPU Bộ nhớ: 64 kbytes nhớ Flash, 20 kbytes SRAM Điện áp hoạt động từ 2.0 → 3.6V Thạch anh nội dùng dao động RC mode 8Mhz 40Khz ADC 12 bit với kênh Khoảng giá trị chuyển đổi từ – 3.6 V Timer: hỗ trợ nhiều ứng dụng kênh giao tiếp: I2C; USART; SPI; CAN; USB 2.0 Tích hợp sẵn thạch anh 8Mhz 1.2 Module TTL CH340 CH340 chip chuyển đổi giao tiếp USB Nó chuyển đổi USB sang giao diện trao đổi liệu dạng nối tiếp (serial interface), chuyển đổi USB sang hồng ngoại IrDA chuyển đổi USB sang giao diện máy in Ở chế độ trao đổi liệu dạng nối tiếp (serial interface), CH340 cung cấp tín hiệu liên lạc qua MODEM chung, đưa trực tiếp thiết bị kết nối dạng nối tiếp (serial device) lên bus USB Hình 4: Chip chuyển đổi CH340 Module TTL CH340 module chuyển đổi kết nối USB sang TTL sử dụng giao thức truyền thông UART Đây module USB to TTL chi phí thấp dựa chip CH340G Hình 5: Sơ đồ chân module TTL CH340 Thơng số kỹ thuật chính: Điện áp hoạt động: 5V cấp trực tiếp từ cổng USB Chip: CH340G Chuẩn USB: 2.0 Đầu giao thức UART Hình 6: Sơ đồ nguyên lý module TTL CH340 1.3 DHT11 Dùng để đo nhiệt độ độ ẩm phổ biến nhiều dự án sản xuất điện tử Hình 7: Sơ đồ chân DHT11 Thơng số kỹ thuật Nguồn điện: 3,5v đến 5v Phạm vi nhiệt độ: từ 0ºC đến 50ºC Độ xác để đo nhiệt độ 25ºC, dao động khoảng 2ºC Độ phân giải để đo nhiệt độ 8-bit, 1ºC Độ ẩm đo từ 20% RH đến 90% RH Độ ẩm xác 5% RH cho nhiệt độ từ 0-50ºC Tần số lấy mẫu tối đa 1Hz (1 giây lần) DHT11 sử dụng giao thức 1-Wire để giao tiếp với vi điều khiển Giới thiệu chuẩn 1-Wire: 1-Wire hệ thống bus giao tiếp với thiết bị 1-Wire hỗ trợ truyền liệu tốc độ thấp (16.3 kbit/s), truyền tín hiệu, nguồn ni qua chân tín hiệu đơn Mơ hình kết nối phương thức hoạt động chuẩn 1-wire: Dây tín hiệu 1-Wire phải treo lên Vcc Và cấu hình GPIO dạng Open Drain Về nguyên lý, chuẩn Onewire giao tiếp với nhiều thiết bị mạng theo sơ đồ sau: Hình 8: Sơ đồ truyền thông chuẩn 1-Wire Phương thức hoạt động 1-Wire Để 1-Wire hoạt động, có phương thức sử dụng là: Reset, Write bit 0, Write bit 1, Read Reset: Chuẩn bị giao tiếp Master cấu hình chân data Ouput, kéo xuống khoảng H nhả để trở treo kéo lên mức Sau cấu hình Master chân Input, delay I (us) đọc giá trị slave trả Nếu = cho phép giao tiếp Nếu data = đường truyền lỗi slave bận Write 1 : truyền bit : Master kéo xuống A mức B (us) Write 0 : truyền bit : Master kéo xuống C trả 1trong D (us) Read : Đọc Bit : Master kéo xuống khoảng A trả delay khoảng E(us) đọc giá trị slave gửi Các bạn phải bắt tín hiệu khoảng F Sau khoảng Slave nhả chân F trạng thái (IDLE – Rảnh rỗi) Hình 9: Phương thức giao tiếp chuẩn 1-Wire Để giao tiếp Wire xác, cần tạo delay xác tới (us) Phương thức giao tiếp DHT11: Tín hiệu tương tự từ cảm biến chuyển đổi thành tín hiệu số để gửi đến vi điều khiển Nó truyền khung 40 bit tương ứng với thông tin độ ẩm nhiệt độ DHT11 ghi lại Một gói tin (packet) DHT11 bao gồm 40bit, tương ứng với 5byte 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 ( Check Sum) tổng byte phía trước cộng lại DHT11 gửi MSB (bit có trọng số lớn ) tức byte gửi đầu tiên, cuối byte Hình 10: Cấu tạo gói tin DHT11 10 chuyển đổi liệu trở lại dạng song song loại bỏ bit start, bit chẵn lẻ bit stop Cuối cùng, UART nhận chuyển gói liệu song song với bus liệu đầu nhận Hình 20: Giao tiếp UART thiết bị Dữ liệu truyền qua UART tập hợp thành gói (packet) Mỗi gói chứa bit start, đến bit liệu (tùy thuộc vào UART), bit chẵn lẻ (parity bit) tùy chọn bit stop Hình 21: Một tin UART 2.3 ADC Bộ chuyển đôi tương tự sang số Đại lượng tương tự Điện áp V từ biến trở so sánh với điện áp mẫu sau chuyển đổi thành số lưu vào ghi DATA chuyển đổi tham số quan trọng ADC: Tốc độ lấy mẫu (sampling) tính theo số chu kì chuyển đổi Ở nhóm chọn 239.5 Cycles Độ phân giải: Tính theo Bit ADC có độ phân giải 10 Bit có 2^10 = 1024 giá trị 16 Sơ đồ ghép nối STM32 module phần cứng STM32 đọc liệu từ cảm biến nhiệt độ độ ẩm DHT11 giá trị điện áp biến trở Sau truyền giá trị đọc máy tính qua module TTL CH340 dùng giao tiếp UART Hình 22: Mạch nguyên lý mô proteus 17 Thiết kế lưu đồ thuật toán giao tiếp 4.1 STM32 cảm biến DHT11 Hình 23: Lưu đồ thuật tốn STM32 cảm biến DHT11 18 4.2 STM32 biến trở: Hình 24: Lưu đồ thuật tốn STM32 biến trở III THIẾT KẾ VÀ LẬP TRÌNH CHƯƠNG TRÌNH Phân tích u cầu xử lý để đảm bảo tính thời gian thực Đảm bảo thời gian phần mềm Việc thiết kế hệ thống thời gian thực cần phải đảm bảo yêu cầu: Giới hạn thời gian thực phải xác định rõ Giới hạn thời gian bao gồm việc truyền liệu qua kết nối có dây khơng dây Giới hạn thường gọi thời gian thực thi xấu (WCET) Nếu liệu ta phân tích WCET > chu kỳ đo WCET > deadline khơng thể đảm bảo tính thời gian thực Lúc ta phải thay cách tổ chức chương trình, thay vi xử lý có hiệu cao Ở toán này, Task thực đo điện áp đầu thực thời gian ngắn (khoảng vài ms) Trong khi, Task đo nhiệt độ độ ẩm yêu cầu chu kì 19 lấy mẫu DHT ~ 1,2s nên việc giới hạn thời gian thực cần phải xác định rõ Lựa chọn mơ hình lập trình Lập trình theo task riêng lẻ Các task tốn có chu kỳ lặp lại khác Khi ta cần đảm bảo tính thời gian thực cho riêng lẻ task Vấn đề xảy ta phải xác định lịch trình khả thi với task đo nhiệt độ độ ẩm có thời gian thực dài Các task dài phân chia thành chuỗi task ngắn cách tồn nhiều rủi ro liệu task nhỏ phải trích xuất lưu trữ tồn cục Hình 25: Lập trình theo task riêng lẻ Để giải vấn đề này, chu kỳ P phân chia thành khung có độ dài f khác với f xác định WCET dài task Hình 26: Một tập task định kỳ Theo bảng liệu ta tổng hợp mối liên hệ: ri,j = Φi + (j-1)Ti Tất task định kỳ ứng với thời gian deadline tương ứng: Di,j = Φi + (j-1)Ti + Di thực: Đi kèm số yêu cầu, điều kiện cho task để đảm bảo tính thời gian 20