Khái quát về ngôi nhà thông minh Theo khái niệm của tài liệu Bách khoa toàn thư mở wikipedia: Nhà thông minh tiếng Anh: Smart - Home hoặc Intelligent - Home là kiểu nhà được lắp đặt cá
Trang 1TRƯỜNG ĐẠI HỌC VINH VIỆN KỸ THUẬT VÀ CÔNG NGHỆ
Vinh, tháng 05 năm 2018
Trang 2MỤC LỤC
MỞ ĐẦU 3
CHƯƠNG 1 TỔNG QUAN VỀ NGÔI NHÀ THÔNG MINH 4
1.1 Khái quát về ngôi nhà thông minh 4
1.2 Ưu nhược điểm của ngôi nhà thông minh 4
1.3 Nhiệm vụ đồ án 7
CHƯƠNG 2 GIỚI THIỆU BOARD ĐIỀU KHIỂN VÀ CÁC MODULE 9
GIAO TIẾP CẢM BIỂN DÙNG TRONG MÔ HÌNH 9
2.1 Tổng quan về board điều khiển Arduino 9
2.2 Module buletooth HC05 34
2.3 Module wifi esp8266-NodeMCU V2 37
2.4 Cảm biển chuyển động PIR 41
2.5 Cảm biến ánh sáng 46
2.6 Nguồn xung(nguồn tổ ong) 48
2.7 Module giảm áp LM2596 49
CHƯƠNG 3 THIẾT KẾ MÔ HÌNH NGÔI NHÀ THÔNG MINH 50
3.1 Yêu cầu bài toán 50
3.2 Xây dựng sơ đồ khối cho hệ thống 51
3.4.Thiết kế phần cứng 57
3.5 Chương trình điều khiển 65
KẾT LUẬN 71
TÀI LIỆU THAM KHẢO 72
Trang 3MỞ ĐẦU
Với sự phát triển của công nghệ hiện nay, việc đáp ứng nhu cầu thực tế cuộc sống ngày càng cao của con người không còn là việc khó khăn Nhà thông minh là một sản phẩm mới có được từ sự kết hợp mềm dẻo giữa các thiết bị điện và phần mềm chuyên dụng để đem lại cho con người một cuộc sống tiện nghi, hoàn hảo Xuất phát từ những bất cập đó và để đáp ứng nhu cầu thực tế cuộc sống nên
em đã chọn đề tài tốt nghiệp là: Xây dựng mô hình ngôi nhà thông minh, với ước
mong một phần nào đó đưa nhưng kiến thức mình đã học được từ trên ghế nhà trường cũng như tìm hiểu qua internet, xây dựng lên một mô hình ngôi nhà thông minh Từ đó có thế phát triển thêm để áp dụng vào thực tế cuộc sống, ngõ hầu biến những ngôi nhà bình dân như ở Việt Nam chúng ta hiện nay với phương cách điều khiển thủ công nay trở thành điều khiển từ xa, tiện lợi, thông minh hơn nhưng dễ áp dụng và giả cả phải trả có lẽ phù hợp với túi tiền của mọi người
Nội dung của đồ án được chia làm 3 phần chính:
- Chương 1: Trình bày khái quát về nhà thông minh, ưu nhược điểm nhà
thông minh hiện nay trên thị trường từ đó đưa ra nhiệm vụ của đồ án
- Chương 2: Giới thiệu về các module và cảm biến được ứng dụng trong ngôi
nhà thông minh
- Chương 3: Thiết kế mô hình ngôi nhà thông minh
Em xin gửi lời cảm ơn sâu sắc tới thầy giáo Trần Đình Dũng đã tận tình hướng
dẫn, chỉ bảo, tạo điều kiện trong suốt thời gian qua để em hoàn thành đồ án này
Em rất mong nhận được sự đóng góp của thầy cô và các bạn để bản đồ án được hoàn thiện hơn nữa
Em xin chân thành cảm
Trang 4CHƯƠNG 1 TỔNG QUAN VỀ NGÔI NHÀ THÔNG MINH
1.1 Khái quát về ngôi nhà thông minh
Theo khái niệm của tài liệu Bách khoa toàn thư mở wikipedia: Nhà thông minh (tiếng Anh: Smart - Home hoặc Intelligent - Home) là kiểu nhà được lắp đặt
các thiết bị điện, điện tử có tác dụng tự động hoàn toàn hoặc bán tự động thay thế con người thực hiện một hoặc một số thao tác quản lý, điều khiển Như vậy, theo
định nghĩa ở trên, từ “thông minh” chỉ có nghĩa là đơn giản hóa các thao tác của
người sử dụng, tạo ra một môi trường tiện ích chứ chưa đạt được đến ý nghĩa suy luận, hỗ trợ quyết định của con người Trong căn nhà thông minh, đồ dùng trong nhà từ phòng ngủ, phòng khách đến toilet đều gắn các bộ điều khiển điện tử có thể kết nối với internet và điện thoại di động, cho phép chủ nhân điều khiển vật dụng từ
xa hoặc lập trình cho thiết bị ở nhà hoạt động theo lịch Thêm vào đó, các đồ gia dụng có thể hiểu được ngôn ngữ của nhau và có khả năng tương tác với nhau… Như vậy, một ngôi nhà thông minh có thể có các cấp thông minh sau:
Cấp 1: Tạo nên sự tiện lợi cho chủ nhân ngôi nhà: không phải đi lại tận nơi từng thiết bị điện để bật tắt mà có thể điều khiển và quản lý một cách tổng thể thông qua các giao diện người dùng không bị giới hạn bởi không gian
Cấp 2: Các hệ thống tự động hoạt động, phối hợp với nhau hay nhắc nhở cho chủ nhân về trạng thái của ngôi nhà Phát triển hơn nữa, hệ thống được huấn luyện qua hoạt động thực tế, qua đó phát triển tính ưu việt so với việc lập trình, cài đặt ban đầu
1.2 Ưu nhược điểm của ngôi nhà thông minh
1.2.1.Ưu điểm
- Điều khiển và kiểm soát được các
thiết bị điện trong nhà trên giao diện
người dùng ở bất kỳ nơi nào tất cả
- Có thể lập trình cho các thiết bị
hoạt động theo lịch: lúc nào thì nên bật
đèn, bật điều hòa và tăng giảm nhiệt độ
khi nào …
- Điều khiển việc kiểm soát các thiết
bị điện trong nhà khó khăn hơn, phải đi tới từng thiết bị điện trong nhà để điều khiển chúng Việc điều khiển bị giới hạn bởi không gian
- Các thiết bị ko thể hoạt động theo
lịch đặt trước
Trang 5- Các thiết bị có thể hiểu ngôn ngữ
của nhau và tương tác với nhau: khi
phát hiện người trong phòng tự động
bật/tắt đèn, khi nấu ăn nhiệt độ bếp
tăng lên thì quạt sẽ tự động bật thông
tương tác được với nhau
- Các thiết bị không có khả năng ghi
nhớ tự pháp triển tính năng trong quá trình hoạt động
Giải phóng hoạt động của con người: Với ngôi nhà thông minh, các hoạt động của con người đã được giảm đi đáng kể: Quạt thông gió sẽ tự động mở khi nấu
ăn, đèn sẽ tự động tắt nếu có người đi ra khỏi bếp và còi sẽ hú hay chuông điện thoại sẽ reo nếu có nguy cơ xảy ra hỏa hoạn… Mọi thứ đều đơn giản và dễ dàng Hệ thống kết nối các thiết bị và phối hợp hoạt động một cách hoàn hảo cho từng hoàn cảnh cụ thể
Tăng tiện ích cho cuộc sống: Hệ thống chuông cửa có hình, hệ thống Camera, và tất cả các hệ thống khác giúp con người có thể thuận tiện và dễ dàng quan sát, điều khiển các thiết bị mọi lúc mọi nơi, ngay cả khi đi du lịch Chủ nhân ngôi nhà quản lý không gian của mình với các phím bấm đã được đặt cảnh sẵn, ví
dụ việc đọc sách, điều chỉnh độ sáng trong nhà, tắt các thiết bị điện… chúng ta chỉ cần ngồi tại chỗ và bấm các nút điều khiển
Tạo cảm giác thoải mái, tiện nghi: Với nhà thông minh việc điều khiển các thiết bị điện trở nên dễ dàng và thú vị Chủ nhân ngôi nhà không phải mất công ghi nhớ vị trí các công tắc, hay đi khắp các tầng để bật tắt, điều chỉnh các thiết bị như hệ thống điện thông thường Chỉ một nút bấm có thể đưa các thiết bị điện về một trạng thái
đã đặt trước như: Tiếp khách, nghỉ ngơi, giải trí hay ăn tối…
Tăng tính an toàn, an ninh cho tài sản và cuộc sống: Khi ngôi nhà xảy ra các
sự cố như bị đột nhập hoặc có nguy cơ cháy, giải pháp Nhà thông minh tự động bật đèn, còi hú đồng thời gọi điện cho chủ nhân hay báo cho công an, cứu hỏa nếu chủ nhân ngôi nhà yêu cầu Các phương thức báo động tùy thuộc vào ý tưởng của của
Trang 6việc lập trình Với tính năng an ninh, giải pháp Nhà thông minh sẽ ngăn chặn kẻ đột nhập ngay cả khi chủ nhân đi vắng hay đã ngủ say Các hệ thống thông minh được phối hợp hoạt động như: Camera giám sát, thiết bị hồng ngoại, cảm biến cho kính…
Nâng cao vị thế cho chủ nhân ngôi nhà: Đây cũng là một ưu điểm lớn trong nhà thông minh Việc sở hữu một ngôi nhà với những tính năng ưu việt giúp cho chủ nhân ngôi nhà khẳng định vị thế của mình
Tiết kiệm điện năng và tiền của: Nhờ khả năng kiểm soát được tất cả các thiết bị điện trong nhà, điện năng tiêu thụ sẽ được tiết kiệm rõ rệt Chẳng hạn với mức độ sáng của đèn 50%, 75%, 100% sẽ tiết kiệm được lượng điện năng đáng kể đồng thời kéo dài tuổi thọ của bóng Ngoài ra với hệ thống an ninh, an toàn thì các
sự cố cháy nổ hay trộm cắp đều được ngăn chặn đảm bảo an toàn cho tài sản gia đình cũng như xã hội
Dễ dàng lắp đặt và sử dụng: Với giải pháp lắp đặt hệ thống điện thông minh,
có thể mở rộng, cải tạo các chức năng trong ngôi nhà mà không sợ ảnh hưởng đến việc bố trí nội thất, có thể tiết kiệm tối đa 30% lượng dây dẫn, giảm tối đa việc đục tường đi dây.Với nhiều công nghệ hiện nay việc gắn thêm các thiết bị điện thông minh đến các thiết bị điện trong gia đình không có gì dễ dàng hơn chỉ với việc cắm phích điện Việc sử dụng các thiết bị điều khiển cũng như các Panel gắn tường, hay điều khiển từ xa cũng thật dễ dàng như chơi Game
1.2.2 Nhược điểm
Phụ thuộc vào sự hiểu biết của người dùng: Với việc sử dụng các hệ thống công nghệ cao đòi hỏi chủ nhân ngôi nhà phải thuần thục cách sử dụng Đôi khi vì thiếu hiểu biết hay sử dụng sai mục đích hệ thống tạo sự rắc rối cho người dùng Ngày nay các nhà tích hợp hệ thống cũng như công nghệ thiết kế ngày càng gần cuộc sống hơn do vậy cũng ít trường hợp như trên xảy ra
Chưa thống nhất một quy chuẩn trên thị trường: Ngày càng có nhiều công nghệ do các nhà cung cấp đưa ra Mỗi công nghệ đưa ra các chuẩn khác nhau, vì vậy để ứng dụng rộng rãi và hiệu quả thì việc các công ty gia nhập các hiệp hội tiêu chuẩn chung là rất cần thiết
Trang 71.3 Nhiệm vụ đồ án
Hiện nay trên thế giới cũng như tại Việt Nam, xu hướng nhà thông minh đang dần trở thành một lĩnh vực hấp dẫn, được nhiều hãng lớn trên thế giới cũng như tại Việt Nam sản xuất: Các thương hiệu đến từ nước ngoài như hãng Schneider của Pháp, Smartg4 của Mỹ, Gamma của Gamma JSC, Arteor của hãng Legrand (Pháp), My Home của hãng Bticino (Ý), WattStopper (Mỹ), Mhouse, Home access, Came với đại lý chính thức là NTMC, Hager (Pháp), Crestron (Mỹ)
Còn ở Việt Nam gồm các hãng như: Nhà thông minh BKAV là sản phẩm của tập đoàn công nghệ BKAV,LUMI,ACIS
Tuy nhiên trở ngại rất lớn để người Việt có thể sở hữu ngôi nhà thông minh đến từ các hãng nước ngoài cũng như trong nước đó chính là chi phí Ước tính chi phí dành cho một ngôi nhà thông minh đến từ nước ngoài có giá thấp nhất là 25000 USD ~ hơn 500 triệu đồng, còn đối với các hãng ở Việt Nam thì khoảng 20 – 30 triệu đồng cho một dự án nhà riêng và tầm 100 triệu cho biệt thự Ngoài ra có một trở ngại không nhỏ đó là các nhà thông minh này thường được áp dụng cho các biệt thự lớn, các tòa nhà cao cấp chưa thực sự phù hợp với hệ thống hạ tầng và xây dựng bình dân tại Việt Nam chúng ta hiện nay
Xuất phát từ những bất cập, hạn chế đó em muốn xây dựng một mô hình ngôi nhà thông minh nhằm khắc phục các nhược điểm mà các hãng nhà thông minh có trên thị trường hiện nay đang gặp phải qua các ưu điểm như:
• Chỉ tiêu kinh tế phù hợp: Mô hình em xây dựng được ghép nối từ các Module điều khiển, cảm biến rất thông dụng và giá thành rẽ có trên thị trường, dễ thay thế và sửa đối theo nhu cầu của chủ nhà Trong thực tế nếu mô hình ngôi nhà thông minh này được áp dụng thì chỉ mất khoảng 6 đến 9 triệu đồng là có thế sở hữu được một ngôi nhà thông minh theo ý riêng của mình
• Phù hợp với cơ sở hạ tầng: Mô hình này rất dễ áp dụng cho các căn nhà bình dân như chúng ta hiện nay với nhu cầu đòi hỏi của người dùng không cao và các thiết bị điện được điều khiển rất cơ bản, đơn giản như bóng đèn, điều hòa, bình nóng lạnh, ti vi, máy giặt chứ không chỉ nhằm để phục vụ cho các tòa nhà biệt thự sang trọng, các tòa nhà cao cấp với các thiết bị hiện đại, đắt tiền
Trang 8Với thời gian có hạn của đồ án cũng như chỉ tiêu kinh tế không cho phép, mô hình em xây dựng trong bản đồ án này chỉ nhằm để khắc phục các nhược điểm nêu
ở trên và đáp ứng đủ các chỉ tiêu cơ bản của một ngôi nhà thông minh Cụ thế qua
2 nhiệm vụ chính sau đây:
- Các thiết bị điện cơ bản trong nhà được điều khiển ở 3 chế độ:
➢ Điều khiển từ xa qua blueooth và internet
➢ Điều khiển tự động (đèn sẽ sáng khi có người trong phòng,điều hòa sẽ tự động bật khi có người và nhiệt độ vượt đến giá trị đặt, quạt hút mùi sẽ được bật khi nấu ăn )
➢ Điều khiển bằng tay qua công tắc điện (phòng khi điều khiến từ xa qua bluetooth và internet bị sự cố)
- Xây dựng hệ thống an ninh, cảnh báo bằng còi, nhắn tin, gọi điện cho chủ nhà khi có người đột nhập vào nhà hay khi ngôi nhà dễ xảy ra hỏa hoạn
Trang 9CHƯƠNG 2 GIỚI THIỆU BOARD ĐIỀU KHIỂN VÀ CÁC MODULE
GIAO TIẾP CẢM BIỂN DÙNG TRONG MÔ HÌNH
2.1 Tổng quan về board điều khiển Arduino
2.1.1 Khái quát chung
mở và có thể kết hợp với nhiều module khác nhau.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
Trang 10Arduino Uno được xây dựng với vi điều khiển ATmega328P thuộc họ vi điều khiển AVR sử dụng thạch anh có chu kì dao động là 16 MHz Với vi điều khiển này, ta có tổng cộng 14 pin (ngõ) ra / vào được đánh số từ 0 tới 13 (trong đó có 6 pin PWM, được đánh dấu ~ trước mã số của pin) Song song đó, ta có thêm 6 pin nhận tín hiệu analog được đánh kí hiệu từ A0 - A5, 6 pin này cũng có thể sử dụng được như các pin ra / vào bình thường (như pin 0 - 13) Ở các pin được đề cập, pin
13 là pin đặc biệt vì nối trực tiếp với LED trạng thái trên board
➢ Cấu trúc phần cứng Arduino UNO R3
Hình 2.1: Hình dáng thực tế của Arduino UNO
a) USB (1)
Arduino sử dụng cáp USB để giao tiếp với máy tính Thông qua cáp USB chúng có thể Upload chương trình cho Arduino hoạt động, ngoài ra USB còn là nguồn cho Arduino
b) 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 ngoài thông qua jack cắm 2.1mm ( cực dương ở giữa ) hoặc có thể sử dụng 2 châ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 – 20 volt 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 12 volt 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
Trang 11Chân 5V và chân 3.3V (Output voltage): 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
c) Chip Atmega328p
Chip Atmega328p là bộ não trung tâm của bo mạch thuộc họ vi điều khiển AVR có 32K bộ nhớ flash trong đó 0.5k sử dụng cho bootloader Ngoài ra c̣òn có 2K SRAM, 1K EEPROM
d) Input và Output ( 4, 5 và 6)
- Arduino Uno 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 em sẽ đề
cập chúng ở các phần sau Cũng trên 14 chân digital này chúng ta có 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) theo giao tiếp UART 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 không đồng bộ
- PWM (pulse width modulation): 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ơ,
e) Reset (7): dùng để reset Arduino
Bảng 1: Một số thông số cơ bản của Arduino UNO
Trang 12Điện áp vào giới hạn 6-20V
Dòng tối đa trên mỗi chân I/O 30mA
Trang 13- Arduino Pro Mini
Board Arduino Pro Mini 5V 16MHz mặc định sử dụng nguồn 5V và IC ATmega328 chạy ở xung nhịp 16MHZ Vì sử dụng chung dòng chip ATmega328 nên việc lập trình và thiết kế ứng dụng hoàn toàn tương tự board Arduino Uno R3 Ngoài ra có 1 sự khác biệt nhỏ là board Arduino Pro Mini có tới 8 cổng analog (thay vì 6 như trên Arduino Uno R3) Trong đó 2 ngõ analog A6, A7 không thể xuất tín hiệu digital! Arduino Pro Mini không có sẵn giao tiếp USB Điều này có nghĩa
là bạn không thể cắm trực tiếp board Arduino Pro Mini vào máy tính như Arduino Mega 2560, Arduino Uno R3, Arduino Nano Nếu bạn cần 1 board arduino kích thước nhỏ, có sẵn cổng USB để kết nối với máy tính thì Arduino Nano là sự lựa chọn thích hợp hơn là Arduino Pro Mini Tuy nhiên bạn có thể dễ dàng sử dụng board Arduino Uno R3 sẵn có của mình để lập trình cho Arduino Pro Mini
Hình 2.3: Hình dáng thực tế của Arduino Pro Mini
- Arduino NANO
Hình 2.4: Hình dáng thực tế của Arduino NANO
Trang 14Khi tiếp xúc với Arduino Nano, đó là sự tiện dụng, đơn giản, có thể lập trình trực tiếp bằng máy tính (như UNO R3) và đặc biệt hơn cả đó là kích thước của Arduino Nano cực kì nhỏ, rất thích hợp cho các newbie, vì giá rẻ hơn Arduino Uno nhưng dùng được tất cả các thư viện của mạch này
- Arduino Atemega 2560
Hình 2.5: Hình dáng thực tế của Arduino Atemega 2560
Thành phần của Arduino Mega 2560
Hình 2.6: Sơ đồ chân của Arduino Atemega 2560
Arduino Mega2560 cơ bản vẫn giống Arduino Uno R3, chỉ khác số lượng chân và nhiều tính năng mạnh mẽ hơn với:
- 54 chân digital (15 có thể được sử dụng như các chân PWM)
- Chip điều khiển: ATmega 2560
Trang 15- 16 đầu vào analog
- 4 UARTs (cổng nối tiếp phần cứng)
Hình 2.7: Cấu trúc phần cứng của Arduino mega 2560
- Chúng ta vẫn có thể lập trình cho board này bằng chương trình lập trình cho Arduino Uno R3
2.1.2 Sử dụng phần mềm Arduino IDE để lập trình cho Arduino
Cài đặt phần mềm Arduino IDE
Chúng ta truy cập vào trang web http://arduino.cc/en/Main/Software và tải về chương trình Arduino IDE phù hợp với hệ điều hành của máy tính bao gồm Windown, Mac OS 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:
Trang 16Hình 2.8: Giao diện phần mềm Arduino IDE 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 chúng ta sẽ thấy đèn led power của bo sáng
Hình 2.9: kết nối giữa máy tính và Arduino UNO
Trang 17Máy tính sẽ nhận dạng thiết bị và chúng ta sẽ nhận được thông báo:
“Device driver software was not successfully installed”
Hình 2.10: Driver Software Installation
Bây giờ bạn click vào Start Menu chọn Control Panel kế đến chúng ta chọn Systeand Security, click System và sau đó chọn Device Manager
Hình 2.11: De vice Manager
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 Arduino Uno icon sau đó chọn “Update Driver Software”
Trang 18Hình 2.12: Right click và chọn ”Update Driver Software”
Chọn “Browse my computer for driver software”
Hình 2.13: Click chọn “Browse my computer for driver software”
Chọn đường dẫn tới folder “driver” nơi mà phần mềm Arduino được lưu trữ
Hình 2.14: Driver
Click “Next” Windown tự động cài đặt driver, qua trình cài đặt driver hoàn tất
Trang 19Chú ý: Nếu board Arduino của chúng ta sử dụng IC CH340 để nạp chương trình cho Arduino thì cách cài đặt Driver theo cách trên sẽ không được mà phải tải file cài đặt Driver CH340 về máy tính sau đó cài đặt Nếu cài đặt thành công thì máy tính sẽ tự nhận board Arduino mà không phải làm theo hướng dẫn ở trên
Giới thiệu sơ lược về phần mềm Arduino IDE
Arduino IDE là nơi để soạn thảo code, kiểm tra lỗi và upload code cho arduino
Hình 2.15: Arduino IDE
a) Arduino Toolbar: có một số button và chức năng chính như sau:
✓ Verify: kiểm tra code có lỗi hay không và biên dịch sang file HEX
✓ Upload: nạp code đang soạn thảo vào Arduino
✓ New, Open, Save: Tạo mới, mở và Save sketch
Trang 20✓ Serial Monitor: Đây là màn hình hiển thị dữ liệu từ Arduino gửi lên máy tính
Trang 21Hình 2.18: Click Examples
✓ Edit menu:
Hình 2.19: Edit menu
Trang 22✓ Sketch menu:
Hình 2.20: Sketch menu
Trong Sketch menu:
✓ Verify/ Compile: chức năng kiểm tra lỗi code
✓ Show Sketch Folder: hiển thị nơi code được lưu
✓ Add File: thêm vào một Tap code mới
✓ Import Library: thêm thư viện cho IDE
Tool memu:
Hình 2.21: Tool menu
Trong Tool menu ta quan tâm các mục Board và Serial Port
Mục Board: các bạn cần phải lựa chọn bo mạch cho phù hợp với loại bo mà bạn sử dụng nếu là Arduino Uno thì phải chọn như hình:
Trang 23Hình 2.22: Chọn Board
Nếu 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
Serial Port: đây là nơi lựa chọn cổng Com của Arduino 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ủa Arduino là bao nhiêu, ta chỉ việc vào Serial Port 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.1.3 Ngôn ngữ lập trình và các tập lệnh cơ bản
Ngôi ngữ lập trình cho Arduino dựa theo ngôi ngữ C
Các thành phần cơ bản trong ngôi ngữ C
Khái niệm tên rất quan trọng trong quá trình lập trình, nó không những thể hiện rõ
ý nghĩa trong chương tŕnh mà còn dùng để xác định các đại lượng khác nhau khi
Trang 24thực hiện chương trình Tên thường được đặt cho hằng, biến, mảng, con trỏ, nhãn… Chiều dài tối đa của tên là 32 kư tự Tên biến hợp lệ là một chuỗi ký tự liên tục
gồm: Ký tự chữ, số và dấu gạch dưới Kư tự đầu của tên phải là chữ hoặc dấu gạch dưới Khi đặt tên không được đặt trùng với các từ khóa
➢ Kiểu dữ liệu
Có 4 kiểu dữ liệu cơ bản trong C là:
Char: có miền giá trị từ -128 đến 127
Int: có miền giá trị từ -32768 đến 32767
Float: có miền giá trị từ 3.4*10-38 đến 3.4*1038
Double: có miền giá trị từ 1.7*10-308 đến 1.7*10308
Cấu trúc rẽ nhánh có điều kiện
Nếu biểu thức luận lý thì thực hiện khối lệnh và thoát khỏi if,ngược lại không làm
gì cả và thoát khỏi if
Trang 25Nếu khối lệnh 1, khối lệnh 2 bao gồm từ 2
lệnh trở lên thì phải đặt trong dấu { }
Ngược lại nếu biểu thức luận lư n-1 đúng thì thực hiện khối lệnh n-1 và thoát khỏi cấu trúc if Ngược lại thì thực hiện khối lệnh n
Cấu trúc vòng lặp
3) Lệnh FOR
Vòng lặp xác định thực hiện lặp lại một số lần xác định của một (chuỗi hành động)
Trang 26+ Biểu thức 1: khởi tạo giá trị ban đầu cho biến điều khiển
+ Biểu thức 2: là quan hệ logic thể hiện điều kiện tiếp tục vòng lặp
+ Biểu thức 3: phép gán dùng thay đổi giá trị biến điều khiển
➢ Nhận xét
+ Biểu thức 1 bao giờ cũng chỉ được tính toán một lần khi gọi thực hiện for
+ Biểu thức 2, 3 và thân for có thể thực hiện lặp lại nhiều lần
➢ Lưu ý
+ Biểu thức 1, 2, 3 phải phân cách bằng dấu chấm phẩy (;)
+ Nếu biểu thức 2 không có, vòng for được xem là luôn luôn đúng Muốn thoát khỏi vòng lặp for phải dùng một trong 3 lệnh break, goto hoặc return
+ Với mỗi biểu thức có thể viết thành một dăy biểu thức con phân cách nhau bởi dấu phẩy Khi đó các biểu thức con được xác định từ trái sang phải Tính đúng saicủa dãy biểu thức con trong biểu thức thứ 2 được xác định bởi biểu thức con cuối cùng
+ Trong thân for (khối lệnh) có thể chứa một hoặc nhiều cấu trúc điều khiển khác + Khi gặp lệnh break, cấu trúc lặp sâu nhất sẽ thoát ra
+ Trong thân for có thể dùng lệnh goto để thoát khỏi vòng lặp đến vị trí mong muốn
+ Trong thân for có thể sử dụng return để trở về một hàm nào đó
+ Trong thân for có thể sử dụng lệnh continue để chuyển đến đầu vòng lặp (bỏ qua các câu lệnh còn lại trong thân)
4) Lệnh break
Thông thường lệnh break dùng để thoát khỏi vòng lặp không xác định điều kiện dừng hoặc bạn muốn dừng vòng lặp theo điều kiện do bạn chỉ định Việc dùng
Trang 27lệnh break để thoát khỏi vòng lặp thường sử dụng phối hợp với lệnh if Lệnh break dùng trong for, while, do…while,switch Lệnh break thoát khỏi vòng lặp chứa nó 5) Lệnh continue
Được dùng trong vòng lặp for, while, do…while Khi lệnh continue thi hành quyền điều khiển sẽ trao qua cho biểu thức điều kiện của vòng lặp gần nhất Nghĩa
là lộn ngược lên đầu vòng lặp, tất cả những lệnh đi sau trong vòng lặp chứa continue sẽ bị bỏ qua không thi hành
1 Hàm thời gian delay()
Hàm thời gian delay có nhiệm vụ dừng chương tŕnh trong thời gian mili giây
Và cữ mỗi 1000 mili giây = 1 giây
Cú pháp về hàm thời gian delay :delay(ms)
➢ Thông số
ms: thời gian ở mức mili giây ms có kiểu dữ liệu là unsigned long
Trang 28➢ Ví dụ về hàm thời gian delay
Điều khiển đèn LED sáng nhấp nháy theo yêu cầu bằng arduino uno R3
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH); // turn the LED on
delay(1000); // led sáng trong v ̣ng 1 giây
digitalWrite(13, LOW); // turn the LED off
delay(1000); // led tắt trong v ̣ng 1 giây
}
2 Hàm thời gian micros()
Hàm micros() có nhiệm vụ trả về một số - là thời gian (tính theo micro giây) kể
từ lúc mạch Arduino bắt đầu chương trình của bạn Nó sẽ tràn số và quay số 0 (sau
đó tiếp tục tăng) sau 70 phút Tuy nhiên, trên mạch Arduino 16MHz (ví dụ Duemilanove và Nano) thì giá trị của hàm này tương đương 4 đơn vị micro giây.Ví
dụ micros() trả về giá trị là 10 thì có nghĩa chương trình của bạn đã chạy được 40 microgiây Tương tự, trên mạch 8Mhz (ví dụ LilyPad), hàm này có giá trị tương đương 8 micro giây
➢ Trả về
Một số nguyên kiểu unsigned long là thời gian kể từ lúc được khởi động
➢ Ví dụ về hàm thời gian micros()
unsigned long time;
Trang 29delay(1000);
}
3 Hàm thời gian milis()
Hàm millis() có nhiệm vụ trả về một số - là thời gian (tính theo mili giây) kể từ
lúc mạch Arduino bắt đầu chương trình của bạn Nó sẽ tràn số và quay số 0 (sau đó
tiếp tục tăng) sau 50 ngày
✓ Trả về
Một số nguyên kiểu unsigned long là thời gian kể từ lúc chương trình Arduino được
khởi động
✓ Ví dụ về hàm thời gian millis()
unsigned long time;
4 Hàm xuất giá trị tương tự analogWrite()
Nhiệm vụ của hàm analogWrite(): 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
Bạn không cần gọi hàm pinMode() để đặt chế độ OUTPUT cho chân sẽ dùng để
phát xung PWM trên mạch Arduino
Cú pháp hàm analogWrite():
analogWrite([chân phát xung PWM], [giá trị xung PWM]);
Trang 30Giá trị mức xung PWM nằm trong khoảng từ 0 đến 255, tương ứng với mức từ 0% đến 100%
5 Hàm đọc giá trị tương tự analogRead()
Nhiệm vụ của hàm analogRead(): Là đọc giá trị điện áp từ một chân Analog Trên mạch Arduino UNO có 6 chân Analog In, được kí hiệu từ A0 đến A5 Trên các mạch khác cũng có những chân tương tự như vậy với tên chữ "A" đứng đầu, sau
đó là số hiệu của chân.analogRead() luôn trả về 1 số nguyên nằm trong khoảng từ 0 đến 1023 tương ứng với thang điện áp (mặc định) từ 0 đến 5V Bạn có thể điều chỉnh thang điện áp này bằng hàm analogReference()
Hàm analogRead() cần 100 micro giây để thực hiện
✓ Cú pháp hàm analogRead():
analogRead(chân đọc điện áp);
Ví dụ hàm analogRead():
int voltage = analogRead(A0);
Trong đó A0 là chân dùng để đọc giá trị điện áp.Nếu bạn chưa kết nối chân đọc điện áp, hàm analogRead() sẽ trả về một giá trị ngẫu nhiên trong khoảng từ 0 đến 1023 Để khắc phục điều này, bạn phải mắc thêm một điện trở có trị số lớn (khoảng 10k ohm trở lên) hoặc một tụ điện 104 từ chân đọc điện áp xuống GND
Trang 31Ví dụ này sẽ làm cho đèn led tại pin 13 nhận giá trị như giá trị tại pin 2
int ledPin = 13; // chân led 13
int inPin = 2; // button tại chân 2
int val = 0; // biến "val" dùng để lưu tín hiệu từ digitalRead
void setup()
{
pinMode(ledPin, OUTPUT); // đặt pin digital 13 là output
pinMode(inPin, INPUT); // đặt pin digital 2 là input
}
void loop()
{
val = digitalRead(inPin); // đọc tín hiệu từ digital2
digitalWrite(ledPin, val); // thay đổi giá trị của đèn LED là giá trị của digital 2 }
7 Hàm xuất tìn hiệu digitalWrite()
Hàm có nhiệm vụ xuất tín hiệu ra các chân digital, có 2 giá trị là HIGH hoặc là LOW Nếu một pin được thiết đặt là OUTPUT bởi pinMode() Và bạn dùng digitalWrite để xuất tín hiệu thì điện thế tại chân này sẽ là 5V (hoặc là 3,3 V trên mạch 3,3 V) nếu được xuất tín hiệu là HIGH, và 0V nếu được xuất tín hiệu là LOW Nếu một pin được thiết đặt là INPUT bởi pinMode() Lúc này digitalWrite sẽ bật (HIGH) hoặc tắt (LOW) hệ thống điện trở pullup nội bộ(điện trở treo) Chúng tôi khuyên bạn nên dùng INPUT_PULLUP nếu muốn bật hệ thống điện trở pullup nội
bộ
Trang 32✓ Lệnh digitalWrite() có cú pháp:
digitalWrite(pin,value);
✓ Thông số của lệnh digitalWrite():
pin: Số của chân digital mà bạn muốn thiết đặt
value: HIGH hoặc LOW
digitalWrite(ledPin, HIGH); // bật đèn led
delay(1000); // dừng trong 1 giây
digitalWrite(ledPin, LOW); // tắt đèn led
delay(1000); // dừng trong 1 giây
}
8 Hàm PinMode()
Hàm có nhiệm vụ cấu hình một pin (chân) quy định hoạt động như là một đầu vào (INPUT) hoặc đầu ra (OUTPUT) Như trong phiên bản Arduino IDE nó có thể kích hoạt các điện trở pullup nội bộ với chế độ INPUT_PULLUP
✓ Câu lệnh có cú pháp: pinMode ( pin, mode)
✓ Thông số lệnh: pinMode()
pin : Số của chân digital mà bạn muốn thiết đặt
mode : có thể là INPUT, OUTPUT hoặc INPUT_PULLUP
Trang 33}
void loop()
{
digitalWrite(ledPin, HIGH); // bật đèn led
delay(5000); // dừng trong 5 giây
digitalWrite(ledPin, LOW); // tắt đèn led
delay(5000); // dừng trong 5 giây
}
9 Hàm SETUP()
Hàm Setup() là hàm dùng để khới tạo,định nghĩa các biến vào ra các thư viên hỗ trợ,thiết lập các thông số.Những lệnh trong hàm Setup() chỉ chạy một lần duy nhất khi board được cấp nguồn
10 Hàm Loop()
Sau khi setup() chạy xong, những lệnh trong loop() sẽ đượ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ới thô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ạng thái như khi Arduino mới được cấp nguồn
✓ Ví dụ: code bật sáng led ở chân số 10 trên board Arduino sử dụng phần mềm Arduino IDE
int led = 10;// chân số 10 trên board được gán cho biến có tên là LED với kiểu dữ liệu int
void setup() { // hàm khởi tạo
pinMode(led, OUTPUT); // thiết lập chân số 10 là chân đầu ra
}
void loop() { // hàm chính
digitalWrite(led, HIGH) } // câu lệnh trong hàm chính
✓ Giải thích:
Khi bạn cấp nguồn cho Arduino, lệnh “pinMode(led, OUTPUT);” sẽ được
chạy 1 lần để khai báo
Sau khi chạy xong lệnh ở setup(), lệnh ở loop() sẽ được chạy và được lặp đi lặp lại liên tục
Trang 34Sơ lược về giao tiếp UART
Giao tiếp UART là một giao tiếp nối tiếp không đồng bộ có thể truyền song công(có thể truyền và nhận dữ liệu cùng một lúc) Phần cứng chỉ có 2 chân để truyền nhận dữ liệu:
+ Chân TX dùng để truyền dữ liệu
+ Chân RX dùng để nhận dữ liệu
Vì giao tiếp không đồng bộ nên không có chân phát xung clock,như thế để
có thể truyền nhận dữ liệu được thì phải có quy định về tốc độ đó chính là tốc độ baud
Theo định nghĩa tốc độ baud là số bit truyền trong một giây Ví dụ nếu tốc độ baud là 19200 thì thời dành cho 1 bit truyền là 1/19200 = 52,083 us Có các tốc độ baud điển hình như sau: 9600,19200,38400,115200,250000
2.2 Module buletooth HC05
2.2.1 Cấu trúc phần cứng và cách kết nối
Hình 2.23: Cấu hình phần cứng của module HC05
Trang 35➢ Module bluetotooth HC05 là module dùng để thu hoặc phát sóng
bluetooth
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 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
- 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
✓ Ở chế độ MASTER(thiết bị chủ): 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
➢ Cách kết nối cho module hoạt động:
Trang 36- 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 với các module khác hoạt động ở mức logic 3.3V
- STATE chúng ta không cần quan tâm đến chân này
2.2.2 Các tập lệnh AT thông dụng
- 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:
- 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