(Tiểu luận) báo cáo bài tập lớn môn đồ án thiết kế hệ thống nhúng

42 9 0
(Tiểu luận) báo cáo bài tập lớn môn đồ án thiết kế hệ thống nhúng

Đ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

`` BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIẾN THƠNG - - BÁO CÁO BÀI TẬP LỚN MÔN: ĐỒ ÁN THIẾT KẾ HỆ THỐNG NHÚNG Giảng viên: Nguyễn Ngọc Minh Nhóm: 08 Thành viên nhóm: Nguyễn Mạnh Hùng – B18DCDT093 Nguyễn Văn Khởi – B18DCDT117 Phạm Minh Hạnh – B18DCDT065 h Nguyễn Đức Anh - B18DCDT005 Hà Nội, tháng năm 2022 Báo cáo đồ án hệ thống nhúng Nhóm Lời cảm ơn Trước tiên với tình cảm sâu sắc chân thành nhất, cho phép chúng em xin gửi lịng biết ơn đến q thầy Học viện Cơng nghệ Bưu Viễn thơng tạo điều kiện hỗ trợ, giúp đỡ chúng em suốt trình học tập nghiên cứu vừa qua Đặc biệt, học kỳ này, học viện tổ chức cho chúng em tiếp cận với mơn học hữu ích sinh viên Chúng em xin chân thành cảm ơn thầy Nguyễn Ngọc Minh tận tâm hướng dẫn chúng em môn học đồ án thiết kế hệ thống nhúng Thầy bên cạnh, tạo điều kiện suốt trình nghiên cứu, động viên giúp đỡ để chúng em hoàn thành tốt báo cáo Do kiến thức nhiều hạn chế khả tiếp thu thực tế nhiều bỡ ngỡ chưa hồn hảo nên báo cáo cịn nhiều thiếu sót, kính mong góp ý giúp đỡ từ thầy Cuối chúng em xin kính chúc quý thầy cô dồi sức khỏe, niềm tin để h tiếp tục thực sứ mệnh cao đẹp truyền đạt kiến thức cho hệ mai sau Chúng em xin chân thành cảm ơn Trang | Báo cáo đồ án hệ thống nhúng Nhóm MỤC LỤC 1, Tổng quan 1.1 Arduino 1.2 Module L298 1.3 Động giảm tốc 1.4 Module LCD16x02 1.5 Mạch chuyển đổi giao tiếp LCD 1.6 Tay Điều Khiển PS2 Wireless Controller 1.7 Mạch chuyển mức tín hiệu PS2 2, Cơ sở lý thuyết 10 2.1 Chuẩn giao tiếp I2C 10 2.1.1 Giới thiệu 10 2.1.2 Giao thức truyền liệu 10 2.2 Chuẩn giao tiếp UART 13 13 2.2.2 Giao thức truyên liệu 14 h 2.2.1 Giới thiệu 2.3 Hệ điều hành thời gian thực FreeRTOS 15 2.3.1 RTOS ? 15 2.3.2 Khi cần sử dụng RTOS ? 15 2.3.3 Tại lại phải dụng RTOS ? 16 2.3.4 Cách hoạt động RTOS 16 2.3.5 Các khái niệm hệ điều hành thời gian thực RTOS 17 Vận dụng 19 3.1 Hình thành hệ thống 19 3.2 Giao tiếp HC06 với arudino 19 3.3 Giao tiếp tay cầm PS2 với arudino 21 3.4 Giao tiếp LCD1602 I2C 28 3.5 Sử dụng FreeRTOS hệ thống 29 4, Kết quả, nhận xét 36 5, Tài liệu tham khảo 37 Trang | Báo cáo đồ án hệ thống nhúng Nhóm 1, Tổng quan 1.1 Arduino ⮚ Arduino bo mạch vi điều khiển nhóm giáo sư sinh viên nước Ý thiết kế đưa vào năm 2005 Mạch Arduino sử dụng để cảm nhận điều khiển nhiều đối tượng khác Nó thực nhiều nhiệm vụ lấy tín hiệu từ cảm biến đến điều khiển đèn, động cơ, nhiều đối tượng khác Ngồi mạch cịn có khả liên kết với nhiều module khác module đọc thẻ từ, ethernet shield, sim900A, ….để tăng khả ứng dụng mạch ⮚ Phần cứng bao gồm board mạch nguồn mở thiết kế tảng vi xử lý AVR Atmel 8bit, ARM, Atmel 32-bit,… Hiện phần cứng Arduino có tất phiên bản, Tuy nhiên phiên thường sử dụng nhiều Arduino Uno Arduino Mega h Hình 1.1 Cấu tạo arduino Trang | Báo cáo đồ án hệ thống nhúng Nhóm ⮚ Thơng số Arduino Uno R3 ● Vi điều khiển Atmega 328 (họ bit) ● Điện áp hoạt động 5V – DC (cấp qua cổng USB) ● Tần số hoạt động16 MHz ● Dòng tiêu thụ 30mA ● Điện áp vào khuyên dùng – 12V – DC ● Điện áp vào giới hạn – 20V – DC ● Số chân Digital I/O 14 (6 chân PWM) h ● Số chân Analog (độ phân giải 10 bit) ● Dòng tối đa chân I/O 30 mA ● Dòng tối đa (5V) 500 mA ● Dòng tối đa (3.3V) 50 mA ● Bộ nhớ flash ● SRAM 32 KB (Atmega328) với 0.5KB dùng bootloader 2KB (Atmega328) ● EEPROM 1KB (Atmega328) 1.2 Module L298 ⮚ Mạch điều khiển động DC L298 có khả điều khiển động DC, dòng tối đa 2A động cơ, mạch tích hợp diod bảo vệ IC nguồn 7805 giúp cấp Trang | Báo cáo đồ án hệ thống nhúng Nhóm nguồn 5VDC cho module khác (chỉ sử dụng 5V nguồn cấp 0) { read_data = mySerial.read(); if (read_data == 'F') Car_Go_Up(); else if (read_data == 'B') Car_Go_Down(); else if (read_data == 'R') Car_Go_Right(); else if (read_data == 'L') Car_Go_Left(); else if (read_data == 120) { Serial.println("State 1"); Trang | Báo cáo đồ án hệ thống nhúng Nhóm 3.4 Giao tiếp LCD1602 I2C h Hình 3.5 Sơ đồ kết nối arduino với LCD I2C ⮚ Code: #include #include LiquidCrystal_I2C lcd(0x3F,16,2); void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(2,0); lcd.print("Arduinokit.vn"); lcd.setCursor(0,1); lcd.print("Xin chao cac ban"); } Trang | Báo cáo đồ án hệ thống nhúng Nhóm 3.5 Sử dụng FreeRTOS hệ thống Hình 3.6 Sơ đồ khối ý tưởng ⮚ Tạo hai tác vụ freeRTOS sử dụng xTaskCreate() h ⮚ Xử lý TASK1: Trang | Báo cáo đồ án hệ thống nhúng Nhóm h Trang | Báo cáo đồ án hệ thống nhúng Nhóm ⮚ Code: void task1_Handle(void *pvParameters) // This is a task { state = 1; Serial.begin(9600); mySerial.begin(9600); lcd.init(); lcd.backlight(); pinMode (2, OUTPUT); pinMode (3, OUTPUT); pinMode (4, OUTPUT); pinMode (5, OUTPUT); uint8_t receiveData; uint8_t receiveState; if (xQueueReceive(queueCheckBuffer, &receiveState, 10)) h { // Check for error if(receiveState == 0) { //"Found Controller, configured successful); lcd.setCursor(0,0); lcd.print("Found Controller"); } else if(receiveState == 1) { //"No controller found, check wiring or reset the Arduino"; lcd.setCursor(0,0); lcd.print("No found "); } else if(receiveState == 2) { Trang | Báo cáo đồ án hệ thống nhúng Nhóm lcd.setCursor(0,0); lcd.print("Successful "); } } while(1) { if (state) { if (receiveData == 5) if (xQueueReceive(queueBuffer, &receiveData, 10) ) { { lcd.setCursor(0,1); if (receiveData == 1) { lcd.print("Stop "); Serial.println("Stop"); Serial.println("Go up"); Car_Stop(); lcd.setCursor(0,1); } lcd.print("Go up "); h if (receiveData == 6) Car_Go_Up(); { } lcd.setCursor(0,1); if (receiveData == 2) { lcd.print("Bluetooth "); Serial.println("Bluetooth"); lcd.setCursor(0,1); Car_Stop(); lcd.print("Turn right "); state = 0; Serial.println("Turn right "); vTaskSuspend(taskHandlePS2Car); Car_Go_Right(); } } } } if (receiveData == 3) { if (state == 0) lcd.setCursor(0,1); { lcd.print("Turn left "); if (mySerial.available() > 0) Serial.println("Turn left { "); Car_Go_Left(); read_data = mySerial.read(); } if (read_data == 'F') Car_Go_Up(); else if (read_data == 'B') Car_Go_Down(); else if (read_data == 'R') Car_Go_Right(); else if (read_data == 'L') Car_Go_Left(); Trang | Báo cáo đồ án hệ thống nhúng Nhóm ⮚ Xử lý Task 2: h Trang | Báo cáo đồ án hệ thống nhúng Nhóm h ⮚ Code Trang | Báo cáo đồ án hệ thống nhúng Nhóm void task2_ps2_car(void *pvParameters) // This is a task { error = ps2x.config_gamepad(12,11,10,13, true, true); //setup pins and settings: GamePad(clock, command, attention, data, Pressures?, Rumble?) check for error xQueueSend(queueCheckBuffer, &error, 10); uint16_t dataFromTask3; while(1) { if(error == 1) { //skip loop if no controller found } // return; else { //DualShock Controller h ps2x.read_gamepad(false, vibrate); // disable vibration of the controller // Perform movements based on D-pad buttons // MOVE FORWARD if(ps2x.Button(PSB_PAD_UP)) { dataFromTask3 = 1; } // TURN RIGHT if(ps2x.Button(PSB_PAD_RIGHT)) { dataFromTask3 = 2; { dataFromTask3 = 4; } if(ps2x.Button(PSB_PINK)) { dataFromTask3 = 6; Trang | } Báo cáo đồ án hệ thống nhúng Nhóm 4, Kết quả, nhận xét h Hình 4.1 Hình ảnh sản phẩm thực tế nhóm ⮚ Nhận xét: Trang | Báo cáo đồ án hệ thống nhúng Nhóm ● Sản phẩm nhóm mang tính chất học tập ● Vận dụng hệ điều hành FreeRTOS để xử lý yêu cầu đề tài, song nhiều hạn chế cần khắc phục ⮚ Định hướng: Nhóm tiến hành làm thêm chế độ dị line PID, tránh vật cản, cánh tay robot vận dụng open cv, AI 5, Tài liệu tham khảo https://khuenguyencreator.com/tong-quan-ve-he-dieu-hanh-thoi-gian-thuc-rtos/ https://www.arduino.cc/reference/en/language/functions/communication/serial/read/ https://www.dientuhello.com/suu-tam-lap-trinh-tay-dieu-khien-ps2-khong-day-voiarduino/ h Trang | Báo cáo đồ án hệ thống nhúng Nhóm h Trang |

Ngày đăng: 12/12/2023, 15:08

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan