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

BÁO cáo bài tập lớn đề tài xe điều khiển từ xa

20 309 2

Đ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

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 689,38 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

LỜI NÓI ĐẦUNgày nay, nền khoa học kỹ thuật đang phát triển như vũ bão, rất nhiều các phát minh, sản phẩm công nghệ mới ra đời.. Các robot tự động đang là xu hướng công nghệ tương lai vì

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN CƠ KHÍ

**********************

Đề tài: Xe điều khiển từ xa

Giáo viên hướng dẫn: TS: Bùi Đình Bá

Lớp: Cơ điện tử

Nhóm sinh viên thực hiện: Nguyễn Văn Giang 20184424

Nguyễn Văn Thắng 20184617 Trương Quý Huy 20184490

Hà Nội 1-2018

Trang 2

LỜI NÓI ĐẦU

Ngày nay, nền khoa học kỹ thuật đang phát triển như vũ bão, rất nhiều các phát minh, sản phẩm công nghệ mới ra đời Các robot tự động đang là xu hướng công nghệ tương lai vì

sự tiện dụng, khả năng hoạt động chính xác trong các điều khiện khắc nghiệt với con người Một yêu cầu cơ bản của các robot tự động là khả năng hoạt động theo chức năng mong muốn mà không cần sự can thiệp của con người trong quá trình làm việc Đây là cơ hội, cũng là thách thức cho các sinh viên kỹ thuật nói chung và sinh viên trường Đại học Bách Khoa Hà Nội nói riêng Để chuẩn bị kiến thức và kỹ năng cần thiết trong bối cảnh nói trên, môn học Đồ án 2 được đưa vào chương trình đào tạo kỹ sư Điện tử viễn thông

để cho sinh viên môi trường làm việc sáng tạo, thực hiện các ý tưởng kỹ thuật Trong thời lượng môn học này, dưới sự hướng dẫn của thầy Bùi Đình Bá, nhóm chúng em thực hiện

đề tài Thiết kế xe điều khiển từ xa bằng bluetooth

Xe điều khiển là một trong những ý tưởng robot cơ bản nhất, có thể được sử dụng cho mục đích vận tải trong quy mô nhỏ, hoặc kết hợp với các modun khác để thực hiện các nhiệm vụ phức tạp hơn

Trang 3

Mục Lục Lời nói đầu……….1

Trang 4

I: Giới thiệu chung

Robot đã và đang xuất hiện trong cuộc sống của chúng ta từ lâu và ngày càng trở thành một phần không thể thiếu trong cuộc sống hiện đại Chúng đã góp phần mình vào công cuộc lao động, chính robot đang làm nên một cuộc cách mạng về lao động, khoa học, và đang phục vụ đắc lực cho các ngành khoa học như: Khoa học quân sự, khoa học giáo dục, các ngành dịch vụ, giải trí

Trong đề tài này, nhóm em sẽ thực hiện thiết kế một chiếc xe điều khiển từ xa từ các bước đầu tiên như đưa ra yêu cầu chức năng, phi chức năng… cho tới bước đưa ra sản phẩm mẫu hoàn chỉnh

II: Ý tưởng thiết kế

Robot có nhiệm vụ di chuyển theo bảng điều khiển trên máy tính đã được lập trình sẵn thông qua Bluetooth có thể tiến, lùi, quay trái, quay phải, hoặc có thể tự nhận biết vật cản, khoảng cách và tránh vật cản đó

III: Link kiện lựa chọn

Vì xe chỉ đơn giản là xe điều khiển từ xa nên các yêu cầu cơ khí của xe cũng không cần cầu kỳ, chỉ cần đảm bảo độ bền và giá thành rẻ

 Linh kiện cần thiết:

- Giá đỡ kích thước 70*85mm

- Hai bánh xe đường kính 35mm gắn vào 2 trục động cơ khác nhau

- Một bánh xe đa hướng gắn ở đầu xe

- 2 động cơ DC một chiều

- Nguồn pin 12V

- Arduino UNO

- Module điều khiển động cơ L298 mạch cầu

- Cảm biến khoảng các HC-SR04

Trang 5

1 Arduino UNO

- Như bộ não giúp chúng ta liên kết và điều khiển các linh kiện điện tử

Các thông số cơ bản:

Vi điều khiển ATmega328 họ 8bit

Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB) Tần số hoạt động 16 MHz

