Tải bản đầy đủ (.docx) (22 trang)

MÔ PHỎNG CHUYỂN ĐỘNG CÁNH TAY DÙNG cảm BIẾN GIA tốc (có code và sơ đồ mạch)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (259.67 KB, 22 trang )

MÔ PHỎNG CHUYỂN ĐỘNG CÁNH
TAY DÙNG CẢM BIẾN GIA TỐC


MỤC LỤC
DANH MỤC CÁC HÌNH VẼ..........................................................................................VII
DANH MỤC CÁC BẢNG BIỂU...................................................................................VIII
DANH MỤC CÁC TỪ VIẾT TẮT...................................................................................IX
CHƯƠNG 1. GIỚI THIỆU CHUNG .................................................................................1
1.1

GIỚI THIỆU..................................................................................................................1

1.2

GIỚI THIỆU ĐỀ TÀI......................................................................................................1

CHƯƠNG 2. LINH KIỆN SỬ DỤNG VÀ PHẦN MỀM.................................................2
2.1

ARDUINO UNO R3........................................................................................................2

2.2

CẢM BIẾN GIA TỐC MPU-6050....................................................................................4

2.3

MODULE BLUETOOTH CH-05..................................................................................5

2.4



MODULE BLUETOOTH CH-05..................................................................................7

2.5

USB TO TTL PL2303...................................................................................................8

CHƯƠNG 3. THIẾT KẾ MẠCH......................................................................................10
3.1

SƠ ĐỒ KHỐI...............................................................................................................10

3.2

NGUYÊN LÝ HOẠT ĐỘNG ..........................................................................................11

CHƯƠNG 4. KẾT QUẢ MÔ PHỎNG.............................................................................12
4.1

MÔ PHỎNG TRÊN IDE:..............................................................................................12

4.2

MÔ PHỎNG TRÊN UNITY 3D:.........................................................................................22

CHƯƠNG 5. KẾT LUẬN..................................................................................................22
4.1

KẾT LUẬN:............................................................................................................22


4.1.1

Ưu điểm:...........................................................................................................22

4.1.2

Nhược điểm:......................................................................................................22

4.2

HƯỚNG PHÁT TRIỂN:................................................................................................22

TÀI LIỆU THAM KHẢO....................................................................................................7
PHỤ LỤC A ..........................................................................................................................8



DANH MỤC CÁC HÌNH VẼ
HÌNH 2-1: ARDUINO UNO R3...........................................................................................3
HÌNH 2-2: MPU-6050...........................................................................................................5
HÌNH 2-3: MODULE BLUETOOTH HC-05....................................................................7
HÌNH 2-4: MODULE BLUETOOTH HC-06....................................................................8
HÌNH 2-5: USBE TO TLL PL2303.....................................................................................9


DANH MỤC CÁC B
BẢNG 2-1: THÔNG SỐ KĨ THUẬT CỦA ARDUINO UNO..........................................4
YBẢNG 2-2: THÔNG SỐ KĨ THUẬT CỦA MPU-6050.................................................5
YBẢNG 2-3: HƯỚNG DẪN NỐI DÂY HC-05.................................................................2
YBẢNG 2-4: HƯỚNG DẪN NỐI DÂY HC-06.................................................................8

YBẢNG 2-5: HƯỚNG DẪN NỐI DÂY PL2303...............................................................9


DANH MỤC CÁC TỪ VIẾT TẮT

BDT

Broadband Digital Terminal

FFT

Fast Fourier Transform

MIMO

Multi-Input Multi-Output


Trang 1/17

CHƯƠNG 1.

GIỚI THIỆU CHUNG

1.1 Giới thiệu
Ngày nay, việc mô phỏng lại chuyển động của cơ thể người ngày một phổ biến và
được ứng dụng vào nhiều lĩnh vực khác nhau như : phim ảnh 3D, trò chơi tương tác
thực tế ảo, ý tế…từ đó có thể đưa ra phương án tác chiến, phương pháp chữa trị phù
hợp.
1.2 Giới thiệu đề tài

