Tài liệu Tự học nhanh Arduino cho người mới bắt đầu
1. Arduino là gì?
Arduino là một bo mạch vi điều khiển do một nhóm giáo sư và sinh viên Ý thiết kế và đưa ra
đầu tiên vào năm 2005. Mạch Arduino được sử dụng để cảm nhận và điều khiển nhiều đối tượng
khác nhau. Nó có thể thực hiện nhiều nhiệm vụ từ lấy tín hiệu từ cảm biến đến điều khiển đèn,
động cơ, và nhiều đối tượng khác. Ngoài ra mạch còn có khả năng liên kết với nhiều module
khác nhau như module đọc thẻ từ, ethernet shield, sim900A, .để tăng khả ứng dụng của mạch.
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, . Hiện phần cứng của Arduino có tất cả 6 phiên bản, Tuy nhiên
phiên bản thường được sử dụng nhiều nhất là Arduino Uno và Arduino Mega. Arduino Uno
được sử dụng rất rộng rãi trên thế giới, rất nhiều ví dụ trên youtube hoặc các trang hướng dẫn về
Arduino sử dụng mạch này. Vì vậy đối với các bạn mới học Arduino, việc chọn Arduino Uno sẽ
giúp các bạn có thể tự học dễ dàng.
Phần mềm để lập trình cho mạch Arduino là phần mềm IDE. Đây là phần mềm mã nguồn mở, và
có thể được download từ trang web của Arduino: arduino.cc. Việc hướng dẫn download và sử
dụng phần mềm này sẽ được đề cập đến trong những phần sau.
2. Tự học Arduino như thế nào cho hiệu quả?
Hiện trên thế giới có rất nhiều kênh youtube và rất nhiều trang web, các nhân chuyên hướng dẫn
và chia sẽ miễn phí các dự án về Arduino. Vì vậy nếu các bạn có vốn tiếng Anh khá thì có thể tự
học từ trên internet, từ các trang web nước ngoài.
Ở Việt Nam hiện cũng có nhiều trang web và kênh youtube hướng dẫn tự học Arduino. Bản thân
tác giả cũng có 1 kênh youtube để chia sẻ code và các dự án về Arduino. Hiện tác giả đã có 97
clip hướng dẫn về Arduino với đầy đủ mã code kèm theo và chia sẻ miễn phí cho cộng đồng.
Các bạn có thể tìm loạt clip trên youtube với từ khóa: “Lập trình vi điều khiển, Huỳnh Minh
Phú”. Trong quá trình tự học, các bạn không nên copy cả mã code mà từ code mẫu, các bạn hãy
tự tay mình đánh lại từng dòng lệnh, tự phân tích tại sao lại viết như vậy, rồi kiểm tra chương
trình, rồi nạp chương trình cho bo. Như vậy các bạn có thể hiểu rõ hơn, cũng như sẽ thấy những
sai sót khi mình đánh, từ đó hiểu các lỗi đó, cũng như hiểu hơn cách viết chương trình.

Trang 1

Trang 2

Trang 3

Trang 4

Trang 5

Trang 6

Trang 7

Trang 8

