ự ệ ố
Báo cáo th c hành ậ l p trình h th ng
ĐỀ TÀI: NGÔI NHÀ THÔNG MINH
Giáo viên hướng dẫn: Huỳnh Hữu Hưng
Sinh viên thực hành: Hồ Hải Nghĩa – 13T3
Sinh viên thực hành: Trần Văn Thanh - 13T3
ụ
ự
M c đích bài th c hành
1. hiểu về bảng mạch arduino
2. Cách sử dụng các linh kiện liên quan
3. Biết nối dây và đẩy code vào arduino
4. Hoàn thành sản phẩm demo
5. Ứng dụng (công nghệ vào đời sống: nhà thông minh)
ề
ể
ọ
Vi đi u khi n
ATmega32u4 (h 8bit)
ớ
ệ ề ả
ạ
Gi
i thi u v b ng m ch arduino
ạ ộ
ầ
ố
T n s ho t đ ng
16 MHz
Dòng tiêu thụ ở các chân I/O
40mA
Điện áp vào khuyên dùng
7-12V – DC
Điện áp vào giới hạn
6-20V – DC
Điện áp hoạt động
5V – DC
Số chân Digital I/O
14 (7 chân PWM)
Số chân Analog
12 (các chân PWM có thể dùng như chân Analog bình thường - nghĩa là có thể dùng Analog read) (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O
40 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 (ATmega32u4) với 4KB dùng bởi bootloader
SRAM
2.5 KB (ATmega32u4)
EEPROM
1 KB (ATmega32u4)
Kích thước
68.6mm x 53.3mm
Ứ
ụ
ủ
ế ế
ng d ng c a arduino trong thi
t k nhà
thông minh
1. Hệ thống cảm biến: cảm biến anh sáng và cảm biến nhiệt độ
2. Các thiết bị hiển thị: đèn LED
3. Các module chức năng (shield) hỗ trợ kêt nối có dây với các thiết bị khác hoặc các kết nối không
4. Và một số ứng dụng khác
dây thông dụng (3G, GPRS, Wifi, Bluetooth, 315/433Mhz, 2.4Ghz,…), …
ả
ế ị t b B ng thi ệ ầ (các linh ki n c n dùng)
Cảm biến ánh sáng Bảng mạch arduino Cảm biến nhiệt độ LM35 Module Bluetooth HC06
Đèn LED Motor Module role Dây nối điện
ạ
ở
ệ ế ố K t n i các linh ki n và module code ắ (l p m ch quang tr và bóng đèn)
ể ề
ạ
ỉ
ở ế Trên m ch có 1 bi n tr 10K ohm dùng đ đi u ch nh đ nh y sáng:
ạ ộ • Thay đổi điện trở theo ánh sáng
ặ
ề
ừ ướ d ế
i lên ớ
• HIGHT: bật ỉ ầ ượ
ạ
ướ ng t (nhìn theo h V n v bên trái quang trở): tăng đ nh y c a c m bi n v i ánh ả ủ ạ ộ ẽ ự ỏ ng ánh sáng nh thì m ch s t sáng: ch c n l ng t.ắ
• LOW: tắt
ề
ủ
ộ
ặ ớ ạ
ả : gi m đ nh y c a c m bi n ả ả ế ạ ộ ớ ườ ầ ượ ng đ ng ánh sáng v i c ạ
V n v bên ph i v i ánh sáng, c n l ắ ể m nh h n đ ng t m ch.
ơ • Có thể điều chỉnh độ nhạy
Cảm biến ánh sáng
ở
ạ
ệ ế ố K t n i các linh ki n và module code ắ (l p m ch quang tr và bóng đèn)
• Tín hiệu xuất ra là giá trị Digital
Sử dụng cảm biến kết hợp với arduino để lập trình bật tắt.
• Tại chân OUT trả về hai mức là HIGHT
HIGHT (5V) và LOW
và LOW
Lắp mạch như hình trên
ở
ạ
ệ ế ố K t n i các linh ki n và module code ắ (l p m ch quang tr và bóng đèn)
Lắp mạch như hình trên int cambien = 10;// khai báo chân digital 10 cho cảm biến int Led = 8;//kháo báo chân digital 8 cho đèn LED void setup (){ pinMode(Led,OUTPUT);//pinMode xuất tín hiệu đầu ra cho led pinMode(cambien,INPUT);//pinMode nhận tín hiệu đầu vào cho cảm biê} void loop (){ int value = digitalRead(cambien);//lưu giá trị cảm biến vào biến value digitalWrite(Led,value);//xuất giá trị ra đèn LED }
ế ố
ệ K t n i các linh ki n và module code
ắ ả
ế
ệ
(l p c m bi n nhi
t và motor)
• Cảm biến nhiệt độ LM35 sử dụng trong ứng dụng đo nhiệt
• Nhiệt độ được xác định bằng các đo hiệu điện thế ngõ ra
độ thời gian thực.
của LM35
• Đơn vị nhiệt độ: °C • Nhiệt độ thay đổi tuyến tính: 10mmV/°C • Độ chính xác thực tế: 1/4°C ớ
ệ ộ ở nhi t đ phòng và 3/4°C ngoài
ả i 150°C
• LM35 có hi u năng cao, công su t tiêu th là 60uA
kho ng 2°C t ệ ụ ấ
ế ố
ệ K t n i các linh ki n và module code
ắ ả
ế
ệ
(l p c m bi n nhi
t và motor)
int sensorPin = A0;//chân analog kết nối tới cảm biến LM35
void setup() { Serial.begin(9600); //Khởi động Serial ở mức baudrate 9600 //không cần phải pinMode cho các chân analog trước khi dùng nó } void loop() { //đọc giá trị từ cảm biến LM35 int reading=analogRead(sensorPin);
ế ố
ệ K t n i các linh ki n và module code
ắ ả
ế
ệ
(l p c m bi n nhi
t và motor)
//tính ra giá trị hiệu điện thế (đơn vị Volt) từ giá trị cảm biến float voltage = reading * 5.0 / 1024.0; // ở trên mình đã giới thiệu, cứ mỗi 10mV = 1 độ C. // Vì vậy nếu biến voltage là biến lưu hiệu điện thế (đơn vị Volt) // thì ta chỉ việc nhân voltage cho 100 là ra được nhiệt độ! float temp = voltage * 100.0; Serial.println(temp); delay(1000);//đợi 1 giây cho lần đọc tiếp theo }
ế ố
ế ố ớ
ệ K t n i các linh ki n và module code (k t n i v i bluetooth)
Điều khiển arduino thông qua thiết bị bluetooth bằng điện thoại android • Ứng dụng để điều khiển các thiết bị điện trong nhà như bật
tắt đèn, quạt.... từ xa. Hoặc tự làm một chiếc ô tô điều khiển từ xa
ồ ế ố ầ ố ớ ố
ớ ạ ử
• Module này g m 4 chân GND, VCC, TX, RX • Khi k t n i c n n i chân TX v i chân 0 và chân RX n i v i ể ậ chân 1 trên Arduino sau đó b n có th l p trình g i và nh n d li u nh 1 c ng Serial thông th ạ
ữ ệ ư ậ ổ ng.
• Module này có 3 lo i Master, Slave và lo i ch y đ
ườ ạ ượ ạ ả c c 2
ế ộ ch đ Master và Slave
ế ố
ế ố ớ
ệ K t n i các linh ki n và module code (k t n i v i bluetooth)
Điều khiển arduino thông qua thiết bị bluetooth bằng điện thoại android
ử ụ
ệ
ạ
ầ
ề Ø s d ng ph n m m trên đi n tho i Android: DroiDuino
ệ
ặ
ẩ
ậ
ạ
Ø khi k t n i v i đi n tho i m t kh u m c
ị
ế ố ớ đ nh là: 1234
ế ố
ế ố ớ
ệ K t n i các linh ki n và module code (k t n i v i bluetooth)
ố
ặ
ề
ể
ế ố
ộ t c đ 9600
ượ
ậ
ọ
ị
c
bluetooth
char state; // Khai báo bi nế void setup() { ạ /* Cài đ t các chân b n mu n đi u khi n thành thành Ouput chân 0, 1, 2*/ pinMode(0, OUTPUT); pinMode(1, OUTPUT); pinMode(2, OUTPUT); Serial.begin(9600); // K t n i bluetooth module ở ố } void loop() { if(Serial.available() > 0){ state = Serial.read(); // Đ c giá tr nh n đ ừ t } else state = 0;
ơ ồ ế ố ớ S đ k t n i arduino v i module bluetooth
ế ố
ế ố ớ
ệ K t n i các linh ki n và module code (k t n i v i bluetooth)
ể
ề
ọ
ế
ễ //tr 1000
ọ
ắ
ả
ọ
tề ắ
Serial.println(state); // đi u khi n các chân 0,1,2 if (state == '1') //n u ch n 1 thì đèn sáng { digitalWrite(Led, HIGH); delay(1000); } else if (state == '2') //ch n 2 công t c motor quay { digitalWrite(fan, HIGH); } else if (state == '0') //ch n không c đèn và motor đ t { digitalWrite(fan, LOW); digitalWrite(Led, LOW); }
ơ ồ ế ố ớ S đ k t n i arduino v i module bluetooth
ế ố
ệ K t n i các linh ki n và module code
ế ả
ể ư ữ ệ ộ t đ
ế ỉ
ủ int cambien = 10; // khai báo chân digital 10 cho c m bi n float temperature = 0; //bi n đ l u tr nhi ề int fan = 9; //digital đi u ch nh motor int Led = 8; //kháo báo chân digital 8 cho đèn LED ạ char state = 0; // tr ng thái c a bluetooth
void setup (){
ệ ấ ầ
pinMode(Led,OUTPUT); /*pinMode xu t tín hi u đ u ra cho led*/
ậ ệ ầ
pinMode(cambien,INPUT); /*pinMode nh n tín hi u đ u ả vào cho c m biên*/ pinMode(fan,OUTPUT); //configuracion del pin 9 Serial.begin(9600); /*Ket noi bluetooth module o toc do goc 9600.*/ }
ế ố
ệ K t n i các linh ki n và module code
ị ả ư ế
void loop (){ int value = digitalRead(cambien); //* l u giá tr c m bi n vào value*/
ấ ị digitalWrite(Led,value); //xu t giá tr ra đèn LED
float temperature = ((5.0*analogRead(A0)*100.0)/1024.0); Serial.println (temperature); // in ra nhi t đệ ộ
ế
if (temperature < 37) /* motor không quay n u < 37oc */ { digitalWrite(fan, LOW); }else { digitalWrite(fan,HIGH); } //
ế ố
ệ K t n i các linh ki n và module code
ọ
if(Serial.available() > 0) { state = Serial.read(); // đ c các byte bluetooth }
ọ ế
ế ọ
ả ọ
ề ắ
if (state == '1') { digitalWrite(Led, HIGH); //n u ch n 1 thì đèn sáng delay(1000); } else if (state == '2') { digitalWrite(fan, HIGH); //n u ch n 2 thì motor quay ả ế } else if (state == '0') { /*n u ch n không thì c đèn c mottor đ u t t*/ digitalWrite(fan, LOW); digitalWrite(Led, LOW); } }
ẩ
ả Demo s n ph m
Smarthome
ế ớ
Ø nhà thông mình là xu th m i trong ạ
ế
ệ
ki n trúc hi n đ i.
ộ
Ø đ ng hóa các thi
ế
ệ ế ị ệ ử , đi n t b đi n t ơ đèn chi u sáng, mô t
ạ
ớ ệ i h
ả
i trí nghe nhìn, an ninh, an
ừ ụ gia d ng, t ử rèm c a, máy l nh, cho t ố th ng gi toàn ...
ắ
Ø k t n i khi v ng nhà (thông qua
ế ố internet)
ỉ ớ ể ấ ả ệ Ch V i 1 thao tác có th đi u khi n t t c các thi t
ị ể ề ạ ộ b ho t đ ng