Đề tài ‘’MÔ PHỎNG CHUYỂN ĐỘNG CÁNH TAY BẰNG CẢM BIẾN GIA
TỐC’’ được thực hiện bằng cách lắp các cảm biến lên nhiều vị trí khác nhau trên
cánh tay để mô phỏng hoạt động của cánh tay bằng mô hình 3D. Kết quả đề tài này
có thể được áp dụng vào y tế để điều trị những chấn thương của cánh tay do sai tư
thế trong quá trình tập thể thao.

Mô Phỏng Chuyển Động Cánh Tay


Trang 2/17

CHƯƠNG 2.

LINH KIỆN SỬ DỤNG VÀ PHẦN MỀM

1.3 Arduino UNO R3
Arduino Uno được xây dựng với nhân là vi điều khiển ATmega328P sử dụng thạch
anh có chu kì dao động là 16 MHz. Với vi điều khiển này, ta có tổng cộng 14 pin
(ngõ) ra / vào được đánh số từ 0 tới 13 (trong đó có 6 pin PWM, được đánh dấu ~
trước mã số của pin). Song song đó, ta có thêm 6 pin nhận tín hiệu analog được
đánh kí hiệu từ A0 - A5, 6 pin này cũng có thể sử dụng được như các pin ra / vào
bình thường (như pin 0 - 13). Ở các pin được đề cập, pin 13 là pin đặc biệt vì nối
trực tiếp với LED trạng thái trên board.
Trên board còn có 1 nút reset, 1 ngõ kết nối với máy tính qua cổng USB và 1 ngõ
cấp nguồn sử dụng jack 2.1mm lấy năng lượng trực tiếp từ AC-DC adapter hay
thông qua ắc-quy nguồn.
Khi làm việc với Arduino board, một số thuật ngữ sau cần được lưu ý:


Flash Memory: bộ nhớ có thể ghi được, dữ liệu không bị mất ngay cả khi tắt

điện. Về vai trò, ta có thể hình dung bộ nhớ này như ổ cứng để chứa dữ liệu
trên board. Chương trình được viết cho Arduino sẽ được lưu ở đây. Kích
thước của vùng nhớ này thông thường dựa vào vi điều khiển được sử dụng,
ví dụ như ATmega8 có 8KB flash memory. Loại bộ nhớ này có thể chịu được
khoảng 10,000 lần ghi / xoá.



RAM: tương tự như RAM của máy tính, sẽ bị mất dữ liệu khi ngắt điện
nhưng bù lại tốc độ đọc ghi xoá rất nhanh. Kích thước nhỏ hơn Flash
Memory nhiều lần.



EEPROM: một dạng bộ nhớ tương tự như Flash Memory nhưng có chu kì
ghi / xoá cao hơn - khoảng 100,000 lần và có kích thước rất nhỏ. Để đọc /
ghi dữ liệu ta có thể dùng thư viện EEPROM của Arduino.

Ngoài ra, board Arduino còn cung cấp cho ta các pin khác nhau như pin cấp nguồn
3.3V, pin cấp nguồn 5V, pin GND...
Dòng tối đa trên mỗi chân I/0 là 30mA, dòng ra tối đa ( 5V ) là 500mA và dòng ra
tối đa ( 3V ) là 50mA.
Vi điều khiển ATmega328 có các bộ nhớ sau:
-32KB cho flash memory: để lưu các đoạn lệnh lập trình.

Mô Phỏng Chuyển Động Cánh Tay


Trang 3/17


-2KB cho SRAM: để lưu giá trị các biến khi lập trình. Khi mất điện, dữ liệu trên
SRAM sẽ bị mất.
-1KB cho EEPROM: đọc và ghi dữ liệu mà không lo bị mất khi xảy ra mất điện.

Hình 2-1 : Arduino UNO [1]

Mô Phỏng Chuyển Động Cánh Tay


