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

Nghiên cứu và thi công mô hình xe robot điều khiển từ xa bằng bluetooth

52 0 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

Thông tin cơ bản

Định dạng
Số trang 52
Dung lượng 2,46 MB

Cấu trúc

  • 1.1 Tổng quan (7)
    • 1.1.1 Tính cấp thiết của đề tài (7)
    • 1.1.2 Mục tiêu và nội dung nghiên cứu đề tài (8)
    • 1.1.3 Phương thức tiếp cận và nghiên cứu (8)
  • 1.2 Giới thiệu về Arduino (0)
    • 1.2.1 Khái niệm chung về Arduino (8)
    • 1.2.2 Quá trình phát triển (9)
    • 1.2.3 Ngôn ngữ lập trình cho Arduino(IDE) (10)
  • 1.3 ARDUINO UNO R3 (12)
    • 1.3.1 Giới thiệu về Arduino Uno R3 (12)
    • 1.3.2 Các chân năng lượng (14)
    • 1.3.3 Một vài thông số của Arduino Uno (15)
    • 1.3.4 Cổng kết nối với Arduino Uno (15)
    • 1.3.5 Nguyên lý hoạt động Arduino Uno (15)
    • 1.3.6 Lập trình cho Arduino Uno (15)
    • 1.3.7 Vi điều khiển ATMEGA328P-AU (17)
    • 1.3.8 Các cổng vào /ra (18)
  • 1.4 BLUETOOTH (19)
    • 1.4.1 Giới thiệu về BLUETOOTH (19)
    • 1.4.2 Tổng quan về Module HC-05 (20)
    • 1.4.3 Các chế độ làm việc của HC-05 (21)
  • 1.5 Module điều khiển động cơ L298N (24)
    • 1.5.1 Giới thiệu về L298N (24)
    • 1.5.2 Chức năng của L298N (25)
  • 1.6 Phương pháp điều chế độ rộng xung (PWM) (26)
  • CHƯƠNG 2 THIẾT KẾ MÔ HÌNH ĐIỀU KHIỂN XE ROBOT KHÔNG DÂY BẰNG BLUETOOTH (29)
    • 2.1 Sơ đồ khối hệ thống (30)
    • 2.2 Sơ đồ nguyên lý (33)
    • 2.3 App điều khiển (MIT App Inventor) (0)
    • 2.4 MÔ HÌNH (37)
  • CHƯƠNG 3 THUẬT TOÁN VÀ CHƯƠNG TRÌNH (38)
    • 3.1 Lưu đồ thuật toán (0)
    • 3.2 Kết quả (39)
    • 3.3 Kết luận và hướng phát triển (44)
      • 3.3.1 Đánh giá kết quả (44)
      • 3.3.2 Hướng phát triển của đề tài (44)
  • TÀI LIỆU THAM KHẢO (45)

Nội dung

Tổng quan

Tính cấp thiết của đề tài

 Sự phát triển nhanh chóng về khoa học - kỹ thuật, điện tự động có những bước phát triển nhảy vọt với linh kiện bán dẫn, các hệ thống nhúng ra đời và kèm theo đó là nhiều ứng dụng mới xuất hiện phục vụ cho sinh hoạt và sản xuất con người Hiện nay việc các ứng dụng ngày càng trở nên phổ biến, từ những cái đơn giản như điều khiển cột đèn giao thông định thời, đếm sản phẩm dây chuyền sản xuất, điều khiển động cơ điện một chiều Đến những ứng dụng phức tập như điều khiển Robot, hệ thống kiểm soát Một trong những ứng dụng không kém phần quan trọng trong công nghiệp điều khiển từ xa Nó đã góp phần rất lớn trong việc điều khiển các thiết bị từ xa hay những thiết bị mà con người không thể trực tiếp chạm vào để điều khiển

 Điều khiển không dây là một phương pháp được ứng dụng rộng rãi trong cuộc sống, từ các lĩnh vực dân dụng, công nghiệp, quốc phòng… Việc điều khiển từ xa đã thâm nhập vào tất cả các lĩnh vực của cuộc sống.

 Nghiên cứu làm chủ được công nghệ, thiết kế được các mô hình ứng dụng và phục vụ đào tạo trong điều khiển từ xa là rất cần thiết Đề tài nhằm tạo ra học cụ thiết thực phục vụ cho công tác đào tạo, nghiên cứu trong lĩnh vực điện tử, viễn thông và điều khiển tự động.

Mục tiêu và nội dung nghiên cứu đề tài

 Tìm hiểu công nghệ điều khiển từ xa, bao gồm phương pháp sử dụng hồng ngoại(IR), vô tuyến(RF), WiFi, Bluetooth…

 Thiết kế, thi công Module xe Robot điều khiển từ xa phục vụ Mô hình được sử dụng mẫu và chuyển giao trong đào tạo theo CDIO các HP Nhập môn ngành ĐTVT,

Kỹ thuật Vi điều khiển; Điều khiển thông minh; Cuộc thi Robotic Khoa Điện – Điện tử.

 Thiết kế xe Robot điều khiển bằng điện thoại thông qua Bluetooth.

