Việcnghiên cứu và thiết kế một bộ sản phẩm điều khiển thiết bị không dây cómột ý nghĩa lớn, giúp tăng thêm sự lựa chọn cho ng ời sử dụng, sản phẩmƣđược sản xuất trong nước nên giá thành
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN
THÔNG VIỆT –HÀN Khoa Khoa Học Máy Tính
BÁO CÁO VI ĐIỀU KHIỂN
Đề tài: Thiết kế xe dò line và xe điều
khiển từ xa
Sinh viên thực hiện : LÊ HỮU TUẤN
NGUYỄN DUY THỊNH
ĐOÀN VĂN QUÝ
ĐINH QUANG HUY
LÊ PHƯỚC SUÔN
LÊ VĂN TIẾN NÔNG XUÂN THÀNH TRỊNH THỊ TRÀ MY
Giảng viên hướng dẫn : ThS PHAN THỊ LAN ANH
Lớp : 21DA
Đà Nẵng, tháng 05 năm 2023
Trang 2NHẬN XÉT CỦA GIÁO VIÊN
………
………
………
………
………
………
………
………
………
………
Trang 3LỜI MỞ ĐẦU
Ngày nay, xã hội phát triển mạnh mẽ, kỹ thuật ngày càng hiện đại nên nhucầu về trao đổi thông tin giải trí, nhu cầu về điều khiển các thiết bị từ xa,ngày càng cao Và những hệ thống dây cáp phức tạp lại không thể đáp ứngnhu cầu này, nhất là ở những khu vực chật hẹp, những nơi xa xôi, trên cácphương tiện vận chuyển.Vì vậy công nghệ không dây đã ra đời và pháttriển mạnh mẽ, tạo rất nhiều thuận lợi cho con người trong đời sống hằngngày Trong những năm gần đây công nghệ truyền nhận dữ liệu không dâyđang có những bước phát triển mạnh mẽ, góp công lớn trong việc phát triểncác hệ thống điều khiển, giám sát từ xa, đặc biệt là các hệ thống thôngminh Hiện nay, có khá nhiều công nghệ không truyền nhận dữ liệu khôngdây như RF, Wifi, Bluetooth, NFC, Trong đó, Bluetooth là một trongnhững công nghệ được phát triển từ lâu và luôn được cải tiến để nâng caotốc độ cũng như khả năng bảo mật Trên thị trường Việt Nam hiện naychưa có nhiều sản phẩm điều khiển thiết bị không dây, đa số những sảnphẩm hiện có đều là nhập khẩu từ nước ngoài với giá thành cao Việcnghiên cứu và thiết kế một bộ sản phẩm điều khiển thiết bị không dây cómột ý nghĩa lớn, giúp tăng thêm sự lựa chọn cho ng ời sử dụng, sản phẩmƣđược sản xuất trong nước nên giá thành rẻ và góp phần phát triển các hệthống điều khiển thông minh Do đó, nhóm quyết định thực hiện đề tài:
“Thiết kế xe dò line và xe điều khiển từ xa” Đề tài ứng dụng công nghệBluetooth phổ biến trên nhiều thiết bị, module cảm biến hồng ngoại,Module Arduino Uno R3, servo,… đặc biệt điểm mới của đề tài so với cácsản phẩm hiện có là điều khiển thông qua SmartPhone giúp tận dụng nhữngthiết bị sử dụng hệ điều hành Android có sẵn của người dùng giúp giảm giáthành sản phẩm, ngoài ra với màn hình hiển thị lớn của điện thoại cho phéphiển thị nhiều thông tin hơn
Trang 4MỤC LỤC
Phần 1 : MỞ ĐẦU 5
1.Đặt vấn đề: 5
2 Mục tiêu nghiên cứu 5
3 Giải pháp thiết kế: 5
Phần 2: NỘI DUNG 6
CHƯƠNG I: THIẾT KẾ HỆ THỐNG 6
1.1 Thiết kế hệ thống điều khiển 6
1.1.1 Sơ đồ khối 6
1.1.2 Nguyên lý hoạt động 6
1.1.3 Các tính năng của từng khối ( hoặc module) trong hệ thống: 6
1.2 Lựa chọn linh kiện: 9
1.2.1 Moduke Arduino Uno R3: 9
1.2.2 Module Bluetooth HC06: 10
1.3.3 Một số linh kiện khác 11
CHƯƠNG II: XÂY DỰNG HỆ THỐNG 14
2.1 Thiết kế phần cứng 14
2.1.1 Sơ đồ mạch: 14
2.1.2 Lưu đồ thuật toán: 16
2.1.3 Mô tả phần mềm nạp chương trình Arduino uno R3: 16
2.2 Phần mềm App điều khiển xe ( Bluetooth RC controller) 21
CHƯƠNG III : KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN 25
1 Hình ảnh minh họa kết quả 25
Phần 3: KẾT LUẬN 27
1 Đánh giá và hướng phát triển đề tài 27
TÀI LIỆU THAM KHẢO 28
Trang 5DANH MỤC HÌNH
Hình 1.1 : Sơ đồ khối hệ thống 7
Hình 1.2: Module khối nguồn 8
Hình 1.3: Module Bluetooth HC06 9
Hình 1.4: Module Arduino Uno R3 9
Hình 1.5 : Module Arduino Uno R3 10
Hình 1.6 : Module Bluetoot HC06 11
Hình 1.7: Động cơ và bánh xe 12
Hình 1.8 : Hình ảnh các bộ phận khác 13
Hình 2.1 : Sơ đồ mạch xe điều khiển 14
Hình 2.2: Mạch ảo proteus xe điều khiển 15
Hình 2.3: lưu đồ thuật toán cho Arduino 16
Hình 2.4 : giao diện chương trình viết Arduino 17
Hình 2.5: Vùng lệnh chương trình 18
Hình 2.6: Vùng thông báo 18
Hình 2.7 : Sơ đồ hoạt động của App điều khiển 21
Hình 2.8: lưu đồ thuật toán phầm mềm điều khiển 22
Hình 2.9 : Giao diện App Bluetooth RC controller 23
Hình 2.10: giao diện kết nối thiết bị Bluetooth 24
Hình 3.1: Xe điều khiển từ xa sử dụng App điều khiển 26
Trang 6Phần 1 : MỞ ĐẦU
1.Đặt vấn đề:
Hiện nay điện thoại thông minh ngày càng phổ biến, hệ điều hànhAndroid được xây dựng và phát triển liên tục với các chia sẻ về mãnguồn mở, việc sử dụng SmartPhone để điều khiển, giám sát thiết bịđang là một xu hướng Chúng em quyết định thực hiện đề tài: “Tạo xeđiều khiển từ xa sử dụng App điều khiển” Chúng em nghiên cứu vềModule Arduino Uno R3, cách thức giao tiếp, điều khiển và thu thập dữliệu từ các thiết bị qua Bluetooth và app điều kiển Android Từ đóchúng em xây dựng phần mềm điều khiển chạy trên điện thoại Android
và phầm cứng Module Arduino Uno R3 của xe điều khiển Chúng emcũng thiết kế một phần cứng là một bộ điều khiển có thể điều khiển nămthiết bị điện 220VAC khác nhau Các module này có thể kết hợp vớinhau để mở rộng đối tượng điều khiển Kết quả mang lại của đề tài làmột hệ thống hoàn thiện gồm phần mềm và phần cứng có thể sử dụngtrong các hộ gia đình, các phòng nghiên cứu
2 Mục tiêu nghiên cứu
Sau khi tìm hiểu thông tin về đề tài, cùng với những hiểu biết sẵn có vàtìm kiếm thông tin liên quan, chúng tôi xác định các đối tượng cầnnghiên cứu là:
- Công nghệ Bluetooth: khái niệm về Bluetooth, các đặc điểm của côngnghệ Bluetooth, liên kết vật lý trong công nghệ Bluetooth, các chế độkết nối, cách thức hoạt động Nghiên cứu Module Bluetooth HC-06:các thông số kỹ thuật, nguyên lý hoạt động của module HC-06
- Module Arduino Uno R3: thiết kế hệ thống sử dụng để giao tiếpmodule Bluetooth, điều khiển các thiết bị, phần mềm hỗ trợ lập trìnhArduino, ngôn ngữ lập trình C++
- Hệ điều hành Android: kiến trúc hệ điều hành Android, chu kỳ hoạtđộng các ứng dụng chạy trên hệ điều hành Android, phần mềm hỗ trợlập trình Android Studio, ngôn ngữ lập trình Java,viết phần mềm ứngdụng
3 Giải pháp thiết kế:
- Trước tiên ta phải chế tạo được phần cứng khung xe điều kiển Khung
xe phải đảm bảo bền chắc và đạt độ chính xác nhất định về việc bố trícác bánh xe và động cơ thông qua việc vẽ trên phần mềm và cắt CNC
- Tiếp theo là công đoạn lập trình Arduino dựa trên những kiến thức đãhọc được để lập trình xe điều khiển
- Và cuối cùng là tạo app điều kiển xe chạy bằng Andoid
Trang 8Hình 1.2: Module khối nguồn
Khối nguồn tạo ra dòng điện và điện thế ổn định cung cấp an toàn cho
cả mạch Mạch ổn áp có chức năng tạo ra điện áp nhỏ hơn điện áp đầuvào và luôn duy trì mức áp này mặc dù áp đầu vào tăng/giảm Module
ổn áp LM2596S sử dụng các tụ có khả năng lọc nhiễu cao và trữ điệntốt Ngoài ra trên module có sẵn đèn LED báo hiệu hoạt động củamạch nguồn
b) Khối module Bluetooth
Trên thị trường hiện nay có khá nhiều module Bluetooth hỗ trợ vi điềukhiểu giao tiếp với thiết bị khác thông qua kết nối Bluetooth, một sốmodule Bluetooth thường được sử dụng trong thực tế như: moduleBluetooth HC-05, module Bluetooth HC-06 Tuy nhiên, moduleBluetooth HC-06 là lựa chọn tố ưu cho đồ án này vì: giá thành rẻ hơn
so với các Module khác, tốc độ hoạt động phù hợp với truyền dữ liệuđiều khiển thiết bị, dễ dàng mua ở thị trường Việt Nam, được nhiềungười sử dụng và đánh giá là rất ổn định
Trang 9Hình 1.3: Module Bluetooth HC06
c) Khối xử lí trung tâm
Arduino UNO R3 dùng vi điều khiển ATmega328 Bộ não này có thể
xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lítín hiệu cho xe điều khiển từ xa, điều khiển động cơ bước, điều khiểnđộng cơ serve, làm một trạm đo nhiệt độ – độ ẩm và hiển thị lên mànhình LCD,… hay những ứng dụng khác
Hình 1.4: Module Arduino Uno R3
d) Khối điều khiển xe
Trang 10Tất cả các loại điện thoại chạy hệ điều hành android có thể cài ứngdụng android, ứng dụng được viết bằng ngôn ngữ Java nhằm tạo ramột giao diện trực quan, dễ sử dụng cho việc điều khiển và giám sátcác thiết bị điện.
1.2 Lựa chọn linh kiện:
1.2.1 Moduke Arduino Uno R3:
a, Thông số kĩ thuật:
- Vi điều khiển: ATmega 328 họ 8 bit
- Điện áp hoạt động: 5 VDC (chỉ được cấp qua cổng USB)
- Tần số hoạt động: 16 MHz
- Dòng tiêu thụ: 30 mA + Điện áp vào khuyên dùng: 7-12 VDC
- Điện áp vào giới hạn: 6-20 VDC + Số chân Digital I/O: 14 ( 6 chânhardware PWM) + Số chân analog: 6 ( độ phân giải 10 bit)
- Dòng tối đa trên mỗi chân I/O: 30 mA
- Dòng ra tối đa (5V): 500mA
- Dòng ra tối đa (3.3V): 50mA
- Bộ nhớ flash: 32KB với 0.5KB dùng để bootloader
KB trong số này sẽ được dùng cho bootloader
- 2KB cho SRAM (Static Random Access Memory): giá trị các biếnbạn khai báo khi lập trình sẽ lưu ở đây Bạn khai báo càng nhiềubiến thì càng cần nhiều bộ nhớ RAM Tuy vậy, thực sự thì cũng
Trang 11hiếm khi nào bộ nhớ RAM lại trở thành thứ mà bạn phải bận tâm.Khi mất điện, dữ liệu trên SRAM sẽ bị mất
- 1KB cho EEPROM (Electrically Eraseble Programmable ReadOnly Memory): đây giống như một chiếc ổ cứng mini – nơi bạn cóthể đọc và ghi dữ liệu của mình vào đây mà không phải lo bị mấtkhi cúp điện giống như dữ liệu trên SRAM
- Các cổng vào ra: Arduino UNO có 14 chân digital dùng để đọchoặc xuất tín hiệu Chúng chỉ có 2 mức điện áp là 0V và 5V vớidòng vào/ra tối đa trên mỗi chân là 40mA Ở mỗi chân đều có cácđiện trở pull-up từ được cài đặt ngay trong vi điều khiểnATmega328 (mặc định thì các điện trở này không được kết nối)
1.2.2 Module Bluetooth HC06:
Bluetooth là chuẩn truyền thông không dây để trao đổi dữ liệu ởkhoảng cách ngắn.Chuẩn truyền thông này sử dụng sóng radiongắn(UHF radio) trong dải tần số ISM (2.4 tới 2.485 GHz) Khoảngcách truyền của module này vào khoảng 15m
Hình 1.6 : Module Bluetoot HC06
Thông số kỹ thuật:
-Điện áp cấp đầu vào: 3.3 ~ 6VDC
- Điện áp giao tiếp: TTL tương thích 3.3VDC và 5VDC
- Baudrate UART có thể chọn được: 1200, 2400, 4800, 9600, 19200,
38400, 57600, 115200
- Dải tần sóng hoạt động: Bluetooth 2.4GHz
- Sử dụng CSR mainstream bluetooth chip, bluetooth V2.0 protocolstandards
Trang 12- Dòng điện khi hoạt động: khi Pairing 30 mA, sau khi pairing hoạtđộng truyền nhận bình thường 8 mA
Kích thước của module chính: 28 mm x 15 mm x 2.35 mma) Sơ đồ chân HC-06 gồm có:
- KEY: Chân này để chọn chế độ hoạt động AT Mode hoặc DataMode VCC chân này có thể cấp nguồn từ 3.6V đến 6V bên trongmodule đã có một ic nguồn chuyển về điện áp 3.3V và cấp cho ICBC417
- GND nối với chân nguồn GND
- TXD,RXD đây là hai chân UART để giao tiếp module hoạt động ởmức logic 3.3V
- STATE các bạn chỉ cần thả nổi và không cần quan tâm đến chânnày
Trang 13- Khuếch đại dòng điện cho các ứng dụng cần dòng lớn: điều khiểnđộng cơ, chiếu sáng,…
- Nguyên tắc hoạt động cơ bản: dòng tại ngõ vào Inn sẽ được khuếchđại thành dòng tại ngõ ra Outn
- Driver: L298N tích hợp hai mạch cầu H
- Điện áp cung cấp: 5 ~ 12VDC
- Dòng tối đa cho mỗi cầu H là: 2A
- Điện áp của tín hiệu điều khiển: 5 ~ 7VDC
- Dòng của tín hiệu điều khiển: 0 ~ 36mA
Trang 14CHƯƠNG II: XÂY DỰNG HỆ THỐNG
2.1 Thiết kế phần cứng
2.1.1 Sơ đồ mạch:
Hình 2.1 : Sơ đồ mạch xe điều khiển
Trang 152.1.2 Lưu đồ thuật toán:
Hình 2.3: lưu đồ thuật toán cho Arduino
2.1.3 Mô tả phần mềm nạp chương trình Arduino uno R3:
Công cụ này dung để lập trình Arduino phát triển và có thể chạy trênWindows , MAC OS X và Linux
Mô tả phần mềm:
- Về giao diện:
Trang 16Hình 2.4 : giao diện chương trình viết Arduino
- Vùng lệnh: Bao gồm các nút lệnh menu (File, Edit, Sketch,Tools, Help) Phía dưới là các icon cho phép sử dụng nhanh cácchức năng thường dùng của IDE được miêu tả như sau:
Trang 17Hình 2.5: Vùng lệnh chương trình
- Vùng viết chương trình: Bạn sẽ viết các đoạn mã của mình tại đây
- Vùng thông báo ( debug): Những thông báo từ IDE sẽ được hiểnthị tại đây Để ý rằng góc dưới cùng bên phải hiển thị loại boardArduino và cổng COM được sử dụng Luôn chú ý tới mục này bởinếu chọn sai loại board hoặc cổng COM, bạn sẽ không thể uploadđược code của mình
Hình 2.6: Vùng thông báo
Trang 18* TODO: Pin 4 chỉ & cầ2 n khai báo không cầ2 n pha &i nô; i dầy.
* TODO: Giá trị servo từ 0 - 180 độ tửởng ứng với xung PWM trong thử viện ServoTimer2.h là 900 - 2250
Trang 19void goAhead( int sp);
void goBack( int sp);
void turnLeft( int sp);
void turnRight( int sp);
void goAheadLeft( int sp);
void goAheadRight( int sp);
void goBackLeft( int sp);
void goBackRight( int sp);
void stopCar();
/**
* @brief : Hàm thiể; t lập các chức năng cho chửởng trình
* @param : Thiể; t lập Pin cho 3 Servo
*/
void setup()
{
SERVO_1 attach (Servo_PIN_1);
SERVO_2 attach (Servo_PIN_2);
SERVO_3 attach (Servo_PIN_3);
SERVO_4 attach (Servo_PIN_4);
Delay_MS( ); 1
SERVO_1 write (count_Servo_1);
SERVO_2 write (count_Servo_2);
SERVO_3 write (count_Servo_3);
SERVO_4 write (count_Servo_4);
Trang 20* @brief : Hàm tạo delay với một giá trị ms
* @param : Sử& dụng millis() để& tạo delay cho chửởng trình
*/
void Delay_MS( unsigned long ms)
{
unsigned long start_time = millis();
while ( millis () - start_time < ms)
* @brief : Hàm điể2 u khiể& n Servo
* @param : 1 Đọc giá trị từ module HC-05 gử& i vể2
char data = mySerial read ();
Serial println (data);
switch (data)
{
case 'W':
Serial println ( "Goto Motor channel." );
// Set Rotation Angle of Servo and call Function write Servo with PWM
Trang 23* @brief : Hàm điể2 u khiể& n động cở thông qua Module L298N
* @param : 1 Đọc giá trị từ module HC-05 gử& i vể2
char data = mySerial read ();
Serial println (data);
switch (data)
{
case 'w':
// Using goto: to function Control_Servo();
Serial println ( "Goto Servo channel." );
Trang 28void goAhead( int sp) {
digitalWrite (IN_1, LOW);
digitalWrite (IN_2, HIGH);
analogWrite (ENA, sp);
digitalWrite (IN_3, LOW);
digitalWrite (IN_4, HIGH);
analogWrite (ENB, sp);
}
void goBack( int sp) {
digitalWrite (IN_1, HIGH);
digitalWrite (IN_2, LOW);
analogWrite (ENA, sp);
digitalWrite (IN_3, HIGH);
digitalWrite (IN_4, LOW);
analogWrite (ENB, sp);
}
void turnRight( int sp) {
digitalWrite (IN_1, HIGH);
digitalWrite (IN_2, LOW);
analogWrite (ENA, sp);
digitalWrite (IN_3, LOW);
digitalWrite (IN_4, HIGH);
analogWrite (ENB, sp);
// delay(5);
}
void turnLeft( int sp) {
digitalWrite (IN_1, LOW);
Trang 29 analogWrite (ENA, sp);
digitalWrite (IN_3, HIGH);
digitalWrite (IN_4, LOW);
digitalWrite (IN_1, LOW);
digitalWrite (IN_2, LOW);
analogWrite (ENA, 0 );
digitalWrite (IN_3, LOW);
digitalWrite (IN_4, LOW);
byte IFsensor_return () { //0-255 unit8_t ~ byte
boolean ifs1 = IFsensor(l1);
boolean ifs2 = IFsensor(l2);
boolean ifs3 = IFsensor(l3);
boolean ifs4 = IFsensor(l4);
boolean ifs5 = IFsensor(l5);
if (ifs1 == && ifs2 == && ifs3 == && ifs4 == && ifs5 == ) 0 0 0 0 0 return ; 0
else if (ifs1 == && ifs2 == && ifs3 == && ifs4 == && ifs5 == ) 1 0 0 0 0 return ; 1
else if (ifs1 == && ifs2 == && ifs3 == && ifs4 == && ifs5 == ) 1 1 0 0 0 return ; 2
else if (ifs1 == && ifs2 == && ifs3 == && ifs4 == && ifs5 == ) 0 1 0 0 0 return ; 3
else if (ifs1 == && ifs2 == && ifs3 == && ifs4 == && ifs5 == ) 0 1 1 0 0 return ; 4
else if (ifs1 == && ifs2 == && ifs3 == && ifs4 == && ifs5 == ) 0 0 1 0 0 return ; 5
else if (ifs1 == && ifs2 == && ifs3 == && ifs4 == && ifs5 == ) 0 0 1 1 0 return ; 6
else if (ifs1 == && ifs2 == && ifs3 == && ifs4 == && ifs5 == ) 0 0 0 1 0 return ; 7