Trang 4/17

Bảng 2-1 : Thông số kĩ thuật của Arduino UNO

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 I/O

30 mA

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)


SRAM

2 KB (ATmega328)

EEPROM

1 KB (ATmega328)

1.4 Cảm biến gia tốc góc MPU-6050
- MPU6050 là một cảm biến 6 trục, có chứa một gia tốc 3 trục và con quay hồi
chuyển 3 trục. Cảm biến này hoạt động ở điện áp 3.3V và sử dụng giao

tiếp I2C với tốc độ tối đa là 400kHz. Các cảm biến bên trong MPU-6050
sử dụng bộ chuyển đổi tương tự - số ( Analog to Digital Converter –
ADC ) 16-bit cho ra kết quả chi tiết về góc quay, toạ độ… Với 16-bit sẽ
có giá trị cho 1 cảm biến.

Mô Phỏng Chuyển Động Cánh Tay


Trang 5/17

-

Tuỳ thuộc vào yêu cầu sử dụng mà cảm biến MPU-6050 có thể hoạt động ở
chế độ xử lý cao hoặc chế độ đo góc quay chính xác. MPU-6050 có khả năng

-


đo ở phạm vị :
 Con quay hồi chuyển :
 Gia tốc :
Hơn nữa, MPU-6050 còn có sẵn bộ đệm dữ liệu 1024 byte cho phép vi điều
khiển phát lệnh cho cảm biến, và nhận về dữ liệu sau khi mpu-6050 tính toán
xong.

Hình 2-2 :

MPU-6050 [2]

Bảng 2-2 :

Thông số kỹ

thuật của

MPU6050

VCC

5V/3V3

GN
D

0V

SCL


Chân SCL trong giao tiếp I2C

SDA

Chân SDA trong giao tiếp I2C

XDA Chân dữ liệu (kết nối với cảm biến khác)
XCL Chân xung (kết nối với cảm biến khác)
AD0

Bit0 của địa chỉ I2C2

INT

Chân ngắt

1.5 Module
Bluetooth HC05
Module Bluetooth HC-5 master/slave được dùng để thiết lập kết nối giữa 2 thiết bị
bằng sóng bluetooth. Đặc biệt module HC-05 có thẻ hoạt động ở cả 2 chế độ master
hoặc slave.
Module bluetooth HC-05 được điều khiển bằng tập lệnh AT để thực hiện các tác vụ
mong muốn. Để module bluetooth chuyển từ chế độ thông thường sang điều khiển
bằng AT, ta có 2 cách sau :

Mô Phỏng Chuyển Động Cánh Tay


Trang 6/17


-

Cấp nguồn cho HC-05 ( Vcc và Gnd ) đồng thời cấp mức điện áp cao ( Vcc )
cho chân Key của module bluetooth. Khi đó giao tiếp bằng tập lệnh AT với

-

modulebangwf² oongcr Serial ( Tx và Rx ) với baud rate là 38400.
Cấp nguồn cho HC-05 trước sau đó cấp mức điện áp cao cho chân Key của
module. Bây giờ, có thể giao tiếp với module bằng tập lệnh AT với baud rate
là 9600.

Sau khi pari thành công với các thiết bị khác, đèn trên module sẽ nhấp nháy
chậm, cho thấy kết nối Serial đã được thiết lập.
Module HC-05 dùng nguồn cấp từ 3.6 V đến 6 V. Ngoài ra, module còn tương
thích với các vi điều khiển 5 V mà không cần chuyển đổi mức điện áp giao tiếp
5 V về 3.3 V như nhiều loại module.

Hình 2-3 : Module Bluetooth HC-05 [3]

1.6 Module Bluetootth HC-06
Bluetooth module SLAVE HC-06 cho phép vi điều khiển kết nối với các thiết bị
ngoại vi như : smartphone, laptop, usb bluetooth... thông qua giao tiếp Serial gửi và
nhận tín hiệu 2 chiều.
Mô Phỏng Chuyển Động Cánh Tay