Giới thiệu về Arduino

Khái niệm chung về Arduino

Arduino là board mạch vi xử lý, nhằm xây dựng các ứng dụng tương tác với nhau hoặc với môi trường được thuận lợi hơn Phần cứng bao gồm một board mạch nguồn mở được thiết kế trên nền tảng AVR Atmel 8 bit hoặc ARM Atmel 32 bit. Những model hiện tại được trang bị gồm 1 cổng giao tiếp USB, 6 chân đầu vào analog, 14 chân I/O kỹ thuật số tương thích với nhiều board mở rộng khác nhau. Được giới thiệu vào năm 2005, những nhà thiết kế của Arduino cố gắng mang đến một phương thức dễ dàng, không tốn kém cho người yêu thích, sinh viên và giới chuyên nghiệp để tạo ra những thiết bị có khả năng tương tác với môi trường thông qua các cảm biến và cơ cấu chấp hành Những ví dụ phổ biến cho những người yêu thích mới bắt đầu bao gồm các robot đơn giản, điều khiển nhiệt độ và phát hiện chuyển động, đi cùng với nó là một môi trường phát triển tích hợp (IDE) chạy trên các máy tính cá nhân thông thường và cho phép người dùng viết các chương trình cho Arduino bằng ngôn ngữ C hoặc C++.

Quá trình phát triển

Arduino như là một dự án dành cho sinh viên Interaction Design Insitute Ivrea tại Ivrea, italya.Vào thời điểm đó các sinh viên sử dụng một tem cơ bản có giá khoảng $100 Masimo Banzimột trong những nhà sáng lập giảng dạy tại Ivrea Cái tên “Arduino” đến từ một quán bar tại Ivrea, nơi một vài nhà sáng lập của dự án này thường xuyên gặp mặt.

Lý thuyết phần cứng được đóng góp bởi một sinh viên người Coloumbia tên là Hermando Barragan Sau nền tảng Wiring hoàn thành, các nhà nghiên cứu đã làm việc với nhau để giúp nó nhẹ hơn, rẻ hơn và khả dụng đối với mã nguồn mở Trường này cuối cùng bị đóng cửa, vì vậy các nhà nghiên cứu một trong số đó là David Cuarlielles đã phổ biến ý tưởng này.

Một Board mạch Arduino đời đầu gồm một cổng giao tiếp RS232 và một chip xử lý Atmel ATmega8 , 14 chân I/O số nằm ở phía trên và 6 chân analog đầu vào.

Một mạch Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ sung giúp dễ dàng lập trình và có thể mở rộng các mạch khác Một khía cạnh quan trọng của Arduino là các kết nối tiêu chuẩn của nó cho phép người dùng kết nối với CPU của board với các module thêm vào có thể dễ dàng chuyển đổi gọi là shield Vài shield truyền thông với board Arduino trực tiếp thông qua các chân khác nhau, nhưng nhiều shield được định địa chỉ thông qua serial bus I2C, nhiều shield được xếp chồng và sử dụng dưới dạng song song Arduino chính thức thường sử dụng các dòng chip megaAVR, đặc biệt là ATmega8, ATmega168, ATmega328, ATmega1280, ATmega2560 Một vài các bộ xử lí khác cũng được sử dụng bởi các vi xử lý bởi các mạch Aquino tương thích Hầu hết các mạch gồm một bộ điều chỉnh tuyến tính 5V và một thạch anh dao động 16MHz( hoặc bộ cộng hưởng ceramic trong một vài biến thế) Một vi điều khiển Arduino có thể được lập trình sẵn trên một bootloader cho phép đơn giản là upload chương trình vào bộ nhớ flash-on-chip, so với các thiết bị khác thường phải cần một bộ nạp bên ngoài Điều này giúp cho việc sử dụng Arduino được trực tiếp hơn bằng cách cho phép sử dụng 1 máy tính gốc như một bộ nạp chương trình.

Theo nguyên tắc, khi sử dụng ngăn xếp phần mềm Arduino, tất cả các board mạch được lập trình thông qua một kết nối RS-232, nhưng cách thực hiện này tùy thuộc vào đời phần cứng Các board serial Arduino có chứa một mạch chuyển đổi giữa RS232 sang TTL.Các board Arduino hiện tại được lập trình thông qua cổng USB, thực hiện thông qua chip chuyển đổi USB-to-serial như là FTDI FT232 Vài biến thế như Arduino Mini và Boardduino không chính thức, sử dụng một board adapter hoặc cáp nối USB có thể tháo rời được.

Board Arduino sẽ đưa ra hầu hết các chân I/O của vi điều khiển để sử dụng cho các mạch ngoài.Diecimila, Duemilanove và bây giờ là UNO đưa ra 14 chân I/O kỹ thuật số, 6 trong số đó có thể tạo xung PWM (điều chế độ rộng xung)và 6 chân input analog Những chân này được thiết kế phía trên mặt board thông qua các header.