Dòng tiêu thụ khoảng 30mA

Điện áp vào khuyên dùng 7-12V DC

Điện áp vào giới hạn 6-20V DC

Số chân Digital I/O 14 (6 chân hardware PWM)

Số chân Analog 6 (độ phân giải 10bit)

Dòng tối đa trên mỗi chân

Dòng ra tối đa (5V) 500 mA

Dòng ra tối đa (3.3V) 50 mA

Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bởi bootloader SRAM 2 KB (ATmega328)

EEPROM 1 KB (ATmega328)

Trang 6

2 Module điều khiển động cơ L298 mạch cầu

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 mỗi cầu H là: 2A (=>2A cho mỗi motor)

 Điện áp của tín hiệu điều khiển: +5 V ~ +7 V

 Dòng của tín hiệu điều khiển: 0 ~ 36mA (Arduino có thể chơi đến 40mA nên khỏe re nhé các bạn)

 Công suất hao phí: 20W (khi nhiệt độ T = 75 ℃)

 Nhiệt độ bảo quản: -25 ℃ ~ +130 ℃

L298 gồm các chân:

 12V power, 5V power Đây là 2 chân cấp nguồn trực tiếp đến động cơ

oBạn có thể cấp nguồn 9-12V ở 12V

oBên cạnh đó có jumper 5V, nếu bạn để như hình ở trên thì sẽ có nguồn 5V ra ở cổng 5V power, ngược lại thì không Bạn để như hình thì ta chỉ cần cấp nguồn 12V vô ở 12V power là có 5V ở 5V power, từ đó cấp cho Arduino

oNếu chơi Arduino thì nhớ nối với GND của Arduino

Trang 7

 2 Jump A enable và B enable, để như hình, đừng rút ra bạn nhé!

 Gồm có 4 chân Input IN1, IN2, IN3, IN4 Chức năng các chân này tôi sẽ giải thích ở bước sau

 Output A: nối với động cơ A bạn chú ý chân +, - Nếu bạn nối ngược thì động cơ sẽ chạy ngược Và chú ý nếu bạn nối động cơ bước, bạn phải đấu nối các pha cho phù hợp

Trang 8

3 Cảm biến khoảng cách HC-SR04

Để đo khoảng cách giữa xe và vật cản

Để đo khoảng cách, ta sẽ phát 1 xung rất ngắn (5 microSeconds) từ chân Trig Sau

đó, cảm biến siêu âm sẽ tạo ra 1 xung HIGH ở chân Echo cho đến khi nhận lại được sóng phản xạ ở pin này Chiều rộng của xung sẽ bằng với thời gian sóng siêu

âm được phát từ cảm biển và quay trở lại

Tốc độ của âm thanh trong không khí là 340 m/s (hằng số vật lý), tương đương với 29,412 microSeconds/cm (106 / (340*100)) Khi đã tính được thời gian, ta sẽ chia cho 29,412 để nhận được khoảng cách

Các chân chức năng:

VCC Cấp nguồn cho cảm biến (5V) hoặc 3.3V ở cảm biến 3V3

TRIGGER Chân phát sóng âm Là chu kỳ của của điện cao /thấp diễn ra

ECHO Trạng thái ban dầu là 0V, khi có tín hiệu trả về sẽ là 5V và sau đó trở về 0V GND Nối cực âm của mạch

IV: Sơ đồ nối mạch

1 Arduino với Module điều khiển

Trang 9

2 Arduino với Cảm biến khoảng cách

Trang 10

V:

Trang 11

1 Code arduino chạy xe:

#include <Servo.h>

Servo myservo; // create servo object to control a servo

int pos = 0; // variable to store the servo position

/******** khai báo chân input/output**************/

const int trig = 10; // chân trig của SRF-05

const int echo = 11; // chân echo của SRF-05

int tien1=7; // chân IN - A của Module L298

int tien2=5; // chân IN - C của Module L298

int lui1=4; // chân IN - D của Module L298

int lui2=6; // chân IN - B của Module L298

int dongcoservo=9; // chân Orange của Servo

int gioihan = 30;

int i;

int x=0;

unsigned long thoigian; // biến đo thời gian

int khoangcach; // biến lưu khoảng cách

int khoangcachtrai,khoangcachphai;

void dokhoangcach();

void dithang(int duongdi);

void disangtrai();

void disangphai();

void dilui();