Trang 7/17

Module bluetooth HC-06 sử dụng nguồn từ 3.5V đến 6V cung cấp cho board mà

không cần lo lắng về chênh lệch điện áp 3V - 5V gây hỏng board.
Bluetooth module gồm 6 chân theo thứ tự: KEY, VCC, GND, TX, RX, STATE.
Đây là module bluetooth SLAVE nghĩa là bạn không thể chủ động kết nối bằng vi
điều khiển, mà cần sử dụng smartphone, laptop, bluetooth usb... để dò tín hiệu và
kết nối (pair) từ smartphone, laptop, bluetooth usb... Sau khi pair thành công, bạn có
thể gửi và nhận tín hiệu từ vi điều khiển đến các thiết bị này.

Hình 2-4 : Module Bluetooth HC-06 [4]

Bảng 2-3 : Hướng dẫn nối dây

HC-06

Mô Phỏng Chuyển Động Cánh Tay

ARDUINO UNO


Trang 8/17

Vcc

5V

Gnd

Gnd

Tx


A4

Rx

A5

1.7 USB To TTL PL2303
USB to TTL Serial PL2303HX sử dụng IC chuyển đổi USB to COM PL2303HX
với nhiều cải tiến về hiệu năng của hãng Prolific.
Module USB to TTL Serial PL2303HX có sẵn các thành phần cần thiết, bạn chỉ cần
cắm vào cổng USB của máy tính là có ngay 1 cổng COM ở mức 5V có thể giao tiếp
với vi điều khiển. Module USB to TTL Serial có 3 LED gồm 1 LED nguồn,
1 LED báo tín hiệu Tx và 1 LED báo tín hiệu Rx.

Hình 2-5 : USB To TTL PL2303 [5]
Bảng 2-4 : Hướng dẫn nối dây

PL2303
Gnd
Tx

Mô Phỏng Chuyển Động Cánh Tay

Chân vi điều khiển
Gnd
Rx


Trang 9/17


Rx
5V
3.3 V

Tx
Vcc

CHƯƠNG 3.

THIẾT KẾ MẠCH

1.8 Sơ đồ khối

Khối mô phỏng 3D

Arduino Uno

MPU-6050
PL2303

HC-05

1.9 Nguyên lý làm việc
Mô Phỏng Chuyển Động Cánh Tay

HC-06


Trang 10/17


Khi xoay cảm biến gia tốc MPU-6050 thì thông số các giá trị của cảm biến gia tốc
và con quay hồi chuyển sẽ thay đổi, sau đó những thông số này sẽ được gởi về
Arduino và truyền đến Module Bluetooth HC-06.
Module HC-06 đóng vai trò Slave sẽ gửi data thu được từ cảm biến gia tốc MPU6050 đến module HC-05. Module Bluetooth HC-05 hoạt động ở chế độ Master, giao
tiếp bằng tập lệnh AT và được kết nối với máy tính thông qua USB Serial PL2303.
Phần mềm mô phỏng Unity 3D sẽ đọc data thu được từ Module Bluetooth HC-05
và tiến hành mô phỏng chuyển động trên mô hình 3D.

Mô Phỏng Chuyển Động Cánh Tay


Trang 11/17

CHƯƠNG 4.
1.10

Mô phỏng trên IDE

1.11

Mô phỏng trên Unity 3D

Mô Phỏng Chuyển Động Cánh Tay

KẾT QUẢ MÔ PHỎNG


Trang 12/17

CHƯƠNG 5.

1.12

KẾT LUẬN

Kết luận

1.1.1 Ưu điểm
Mạch chạy tốt, mô phỏng đúng với chuyển động cơ thể, ít bị trôi.
Mạch đơn giản, dễ thực hiện, ứng dụng được trong nhiều lĩnh vực cuộc sống.
1.1.2 Nhược điểm
Chương trình còn khá đơn giản, thô sơ. Chưa điều khiển được nhiều cảm biến bằng
1 Arduino.
1.13 Hướng phát triển
Đây là đề tài khá hay và mới mẻ, trong tương lai có thể phát triển thêm bằng cách
ứng dụng vào điều khiển robot bằng cảm biến gia tốc.