Có nhiều biến thế như Arduino-compatible và arduino-derived Một vài trong số đó có chức năng tương đương với Arduino và có thể sử dụng thay thế qua lại Nhiều mở rộng cho Arduino được thực hiện bằng cách thêm vào các driver đầu ra, thường sử dụng trong các trường học để đơn giản hóa các cấu trúc và các robot nhỏ Những board khác thường tương đương về điện nhưng có thay đổi về hình dạng, đôi khi còn duy trì sự tương thích với các shield Vài biến thế sử dụng bộ vi xử lý hoàn toàn khác biệt, với các mức độ tương thích khác nhau.

Ngôn ngữ lập trình cho Arduino(IDE)

Môi trường phát triển tích hợp (IDE) của Arduino, nó là một ứng dụng cross- platform(nền tảng) được viết bằng Java, và từ IDE được sử dụng cho ngôn ngữ lập trình xử lý( Processing programming language) và project Wiring Nó được thiết kế dành cho các nghệ sĩ và những người mới tập tành làm quen với lĩnh vưc phát triển phần mềm nó bao gồm một chương trình code editor với các chức năng như đánh dấu cú pháp, tự động canh lề, biên dịch và upload chương trình lên board chỉ với 1 cú click chuột Một chương trình hoặc code viết cho Arduino được gọi là Sketch.

Các chương trình Arduino được viết bằng C hoặc C++ Arduino IDE đi kèm với một thư viện phần mềm được goi là Wiring từ project Wiring gốc,có thể giúp thao tác input/output dễ dàng hơn Người dùng chỉ cần định nghĩ 2 hàm để tạo ra một chương trình vòng thực thi( cyclic executive) có thể chạy được:

 Setup(): hàm này chạy mỗi khi khởi động chương trình, dùng để thiết lập các cài đặt.

 Loop(): hàm này được gọi lặp lại cho đến khi tắt nguồn board mạch.

Một chương trình đơn giản chỉ làm cho bóng đèn sáng tắt chương trình có thể viết như sau:

