Tổng hợp những câu hỏi cần thiết và quan trọng của môn Công nghệ phần mềm nhúng (KMA). Tài liệu này giúp các bạn sinh viên có thể vượt qua các bài kiểm tra giữa kỳ, cuối kỳ và đạt kết quả cao nhất. Xin cảm ơn các bạn đã xem và tải tài liệu.
Trang 1HỌC VIỆN KỸ THUẬT MẬT MÃ Khoa Công nghệ thông tin
BÁO CÁO MÔN HỌC CÔNG NGHỆ PHẦN MỀM NHÚNG
ĐỀ TÀI: XE ĐIỀU KHIỂN TỪ XA
Giảng viên hướng dẫn:
Sinh viên thực hiện: A
B
C Nhóm A
1
2
3
Hà Nội, 2023
Trang 2MỤC LỤC
DANH MỤC CÁC HÌNH ẢNH i
DANH MỤC CÁC BẢNG BIỂU ii
MỞ ĐẦU 1
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 2
1.1 Giới thiệu 2
1.2 Tình hình phát triển hiện nay 2
1.2.1 Xu hướng trong điều khiển xe từ xa sử dụng Arduino 2
1.2.2 Các dự án và nghiên cứu đáng chú ý 3
1.3 So sánh sản phẩm hiện có trên thị trường 3
1.4 Mô hình mẫu sản phẩm mong muốn 4
1.4.1 Mô hình mẫu 4
1.4.2 Ưu điểm và điểm đặc biệt của sản phẩm mục tiêu 5
1.5 Cơ sở phần cứng được sử dụng 5
1.5.1 Arduino Uno R3 6
1.5.2 Motor Shield L293D 10
1.5.3 Module Bluetooth HC – 05 12
1.5.4 Động cơ giảm tốc vàng 15
1.5.5 Cảm biến siêu âm HC – SR04 15
1.5.6 Một số linh kiện khác 16
1.6 Phần mềm và mã nguồn mở được sử dụng 20
1.6.1 Phần mềm Arduino IDE 20
1.6.2 Phần mềm Bluetooth RC controller 22
TỔNG KẾT CHƯƠNG 1 23
CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 24
2.1 Phân tích hệ thống 24
2.1.1 Biểu đồ Use Case tổng quát 24
2.1.2 Đặc tả các Use Case 24
2.1.3 Biểu đồ tuần tự 25
2.2 Thiết kế hệ thống 28
2.2.1 Sơ đồ thuật toán 28
Trang 32.2.2 Sơ đồ khối và nguyên lý hoạt động 31
2.2.3 Mô phỏng sơ đồ nối dây 32
2.2.4 Hình ảnh thực tế 32
TỔNG KẾT CHƯƠNG 2 33
CHƯƠNG 3: THỰC NGHIỆM 34
3.1 Yêu cầu cài đặt phần cứng và phần mềm 34
3.1.1 Yêu cầu cài đặt ứng dụng 34
3.1.2 Yêu cầu cài đặt đối với xe mô hình 34
3.2 Thực nghiệm 34
3.2.1 Thực nghiệm điều khiển xe bằng thiết bị di động 34
3.2.2 Thực nghiệm phát hiện vật cản 38
3.3 Kết quả thực nghiệm 39
3.4 Nhận xét, đánh giá 39
TỔNG KẾT CHƯƠNG 3 40
KẾT LUẬN 41
TÀI LIỆU THAM KHẢO 42
PHỤ LỤC 43
Trang 4DANH MỤC CÁC HÌNH ẢNH
Hình 1.1 Mẫu xe điều khiển bằng Bluetooth sử dụng cảm biển siêu âm 4
Hình 1.2 Arduino Uno R3 7
Hình 1.3 Vi điều khiển 8
Hình 1.4 Các cổng vào ra 10
Hình 1.5 Motor Shield L293D 11
Hình 1.6 Module Bluetooth HC – 05 13
Hình 1.7 Động cơ giảm tốc vàng 15
Hình 1.8 Cảm biến siêu âm HC – SR04 15
Hình 1.9 Bộ khung xe 17
Hình 1.10 Pin cell 18650 2600mAh 5C 18
Hình 1.11 Hộp đế pin 2 cell 18
Hình 1.12 Dây cab sợi Đực Cái 10cm 19
Hình 1.13 Công tắc bập bênh 20
Hình 1.14 Giao diện phần mềm 21
Hình 1.15 Phần mềm Bluetooth RC Controller 22
Hình 2.1 Biểu đồ Use Case tổng quát 24
Hình 2.2 Biểu đồ tuần tự “Tiến lên” 25
Hình 2.3 Biểu đồ tuần tự “Lùi lại” 26
Hình 2.4 Biểu đồ tuần tự “Quay trái” 26
Hình 2.5 Biểu đồ tuần tự “Quay phải” 27
Hình 2.6 Biểu đồ tuần tự “Dừng lại” 27
Hình 2.7 Sơ đồ thuật toán tổng thể 28
Hình 2.8 Sơ đồ thuật toán “Điều khiển xe di chuyển” 29
Hình 2.9 Sơ đồ thuật toán “Dừng lại khi gặp vật cản” 30
Hình 2.10 Sơ đồ khối tổng quát 31
Hình 2.11 Sơ đồ nối dây tổng quát 32
Hình 2.12 Mô hình xe thực tế 32
Hình 3.1 Màn hình hiển thị để kết nối ứng dụng với Bluetooth module tương ứng 35
Hình 3.2 Kết nối với xe điều khiển không thành công 35
Hình 3.3 Kết nối với xe điều khiển thành công 36
Hình 3.4 Điều khiển xe di chuyển tới 36
Hình 3.5 Điều khiển xe “Quay phải” 37
Hình 3.6 Điều khiển xe “Quay trái” 37
Hình 3.7 Điều khiển xe di chuyển lùi 38
Hình 3.8 Thực nghiệm phát hiện vật cản 38
Trang 5DANH MỤC CÁC BẢNG BIỂU
Bảng 1.1 Mô tả các thiết bị phần cứng 6
Bảng 1.2 Thông số kỹ thuật của Arduino Uno R3 7
Bảng 1.3 Các chân cảm biến siêu âm 16
Bảng 2.1 Đặc tả Use Case “Điều khiển xe” 25
Bảng 2.2 Đặc tả Use Case “Dừng lại” 25
Bảng 3.1 Bảng chuyển đổi từ khóa sang lệnh 34
Trang 6MỞ ĐẦU
Xe điều khiển từ xa đã trở thành một ứng dụng thú vị và phổ biến trong lĩnh vực công nghệ phần mềm nhúng Không chỉ là một trò chơi thú vị, mà còn là một minh chứng sáng rõ cho sự tiến bộ của công nghệ và ứng dụng của nó trong cuộc sống hàng ngày Đề tài này đưa chúng ta vào thế giới của những chiếc xe tự động điều khiển từ xa, nơi chúng ta sẽ khám phá cách công nghệ phần mềm nhúng đang cách mạng hóa và cách chúng ta tương tác với các thiết bị
Trong thập kỷ gần đây, công nghệ phần mềm nhúng đã phát triển mạnh mẽ, mở ra nhiều cơ hội và thách thức mới trong việc thiết kế và phát triển các ứng dụng điều khiển từ xa
Từ các ứng dụng đơn giản như điều khiển đèn thông qua smartphone cho đến những ứng dụng phức tạp như xe tự động không người lái, công nghệ này đã thay đổi cách chúng ta tương tác với thế giới xung quanh
Trong đề tài này, chúng ta sẽ xem xét cơ bản về công nghệ phần mềm nhúng và cách
nó được áp dụng vào việc điều khiển từ xa các loại xe, bao gồm cả xe đồ chơi và xe tự động thực tế Chúng ta sẽ tìm hiểu về các thành phần quan trọng của hệ thống, từ cảm biến cho đến giao thức truyền thông và phần mềm điều khiển
Bên cạnh việc tìm hiểu về công nghệ, chúng ta cũng sẽ xem xét những ứng dụng thực tiễn của xe điều khiển từ xa, bao gồm việc sử dụng chúng trong lĩnh vực giáo dục, giải trí, quảng cáo, và thậm chí trong ngành công nghiệp Chúng ta sẽ cùng nhau thảo luận về những lợi ích và tiềm năng của công nghệ này, cũng như các thách thức mà nó đặt ra trong việc bảo mật và quản lý
Cuối cùng, thông qua việc khám phá đề tài này, chúng ta hy vọng sẽ có cái nhìn tổng quan về vai trò quan trọng của công nghệ phần mềm nhúng trong việc phát triển xe điều khiển
từ xa và tạo ra những ứng dụng thú vị và hứa hẹn trong tương lai
Nội dung báo cáo được chia làm 3 phần cụ thể như sau:
✓ Chương 1: Cơ sở lý thuyết
✓ Chương 2: Phân tích thiết kế hệ thống
Trang 7CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Giới thiệu
Giới thiệu chương này nhằm mục đích đưa độc giả vào bối cảnh của đề tài “Xe Điều Khiển Từ Xa Sử Dụng Arduino” Trong chương này, chúng ta sẽ khám phá cơ sở lý thuyết và tình hình phát triển liên quan đến việc sử dụng Arduino để điều khiển xe từ xa
Xe điều khiển từ xa là một lĩnh vực đầy hứa hẹn với nhiều ứng dụng thú vị trong cuộc sống hàng ngày và công nghiệp Từ việc giải trí cho đến ứng dụng công nghiệp và khám phá môi trường, việc điều khiển xe từ xa đã trở thành một phần không thể thiếu của cuộc sống hiện đại
Chương này sẽ đi sâu vào nghiên cứu tình hình hiện tại và những tiến bộ trong lĩnh vực này, cung cấp cho chúng ta cái nhìn tổng quan về những cơ hội và thách thức của việc sử dụng Arduino để điều khiển xe từ xa Nó cũng sẽ giới thiệu về việc so sánh các sản phẩm hiện có trên thị trường và đưa ra mô hình mẫu cho sản phẩm mục tiêu mà chúng ta sẽ nghiên cứu và phát triển trong các phần tiếp theo của đề tài
1.2 Tình hình phát triển hiện nay
1.2.1 Xu hướng trong điều khiển xe từ xa sử dụng Arduino
Trong thời đại số hóa ngày nay, điều khiển xe từ xa đã trở thành một lĩnh vực phát triển đầy hứa hẹn, và Arduino đang đóng một vai trò quan trọng trong sự tiến bộ của nó Dưới đây
là một số xu hướng chính liên quan đến việc điều khiển xe từ xa sử dụng Arduino:
✓ IoT và Kết nối Internet: Sự phát triển của Internet of Things (IoT) đã mở ra cánh cửa cho việc kết nối xe điều khiển từ xa với internet Điều này cho phép người dùng điều khiển xe từ xa và thu thập dữ liệu từ xa thông qua ứng dụng di động hoặc máy tính, cung cấp sự tiện lợi và khả năng giám sát từ xa
✓ Tích hợp các Cảm biến và Mô-đun: Arduino có khả năng tích hợp nhiều loại cảm biến như cảm biến khoảng cách, cảm biến ánh sáng, cảm biến nhiệt độ, và nhiều
mô – đun khác Điều này làm cho xe điều khiển từ xa có thể tự động phản ứng và thích ứng với môi trường xung quanh
✓ Điều khiển từ xa thông qua ứng dụng di động: Ứng dụng di động đã trở thành một phương tiện phổ biến để điều khiển xe từ xa Arduino có khả năng kết nối với các ứng dụng di động thông qua Bluetooth hoặc Wi-Fi, cho phép người dùng dễ dàng tương tác với xe từ xa thông qua giao diện người dùng trực quan
✓ Sự an toàn và bảo mật: Với việc càng nhiều xe điều khiển từ xa được sử dụng trong các môi trường khác nhau, vấn đề an toàn và bảo mật trở nên quan trọng hơn bao giờ hết Arduino đã phát triển các biện pháp bảo mật để đảm bảo rằng chỉ người dùng được ủy quyền mới có thể truy cập và điều khiển xe
Trang 8Những xu hướng này đang thúc đẩy sự phát triển và sáng tạo trong lĩnh vực điều khiển
xe từ xa sử dụng Arduino, mở ra nhiều cơ hội và thách thức cho những người nghiên cứu và phát triển trong lĩnh vực này
1.2.2 Các dự án và nghiên cứu đáng chú ý
Lĩnh vực điều khiển xe từ xa sử dụng Arduino đã thu hút sự quan tâm của nhiều dự án
và nghiên cứu đáng chú ý Dưới đây là một số ví dụ về các dự án và nghiên cứu tiêu biểu:
✓ OpenRC: OpenRC là một dự án mã nguồn mở nổi tiếng trong cộng đồng điều khiển
xe từ xa Dự án này sử dụng các thành phần Arduino và phần cứng tự chế để xây dựng các mô hình xe RC (Remote Control) với tính năng mở rộng và khả năng tùy chỉnh cao
✓ Smart Car: Các nghiên cứu về ô tô tự hành và xe thông minh đã đưa Arduino vào ngành công nghiệp ô tô Arduino được sử dụng để phát triển các hệ thống kiểm soát
và đánh giá trong xe thông minh để cải thiện tính an toàn và khả năng tương tác của
xe với môi trường
✓ Aerial Drones: Arduino cũng đã được tích hợp vào các dự án về máy bay không người lái (drone) để cải thiện khả năng kiểm soát và thu thập dữ liệu từ xa Các drone dựa trên Arduino có khả năng tùy chỉnh mạnh mẽ và giá trị ứng dụng rộng rãi từ giám sát môi trường đến ảnh và video chất lượng cao
✓ Robotic Exploration: Arduino cung cấp một nền tảng lý tưởng cho nghiên cứu về khám phá và điều khiển robot Các dự án như robot tự hành, robot ứng dụng trong nghiên cứu khoa học, và robot khám phá môi trường đều sử dụng Arduino để điều khiển và thu thập dữ liệu từ xa
Những dự án và nghiên cứu này không chỉ thể hiện sự đa dạng của ứng dụng Arduino trong việc điều khiển từ xa mà còn tạo ra tiềm năng cho sự phát triển và ứng dụng sáng tạo trong tương lai Các nghiên cứu này cung cấp kiến thức và kinh nghiệm quý báu cho các nhà nghiên cứu và nhà phát triển đang làm việc trong lĩnh vực này
1.3 So sánh sản phẩm hiện có trên thị trường
Khi nghiên cứu về việc sử dụng Arduino để điều khiển xe từ xa, việc so sánh và đánh giá các sản phẩm hiện có trên thị trường là một phần quan trọng để hiểu rõ về sự phát triển của lĩnh vực này Dưới đây là một số đánh giá về ưu điểm và nhược điểm của các sản phẩm hiện có:
Ưu Điểm:
✓ Tính ứng dụng rộng rãi: Các sản phẩm hiện có trên thị trường thường phù hợp cho nhiều mục đích, từ giải trí cho đến công nghiệp và giám sát môi trường
✓ Dễ dàng sử dụng: Hầu hết các sản phẩm đã được thiết kế để sử dụng dễ dàng ngay
cả cho người không có kỹ thuật cao
Trang 9✓ Ưu điểm về tính năng: Nhiều sản phẩm đã tích hợp các tính năng tiên tiến như hệ thống định vị GPS, camera HD, và khả năng tương tác thông qua ứng dụng di động
✓ Hỗ trợ kỹ thuật: Các hãng sản xuất thường cung cấp dịch vụ hỗ trợ kỹ thuật tốt và cập nhật phần mềm định kỳ để nâng cao tính ổn định và bảo mật
1.4 Mô hình mẫu sản phẩm mong muốn
1.4.1 Mô hình mẫu
Hình 1.1 Mẫu xe điều khiển bằng Bluetooth sử dụng cảm biển siêu âm
Trang 101.4.2 Ưu điểm và điểm đặc biệt của sản phẩm mục tiêu
Sản phẩm mục tiêu sẽ có những ưu điểm và điểm đặc biệt sau:
✓ Điều khiển từ xa thuận tiện: Sản phẩm cho phép điều khiển từ xa thông qua kết nối Bluetooth, giúp người dùng tương tác và điều khiển xe một cách thuận tiện và linh hoạt
✓ Tích hợp cảm biến siêu âm: Sản phẩm sử dụng cảm biến siêu âm HC – SR04 để đo khoảng cách và tránh vật thể, giúp xe tự động tránh các chướng ngại vật trong quá trình di chuyển
✓ Sử dụng ứng dụng Bluetooth RC Controller: Sản phẩm tích hợp ứng dụng Bluetooth
RC Controller, giúp người dùng dễ dàng điều khiển và tương tác với xe từ xa thông qua điện thoại di động
✓ Ứng dụng rộng rãi: Sản phẩm có thể áp dụng trong nhiều lĩnh vực như giải trí, giáo dục, nghiên cứu và ứng dụng công nghiệp
Mô hình mẫu này mang lại khả năng điều khiển từ xa thông qua Bluetooth và tích hợp các tính năng bảo vệ và tương tác, tạo ra một sản phẩm đa dạng và thú vị trong việc điều khiển
xe từ xa sử dụng Arduino
1.5 Cơ sở phần cứng được sử dụng
Để thực hiện được báo cáo này nhóm đã sử dụng phần cứng là board Arduino Uno kết hợp với cảm biến siêu âm HC – SR04, cảm biến hồng ngoại và module điều khiển động cơ L293D Từ đó kết nối các linh kiện và sử dụng phần mềm Arduino IDE để viết chương trình điều khiển cho xe hoạt động như ý muốn
1 Arduino Uno R3 Đây là bộ não của hệ thống, nơi các tín hiệu điều khiển
được xử lý và gửi tới các phần khác của xe
5 Motor Shield L293D Mạch điều khiển động cơ tích hợp Cho phép điều khiển
hướng và tốc độ quay của động cơ
6 Dây cáp Dùng để kết nối và truyền dữ liệu hoặc tín hiệu giữa các
thành phần trong hệ thống xe điều khiển từ xa
7 Đế 2 pin 18650 Dùng để lắp đặt và giữ pin trong hệ thống
8 Pin Lithium 18650 Cung cấp nguồn năng lượng cho động cơ, mạch điều khiển
Trang 119 Module cảm biến siêu
âm HC – SR04
Là cảm biến khoảng cách sử dụng sóng siêu âm để đo khoảng cách đến vật thể Nó phát sóng siêu âm và đo thời gian phản xạ để tính khoảng cách
10 Động cơ giảm tốc Là thiết bị chuyển biến năng lượng điện thành chuyển động
cơ học
11 Bánh xe Là phần quan trọng giúp xe di chuyển bằng cách quay
Bảng 1.1 Mô tả các thiết bị phần cứng
1.5.1 Arduino Uno R3
1.5.1.1 Giới thiệu tổng quan về Arduino Uno R3
Arduino board có rất nhiều phiên bản với hiệu năng và mục đích sử dụng khác nhau như: Arduino Mega, Arduino LilyPad,… Trong số đó, Arduino Uno R3 là một trong những phiên bản được sử dụng rộng rãi nhất bởi chi phí và tính linh động của nó
Do Arduino có tính mở về phần cứng, chính vì vậy bản thân Arduino Uno R3 cũng có những biến thể để phù hợp cho nhiều đối tượng khác nhau
Vì vậy, để có thể tận dụng tối đa sức mạnh của Arduino board, ta cần phải biết rõ được thông số kỹ thuật của từng loại, nắm được cái khác biệt giữa các phiên bản từ đó có giải pháp
xử lý phù hợp
Điểm mạnh của Arduino Uno R3 không chỉ nằm ở việc nó là một bo mạch mở, mà còn
ở khả năng mở rộng thông qua các chân I/O (Input/Output) và các giao tiếp như I2C, SPI, UART Điều này cho phép người dùng kết nối Arduino với nhiều loại cảm biến, màn hình, hoặc thiết bị ngoại vi khác một cách dễ dàng
Arduino Uno R3 hỗ trợ nhiều ngôn ngữ lập trình như C/C++ và Python thông qua các thư viện và IDE (Integrated Development Environment) đơn giản và dễ sử dụng Điều này giúp người dùng không chỉ học lập trình mà còn nắm vững về vi điều khiển nhúng
Với tính đơn giản trong cấu trúc và lập trình, Arduino Uno R3 là lựa chọn hàng đầu cho các khóa học và dự án giảng dạy về điện tử và lập trình, từ trình độ cơ bản đến nâng cao
Arduino Uno R3 được hỗ trợ bởi một cộng đồng lớn và nhiều tài liệu trực tuyến Điều này mang lại sự thuận lợi cho việc học hỏi và giải quyết vấn đề khi gặp phải khó khăn
Ngoài việc được sử dụng rộng rãi trong giáo dục, Arduino Uno R3 cũng được áp dụng trong nhiều dự án thực tiễn như thiết kế đèn chiếu sáng tự động, hệ thống giám sát môi trường,
và thiết bị đo lường thông minh
Arduino community luôn tiếp tục phát triển và cải tiến, đưa ra các phiên bản mới và hỗ trợ công nghệ mới như Internet of Things (IoT), đảm bảo rằng Arduino Uno R3 luôn ở vị thế tiên phong trong lĩnh vực điện tử và lập trình nhúng
Trang 12Hình 1.2 Arduino Uno R3
1.5.1.2 Một vài thông số của Arduino Uno R3
Trang 13Hình 1.3 Vi điều khiển
1.5.1.4 Nguồn
Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn ngoài với điện áp khuyên dùng là 7 – 12V DC và giới hạn là 6 – 20V Thường thì cấp nguồn bằng pin vuông 9V là hợp lý nhất nếu bạn không có sẵn nguồn từ cổng USB Nếu cấp nguồn vượt quá ngưỡng giới hạn trên, bạn sẽ làm hỏng Arduino Uno
Các chân nguồn:
✓ GND (Ground): Cực âm của nguồn điện cấp cho Arduino UNO Khi bạn dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau
✓ 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
✓ IOREF: Điện áp hoạt động của vi điều khiển trên Arduino Uno có thể được đo ở 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 một điện trở 10KΩ
Lưu ý:
Arduino UNO không có bảo vệ cắm ngược nguồn vào Do đó phải hết sức cẩn thận, kiểm tra các cực âm – dương của nguồn trước khi cấp cho Arduino Uno Việc làm chập mạch nguồn vào của Arduino Uno sẽ biến nó thành một miếng nhựa chặn giấy
Các chân 3.3V và 5V trên Arduino là các chân dùng để cấp nguồn ra cho các thiết bị khác, không phải là các chân cấp nguồn vào Việc cấp nguồn sai vị trí có thể làm hỏng board Điều này không được nhà sản xuất khuyến khích
Trang 14Cấp nguồn ngoài không qua cổng USB cho Arduino Uno với điện áp dưới 6V có thể làm hỏng board
Cấp điện áp trên 13V vào chân RESET trên board có thể làm hỏng vi điều khiển ATmega328
Cường độ dòng điện vào/ra ở tất cả các chân Digital và Analog của Arduino Uno nếu vượt quá 200mA sẽ làm hỏng vi điều khiển
Cấp điệp áp trên 5.5V vào các chân Digital hoặc Analog của Arduino Uno sẽ làm hỏng
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
✓ 32KB bộ nhớ Flash: Những đoạn lệnh lập trình sẽ được lưu trữ trong bộ nhớ Flash của vi điều khiển Thường thì sẽ có khoảng vài KB trong số này sẽ được dùng cho bootloader nhưng hiếm khi nào cần quá 20KB bộ nhớ này
✓ 2KB cho SRAM (Static Random Access Memory): Giá trị các biến khai báo khi lập trình sẽ lưu ở đây Khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ 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 Erasable Programmable Read Only Memory): Đây giống như một chiếc ổ cứng mini – nơi có thể đọc và ghi dữ liệu của mình vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM
1.5.1.6 Các cổng vào ra
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:
✓ 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 hai 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 hai chân này nếu không cần thiết
Trang 15✓ Chân PWM (~): 3, 5, 6, 9, 10, và 11: Cho phép bạn 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, bạ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, bốn 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, bạn 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 10 bit (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ếp I2C/TWI với các thiết bị khác
Trang 16Arduino Motor Shield sử dụng 2 IC cầu H hoàn chỉnh với các chế độ bảo vệ và 1 IC logic 74HC595 để điều khiển các động cơ.
Arduino Motor Shield có thể điều khiển nhiều loại motor khác nhau như step motor,servo motor, motor DC, với mức áp lên đến 36V, dòng tối đa 600mA cho mỗi kênh điều khiển
Thông số:
✓ Điện áp đầu vào: 4.5V đến 36V
✓ Tương thích với các board Arduino Uno R3, Arduino Leonardo R3 và Arduino Mega 2560
✓ Có thể điều khiển động cơ DC (4 động cơ), động cơ servo (2 động cơ) và động cơ bước (2 động cơ) Hai cổng điều khiển servo motor được đánh dấu: Servo_1 và Servo_2 trên linh kiện Các cổng điều khiển động cơ DC được đánh dấu lần lượt là M1, M2, M, M4, chân giữa là chân GND
✓ Hai cổng điều khiển động cơ servo có điện áp vào 5V với timer có độ phân giải cao, phù hợp cho các ứng dụng điều khiển bằng Arduino có độ chính xác cao
✓ Có 2 IC Driver, do đó sẽ có 4 cầu H để điều khiển được 4 động cơ DC Mỗi cầu H
có dòng ra tối đa 0.6A (dòng chịu đựng cực đại là 1.2A) ở mỗi kênh điều khiển
✓ Các cổng M dùng điều khiển động cơ DC được điều khiển bằng tín hiệu PWM
✓ Driver còn hỗ trợ điều khiển 2 động cơ bước, với 2 cổng dùng cho 2 động cơ servo
có thể được dùng cho động cơ bước Với Shield, động cơ bước có thể vận hành ở tất cả các chế độ: full step, half step và micro – step Động cơ bước dùng cho driver
có thể là loại đơn cực (unipolar) hoặc lưỡng cực (bipolar)
✓ Có sẵn nút RESET để khởi động lại board Arduino
Hình 1.5 Motor Shield L293D
Trang 171.5.3 Module Bluetooth HC – 05
1.5.3.1 Giới thiệu về công nghệ Bluetooth
Sơ lược về kết nối Bluetooth:
✓ Bluetooth được phát minh bởi công ty Ericsson vào năm 1994, nó có thể kết nối nhiều thiết bị và khắc phục các vấn đề về đồng bộ hóa Ngày nay hầu hết các nhà máy đều sản xuất các thiết bị có sử dụng công nghệ Bluetooth Các thiết bị này gồm
có điện thoại di động, laptop, tablet và thiết bị hỗ trợ cá nhân (Personal Digital
Assistant – PDA) khác Công nghệ này thường được sử dụng để truyền thông giữa
hai loại thiết bị khác nhau
✓ Bluetooth sử dụng sóng Radio tần số 2.4GHz Tuy sử dụng cùng tần số với công
nghệ Wifi nhưng chúng không hề xung đột với nhau vì Bluetooth sử dụng tần số có bước sóng ngắn hơn
✓ Bluetooth là một chuẩn điện tử, điều đó có nghĩa là các hãng sản xuất muốn có đặc tính này trong sản phẩm thì họ phải tuân theo các yêu cầu của chuẩn Bluetooth cho sản phẩm của mình Những chỉ tiêu kỹ thuật này bảo đảm cho các thiết bị có thể nhận ra và tương tác với nhau khi sử dụng công nghệ Bluetooth
Các chuẩn kết nối Bluetooth:
✓ Bluetooth 1.0: Phiên bản Bluetooth đầu tiên với tốc độ 1Mpbs, nhưng khả năng
tương thích chưa cao
✓ Bluetooth 2.0 + ERD: Ra mắt vào tháng 7/2007 với sự ổn định và tốc độ chia sẻ
nhanh hơn, tiết kiệm năng lượng hơn các phiên bản trước
✓ Bluetooth 3.0 + HS: Ra mắt vào năm 2009 với tốc độ lý thuyết lên đến 24 Mbps
Bluetooth 3.0 rất phổ biến trên các mẫu điện thoại lúc bấy giờ, phù hợp với việc truyền dữ liệu nhỏ như hình ảnh, file nhạc,…
✓ Bluetooth 4.0: Bluetooth 4.0 được ra đời vào ngày 30/6/2010 là một phiên bản tối
ưu hóa các chuẩn Bluetooth trước đó (Classic Bluetooth) cho phép truyền tải tốc
độ cao nhờ vào Bluetooth High Speed và tiêu tốn năng lượng thấp hơn nhờ vào
Bluetooth Low Energy
✓ Bluetooth 5.0: Là thế hệ mới nhất hiện tại được SIG trình làng vào ngày 16/6/2016 với nhiều cải tiến vượt bậc như tầm phủ sóng rộng gấp 4 lần, tốc độ nhanh hơn
gấp đôi và tiết kiệm điện hơn gấp 2.5 lần so với 4.0
Các tính năng của Bluetooth:
✓ Cho phép các thiết bị kết nối được với nhau để trao đổi thông tin giữa chúng Ví dụ như điện thoại di động với nhau, máy tính bảng, máy tính xách tay, máy in, các thiết
bị dùng định vị GPS,…
Trang 18✓ Giao tiếp và điều khiển giữa một thiết bị di động với tai nghe không dây như tai nghe bluetooth
✓ Trở thành đường truyền kết nối không dây giữa các thiết bị vào – ra của máy tính như: chuột, bàn phím không dây
✓ Ứng dụng trong các thiết bị điều khiển từ xa như bộ điều khiển đồ chơi, điều khiển tivi, điều hòa,…
✓ Kết nối internet cho máy tính bằng cách biến smartphone làm modem
Ưu điểm:
✓ Thay thế hoàn toàn dây nối
✓ Hoàn toàn không nguy hại đến sức khoẻ con người
✓ Các thiết bị có thể kết nối với nhau trong vòng 20m mà không cần trực diện (hiện nay có loại Bluetooth kết nối lên đến 100m)
✓ Kết nối điện thoại và tai nghe Bluetooth khiến cho việc nghe máy khi lái xe hoặc làm một việc khác một cách dễ dàng
✓ Thời gian thiết lập lâu
1.5.3.2 Giới thiệu về module Bluetooth HC – 05
Trang 19Module thu phát Bluetooth HC – 05 dùng để thiết lập kết nối Serial giữa hai thiết bị bằng sóng bluetooth Điểm đặc biệt của module bluetooth HC – 05 là module có thể hoạt động được ở hai chế độ: MASTER hoặc SLAVE Trong khi đó, bluetooth module HC – 06 chỉ hoạt động ở chế độ SLAVE.
✓ Ở chế độ SLAVE: Bạn 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, bạn đã
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 (một module bluetooth HC – 06, USB bluetooth, bluetooth của laptop…) và tiến hành phải chủ động mà không cần thiết lập gì từ máy tính hoặc smartphone
Module Bluetooth thu phát HC – 05 được thiết kế nhỏ gọn ra chân tín hiệu giao tiếp cơ bản và nút bấm để vào chế độ AT COMMAND, mạch được thiết kế để có thể cấp nguồn và giao tiếp qua 3.3VDC hoặc 5VDC, thích hợp cho nhiều ứng dụng khác nhau: Robot Bluetooth, điều khiển thiết bị qua Bluetooth,…
Module này có 6 chân: VCC, GND, RX, TX, STATE, EN Trong đó, VCC và GND là hai chân cấp nguồn, đất cho module RX, TX dùng để nhận gửi dữ liệu với Arduino Chân STATE là chân trạng thái (chân này ko cần kết nối) EN là chân để chọn một trong hai chế độ hoạt động của con HC05, gồm chế độ AT Mode và Data Mode
Thông số kỹ thuật:
✓ Điện áp hoạt động: 3.3 – 5V
✓ Mức điện áp chân giao tiếp: TTL tương thích 3.3VDC và 5VDC
✓ Bluetooth protocol: Bluetooth specification v2.0 + EDR
✓ Frequency: 2.4 GHz ISM band
✓ Kích thước của module chính: 15.2 x 35.7 x 5.6mm
Chú ý: Module Bluetooth HC – 05 thường được sử dụng để thiết lập kết nối không dây giữa các thiết bị như Arduino và điện thoại di động hoặc máy tính thông qua Bluetooth Với các thông số kỹ thuật này, nó cho phép bạn xây dựng các ứng dụng điều khiển từ xa, truyền
dữ liệu không dây, và thực hiện các dự án IoT (Internet of Things) đơn giản
Trang 201.5.4 Động cơ giảm tốc vàng
Hình 1.7 Động cơ giảm tốc vàng
Động cơ giảm tốc này là loại được lựa chọn và sử dụng nhiều nhất hiện nay cho các
thiết kế Robot đơn giản Động cơ DC giảm tốc V1 cải tiến khác với loại bình thường ở phần thiết kế trục bổ sung thêm những vòng đồng ở các chỗ tiếp xúc giúp đăng độ bền và giảm ma sát, quan sát kỹ khi mở phần đuôi của động cơ sẽ thấy sự khác nhau về cơ cấu chổi than, chổi than của động cơ bình thường chỉ là các tiếp xúc bằng đồng mỏng trong khi với động cơ V1 cải tiến là 2 khối chổi than lớn, điều này giúp động cơ V1 cải tiến có độ bền > 10 lần so với động cơ thường cùng với khả năng chịu được mức điện áp lên đến 12VDC
Thông số kỹ thuật của Động cơ giảm tốc Vàng:
Trang 21Cảm biến HC – SR04 sử dụng sóng siêu âm và có thể đo khoảng cách trong khoảng từ
2 đến 300cm, với độ chính xác gần như chỉ phụ thuộc vào cách lập trình
Cảm biến HC – SR04 có 4 chân là: Vcc, Trig, Echo, GND
Trig Chân điều khiển phát Echo Chân nhận tín hiệu phản hồi
Bảng 1.3 Các chân cảm biến siêu âm
Cảm biến siêu âm HC – SR04 sử dụng nguyên lý phản xạ sóng siêu âm Cảm biến gồm hai module Một module phát ra sóng siêu âm và một module thu sóng siêu âm phản xạ về Đầu tiên cảm biến sẽ phát ra một sóng siêu âm với tần số 40khz Nếu có chướng ngại vật trên đường đi, sóng siêu âm sẽ phản xạ lại và tác động lên module nhận sóng Bằng cách đo thời gian từ lúc phát đến lúc nhận sóng ta sẽ tính được khoảng cách từ cảm biến đến chướng ngại vật Khoảng cách = (thời gian * vận tốc âm thanh (340 m/s) / 2
Ứng dụng của xe robot 4 bánh: Tốt hơn loại khung xe robot 3 bánh, dễ dàng điều chỉnh hướng đi của xe, xoay xe dựa trên việc điều khiển tốc độ của bánh xe thích hợp cho những ứng dụng làm xe robot tự hành, tránh vật cản, lắp ghép với cánh cánh tay robot để điều khiển
Thông số kỹ thuật:
✓ 4 động cơ hộp giảm tốc, điện áp cung cấp cho động cơ 6-9V
✓ 4 bánh xe robot bằng nhựa, lốp chất liệu cao su
✓ 1 bộ ốc vít và ke để gắn động cơ vào khung xe
✓ 1 bộ cọc đồng để ghép 2 tấm đế mica
Trang 22Thông số kỹ thuật pin cell 18650 2600mAh 5C:
✓ Loại pin: Pin sạc
✓ Loại cell Li – ion tròn 18650 màu tím
✓ Điện thế danh định: 3.6V
✓ Điện thế sạc đầy: 4.2V
✓ Nội trở: 15~30 Ohm
✓ Dung lượng thật: 2500mA
✓ Sạc pin: Sử dụng sạc Li-ion với thông số như bên dưới
✓ Điện thế sạc: 4.2V max
✓ Dòng sạc: 0.5A – 1A
Trang 23Hình 1.10 Pin cell 18650 2600mAh 5C
Thông số kỹ thuật hộp đế pin 2 cell:
✓ Đế giữ pin 18650
✓ Số pin giữ:
➢ 1 cell: 1 pin ra điện áp 3.7 ~ 4.2V
➢ 2 cell: 2 pin nối tiếp 7.4 ~ 8.4V
➢ 3 cell: 3 pin nối tiếp: 11.1 ~ 12.6V
➢ 4 cell: 4 pin nối tiếp: 14.8 ~ 16.8V
Trang 241.5.6.3 Dây cáp
Thông số kỹ thuật dây cáp:
✓ Dây Test Board: 10 sợi
Thông số kỹ thuật như sau:
✓ Điện áp chịu đựng: 6A 250VAC/ 10A 125VAC
✓ Số chân: Loại 2 chân
✓ Chế độ: 2 chế độ on/off
✓ Chất liệu: Vỏ bằng nhựa
Trang 25Hình 1.13 Công tắc bập bênh
1.6 Phần mềm và mã nguồn mở được sử dụng
Chương 1 đã cung cấp một cái nhìn tổng quan về cơ sở lý thuyết liên quan đến đề tài
“Xe Điều Khiển Từ Xa Sử Dụng Arduino”
Phần mềm đóng vai trò quan trọng trong việc lập trình và điều khiển xe từ xa sử dụng Arduino Dưới đây là một số phần mềm và mã nguồn mở được sử dụng:
✓ Arduino IDE: Môi trường phát triển tích hợp (IDE) của Arduino, cho phép bạn viết, biên dịch và nạp chương trình lên Arduino Board
✓ Thư viện Arduino: Arduino có sẵn một loạt các thư viện dành riêng cho các loại cảm biến, mô – đun, và chức năng cụ thể, giúp đơn giản hóa quá trình lập trình
✓ Mã nguồn mở: Cộng đồng Arduino rộng lớn đã tạo ra nhiều dự án mã nguồn mở và thư viện cho việc điều khiển xe từ xa Các dự án như “OpenRC” và “Arduino Remote Control” có mã nguồn mở có sẵn cho việc tùy chỉnh và phát triển
✓ Bluetooth RC controller: Cho phép người dùng điểu khiển và tương tác với xe từ xa thông qua kết nối Bluetooth
Sử dụng các phần mềm và mã nguồn mở này cùng với cơ sở phần cứng thích hợp giúp người dùng tạo ra các hệ thống
1.6.1 Phần mềm Arduino IDE
Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngôn ngữ riêng Ngôn ngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói chung Và Wiring lại là một biến thể của C/C++ Một số người gọi nó là Wiring, một số khác thì gọi là C hay C/C++ Riêng mình thì gọi nó là “ngôn ngữ Arduino”, và đội ngũ phát triển Arduino cũng gọi như vậy Ngôn ngữ Arduino bắt nguồn từ C/C++ phổ biến hiện nay do đó rất dễ học, dễ hiểu
Giao diện người dùng (GUI): Arduino IDE có một giao diện sáng sạch, dễ đọc và dễ
sử dụng Các phần của giao diện được thiết kế một cách logic giúp người dùng dễ dàng truy cập và sử dụng các tính năng
Kiểm tra lỗi (Error Checking): IDE cung cấp chức năng kiểm tra lỗi tự động, giúp người dùng dễ dàng xác định và sửa lỗi trong mã nguồn của họ