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

Đề tài xe tự hành tránh vật cản

24 1 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

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Đề tài: Xe tự hành tránh vật cản Ngành: Công nghệ kỹ thuật điện tử Lớp: K64M-CLC2 Mã lớp học phần: EMA3129 21 Giảng viên hướng dẫn: T.S Đỗ Trần Thắng Phạm Mạnh Tuấn Thành viên nhóm: Nguyễn Viết Đông-19021016 Nguyễn Quang Đại-19021010 Nghiêm Quang Huy-19021063 Hà Nội – 2022 MỤC LỤC CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1.1 Đặt vấn đề 1.2 Mục tiêu nghiên cứu 1.3 Phương pháp nghiên cứu CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 GIỚI THIỆU PHẦN CỨNG 2.1.1 Giới thiệu Raspberry Pi 3 2.1.2 Hệ điều hành phần mềm 2.1.3 Mạch công suất cầu H (L298N) 2.1.4 Cảm biến siêu âm 2.1.5 Động DC 10 CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG 11 3.1 Thiết kế sơ đồ khối hệ thống 11 3.2 Sơ đồ nguyên lý 11 CHƯƠNG 4: KẾT QUẢ THỰC NGHIỆM 12 CHƯƠNG 5: TỔNG KẾT 13 5.1 Những điều làm 13 CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1.1 Đặt vấn đề Ngày nay, người với ứng dụng khoa học kỹ thuật tiên tiến giới, ngày thay đổi, văn minh đại Sự phát triển kỹ thuật điện tử tạo hàng loạt thiết bị với đặc điểm bật xác cao, tốc độ nhanh, gọn nhẹ…là yếu tố cần thiết góp phần cho hoạt động người đạt hiệu ngày cao Vi xử lý điều khiển trở thành ngành khoa học đa nhiệm vụ Nó đáp ứng địi hỏi không ngừng ngành, lĩnh vực khác nhu cầu thiết yếu người sống hàng ngày Xuất phát từ ứng dụng đó, chúng em thiết kế thực đề tài: “Điều khiển xe mơ hình với Raspberry Pi Module L298N” 1.2 Mục tiêu nghiên cứu ❖ Đề tài có mục tiêu sau: – Điều khiển xe robot chạy tiến, lùi, trái phải – Sử dụng cảm biến siêu âm trước để tránh vật cản – Viết chương trình điều khiển cho kit raspberry pi – Thi cơng mơ hình xe robot – Sản phẩm cuối chạy thực tế 1.3 Phương pháp nghiên cứu – Tìm hiểu tổng quan lý thuyết đề tài – Đọc hiểu tài liệu liên quan đến đề tài – Thảo luận nhóm để thống ý kiến – Thiết kế phần cứng – Thiết kế phần mềm – Thực nghiệm kiểm chứng sản phẩm CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 GIỚI THIỆU PHẦN CỨNG 2.1.1 Giới thiệu Raspberry Pi a Raspberry Pi Raspberry Pi máy tính giá 35USD kích cỡ iPhone chạy hệ điều hành Linux Với mục tiêu chương trình giảng dạy máy tính cho trẻ em Được phát triển Raspberry Pi Foundation – tổ chức phi lợi nhuận với tiêu chí xây dựng hệ thống mà nhiều người sử dụng công việc tùy biến khác Raspberry Pi sản xuất OEM: Sony, Qsida, Egoman Và phân phối Element14, RS Components Egoman Raspberry pi đời nhằm tạo máy tính rẻ tiền cho sinh viên, sau pi quan tâm nhiều người Đặc tính Raspberry Pi xây dựng xoay quanh xử lí SoC Broadcom BCM2835 ( chip xử lí mobile mạnh mẽ có kích thước nhỏ hay dùng điện thoại di động ) bao gồm CPU , GPU , xử lí âm /video tính khác … tất tích hợp bên chip có điện thấp b Cấu trúc phần cứng raspberry pi – Raspberry Pi có hai phiên bản, Model A có giá 25$ Model B có giá 35$ Model B hình thơng dụng Model B bao gồm phần cứng cổng giao diện – CPU: “Trái tim” board mạch Raspberry Pi sử dụng vi xử lý BCM2836 Broadcom Đây loại SoC (system on chip) tức chip tích hợp lúc: – CPU: 900 MHz ,4 nhân, kiến trúc ARM Cortex-A7 Vì sử dụng ARM Cortex-A7 nên Raspberry Pi chạy Ubuntu core Windows 10 core mượt mà – SD RAM: GB – GPU: Broadcom VideoCore IV @ 250 MHz – Khe cắm thẻ micro-SD: Có thể nhận thấy khơng có ổ cứng Raspberry Pi thay vào thẻ nhớ SD Tất liệu lưu trữ thẻ nhớ Cần dùng thẻ 4GB class (4MB/s) cho Raspberry Pi (khuyên dùng thẻ 8GB class 10) – Cổng USB: Raspberry Pi có cổng USB 2.0 Đủ để bạn cắm ngoại vi cần thiết chuột, bàn phím usb wifi – Cổng Ethernet: Model có cổng Ethernet chuẩn RJ45 – Cổng HDMI: Dùng để truyền tín hiệu Video Audio số Có tới 14 chuẩn video hỗ trợ tín hiệu HDMI dễ dàng chuyển đổi thành chuẩn khác DVI, RCA, SCART – Ngõ Audio-Video: Ngõ giắc cắm chuẩn 3.5mm, hỗ trợ cho người dùng khơng có hình hỗ trợ HDMI Âm hình ảnh lấy từ cổng có chất lượng chút so với từ cổng HDMI – Cổng cấp nguồn Micro USB: Một điều nhận thấy Raspberry Pi khơng có nút nguồn Micro USB chọn làm cổng cấp nguồn Nguồn cấp cho Raspberry Pi 5v điện áp (bắt buộc) dòng nên lớn hớn 1A Cấp nguồn 5v dễ làm cháy board mạch – Cổng DSI (Display Serial Interface): Cổng dùng để kết nối với LCD hình OLED – Cổng CSI (Camera Serial Interface): Cổng dùng để kết nối với module camera riêng Raspberry Pi Module thu hình ảnh chất lượng lên đến 1080p – GPIO (General Purpose Input and Output): Giống chân vi điều khiển, IO Raspberry Pi sử dụng để xuất tín hiệu led, thiết bị… đọc tín hiệu vào từ nút nhấn, cơng tắc, cảm biến… Ngồi cịn có IO tích hợp chuẩn truyền liệu UART, I2C SPI.Sơ đồ chân GPIO Raspberry pi Hnh 2.3: Sơ đồ chân GPIO Raspberry ❖ Trong 40 chân GPIO bao gồm: – 26 chân GPIO Khi thiết lập input, GPIO sử dụng chân interupt, GPIO 14 & 15 thiết lập sẵn chân input – 1UART, I2C, SPI, PWM (GPIO 4) – chân nguồn 5V, chân nguồn 3.3V, chân GND – chân ID EEPROM – Vi xử lý ARMv7 32bit quad core 900Mhz, dung lượng Ram 1G, nhớ kiểu micro-SD dung lượng tùy chọn (nên >=4G) – Khi chân GPIO lên mức cao đạt điện áp 3.3V, dòng tối đa Imax = 5mA 2.1.2 Hệ điều hành phần mềm Về Raspberry Pi có nhiều OS linux chạy có thiếu vắng Ubuntu (do CPU ARMv6) Điểm danh số Distributions Linux (nhúng) chạy Raspberry Pi Raspbian,Pidora, openSUSE, OpenWRT, OpenELEC,… a Raspbian Đây build Linux dựa nên Debian (Gần giống ubuntu) với giao diện LXDE (thay GNOME) Có đầy đủ web browser, media player, tools, etc … Nói chung HĐH dành cho người muốn dùng Raspberry Pi PC b Ubuntu Mate Tương tự Raspbian, Ubuntu Mate hướng đến người dùng sử dụng Raspberry Pi máy tính văn phịng Tuy nhiên Ubuntu Mate có giao diện đẹp nhiều so với Raspbian Được phát triển từ Ubuntu – hệ điều hành xem đối đầu trực tiếp với Windows Martin Wimpress Rohith Madhavan cha đẻ Ubuntu Mate phát triển từ Ubuntu gốc Theo tác giả, tối ưu tốt với Raspberry Pi 3, nhiên để đảm bảo tốc độ cao bạn nên sử dụng thẻ MicroSD từ class trở lên Theo đánh giá chúng tôi, Ubuntu Mate (15.04) có tốc độ nhanh, giao diện đẹp, hỗ trợ đầy đủ phần mềm thơng dụng cho nhu cầu văn phịng 2.1.3 Mạch công suất cầu H (L298N) a Định nghĩa Mạch cầu H điều khiển động L298N cho phép bạn kiểm soát tốc độ hướng hai động DC ,hoặc kiểm soát động bước lưỡng cực cách dễ dàng Hnh 2.6: Module mạch cầu H L298N b Cấu tạo Mạch cầu H – 2V power, 5V power Đây chân cấp nguồn trực tiếp đến động – Power GND chân GND nguồn cấp cho Động – Jump A enable B enable, để hình, Gồm có chân Input IN1, IN2, IN3, IN4 Chức chân tơi giải thích bước sau Output A: nối với động A bạn ý chân +, - Nếu bạn nối ngược động chạy ngược Và ý bạn nối động bước, bạn phải đấu nối pha cho phù hợp ❖ Sơ đồ nguyên lý: c Nguyên lý hoạt động – Hai chân ENA ENB dùng để điều khiển mạch cầu H L298 Nếu mức logic “1” (nối với nguồn 5V) cho phép mạch cầu H hoạt động, mức logic “0” mạch cầu H không hoạt động – Khi ENA = 0: Động không quay với đầu vào – Khi ENA = 1: – INT1 = 1; INT2 = 0: động quay thuận – INT1 = 0; INT2 = 1: động quay nghịch – INT1 = INT2: động dừng tức d Thơng số kỹ thuật – Driver: L298N tích hợp hai mạch cầu H – Điện áp điều khiển: +5 V ~ +12 V – Dòng tối đa cho cầu H là: 2A (=>2A cho motor) – Điện áp tín hiệu điều khiển: +5 V ~ +7 V – Dịng tín hiệu điều khiển: ~ 36mA (Arduino chơi đến 40mA nên khỏe re bạn) – Công suất hao phí: 20W (khi nhiệt độ T = 75 ℃) – Nhiệt độ bảo quản: -25 ℃ ~ +130 ℃ 10 2.1.4 Cảm biến siêu âm a Định nghĩa Cảm biến khoảng cách siêu âm HC-SRF04 sử dụng phổ biến để xác định khoảng cách rẻ xác Cảm biến sử dụng sóng siêu âm đo khoảng cách khoảng từ -> 300 cm, với độ xác gần phụ thuộc vào cách lập trình Hnh 2.8: Module cảm biến siêu âm b Cấu tạo Có chân Vcc, Trig, Echo, GND c Nguyên lý hoạt động Hnh 2.9: Nguyên lý hoạt động SR04 Để đo khoảng cách, ta phát xung ngắn (5 microSeconds ) 11 từ chân Trig Sau đó, cảm biến tạo xung High chân Echo nhận lại sóng phản xạ pin Chiều rộng xung với thời gian sóng siêu âm phát từ cảm biển quay trở lại Tốc độ âm khơng khí 340 m/s (hằng số vật lý), tương đương với 29,412 microSeconds/cm (106 / (340*100)) Khi tính thời gian, ta chia cho 29,412 để nhận khoảng cách ❖ Nguyên tắc phát nhận phản hồi sóng siêu âm SRF04 Nguyên tắc sonar: tạo xung âm điện tử sau lắng nghe tiếng vọng tạo sóng âm số truy cập đối tượng phản xạ trở lại Để tính thời gian cho phản hồi trở về, ước tính xác làm khoảng cách tới đối tượng Xung âm tạo SRF04 siêu âm, nghĩa phạm vi nhận xét người Trong tần số thấp sử dụng loại ứng dụng, tần số cao thực tốt cho phạm vi ngắn, nhu cầu độ xác cao Một số đặc điểm khác cảm biến siêu âm SRF04 Mức độ sóng âm hồi tiếp phụ thuộc vào cấu tạo đối tượng góc phản xạ nó: 12 Một tín hiệu mềm cho tín hiệu phản hồi yếu khơng có phản hồi Một đối tượng góc cân đối chuyển thành tín hiệu phản chiếu cho cảm biến nhận Nếu ngưỡng vùng phát đối tượng đặt gần so với cảm biến, đối tượng đường bị va chạm điểm mù Nếu ngưỡng đặt khoảng cách lớn từ cảm biến đối tượng phát mà đường va chạm 2.1.5 Động DC a Giới thiệu động DC Motor giảm tốc 12v (min 6v) DC365 loại motor kim loại sử dụng loại hộp giảm tốc GA25 bánh thép Bền có độ xác cao 13 giá thành tốt b Thông số kỹ thuật – Dải điện áp hoạt động: 6V – 12V ❖ Tốc độ động cơ: – Tại điện áp 6V, dòng 0,15A: tốc độ 110 vòng/phút – Tại điện áp 12V có dịng 0,18A tốc độ 240 vịng/phút 14 CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG ❖ Sơ đồ khối ❖ Code: import RPi.GPIO as GPIO import time from time import delay dis = 30 IN1 = 13 IN2 = 12 IN3 = 21 IN4 = 20 ENA = ENB = 26 15 GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) GPIO.setup(IN1,GPIO.OUT) GPIO.setup(IN2.GPIO.OUT) GPIO.setup(IN3.GPIO.OUT) GPIO.setup(IN4.GPIO.OUT) GPIO.setup(ENA.GPIO.OUT) GPIO.setup(ENB.GPIO.OUT) PWMA = GPIO.PWM(ENA,500) PWMB = GPIO.PWM(ENB,500) PWMA.start(0) PWMB.start(0) def backward(): GPIO.output(IN1,GPIO.HIGH) GPIO.output(IN2,GPIO.LOW) GPIO.output(IN3,GPIO.LOW) GPIO.output(IN4,GPIO.HIGH) PWMA.ChangeDutyCycle(100) PWMB.ChangeDutyCycle(100) def stopmotor(): GPIO.output(IN1,GPIO.LOW) GPIO.output(IN2,GPIO.LOW) GPIO.output(IN3,GPIO.LOW) GPIO.output(IN4,GPIO.LOW) PWMA.ChangeDutyCycle(0) 16 PWMB.ChangeDutyCycle(0) def forward(): GPIO.output(IN1,GPIO.LOW) GPIO.output(IN2,GPIO.HIGH) GPIO.output(IN3,GPIO.HIGH) GPIO.output(IN4,GPIO.LOW) PWMA.ChangeDutyCycle(100) PWMB.ChangeDutyCycle(100) def right(): GPIO.output(IN1,GPIO.LOW) GPIO.output(IN2,GPIO.HIGH) GPIO.output(IN3,GPIO.LOW) GPIO.output(IN4,GPIO.LOW) PWMB.ChangeDutyCycle(100) def left(): GPIO.output(IN1,GPIO.LOW) GPIO.output(IN2,GPIO.LOW) GPIO.output(IN3,GPIO.HIGH) GPIO.output(IN4,GPIO.LOW) PWMA.ChangeDutyCycle(100) while True : GPIO.setmode(GPIO.BCM) 17 GPIO_TRIGGER_FORWARD = 23 GPIO_ECHO_FORWARD = 24 GPIO.setup(GPIO_TRIGGER_FORWARD,GPIO.OUT) GPIO.setup(GPIO_ECHO_FORWARD,GPIO.IN) GPIO.output(GPIO_TRIGGER_FORWARD, False) time.sleep(0.05) GPIO.output(GPIO_TRIGGER_FORWARD, True) time.sleep(0.00001) GPIO.output(GPIO_TRIGGER_FORWARD, False) start = time.time() while GPIO.input(GPIO_ECHO_FORWARD)==0: start = time.time() while GPIO.input(GPIO_ECHO_FORWARD)==1: stop = time.time() elapsed_forward = stop-start distance_forward = elapsed_forward * 17150 print ("Distance_forward: ",distance_forward) sleep(0.002) GPIO.setmode(GPIO.BCM) GPIO_TRIGGER_RIGHT = GPIO_ECHO_RIGHT = 25 GPIO.setup(GPIO_TRIGGER_RIGHT,GPIO.OUT) 18 GPIO.setup(GPIO_ECHO_RIGHT,GPIO.IN) GPIO.output(GPIO_TRIGGER_RIGHT, False) time.sleep(0.05) GPIO.output(GPIO_TRIGGER_RIGHT, True) time.sleep(0.00001) GPIO.output(GPIO_TRIGGER_RIGHT, False) start = time.time() while GPIO.input(GPIO_ECHO_FORWARD)==0: start = time.time() while GPIO.input(GPIO_ECHO_RIGHT)==1: stop = time.time() elapsed_right = stop-start distance_right= elapsed_right * 17150 print ("Distance_right:",distance_right) GPIO.setmode(GPIO.BCM) GPIO_TRIGGER_LEFT = 22 GPIO_ECHO_LEFT = 27 GPIO.setup(GPIO_TRIGGER_LEFT,GPIO.OUT) GPIO.setup(GPIO_ECHO_LEFT,GPIO.IN) GPIO.output(GPIO_TRIGGER_LEFT, False) time.sleep(0.05) GPIO.output(GPIO_TRIGGER_LEFT, True) time.sleep(0.00001) 19 GPIO.output(GPIO_TRIGGER_LEFT, False) start = time.time() while GPIO.input(GPIO_ECHO_LEFT)==0: start = time.time() while GPIO.input(GPIO_ECHO_LEFT)==1: stop = time.time() elapsed_left = stop-start distance_left = elapsed_left * 17150 print ("Distance_left: ",distance_left) sleep(0.002) if distance_leftdis and distance_right>dis : right() sleep(0.2) elif distance_left>dis and distance_forwarddis : if distance_left>distance_right : left() sleep(0.2)) if distance_leftdis and distance_forward>dis and distance_right

Ngày đăng: 13/06/2023, 14:41

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

TÀI LIỆU LIÊN QUAN

w