{ pinMode(LED_PIN,OUTPUT); // Cho phép chân 13 làm đầu ra số

{ digitalWrite(LED_PIN,HIGH); // bật led delay(1000) //chờ 1s digitalWrite(LED_PIN,LOW);// tắt led delay(1000);

Với vòng lặp như vậy led sẽ sáng tắt luân phiên trong 1s.

Một đặc điểm của hầu hết các board arduino là chúng có 1 đèn Led và điện trở nối chân 13 với đất; một đặc điểm thuận tiện cho nhiều ứng dụng đơn giản Ví dụ như đoạn code trên không thể đọc bới một complier C++ chuẩn như một chương trình đúng, vì vậy ta click vào nút Upload to I/O board trong IDE này, một bản coppy của đoạn code sẽ được ghi vào 1 file tạm tại một extra include header ở phía trên cùng và một hàm main() đơn giản nằm ở phía cuối để làm cho thân chương trình khả dụng.

Arduino IDE sử dụng GNU toolchain và AVR Libc để biên dịch chương trình và sử dụng AVRdude để upload chương trình lên board.

Vì nền tảng của Arduino là các vi điều khiển của Atmel cho nên môi trường phát triển của Atmel AVR studio hoặc các phiên bản Atmel Studio mới hơn cũng có thể sử dụng để làm phần mềm phát triển cho Arduino.

Arduino là một nền tảng phần cứng mã nguồn mở với các thiết kế tham khảo của Arduino được phân phối dưới dạng Creative Commons Attribution Share-Alike 2.5 license và sẵn có trên website của Arduino Một và phiên bản phần cứng của Arduino còn đưa lên cả file Layout và thành phẩm

Mặc dù các thiết kế phần cứng và phần mềm là miễn phí dưới dạng copyleft license, các nhà phát triển cũng được yêu cầu cái tên “Arduino” chỉ được dành riêng cho các sản phẩm chính thức.

ARDUINO UNO R3

Giới thiệu về Arduino Uno R3

Mạch Arduino Uno là dòng mạch Arduino phổ biến, khi mới bắt đầu làm quen,lập trình với Arduino thì mạch Arduino thường nói chính là dòng Arduino UNO Hiện dòng mạch này đã phát triển tới thế hệ thứ 3 (Mạch Arduino Uno R3). Arduino Uno R3 là dòng cơ bản, linh hoạt, thường được sử dụng cho người mới bắt đầu Có thể sử dụng các dong Arduino khác như: Arduino Mega, Arduino Nano,Arduino Micro, Nhưng với những ứng dụng cơ bản thì mạch Arduino Uno là phù hợp nhất

Hình 2: Sơ đồ chân Arduino Uno R3

Các chân năng lượng

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ụ 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 PWM)

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

Dòng tối đa trên mỗi chân I/O 30mA

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

5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA.

3.3V: cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở chân này là 50mA.

Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dương của nguồn với chân này và cực âm của nguồn với chân GND. chân này Và dĩ nhiên nó luôn là 5V Mặc dù vậy bạn không được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn.

RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc chân RESET được nối với GND qua 1 điện trở 10KΩ.

Một vài thông số của Arduino Uno

Arduino chính thức thường sử dụng các dòng chip megaAVR, đặc biệt là ATmega8, ATmega168, ATmega328, Atmega2560 Một vài các bộ vi xử lý khác cũng được sử dụng bởi các mạch Arduino tương thích Theo nguyên tắc, khi sử dụng ngăn xếp phần mềm Arduino, tất cả các board được lập trình thông qua một kết nối RS-232, nhưng cách thức thực hiện lại tùy thuộc vào đời phần cứng Các board Serial Arduino có chứa một mạch chuyển đổi giữa RS232 sang TTL Các board Arduino hiện tại được lập trình thông qua cổng USB, thực hiện thông qua chip chuyển đổi USB-to-serial nhưFTDI FT232.

Cổng kết nối với Arduino Uno

Để kết nối với máy tính thì cần dây cáp USB 2 đầu Type A-B Khi Arduino Uno kết nối với máy tính, nó sẽ sử dụng một cổng COM (Communication port – cổng dữ liệu ảo) để máy tính và board có thể truyền tải dữ liệu qua lại thông qua cổng này, Windows có thể quản lý đến 256 cổng COM.

Nguyên lý hoạt động Arduino Uno

Module sử dụng thạch anh 16MHz, có thể được cấp nguồn 5V từ nguồn PIN Các nguồn cấp ngoài này có thể là Pin (Battery) hoặc Adapter với nguồn điện áp là 6-20V.Nếu chúng ta cung cấp nguồn nhỏ hơn 7V thì có thể các sẽ hoạt động thấp hơn 5V vàBoard lúc đó hoạt động ít ổn định hơn Còn nếu dùng điện áp lớn hơn 12V có thể dẫn đến việc nóng và gây hại cho Board Bởi vậy mức điện áp cấp cho Arduino thường được khuyên là nằm trong khoảng 7-12V Arduino Uno là một loại board vi điều khiển dựa trên chip ATmega328 Do đó board mạch có 14 chân số đóng vai trò ngõ vào/ra –Digital Input/Output ( trong đó 6 chân có thể được dùng như các chân điều chế độ rộng xung-PWM), 6 chân đóng vai trò ngõ vào tương ( Analog Inputs), bộ dao động dùng thạch anh 16MHz, kết nối USB, kết nối nguồn riêng với Adapter AC-DC, nút nhấn RESET và các đầu cắm ICSP.

Lập trình cho Arduino Uno

Arduino Uno sử dụng chương trình Arduino IDE để lập trình, và ngôn ngữ lập trình cho Arduino cũng tên là Arduino (được xây dựng trên ngôn ngữ C) Nếu muốn lập trình cho Arduino Uno, bạn cần phải thực hiện một số thao tác trên máy tính Sau đây, là hướng dẫn từng bước để có thể lập trình cho Arduino Uno:

1 Đầu tiên, cần cài Driver của Arduino Uno và tải về bản Arduino IDE mới nhất cho máy tính Sau khi cài đặt, sẽ thấy một thông báo dạng "Cổng COMx đã được cài đặt thành công" (chữ "x" này sẽ được thay bằng một số nguyên dương, hãy nhớ lấy số này, vì sau này bạn sẽ dùng cổng COMx này để lập trình cho Arduino Uno)

2 Sau đó, cần lại loại board và cổng Serial mới như hình sau là được Lưu ý, cổngCOM trong hình dưới đây là chỉ là hình minh họa trong máy tính.

Hình 3: Giao diện phần mềm Arduino Uno

Vi điều khiển ATMEGA328P-AU

Hình 4: Vi điều khiển ATmega328P-PU

 Atmega328 là một chíp vi điều khiển được sản xuất bời hãng Atmel thuộc họMegaAVR có sức mạnh hơn hẳn Atmega8 Atmega 328 là một bộ vi điều khiển 8 bít dựa trên kiến trúc RISC bộ nhớ chương trình 32KB ISP flash có thể ghi xóa hàng nghìn lần, 1KB EEPROM, một bộ nhớ RAM vô cùng lớn trong thế giới vi xử lý 8 bít(2KB SRAM).

 Với 23 chân có thể sử dụng cho các kết nối vào hoặc ra i/O, 32 thanh ghi, 3 bộ timer/counter có thể lập trình, có các gắt nội và ngoại (2 lệnh trên một vector ngắt), giao thức truyền thông nối tiếp USART, SPI, I2C Ngoài ra có thể sử dụng bộ biến đổi số tương tự 10 bít (ADC/DAC) mở rộng tới 8 kênh, khả năng lập trình được watchdog timer, hoạt động với 5 chế độ nguồn, có thể sử dụng tới 6 kênh điều chế độ rộng xung (PWM), hỗ trợ bootloader.

Các cổng vào /ra

Hình 5: Cổng ra/vào Arduino Uno

Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu Chúng chỉ có 2 mức điện áp là 0V và 5V với dò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ển ATmega328 (mặc định thì các điện trở này không được kết nối). Một số chân digital có các chức năng đặc biệt như sau:

2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive –

RX) dữ liệu TTL Serial Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây.

Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết.

Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép xuất ra xung PWM với độ phân giải

