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

Tài liệu hướng dẫn thực hành arduino đầy đủ

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 (5.46 MB, 93 trang )

HƯỚNG DẪN LẬP TRÌNH BỘ ARDUINO
I.

TỔNG QUAN

1. Giới thiệu
1.1.

Mơ tả về arduino

Arduino là một nền tảng mã nguồn mở gồm cả phần cứng và phần mềm. Phần cứng Arduino
(các board mạch vi xử lý) được phát triển lần đầu tiên tại thị trấn Ivrea ở Ý, 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 vi xử lý AVR Atmel 8bit, 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 những 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 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 mạch bằng ngơn ngữ Arduino, một ngơn ngữ riêng được phát
triển dựa trên C/C++.
Giá của các board Arduino dao động xung quanh €20, hoặc $27, nếu được "làm giả" thì giá
có thể giảm xuống thấp hơn $9. Các board Arduino có thể được đặt hàng ở dạng được lắp sẵn
hoặc dưới dạng các kit tự-làm-lấy. Thông tin thiết kế phần cứng được cung cấp công khai để
những ai muốn tự làm một mạch Arduino bằng tay có thể tự mình thực hiện được (mã nguồn
mở). Người ta ước tính khoảng giữa năm 2011 có trên 300 ngàn mạch Arduino chính thức đã
được sản xuất thương mại, và vào năm 2013 có khoảng 700 ngàn mạch chính thức đã được đưa
tới tay người dùng.


1.2.

Phần cứng của arduino

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 với 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, được 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 I²C-nhiều shield có thể đượ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, và 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 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 16 MHz (hoặc bộ cộng hưởng ceramic trong một vài biến thể), mặc dù
một vài thiết kế như LilyPad chạy tại 8 MHz và bỏ qua bộ điều chỉnh điện áp onboard do hạn
chế về kích cỡ thiết bị. Một vi điều khiển Arduino cũng có thể được lập trình sẵn với một boot
loader 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ư là 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 đượ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ư là FTDI FT232. Vài biến thể, như Arduino Mini và Boarduino khơng chính thức, sử dụng
một board adapter hoặc cáp nối USB-to-serial có thể tháo rời được, Bluetooth hoặc các phương
thức khác. (Khi sử dụng một cơng cụ lập trình vi điều khiển truyền thống thay vì ArduinoIDE,
cơng cụ lập trình AVR ISP tiêu chuẩn sẽ được sử dụng.)
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 những 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, có thể được sử dụng như
là 6 chân I/O số. Những chân này được thiết kế nằm phía trên mặt board, thơng qua các header
cái 0.10-inch (2.5 mm). Nhiều shield ứng dụng plug-in cũng được thương mại hóa. Các board
Arduino Nano, và Arduino-compatible Bare Bones Board và Boarduino có thể cung cấp các
chân header đực ở mặt trên của board dùng để cắm vào các breadboard.
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 thiệ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 của các 'con rệp' 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ì độ tương thích với các
shield, đôi khi không. 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.
1.3.

Phần mềm

Mơi trường phát triển tích hợp (IDE) của Arduino là một ứng dụng cross-platform (đa nền
tảng) được viết bằng ngơn ngữ lập trình Java, và từ IDE này sẽ đượ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
những người mới tập 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 brace matching, và tự động canh
lề, cũng như compile(biên dịch) và upload chương trình lên board chỉ với 1 cú nhấp chuột. Một
chương trình hoặc code viết cho Arduino được gọi là một sketch.
Các chương trình Arduino được viết bằng ngơn ngữ Arduino dựa trên C/C++. Arduino IDE
đi kèm với một thư viện phần mềm được gọi là "Wiring", từ project Wiring gốc, có thể giúp các
thao tác input/output được dễ dàng hơn. Người dùng chỉ cần định nghĩa 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 một 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 điển hình cho một bộ vi điều khiển đơn giản chỉ là làm cho một bóng đèn
Led sáng/tắt. Trong mơi trường Arduino, ta sẽ phải viết một chương trình giống như sau:
#define LED_PIN 13