void resetdongco();

void quaycbsangphai();

void quaycbsangtrai();

void setup() {

// put your setup code here, to run once:

myservo.attach(9); // attaches the servo on pin 9 to the servo object pinMode(trig,OUTPUT); // chân trig sẽ phát tín hiệu

pinMode(echo,INPUT); // chân echo sẽ nhận tín hiệu

pinMode(tien1,OUTPUT);

pinMode(tien2,OUTPUT);

pinMode(lui1,OUTPUT);

pinMode(lui2,OUTPUT);

Trang 12

digitalWrite(tien1,LOW);

digitalWrite(tien2,LOW);

digitalWrite(lui1,LOW);

digitalWrite(lui2,LOW);

// Serial.begin(9600);

myservo.write(90ư);

delay(500);

}

void loop()

{

khoangcach=0;

dokhoangcach();

if(khoangcach>gioihan||khoangcach==0)

{

dokhoangcach();

if(khoangcach>gioihan||khoangcach==0) {

dithang();

}

}

else

{

resetdongco();

quaycbsangtrai();

khoangcachtrai=khoangcach;

quaycbsangphai();

khoangcachphai=khoangcach;

if(khoangcachphai<10&&khoangcachtrai<10){ dilui();

}

else

{

if(khoangcachphai>=khoangcachtrai)

Trang 13

{

disangtrai();

delay(500);

}

if(khoangcachphai<khoangcachtrai) {

disangphai();

delay(500);

}

}

}

//Serial.println(khoangcach);

}

void dithang()

{

digitalWrite(tien1,HIGH);

digitalWrite(tien2,HIGH);

//delay(2);

}

void disangtrai()

{

resetdongco();

digitalWrite(lui1,HIGH);

delay(250);

digitalWrite(lui1,LOW);

}

void disangphai()

{

resetdongco();

digitalWrite(lui2,HIGH);

delay(250);

digitalWrite(lui2,LOW);

}

Trang 14

void dilui()

{

resetdongco();

for(i=0;i<20;i++)

digitalWrite(lui1,HIGH);

digitalWrite(lui2,HIGH);

delay(700);

digitalWrite(lui1,LOW);

digitalWrite(lui2,LOW);

}

void resetdongco()

{

digitalWrite(tien1,LOW);

digitalWrite(tien2,LOW);

digitalWrite(lui1,LOW);

digitalWrite(lui2,LOW);

}

/******** chương trình đo khoảng cách SRF04 ***************/ void dokhoangcach()

{

/* Phát xung từ chân trig */

digitalWrite(trig,0); // tắt chân trig

delayMicroseconds(2);

digitalWrite(trig,1); // phát xung từ chân trig

delayMicroseconds(10); // xung có độ dài 5 microSeconds digitalWrite(trig,0); // tắt chân trig

/* Tính toán thời gian */

// Đo độ rộng xung HIGH ở chân echo

thoigian = pulseIn(echo,HIGH);

// Tính khoảng cách đến vật

khoangcach = int(thoigian/2/29.412);

}

Trang 15

/*********** chương trình quay cảm biến xang trái *********/

void quaycbsangtrai()