Trang 9

Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Tài liệu Tự học nhanh Arduino cho người mới bắt đầu
nh máy tính hàng chữ: Gia tri Analog:
Serial.println(giatriAnalog); //In ra màn hình giá trị của biến giatriAnalog sau đó xuống dòng
Serial.print("Gia tri digital: "); //In ra màn hình máy tính dòng chữ: Gia tri digital:
Serial.println(giatriDigital); // In ra màn hình giá trị của biến giatriDigital sau đó xuống dòng
delay(1000); //chờ trong 1s
if (giatriAnalog>500) //nếu giá trị đọc được của biến giatriAnalog lớn hơn 500
{
digitalWrite(Led,HIGH); //Ra lệnh cho led sáng
delay(1000);//chờ 1s
}
else if(giatriAnalog<=500) // nếu giá trị đọc được của biến giatriAnalog nhỏ hơn hoặc bằng 500
{
digitalWrite(Led,LOW);//Ra lệnh cho led tắt
delay(1000);//Chờ 1 giây
}
}
Thạc Sĩ Huỳnh Minh Phú 21 www.ktphuhung.com
TỰ HỌC NHANH ARDUINO CHO NGƯỜI MỚI BẮT ĐẦU
BÀI 2. SỬ DỤNG MODULE RƠLE
Khi cần sử dụng Arduino để đóng ngắt một động cơ vài trăm Wat đến vài KW, một bóng đèn
220V thì cần phải sử dụng thêm rơle với board Arduino. Role có tác dụng như một công tắc mà
thiết bị điều khiển công tắc đó chính là Arduino.
I. Cấu tạo của Rơle
Mạch Arduino bản chất là một mạch điều khiển, dòng qua Arduino rất nhỏ, thông thường chỉ đủ
chạy led hoặc RC Servo loại nhỏ (loại 9g). Nếu muốn dùng mạch Arduino để điều khiển đóng
ngắt thiết bị có dòng lớn hơn 0.5A thì phải dùng rơle, nếu không dùng rơle mà cắm trực tiếp
động cơ vào mạch Arduino thì sẽ làm hư mạch. Rơle (hay relay) là một thiết bị trung gian dùng
để đóng ngắt các thiết bị có công suất lớn như các động cơ DC hay các động cơ AC, bao gồm
máy bơm nước, quạt máy, đèn 220V, các thiết bị gia dụng khác,
Loại Rơle được thường được sử dụng cùng Arduino là Rơle 5V, tức dùng nguồn 5V để điều
khiển. Hình 20 thể hiện một module role 5V được bán thông dụng trên thị trường.
II. Phân tích các chức năng của Module Rơle
1. Chân thường mở:
Về bản chất, Rơle giống như một công tắc điện mà thành phần ra lệnh nó chính là mạch
Arduino. Chân thường mở nghĩa là ở trạng thái bình thường, khi role không nhận lệnh từ
Arduino thì nó mở ra, khi nào có lệnh từ Arduino thì nó đóng lại với chân chung. Khi chân
thường mở đóng với chân chung (giống như công tắc được bật) thì dòng điện sẽ đi từ chân
chung qua chân thường đóng.
2. Chân chung (chân COM)
Chân chung là chân nối với nguồn cần cấp cho động cơ, thường chân chung này được nối với
nguồn dương của pin, bình acquy hoặc dây nóng của điện 220V.
3. Chân thường đóng
Trái ngược với chân thường mở là chân thường đóng. Chân thường đóng là chân mà bình
thường, lúc role chưa nhận lệnh gì từ mạch Arduino, thì nó đóng với chân chung (chân com).
Khi chân thường mở đóng thì chân thường đóng này sẽ hở ra, không nối với chân chung nữa.
Chú ý: chân thường đóng và chân thường mở có trạng thái trái ngược nhau, cái này đóng thì cái
kia sẽ mở.
4. Khả năng chịu tải
Khả năng chịu tải thể hiện tải tốt đa mà rơle có thể chịu được. Như đối với module này, thông số
trên rơle ghi là 10A, 250VAC, tức là tải tối đa đối với điện xoay chiều 220V (250V) là 10A. Lấy
2 thông số này nhân với nhau ta được công suất tải, tức công suất tối đa là 2500W hay 2,5KW,
tương đương 1 máy bơm nước 2,5KW hay 3 ngựa. Tuy nhiên đây là công suất tối đa, khi sử
dụng thì công suất của tải bằng phân nửa hoặc hai phần ba giá trị ghi trên rơle là tốt nhất. Cái
thông số khác được hiểu tương tự.
5. Chế độ LOW
Loại Rơle này có 2 chế độ, LOW và HIGH. Khu vực đó có 3 chân, 1 chân giữa và 2 chân LOW
và HIGH ở 2 bên, có 1 cái jump màu đen, có thể rút ra được, dùng để kết nối 2 chân với chân
giữa để chọn chế độ.
Chế độ LOW là chế độ mà khi mạch Arduino xuất ra tín hiệu LOW (hay giá trị bằng 0) thì sẽ
kích rơle hoạt động, đóng tiếp điểm thường mở.
6. Chế độ HIGH
Thạc Sĩ Huỳnh Minh Phú 22 www.ktphuhung.com
TỰ HỌC NHANH ARDUINO CHO NGƯỜI MỚI BẮT ĐẦU
Chế độ HIGH là chế độ khi Arduino xuât ra tín hiệu HIGH (hay giá trị 1) thì sẽ kích rơle hoạt
động, đóng tiếp điểm thường mở.. Thông thường khi mua về thì chế độ mặc định của Rơle là chế
độ HIGH
7. Chân nguồn +
Là chân cấp nguồn +, 5V cho Rơle, chân này được nối với chân 5V của board Arduino.
8. Chân nguồn âm:
Là chân nối với nguồn âm, chân này được nối với chân GND của board Arduino
9. Chân lấy tìn hiệu điều khiển từ Arduino
Chân này sẽ nối với các chân ra của Arduino nhằm để điều khiển ra rơle như ý người lập trình
mong muốn.
Hình 21 thể hiện rất rõ nét hơn về các chân 7,8,9 trong module Rơle.
www.ktphuhung.com
1. Chân thường 9. Chân lấy tín
mở hiệu điều khiển
từ Arduino
2. Chân chung
8. Chân nguồn
– (DC-)
3. Chân thường
đóng 7. Chân nguồn
+(DC+)
4. Khả năng 5. Chế độ
chịu tải LOW 6. Chế độ
HIGH
Hình 20. Module role 1 kênh cho Arduino.
www.ktphuhung.com
Hình 21. Các chân cấp nguồn và chân lấy tín hiệu từ Rơle
Thạc Sĩ Huỳnh Minh Phú 23 www.ktphuhung.com
TỰ HỌC NHANH ARDUINO CHO NGƯỜI MỚI BẮT ĐẦU
III. CODE VÍ DỤ
Sau đây sẽ là một ví dụ với Rơle, code sử dụng là code trong bài đèn led nhấp nháy. Trong ví dụ
này chân IN của role sẽ được nối với chân 13, chân DC+ được nối với chân 5V trên Arduino,
chân DC- được nối với chân GND trên board Arduino.
Mạch này có thể ứng dụng dùng để tưới lan, trồng nấm, chỉ cần thay đổi thời gian delay thì có
thể thay đổi thời gian máy bơm nước chạy.
1. Cách nối dây
www.ktphuhung.com Nguồn cấp
DC- cho động
cơ
DC+
13 IN
Chân
COM
GND
5V
Chân NO
Động cơ
Hình 22. Cách nối dây của ví dụ.
2. Mã code
Phần này sử dụng mã code của ví dụ cho đèn led nhấp nháy, role sẽ đóng ngắt luân phiên trong 1
giây. Sau đây là mã code :
int led = 13;// khai báo chân led là chân 13
void setup() {
pinMode(led, OUTPUT); //Thiết lập chân led (chân 13 là chân ra, OUTPUT)
}
void loop() {
digitalWrite(led, HIGH); // Ra lệnh mở led
delay(1000); // Mở trong 1s (1000ms), có thể thay đổi giá trị này
digitalWrite(led, LOW); // ra lệnh tắt led
delay(1000); // Tắt trong 1s (1000ms), có thể thay đổi giá trị này
}
3. Kết quả:
Thạc Sĩ Huỳnh Minh Phú 24 www.ktphuhung.com
TỰ HỌC NHANH ARDUINO CHO NGƯỜI MỚI BẮT ĐẦU
Động cơ sẽ quay và tắt tuần tự trong 1s, 1s quay, 1 giây tắt. Nguồn điện pin 9V có thể được thay
thế bằng bình acquy hoặc điện 220V (khi sử dụng động cơ 220V AC). Trước khi sử dụng role để
điều khiển các thiết bị điện 220V, các bạn nên thực hành thử với điện của acquy, pin, để có
thể nắm vững phần này và tránh các sự cố đáng tiếc có thể xảy ra. Hình 23 thể hiện module rơle
hoạt động khi cấp nguồn cho hệ thống, mỗi lần led 13 sáng là đèn led tác động của rơle cũng
sáng theo.
www.ktphuhung.com
Hình 23. Hệ thống đang hoạt động.
Thạc Sĩ Huỳnh Minh Phú 25 www.ktphuhung.com
TỰ HỌC NHANH ARDUINO CHO NGƯỜI MỚI BẮT ĐẦU
BÀI 3. SỬ DỤNG MẠCH CẦU H
Mạch cầu H là module rất thông dụng khi cần điều khiển tốc độ và chiều quay của động cơ,
thường được sử dụng trong các xe tự hành tránh vật cản, hay các robot. Bài viết này hướng dẫn
các bạn cách sử dụng mạch cầu H L298N để điều khiển động tốc độ và chiều của động cơ. Mục
đích của bài này là giúp các bạn có thể tự kết nối mạch cầu H với động cơ, làm một ví dụ nho
nhỏ về đảo chiều và điều chỉnh tốc độ của động cơ.
1. Giới thiệu về mạch cầu H L298N
Trên thị trường hiện có nhiều loại mạch cầu H, tuy nhiên loại thông dụng và thích hợp với board
Arduino là mạch cầu H L298N. Loại mạch cầu H này chịu được dòng tối đa là 2A, điện áp điều
khiển từ 5V đến 35V, có thể điều khiển được 2 động cơ. Hình bên dưới là module mạch cầu H
L298.
Module này gồm có IC L298N, 1 khối điều khiển động cơ A, 1 khối điều khiển động cơ B, các
chân cấp nguồn, 2 jump.
2. Khối điều khiển động cơ A
Khối này có 2 chân nhằm để kết nối với động cơ A
3. Khối điều khiển động cơ B
Khối này cũng có 2 chân nhằm để kết nối với động cơ B
4. Các chân cấp nguồn
Chân cấp nguồn gồm 2 chân, chân GND nối với nguồn âm còn chân +12V nối với nguồn dương
của acquy hoặc adapter 12V. Chân +5V dùng khi cần sử lấy nguồn 5V từ mạch cầu H ra để
dùng. Thường thì chân này ít sử dụng.
5. Các jump
Có 2 jump tại ENA và ENB khi 2 jump này ở 2 vị trí như trên thì sẽ điều khiển động cơ chạy
100% công suất, ENA được dùng cho động cơ A và ENB được dùng cho động B. Ta có thể rút 2
jump này ra và kết nối các ENA, ENB với các chân băm xung của Arduino. Việc này sẽ giúp
người sử dụng điều khiển được tốt độ của động cơ.
6. Các chân IN1, IN2, IN3, IN4
Các chân này dùng để kết nối với chân ra của Arduino nhằm điều khiển chiều của động cơ. IN1,
IN2 dùng cho động cơ A và IN3, IN4 được dùng cho động cơ B.
Việc điều khiển chiều của động cơ được thực hiện như sau:
Bảng 3. Bảng điều khiển động cơ A
Chân Trạng thái Động cơ A
IN1 LOW Chiều thuận
IN2 HIGH
IN1 HIGH Chiều nghịch
IN2 LOW
IN1 LOW Thắng động cơ
IN2 LOW
Bảng 4. Bảng điều khiển động B
Chân Trạng thái Động cơ B
IN3 LOW Chiều thuận
IN4 HIGH
IN3 HIGH Chiều nghịch
Thạc Sĩ Huỳnh Minh Phú 26 www.ktphuhung.com
TỰ HỌC NHANH ARDUINO CHO NGƯỜI MỚI BẮT ĐẦU
IN4 LOW
IN3 LOW Thắng động cơ
IN4 LOW
L298N www.ktphuhung.com
Khối điều
khiển động cơ
A
Chân điều
khiển động cơ
B
Chân cấp
nguồn
+12V GND +5v
Jump
Hình 24. Module mạch cầu H
7. Kết nối mạch cầu H với Arduino
Phần này đưa ra ví dụ dùng module mạch cầu H L298N, như được thể hiện ở hình 25, để điều
khiển động cơ có hộp giảm tốc, nguồn cấp có thể là pin 9V, hoặc acquy 12V hoặc Adapter 12V.
Về cách nối dây thì mạch này được nối như sau:
-ENA nối với chân 10 trên Arduino
-IN1 nối với chân 11
-IN2 nối với chân 12.
Người dùng có thể thay đổi chân nhưng chú ý là chân ENA nên nối với chân có dấu ~ (chân có
thể băm xung để có thể điều chỉnh tốc độ của động cơ). Về nguồn điện, nếu người dùng sử dụng
pin 9V thì nên dùng pin 9V mới vì khi cấp nguồn qua mạch cầu H thì công suất sẽ bị tiêu hao
dẫn đến có thể không đủ dòng cấp cho động cơ chạy nếu dùng pin 9V cũ. Người dùng cũng có
thể sử dụng bình acquy 12V hoặc adapter 12V cho ví dụ này. Phần kế tiếp sẽ đưa ra một ví dụ về
đảo chiều, điều chỉnh tốc độ động cơ dùng mạch cầu H.
Thạc Sĩ Huỳnh Minh Phú 27 www.ktphuhung.com
TỰ HỌC NHANH ARDUINO CHO NGƯỜI MỚI BẮT ĐẦU
www.ktphuhung.com
Hình 25. Một ví dụ về kết nối module mạch cầu H với Arduino
8. Mã code:
Sau đây là một ví dụ về dùng mạch cầu H để đảo chiều và tốc độ động cơ. Để đảo chiều động cơ
DC (động cơ điện một chiều) ta cần đảo cực cấp nguồn cho động cơ. Để thay đổi tốc độ, ta thay
đổi xung cấp cho ENA, Arduino sử dụng chip AVR 328, đây là chip dòng 8 bit, nên khả năng
băm xung của nó là từ 0 đến 2 lũy thừa 8, tức 256, hay nói khác hơn nó có thể băm xung từ 0
đến 255 (256 xung). Đây là ví dụ cho điều khiển 1 động cơ, module mạch cầu H có thể điều
khiển tối đa 2 động cơ, động cơ còn lại được điều khiển tương tự.
//MÔT VÍ DU VỀ SỬ DUNG MẠCH CẦU H
//NGƯỜI VIẾT: HUỲNH MINH PHÚ.
#define ENA 10 //Xác định ENA là chân 10
#define IN1 11 // Xác định IN1 là chân 11
#define IN2 12 // Xác định IN2 chân 12
void setup()
{
pinMode(ENA, OUTPUT); //Xác định kiểu chân ENA là chân xuất tín hiệu ra (OUTPUT)
pinMode(IN1, OUTPUT); // Xác định kiểu chân IN1 là chân xuất tín hiệu ra (OUTPUT)
pinMode(IN2, OUTPUT); // Xác định kiểu chân IN2 là chân xuất tín hiệu ra (OUTPUT)
}
void loop()
{
//Ban đầu cho động cơ thắng (phanh) lại
digitalWrite(IN1, LOW); //Cho chân IN1 ở trạng thái LOW
digitalWrite(IN2, LOW); //Cho chân IN2 ở trạng thái LOW
analogWrite(ENA, 255); //Tốc độ là 100% (255)
delay(1000); //Chờ 1 giây
//Cho động cơ chạy tới
digitalWrite(IN1, HIGH); //Cho chân IN1 ở trạng thái HIGH
digitalWrite(IN2, LOW); //Cho chân IN2 ở trạng thái LOW
analogWrite(ENA, 120); //Tốc độ là 120/255
Thạc Sĩ Huỳnh Minh Phú 28 www.ktphuhung.com
TỰ HỌC NHANH ARDUINO CHO NGƯỜI MỚI BẮT ĐẦU
delay(3000); //cho chạy trong 3 giây (chờ trong 3 giây)
//Dừng lại để đảo chiều, nếu không dừng lại mà đảo chiều vẫn được, nhưng về lâu dài không tốt
cho động cơ
digitalWrite(IN1, LOW); //Cho chân IN1 ở trạng thái LOW
digitalWrite(IN2, LOW); //Cho chân IN2 ở trạng thái LOW
analogWrite(ENA, 255); // Tốc độ là 100% (255)
delay(1000); //Chờ trong 1 s
//Cho động cơ chạy lui, trạng thái của IN1 và IN2 trong phần chạy lui sẽ ngược với trạng thái
chạy tới.
digitalWrite(IN1, LOW);//Cho chân IN1 ở trạng thái LOW
digitalWrite(IN2, HIGH); //Cho chân IN2 ở trạng thái HIGH
analogWrite(ENA, 255); //Chạy 100% tốc động (255 xung)
delay(3000); //Chạy trong 3s (chờ 3s)
}
Thạc Sĩ Huỳnh Minh Phú 29 www.ktphuhung.com
TỰ HỌC NHANH ARDUINO CHO NGƯỜI MỚI BẮT ĐẦU
BÀI 4. SỬ DỤNG MÀN HÌNH LCD
Màn hình LCD là một trong những thiết bị thường được sử dụng trong để hiển thị các thông số
trong quá trình sử dụng Arduino. Bài viết này hướng dẫn cách sử dụng màn hình lcd 16x2 thông
dụng trên thị trường.
1. Dụng cụ thực hành:
1 mạch Arduino Uno, 1 màn hình lcd 16x2, 1 rào đực đơn, 1 biến trở 10K, 10 dây đực đực, 10
dây đực cái.
2. Màn hình lcd 16x2:
Màn hình lcd 16x2 là loại màn hình có 2 dòng, mỗi dòng có thể viết được 16 ký. Loại màn hình
này cần được dùng kèm 1 biến trở 10K để chỉnh độ tương phản của chữ so với nền. Nếu không
có biến trở này thì có thể không thấy được chữ hiển thị.
3. Cách nối dây
-Chân VSS (GND) nối với chân GND trên board Arduino
-Chân VDD(tương ứng chân VCC trong hình 26) nối với chân 5V trên board Arduino
-Chân V0 (chân chỉnh độ tương phản) nối với chân giữa của biến trở 10K (xem hình 26)
-Chân RS nối với chân số 12
-Chân RW nối với 1 chân của biến trở 10K, chân này của biến trở cũng được nối với chân GND
-Chân E (viết tắt của Enable) nối với chân số 11
-Chân D4 nối với chân số 5
-Chân D5 nối với chân số 4
-Chân D6 nối với chân số 3
-Chân D7 nối với chân số 2
-Ngoài ra chân còn lại của biến trở cũng được nối với nguồn 5V như được minh họa ở hình 26
Hình 26. Cách nối dây cho màn hình LCD 16x2 với Arduino Uno
Thạc Sĩ Huỳnh Minh Phú 30 www.ktphuhung.com
TỰ HỌC NHANH ARDUINO CHO NGƯỜI MỚI BẮT ĐẦU
4. Mã code của chương trình
Sau đây là một mã code mà các bạn có thể test màn hình LCD:
#include //Sử dụng thư viện màn hình LCD, thư viện này có sẵn trong
Arduino
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//Sử dụng thư viện với các chân đã được kết nối như phần
trên
void setup() {
// Thiết lập số lượng hàng và cột của LCD:
lcd.begin(16, 2);//có 2 hàng, 16 cột (16 ký tự)
// Print a message to the LCD.
lcd.print("Toi yeu Arduino");//In lên màn hình LCD dòng chữ “Tôi yêu Arduino
//Dòng chữ này sẽ xuất hiện ở dòng đầu tiên, trong phần mềm tính là dòng số 0
}
//Lập trình in số giây từ khi bắt đầu chương trình lên LCD
void loop() {
// Thiết lập vị trí in là ở cột số 0, dòng 1
//Chú ý: dòng 1 thực chất là dòng 2 vì phần mềm tính từ 0
lcd.setCursor(0, 1);
// In số giây từ khi bắt đầu hoặc từ khi reset
lcd.print(millis()/1000);
}
Thạc Sĩ Huỳnh Minh Phú 31 www.ktphuhung.com
File đính kèm:
tai_lieu_tu_hoc_nhanh_arduino_cho_nguoi_moi_bat_dau.pdf