8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite() Nói một cách đơn giản, có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.

Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác.

LED 13: Trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L) Khi bấm nút

Reset, sẽ thấy đèn này nhấp nháy để báo hiệu Nó được nối với chân số 13 Khi chân này được người dùng sử dụng, LED sẽ sáng.

Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit

(0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V Với chân AREF trên board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit. Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếpI2C/TWI với các thiết bị khác.

BLUETOOTH

Giới thiệu về BLUETOOTH

Bluetooth là một đặc tả công nghiệp cho truyền thông không dây tầm gần giữa các thiết bị điện tử Công nghệ này hỗ trợ việc truyền dữ liệu qua các khoảng cách ngắn giữa các thiết bị di động và cố định, tạo nên các mạng cá nhân không dây (Wireless Perisonal Area Network-PANs).

Bluetooth có thể đạt được tốc độ truyền dữ liệu 1MB/s Bluetooth hỗ trợ tốc độ truyền dữ liệu lên tới 720 Kbps trong phạm vi 10 m – 100 m Khác với kết nối hồng ngoại (IrDA), kết nối Bluetooth là vô hướng và sử dụng giải tần 2,4 GHz.

Mục đích: Thay thế Cable giữa máy tính và các thiết bị truyền thông cá nhân, kết nối vô tuyến giữa các thiết bị điện tử lại với nhau một các thuận lợi, giá thành rẻ.

Tổng quan về Module HC-05

Module này được thiết kế dựa trên chip BC417 Con chip này khá phức tạp và sử dụng bộ nhớ flash ngoài 8Mbit.

Hình 6: HC-05 a Sơ đồ chân HC-05:

Hình 7: Sơ đồ chân HC-05

Key: Chân này để chọn chế đọ hoạt động AT Mode hoặc Data Mode.

VCC: Chân này có thể cấp nguồn từ 3.6V- 6V bên trong module đã có một

IC nguồn chuyển về điện áp 3.3V và cấp cho IC

GND: Nối với GND của Arduino

TXD,RXD là hai chân UART để giao tiếp module hoạt động ở mức logic

STATE là chân thông báo trạng thái. b Thông số kỹ thuật:

 Điện áp hoạt động: 3.3 ~ 5V DC

 Mức điện áp chân giao tiếp: TTL tương thích 3.3V DC và 5V DC.

 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.

 Baudrate UART có thể chọn được: 1200, 2400, 4800, 9600, 19200, 38400,

 Support profiles: Bluetooth serial port (master and slave)

 Bluetooth protocol: Bluetooth specification v2.0 + EDR

 Modulation: GFSK (Gaussian frequency shift keying)

 Rate: Asynchronous: 2.1 Mbps (max.)/160 kbps

 Security features: authentication and encryption

Các chế độ làm việc của HC-05

 HC-05 có hai chế độ hoạt động là Command Mode và Data Mode Ở chế độ Command Mode ta có thể giao tiếp với module thông qua cổng serial trên module bằng tập lệnh AT quen thuộc Ở chế độ Data Mode module có thể truyền nhận dữ liệu tới module bluetooth khác Chân KEY dùng để chuyển đổi qua lại giữa hai chế độ này.

Có hai cách để có thể chuyển module hoạt động trong chế độ Data Mode:

 Nếu đưa chân này lên mức logic cao trước khi cấp nguồn module sẽ đưa vào chế độ Command Mode với baudrate mặc định 38400 Chế độ này khá hữu ích khi không biết baudrate trong module được thiết lập ở tốc độ bao nhiêu Khi chuyển sang chế độ này đèn led trên module sẽ nháy chậm (khoảng 2s) và ngược lại khi chân KEY nối với mức logic thấp trước khi cấp nguồn module sẽ hoạt động chế độ Data Mode.

 Nếu module đang hoạt động ở chế Data Mode để có thể đưa module vào hoạt động ở chế độ Command Mode đưa chân KEY lên mức cao Lúc này module sẽ vào chế độ Command Mode nhưng với tốc độ Baud Rate được thiết lập lần cuối cùng

Vì thế phải biết baudrate hiện tại của thiết bị để có thể tương tác được với nó.

Chú ý nếu module chưa thiết lập lại lần nào thì mặc định của nó như sau: ã Baudrate 9600, data 8 bits, stop bits 1, parity : none, handshake: none ã Passkey: 1234 ã Device Name: HC-05

 Ở chế độ Data Mode HC-05 có thể hoạt động như một master hoặc slave tùy vào việc cấu hình (riêng HC-06 chỉ có thể cấu hình ở chế độ SLAVE).

+ Ở chế độ SLAVE: Cần thiết lập kết nối từ smartphone, laptop, usb bluetooth để dò tìm module sau đó pair với mã PIN là 1234 Sau khi pair thành công, có 1 cổng serial từ xa hoạt động ở baud rate 9600.

+ Ở chế độ MASTER: module sẽ tự động dò tìm thiết bị bluetooth khác (1 module bluetooth HC-05, usb bluetooth, bluetooth của laptop ) và tiến hành pair chủ động mà không cần thiết lập gì từ máy tính hoặc smartphone.

AT: Lệnh test, nó sẽ trả về OK nếu module đã hoạt động ở Command Mode AT+VERSION?: trả về firmware hiện tại của module

AT+UART00,0,0 ( thiết lập baudrate 9600,1 bit stop, no parity)

 Các lệnh ở chế độ Master:

AT+RMAAD : ngắt kết nối với các thiết bị đã ghép

AT+ROLE=1 : đặt là module ở master

AT+RESET: reset lại thiết bị

AT+CMODE=0: Cho phép kết nối với bất kì địa chỉ nào

AT+INQM=0,5,5: Dừng tìm kiếm thiết bị khi đã tìm được 5 thiết bị hoặc sau 5s

AT+PSWD34 Set Pin cho thiết bị

AT+INQ: Bắt đầu tìm kiếm thiết bị để ghép nối

Sau lệnh này một loạt các thiết bị tìm thấy được hiện thị Định ra kết quả sau lệnh này như sau: INQ:address,type,signal

Phần địa chỉ (address) sẽ có định dạng như sau: 0123:4:567890 Để sử dụng địa chỉ này trong các lệnh tiếp theo ta phải thay dấu “:” thành “,” 0123:4:567890 -> 0123,4,5678

AT+PAIR=, : Đặt timeout(s) khi kết nối với 1 địa chỉ slave

AT+LINK= Kết nối với slave

 Các lệnh ở chế độ Slave:

AT+ORGL: Reset lại cài đặt mặc định

AT+RMAAD: Xóa mọi thiết bị đã ghép nối

AT+ROLE=0: Đặt là chế độ SLAVE

AT+ADDR: Hiển thị địa chỉ của SLAVE

Module điều khiển động cơ L298N

Giới thiệu về L298N

L298N là module điều khiển động cơ kép, cho phép điều khiển tốc độ và hướng của hai động cơ DC cùng một lúc Tích hợp nguyên khối gồm 2 mạch cầu H bên trong. Với điện áp làm tăng công suất nhỏ như động cơ DC loại vừa…

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ịu đến 40mA)

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

