Dùng điều khiển Tivi kết hợp với arduino để khiến thiết bị trong nhà hoạt động

Dùng điều khiển Tivi kết hợp với arduino để khiến thiết bị trong nhà hoạt động

 

Dùng điều khiển Tivi kết hợp với arduino để khiến thiết bị trong nhà hoạt động

I. Linh kiện và giới thiệu mô hình

1 board Arduino Uno

1 test board và nhiều dây cắm test board

Pin 9v,đế pin và jack kết nối pin với Arduino

1 remote TV bất kì hoặc remote có trong bộ KIT Arduino

1 hay nhiều relay 5v

Dựa vào số thiết bị bạn muốn điều khiển tương ứng với số relay

Tùy vào điều kiện mà ta sẽ chọn modul relay lắp sẵn hay relay và linh kiện riêng lẻ

Dưới đây là modul relay làm sẵn

Bên dưới là mạch relay riêng biệt có sử dụng 1 transitor c1815 và relay

1 mắt thu nhận hồng ngoại TSOP1738

Đã có bao giờ ban mơ ước với 1 chiếc remote cầm tay mà bạn có thể bật tắt tất cả các thiết bị như đèn, điều khiển quạt, máy bơm,… trong nhà. Ứng dụng đơn giản này sẽ giúp bạn thỏa mãn được ước muốn. Chỉ với chiếc remote TV cũ, 1 board Arduino và bộ thu nhận hồng ngoại là bạn đã có một thiết bị hữu dụng.

II. Sơ đồ toàn mạch và cách kết nối các linh kiện

Ở đây ta dùng 4 relay

III. Giải thích các linh kiện

Mắt nhận hồng ngoại TSOP1738

Là mắt thu nhận có thể nhận 1 sóng mang ở tần số 38Khz để đưa tín hiệu đã được mã hóa dưới dạng các xung có độ rộng khác nhau vào 1 chân digital được xem như là ngõ vào 1 tín hiệu để có thể đóng hoặc mở các chân digital khác dùng kích relay hoặc sáng led

Relay 5v

Được dùng để đóng ngắt gián tiếp các thiết bị điện xoay chiều 220v trở lên, cơ chế của nó là khi dòng điện đi qua cuộn dây sẽ đóng tiếp điểm thường đóng và mở tiếp điểm thường hở làm cho các thiết bị hoạt động, việc đóng ngắt relay được thực hiện không phải trực tiếp qua mức áp từ ngõ ra số của Arduino mà sử dụng 1 transitor như vài trò khóa đóng và mở khi có dòng điện kích vào chân C của trans

  1. Giới thiệu về chương trình

Ở đây ngoài, ta có thể viết chương trình theo nhiều cách, với nhiều ứng dụng khác nhau

Những bước đầu tiên là ta phải đọc tín hiệu từ remote và để làm được điều đó ta phải tải về thư viện của Arduino về IR hồng ngoại https://github.com/shirriff/Arduino-IRremote/ trong đây chứa thư viện hỗ trợ tất cả liên quan đến IR hồng ngoại. Ta kết nối như hình sau

#include <IRremote.h> // thưviệnhỗtrợ IR remote

 

constintreceiverPin = 8; // chân digital 8 dùngđểđọctínhiệu

IRrecvirrecv(receiverPin); // tạođốitượngIRrecvmới

decode_results results;// lưugiữkếtquảgiảimãtínhiệu

void setup()

{

Serial.begin(9600);// serial baudrate 9600

irrecv.enableIRIn(); // start the IR receiver

}

void loop()

{

if (irrecv.decode(&results)) // nếu nhận được tín hiệu

{

Serial.println(results.value, HEX); // in ra Serial Monitor

delay(200);

irrecv.resume(); // nhận giá trị tiếp theo

}

}

Bạn sẽ nhập phần chương trình ở trên vào, chương trình này sẽ mã hóa tín hiệu thành 1 dãy hex và xuất ra serial

Sau đó bạn mở monitor ra và sẽ đọc được tín hiệu

Như thế này, sau khi đọc được mã hex đó bạn sẽ copy, sau đó đưa vào đoạn code

#include <IRremote.h>

constint RECV_PIN=11;

IRrecvirrecv(RECV_PIN);

decode_results results;

#define IN1 3

#define IN2 4

