Tải bản đầy đủ (.doc) (61 trang)

Thiết kế hệ thống điều khiển nhà thông minh qua bluetooth bằng vi điều khiển ( có link ggdrive mô phỏng cuối bài hoặc liên hệ 0799008541) khiển

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 (12.31 MB, 61 trang )

Khoa Điện

Lớp: ĐHTĐHCK08A

MỤC LỤC
Trang
MỤC LỤC..............................................................................................................
DANH MỤC HÌNH................................................................................................
LỜI NĨI ĐẦU.......................................................................................................1
Chương 1 TỔNG QUAN VỀ ARDUINO.............................................................2
1.1 Giới thiệu về Arduino......................................................................................2
1.2 Các ứng dụng nổi bật của Arduino..................................................................2
1.3 Khả năng của bo mạch Arduino......................................................................4
1.3.1 Sức mạnh xử lý.............................................................................................4
1.3.2 Đọc tín hiệu cảm biến ngõ vào.....................................................................4
1.3.3 Xuất tín hiệu điều khiển ngõ ra....................................................................5
1.3.4 Chuẩn Giao tiếp............................................................................................5
1.4 Mơi trường lập trình của bo mạch Arduino.....................................................6
1.5 Các loại bo mạch Arduino...............................................................................7
Chương 2 GIỚI THIỆU ARDUINO UNO VÀ CÁC PHẦN MỀM.....................8
2.1 Arduino Uno....................................................................................................8
2.1.1 Sơ đồ chân....................................................................................................8
2.1.2 Chip Atmega 328.........................................................................................9
2.2 Giới thiệu chung về các phần mềm...............................................................12
2.2.1 Phần mềm Arduino IDE.............................................................................12
2.2.2 Phần mềm mô phỏng Proteus.....................................................................17
2.2.3 Các lệnh dùng trong lập trình và chức năng...............................................18
Chương 3 GIAO TIẾP ARDUINO VỚI CÁC THIẾT BỊ NGOẠI VI...............20
3.1 Giao tiếp với led đơn.....................................................................................20
3.2 Giao tiếp với phím nhấn................................................................................23
3.3 Giao tiếp với động cơ ( PWM)......................................................................25


3.4 Giao tiếp với LCD 12x2................................................................................27
Chương 4 ARDUINO VỚI ĐIỀU KHIỂN KHƠNG DÂY DÙNG SĨNG
BLUETOOTH CHO THIẾT BỊ ĐIỆN TRONG NHÀ.......................................36
4.1 Đặt vấn đề......................................................................................................36
4.2 Module Bluetooth HC05...............................................................................37
4.2.1 Đặc điểm kỹ thuật.......................................................................................37
4.2.2 Nguyên lý hoạt động..................................................................................38
SVTH: Đinh Lang Đông


Khoa Điện

Lớp: ĐHTĐHCK08A

4.3 Phần mềm Ardudroid.....................................................................................39
4.3.1 Chương trình con điều khiển đóng ngắt thiết bị.....................................42
4.3.2 Chương trình con điều chỉnh độ sáng đèn..............................................43
4.4 Tính tốn, thiết kế và mơ hình thực tế...........................................................49
4.4.1 Mạch điều khiển.........................................................................................49
4.4.2 Mạch thu phát sóng bluetooth....................................................................49
4.4.3 Mạch lực....................................................................................................50
4.4.4 Code chương trình......................................................................................51
4.4.5 Hồn thiện và lắp đặt mơ hình thực tế........................................................55
4.5 Đánh giá sản phẩm........................................................................................56
4.5.1 Ưu điểm......................................................................................................56
4.5.2 Nhược điểm................................................................................................56
4.6 Hướng phát triển............................................................................................56
KẾT LUẬN.........................................................................................................58

SVTH: Đinh Lang Đông



Khoa Điện

Lớp: ĐHTĐHCK08A

DANH MỤC HÌNH
Hình 1.1: Ứng dụng nổi bật của Arduino..............................................................3
Hình 1.2: Arduino điều chỉnh độ sáng...................................................................3
Hình 1.3: Giao diện IDE của Arduino...................................................................6
Hình 2.1:Sơ đồ chân của Arduino.........................................................................8
Hình 2.2: Cửa sổ chính làm việc của Arduino....................................................12
Hình 4.1: Hình ảnh về Module Bluetooth HC 05................................................37
Hình 4.2: Cửa sổ phần mềm điều khiển trên Smartphone...................................39
Hình 4.3: Lưu đồ chương trình ON/OFF của thiết bị.....................................42
Hình 4.4: Lưu đồ chương trình con điều chỉnh độ sáng đèn..........................43
Hình 4.5: Sơ đồ khối tổng quát...........................................................................44
Hình 4.6: Sơ đồ khối khối xử lý và điều khiển độ sáng đèn...............................44
Hình 4.7: Dạng sóng ngõ ra khi điều khiển góc mở Triac..................................45
Hình 4.8: Sơ đồ khối mạch điều khiển độ sáng đèn............................................45
Hình 4.9: Sơ đồ mạch tìm điểm 0........................................................................46
Hình 4.10: Dạng sóng tín hiệu sau khi qua cầu diode.........................................47
Hình 4.11: Sơ đồ mạch điều khiển góc mở Triac................................................47
Hình 4.12: Các chân của BTA16.........................................................................48
Hình 4.13: Hình ảnh thực mơ tả ghép nối...........................................................50
Hình 4.14: Hình ảnh trên proteus.......................................................................50

SVTH: Đinh Lang Đông



Khoa Điện

Lớp: ĐHTĐHCK08A

LỜI NĨI ĐẦU
Ngày nay khoa học cơng nghệ ngày càng phát triển, vi điều khiển AVR
và vi điều khiển PIC ngày càng thơng dụng và hồn thiện hơn, nhưng có thể nói
sự xuất hiện của Arduino vào năm 2005 tại Italia đã mở ra một hướng đi mới
cho vi điều khiển. Sự xuất hiện của Arduino đã hỗ trợ cho con người rất nhiều
trong lập trình và thiết kế, nhất là đối với những người bắt đầu tìm tịi về vi điều
khiển mà khơng có q nhiều kiến thức, hiểu biết sâu sắc về vật lý và điện tử.
Phần cứng của thiết bị đã được tích hợp nhiều chức năng cơ bản và là mã nguồn
mở. Ngôn ngữ lập trình trên nền Java lại vơ cùng dễ sử dụng tương thích với
ngơn ngữ C và hệ thư viện rất phong phú và được chia sẻ miễn phí. Chính vì
những lý do như vậy nên Arduino hiện đang dần phổ biến và được phát triển
ngàycàng mạnh mẽ trên toàn thế giới.
Trên cơ sở những kiến thức đã được học trong 4 năm tại trường Đại học
SPKT Vinh cùng với sự đam mê tìm hiểu về các thiết bị điện tử, bản thân quyết
định thực hiện đề tài“ Ứng dụng Board Arduino Atmel 328 kết hợp Module
Bletooth HC 05 thiết kế mơ hình điều khiển khơng dây thiết bị điện trong
nhà”với mục đích để tìm hiểu thêm về Arduino, làm quen với các thiết bị điện
tử và nâng cao hiểu biết cho bản thân. Do kiến thức còn hạn hẹp và chưa được
thực tế nhiều nên đồ án chắc chắn khơng tránh khỏi những thiếu sót, hạn chế vì
thế chúng em rất mong có được sự góp ý từ các thầy, cơ giáo để có thể hồn
thiện đề tài của mình.
Em xin chân thành cảm ơn thầy giáo TS. Lương Thanh Bình đã giúp
đỡ em rất nhiều trong quá trình tìm hiểu, thiết kế và hồn thành đề tài này.
Tp, Vinh, ngày…..tháng 4 năm 2017
Sinh viên thực hiện
Đinh Lang Đông


SVTH: Đinh Lang Đông

1


Khoa Điện

Lớp: ĐHTĐHCK08A

Chương 1
TỔNG QUAN VỀ ARDUINO
1.1 Giới thiệu về Arduino
Arduino thực sự đã gây sóng gió trên thị trường người dùng DIY (là những
người tự chế ra sản phẩm của mình) trên tồn thế giới trong vài năm gần đây, gần
giống với những gì Apple đã làm được trên thị trường thiết bị di động. Số lượng
người dùng cực lớn và đa dạng với trình độ trải rộng từ bậc phổ thông lên đến đại
học đã làm cho ngay cả những người tạo ra chúng phải ngạc nhiên về mức độ phổ
biến.
Arduino là gì mà có thể khiến ngay cả những sinhviên và nhà nghiên cứu tại
các trường đại học danh tiếng như MIT, Stanford, CarnegieMellon phải sử dụng;
hoặc ngay cả Google cũng muốn hỗ trợ khi cho ra đời bộ kit Arduino MegaADK
dùng để phát triển các ứng dụng Android tương tác với cảm biến và các thiết bị
khác.
Arduino thật ra là một bo mạch vi xử lý được dùng để lập trình tương tác với
các thiết bị phần cứng như cảm biến, động cơ, đèn hoặc các thiết bị khác. Đặc điểm
nổi bật của Arduino là môi trường phát triển ứng dụng cực kỳ dễ sử dụng, với một
ngơn ngữ lập trình có thể học một cách nhanh chóng ngay cả với người ít am hiểu
về điện tử và lập trình. Và điều làm nên hiện tượng Arduino chính là mức giá rất
thấp và tính chất nguồn mở từ phần cứng tới phần mềm. Chỉ với khoảng $20,

người dùng đã có thể sở hữu một boardArduino có 20 ngõ I/O có thể tương tácvà
điều khiển chừng ấy thiết bị.
Arduino ra đời tại thị trấn Ivrea thuộc nước Ý và được đặt theo tên một vị vua
vào thế kỷ thứ 9 là KingArduin.Arduino chính thức được đưa ra giới thiệu vào năm
2005 như là một công cụ khiêm tốn dành cho các sinh viên của giáo sư
MassimoBanzi, là một trong những người phát triển Arduino, tại trường Interaction
Design InstistuteIvrea (IDII). Mặc dù hầu như không được tiếp thị gì cả, tin tức về
Arduino vẫn lan truyền với tốc độ chóng mặt nhờ những lời truyền miệng tốt đẹp
của những người dùng đầu tiên. Hiện nay Arduino nổi tiếng tới nỗi có người tìm
đến thị trấn Ivrea chỉ để tham quan nơi đã sản sinh ra Arduino.
1.2 Các ứng dụng nổi bật của Arduino
Arduino được chọn làm bộ não xử lý của rất nhiều thiết bị từ đơn giản đến phức
tạp. Trong số đó có một vài ứng dụng thực sự chứng tỏ khả năng vượt trội của Arduino
do chúng có khả năng thực hiện nhiều nhiệm vụ rất phức tạp. Cụ thể như sau:
SVTH: Đinh Lang Đông