Chức năng của L298N

 Module L298 có thể điều khiển 2 động cơ DC hoặc 1 động cơ bước, có 4 lỗ nằm ở 4 góc thuận tiện cho người sử dụng cố định vị trí module Có gắn tản nhiệt chống nóng cho IC, giúp IC có thể điều khiển với dòng đỉnh đạt 2A IC L298N được gắn với các đi ốt trên board giúp bảo vệ vi xử lý chống lại các dòng điện cảm ứng từ việc khởi động/ tắt động cơ

 4 chân INPUT: IN1, IN2, IN3, IN4 được nối lần lượt với các chân 5, 7, 10, 12 của L298 Đây là các chân nhận tín hiệu điều khiển.

 4 chân OUTUT: OUT1, OUT2, OUT3, OUT4 (tương ứng với các chân

INPUT) được nối với các chân 2, 3,13,14 của L298 Các chân này sẽ được nối với động cơ.

 Hai chân ENA và ENB dùng để điều khiển mạch cầu H trong 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, nếu ở mức logic “0” thì mạch cầu H không hoạt động.

 Cách điều khiển chiều quay với L298:

+ Khi ENA = 0: Động cơ không quay với mọi đầu vào.

INT1 = 1; INT2 = 0: Động cơ quay thuận.

INT1 = 0; INT2 = 1: Động cơ quay nghịch.

INT1 = INT2: Động cơ dùng ngay tức thì.

ENB cũng tương tự với INT3, INT4.

Hình 10: Bảng trạng thái mạch cầu H L298

Phương pháp điều chế độ rộng xung (PWM)

 Điều chế độ rộng xung (tiếng Anh: Pulse-width modulation (PWM)), hay Điều chế thời gian xung (tiếng Anh: pulse-duration modulation (PDM)), là một kỹ thuật điều chế được sử dụng để mã hóa một thông điệp thành một tín hiệu xung Mặc dù kỹ thuật điều chế này có thể được sử dụng để mã hóa thông tin để truyền tải, việc sử dụng chính của nó là cho phép điều khiển nguồn điện cung cấp cho các thiết bị điện, đặc biệt là để tải quán tính như động cơ.

 Xung là các trạng thái cao / thấp (HIGH/LOW) về mức điện áp được lặp đi lặp lại Đại lượng đặc trưng cho 1 xung PWM (Pulse Width Modulation) bao gồm tần số (frequency) và chu kỳ xung (duty cucle).

 Điện áp trung bình phụ thuộc vào độ rộng của xung, độ rộng xung được xác định là tỉ lệ giữa thời gian có xung(hay đóng nguồn cho động cơ) và chu kỳ xung đóng ngắt Điển hình phương pháp này được sử dụng dùng để điều khiển tốc độ động cơ, xung áp, điều áp,… Phương pháp được thực hiện theo nguyên tắc đóng ngắt nguồn tải của một cách có chu kì với tần số đóng cắt phải lớn, phần tử thực hiện đóng cắt là các van bán dẫn hay một chuyển mạch công suất.

 Phần trăm(%) độ rộng xung của chu kì xung đó với điện áp ra ta được điện áp trung bình trên động cơ Dựa vào đó, tốc độ động cơ sẽ quay nhanh nếu độ rộng xung dương càng lớn Ngược lại, tốc độ động cơ quay chậm nếu độ rộng xung dương bé.