#define IN3 5

#define IN4 6

booli=false;

bool j=false;

bool k=false;

bool l=false;

bool m=false;

void setup()

{

Serial.begin(9600);

pinMode(IN1, OUTPUT);

pinMode(IN2, OUTPUT);

pinMode(IN3, OUTPUT);

pinMode(IN4, OUTPUT);

irrecv.enableIRIn();

irrecv.blink13(true);

}

void loop()

{

if (irrecv.decode(&results))

{

Serial.println(results.value,HEX);

delay(100);

/////////////////////////

if(results.value==0x40BD00FF)

{

i=!i;

digitalWrite(IN1, i);

 

}

////////////////////////

if(results.value==0x40BD807F)

{

j=!j;

digitalWrite(IN2, j);

 

// delay(200);

}

if(results.value==0x40BD40BF)

{

k=!k;

digitalWrite(IN3, k);

 

// delay(200);

}

//////////////////////////////

if(results.value==0x40BDC03F)

{

l=!l;

digitalWrite(IN4, l);

 

// delay(200);

}

//////////////////////

if(results.value==0x40BD28D7)

{

m=!m;

digitalWrite(IN1, m);

digitalWrite(IN2, m);

digitalWrite(IN3, m);

digitalWrite(IN4, m);

 

// delay(200);

}

irrecv.resume(); // Receive the next value

//delay(100);

}

}

Ở phần results.value==() bạn sẽ cho vào mã hex mà bạn chọn tùy theo nút nhất với cú pháp 0x mã hex, sau đó bạn sẽ đấu 4 led thử vào Arduino theo các chân đã chọn trên code là chân digital 2,3,4,5 và bấm vào 4 nút điều khiển 4 led ,ta sẽ thấy được led nào sáng theo ý mình muốn.

Ngoài ra nếu bạn muốn biến 1 chiếc quạt để bàn bình thường thành một chiếc quạt điều khiển từ xa thì ta có thể code theo 1 kiểu, trong code, ta mặc định theo 3 chân, là 3 chân số của quạt, theo 3 màu RED, GREEN, YELLOW

#include <IRremote.h> // thư viện hỗ trợ IR remote

 

constintreceiverPin = 8; // chân digital 8 dùng để đọc tín hiệu

IRrecvirrecv(receiverPin); // tạo đối tượng IRrecv mới

decode_results results;// lưu giữ kết quả giải mã tín hiệu

 

constint RED = 7;

constint YELLOW = 6;

constint GREEN = 5;

 

booleanstateRED = false;

booleanstateYELLOW = false;

booleanstateGREEN = false;

void setup()

{

Serial.begin(9600);// serial

irrecv.enableIRIn(); // start the IR receiver

pinMode(RED, OUTPUT);

pinMode(YELLOW, OUTPUT);

pinMode(GREEN, OUTPUT);

}

// translate IR signals

voidtranslateIR()

{

switch(results.value)

{

case 0xFF30CF:  stateRED = !stateRED;

stateYELLOW = stateGREEN = false;

digitalWrite(YELLOW, 0);

digitalWrite(GREEN, 0);

digitalWrite(RED, stateRED);

break;

case 0xFF18E7: stateYELLOW = !stateYELLOW;

stateRED = stateGREEN = false;

digitalWrite(RED, 0);

digitalWrite(GREEN, 0);

digitalWrite(YELLOW, stateYELLOW);

break;

case 0xFF7A85: stateGREEN = !stateGREEN;

stateRED = stateYELLOW= false;

digitalWrite(RED, 0);

digitalWrite(YELLOW, 0);

digitalWrite(GREEN, stateGREEN);

break;

case 0xFFE21D: stateRED = stateYELLOW = stateGREEN = false;

digitalWrite(RED, 0);

digitalWrite(YELLOW, 0);

digitalWrite(GREEN, 0);

 

}

}

void loop()

{

if (irrecv.decode(&results)) // nếu nhận được tín hiệu

{

translateIR();

Serial.println(results.value, HEX);

delay(200);

irrecv.resume(); // nhận giá trị tiếp theo

}

}

Trong đây, khi t cho 1 số hoạt động thì các số khác dừng lại, tức là mỗi lần chỉ được 1 chân có mức logic ra, 3 chân tín hiệu ra là 3 chân digital 5,6,7