void setup(){
pinMode(LED_PIN, OUTPUT); //Thiết lập chân 13 làm chân đầu ra số
}
Void loop(){
digitalWrite (LED_PIN, HIGH); //Bật LED on
delay (1000);

//chờ trong 1000ms = 1 giây

digitalWrite (LED_PIN, LOW); // Tắt LED off
delay (1000);

//chờ trong 1 giây

}
Một đặc điểm của hầu hết các board Arduino là chúng có một đèn LED và điện trở nối giữa
chân 13 với đất; một đặc điểm thuận tiện cho nhiều ứng dụng đơn giản. Đoạn code ở trên không
thể đọc được bởi một compiler C++ chuẩn như là một chương trình đúng, vì vậy khi ta click vào
nút "Upload to I/O board" trong IDE này, một bản copy của đoạn code này sẽ được ghi vào một

file tạm vớ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
đáy, để làm cho thành một chương trình C++ khả dụng.
Arduino IDE này 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ể được sử dụng để làm
phần mềm phát triển cho Arduino.
1.4.

Arduino Uno R3

Hiện nay trên thị trường có rất nhiều phiên bản phần cứng cho Arduino như Arduino
Uno R3, Arduino Uno R3 CH340, Arduino Mega2560, Arduino Nano, Arduino Pro
Mino, Arduino Lenadro, Arduino Industrial....
Tuy nhiên, thông dụng và được sử dụng phổ biến nhất là Arduino Uno R3, do đó, trong
tồn bộ hướng dẫn này sẽ sử dụng mô đun này.
 Các đặc điểm của Arduino Uno R3

















Arduino Uno đi kèm với giao diện USB tức là cổng USB được thêm vào bo
mạch Arduino  để phát triển giao tiếp nối tiếp với máy tính.
Bộ  vi điều khiển  Atmega328  sử dụng trên bo mạch đi kèm với một số tính
năng như hẹn giờ, bộ đếm, ngắt, chân PWM, CPU, chân I / O và dựa trên
xung nhịp 16 MHz giúp tạo ra nhiều tần số và số lệnh hơn trong mỗi chu kỳ.
Đây là một nền tảng mã nguồn mở, nơi mọi người có thể sửa đổi và tối ưu hóa
bảng dựa trên số lượng hướng dẫn và nhiệm vụ muốn đạt được.
Arduino  đi kèm với một tính năng điều chỉnh tích hợp giúp giữ điện áp trong
tầm kiểm soát khi thiết bị được kết nối với thiết bị bên ngoài.
Chân reset trên Arduino  để thiết lập lại tồn bộ và đưa chương trình đang
chạy trở về  ban đầu.  Chân reset  này hữu ích khi Arduino bị  treo khi đang
chạy chương trình
Có 14 chân I / O digital và 6 chân analog được tích hợp trên Arduino  cho
phép kết nối bên ngoài với bất kỳ mạch nào với Arduino.  Các chân này cung
cấp sự linh hoạt và dễ sử dụng cho các thiết bị bên ngồi có thể được kết nối
thông qua các chân này. 
6 chân analog được đánh dấu là A0 đến A5 và có độ phân giải 10 bit.  Các
chân này đo từ 0 đến 5V, tuy nhiên, chúng có thể được cấu hình ở phạm vi cao
bằng cách sử dụng chức năng analogReference () và chân ISF.
Bộ nhớ flash 13KB được sử dụng để lưu trữ số lượng hướng dẫn dưới dạng
mã.
Chỉ cần nguồn  5V để sử dụng với Arduino, hoặc lấy nguồn trực tiếp từ cổng
USB.  Arduino  có thể hỗ trợ nguồn điện bên ngồi lên đến 12 V có thể được
điều chỉnh và giới hạn ở mức 5 V hoặc 3,3 V dựa trên yêu cầu của projects.


2. Cài đặt mơi trường lập trình (Arduino IDE) và các cơng cụ hỗ trợ

(driver)
Để lập trình được cho các board Arduino, chúng ta cần phải có một cơng cụ gọi
là Intergrated Development Environment (IDE). Công cụ này được đội ngũ kĩ sư của Arduino
phát triển và có thể chạy trên Windows , MAC OS X và Linux. Ở đây chúng ta sẽ cài đặt nó trên
Windows.
2.1.

Tải IDE chúng ta làm theo các bước sau:

Bước 1: Truy cập  />
Bước 2: Chọn hệ điều hành mà máy tính bạn đang dùng: Windows, Mac OS,....


Bước 3: Chọn Just Download để tải trình cài đặt về máy.

Bước 4: Chọn ổ đĩa bạn muốn tải về và nhấn Save. Phần mềm đã được tải về máy bạn!


