ự ệ ố

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