Hình 11: Nguyên lý điều xung PWM

 Xung PWM được lấy ra từ một cổng ra của bo mạch vi điều khiển sử dụng Arduino UNO Vì vậy, tùy thuộc vào kích thước của động cơ, chúng ta có thể chỉ cần kết nối đầu ra Arduino cổng của MOSFET và điều khiển tốc độ của động cơ bằng cách điều khiển đầu ra PWM Tín hiệu Arduino điều khiển MOSFET đóng hoặt ngắt nguồn cho động cơ và thông qua đó công suất của động cơ được điều khiển.

 Ưu điểm chính của PWM đó là tổn hao công suất trên các thiết bị đóng cắt

(Chuyển mạch) rất thấp Khi khóa chuyển mạch tắt thì không có dòng điện nào đi qua, và khi bật thì nguồn sẽ được đưa sang phụ tải, thì hầu như không có sụt áp trên thiết bị chuyển mạch Tổn hao công suất, là tích của điện áp và dòng điện, do đó trong cả hai trường hợp gần như bằng không PWM cũng hoạt động tốt với điều khiển kỹ thuật số, mà vì tính chất bật/tắt, ta có thể dễ dàng thiết lập chu kỳ làm việc cần thiết.

Hình 12: Xung khi sử dụng với hàm AnalogWrite trong Arduino

* Giữa 2 vạch màu xanh lá cây là 1 xung.

Hàm analogWrite() trong Arduino giúp việc tạo 1 xung dễ dàng hơn Hàm này truyền vào tham số cho phép thay đổi chu kì xung, có thể tính toán ra được chu kì xung như ở bảng trên Tần số xung được Arduino thiết lập mặc định. Đối với board Arduino Uno, xung trên các chân 3,9,10,11 có tần số là 490Hz, xung trên chân 5,6 có tần số 980Hz.

THIẾT KẾ MÔ HÌNH ĐIỀU KHIỂN XE ROBOT KHÔNG DÂY BẰNG BLUETOOTH

Sơ đồ khối hệ thống

 Mô hình được thiết kế với một xe Robot, bo mạch điều khiển Arduino, cầu H L298, một Module Bluetooth HC05 được sử dụng làm mạch thu phát gắn trên xe robot Một chương trình điều khiển chạy trên Arduino cho phép xe robot thu thập và giải mã tín hiệu điều khiển Một ứng dụng điều khiển không dây sử dụng Bluetooth chạy trên điện thoại cho phép kết nối điện thoại với xe Robot qua đó cho phép điều khiển tốc độ và hướng di chuyển của xe robot một cách dễ dàng.

 Khối nguồn: Dùng nguồn 12V DC sử dụng pin lithium dùng để cấp nguồn cho toàn bộ hệ thống.

Hình 13: Sơ đồ khối tổng thể của hệ thống

Khối xử lý: Sử dụng vi điều khiển Atmega328P-PU điều khiển toàn bộ hoạt động của phần trung tâm Nhận tín hiệu từ Module Bluetooth HC-05 xử lý và xuất dữ liệu cho Module Driver động cơ.

Hình 14: Arduino kết nối với HC-05

 Module Bluetooth: Sử dụng cơ cấu truyền nhận tín hiệu từ HC-05 để gửi tín hiệu cho khối xử lý.

 Driver động cơ: Khi khối xử lý nhận được tín hiệu của Module Bluetooth đúng thì khối xử lý điều khiển động cơ chạy đúng như đang điều khiển trên điện thoại.

Hình 15: Khối Driver động cơ

 Phần mền điều khiển xe bằng Bluetooth thông qua kết nối không dây bằng cách tải trên ứng dụng CHPLAY để có giáo diện trực quan hơn để điều khiển xe thông minh qua tính chân thật của xe robot điều khiển qua ứng dụng điều khiển trên BLUETOOTH RC CONTROLLLER ứng dụng trên điều khiển thiết bị xe robot thông qua Bluetoothl

Hình 16: Giao diện ứng dụng điều khiển

Sơ đồ nguyên lý

Hình 17: Sơ đồ mạch nguyên lý của hệ thống

 Sơ đồ nguyên lý được thiết kế trên phần mềm Fritzing, các linh kiện được lấy ra từ thư viện trên phần mềm hay tải lên từ bộ nhớ máy tính và được kết nối đi dây theo 1 nguyên lý đã quy định sẵn của người thiết kế Các linh kiện được đánh tên rõ ràng và sắp xếp thủ công hay tự động tùy người thiết kế.