2.2. Cài đặt Arduino IDE

Bước 1: Mở phần mềm Arduino IDE vừa mới tải về lên.

Bước 2: Phần mềm sẽ hiện ra hộp thoại License Agreement. Bạn lần lượt chọn I
agree > chọn Next > nhấn Install.


Bước 3: Đợi trong giây lát.

Đợi trong giây lát
Bước 4: Hoàn thành cài đặt.



2.3.

Cài đặt driver CH340 cho Arduino

CH340 là một chíp chuyển đổi có nhiệm vụ chuyển đổi các tín hiệu từ giao tiếp nối tiếp
(UART/RS232) sang giao tiếp USB.
Do các máy tính hiện đại khơng có tích hợp sẵn các cổng nối tiếp (UART/RS232), do đó,
các thiết bị ngoại vi mà muốn giao tiếp thông qua cổng nối tiếp với máy tính thì phải giao
tiếp qua cổng USB (COM ảo).
Vì vậy, ở phần cứng của thiết bị ngoại vi cần sử dụng IC chuyển đổi từ giao tiếp nối tiếp
(UART) sang giao tiếp USB (mạch Arduino Uno R3 sử dụng chíp CH340).
Ở phần mềm trên máy tính cần sử dụng một driver để chuyển đổi từ cổng USB sang cổng
COM ảo (RS232).
Do đó, để giao tiếp được với Arduino để nạp chương trình thơng qua cổng nối tiếp thì
máy tính cần được cài driver CH340.
Các bước để cài đặt driver CH340:
 Bước 1: Tải driver theo link dưới hoặc tìm kiếm trên google.
/> Bước 2: Dải nén bằng phần mềm winrar và nhấn vào cài đặt.


 Bước 3: Kiểm tra xem driver đã hoạt động chưa bằng cách khởi động Arduino IDE
như dưới đây:

Chú ý: Tên cổng COM8 có thể thay đổi tùy thuộc vào cổng USB mà thiết bị được kết
nối, có thể là COM2, COM3…


3. Lập trình và nạp chương trình đầu tiên

3.1.

Chuẩn bị phần cứng

 Mạch Arduino Uno R3 và cáp kết nối máy tính (USB)

 Sơ đồ nguyên lý

 Kết nối cáp vào mạch Arduino và máy tính.


3.2.

Chuẩn bị phần mềm
 Mở phần mềm Arduino IDE

 Kiểm tra kết nối
 Kiểm tra và chọn cổng kết nối trong phần Tools  Port COMxx




3.3.

Ở hình trên có thể khơng phải là COM8, phụ thuộc vào cổng USB của máy tính
khi thiết bị được kết nối mà máy tính sẽ chuyển đổi đến tên các cổng COM khác
nhau, thường là từ COM2  COM10.

Lập trình chương trình cơ bản và nạp chương trình
 Khi tạo một chương trình mới (Sketch), phần mềm tạo sẵn cho chúng ta hai hàm mặc

định phải có khi lập trình Arduino.
 Hàm setup() dùng để cài đặt các thơng số ban đầu cho chương trình, khi bật nguồn
cho mạch arduino thì con trỏ chương trình sẽ trỏ đến hàm setup() đầu tiên (hàm
setup() sẽ chạy đầu tiên khi mạch khởi động).
 Hàm loop() sẽ được chạy sau khi hàm setup() kết thúc. Hàm loop() là một vịng lặp
vơ hạn khơng bao giờ dừng lại, do đó đây là hàm chính cho chương trình.
 Để vào ví dụ đầu tiên chúng ta sẽ lập trình kịch bản nháy LED phổ biến khi bắt đầu
làm quen với lập trình vi điều khiển ở bất kỳ ngôn ngữ nào.
 Các bước lập trình một chương trình nháy LED (sử dụng LED được tích hợp sẵn trên
phần cứng của mạch Arduino Uno R3) và nạp chương trình được mơ tả như dưới đây:
 Bước 1: Kiểm tra kết nối phần cứng của LED được thiết kế sẵn trên mạch
Arduino


Như hình trên thì Led L trên mạch Arduino được kết nối với chân PB5 của vi điều khiển
và được tham chiếu đến tên của mạch Arduino trên phần mềm là chân 13. Các chân trên phần
mềm được gọi theo số thứ tự từ 1 đến 13 chứ không phải dạng tên như trên vi điều khiển.
Như vậy, để điều khiển Led L trên mạch thì ta chỉ cần điều khiển chân 13 trên phần mềm.


