Tải bản đầy đủ (.pdf) (170 trang)

Thiết kế hệ thống nhúng với Arduino Designing Embedded System with Arduino ( Tiếng Việt)

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 (13.34 MB, 170 trang )

TRƯỜNG CAO ĐẲNG KỸ THUẬT CAO THẮNG
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

BIÊN DỊCH: HUỲNH XUÂN DŨNG

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


Giới thiệu
Preface
Trong thế giới của chúng ta có rất nhiều các thiết bị thông minh được nhúng với
các bộ vi xử lý, các cảm biến và phần mềm. Cộng đồng những người tự thực hiện (Doit-yourself) luôn bị lôi cuốn bởi những ứng dụng thực tế và có thể thiết kế và xây dựng
hệ thống thông minh cho các tác vụ cụ thể. Arduino là một nền tảng thay thế các bộ vi
xử lý truyền thống để để xây dựng những sản phẩm đặc sắc. Người dùng có thể tải
chương trình lập trình IDE (Intergrated Development Environment) và lập trình sử dụng
ngôn ngữ C/C++ cùng với thư viện Arduino (Arduino Core library), thư viện này cung
cấp nhiều hàm có sẵn rất hữu ích để lập trình. Arduino rất dễ dàng đề thực hiện các ứng
dụng như phím cảm ứng, giao tiếp âm thanh, điều khiển vị trí, nhiệt độ và ánh sáng…
Cuộc thi SPIED (Summer Program for Innovative Engineering Design) đã được
hiện trên nước như Nhật, Trung Quốc và Hàn Quốc và xoay vòng kể từ năm 2013. Vai
trò của SPIED là thiết lập kết nối sự sáng tạo trong giáo dục kỹ thuật trong ba nước.
Trong SPIED, các đối tượng lập trình chuyên nghiệp và Sinh viên từ Nhật, Hàn và Trung
Quốc cùng làm việc với nhau để lên kế hoạch, thiết kế, chế tạo và trình bày về các đối
tượng thuộc về cơ điện tử và hệ thống Robot. Bằng cách kết hợp kỹ thuật thiết kế với
khả năng nhận dạng vấn đề từ quan điểm của nhiều ngành, SPIED cung cấp cho người
tham nhận ra được được vai trị của mình trong việc thực hiện đề tài thông qua việc thiết
kế và tạo ra sản phẩm. Tuy nhiên hệ thống cơ điện tử và robot liên quan đến kỹ thuật
của nhiều ngành. Sinh viên cần phải cần có nhiều thời gian để thảo luận và học các cơng
nghệ. Và Arduino là một nền tảng độc đáo, có thể được sử dụng bởi bất kỳ ai, ngay cả
những người chưa lập trình và chưa có kinh nghiệm gì về mạch điện tử. Arduino là một
thiết bị có nền tảng là mã nguồn mở (open-Source) rất đơn giản về phần cứng và cả phần


mềm. Nó thích hợp đề phát triển các thiết bị mẫu. Vì vậy Arduino rất phù hợp cho sinh
viên
Trong cuốn sách này, chúng tơi muốn trình bày một cách có hệ thống các module
đi kèm với nền tảng Arduino và hướng dẫn những người mới bắt đầu hiểu về công nghệ
này. Hơn nữa những chủ đề với những thông tin khác nhau về cảm biến, về ánh sáng,
về điện tử, cơ điện tử, tính tốn về tốn học…cũng được giới thiệu trong cuốn sách này,
nó giúp cho người đọc khám phá ra sự phát triển của hệ thống từ góc độ liên ngành.

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