Mô Phỏng Chuyển Động Cánh Tay


Trang 13/17

TÀI LIỆU THAM KHẢO
Tiếng Việt:
[1]

/>
[2]

/>
[3]


/>
[4]

/>
hc-06.html
[5]

/>
Mô Phỏng Chuyển Động Cánh Tay


Trang 14/17

PHỤ LỤC A
Code chương trình :
#include<Wire.h>
#include<I2Cdev.h>
#include<MPU6050.h>
const int MPU2=0x69, MPU1=0x68;
int16_t AcX1,AcY1,AcZ1,Tmp1,GyX1,GyY1,GyZ1;
int16_t AcX2,AcY2,AcZ2,Tmp2,GyX2,GyY2,GyZ2;
int data;
void setup()
{
// put your setup code here, to run once:
Wire.begin();
Serial.begin(9600);
Wire.beginTransmission(MPU1);
Wire.write(0x6B); //PWR_MDMT_1 register

Wire.write(0); // set to zero (wake up MPU6050)
Wire.endTransmission(true);
Wire.begin();
Wire.beginTransmission(MPU2);
Wire.write(0x6B); //PWR_MGMT_1 register
Wire.write(0); // set to zero (wake up MPU6050)
Wire.endTransmission(true);
}
void loop() {

Mô Phỏng Chuyển Động Cánh Tay


Trang 15/17

// put your main code here, to run repeatedly:
// get value for first MPU having address of 0x68
GetMPUvalue1(MPU1);
//get value for second MPU having address of 0x69
GetMPUvalue2(MPU2);
//print data to unity
}
void GetMPUvalue1(const int MPU1)
{
Wire.beginTransmission(MPU1);
Wire.write(0x3B); // starting with register 0x3B
Wire.endTransmission(false);
Wire.requestFrom(MPU1,14,true);
AcX1=Wire.read()<<8| Wire.read();
AcY1=Wire.read()<<8| Wire.read();

AcZ1=Wire.read()<<8| Wire.read();
Tmp1=Wire.read()<<8| Wire.read();
GyX1=Wire.read()<<8| Wire.read();
GyY1=Wire.read()<<8| Wire.read();
GyZ1=Wire.read()<<8| Wire.read();
Serial.print(AcX1);

Serial.print(";");

Serial.print(AcY1);

Serial.print(";");

Serial.print(GyY1);

Serial.print(";");

Serial.print(AcZ1); Serial.print(";");
Serial.print(GyX1);

Serial.print(";");

Serial.print(GyZ1); Serial.println("");
Serial.flush();
}

Mô Phỏng Chuyển Động Cánh Tay


Trang 16/17


void GetMPUvalue2(const int MPU2)
{
Wire.beginTransmission(MPU2);
Wire.write(0x3B); // starting with register 0x3B
Wire.endTransmission(false);
Wire.requestFrom(MPU2,14,true);
AcX2=Wire.read()<<8| Wire.read();
AcY2=Wire.read()<<8| Wire.read();
AcZ2=Wire.read()<<8| Wire.read();
Tmp2=Wire.read()<<8| Wire.read();
GyX2=Wire.read()<<8| Wire.read();
GyY2=Wire.read()<<8| Wire.read();
GyZ2=Wire.read()<<8| Wire.read();
Serial.print(AcX2);

Serial.print(";");

Serial.print(AcY2);

Serial.print(";");

Serial.print(GyY2);

Serial.print(";");

Serial.print(AcZ2); Serial.print(";");
Serial.print(GyX2);

Serial.print(";");


Serial.print(GyZ2); Serial.println("");
Serial.flush();
}

Mô Phỏng Chuyển Động Cánh Tay



×