Bước 2: Điều khiển Led L sáng/tắt (ON/OFF) là điều khiển chân 13 ở hai mức
logic 0 và 1 (chân dạng số). Tuy nhiên, ở dạng chân số thì chân 13 là kiểu chân số
hai hướng (vào/ra), nghĩa là ta cần phải cài đặt cho chân 13 là đầu vào hay đầu ra?
Như hình trên ta thấy rằng Led L cần nhận dòng điện đi từ chân 13 vào để sáng,
do đó, chân 13 cần được cài đặt ở dạng chân ra (bơm dòng điện ra Led). Vì vậy,
trong hàm cài đặt setup() ta cần cài đặt cho chân 13 là chân ra dạng số.

Hàm pinMode(pin,mode) dùng để điều khiển hướng của chân số.
pin: tên hoặc số chân cần điều khiển
mode: Chế độ, OUTPUT  ra, INPUT  vào.



Bước 3: Để điều khiển Led sáng/tắt, ta điều khiển mức logic ở chân 13 là 1 hoặc
0 (HIGH hoặc LOW) như hình dưới đây:


Hàm digitalWrite(pin,value) sử dụng để ghi mức logic ra chân số với:
pin: tên hoặc số chân cần điều khiển
value: Giá trị ghi ra chân (HIGH là mức 1  mức điện áp cao, LOW là mức 0  mức
điện áp thấp).
Hàm delay(ms) là hàm tạo trễ (khơng làm gì cả) với ms là giá trị mili giây.


Bước 4: Kiểm tra lỗi chương trình
Để kiểm tra xem chương trình vừa lập trình có bị lỗi hay khơng chúng ta
nhấn vào biểu tượng verify trên phần mềm như hình dưới.


Nếu khơng có lỗi gì thì phần mềm sẽ hiển thị màu trắng với các thơng tin
như dưới đây.

Nếu có bất kỳ lỗi nào, chương trình sẽ hiển thị tương tự như hình sau:


Chương trình báo có lỗi và chỉ ra dịng bị lỗi là do có một kí tự ‘/’ khơng hợp lệ.


Bước 5: Nạp chương trình.
Để nạp chương trình xuống mạch Arduino thì chúng ta cần kiểm tra lại hết
các kết nối và nhấn vào biểu tượng Upload như hình dưới đây rồi đợi cho đến khi

chương trình được tải xong.


Nếu q trình nạp khơng có lỗi sảy ra phần mềm sẽ báo như sau:


Lỗi xảy ra khi kết nối bị hỏng.



Bước 5: Sau khi nạp xong chương trình, để ý Led L trên mạch Arduino, led sẽ
nháy tắt với thời gian chuyển đổi có độ trễ là 1 giây.

 Trên đây là các bước để thực hiện một chương trình cho Arduino, chương trình ví dụ trên
có tên là VEE_Led_Blink.ino được cung cấp kèm theo tài liệu hoặc tải trên mạng theo
hướng dẫn tải chương trình được mơ tả ở phần trước.


II.

CÁC MƠ-ĐUN GIAO TIẾP CƠ BẢN

1. Mơ đun giao tiếp còi báo (VKI006)
1.1.
Giới thiệu
Hầu hết trong các dự án chúng ta đều cần còi báo (buzzer) để báo hiệu một cảnh báo, một sự
bắt đầu hay kết thúc công việc nào đó. Trong tài liệu này chúng ta sử dụng loại còi báo phổ biến
trong các dự án điện tử là còi báo áp điện (piezoelectric buzzer).
Còi báo là một thiết bị đơn giản để tạo ra tiếng bíp với các âm sắc khác nhau (tones). Nguyên
lý làm việc cơ bản của thiết bị là hiệu ứng áp điện. Thành phần chính của thiết bị là một tinh thể

áp điện với tính chất đặc biệt là có thể thay đổi hình dạng khi cung cấp một điện áp cho nó.
Khi chúng ta cung cấp một điện áp có tần số thay đổi sẽ làm cho tinh thể áp điện liên tục thay
đổi hình dạng (rung) tạo ra áp lực trên khơng khí gây ra hiệu ứng âm thanh.

1.2.

Hình ảnh và thông số của mô-đun

1.3.

Kết nối cảm biến với Arduino



×