Mục tiêu và đối tượng
Objective and Intended Audience
Mục đích của cuốn sách này là trình bày về kỹ thuật điện tử và kỹ thuật lập trình
dựa trên nền tảng Arduino và để thảo luận chúng nhìn từ quan điểm sử dụng công nghệ
vi điều khiển để điều khiển ứng dụng thực tế ngồi mơi trường. Trong ba năm qua, nội
dung trong cuốn sách này đã được sử dụng để hổ trợ cuộc thi Summer Progam for
Innovative Engineering Design (SPIED), được thực hiện bởi ba nước, Nhật bản, Trung
Quốc và Hàn Quốc luân phiên nhau ( />Cuốn sách này có thể được sử dụng cho các bài học nâng cao cho sinh viên năm
nhất về vi điều khiển và các ứng dụng. Một phần nội dung của cuốn sách này đã được
sử dụng để hỗ trợ cho các nhà sản xuất về lĩnh vực điện tử và những người yêu thích về
thiết kế hệ thống nhúng

Nội Dung Cuốn Sách
Book Contents
Mặc dù đây là một cuốn sách có tính chất mở (open source) về phần cứng và điện
tử. Bạn sẽ tìm được nhiều chương trình mẫu (sample codes). Các chương trình mẫu này
được sử dụng để cấu hình phần cứng và chạy đươc các chương trình như chúng ta mong
muốn. Các tác giả là những giảng viên chuyên nghiệp với nhiều kinh nghiệm trong lĩnh
vực thiết kế hệ thông nhúng (Embedded System Design). Thông qua sự công tác, chúng

tôi cố gắng đưa ra một mơ hình mà ở đó giáo dục truyền thống có thể kết hợp với các
nhà chế tạo thiết bị trên thế giới để tạo những bài học có chiều sâu thông qua thực tế
hơn là học tập một cách thụ động. Các chương từ 1-6 được viết bởi Giáo Sư. Tianhong
Pan và chương 7 và 8 được viết bởi Tiến sĩ Biqi Sheng và Giáo sư Yi Zhu
Mở đầu cuốn sách (chương 1) Chú trọng vào các đặc điểm khác nhau của các
board Arduino. Tiếp theo là tổng quan về lịch sử, các đặc trưng của Arduino và cách
thức cài đặt driver và phần mềm lập trình IDE

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


Chương hai mô tả chức năng cơ bản của hệ thống nhúng, như các hàm có chức
năng ghi và đọc ngõ và số và tương tự của cách chân ngõ vào và ra, các hàm ngắt, các
hàm toán học, và các hàm truyền thơng nối tiếp
Chương 3 trình bày các loại module cảm biến khác nhau phù hợp với Arduino
như là cảm biến nhiệt độ, module joystick, cảm biến âm thanh tương tự, và những loại
cảm biến khác không dành riêng nhưng có tương thích với Arduino. Ngồi ra cịn thảo
luận thông tin về điện của các chân ngõ ra, sơ đồ nguyên lý và phần mềm
Chương 4 Giải thích bằng cách nào bạn có thể điều khiển động cơ với Arduino.
Nhiều loại động cơ cũng được đề cập đến như: Động cơ DC, động cơ Servo, động cơ
bước. Tất cả các loại mạch drive và sơ đồ nguyên lý của chúng cũng được đề cập trong
chương này
Chương 5 tập trung vào kỹ thuật khơng giây như: truyền/nhận sóng hồng ngoại,
Bluetooth, Zigbee, Wi-Fi … Các ví dụ trong chương này minh họa bằng cách nào có thể
kết nối Arduino tối các thiết bị và module để điều khiển từ xa trong thực tế
Chương 6-8 Trình bà vài dự án để minh họa về khả năng của board Arduino và
module cảm biến. Chúng thể hiện cho chúng ta biết bằng cách nào Arduino có thể áp
dụng vào nhiều tình huống khác nhau. Mỗi ví dụ minh họa gồm có lý thuyết của hoạt
động, sơ đồ nguyên lý, liệt kê các thành phần chi tiết, sơ đồ kết nối và tổng qua về các
chức năng của các phần mềm cần thiết.

Nhóm tác giả
Tiahong Pan
Yi Zhu

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


MỤC LỤC
Chương 1 ........................................................................................................................1
Bắt đầu với Arduino ......................................................................................................1
1.1 Giới thiệu ..................................................................................................................1
1.2 Các loại Arduino khác nhau ...................................................................................3
1.3 Cài đặt các Driver ....................................................................................................8
1.4 Arduino IDE...........................................................................................................11
Chương 2 ......................................................................................................................15
Các hàm cơ bản............................................................................................................15
2.1 Tổng quan ...............................................................................................................15
2.2 Cấu trúc (Structure) ..............................................................................................15
2.3 Các Hàm Vào/Ra Số (Digital I/O Functions) ......................................................16
2.4 Các Hàm Vào/Ra Tương Tự (Analog I/O Functions) ........................................18
2.5 Các Hàm Vào/Ra Nâng Cao (Advanced I/O Functions)....................................21
2.6 Các Hàm Timer (Timer Functions) .....................................................................24
2.7 Các hàm truyền thông (Communication Functions)..........................................26
2.8 Các Hàm Ngắt (Interrupt Function)....................................................................31
2.9 Các Hàm Tốn Học (Math Functions) ................................................................34
2.10 Tham Khảo Ngơn Ngữ Lập Trình .....................................................................39
Chương 3 ......................................................................................................................40
Sử dụng cảm biến với Arduino...................................................................................40
3.1 Giới Thiệu (Introduction) .....................................................................................40
3.2 Cảm Biến Cảm Nhận Ánh Sáng ...........................................................................40

3.2.1 Giới thiệu...........................................................................................................40
3.2.2 Diode quang (Photodiodes) ...............................................................................41
3.2.3 Ví dụ minh họa ..................................................................................................42
3.3 Cảm biến nhiệt độ (Temperature Sensor) ...........................................................43
3.3.1 Giới thiệu...........................................................................................................43
3.3.2 Cảm Biến Nhiệt Độ Số (Digital Temperature Sensor) .....................................44
3.3.3 Cảm Biến Nhiệt Độ Tương Tự (Analog Temperature Sensor).........................50
3.4 Cảm biến nhiệt độ và độ ẩm (Temperature and Humidity Sensor) .................53
3.4.1 Giới thiệu...........................................................................................................53
3.4.2 Ví dụ minh họa ..................................................................................................54

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


3.5 Cảm biến dò line (Line-Tracking Sensor) ...........................................................56
3.5.1 Giới thiệu...........................................................................................................56
3.5.2 Ví dụ minh họa ..................................................................................................57
3.6 Cảm biến siêu âm (Ultrasonic Sensors) ...............................................................59
3.6.1 Giới thiệu...........................................................................................................59
3.6.2 HC-SR04 ...........................................................................................................60
3.6.3 Ví dụ minh họa ..................................................................................................60
3.7 Cảm biến hồng ngoại số phát hiện di chuyển (Digital Infrared Motion Sensor)
.......................................................................................................................................62
3.7.1 Giới thiệu...........................................................................................................62
3.7.2 Ví dụ minh họa ..................................................................................................62
3.8 Joystick Module .....................................................................................................65
3.8.1 Giới thiệu...........................................................................................................65
3.8.2 Ví dụ minh họa ..................................................................................................65
3.9 Cảm biến Gas (Gas Sensor) ..................................................................................67
3.9.1 Giới thiệu...........................................................................................................67

3.9.2 ví dụ minh họa ...................................................................................................67
3.10 Cảm biến Hall (Hall Sensor) ...............................................................................69
3.10.1 Giới thiệu.........................................................................................................69
3.10.2 Ví dụ minh họa ................................................................................................69
3.11 Cảm biến màu (Color Sensor) ............................................................................71
3.11.1 Giới thiệu.........................................................................................................71
3.11.2 Ví dụ minh họa ................................................................................................72
3.12 Cảm biến độ nghiêng số (Digital Tilt Sensor) ...................................................74
3.12.1 Giới thiệu.........................................................................................................74
3.12.2 Ví dụ minh họa ................................................................................................75
3.13 Cảm biến gia tốc ba trục (Triple Axis Acceleration Sensor) ...........................77
3.13.1 Giới thiệu.........................................................................................................77
3.13.2 Ví dụ minh họa ................................................................................................77
3.14 Cảm biến âm thanh tương tự (Analog Sound Sensor) .....................................80
3.14.1 Giới thiệu.........................................................................................................80
3.14.2 Ví dụ minh họa ................................................................................................81
3.15 Module nhận dạng giọng nói (Voice Recognition Module) .............................83
3.15.1 Giới thiệu.........................................................................................................83

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


3.15.2 Ví dụ minh họa ................................................................................................83
3.16 Cảm biến rung số (Digital Vibration Sensor) ...................................................86
3.16.1 Giới thiệu.........................................................................................................86
3.16.2 Ví dụ minh họa ................................................................................................87
3.17 Cảm biến cháy (Flame Sensor) ...........................................................................89
3.17.1 Giới thiệu.........................................................................................................89
3.17.2 Ví dụ minh họa ................................................................................................89
3.18.2 Ví dụ minh họa ................................................................................................92

Chương 4 ......................................................................................................................94
Điều khiển hệ thống cơ điện tử sử dụng Arduino.....................................................94
4.1 Động cơ DC (DC Motor) .......................................................................................94
4.1.1 Tổng quan..........................................................................................................94
4.1.2 Thiết kế mạch điện điều khiển Driven (Driven Circuit Design) .......................95
4.1.3 Ví dụ minh họa ..................................................................................................96
4.2 Động cơ bước .......................................................................................................101
4.2.1 Tổng quan........................................................................................................101
4.2.2

Nguyên lý làm việc của động cơ bước .......................................................102

4.2.3 Nguyên lý điều khiển động cơ bước (Driven Principle of Stepper Motor) ....103
4.2.4 Thiết kế mạch điện điều khiển (Driver) ..........................................................106
4.2.5 Ví dụ minh họa 1 (Demonstration 1) .............................................................108
4.2.6 Ví dụ minh họa 2 (Demontration 2) ................................................................111
4.3 Động cơ Servo (Servo Motor) .............................................................................112
4.3.1 Tổng quan (Overview) ....................................................................................112
4.3.2 Thiết kế mạch điện điều khiển ........................................................................114
4.3.3 Ví dụ minh họa (Demonstration) ....................................................................115
Chương 5 ....................................................................................................................118
Điều khiển không giây sử dụng Arduino .................................................................118
5.1 Module truyền và nhận hồng ngoại ...................................................................118
5.1.1 Giới thiệu.........................................................................................................118
5.1.2 Module truyền nhận hồng ngoại (IR Transmiter/Receiver) ............................119
5.1.3 IR Kit ...............................................................................................................122
5.2 Module vô tuyến không giây tần số 2.4G\ .........................................................129
5.2.1 Giới thiệu.........................................................................................................129
5.2.2 Module truyền nhận tín hiệu khơng dây RF 2.4 GHz .....................................129


Share by: www.ungdungmaytinh.com - trungtamcadcam.com


5.2.3 Ví dụ minh họa (Demonstration) ....................................................................131
5.3 Bluetooth Module ................................................................................................135
5.3.1 Giới thiệu.........................................................................................................135
5.3.2 HC-05 Module ................................................................................................136
5.3.3 Điều chỉnh module HC-05 dùng tập lệnh AT .................................................137
5.4 GSM/GPRS Module ............................................................................................147
5.4.1 Giới thiệu.........................................................................................................147
5.4.2 Module GSM/GPRS A6 ..................................................................................148
5.4.3 Ví dụ minh họa ................................................................................................152
5.5 Module Wi-Fi .......................................................................................................155
5.5.1 Giới thiệu.........................................................................................................155
5.5.2 Module Wi-Fi ..................................................................................................156
5.5.3 Ví dụ minh họa ................................................................................................158

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


ThS. Huỳnh Xuân Dũng

Chương 1

Bắt đầu với Arduino
Getting Started with Arduino

1.1 Giới thiệu
Vào năm 2005, Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino,
và David Mellis đã lên ý tưởng cho một thiết bị dễ dàng lập trình dùng trong thiết kế các

dự án tại Interaction Design Institute Ivrea, Italy. Thiết bị nàycần phải đơn giản, dễ dàng
kết nối đế nhiều thiết bị khác nhau như (Rờ le, động cơ và các cảm biến) và phải dễ dàng
để lập trình. Ngồi ra giá thành khơng q đắt để có thể phù hợp với sinh viên và các
lập trình viên khác. Họ đã lựa chọn họ vi điều khiển 8-bit (MCU hay µC) AVR từ nhà
sản xuất Atmel và thiết kế trên board mạch điện tử với các ngõ kết nối chờ sẵn, nạp sẵn
bootloader firmware cho vi điều khiển và tích hợp tất cả vào trong môi trường phát triển
(development enviroment) được sử dụng lập trình được gọi là "sketches" Kết quả cuối
cùng là sự ra đời của board Arduino.
Arduino là một vi điều khiển mã nguồn mở cho phép lập trình tương tác dễ dàng;
Arduino được lập trình sử dụng C/C++ với thư viện Arduino cho phép truy cập vào phần
cứng. với sự cho phép lập trình mềm dẻo kết hợp sử dụng mạch điện tử có thể thực hiện
với Arduino. Bởi vì Arduino là mã nguồn mở, các mạch điện giao tiếp có thể dễ dàng
tìm thấy trực tuyến và miễn phí cho bất kỳ ai muốn sửdụng và tạo ra board mạch riêng
của mình dựa vào các sơ đồ nguyên lý (schematics), các mạch này sẽ lại được được
chính học chia sẽ lên mạng. Điều này cho phép thảo luận việc xây dựng các ứng dụng
như thế nào, cơng suất ra sao, kích thước board như thế có phù hợp hay không... Arduino
được cấu tạo gồm hai thành phần như sau:
1. Arduino board, là phần cứng mà bạn làm việc trực tiếp để xây dựng các dự án của
mình
1

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


ThS. Huỳnh Xuân Dũng
2. Arduino IDE, là phần mềm chạy trên máy tính của bạn. Bạn sử dụng IDE để tạo một
sketch (một chương trình nhỏ trên máy tính) mà bạn sẽ upload lên Arduino board.
Arduino có nhiều loại khác nhau trên thị trường bởi vì chúng có các đặc điểm sau:
1. Arduino làm việc ở nhiều môi trường như Windows, Macintosh, và Linux
2. Nó hoạt động dựa vào chương trình xử lý IDE, đây là mơi trường phát triển dễ sử

dụng cho các nhà thiết kế.
3. Bạn lập trình Arduino qua cáp USB, không phải là cáp nối tiếp. Đặc tính này rất thuận
tiện vì nhiều máy tính ngày nay khơng có các cổng nối tiếp (serial port)
4. Phần cứng và phần mềm đều mã nguồn mở, nếu muốn bạn có thể tải (download) sơ

AM

đồ mạch điện, mua tất cả các linh kiện, và có thể tự làm board Arduino cho riêng mình
mà khơng phải trả bất kỳ phí bản quyền nào.

/C

5. Phần cứng có giá thành rất rẻ

6. Có sẵn một cộng đồng người sử dụng, và sẽ có nhiều người có thể giúp đở bạn.

AD

7. Dự án Arduino đã được phát triển trong môi trường giáo dục, và vì thế những người

C

mới được biết và tiếp cận ngày càng nhiều.

m

Nhờ có những đặc điểm đặc biệt như vậy, có nhiều những ứng dụng như:




1. Giám sát các hiện tượng ở thế giới thực (Real-world monitoring)
• Trạm quan sát thời tiết tự động (Automated weather station)

g

• Bộ phát hiện ánh sáng (Lightning detection)

un

• Bộ điều khiển bám theo mặt trời cho tấm pin năng lương mặt trời

Tr

• Bộ giám sát bức xạ

• Bộ theo dõi thú vật tự động (Automatic wildlife detector)
• Hệ thống an ninh cho ngơi nhà và công ty (Home or business security system)
2. Điều khiển các hệ thống nhỏ (Small-scale control)
• Các robot có kích thước nhỏ (Small robots)
• Các mơ hình tên lửa (Model rockets)
• Các mơ hình máy bay (Model aircrafts)
• Các mơ hình trực thăng 4 động cơ (Quadrotor UAVs)
• Các máy CNC cơ bản cho các máy công cụ nhỏ
3. Tự động hóa hệ thống cở nhỏ (Small-scale Automation)
• Ngơi nhà xanh tự động (Automated greenhouse)
2

Share by: www.ungdungmaytinh.com - trungtamcadcam.com



ThS. Huỳnh Xn Dũng
• Ni trồng thủy sinh tự động (Automated aquarium)
• Phịng thí nghiệm phi thuyền đơn giản (Laboratory sample shuttle)
• Bồng nhiệt có độ chính xác (Precision thermal chamber)
• Hệ thống kiểm tra điện tử tự động (Automated electronic test system)
4. Điều khiển trong lĩnh vực nghệ thuật
• Điều khiển ánh sáng động (Dynamic lighting control)
• Điều khiển âm thanh nổi (Dynamic sound control)
• Các cấu trú động học (Kinematic structures)
• Hệ thống phản hồi khán giả (Audience responsive artwork)

1.2 Các loại Arduino khác nhau
Arduino đang nhanh chóng trở thành một trong những vi điều khiển phổ biến sử
dụng trong robotics. Có nhiều loại khác nhau giữa các loại vi điều khiển Arduino không
những về thiết kế, đặc tính mà cị về kích thước và khả năng xử lý. Tuynhiên chỉ có hai
loại sử dụng những chip khác nhau và Standard và Mega. Loại Standard là Arduino cơ
bản sử dụng chip Atmega8/168/328, trong khi đó Mega là một loại board Arduino khác
với nhiều ngõ vào/ra (I/O) hơn và có tính năng xử lý mạnh hơn với Atmega1280 chip.
Các nhà chế tạo Arduino cũng phát triển phần mềm tương thích với tất cả các loại
vi điều khiển Arduino. Phần mềm (cũng gọi là Arduino) có thể dùng để lập trình cho tất
cả các loại vi điều khiển Arduino thơng qua việc lựa chọn từ menu. Cũng là mã nguồn
mở, dựa vào nền tảng C, người sử dụng Arduino không bị hạn chế với phần mềm này
và có thể sử dụng nhiều phần mềm khác để lập trình vi điều khiển Arduino
Có nhiều nhà sản xuất sử dụng mã nguồn mở để chết tạo các board của riêng họ
(các chức năng như board củ nhưng thêm vào các chức năng học cần ví dụ như,
DFRobot)
Trong chương này chúng ta sẽ làm quen với board Arduino Uno R3 và DFRobot
Romeo BLE
1. Arduino Uno R3
Arduino Uno là một board vi điều khiển dựa trên ATmega328. Board có 14 chân

ngõ vào ra số (digital input/output pins) với 6 chân có thể sử dụng như kênh ngõ ra
PWM, 6 ngõ vào tương tự, thạch anh 16 MHz, một cổng kết nối USB, jack nguồn, đầu
3

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


ThS. Huỳnh Xuân Dũng
nối ICSP, và một nút nhấn reset. Nó gồm có tất cả mọi thứ cầnhỗ trợ cho vi điều khiển;
kết nối đơn giản đến máy tính qua USB và cấp nguồn cho board qua bộ chuyển đổi ACDC hay pin. Bộ điều khiển trung tâm của Arduino có nhiệm vụ điều khiển, giao tiếp
được trình bày trong hình 1.1.
Đặc điểm của Arduino UNO R3 trình bày như sau:
• Vi điều khiển (Microcontroller): ATmega328
• Điện áp hoạt động (Operating Voltage): 5 V
• Ngõ vào điện áp khuyến nghị (Input Voltage recommended): 7–12 V
• Điện áp ngõ vào (Input Voltage): 6-20 V
• Số lượng ngõ vào/ra số: 14 (6 ngõ ra hỗ trợ xuất PWM)
• Số lượng ngõ vào tương tự (Analog Input Pins): 6
• Dịng điện DC mỗi chân vào/ra (DC Current per I/O Pin): 40 mA
• Dịng điện cho chân 3.3V (DC Current for 3.3 V Pin): 50 mA
• Flash Memory: 32 KB trong đó 0.5 KB được sử dụng bởi bootloader
• SRAM: 2 KB (ATmega328)
• EEPROM: 1 KB (ATmega328)
• Tốc độ xung clock: 16 MHz (Hình 1.2)

Hình 1.1: Arduino UNO interface board
4

Share by: www.ungdungmaytinh.com - trungtamcadcam.com



ThS. Huỳnh Xuân Dũng
Các chân của board Arduino Uno được in ở mặt trên của board. Mặc dù được ghi
chú rõ ràng nhưng vẫn chưa phải là đầy đủ. Đầu tiên, bạn sẽ sử dụng các các ngõ ra chân
tại các đầu cắm cái (female header) trên board (có thể hàn ở mặt dưới), kết nối USB và
thậm chí cả nguồn cung cấp.
Tx và Rx là chân để nhận tính hiệu UART cho truyền thông RS-232 và USB
I2C là phương pháp truyền thông nối tiếp khác sử dụng đường truyền dữ liệu 2
chiều (SDA) và đường xung clock (SCL)
SPI là phương pháp truyền thông nối tiếp khác sử dụng cho truyền chủ (MOSIMaster Out Slave In), một đường nhận chủ (MISO), và xung clock (SCK)
A/D là chuyển tín hiệu tương tự sang ngõ vào số, chuyển đổi điện áp tương tự sang
số
PWM (Pulse Width Modulator) được dùng để tạo tính hiệu xung vng với chu
kỳ làm việc thay đổi
ICSP có nghĩa In Circuit Serial Programming - một cách khác để lập trình vi điều
khiển
Vcc là điện áp cung cấp cho bộ xử lý (+5VDC ổn định từ điện áp ngõ vào cao hơn)
3.3VDC là điện áp ổn định (từ ngõ vào điện áp cao hơn) cho các ngoại vi có dịng
điện lớn nhất 50 mA

Hình 1.2 Sơ đồ chân của Arduino Uno R3
5

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


ThS. Huỳnh Xuân Dũng
IOREF cung cấp điện áp tham chiếu vì thế các module (shields) có thể lựa chọn nguồn
phù hợp
AREF là ngõ vào điện áp tham chiếu sử dụng cho bộ A/Ds

GND là tham chiếu 0V
RESET reset bộ xử lý và các chức năng ngoại vi
2. DFRobot RoMeo BLE
DFRobot Romeo BLE All-in-one Microcontroller (ATMega 328) là một all-in-one
Arduino được thiết kế đặc biệt dành cho các ứng dụng robot. Nó có lợi thế từ Arduino
với mã nguồn mở, được hỗ trợ từ hàng ngàn code mẫu miễn phí và dễ dàng mở rộng
tương thích với các Arduino shields.
Bộ điều khiển robot này sử dụng chip Atmel ATmega328p làm bộ xử lý trung tâm.
Board đươc lập trình với Arduino bootloader tương thích với người sử dụng trên nền
tảng Arduino Uno.
Một chip thứ hai là Texas Instruments CC2540 hỗ trợ truyền thơng Bluletooth
năng lượng thấp BLE (Bluetooth Low Energy). Nó hổ trợ lập trình với firware hỗ trợ
truyền dữ liệu nối tiếp qua Bluetooth qua giao tiếp thông qua tập lệnh AT.
Bộ điều khiển robot Romeo gồm có 2 kênh điều khiển động cơ L298. Bộ điều
khiển động cơ này có thể điều khiển động cơ từ 5-23 VDC lên đến 2A
Board vi điều khiển Romeo BLE có số lượng chân lớn dễ dàng kết nối đến robot.
Một bộ 3 chân tương tự (Analog) và GPIO số dùng để truy cập tín hiệu, điện áp... Các
ngõ GPIO số có thể được sử dụng để điều khiển các động cơ servo và các ngõ ngõ có
bắt vít cung cấp nguồn bên ngồi cho động cơ servo. Một bộ đầu nối (header) tương
thích với Arduino cho phép bạn chọn các shields phù hợp để mở rộng các ứng dụng và
các ngõ vào ra. Một bộ ba ngõ kết nối giao tiếp theo chuẩn I2C được hỗ trợ cung cấp tại
các terminal của board.
Các chức năng khác bao gồm có 5 lựa chọn cho người sử dụng như các nút nhấn,
nút reset, các LED chỉ trạng th1 được gắn để phục vụ cho việc chuẩn đoán. Nút nhấn
tùy chọn cho người sử dụng được đưa đến ngõ vào tương tự. Hoặc có thể cho phép hoặc
không cho phép thông qua công tắt trượt như hình 1.3.

6

Share by: www.ungdungmaytinh.com - trungtamcadcam.com



ThS. Huỳnh Xuân Dũng

Hình 1.3 Board giao tiếp RomeoBLE
Đặc điểm của RoMeo BLE như sau:
• Bộ vi điều khiển (Microcontroller): ATmega328P
• Bootloader: Arduino UNO
• Onboard BLE chip: TI CC2540
• 14 ngõ vào/ra số (Digital I/O ports)
• 6 ngõ ra PWM (Pin11, Pin10, Pin9, Pin6, Pin5, Pin3)
• 8 ngõ vào 10-bit tương tự
• I2Cs
• Driver cầu H điều khiển động cơ 2 chiều với dịng cực đại 2A
• 5 nút nhấn
• Đầu cấp nguồn: USB hay DC2.1
• Nguồn cấp ngồi: 5–23 V
• Ngõ ra DC: 5 V/3.3 V
• Tự động nhận biết và chuyển đổi khi có nguồn ngồi
• Kích thước: 94 mm x 80 mm
7

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


ThS. Huỳnh Xuân Dũng

1.3 Cài đặt các Driver
Đầu tiên bạn phải download phần mềm lập trình IDE tại đây:
www.arduino.cc/en/Main/Software.

1. Chọn đúng phiên bản với hệ điều hành của bạn
2. Download file cài đặt sau đó click vào file cài đặt, sau đó lựa chọn folder muốn
cài đặt
3. Di chuyển folder đến nơi bạn muốn như: desktop, Program Files folder... (trên
Windows)
4. Khi bạn muốn chạy chương trình Arduino IDE, bạn sẽ phải cần mở folder
Arduino (Windows) và double click vào icon Arduino.
5. Bạn phải cài đặt driver để cho phép máy tính có thể kết nối với board Arduino
qua cổng USB như hình 1.4.

Hình 1.4 Hộp thoại “Found New Hardware Wizard”
Cắm board Arduino vào máy tính; Khi xuất hiện cửa sổ Found New Hardware
Wizard. Found New Hardware Wizard sẽ mở khi Windows phát hiện rằng bạn có kết
8

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


ThS. Huỳnh Xuân Dũng
nối phần cứng mới (DFRobot Remeo board) tới máy tính của bạn. Chúng ta KHƠNG
kết nối đến Windows update (Chọn No, not at this time) và sau đó click Next. Trên
trang kế tiếp, lựa chọn “Install from a list or specific location (Advanced)” và click
Next (Hình. 1.5).
Chắc chắn rằng “Search for the best driver in these locations” được chọn. Bỏ
chọn “Search removable media” Chọn “Include this location in the search” và sau
đó click nút Browse. Trỏ tới vị trí USB drivers và sau đó click Next (Hình. 1.6).

Hình 1.5 Lựa chọn “Install from a list or specific location (Advanced)”

9


Share by: www.ungdungmaytinh.com - trungtamcadcam.com


ThS. Huỳnh Xuân Dũng

Hình 1.6 Lựa chọn “Search for the best driver in these locations”

Hình 1.7 Hồn thiện việc cập nhập phần cứng mới
10

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


ThS. Huỳnh Xn Dũng
Máy tính sẽ dị tìm driver phù hợp và sau đó thơng báo cho bạn rằng “USB serial
Converter” vừa tìm thấy và phần cài đặt phần cứng đã hoàn thành. Click “Finish”
Bậy giờ, bạn đẵ sẵn dàng để lập trình bài đầu tiên (Hình 1.7)

1.4 Arduino IDE
Phần mềm lập trình IDE gồm các phần: Thanh Toolbar, phần lập trình hay Sketch
Window ở giữa và Serial Output ở phía dưới cùng (hình 1.8).
Thanh Toolbar gồm có 5 nút nhấn, phía dưới Toolbar là một tab hay một nhóm các
tab, với tên tập tin của code bên trong tab. Có một nút nhấn ở phía xa bên phải, dọc theo
phía trên là Menu với các mục File, Edit, Sketch, Tools và Help. Nút nhất ở thanh
Toolbar cung cấp các truy cập nhanh thông thường được sử dụng bên trong menu file.
Các nút nhấn thanh Toolbar được liêt kê ở trên, chức năng của mỗi nút nhấn được
liệt kê ở bảng 1.1

Hình 1.8 Arduino IDE

11

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


ThS. Huỳnh Xuân Dũng
Bảng 1.1 Liệt kê các công cụ của thanh Toolbar
Verify/compile

Kiểm tra lỗi code

New

Tạo một cửa sổ lập trình mới

Open

Hiển thị danh sách các sketch trong sketchbook

Save

Lưu code đang lập trình

Upload

Nạp chương trình hiện tại xuống Arduino

Serial Monitor

Hiển thị dữ liệu nối tiếp gửi lên từ Arduino


Hình 1.9 Chương trình mẫu “Blink” trên Arduino IDE

12

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


ThS. Huỳnh Xuân Dũng

Hình 1.10 Lựa chọn loại board Arduino trên IDE
Bây giờ, bạn đã sẵn sàng để kiểm tra chương trình đầu tiên với board Arduino
1. Mở chương trình mẫu Blink bằng cách: File → Examples → 01. Basic → Blink
(hình 1.9)
2. Lựa chọn board Arduino mà bạn sử dụng: Tools → Board → loại board bạn sử
dụng (hình 1.10)
3. Lựa chọn cổng nối tiếp kết nối với board Arduino: Tools → Port → COMxx (hình
1.11)
4. Nếu bạn khơng chắc Arduino của bạn sử dụng port nối tiếp nào, hãy xem các port
rỗi sau đó ngắt kết nối board Arduino và xem lại 1 lần nữa. Một port rảnh mới
xuất hiện và đây chính là port Arduino của bạn
5. Với board Arduino đã được kết nối và code Blink đã mở. Nhấn “Upload” (hình
1.12)
6. Sau 1 giây, bạn xem các LED nhấp nháp trên board Arduino. Và có thơng báo
“Done Uploading” trên thanh trạng thái của Sketch.
7. Nếu mọi thứ được làm việc, một LED trên Board Arduino sẽ nhấp nháy (blink).
Bạn đã lập trình bài đầu tiên cho Arduino

13


Share by: www.ungdungmaytinh.com - trungtamcadcam.com


ThS. Huỳnh Xuân Dũng

Hình 1.11 Lựa chọn port nối tiếp trong Arduino IDE

Hình 1.12 Chương trình mẫu “Blink”
14

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


ThS. Huỳnh Xuân Dũng

Chương 2

Các hàm cơ bản
The Basic Functions

2.1 Tổng quan
Code mà bạn học và viết cho Arduino giống như code mà bạn vết cho các ngôn
ngữ khác trên máy tính. Điều này có nghĩa là chúng có những điểm chung với nhau.
Trong trường hợp là Arduino, ngôn ngữ lập trình dựa vào C/C++ và có thể thậm chí mở
rộng thư viện của C++. IDE cho phép bạn lập từng bước trên máy tính thơng qua các
lệnh sau đó nạp xuống Arduino. Arduino thực hiện các lệnh này thực hiện yêu cầu của
người lập trình. Arduino gồm nhiều chức năng nhúng cơ bản, như là đọc và ghi dữ liệu
các ngõ vào ra tương tự và số, chức năng ngắt, chức năng tính tốn, chức năng truyền
dữ liệu nối tiếp. Các chức năng của Arduino rất thuận lợi để viết code cho các driver.
Mặt khác, Arduino gồm có nhiều các ví dụ tích hợp (built-in-examples). Bạn chỉ cần

click vào toolbar menu: File → Examples để truy cập các ví dụ. Những ví dụ này minh
họa tất cả các lệnh cơ bản của Arduino. Chúng trải rộng từ những chức năng nhỏ nhất
như cho đến xuất nhập ngõ vào ra số, tương tự để sử dụng cho các cảm biến và hiển thị
Để có nhiều thơng tin hơn về ngơn ngữ lập trình Arduino, xem phần tham khảo
của website Arduino, Tất cả các hướng dẫn
đều online

2.2 Cấu trúc (Structure)
Các hàm cơ bản của ngơn ngữ lập trình Arduino khá đơn giản và khi chạy cần ít
nhất 2 phần. Hai phần này gồm các hàm, các khối lệnh.

15

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


ThS. Huỳnh Xuân Dũng

Setup(): Một hàm có mặt trong mỗi Arduino sketch. Chạy một lần trước hàm
loop(). Hàm setup() dùng để khai báo các biết vào mẫu đầu của chương trình . Nó là
hàm đầu tiên để chạy chương trình (chỉ chạy 1 lần) và được sử dụng để thiết lập pinMode
hay thiết lập truyền thông nối tiếp.
loop(): Một hàm có mặt trong mỗi chương trình Arduino sketch. Đoạn mã này xảy
ra và lặp lại liên tục như đọc ngõ vào, xuất ngõ ra.. hàm loop() là nơi xảy ra các tính
tốn và là nơi hầu hết chương trình Arduino được thực hiện

2.3 Các Hàm Vào/Ra Số (Digital I/O Functions)
Ngõ vào/ra số sẽ cho phép đọc trạng thái của chân ngõ vào cũng như xuất tín hiệu mức
cao hay mức thấp tại một chân ngõ ra. Atmega 328P trong Romeo board có 4 port 8-bit
cộng thêm kết nối nguồn và đất. chỉ có 28 chân vật lý. Một cách tổng qt mỗi bit của

port có thể được lập trình độc lập; một số cho ngõ ra, một số cho ngõ vào, hoặc tất cả
chúng có cùng chức năng.
1. pinMode(pin, mode)
Trước khi sử dụng một port, chúng ta cần thông tin cho vi điều khiển biết sẽ hoạt
động ở chế độ nào. Trong hệ thống Arduino, điều này luôn luôn được sử dụng thông
qua việc gọi hàm thư viện pinMode(). Đây là mô tả của hàm từ tham khảo online.

16

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


ThS. Huỳnh Xuân Dũng
Cần phải lưu ý rằng mỗi chân (pin) có đánh số và thay đổi trong khoảng giá trị từ
0 đến 13 hay A0 đế A5 (khi sử dụng chân ngõ vào tương tự thay vì ngõ vào/ra số) mặc
định được in trên board. Mặc khác các chân số mặc định là ngõ vào, vì thế bạn chỉ cần
thiết lập chúng là OUTPUT trong pinMode()
2. digitalWrite(pin, value)
Một khi 1 chân được thiết lập như là OUPUT, nó có thể được thiết lập tắt hay mở

AD

/C

AM

sử dụng hàm digitalWrite(). Cú pháp như sau:

3. digitalRead(pin)


C

Với việc cấu hình 1 chân số là ngõ vào INPUT, chúng ta có thể đọc trạng thái của

Tr

un

g



m

các chân sử dụng hàm digitalRead(). Cú pháp như sau:

Thơng số pin có thể được có là biến hay hằng số (0-13) và kết quả đạt được là
HIGH hay LOW.
4. Ví dụ (Example)
Ví dụ sau đọc nút nhấn được kết nối ngõ vào số và sẽ bật LED được kết nối vào
ngõ ra số khi nút nhấn được nhấn. Mạch điện được trình bày như hình 2.1

17

Share by: www.ungdungmaytinh.com - trungtamcadcam.com


×