2


Khoa Điện

Lớp: ĐHTĐHCK08A

- Sử dụng trong máy in 3D

- Chế tạo Robot

- Thiết bị bay khơng người lái

Hình 1.1: Ứng dụng nổi bật của Arduino

UAV là một ứng dụng đặc biệt thích hợp với Arduino do chúng có khả năng
xử lý nhiều loại cảm biến như Gyro, accelerometer, GPS…; điều khiển động cơ
servo và cả khả năng truyền tín hiệu từ xa.
- Điều khiển ánh sáng

Hình 1.2: Arduino điều chỉnh độ sáng

SVTH: Đinh Lang Đông

3


Khoa Điện

Lớp: ĐHTĐHCK08A

Các tác vụ điều khiển đơn giản như đóng ngắt đèn LED hay phức tạp như
điều khiển ánh sáng theo nhạc hoặc tương tác với ánh sáng laser đều có thể thực
hiện với Arduino.
- Kích hoạt chụp ảnh tốc độ cao
Đây là một ứng dụng rất đơn giản nhưng đặc biệt hữu ích với những ai đam
mê chụp ảnh. Ứng dụng này giúp tạo ra những bức ảnh độc đáo ghi lại những
khoảnh khắc xảy ra cực nhanh mà nếu khơng có dụng cụ hỗ trợ chúng ta khó
lịng ghi lại.
1.3 Khả năng của bo mạch Arduino
Bo mạch Arduino sử dụng dòng vi xử lý 8-bit megaAVR của Atmel với
hai chip phổ biến nhất là ATmega328 và ATmega2560. Các dịng vi xử lý này
cho phép lập trình các ứng dụng điều khiển phức tạp do được trang bị cấu hình
mạnh với các loại bộ nhớ ROM, RAM và Flash, các ngõ vào ra digital I/O trong
đó có nhiều ngõ có khả năng xuất tín hiệu PWM, các ngõ đọc tín hiệu analog và

các chuẩn giao tiếp đa dạng như UART, SPI, TWI (I2C).
1.3.1 Sức mạnh xử lý
+ Xung nhịp: 16MHz
+ SRAM: 2KB (Atmega328) và
8KB (Atmega2560)
+ Xung nhịp: 16MHz
+ SRAM: 2KB (Atmega328) và
8KB (Atmega2560)

+ EEPROM: 1KB (ATmega328) và 4KB
(ATmega2560)
+ Flash: 32KB (Atmega328) và 256KB
(Atmega2560)
+ EEPROM: 1KB (ATmega328) và 4KB
(ATmega2560)
+ Flash: 32KB (Atmega328) và 256KB
(Atmega2560)

1.3.2 Đọc tín hiệu cảm biến ngõ vào
Digital: Các bo mạch Arduino đều có các cổng digital có thể cấu hình làm ngõ
vào hoặc ngõ ra bằng phần mềm. Do đó người dùng có thể linh hoạt quyết định
số lượng ngõ vào và ngõ ra.
Tổng số lượng cổng digital trên các mạch dùng Atmega328 là 14, và trên
Atmega2560 là 54.

SVTH: Đinh Lang Đông

4



Khoa Điện

Lớp: ĐHTĐHCK08A

Analog: Các bo mạch Arduino đều có trang bị các ngõ vào analog với độ phân
giải 10-bit (1024 phân mức, ví dụ với điện áp chuẩn là 5V thì độ phân giải
khoảng 0.5mV). Số lượng cổng vào analog là 6 đối với Atmega328, và 16 đối
với Atmega2560.Với tính năng đọc analog, người dùng có thể đọc nhiều loại
cảm biến như nhiệt độ, áp suất, độ ẩm, ánh sáng, gyro, accelerometer…
1.3.3 Xuất tín hiệu điều khiển ngõ ra
Digital output: Tương tự như các cổng vào digital, người dùng có thể cấu hình
trên phần mềm để quyết định dùng ngõ digital nào là ngõ ra.Tổng số lượng cổng
digital trên các mạch dùng Atmega328 là 14, và trên Atmega2560 là 54.
PWM output: Trong số các cổng digital, người dùng có thể chọn một số cổng
dùng để xuất tín hiệu điều chế xung PWM. Độ phân giải của các tín hiệu PWM này
là 8-bit.
Số lượng cổng PWM đối với các bo dùng Atmega328 là 6, và đối với các
bo dùng Atmega2560 là 14.PWM có nhiều ứng dụng trong viễn thơng, xử lý âm
thanh hoặc điều khiển động cơ mà phổ biến nhất là động cơ servos trong các
máy bay mơ hình.
1.3.4 Chuẩn Giao tiếp
Serial: Đây là chuẩn giao tiếp nối tiếp được dùng rất phổ biến trên các bo mạch
Arduino. Mỗi bo có trang bị một số cổng Serial cứng (việc giao tiếp do phần
cứng trong chip thực hiện). Bên cạnh đó, tất cả các cổng digital cịn lại đều có
thể thực hiện giao tiếp nối tiếp bằng phần mềm (có thư viện chuẩn, người dùng
khơng cần phải viết code). Mức tín hiệu của các cổng này là TTL 5V. Lưu ý
cổng nối tiếp RS-232 trên các thiết bị hoặc PC có mức tín hiệu là UART 12V.
Để giao tiếp được giữa hai mức tín hiệu, cần phải có bộ chuyển mức, ví dụ như
chip MAX232. Số lượng cổng Serial cứng của Atmega328 là 1 và của Atmega
2560 là 4. Với tính năng giao tiếp nối tiếp, các bo Arduino có thể giao tiếp được