{

myservo.write(180); // tell servo to go to position in variable 'pos' delay(1000);

dokhoangcach();

myservo.write(90); // tell servo to go to position in variable 'pos' }

void quaycbsangphai()

{

myservo.write(0); // tell servo to go to position in variable 'pos' delay(1000);

dokhoangcach();

myservo.write(90); // tell servo to go to position in variable 'pos' }

void resetservo()

{

myservo.write(90);

}

2 Code visual studio giao diện điều khiển

namespace BLUETOOTH1

{

partial class Form1

{

Trang 16

/// <summary>

/// Required designer variable.

/// </summary>

private System.ComponentModel.IContainer components = null ;

/// <summary>

/// Clean up any resources being used.

/// </summary>

/// <param name=" disposing "> true if managed resources should be disposed; otherwise, false </param>

protected override void Dispose( bool disposing)

{

if (disposing && (components != null ))

{

components.Dispose();

}

base Dispose(disposing);

}

#region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

private void InitializeComponent()

{

this components = new System.ComponentModel.Container();

this serialPort1 = new System.IO.Ports.SerialPort( this components); this button1 = new System.Windows.Forms.Button();

this button2 = new System.Windows.Forms.Button();

this button3 = new System.Windows.Forms.Button();

this button4 = new System.Windows.Forms.Button();

this button5 = new System.Windows.Forms.Button();

this button6 = new System.Windows.Forms.Button();

this SuspendLayout();

//

// serialPort1

//

this serialPort1.PortName = "COM4" ;

//

// button1

//

this button1.Location = new System.Drawing.Point(114, 50);

this button1.Margin = new System.Windows.Forms.Padding(2);

this button1.Name = "button1" ;

this button1.Size = new System.Drawing.Size(80, 19);

this button1.TabIndex = 0;

this button1.Text = "GO_AHEAD" ;

this button1.UseVisualStyleBackColor = true ;

this button1.Click += new System.EventHandler( this button1_Click); //

// button2

//

this button2.Location = new System.Drawing.Point(125, 196);

this button2.Margin = new System.Windows.Forms.Padding(2);

this button2.Name = "button2" ;

this button2.Size = new System.Drawing.Size(56, 19);

Trang 17

this button2.TabIndex = 1;

this button2.Text = "STOP" ;

this button2.UseVisualStyleBackColor = true ;

this button2.Click += new System.EventHandler( this button2_Click); //

// button3

//

this button3.Location = new System.Drawing.Point(114, 122);

this button3.Margin = new System.Windows.Forms.Padding(2);

this button3.Name = "button3" ;

this button3.Size = new System.Drawing.Size(80, 19);

this button3.TabIndex = 0;

this button3.Text = "GO_BACK" ;

this button3.UseVisualStyleBackColor = true ;

this button3.Click += new System.EventHandler( this button3_Click); //

// button4

//

this button4.Location = new System.Drawing.Point(213, 81);

this button4.Name = "button4" ;

this button4.Size = new System.Drawing.Size(91, 23);

this button4.TabIndex = 3;

this button4.Text = "TURN RIGHT" ;

this button4.UseVisualStyleBackColor = true ;

this button4.Click += new System.EventHandler( this button4_Click); //

// button5

//

this button5.Location = new System.Drawing.Point(12, 81);

this button5.Name = "button5" ;

this button5.Size = new System.Drawing.Size(75, 23);

this button5.TabIndex = 4;

this button5.Text = "TURN LEFT" ;

this button5.UseVisualStyleBackColor = true ;

this button5.Click += new System.EventHandler( this button5_Click); //

// button6

//

this button6.Location = new System.Drawing.Point(12, 12);

this button6.Name = "button6" ;

this button6.Size = new System.Drawing.Size(75, 23);

this button6.TabIndex = 5;

this button6.Text = "AUTO" ;

this button6.UseVisualStyleBackColor = true ;

this button6.Click += new System.EventHandler( this button6_Click); //

// Form1

//

this AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this ClientSize = new System.Drawing.Size(332, 277);

this Controls.Add( this button6);

this Controls.Add( this button5);

this Controls.Add( this button4);

this Controls.Add( this button3);

this Controls.Add( this button2);

this Controls.Add( this button1);

this Margin = new System.Windows.Forms.Padding(2);

Trang 18

this Name = "Form1" ;

this Text = "Form1" ;

this ResumeLayout( false );

}

#endregion

private System.IO.Ports.SerialPort serialPort1;

private System.Windows.Forms.Button button1;

private System.Windows.Forms.Button button2;

private System.Windows.Forms.Button button3;

private System.Windows.Forms.Button button4;

private System.Windows.Forms.Button button5;

private System.Windows.Forms.Button button6;

}

}

Program

using System;

using System.Collections.Generic;

using System.Linq;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace BLUETOOTH1

{

static class Program

{

/// <summary>

/// The main entry point for the application.

/// </summary>

[STAThread]

static void Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault( false ); Application.Run( new Form1());

}

}

}

From1 cs

using System;

using System.Collections.Generic;

Ngày đăng: 24/04/2022, 21:54

HÌNH ẢNH LIÊN QUAN

o Bên cạnh đó có jumper 5V, nếu bạn để như hình ở trên thì sẽ có nguồn 5V ra ở cổng 5V power, ngược lại thì không - BÁO cáo bài tập lớn đề tài xe điều khiển từ xa
o Bên cạnh đó có jumper 5V, nếu bạn để như hình ở trên thì sẽ có nguồn 5V ra ở cổng 5V power, ngược lại thì không (Trang 6)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w