Giải thích sơ đồ nguyên lý:

Nguồn DC 12V-100mA sử dụng pin sạc Lithium Ion chia dòng điện cho L298N và Arduino

Để kết nối L298N và Arduino: IN1, IN2, IN3, IN4, ENA, ENB của L298N kết nối lần lượt với pin 2, 3, 5, 4 , 9, 10 của Arduino để điều khiển chiều quay của động cơ tạo ra xung PWM.

 Arduino có nhiệm vụ cấp nguồn cũng như xử lý thông tin truyền đi và về của HC-05.

HC-05 có nhiệm vụ truyền nhận tín hiệu giữa Arduino và điện thoại để điều khiển động cơ.

HC-05 có nhiệm vụ là cầu nối của Arduino với Smartphone để truyền và nhận tín hiệu giúp cho hệ thống hoạt động.

2.3 App điều khiển ( BLUETOOTH RC CONLLER):

- Bluetooth rc conller dành cho Android là một ứng dụng được tải trên cửa hàng CHPLAY Nền tảng cho phép nhà lập trình tạo ra các ứng dụng phần mềm cho hệ điều hành Android (OS) Cửa hàng này là một cửa hàng cho phép tạo ra những ứng dụng hữu ích cho người dùng thông qua mọi hiểu biết cưa sự thông minh trí tuệ của con người nó nhằm tạo cho con người ta đến gần hơn với những cái thông minh về robot của nó chính lẽ đó cửa hàng CHPLAY đã tạo ra một ứng dụng Bluetoothl cr conller -Giao

Hình 18: Giao điện kết nối Bluetooth

Hình 19: Giao diện điều khiển

Hình20: Mô hình hoàn thiện

MÔ HÌNH

Hình20: Mô hình hoàn thiện

THUẬT TOÁN VÀ CHƯƠNG TRÌNH

Kết quả

Để kết nối xe điều khiển với điện thoại

Trước tiên chúng ta cần ghép nối Bluetooth với điện thoại.

Hình 21: Giao diện kết nối HC-05 với điện thoại

Chọn thiết bị kết nối là HC-05

Hình 22: Nhập mã Pin để ghép nối

Bluetooth yêu cầu nhập mã pin ghép nối, ta nhập 1 2 3 4 Sau khi nhập mã pin, ta được kết qua như hình bên dưới:

Hình 23: Ghép nối thành công

Sau khi ghép nối xong, ta vào giao diện chương trình.

Giao diện chương trình hiển thị No Connected (chương trình chưa kết nối với Bluetooth)

Ta ấn vào biểu tượng Bluetooth để chọn Bluetooth muốn kết nối.

Hình 24: Giao diện chương trình điều khiển chưa kết nối

Nhấp chọn nút biểu tượng Bluetooth để lựa chọn Module Bluetooth cần kết nối. Chọn Bluetooth HC-05 để kết nối với điện thoại thông minh

Hình25: Chọn Bluetooth muốn kết nối

Sau khi kết nối thành công, kế bên biểu tượng Bluetooth sẽ đổi sang màu xanh đồng thời hiển thịConnected

Hình 26: Giao diện khi nối thành công

Kết luận và hướng phát triển

Sau khi hoàn thành đề tài nhóm đã đạt được một số kết quả là:

 Hệ thống đã vận hành và chạy ổn định

 Tìm hiểu về ngôn ngữ lập trình trên Arduino

 Tìm hiểu về cấu tạo và nguyên lý hoạt động trong các board mạch ứng dụng Ưu điểm của hệ thống:

 Chỉ kết nối được 1 thiết bị module Bluetooth nên bảo mật cao

 Nắm bắt được cấu trúc phần cứng, phần mềm và cách thức vận hành hệ thống.

 Giá thành rẻ, tầm giao tiếp rộng, ít tiêu thụ điện năng, bảo mất tốt

 Ứng dụng công nghệ Bluetooth rất được quan tâm và phát triển hiện nay

Nhược điểm của hệ thống:

 Một số chi tiết cần tối ưu hóa để có thể áp dụng vào thực tế được hiệu quả hơn.

 Phạm vi kết nối ngắn, dễ bị nhiễu, bắt sóng kém khi có vật cản, thiết lập kết nối lâu.

 Không thể kết nối nhiều thiết bị cùng một lúc.

3.3.2 Hướng phát triển của đề tài:

 Tích hợp một số chức năng cho hệ thống như: máy ảnh, GPS để đến nhưng nơi nguy hiểm con người không thể đến.

 Tích hợp sử dụng năng lượng mặt trời trên thiết bị.

 Khoảng cách giao tiếp cho phép giữa 2 thiết bị kết nối có thể lên đến 100m.

 Phần hệ thống GPS có thể quản lý phương tiện 1 cách sâu sắc và hiệu quả hơn.

Ngày đăng: 07/03/2024, 12:09

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

TÀI LIỆU LIÊN QUAN

w