với rất nhiều thiết bị như PC, touchscreen, các game console…
USB: Các bo Arduino tiêu chuẩn đều có trang bị một cổng USB để thực hiện kết
nối với máy tính dùng cho việc tải chương trình. Tuy nhiên các chip AVR khơng
có cổng USB, do đó các bo Ardunino phải trang bị thêm phần chuyển đổi từ
USB thành tín hiệu UART. Do đó máy tính nhận diện cổng USB này là cổng
COM chứ không phải là cổng USB tiêu chuẩn.

SVTH: Đinh Lang Đông

5


Khoa Điện

Lớp: ĐHTĐHCK08A

SPI: Đây là một chuẩn giao tiếp nối tiếp đồng bộ có bus gồm có 4 dây. Với tính
năng này các bo Arduino có thể kết nối với các thiết bị như LCD, bộ điều khiển
video game, bộ điều khiển cảm biến các loại, đọc thẻ nhớ SD và MMC…
TWI (I2C): Đây là một chuẩn giao tiếp đồng bộ khác nhưng bus chỉ có hai dây.
Với tính năng này, các bo Arduino có thể giao tiếp với một số loại cảm biến như
thermostat của CPU, tốc độ quạt, một số màn hình OLED/LCD, đọc real-time
clock, chỉnh âm lượng cho một số loại loa…
1.4 Mơi trường lập trình của bo mạch Arduino
Thiết kế bo mạch nhỏ gọn, trang bị nhiều tính năng thơng dụng mang lại
nhiều lợi thế cho Arduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phần
mềm. Mơi trường lập trình đơn giản dễ sử dụng, ngơn ngữ lập trình Wiring dễ
hiểu và dựa trên nền tảng C/C++ rất quen thuộc với người làm kỹ thuật. Và quan
trọng là số lượng thư viện code được viết sẵn và chia sẻ bởi cộng đồng nguồn
mở là cực kỳ lớn.

Mơi trường lập trình Arduino IDE có thể chạy trên ba nền tảng phổ biến
nhất hiện nay là Windows, Macintosh OSX và Linux. Do có tính chất nguồn mở
nên mơi trường lập trình này hồn tồn miễn phí và có thể mở rộng thêm bởi
người dùng có kinh nghiệm

Hình 1.3: Giao diện IDE của Arduino

Ngơn ngữ lập trình có thể được mở rộng thơng qua các thư viện C++. Và
do ngơn ngữ lập trình này dựa trên nền tảng ngơn ngữ C của AVR nên người
dùng hồn tồn có thể nhúng thêm code viết bằng AVR C vào chương trình nếu
muốn.

SVTH: Đinh Lang Đơng

6


Khoa Điện

Lớp: ĐHTĐHCK08A

1.5 Các loại bo mạch Arduino
Về mặt chức năng, các bo mạch Arduino được chia thành hai loại: loại bo
mạch chính có chip Atmega và loại mở rộng thêm chức năng cho bo mạch chính
(thường được gọi là shield).
Các bo mạch chính về cơ bản là giống nhau về chức năng, tuy nhiên về
mặt cấu hình như số lượng I/O, dung lượng bộ nhớ, hay kích thước có sự khác
nhau. Một số bo có trang bị thêm các tính năng kết nối như Ethernet và
Bluetooth.
Các bo mở rộng chủ yếu mở rộng thêm một số tính năng cho bo mạch

chính ví dụ như tính năng kết nối Ethernet, Wireless, điều khiển động cơ v.v…

 Các board Arduino mẫu

Arduino Diecimila in Stoicheia

Arduino UNO

Arduino Mega
SVTH: Đinh Lang Đông

Arduino Duemilanove (rev 2009b)

Arduino Leonardo

Arduino MEGA 2560 R3
7


Khoa Điện

Lớp: ĐHTĐHCK08A

Chương 2
GIỚI THIỆU ARDUINO UNO VÀ CÁC PHẦN MỀM
2.1 Arduino Uno
Arduino Uno là Arduino sử dụng chip Atmega328. Nó có 14 chân digital
I/O, 6 chân đầu vào(input) analog, thạch anh dao động 16Mhz.Một số thông số
kỹ thuật như sau:
Chip


ATmega328

Điện áp cấp nguồn

5V

Điện áp đầu vào (input) (kiến nghị)

7-12V

Điện áp đầu vào (giớihạn)

6-20V

Số chân Digital I/O

14(có 6 chân điều chế độ rộng xung PWM)

Số chân Analog (Input)

6

DC Currentper I/O Pin

40mA

DC Currentfor3.3VPin

50mA


FlashMemory

32KB (ATmega328) với 0.5KB sử dụng
bootloader

SRAM

2KB (ATmega328)

EEPROM

1KB (ATmega328)

Xung nhịp

16

MHz

2.1.1 Sơ đồ chân

Hình 2.1:Sơ đồ chân của Arduino

- USB (1).
SVTH: Đinh Lang Đông

8



Khoa Điện

Lớp: ĐHTĐHCK08A

Arduino sử dụng cáp USB để giao tiếp với máy tính.Thơng qua cáp USB
chúng ta có thể Upload chương trình cho Arduino hoạt động, ngồi ra USB cịn
là nguồn cho Arduino.
- Nguồn (2 và 3).
Khi không sử dụng USB làm nguồn thì chúng ta có thể sử dụng nguồn
ngồi thơng qua jack cắm 2.1mm (cực dương ở giữa) hoặc có thể sử dụng 2chân
Vin và GND để cấp nguồn cho Arduino.
Bo mạch hoạt động với nguồn ngoài ở điện áp từ5–20volt. Chúng ta có
thể cấp một áp lớn hơn tuy nhiên chân 5V sẽ có mực điện áp lớn hơn 5 volt. Và
nếu sử dụng nguồn lớn hơn 12volt thì sẽ có hiện tượng nóng và làm hỏng bo
mạch. Khuyết cáo các bạn nên dùng nguồn ổn định là 5 đến dưới 12 volt.
- Chân 5V và chân 3.3V(Outputvoltage): Các chân này dùng để lấy nguồn
ra từ nguồn mà chúng ta đã cung cấp cho Arduino. Lưu ý : Khơng được cấp
nguồn vào các chân này vì sẽ làm hỏng Arduino.
- GND: Chân mass.
2.1.2 Chip Atmega 328

ATmega32 có các đặc tính sau: 32Kbytes bộ nhớ ISP Flash với ReadWhile-Write capacities, 2Kbytes RAM, 1024 bytes EEPROM, 32 đường I/O đa
năng, 32 thanh ghi đa năng, 3 bộ định thời phức hợp với chế độ so sánh, ngắt
ngoài và trong, bộ truyền nhận nối tiếp USART lập trình được, bộ giao tiếp nối
tiếp định hướng 2 dây 8 kênh, 10bit ADC với ngưỡng vào lựa chọn khác nhau
độ lợi lập trình được, bộ WatchDog Timer khả trình với dao động nội, port SPI
SVTH: Đinh Lang Đông

9



Khoa Điện

Lớp: ĐHTĐHCK08A

nối tiếp, hệ thống ngắt để tiếp tục hàm. ATmega32 có các chế độ tiết kiệm năng
lượng như sau đồng bộ USART, giao tiếp 2 dây, chuyển đổi A/D, SRAM, bộ
đếm bộ định thời, cổng SPI và hệ thống các ngắt vẫn hoạt động. Chế độ Powerdown lưu giữ nội dung của các thanh ghi.
+ Port A gồm 8 chân từ PA0 đến PA7: là cổng vào tương tự cho chuyển
đổi tương tự sang số. Nó cũng là cổng vào/ra hai hướng 8 bít trong trường hợp
khơng sử sụng làm cổng chuyển đổi tương tự, có điện trở nối lên nguồn dương
bên trong. Port A cung cấp đường địa chỉ dữ liệu vao/ra theo kiểu hợp kênh khi
dùng bộ nhớ bên ngồi. At mega32 gồm có 4 port : port A, port B, port C và port
D. Nhân AVR kết hợp tập lệnh đầy đủ với 32 thanh ghi đa năng. Tất cả các thanh
ghi liên kết trực tiếp với khối xử lý số học và logic (ALU) cho phép 2 thanh ghi
độc lập được truy cập trong một lệnh đơn trong 1 chu kỳ đồng hồ. Kết quả là tốc
độ nhanh gấp 10 lần các bộ vi điều khiển CISC thường. Atmega32 là vi điều
khiển thuộc họ AVR của hãng Atmel,có 40 chân trong đó có 32 chân I/O, có 4
kênh điều xung PWM, sử dụng thạch anh ngoài 8MHz.
+ Port B gồm 8 chân từ PB0 đến PB7: là cổng vào/ra hai hướng 8 bít,có
điện trở nối lên nguồn dương bên trong. Port B cung cấp các chức năng ứng với
các tính năng đặc biệt của Atmega32 như:
- Gần như chúng ta không cần mắc thêm bất kỳ linh kiện phụ nào khi sử
dụng AVR, thậm chí khơng cần nguồn tạo xung clock cho chip (thường là các
khối thạch anh).
- Thiết bị lập trình (mạch nạp) cho AVR rất đơn giản, có loại mạch nạp chỉ
cần vài điện trở là có thể làm được. một số AVR cịn hỗ trợ lập trình on – chip
bằng bootloader khơng cần mạch nạp…
- Bên cạnh lập trình bằng ASM, cấu trúc AVR được thiết kế tương thích C.
+ Port C gồm các chân từ PC0 đến PC7: là cổng vào/ra hai hướng 8 bit,có

điện trở nối lên nguồn dương bên trong, Port C cung cấp các địa chỉ lối ra khi sử
dụng bộ nhớ bên ngoài.
+ Port D gồm các chân từ PD0 đến PD7:là cổng vào/ra hai hướng 8 bít,có
điện trở nối lên nguồn dương bên trong. Khi đầu vào Port D bị điện áp bên ngoài
kéo xuống thấp sẽ hiện ngay mã nguồn, nếu được các điện trở kéo lên thì nó sẽ
kích hoạt trở lại và nó là 3 chân trạng thái khi một điều kiên thiết lập nó sẽ hoạt
động.
SVTH: Đinh Lang Đơng

10


Khoa Điện

Lớp: ĐHTĐHCK08A

+ Chân Reset/PC6 (chân số 9): được sử dụng như một I/O dùng để thiết
lập lại đầu vào. Chân Reset nó cần một độ dài xung tối thiểu để hoạt động nếu
dưới mức tối thiểu nó sẽ khơng có chức năng gì cả.
+ Chân nguồn Vcc (chân số 10 và chân số 30): cung cấp điện áp cho các
chân và vi điều khiển.
+ Chân GND (chân số 11 và chân 31): chân nối mass.
+ Chân XTAL1,XTAL2 là hai chân nối thạch anh ngoài (chân số 12 và
chân số 13). Atmega32 sử dụng thạch anh ngoài là 8MHz.
+ Chân INT1(chân số 17): chân ngõ vào ngắt
+ Chân OC1B(chân số 18): là chân ra cho chức năng so sánh lối ra bộ
định thời/đếm.
+ Chân ICP (chân số 20): là chân vào cho chức năng bắt tín hiệu cho bộ
định thời/đếm.
- Input và Output (4,5và 6).

- ArduinoUno có 14 chân digital với chức năng input và output sử dụng
các hàm pinMode(), digitalWrite() và digitalRead() để điều khiển các chân này
tôi sẽ đề cập chúng ở các phần sau.
Cũng trên14 chân digital này chúng ta cịn một số chân chức năng đó là:
Serial: chân 0 (Rx), chân 1 (Tx). Hai chân này dùng để truyền (Tx) và nhận (Rx)
dữ liêu nối tiếp TTL. Chúng ta có thể sử dụng nó để giao tiếp với cổng COM
của một số thiết bị hoặc các linh kiện có chuẩn giao tiếp nối tiếp.
- PWM (pulse widthmodulation): các chân 3,5,6,9,10, 11 trên bo mạch có
dấu“~” là các chân PWM chúng ta có thể sử dụng nó để điều khiển tốc độ động
cơ, độ sáng của đèn…
- SPI: 10(SS), 11(MOSI), 12(MISO), 13(SCK), cácchân này hỗ trợgiao
tiếp theo chuẩn SPI.
- I2C :Arduino hỗ trợ giao tiếp theo chuẩn I2C. Các chân A4(SDA) và
A5(SCL)cho phép chúng ta giao tiếp giữa Arduino với các linh kiện có chuẩn
giao tiếp là I2C.
- Reset(7): Dùng để reset Arduino.
2.2 Giới thiệu chung về các phần mềm

SVTH: Đinh Lang Đông

11


Khoa Điện

Lớp: ĐHTĐHCK08A

2.2.1 Phần mềm Arduino IDE
2.2.1.1 Cài đặt chương trìnhArduino IDE
Trước tiên chúng ta truy cập vào trang web />và tải về chương trình ArduinoIDE phù hợp với hệ điều hành của máy mình bao

gồm Windown, MacOS hay Linux. Đối với Windown có bản cài đặt (.exe) và
bản Zip, đối với Zip thì chỉ cần giải nén và chạy chương trình khơng cần cài đặt.
Sau khi cài đặt xong thì giao diện chương trình như sau:

Hình 2.2: Cửa sổ chính làm việc của Arduino

2.2.1.2 Cài đặt Driver
Sử dụng cáp USB kết nối Arduino với máy tính, lúc này bạn sẽ thấy đèn
ledpower của bo sáng. Máy tính sẽ nhận dạng thiết bị và bạn sẽ nhận được thông
báo:“Devicedriversoftware wasnotsuccessfullyinstalled”

Chúng ta sẽ click vào StartMenu chọn ControlPanel kế đến chúng ta chọn
System andSecurity, click System và sau đó chọn Device Manager.

SVTH: Đinh Lang Đông

12


Khoa Điện

Lớp: ĐHTĐHCK08A

Chúng ta sẽ thấy cảnh báo màu vàng thiếu driver trên Arduino. Click
chuột phải trên ArduinoUnoi còn sau đó chọn “Update Driver Software”

Chọn “Browse mycomputer fordriver software”.

Chọn đường dẫn tới folder “driver” nơi mà phần mềm Arduino được lưu
trữ.


Click“Next” Windown tự động cài đặt driver, quá trình cài đặt driver
SVTH: Đinh Lang Đông

13


Khoa Điện

Lớp: ĐHTĐHCK08A

hoàn tất.
2.2.1.3 Arduino IDE
ArduinoIDE là nơi để soạn thảo code, kiểm tra lỗi và uploadcode cho arduino

a)ArduinoToolbar: có một số button và chức năng của chúng như sau:

+ Verify: kiểm tra code có lỗi hay khơng
+ Upload: nạp code đang soạn thảo vào Arduino
+ New, Open,Save: Tạo mới, mở và Savesketch
SerialMonitor: Đây là màn hình hiển thị dữ liệu từ Arduino gửi lên máy tính

b)ArduinoIDE Menu:
File menu:

Trong file menu chúng ta quan tâm tới mục Examples đây là nơi chứa
code mẫu ví dụ như: cách sử dụng các chândigital, analog, sensor …

SVTH: Đinh Lang Đông


14


Khoa Điện

Lớp: ĐHTĐHCK08A

Editmenu:

Sketchmenu

Trong Sketchmenu:
SVTH: Đinh Lang Đông

15


Khoa Điện

Lớp: ĐHTĐHCK08A

Verify/Compile: chức năng kiểm tra lỗi code.
ShowSketchFolder: hiển thị nơi code được lưu.
AddFile: thêm vào một Tapcode mới.
ImportLibrary: thêm thư viện cho IDE
Toolmemu:

Trong Tool menu ta quan tâm các mục Board và SerialPort
Mục Board: Ta cần phải lựa chọn bo mạch cho phù hợp với loại bo mà
mình sử dụng nếu là ArduinoUno thì phải chọn như hình:


Nếu các chúng ta sử dụng loại bo khác thì phải chọn đúng loại bo mà
mình đang có nếu sai thì code Upload vào chip sẽ bị lỗi.
SerialPort: đây là nơi lựa chọn cổng Com củaArduino. Khi chúng ta cài
đặt driver thì máy tính sẽ hiện thơng báo tên cổng Com củaArduino là bao
nhiêu, ta chỉ việc vào SerialPort chọn đúng cổng Com để nạp code, nếu chọn sai
thì khơng thể nạp code cho Arduino được.
2.2.2 Phần mềm mô phỏng Proteus
Để mơ phỏng được Arduino trên proteus thì chúng ta cần phải download
SVTH: Đinh Lang Đông

16


Khoa Điện

Lớp: ĐHTĐHCK08A

thư viện arduino cho proteus. Để có được thư viên này các ta cần truy cập vào
trang web: />
Sau khi download về các ta chép 2 file ARDUINO.IDXvàARDUINO.LIB
vào thư mục:
Proteus7:C:\ProgramFiles(hoặcx86)\Labcenter
Electronics\Proteus7Professional\ LIBRARY
Proteus8:C:\Program Files

(hoặc x86)\Labcenter

Electronics\Proteus8 professional\ Data \ LIBRARY
Trong thư viện này hổ trợ 5loại board Arduino khác nhau trong đó gồm

có ArduinoUno, MEGA, NANO, LILYPAD và UNO SMD và một cảm biến
siêu âm Untrasonic.
Sau khi chép xong chúng ta khởi động Proteus lên vào thư viện linh kiện
bằng cách bấm phím P và gõ từ khố là ARDUINO chúng sẽ hiện ra danh sách
các board hiện có ở đây tơi chọn ArduinoUno.

Lưu ý chúng ta cần phải cấp nguồn vào 2 chân 5V và Gnd trên mạch như
hình trên
SVTH: Đinh Lang Đông

17


Khoa Điện

Lớp: ĐHTĐHCK08A

2.2.3 Các lệnh dùng trong lập trình và chức năng
2.2.3.1 Khai báobiến
Đây là phần khai báo kiểu biến, tên các biến, định nghĩa các chân trên
board một số kiểu khai báo biến thôngdụng:
* Define: Nghĩa của từ define là định nghĩa, hàm #define có tác dụng định
nghĩa, hay còn gọi là gán, tức là gán một chân, một ngõ ra nào đó với 1 cái tên.
* Khai báo các kiểu biến khác như: int (kiểu số nguyên), float,…
2.2.3.2 Thiết lập (void setup())
Phần này dùng để thiết lập cho chương trình, cấu trúc của nó:
void setup()
{
…..
}

Cấu trúc của nó có dấu ngoặc nhọn ở đầu và ở cuối, nếu thiếu phần này
khi kiểm tra chương trình thì chương trình sẽ báolỗi
Phần này dùng để thiết lập các tốc độ truyền dữ liệu, kiểu chân là chân ra
hay chân vào. Trong đó:
Serial.begin(9600)
pinMode(biến, kiểu vào hoặc ra);
Ví dụ: pinMode(ChanDO, INPUT);

Dùng để truyền dữ liệu từ board
Arduino lên máy tính.
Dùng để xác định kiểu chân là vào hay
ra

2.2.3.3 Vòng lặp
Dùng để viết các lệnh trong chương trình để mạch Arduino thực hiện các
nhiệm vụ mà chúng ta mong muốn, thường bắt đầu bằng:
void loop()
{
……………….
}
Một số câu lệnh, cấu trúc thường gặp:
Một số câu lệnh

SVTH: Đinh Lang Đông

18


Khoa Điện


Lớp: ĐHTĐHCK08A

Ký hiệu, câu lệnh

Ý nghĩa

//

Dấu // dùng để giải thích, khi nội dung giải thích nằm trên 1
dịng, khi kiểm tra chương trình thì phần kiểm tra sẽ bỏ qua
phần này, không kiểm tra,

/*
……….
*/

Ký hiệu này cũng dùng để giải thích, nhưng giải thích dành
cho 1 đoạn, tức có thể xuống dịng được

#define

Define nghĩa là định nghĩa, xác định. Câu lệnh này nhằm gán
tên 1 biến vào 1 chân nào đó. Ví dụ #define led13

Dùng để tắt, mở 1 chân ra. Cú pháp của nó là digitalWrite
digitalWrite
(chân,trạng thái chân); Ở đây trạng thái chân có thể là HIGH
(chân, trạng thái); hoặc LOW. Ví dụ: digital (led, HIGH); hoặc digital (led,
LOW); Chú ý dấu chấm phẩy đằng sau câu lệnh.
analogWrite

(chân, giá trị);
digitalRead
(chân);
analogRead
(chân);

Có ý nghĩa dùng để băm xung (PWM), thường dùng để điều
khiển tốc độ động cơ, độ sáng led,..
Read nghĩa là đọc, lệnh này dùng để đọc giá trị digital tại chân
muốn đọc
Read nghĩa là đọc, lệnh này dùng để đọc giá trị analog tại
chân muốn đọc

Delay
(thời gian);

Delay nghĩa là chờ, trì hỗn, duy trì. Lệnh này dùng để duy trì
trạng thái đang thực hiện chờ một thời gian. Thời gian ở đây
được tính bằng mili giây, 1 giây bằng 1 ngàn mili giây.

if()
{
Các câu lệnh
}
else ()
{
Các câu lệnh
}

if nghĩa là nếu, sau if là dấu (), bên trong dấu ngoặc là một

biểu thứ so sánh.
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 nghĩa là ngược lại

Serial.print()

In ra màn hình máy tính, lệnh này in khơng xuống dịng

Serial.println()

In ra màn hình máy tính, in xong xuống dịng, giá trị tiếp theo
sẽ được in ở dòng kế tiếp

Chương 3
GIAO TIẾP ARDUINO VỚI CÁC THIẾT BỊ NGOẠI VI
3.1 Giao tiếp với led đơn
SVTH: Đinh Lang Đông

19


Khoa Điện

Lớp: ĐHTĐHCK08A


- Sơ đồ mạch

- code chương trình.
ledPin=9;
voidsetup() {pinMode(ledPin, OUTPUT);}
voidloop() {
digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin,LOW); delay(1000);

}->Sau khi gõ code vào chương trình soạn thảo ta click
lỗi.

và để kiểm tra

->TạoFile Hex. Chúng ta cần phải có file Hex để cung cấp cho proteus và khi
bấm playchương trình mới hoạt động được. Cách tạo file Hex trên ArduinoIDE
như sau:
Click vào File chọn Prefere

Ta check vào compilation và OK

SVTH: Đinh Lang Đông

20


Khoa Điện

Lớp: ĐHTĐHCK08A

Sau đó tiếp tục bấm


Chương trình sẽ tự động built một file.hex được lưu ở đường dẫn như
hình dưới.
Chép file hexra một thư mục nào đó sau đó mở proteus lên và double
clickvào.
AruinoUno :

SVTH: Đinh Lang Đông

21


Khoa Điện

Lớp: ĐHTĐHCK08A

Bấm vào vị trí số1và chọn nơi lưu file hex ở trên chọn tiếp Open,
Ok và
Play.Ta sẽ thấy:
led nhấp nháy tắt và sáng thời gian delaylà 1s.
Giải thích chương trình.
intledPin=9;
Khai báo một giá trị biến integer là ledPin= 9. voidsetup() {pinMode(ledPin,
OUTPUT);}
Trong Arduinosketch cần phải có hàm setup() và loop() nếu khơng có thì
chương trình báolỗi. Hàm Setup() chỉ chạy một lần kể từ khi bắt đầu chương
trình.Hàm nàycó chức năng thiết lập chế độ vào, ra cho các chân digital hay tốc
độ baud cho giao tiếp Serial...
Cấu trúc của hàmpinMode() là như sau:
pinMode(pin,Mode);

pin:là vị trí chân digital.
Mode:là chế độ vào(INPUT), ra (OUTPUT). Lệnh tiếp theo.
pinMode(ledPin, OUTPUT);
Lệnh này thiết lập chân số 9 trên board là chân ngõ ra(OUTPUT). Nếu
khơng khai báo“intledPin= 9;” thì bạn có thể viết cách sau nhưng ý nghĩa không
thay đổi:
pinMode(9, OUTPUT);
Bắt buộc khai báo một hàm loop() trong ArduinoIDE. Hàm nàylà vịng
lặp vơ hạn
voidloop() {
digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin,LOW); delay(1000);
}

Tiếp theo ta sẽ phân tích hàm digitalWrite(ledPin,HIGH); lệnh này có ý
nghĩa là xuất ra chân digital có tên là ledPin(chân 9) mức cao(HIGH), mức cao
tương ứng là 5 volt.
delay(1000);

SVTH: Đinh Lang Đông

22


×