ĐỒ Án viỄn thÔng - ddt.hitu.edu.vn
TRANSCRIPT
BỘ CÔNG THƢƠNG
TRƢỜNG CAO ĐẲNG CÔNG THƢƠNG TP HỒ CHÍ MINH
KHOA ĐIỆN - ĐIỆN TỬ
BỘ MÔN: ĐIỆN TỬ VIỄN THÔNG
ĐỒ ÁN VIỄN THÔNG 1
Đề tài:
THIẾT KẾ MẠCH ĐIỀU KHIỂN THIẾT BỊ
ĐIỆN TRONG NHÀ QUA BLUETOOTH
GVHD: NGUYỄN THỊ MAI LAN
SVTH : HUỲNH TRỌNG NGHĨA
HOÀNG PHÚ DOANH
NGUYỄN TRỌNG HÒA
TP HỒ CHÍ MINH - THÁNG 06 NĂM 2019
I
LỜI MỞ ĐẦU Ngày nay, xã hội phát triển mạnh mẽ, kỹ thuật ngày càng hiện đại nên nhu
cầu về trao đổi thông tin giải trí, nhu cầu về điều khiển các thiết bị từ xa, ngày càng
cao. Và những hệ thống dây cáp phức tạp lại không thể đáp ứng nhu cầu này, nhất là
ở những khu vực chật hẹp, những nơi xa xôi, trên các phƣơng tiện vận chuyển, Vì
vậy công nghệ không dây đã ra đời và phát triển mạnh mẽ, tạo rất nhiều thuận lợi
cho con ngƣời trong đời sống hằng ngày.
Trong những năm gần đây công nghệ truyền nhận dữ liệu không dây đang có
những bƣớc phát triển mạnh mẽ, góp công lớn trong việc phát triển các hệ thống
điều khiển, giám sát từ xa, đặc biệt là các hệ thống thông minh. Hiện nay, có khá
nhiều công nghệ không truyền nhận dữ liệu không dây nhƣ RF, Wifi, Bluetooth,
NFC, ... Trong đó, Bluetooth là một trong những công nghệ đƣợc phát triển từ lâu
và luôn đƣợc cải tiến để nâng cao tốc độ cũng nhƣ khả năng bảo mật.
Trên thị trƣờng Việt Nam hiện nay chƣa có nhiều sản phẩm điều khiển thiết
bị không dây, đa số những sản phẩm hiện có đều là nhập khẩu từ nƣớc ngoài với giá
thành cao. Việc nghiên cứu và thiết kế một bộ sản phẩm điều khiển thiết bị không
dây có một ý nghĩa lớn, giúp tăng thêm sự lựa chọn cho ngƣời sử dụng, sản phẩm
đƣợc sản xuất trong nƣớc nên giá thành rẻ và góp phần phát triển các hệ thống điều
khiển thông minh.
II
LỜI CẢM ƠN
Em xin chân thành cảm ơn cô Nguyễn Thị Mai Lan đã giúp đỡ và hƣớng dẫn
em tận tình trong suốt thời gian viết bài báo cáo, tạo cho em những tiền đề, những
kiến thức để tiếp cận vấn đề, phân tích giải quyết vấn đề. Nhờ đó mà em hoàn
thành bài báo cáo của mình đƣợc tốt hơn. Em cũng xin cảm ơn bạn bè, anh chị đã
tận tình chỉ bảo, giúp đỡ em trong quá trình hoàn thành bài báo cáo, tạo cho em
hiểu thêm về những kiến thƣc thực tế.
Những kiến thức mà em đƣợc học hỏi là hành trang ban đầu cho quá trình làm
việc của em sau này. Em xin gửi tới mọi ngƣời lời chúc thành công trên con đƣờng
sự nghiệp của mình.
Em xin chân thành cảm ơn!
Thành phố Hồ Chí Minh, ngày 16 tháng 6 năm 2019
Thay mặt sinh viên
Huỳnh Trọng Nghĩa
III
NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN
Nhận xét chung:
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
Đánh giá: (Đƣợc phép bảo vệ hay không đƣợc phép bảo vệ)
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
TP.HCM, ngày ... tháng ... năm 20...
Giáo viên hƣớng dẫn
(Ký và ghi rõ họ tên)
IV
LỜI CAM ĐOAN
Đề tài này là do nhóm chúng em tự thực hiện dựa vào một số tài liệu tham
khảo và chúng em xin cam đoan đề tài này không sao chép bất kỳ công trình đã có
trƣớc đó. Nếu có sao chép nhóm chúng em hoàn toàn chịu trách nhiệm
V
DANH MỤC HÌNH
Hình 1.1 .............................................................................................................. 1
Hình 1.2 .............................................................................................................. 3
Hình 1.3 .............................................................................................................. 3
Hình 1.4 .............................................................................................................. 4
Hình 1.5 .............................................................................................................. 4
Hình 1.6 .............................................................................................................. 4
Hình 1.7 .............................................................................................................. 4
Hình 1.8 .............................................................................................................. 4
Hình 1.9 .............................................................................................................. 4
Hình 1.10 ............................................................................................................ 5
Hình 1.11 ............................................................................................................ 5
Hình 1.12 ............................................................................................................ 5
Hình 1.13 ............................................................................................................ 6
Hình 1.14 ............................................................................................................ 6
Hình 1.15 ............................................................................................................ 7
Hình 1.16 ............................................................................................................ 9
Hình 1.17 ............................................................................................................ 12
Hình 1.18 ............................................................................................................ 14
Hình 1.19 ............................................................................................................ 14
Hình 1.20 ............................................................................................................ 15
Hình 2.1 .............................................................................................................. 18
Hình 2.2 .............................................................................................................. 19
Hình 2.3 .............................................................................................................. 20
Hình 2.4 .............................................................................................................. 22
Hình 2.5 .............................................................................................................. 22
Hình 2.6 .............................................................................................................. 23
Hình 2.7 .............................................................................................................. 27
Hình 2.8 .............................................................................................................. 27
Hình 2.9 .............................................................................................................. 28
Hình 2.10 ............................................................................................................ 29
Hình 2.11 ............................................................................................................ 29
VI
MỤC LỤC
LỜI CẢM ƠN ...................................................................................................................... II
NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN .................................................................. III
LỜI CAM ĐOAN ................................................................................................................ IV
DANH MỤC HÌNH.............................................................................................................. V
MỤC LỤC ........................................................................................................................... VI
Chƣơng 1: CƠ SỠ LÝ THUYẾT .................................................................................... 1
1.1. GIỚI THIỆU VỀ ARDUINO ........................................................................................ 1
1.2. GIỚI THIỆU VỀ ARDUINO UNO R3 ......................................................................... 9
1.3. GIỚI THIỆU VỀ MODULE BLUETOOTH HC05..................................................... 14
Chƣơng 2: THIẾT KẾ MẠCH ................................................................................... 18
2.1. CHUẨN BỊ LINH KIỆN ............................................................................................ 18
2.2. SƠ ĐỒ MẠCH CÔNG SUẤT CHỈNH LƢU 12V-1A ................................................ 18
2.3. SƠ ĐỒ MẠCH KẾT NỐI ........................................................................................... 20
2.5. SƠ ĐỒ MẠCH IN ..................................................................................................... 22
2.6. CHƢƠNG TRÌNH MẠCH ĐIỀU KHIỂN ................................................................. 23
2.7. GIAO DIỆN ĐIỀU KHIỂN ....................................................................................... 26
2.8. MÔ HÌNH NHÀ ĐIỀU KHIỂN BẰNG BLUETOOTH ............................................. 29
Chƣơng 3: KẾT LUẬN ............................................................................................ 30
3.1. KẾT QUẢ ĐẠT ĐƢỢC ............................................................................................. 30
3.2. NHỮNG MẶT HẠN CHẾ ......................................................................................... 30
TÀI LIỆU THAM KHẢO ................................................................................................. 31
1
Chƣơng 1: CƠ SỠ LÝ THUYẾT
1.1. GIỚI THIỆU VỀ ARDUINO
1.1.1. Tổng quan
Hình 1.1: Bộ điều khiển đơn
Arduino là một board mạch vi xử lý đƣợc sinh ra 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 Aduino bằng ngôn ngữ C hoặc C++.
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
2
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.1.2. Lịch sử
Arduino đƣợc khởi động vào năm 2005 nhƣ là một dự án dành cho sinh viên
trại Interaction Design Institute Ivrea (Viện thiết kế tƣơng tác Ivrea) tại Ivrea,
Italy.Massimo Banzi, một trong những ngƣời sáng lập, giảng dạy tại Ivrea. Cái tên
"Arduino" đến từ một quán bar tại Ivrea, nơi một vài nhà sáng lập của dự án này
thƣờng xuyên gặp mặt. Bản thân quán bar này có đƣợc lấy tên là Arduino, Bá tƣớc
của Ivrea, và là vua của Italy từ năm 1002 đến 1014.
1.1.3. Phần cứng
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.)
3
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.1.4. Các loại Arduino
Hình 1.2. Arduino Diecimila in Stoicheia Hình 1.3. Arduino Duemilanove (rev 2009b)
4
Hình 1.4. Arduino UNO Hình 1.5. Arduino Leonar
Hình 1.6. Arduino Mega Hình 1.7. Arduino Nano
Hình 1.8. Arduino MEGA 2560 R3 (mặt trước) Hình 1.9. Arduino MEGA 2560 R3 (mặt sa
5
Hình 1.10. Arduino Due (nền tảng ARM) Hình 1.11. LilyPad Arduino (rev 2007)
1.1.5. Shield
Các board Arduino và Arduino-compatible sử dụng các shield— các board
mạch in mở rộng đƣợc dùng bằng cách cắm vào các chân header của Arduino. Các
shield có thể là module điều khiển cho động cơ, GPS, ethernet, LCD, hoặc cũng có
thể là breadboard. Một số lƣợng lớn các shield cũng có thể đƣợc chế tạo bởi DIY
(những ngƣời thích tự làm lấy các ứng dụng cho riêng họ).
Các shield Arduino điển hình
Nhiều shield có thể đƣợc xếp chồng lên
nhau. Trong ví dụ này shield ở trên
cùng có chứa một breadboard chƣa hàn.
Hình 1.12. Shield xếp chồng
6
Shield này sử dụng các đầu domino bắt
vít dùng để đấu các đầu dây vào
Hình 1.13. Shield sử dụng đầu domino
Shield Adafruit Datalogging với một khe
chứa thẻ nhớ SD và chip clock Real-Time
Hình 1.14. Shield Adafruit Datalogging
1.1.6. Software
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 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
7
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 C hoặ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:
Hình 1.15. Đèn led tích hợp với chân 13
8
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àn 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.1.7. Phát triển
Arduino là một nền tảng phần cứng mã nguồn mở: Các thiết kế phần cứng
tham khảo của Arduino đƣợc phân phối dƣới dạng Creative CommonsAttribution
Share-Alike 2.5 license và có sẵn trên website của Arduino. Một vài phiên bản phần
cứng của Arduino còn đƣa lên cả file Layout và thành phẩm. Mã nguồn cho IDE
này cũng khả dụng và đƣợc xuất bản dƣới dạng GNU General Public License,
version 2.
Mặc dù các thiết kế phần cứng và phần mềm là miễn phí dƣới dạng
copyleft license, các nhà phát triển cũng đƣợc yêu cầu cái tên "Arduino" chỉ đƣợc
9
dành riêng cho các sản phẩm chính thức và không đƣợc sử dụng cho các sản phẩm
phái sinh mà đƣợc sự cho phép. Các văn bản chính sách chính thức về việc sử dụng
tên Arduino nhấn mạnh rằng dự án này là mở đối với những ngƣời khác trong việc
cộng tác để tạo ra sản phẩm chính thức. Nhiều sản phẩm tƣơng thích với Arduino
phát hành thƣơng mại đã tránh cái tên "Arduino" bằng cách sử dụng từ phái sinh "-
duino".
1.1.8. Các ứng dụng
Danh sách các dự án phần cứng mã nguồn mở:
Xoscillo: oscilloscope mã nguồn mở
Các thiết bị khoa học
Arduinome: một thiết bị điều khiển MIDI bắt chƣớc Monome
OBDuino: một máy tính hành trình sử dụng giao diện chẩn đoán on-board đƣợc
tìm thấy trong hầu hết các loại xe hơi hiện đại
Thiết bị đọc sách cho con ngƣời: thiết bị điện tử giá rẻ với đầu ra TV có thể
chứa một thƣ viện năm ngàn cuốn sách (ví dụ nhƣ các biên soạn offline Wikipedia)
trên một thẻ nhớ microSD
Ardupilot: software / hardware máy bay không ngƣời lái
ArduinoPhone
1.2. GIỚI THIỆU VỀ ARDUINO UNO R3
Hình 1.16. Arduino Uno R3
10
1.2.1. Thông số kỹ thuật
Vi điều khiển ATmega328 họ 8bit
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA
Điện áp vào khuyên dùng 7-12V DC
Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bởi
bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
1.2.2. Năng lượng
Arduino UNO có thể đƣợc cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn
ngoài với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V. Thƣờng thì cấp
nguồn bằng pin vuông 9V là hợp lí nhất nếu bạn không có sẵn nguồn từ cổng USB.
Nếu cấp nguồn vƣợt quá ngƣỡng giới hạn trên, bạn sẽ làm hỏng Arduino UNO.
1.2.3. Các chân nguồn
GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi bạn dùng
các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải đƣợc
nối với nhau.
5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA.
3.3V: cấp điện áp 3.3V đầu ra. Dòng tối đa cho phép ở chân này là 50mA.
Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dƣơng
của nguồn với chân này và cực âm của nguồn với chân GND.
11
IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể đƣợc đo
ở chân này. Và dĩ nhiên nó luôn là 5V. Mặc dù vậy bạn không đƣợc lấy nguồn
5V từ chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn.
RESET: việc nhấn nút Reset trên board để reset vi điều khiển tƣơng đƣơng với
việc chân RESET đƣợc nối với GND qua 1 điện trở 10KΩ.
Lưu ý:
Arduino UNO không có bảo vệ cắm ngƣợc nguồn vào. Do đó bạn phải hết sức
cẩn thận, kiểm tra các cực âm – dƣơng của nguồn trƣớc khi cấp cho Arduino
UNO. Việc làm chập mạch nguồn vào của Arduino UNO sẽ biến nó thành một
miếng nhựa chặn giấy. mình khuyên bạn nên dùng nguồn từ cổng USB nếu có
thể.
Các chân 3.3V và 5V trên Arduino là các chân dùng để cấp nguồn ra cho các
thiết bị khác, không phải là các chân cấp nguồn vào. Việc cấp nguồn sai vị trí có
thể làm hỏng board. Điều này không đƣợc nhà sản xuất khuyến khích.
Cấp nguồn ngoài không qua cổng USB cho Arduino UNO với điện áp dƣới 6V
có thể làm hỏng board.
Cấp điện áp trên 13V vào chân RESET trên board có thể làm hỏng vi điều khiển
ATmega328.
Cƣờng độ dòng điện vào/ra ở tất cả các chân Digital và Analog của Arduino
UNO nếu vƣợt quá 200mA sẽ làm hỏng vi điều khiển.
Cấp điệp áp trên 5.5V vào các chân Digital hoặc Analog của Arduino UNO sẽ
làm hỏng vi điều khiển.
Cƣờng độ dòng điện qua một chân Digital hoặc Analog bất kì của Arduino
UNO vƣợt quá 40mA sẽ làm hỏng vi điều khiển. Do đó nếu không dùng để
truyền nhận dữ liệu, bạn phải mắc một điện trở hạn dòng.
1.2.4. Bộ nhớ
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho ngƣời dùng:
32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ đƣợc lƣu trữ trong bộ nhớ
Flash của vi điều khiển. Thƣờng thì sẽ có khoảng vài KB trong số này sẽ đƣợc dùng
cho bootloader nhƣng đừng lo, bạn hiếm khi nào cần quá 20KB bộ nhớ này đâu.
2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai báo
khi lập trình sẽ lƣu ở đây. Bạn khai báo càng nhiều biến thì càng cần nhiều bộ nhớ
RAM. Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ mà
bạn phải bận tâm. Khi mất điện, dữ liệu trên SRAM sẽ bị mất.
12
1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory):
đây giống nhƣ một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi dữ liệu của mình
vào đây mà không phải lo bị mất khi cúp điện giống nhƣ dữ liệu trên SRAM.
1 2 5 Các cổng vào ra
Hình 1.17. Cổng vào ra Arduino Uno R3
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có
2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi
chân đều có các điện trở pull-up từ đƣợc cài đặt ngay trong vi điều khiển
ATmega328 (mặc định thì các điện trở này không đƣợc kết nối).
Một số chân digital có các chức năng đặc biệt nhƣ sau:
2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive –
RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2
chân này. Kết nối bluetooth thƣờng thấy nói nôm na chính là kết nối Serial không
dây. Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không
cần thiết
Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ
phân giải 8bit (giá trị từ 0 → 28-1 tƣơng ứng với 0V → 5V) bằng hàm
analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh đƣợc điện áp ra ở chân
này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V nhƣ những chân khác.
Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các chức
năng thông thƣờng, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI
với các thiết bị khác.
13
LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút
Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó đƣợc nối với chân số 13. Khi
chân này đƣợc ngƣời dùng sử dụng, LED sẽ sáng.
Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu
10bit (0 → 210
-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với
chân AREF trên board, bạn có thể để đƣa vào điện áp tham chiếu khi sử dụng các
chân analog. Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các
chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là
10bit.
1.2.5. Lập trình cho Arduinio Uno R3
Các thiết bị dựa trên nền tảng Arduino đƣợc lập trình bằng ngôn riêng. Ngôn
ngữ này dựa trên ngôn ngữ Wiring đƣợc viết cho phần cứng nói chung. Và Wiring
lại là một biến thể của C/C++. Một số ngƣời gọi nó là Wiring, một số khác thì gọi là
C hay C/C++. Riêng mình thì gọi nó là ―ngôn ngữ Arduino‖, và đội ngũ phát triển
Arduino cũng gọi nhƣ vậy. Ngôn ngữ Arduino bắt nguồn từ C/C++ phổ biến hiện
nay do đó rất dễ học, dễ hiểu.
Để lập trình cũng nhƣ gửi lệnh và nhận tín hiệu từ mạch Arduino, nhóm phát
triển dự án này đã cũng cấp đến cho ngƣời dùng một môi trƣờng lập trình Arduino
đƣợc gọi là Arduino IDE (Intergrated Development Environment) nhƣ hình dƣới
đây.
14
Hình 1.18. Phần mềm lập trình cho Arduino
1.3. GIỚI THIỆU VỀ MODULE BLUETOOTH HC05
Hình 1.19. Module Bluetooth HC05
1.3.1. Giới thiệu
Module thu phát bluetooth HC-05 dùng để thiết lập kết nối Serial giữa 2 thiết
bị bằng sóng bluetooth. Điểm đặc biệt của module bluetooth HC-05 là module có
thể hoạt động đƣợc ở 2 chế độ: MASTER hoặc SLAVE. Trong khi đó, bluetooth
module HC-06 chỉ hoạt động ở chế độ SLAVE.
15
+ Ở chê độ SLAVE: bạn cần thiết lập kết nối từ smartphone, laptop, usb bluetooth
để dò tìm module sau đó pair với mã PIN là 1234. Sau khi pair thành công, bạn đã
có 1 cổng serial từ xa hoạt động ở baud rate 9600.
+ Ở chế độ MASTER: module sẽ tự động dò tìm thiết bị bluetooth khác (1 module
bluetooth HC-06, usb bluetooth, bluetooth của laptop...) và tiến hành pair chủ động
mà không cần thiết lập gì từ máy tính hoặc smartphone.
Mạch thu phát Bluetooth HC-05 đã ra chân đƣợc thiết kế nhỏ gọn ra chân tín
hiệu giao tiếp cơ bản và nút bấm để vào chế độ AT COMMAND, mạch đƣợc thiết
kế để có thể cấp nguồn và giao tiếp qua 3.3VDC hoặc 5VDC, thích hợp cho nhiều
ứng dụng khác nhau: Robot Bluetooth, điều khiển thiết bị qua Bluetooth,....
Khi kết nối với máy tính, HC-05 sẽ nhận nhƣ 1 cổng COM ảo ở chế độ truyền
Haft Duplex tức trong 1 thời điểm chỉ có thể truyền hoặc nhận tín hiệu.
1.3.2. Sơ đồ chân
Hình 1.20. Sơ đồ chân Bluetooth HC05
Sơ đồ chân HC-05 gồm có:
- KEY: Chân này để chọn chế độ hoạt động AT Mode hoặc Data Mode. VCC
chân này có thể cấp nguồn từ 3.6V đến 6V bên trong module đã có một ic nguồn
chuyển về điện áp 3.3V và cấp cho IC BC417.
- GND nối với chân nguồn GND - TXD,RND đây là hai chân UART để giao tiếp module hoạt động ở mức logic
3.3V - STATE các bạn chỉ cần thả nổi và không cần quan tâm đến chân này. 1.3.3. Các chế độ hoạt động
HC-05 có hai chế độ hoạt động là Command Mode và Data Mode. Ở chế độ
Command Mode ta có thể giao tiếp với module thông qua cổng serial trên module
16
bằng tập lệnh AT quen thuộc. Ở chế độ Data Mode module có thể truyền nhận dữ
liệu tới module bluetooth khác. Chân KEY dùng để chuyển đổi qua lại giữa hai chế
độ này. Có hai cách để bạn có thể chuyển module hoạt động trong chế độ Data
Mode (đọc tài liệu Tiếng Việt trên một số Web thấy chỗ này thƣờng bị viết sai)
- Nếu đƣa chân này lên mức logic cao trƣớc khi cấp nguồn module sẽ đƣa vào chế
độ Command Mode với baudrate mặc định 38400. Chế độ này khá hữu ích khi bạn
không biết baudrate trong module đƣợc thiết lập ở tốc độ bao nhiêu. Khi chuyển
sang chế độ này đèn led trên module sẽ nháy chậm (khoảng 2s) và ngƣợc lại khi
chân KEY nối với mức logic thấp trƣớc khi cấp nguồn module sẽ hoạt động chế độ
Data Mode.
- Nếu module đang hoạt động ở chế Data Mode để có thể đƣa module vào hoạt
động ở chế độ Command Mode bạn đƣa chân KEY lên mức cao. Lúc này module sẽ
vào chế độ Command Mode nhƣng với tốc độ Baud Rate đƣợc bạn thiết lập lần cuối
cùng. Vì thế bạn phải biết baudrate hiện tại của thiết bị để có thể tƣơng tác đƣợc với
nó. Chú ý nếu module của bạn chƣa thiết lập lại lần nào thì mặc định của nó nhƣ sau:
· Baudrate 9600, data 8 bits, stop bits 1, parity : none, handshake: none
· Passkey: 1234
· Device Name: HC-05
Ở chế độ Data Mode HC-05 có thể hoạt động nhƣ một master hoặc slave tùy vào
việc bạn cấu hình (riêng HC-06 bạn chỉ có thể cấu hình ở chế độ SLAVE)
1. Ở chế độ SLAVE: bạn cần thiết lập kết nối từ smartphone, laptop, usb bluetooth
để dò tìm module sau đó pair với mã PIN là 1234. Sau khi pair thành công, bạn đã
có 1 cổng serial từ xa hoạt động ở baud rate 9600.
2. Ở chế độ MASTER: module sẽ tự động dò tìm thiết bị bluetooth khác (1 module
bluetooth HC-06, usb bluetooth, bluetooth của laptop...) và tiến hành pair chủ động
mà không cần thiết lập gì từ máy tính hoặc smartphone.
1.3.4. Tập lệnh AT
AT: Lệnh test, nó sẽ trả về OK nếu module đã hoạt động ở Command Mode
AT+VERSION? :trả về firmware hiện tại của module
AT+UART=9600,0,0 ( thiết lập baudrate 9600,1 bit stop, no parity)
- Các lệnh ở chế độ Master:
17
AT+RMAAD : ngắt kết nối với các thiết bị đã ghép
AT+ROLE=1 : đặt là module ở master
AT+RESET: reset lại thiết bị
AT+CMODE=0: Cho phép kết nối với bất kì địa chỉ nào
AT+INQM=0,5,5: Dừng tìm kiếm thiết bị khi đã tìm đƣợc 5 thiết bị hoặc sau 5s
AT+PSWD=1234 Set Pin cho thiết bị
AT+INQ: Bắt đầu tìm kiếm thiết bị để ghép nối
Sau lệnh này một loạt các thiết bị tìm thấy đƣợc hiện thị. Định ra kết quả sau lệnh
này nhƣ sau: INQ:address,type,signal
Phần địa chỉ (address) sẽ có định dạng nhƣ sau: 0123:4:567890. Để sử dụng địa chỉ
này trong các lệnh tiếp theo ta phải thay dấu ―:‖ thành ―,‖
0123:4:567890 -> 0123,4,5678
AT+PAIR=<address>,<timeout> : Đặt timeout(s) khi kết nối với 1 địa chỉ slave
AT+LINK=<address> Kết nối với slave
- Các lệnh ở chế độ Slave:
AT+ORGL: Reset lại cài đặt mặc định
AT+RMAAD: Xóa mọi thiết bị đã ghép nối
AT+ROLE=0: Đặt là chế độ SLAVE
AT+ADDR: Hiển thị địa chỉ của SLAVE
18
Chƣơng 2: THIẾT KẾ MẠCH
2.1. CHUẨN BỊ LINH KIỆN
- Arduino Uno R3
- Bluetooth HC05
- Mạch công suất MX1508
- Biến áp 12V – 1A
- IC 7812
- Led, điện trở 330 Ω
- Motor quạt
- Transitor 1805
- Octo c1815
- Diot 1004 , Relay 5v
2.2. SƠ ĐỒ MẠCH CÔNG SUẤT CHỈNH LƢU 12V-1A
Hình 2.1: Sơ đồ mạch công suất chỉnh lưu
Mạch công suất chỉnh lƣu 12v sử dụng IC ổn áp L7812CV để điều chỉnh điện áp cố
định, hiện nay đều có tích hợp bảo vệ quá nhiệt, bảo vệ ngắn mạch và giữ vùng hoạt
động an toàn các Transistor công suất trong mạch, để bảo vệ cho nó về cơ bản không
thể phá hủy.
19
Hình 2.2. Mạch công suất chỉnh lưu 12v-1a
20
2.3. SƠ ĐỒ MẠCH KẾT NỐI
Hình 2.3. Sơ đồ mạch kết nối điều khiển đèn quạt qua Bluetooth
2.4 NGUYÊN LÝ HOẠT ĐỘNG
Giao thức của bo mạch:
Giao thức kết nối Bluetooth giữa bo Arduino và phần mêm điều khiển Bluetooth
là giao thức RS232 theo chuẩn 2.4Ghz. Truyền dữ liệu số String chuỗi giá trị dạng
Int 16 bit. Bo Arduino sau khi kết nối, nhận giá trị từ điện thoại gửi xuống sử dụng
hàm so sánh để chuyển đổi dạng 8 bit sang 16 bit. Và xử lí điều khiển các thiết bị
theo điều kiện mà ta gán cho chuỗi giá trị nhận đƣợc về giao thức điều khiển trên
ứng dụng.
Cấp nguồn từ mạch công suất chỉnh lƣu 12v cho bo mạch arduino. Chân Rx,Tx
của HC-05 kết nối với chân 7 và 8 arduino. Trên arduio, các chân PWM
3.5.6.9.10.11 kết nối với mạch công suất mx 1508 (để điều khiển tốc độ động cơ,
độ sáng đèn (dimmer)). Chân 4 và 12 kết nối với relay 5v để điều khiển ON OFF
21
của led. . Bởi vì mạch chỉnh lƣu chỉ có dòng 1A cấp cho mạch điều khiển. Nên cần
thêm nguồn ngoài cấp là nguồn 5v-2A( sạc dự phòng) cấp cho relay và và mạch
công suất
Blutooth:
Bluetooth là công nghệ dựa trên tần số vô tuyến sử dụng để tạo kết nối giao tiếp
giữa hai loại thiết bị khác nhau trong một cự li nhất định. Bluetooth sử dụng sóng
Radio tần số 2.4GHz có bƣớc sóng ngắn.
Với công nghệ Bluetooth, ngƣời dùng hoàn toàn có thể làm việc trên máy tính với
một bàn phím không dây, sử dụng bộ tai nghe không dây để nói chuyện hoặc nghe
nhạc. Kết nối trong công nghệ Bluetooth là vô hƣớng và có thể đạt đƣợc tốc độ
truyền dữ liệu 1Mb/s. Trong phạm vi 10m, tốc độ truyền tải dữ liệu qua Bluetooth
lên tới 720 Kbps.
ỨNG DỤNG:
Đƣợc viết bằng ngôn ngữ android sử dụng các thƣ viện thanh bar để nhập giá
trị dạng analog từ 0 - 255. Các nút nhấn ON, OFF sử dụng thƣ viện gửi giá trị gán
mặt định. Giao thức nhận dạng giọng nói sử dụng thƣ viện mã nguồn mở Android
và Google Tall để sử lí giọng nói sang dạng văn bản từ đầu năm 2019 thì Google
có hổ trợ nhận dạng giọng nói tiếng việt. Sau đó sử dụng văn bản nhận đƣợc so
sánh với điều kiện ngƣời thiết kế đã đặt để ra thực thi lệnh.
Sau khi nhận tín hiệu Analog từ ứng dụng gửi xuống bo. Xử lí các tín hiệu này
ra dạng xung PWM ( xung ON, OFF tốc độ cao từ vài kí/ giây ) ra các chân băm
xung của bo Arduino. Các chân này đƣợc kết nối với IC công suất MX 1508. Từ đó
điều khiển các đèn dimmer sáng dần và tắt dần. Và motor từ tốc độ thấp đến tốc độ
cao. Và bo nhận tín hiệu digital ON,OFF ra relay.
22
2.5 SƠ ĐỒ MẠCH IN
Hình 2.4. Sơ đồ mạch in của bo Arduino
Hình 2.5. Sau khi rửa mạch in
23
Hình 2.6. Hàn linh kiện vao bo mạch
2.6. CHƢƠNG TRÌNH MẠCH ĐIỀU KHIỂN
#include <SoftwareSerial.h>
int bluetoothTx = 7; (thiết đặt kết nối chân 7,8 với blutooth)
int bluetoothRx = 8;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
void setup()
pinMode(3,OUTPUT ); (thiết đặt chân số 3 là OUTPUT)
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(4,OUTPUT);
24
pinMode(12,OUTPUT);
digitalWrite(3,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(4,LOW);
digitalWrite(12,LOW);
//Setup usb serial connection to computer
Serial.begin(9600);
//Setup Bluetooth serial connection to android
bluetooth.begin(9600);
void loop()
//Read from bluetooth and write to usb serial
if(bluetooth.available()>= 2 )
unsigned int color1 = bluetooth.read(); //DOC LAN 1 8BIT THAP
unsigned int color2 = bluetooth.read(); //DOC LAN 2 8BIT CAO
unsigned int color = (color2 *256) + color1;
Serial.println(color1);
if (color >= 1000 && color <1255)
int den_phong_khach = color;
den_phong_khach = map(den_phong_khach, 1000,1255,0,255); //1
analogWrite(3,den_phong_khach);
Serial.println("den_phong_khach"); (phòng khách)
delay(10);
if (color >=1500 && color <1755)
int phong_ngu = color;
phong_ngu = map(phong_ngu, 1500,1755,0,255); //2
analogWrite(5,phong_ngu);
25
Serial.println("phong_ngu"); (phòng ngủ)
delay(10);
if (color >=2000 && color < 2255)
int khu_bep = color;
khu_bep = map(khu_bep, 2000,2255,0,255); //3
analogWrite(6,khu_bep);
Serial.println("khu_bep"); (khu bếp)
delay(10);
if (color >=2500 && color < 2755)
int quat_tran = color;
quat_tran = map(quat_tran, 2500, 2755,0,255); //4
analogWrite(9,quat_tran);
Serial.println("quat_tran"); (quạt trần)
delay(10);
if (color >=3000 && color < 3255)
int den_san = color;
den_san = map(den_san, 3000, 3255,0,255); //5
analogWrite(10,den_san);
Serial.println("den_san"); (đèn sân)
delay(10);
if (color >=3500 && color < 3755)
int den_cong = color;
den_cong = map(den_cong, 3500, 3755,0,255); //6
analogWrite(11,den_cong);
Serial.println("den_cong"); (đèn cổng)
delay(10);
if (color == 4255)
digitalWrite(4,HIGH);
Serial.println("phong_tra_ON"); (phòng trà)
else if (color == 4000)
digitalWrite(4,LOW);
Serial.println("phong_tra_OFF");
26
if (color == 4755)
digitalWrite(12,HIGH);
Serial.println("phong_giai_tri_ON"); (phòng giải trí)
else if (color == 4500)
digitalWrite(12,LOW);
Serial.println("phong_giai_tri_OFF");
if (color == 5255)
digitalWrite(4,HIGH);
digitalWrite(12,HIGH);
Serial.println("bat_2_den_ON");
else if (color == 5000)
digitalWrite(4,LOW);
digitalWrite(12,LOW);
Serial.println("tat_2_den_OFF");
Chú thích:
AnalogWrite() là lệnh xuất ra từ một chân trên mạch Arduino một mức tín hiệu
analog (phát xung PWM). Ngƣời ta thƣờng điều khiển mức sáng tối của đèn LED
hay hƣớng quay của động cơ servo bằng cách phát xung PWM nhƣ thế này.
Serial.print () là hàm này sẽ xuất dữ liệu ra cổng Serial dƣới dạng chuỗi con ngƣời
có thể đọc đƣợc. Hàm này có thể đƣợc sử dụng dƣới nhiều dạng khác nhau. Các
chữ số của một số (nguyên hoặc thực) đƣợc chuyển thành chuỗi và xuất ra màn
hình.
2.7. GIAO DIỆN ĐIỀU KHIỂN
Giao diện điều khiển đƣợc em sử dụng phần mềm app MIT appventor để viết ứng
dụng thiết kế app
27
Hình 2.7. Viết lệnh kết nối với blutooth HC-05
Hình 2.8. Viết lệnh chớp tắt đèn
28
Hình 2.9. Giao diện điều khiển
29
2.8. MÔ HÌNH NHÀ ĐIỀU KHIỂN BẰNG BLUETOOTH
Hình 2.10, 2.11. Mô hình nhà điều khiển
30
Chƣơng 3: KẾT LUẬN
3.1. KẾT QUẢ ĐẠT ĐƢỢC
Trên cơ sở thiết kế phần cứng và phần mềm khi thực hiện đồ án đã đạt được một số
kết quả sau:
- Về phần cứng: Tìm hiểu về Arduino Uno R3 và các linh kiện cũng nhƣ cách thiết
kế và làm mạch thủ công.
- Đi sâu tìm hiểu một số thuật toán điều khiển.
- Nhận dạng và mô phỏng đối tƣợng điều khiển .
3.2. NHỮNG MẶT HẠN CHẾ
Trong gian đoạn làm đồ án, chúng em đã rất cố gắng nghiên cứu, thiết kế để có
đƣợc những kết quả đã nêu trên. Tuy nhiên do thời gian và kiến thức của chúng em
có hạn, mặt khác một số điều kiện về thiết bị không cho phép nên trong đồ án còn
những hạn chế và thiếu sót.
31
TÀI LIỆU THAM KHẢO
https://www.arduino.cc/
http://mitappsinventor.blogspot.com/