Thêm nữa Arduino là một platform đã được chuẩn hóa nên đã có rấtnhiều các bo mạch mở rộng shield để cắm chồng lên bo mạch Arduino, có thểhình dung dễ hiểu là "library" của các ngôn ngữ l
Trang 1CHƯƠNG 1 GIỚI THIỆU VỀ ARDUINO
1.1 Giới thiệu chung về arduino
1.1.1 Giới thiệu về các sản phẩm Ardruino
Trang 2Thông tin về Arduino: Arduino là công cụ hỗ trợ đắc lực cho công việclập trình Điểm hấp dẫn ở Arduino với người đam mê lập trình là ngôn ngữ dễhọc khá giống C/C++, các ngoại vi trên bo mạch đều đã được chuẩn hóa nênkhông cần biết nhiều về điện tử, chúng ta cũng có thể lập trình được những ứngdụng thú vị Thêm nữa Arduino là một platform đã được chuẩn hóa nên đã có rấtnhiều các bo mạch mở rộng (shield) để cắm chồng lên bo mạch Arduino, có thểhình dung dễ hiểu là "library" của các ngôn ngữ lập trình.
Ứng dụng: Với Arduino bạn có thể ứng dụng vào những mạch đơn giảnnhư mạch cảm biến ánh sáng bật tắt đèn, mạch điều khiển động cơ, hoặc caohơn nữa bạn có thể làm những sản phẩm như: máy in 3D, Robot, khinh khí cầu,máy bay không người lái, Chính vì tính tiện lợi và đơn giản cho người sử dụng
mà Arduino đã trở thành một hiện tượng trong ngành điện tử thế giới Nhữngsản phẩm của cộng đồng người dùng Arduino cũng như những thiết bị hỗ trợArduino lớn đến mức không thể thống kê được
Arduino được cấu tạo từ phần cứng và phần mềm IDE Phần cứng hay tavẫn nghe một cái tên quen thuộc là vi điều khiển, board mạch mã nguồn mở
Một số loại board được sử dụng hiện nay như:
số linh kiệnđiện tử khác
Digital I/O: 14(hỗ trợ 6 chânPWM)
Analog I/O: 6
Boardmạch viđiều khiển
Trang 3Analog output:
2 DACPWM digitalI/O: 12
Digital I/O: 54
Boardmạch viđiều khiểnvới tốc độ
hỗ trợ kếtnối wifi
Digital I/O: 54(15 chân có thểđược sử dụngnhư các chânPWM)
moduleđiều khiểnrobot từ xa
4 Arduin
o Nano
khiển(Atmega 328
họ 8bit)
Digital I/O:14( 6 chân PWM)Analog ipnut : 8
Tích hợp Ledbáo nguồn, ledchân D13, LED
RX, TX
Tích hợp ICchuyển điện áp5V LM1117
Boardmạch viđiều khiển
Boardmạch sửdụng trongtrang tríthời trang
Trang 4COM port
Digital I/O: 14(6 chân PWM)
Analog input: 4chân
USB HID
KeyBoardHID USB
Boardmạch viđiều khiển
Analog input:
12 Digital I/O:
14 (7 chânPWM)
Boardmạch viđiều khiển,mạch giảlập
chuột,bànphím, taycầm game
…
Ngoài ra, các Shield Arduino là các board mạch được xây dựng sẵn được
sử dụng để kết nối với một số board Arduino Những Shield này nằm trên đỉnhcủa các bo mạch tương thích với Arduino để cung cấp các khả năng bổ sung nhưkết nối với internet, điều khiển động cơ, cung cấp giao tiếp không dây, điềukhiển màn hình LCD, v.v … Các loại khác nhau của Shield Arduino là: shieldArduino,Shield không dây, ShieldGSM, Shield Ethernet,Shield Proto
Các phần mềm lập trình Arduino: Arduino IDE, CloverBlock
1.1.2 Các kiểu dữ liệu
1.1.3 Khai báo biến cho các kiểu dữ liệu trên
Ví dụ 1: Khai báo biến x thuộc kiểu dữ liệu integer và gán giá trị bằng 20
số tự nhiên trong hệnhị phân
Ký tự Char 1byte -128 127, lưu được 1
kí tự
Biểu diễn một kí tựthông qua bảng mãASCII
Kiểu
nguyên
Integer 2byte -32768 32767 Biểu diễn các số
nguyênKiểu
thực
Real 6 byte ±[2,9×10−39 1,7×1038] Biểu diễn các số
thực
Trang 5Cú pháp: < kiểu dữ liệu >< tên biến > = < giá trị >
int x = 20;
Ví dụ 2: Khai báo biến Arduino thuộc kiểu dữ liệu char và gán bằng một kí tự A
Cú pháp: < kiểu dữ liệu >< tên biến > = < ‘ký tự’ >
char Arduino = ‘A’;
- Cài đặt Java Runtime Inviroment (JRE)
Vì Arduino IDE được viết trên Java nên cần phải cài đặt JRE trướcArduino IDE
Hình 1.1 Phiên bản JRE
- Cài đặt Arduino IDE
Bước 1: Truy nhập vào trang chủ của Arduino (Arduino.cc) Đây là nơi lưu trữcũng như cập nhật các bản IDE của Arduino
Trang 6Hình 1.2 Dowload phần mềm
Bước 2: Chạy file để khởi động Arduino IDE
Hình 1.3 Giao diện Arduino IDE
- Trong trường hợp máy tính không cập nhật Driver thì ta cài đặt Driver
Trang 7Để máy tính và Board Arduino giao tiếp được với nhau thì cần phải càiđặt driver trước tiên.
Đầu tiên chạy file arduino-1.6.4\drivers\dpinst-x86.exe (Windowsx86) Cửa sổ “Device Driver Installation Wizard” hiện ra, sau đó chọn Next
Trang 8Hình 1.6 Quá trình cài đặt hoàn tất
b, Kiểm tra kết nối Arduino với máy tính
• Bước 1: Kết nối Arduino với máy tính (ở đây sử dụng arduino uno R3)
Chuẩn bị:
- Phần cứng board Arduino (Uno, Nano, Mega 2560 )
- Cáp kết nối USB 2 đầu kiểu A-B
Trang 9Hình 1.7 Kết nối arduino với máy tính
Đèn led sáng thể hiện board arduino đã được kết nối với máy tính
• Bước 2: Tìm cổng kết nối của Arduino uno R3 với máy tính
Khi Arduino Uno R3 kết nối với máy tính, nó sẽ sử dụng một cổng COM(Communication port - cổng dữ liệu ảo) để máy tính và bo mạch có thể truyềntải dữ liệu qua lại thông qua cổng này Windows có thể quản lí đến 256 cổngCOM Để tìm được cổng COM đang được sử dụng để máy tính và mạchArduino UNO R3 giao tiếp với nhau, bạn phải mở chức năng Device Managercủa Windows
Chọn chuột phải vào Computer -> Manage
Trang 10Hình 1.8 Chọn Manage
Cửa sổ Computer Management hiện lên
Trang 11Cổng kết nối ở đây là COM5.
Thông thường, trong những lần kết nối tiếp theo, Windows sẽ sử dụng lạicổng COM5 để kết nối nên bạn không cần thực hiện thêm thao tác tìm cổngCOM này nữa
c, Giao diện làm việc của Arduino IDE
Hình 1.10 Giao diện mặc định của Arduino IDE
- Vùng lệnh:
Bao gồm các nút lệnh menu (File, Edit, Tools, Help) Phía dưới là các
Trang 12Hình 1.11 Chức năng các phần tử
- Vùng thông báo:
Hình 1.12 Thông báo từ IDE
Thông báo từ IDE hiển thị loại board Arduino và cổng COM được sử dụng
1.2.2 Ví dụ minh hoạ
Cho sơ đồ như hình 1.13 Viết chương trình để điều khiển led nháy với tấn số0.5Hz
Trang 13~10
RX < 0
~9 8
7
~6
~5 4
~3 2
SIM1
SIMULINO UNO
R1220
D1LED
Hình 1.13 Sơ đồ nối chân cho Arduino
Để thực hiện ta làm các bước như sau:7
Bước 1: Khởi động phần mềm Arduino IDE
Chạy file shortcut để khởi động Arduino IDE
Bước 2: Thuật toán để điểu khiển led tại chân số 13 nhấp nháy với tần số 0.5Hz
Trang 14Hình 1.15Sơ đồ thuật toán điều khiển led
Bước 3: Viết chương trình
Trang 15Hình 1.16 Chương trình điều khiển
Những lệnh trong setup() sẽ được chạy khi chương trình của bạn khởiđộng Bạn có thể sử dụng nó để khai báo giá trị của biến, khai báo thư viện, thiếtlập các thông số,…
Sau khi setup() chạy xong, những lệnh trong loop() được chạy Chúng sẽlặp đi lặp lại liên tục cho tới khi nào bạn ngắt nguồn của board Arduino mớithôi
Bất cứ khi nào bạn nhất nút Reset, chương trình của bạn sẽ trở về lại trạngthái như khi Arduino mới được cấp nguồn
Quá trình này có thể được miêu tả như sơ đồ dưới đây:
Trang 16Hình 1.17 Sơ đồ mô tả quy trình thực hiện của chương trình
Bước 4: Nạp chương trình xuống kid arduino
Để nạp chương trình xuống kid arduino ta cần khai báo kid thực hiện như sau:
Hình 1.18 Chọn Board
Trang 17Hình 1.19 Chọn Port
- Tiến hành kiểm tra và Upload chương trình:
Trang 18Hình 1.20 Upload chương trình
Mạch phần cứng :
Hình 1.21 Sơ đồ nối led phần cứng
Trang 19Nhóm lệnh chuyển đổi kiểu dữ liệu
1 int() Chuyển kiểu dữ liệu của
một giá trị về kiểu int
int(x)
2 char() Chuyển kiểu dữ liệu của
một giá trị về kiểu char
char(x)
3 byte() Chuyển kiểu dữ liệu của
một giá trị về kiểu byte
byte(x)
4 word() Chuyển kiểu dữ liệu của
một giá trị vềkiểu word hoặc ghép 2giá trị thuộc kiểu bytethành 1 giá trị kiểu word
word(x) word(8bitDauTien,8bitSauCung)
5 long() Chuyển kiểu dữ liệu của
một giá trị về kiểu long
long(x)
6 float() Chuyển kiểu dữ liệu của
một giá trị về kiểu float
float(x)7
Nhóm lệnh nhập xuất Digital (Digital I/O)
1 digitalRead() Đọc tín hiệu từ một chân
digital ( được thiết đặt làINPUT) Trả về hai giá trịthấp hoặc cao
digitalRead(pin)
2 digitalWrite() Xuất tín hiệu ra một chân
digital, có hai giá trị làHIGH hoặc LOW
digitalWrite(pin,value)
3 pinMode() Cấu hình 1 pin quy định
hoạt động như là một đầuvào (INPUT) hoặc đầu ra(OUTPUT)
Trang 202 analogWrite() Xuât một mức tín hiệu
ra một chân analog(phát xung PWM)
analogWrite(pin,value)
3 analogReference() Đặt lại mức (điện áp)
tối đa khi đọc tín hiệuanalogRead
analogReference(type)type là một trong các kiểu giátrị sau: DEFAULT,INTERNAL,
INTERNAL1V1,INTERNAL2V56, hoặcEXTERNAL
5 pow() Trả về giá trị x lũy thừa y pow(x,y)
6 sqrt() trả về giá trị là căn bậc hai
Lệnh thời gian (TIME)
1 delay() Tạm dừng chương trình
trong khoảng thời gian x
delay(x)
Trang 21(tính bằng mili giây) đượcchỉ định là tham số
2
Lệnh ngẫu nhiên
1 random() Trả về một giá trị ngẫu
nhiên trong khoảng giá trịcho trước
random(max+1)random(min,max+1)2
Nhóm lệnh nhập xuất nâng cao (Advanced I/O)
1 tone() Dùng để tạo ra sóng
vuông ở tần số được địnhtrước (chỉ nửa chu kỳ ) tạimột pin digital bất kỳ(analog vẫn được)
tone(pin, frequency)tone(pin, frequency, duration)
2 noTone() Dùng để kết thúc việc tạo
tone() trên một pin nào đóđang chạy lệnh tone()
noTone(pin)
3 pulseIn() Đọc một xung tín hiệu
digital (HIGH/ LOW) vàtrả về nửa chu kỳ củaxung tín hiệu ( tức là thờigian tín hiệu Chuyển từmức cao xuống mức thấphoặc ngược lại
pulseIn(pin, value)pulseIn(pin, value,timeout)
4 shiftOut() Dùng để chuyển 1 byte
(gồm 8 bit) ra ngoài từngbit một
shiftOut(dataPin, clockPin,bitOrder, value)
5 shiftIn() Dùng để nhận 1 byte
(gồm 8 bit) từng bit một
shiftIn(dataPin, clockPin,bitOrder)
6
Lệnh giao tiếp
1 Serial Được dùng trong việc
giao tiếp giữa các boardmạch với nhau (hoặcboard mạch với máy tính
Serial.begin(9600)
Trang 22Nhóm lệnh giao tiếp với LCD
1.4 Hướng dẫn mô phỏng trên proteus
1.4.1 Update thư viện
Bước 1: Tải thư viện Arduino cho proteus ta truy cập vào địa chỉ trang web
https://www.theengineeringprojects.com rồi sau đó tải về và giải nén chúng
Hình2.22 Dowload file thư viện arduino
Bước 2: Copy 2 fileArduinoTEP.IDX và ArduinoTEP.LIB trong thư mục vừa
giải nén
Trang 23Hình 2.23 Copy 2 file
Bước 3: Dán file vào thư mục LIBRARY trong thư mục cài đặt Proteus của bạn,
ở đây là để ở ổ đĩa E
Hình 2.24 Dán file vừa copy
Bước 4: Mở file shortcut proteus và kiểm tra thư viện
Trang 24Hình 2.25 Thư viện Arduino cho proteus
1.4.2 Mô phỏng bài điều khiển led đơn
Ta thực hiện mô phỏng sơ đồ như sau:
Hình 2.26 Sơ đồ kết nối
Với yêu cầu chương trình điều khiển:
Điều khiển led nối với chân số 13 sáng tắt bằng nút bấm Khi bấm nút thìled sáng, khi nhả tay thì led tắt
Trang 25Để thực hiện, ta làm các bước như sau:
Bước 1: Xây dựng sơ đồ mô phỏng trên proteus
- Chạy file shortcut của proteus -> giao diện chính của phần mềm
Hình 2.27 Giao diện chính
- Lựa chọn thiết bị cho bài toán
Chọn Board Arduino Uno
Trang 27Hình 2.30 Sơ đồ mô phỏng
Bước 2: Viết chương trình trên Arduino IDE
- Khởi động Arduino IDE và nhập chương trình
Hình 2.31 Chương trình điều khiển
- Chọn Board Arduino
Trang 28Hình 2.32 Board Arduino
- Lưu file bằng cách vào file ->save as, sau đó biên dịch kiểm tra chương trình
Trang 29Hình 2.33 Kiểm tra chương trình
Bước 3: Trở lại proteus và chạy chương trình mô phỏng
Trang 30Hình 2.34 Nạp chương trình
Hình 2.35 Chạy chương trình
1.4.3 Một số tên thiết bị trong proteus
Bảng 2: Tên thiết bị trong thư viện proteus
Trang 311 Led đơn LED
Trang 32Cổng ra: là cổng đưa (xuất) tín hiệu điều khiển từ Arduino ra bên ngoài đểđiều khiển những thiết bị chấp hành (như: Led, động cơ Servo, Step motor,loa, v.v.)
Trang 33* Khai báo chân vào/ra với arduino
Để khai báo chân vào/ra (I/O) cho Arduino ta sử dụng lệnh:
pinMode() Khai bao một chân
Arduino là chân vào haychân ra
pinMode(Tên chân, chếđộ)
+ Tên chân: là tên chânkhai báo
Trang 34Hình 2.1.Sơ đồ kết nối
- Thuật toán:
Hình 2.2 Thuật toán điều khiển
- Viết chương trình:
Trang 35Hình 2.3.Chương trình điều khiển
Ví dụ 2: Cho sơ đồ như hình 2.1 Viết chương trình để điều khiển led đơn Khi
ấn nút P thì led nháy với tần số 1Hz trong 10 lần, khi nhả tay thì led tắt
- Thuật toán:
Hình 2.4 Thuật toán điều khiển
- Viết chương trình:
Trang 36Hình 2.5 Chương trình điều khiển
Trang 37Hình 2.1b Thuật toán điều khiển
- Viết chương trình:
Hình 2.1c Chương trình điều khiển
b, Bài toán theo hướng đa nhiệm
- Thuật toán:
Trang 38Hình 2.2a Thuật toán điều khiển
- Viết chương trình:
Hình 2.2b Chương trình điều khiển
Bài 2:Cho sơ đồ như hình 2.3a Viết chương trình để điểu khiển thời gian sáng của led
Với các yêu cầu như sau:
Trang 39• Led nháy với chu kì T = 10ms với thời gian sáng là T1(T1= 0÷10ms)
Trang 40Hình2.3bThuật toán điều khiển
- Viết chương trình:
Trang 41Hình2.3c Chương trình điều khiển
b, Thực hiện bài toán theo hướng đa nhiệm
- Thuật toán:
Trang 42Hình 2.4a Thuật toán điều khiển
- Viết chương trình:
Trang 44Bài 3:Cho sơ đồ như hình 2.5a Viết chương trình sử dụng 3 nút nhấn để điều khiển led tần số nháy của led.
Với các yêu cầu như sau:
• Ấn reset thì chu kì nháy(T) đưa về 1s
Trang 45Hình 2.5b Thuật toán điều khiển
- Viết chương trình:
Trang 46Hình 2.5cChương trình điều khiển
b, Thực hiện bài toán theo hướng đa nhiệm
- Thuật toán:
Trang 48Hình 2.6b Chương trình điều khiển
Bài 4: Cho sơ đồ như hình 2.7a Viết chương trình để điểu khiển led 1 nháy với tần số 1Hz, led 2 nháy với tần số 2 Hz
a, Thực hiện bài toán theo hướng đa nhiệm
- Sơ đồ kết nối:
Hình 2.7a sơ đồ kết nối
- Thuật toán:
Trang 50- Thuật toán:
Hình 2.8a Thuật toán điều khiển
- Viết chương trình:
Trang 51Hình 2.8b Chương trình điều khiển
2.2 Kết nối Arduino với LCD
Trang 52b, Chức năng các chân
Bảng 2.1 Sơ đồ chân LCD
Bằng cách điều khiển chân RS và R/W chúng ta có thể chuyển qua lại giữ
2 thanh ghi này khi giao tiếp với MPU Bảng sau đây tóm tắt lại các thiết lập đốivới hai chân RS và R/W theo mục đích giao tiếp
Bảng 2.2 Chức năng RS và R/W
Trang 53c, Thông số của LCD
Bảng 2.3 Thông số kĩ thuật của LCD
Chân cấp nguồn (VCC-GND) 2.7-5.5V
Điện áp vào mức cao VIH 2.2-3.2 V
Điện áp vào mức thấp VIL -0.3-0.6 V
Điện áp ra mức cao (DB0-DB7) Min 2.4V (khi IOH = -0.205mA)Điện áp ra mức thấp (DB0-DB7) Max 0.4V (khi IOL = 1.2mA)
Dòng điện ngõ vào (input leakage
current) ILI
-1uA đến 1uA (khi VIN = 0 đến Vcc)
Dòng điện cấp nguồn ICC 350uA(typ.) đến 600uA
Tần số dao động nội fOSC 190kHz đến 350kHz (điển hình là
270kHz)Nhiệt độ hoạt động Min:-30C , Max:+75C
Nhiệt độ bảo quản Min:-55C , Max:+125C
d, Khởi tạo LCD
Khởi tạo là việc thiết lập các thông số làm việc ban đầu Đối với LCD,khởi tạo giúp ta thiết lập các giao thức làm việc giữa LCD và MPU Việc khởitạo chỉ được thực hiện 1 lần duy nhất ở đầu chương trình điều khiển LCD và baogồm các thiết lập sau :
• lcd.begin : khởi tạo LCD
• Display clear : Xóa/không xóa toàn bộ nội dung hiển thị trước đó
• Function set : Kiểu giao tiếp 8bit/4bit, số hàng hiển thị 1hàng/2hàng, kiểu
Trang 54e, Con trỏ trong LCD
Con trỏ thể hiện vị trí mà ta đang lập trình cho kí tự
Các lệnh liên quan đến con trỏ:
- Lcd.setCursor(x,y); // Set con trỏ LCD ở vị trí (cột x, hàng y)
- Lcd.blink(); // Bật Blink con trỏ
- Lcd.noBlink(); // Tắt chức năng Blink con trỏ
- Lcd.cursor(); // Hiện con trỏ
Khai báo thư viện LCD
LiquidCrytal lcd(a,b,c…); Khai báo các chân kết nối LCD với Arduino
Lcd.begin(16×2); Khởi tạo LCD 16×2
Lcd.setCursor(x,y); Set con trỏ LCD ở vị trí (cột x, hàng y)
Lcd.print(i); In giá trị (i) lên LCD
Lcd.clear(); Xóa tất cả các kí tự trên LCD
Lcd.noAutoscroll(); Tắt chức năng tự động cuộn
lcd.autoscroll(); Cấu hình hiển thị tự động cuộn chữ
lcd.blink(); Bật Blink con trỏ
lcd.noBlink(); Tắt chức năng Blink con trỏ
Lcd.cursor(); Hiện con trỏ
Lcd.noCursor(); Tắt con trỏ
lcd.scrollDisplayRight() Cuộn 1 vị trí sang phải
lcd.scrollDisplayLeft() Cuộn 1 vị trí sang trái
2.2.2 Ví dụ minh hoạ
Cho sơ đồ như hình 2.9a Viết chương trình để xuất ra màn hình LCD 2 dòng(Dinh Giang và Hai Phong)
- Sơ đồ kết nối: