Tải bản đầy đủ (.docx) (35 trang)

HỆ THỐNG điều KHIỂN THIẾT bị QUA TIN NHẮN và CUỘC gọi dùng PIC16f877

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (581.72 KB, 35 trang )

ĐỒ ÁN 3

HỆ THỐNG ĐIỀU KHIỂN THIẾT BỊ QUA
TIN NHẮN VÀ CUỘC GỌI


MỤC LỤC


DANH MỤC CÁC HÌNH VẼ


DANH MỤC CÁC BẢNG BIỂU


DANH MỤC CÁC TỪ VIẾT TẮT

UART

Universal Asynchronous Receiver - Transmitter

LCD

Liquid Crystal Display

SIM

Subscriber Identity Module

GSM


Global System for Mobile communication


ĐỒ ÁN 3
Trang 6/31

CHƯƠNG 1.

GIỚI THIỆU ĐỀ TÀI

1.1 Giới thiệu về đề tài và ướng dụng
Ngày nay với sự phát triển của khoa học và công nghệ áp dụng hệ thống vào hệ
thống điều khiển từ xa làm giảm được nhân công tăng năng suất lao động.
1.1.1 Giới thiệu
Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi thực hiện điểu khiển các
thiết bị điện thông qua lệnh điều khiển của người sử dụng được phép sử dụng hệ
thống thông qua chức năng bảo mật của hệ thống.
1.1.2 Ứng dụng
− Dùng để điều khiển các thiết bị điện trong gia đình, giám sát hoạt động của
thiết bị từ xa.
− Sử dụng trong nông nghiệp dùng để điều khiển máy bơm nước, đèn và các
thiết bị điện.
1.1.3 Yêu cầu đề tài
Thiết kế và thi công mạch điều khiển đáp ứng các yêu cầu:
− Điều khiển 4 thiết bị qua tin nhắn hoặc cuộc goi.
− Phản hồi trạng thái hoạt động của thiết bị.
− Bảo mật hệ thống và giới hạn số người điều khiển.
1.1.4 Cấu trúc báo cáo
− Chương 1: Giới thiệu đề tài.
− Chương 2: Thiết kế hệ thống.

− Chương 3: Thi công đề tài.
− Chương 4: Kết luận.

CHƯƠNG 2.

THIẾT KẾ HỆ THỐNG

1.2 Sơ đồ khối hệ thống

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 7/31

Hình 2-1: Sơ đồ khối toàn mạch

− Khối nguồn sử dụng nguồn từ biến áp chuyển thành điện DC sau đó ổn áp
bằng IC7805 cho mạch hoạt động.
− Khối xử lý dùng PIC 16f887 xử lý dữ liệu từ sim900A để điều khiển thiết bị.
− Khối SIM900A để nhận tin nhắn đến hoặc cuộc gọi SIM900A và giao tiếp
UART với khối xử lý để xử lý tin nhắn.
− Khối hiển thị LCD dùng LCD có 20cột và 4 hàng để hiển thị tin nhắn cuộc
gọi đến và trạng thái hoạt động của thiết bị.
− Khối thiết bị sử dụng relay để đóng cắt thiết bị điện 220VAC.
Mô tả chi tiết:
Khối nguồn sẽ cung cấp nguồn cho hệ thống hoạt động. Khi có tin nhắn tới
Sim900A thông qua giao tiếp UART khối điều khiển sẽ nhận dạng số điện thoại tin
cậy và cú pháp điều khiển nếu đúng sẽ thực thi lệnh điều khiển. Sau đó sẽ phản hồi
trạng thái hoạt động của thiết bị và hiển thị ra LCD.

1.3 Sơ đồ nguyên lý

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 8/31

Hình 2-2: Sơ đồ nguyên ly

Dựa vào sơ đồ khối, ta vẽ mạch nguyên lý hoạt động theo chức năng đã được
triển khai ở trên với các module.
1.1.5 Sơ đồ nguyên lý khối nguồn

Hình 2-3: Sơ đồ nguyên ly khối nguồn

Khối nguồn cung cấp nguồn cho hệ thống hoạt động.
Hoạt động: điện áp 220VAC vào biến áp chuyển thành 9VAC ta cho qua cầu diode
chuyển thành điện DC. Ta dùng IC7805 để ổn áp 5V để mạch hoạt động, dùng tụ để
lọc phẳng điện áp ngõ ra.

1.1.6 Sơ đồ nguyên lý khối xử lý, hiển thị và SIM900A.

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 9/31

Hình 2-4: Sơ đồ nguyên ly xử ly, hiển thị, SIM900A


Khối xử lý phân tích xử lý tin nhắn đến từ SIM900A điều khiển thiết bị và hiển thị
ra LCD.
Hoạt động: Khi có tin nhắn đến SIM900A thì vi điều khiển sẽ đọ tin nhắn thông qua
giao tiếp UART sau đó xử lý điều khiển và hiển thị trạng thái hoạt động của thiết bị
ra LCD.
1.1.7 Khối thiết bị.

Hình 2-5: Sơ đồ nguyên ly khối thiết bị

Khối thiết bị dùng bật tắt thiết bị thông qua relay.

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 10/31

Hoạt động: Khi có tín hiệu kích từ vi điều khiển thì transistor dẫn làm dòng điện
chạy qua cuộn hút của relay đóng tiếp điểm lại để cấp nguồn cho thiết bị hoạt động.

1.4 Sơ đồ giải thuật

Hình 2-6: Lưu đồ chương trình chính

Giải thích lưu đồ:
Bắt đầu hệ thống khởi tạo giá trị và ở chế độ chờ tin nhắn. Khi có tin nhắn hệ
thống bắt đầu kiểm tra số điện thoại nhắn tin tới và cú pháp điều khiển nếu đúng thì
Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi



ĐỒ ÁN 3
Trang 11/31

sẽ thực thi lệnh điều khiển bật hoặc tắt thiết bị sau đó phản hồi trạng thái về điện
thoại và hiển thị ra màn hình LCD. Còn nếu sai thì sẽ không làm gì cả.

1.5 Một số linh kiện chính được sử dụng trong mạch
1.1.8 PIC 16f887
Pic 16f887 là dòng vi điều khiển 8bit của Microchip.

Hình 2-7: PIC 16f887

Bảng 2-1: Cấu trúc PIC 16f887

Program Memory Type
Program Memory (KB)
CPU Speed (MIPS)
RAM Bytes
Data EEPROM (bytes)
Digital Communication Peripherals
Capture/Compare/PWM
Timers
ADC

Flash
14
5
368
256

1-A/E/USART, 1-MSSP(SPI/I2C)
1 CCP, 1ECCP
2x8-bit, 1x16-bit
14 chanel 10 bit

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 12/31

Comparators
Cap Touch Chanel
Operating Voltage Range (V)
Pin Count

2
11
2 to 5.5
40

 Lập trình cho PIC
Các dòng PIC đều được được lập trình với ngôn ngữ C. Ở đây ta dùng phần
mềm C complie để biên dịch code C.

Hình 2-8: Giao diện viết code cho PIC

1.1.9 Màn hình LCD
Có nhiều loại LCD khác nhau với hệ thống này ta sử dụng LCD 16x02.


Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 13/31

Hình 2-9: LCD 16x2

1.1.10 Module SIM900A
1.1.1.1 Tổng quan về công nghệ GSM
GSM là hệ thống mạng thông tin di động số toàn cầu cung cấp dịch vụ truyền
giọng nói cũng như chuyển giao dữ liệu chất lượng cao với các băng tần khác nhau:
400MHz, 900MHz, 1800MHz và 1900MHz.
1.1.1.2

Đặc điểm của Module SIM900A

Hình 2-10: Module SIM900A

 Đặc điểm:

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 14/31

SIM900A do SIMCOM sản xuất hỗ trợ nhắn tin, gọi điện kết nối GPS thông qua
tập lệnh AT.
Điều khiển Module Sim bằng tập lệnh AT.

 Kết nối với vi điều khiển:
Bảng 2-2: Kết nối linh kiện

Module SIM900A
TX
RX
VCC
GND

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi

Arduino UNO
2
3
5V
GND


ĐỒ ÁN 3
Trang 15/31

CHƯƠNG 3.

THI CÔNG ĐỀ TÀI

1.6 Yêu cầu thi công
− Thiết kế và thực hiện phần cứng.
− Điều khiển tắt bật thiết bị qua tin nhắn điều khiển.
− Theo dõi được trạng thái hoạt động của thiết bị thông qua tin nhắn phản hồi
và hiển thị ra LCD.

− Thực hiện các chức năng bảo mật cho hệ thống.
1.7 Kết quả thi công
− Thi công được mạch điều khiển.
− Mạch chạy ổn định theo yêu cầu của hệ thống.
1.8 Hình ảnh mạch

Hình 3-1: Hình mạch

CHƯƠNG 4.

KẾT LUẬN

1.9 Kết luận

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 16/31

Trong quá trình thực hiện đề tài đã thu được những kết quả nhất định như sau:
-

Mạch điện với các module trên mạch được thiết kế, thi công hoàn chỉnh chạy

thực tế và hoạt động ổn định trong thực tế.
-

Xây dựng hệ thống điều khiển thiết bị bằng tin nhắn và cuộc gọi.
Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi thực hiện được những


chức năng sau đây:
-

Điều khiển bật tắt thiết bị có phản hồi trạng thái hoạt động thiết bị.

-

Nhắn tin để kiểm tra trạng thái hoạt động của tất cả thiết bị.

-

Bảo mật điều khiển với số lượng số điện thoại được lưu sẵn trong hệ
thống để điều khiển, khi cần ta có thể thêm hoặc xóa số điện thoại điều
khiển.

-

Với chức năng reset về mặc định ta có một Key mặc định cài đặt lại số
điện thoại điều khiển.

1.10 Ưu nhược điểm của mạch
Ưu điểm:
− Thiết kế nhỏ gọn, dễ sử dụng.
− Mạch có độ nhạy, tính bảo mật cao.
− Giá thành hợp lí.
Nhược điểm:
− Chưa hỗ trợ được nhiều số điện thoại điều khiển.
− Chưa thay đổi được cú pháp điều khiển khi người dùng muốn thay đổi cú
pháp theo ý mình.


1.11 Hướng phát triển
Do thời gian thực hiện đề tài có hạn và lượng kiến thức của em là nhất định
nên đề tài thực hiện xong chỉ đáp ứng được một phần nhỏ của một hệ thống hoàn
chỉnh. Vì vậy, để đề tài này thêm phong phú hơn, mang nhiều tính thực tế hơn nữa,
có khả năng ứng dụng cao hơn nữa thì em có một vài yêu cầu sau:

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 17/31

 Mở rộng thêm nhiều số điện thoại có thể cùng điều khiển.
 Có thể thêm vào hệ thống module thu phát RF để điều khiển từ xa bằng
remote.

TÀI LIỆU THAM KHẢO
Tiếng Anh:
[1]

Datasheet SIM900A – SIM Com

Các trang web:
/> />

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3

Trang 18/31

/>
Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 19/31

PHỤ LỤC A
Toàn bộ phần code của chương trình:
#include "E:\sim800\main.h"
#include <stdio.h>
#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#include <lcd.c>
unsigned int16 Dem=0;
unsigned char key[]="1111", bathet[]="BATHET", tathet[]="TATHET", caidat[]="CAIDAT",kiemtra[]="KIEMTRA";
unsigned char xoasdt1[]="XOASDT1",xoasdt2[]="XOASDT2";
char SMS[80];
char Index=0;
char c=0x00,c1=0x00,c2=0x00,c3=0x00,c4=0x00,c5=0x00;
char NewSMS=0,NewCall=0;
char SoDienThoaiAdmin[]="0915583317";//do khi nhap gia tri o dang chuoi thi bien mang se tu dong nhap them mot ki
tu rong o phan ket thuc

char SoDienThoai1[]="09155583317";
char SoDienThoai2[]="0915583317";
char SoDienThoai[]="00000000000";
char Status[]={'0','0','0','0'};
char i,j;
int d0,d1,d2,d3 ;
//khai bao cac ham chuon trinh con
void _getnumber(void);
void _Delay(char time);
void _Init_lcd(void);
void _CaiDat(void);
void _caidatsdt(void);
void _DieuKhien(char TenThietBi, int1 Level);
void _BatHetThietBi(void);
void _TatHetThietBi(void);
void _Reset(unsigned int16 time, char Option);
void _CatDatSim(int16 Time);
void _NhanTin(signed char SoDienThoai[],Option);

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 20/31

void _GoiDien(signed char SoDienThoai[]);
void _TuChoiCuocGoi(void);
signed int8 _DocSoDienThoaiAdmin(char SoDienThoaiAdmin[]);
void _GhiSoDienThoaiAdmin(char SoDienThoaiAdmin[]);
signed int8 _DocSoDienThoai1(char SoDienThoai1[]);

void _GhiSoDienThoai1(char SoDienThoai1[]);
signed int8 _DocSoDienThoai2(char SoDienThoai2[]);
void _GhiSoDienThoai2(char SoDienThoai2[]);
signed int8 _Dockey(char key[]);
void _Ghikey(char key[]);
void _GuiTinNhan(signed char SoDienThoai[],char Content[]);//Ham gui tin nhan
void _SendData(char Content[]);
void _KhoiDongXong(void);
void _ManHinhChinh(void);
void _BaoDong(void);
void _Xoa(void);
#int_RDA
void RDA_isr(void)//Ngat du lieu khi truyen nhan
{
c=getc();//Gan ki tu vua nhan duoc vao bien tam
if(c=='+') c1=c;
if(c=='C') c2=c;
if(c=='M') c3=c;
if(c=='T') c4=c;
if(c1=='+' && c2=='C' && c3=='M' && c4=='T') NewSMS=1;//Kiem tra tin nhan moi
if(c=='+') c1=c;
if(c=='C' || c=='c') c2=c;
if(c=='L' || c=='l') c3=c;
if(c=='I' || c=='i') c4=c;
if(c=='P' || c=='p') c5=c;
if(c1=='+' && (c2=='C'||c2=='c') && (c3=='L'||c3=='l'||c3=='\0') &&
(c4=='I'||c4=='i') && (c5=='P'||c5=='p')) {NewCall=1;}//kiem tra nhan cuoc goi moi
if(c!='\0' && (NewSMS==1 || NewCall==1))
{SMS[Index++]=c;} //Nap ki tu vao mang
if(Index>=80)//Kiem tra neu vuot qua chi so mang thi reset lai

{
Index=0;
}

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 21/31

}
//chuong trinh chinh
void main(void)
{
char i,j,Temp;
char Content[]="HE THONG KHOI DONG XONG

";

_Init_lcd();
_CaiDat();
_DocSoDienThoai1(SoDienThoai1);
_DocSoDienThoai2(SoDienThoai2);
_DocSoDienThoaiAdmin(SoDienThoaiAdmin);
_Dockey(key);
if(_DocSoDienThoaiAdmin(SoDienThoaiAdmin)<0)
{
sprintf(SoDienThoaiAdmin,"0915583317");
_GhiSoDienThoaiAdmin(SoDienThoaiAdmin);
}


if(_Dockey(key)<0)
{
sprintf(key,"1111");
_Ghikey(key);
}
lcd_gotoxy(1,1);
printf(lcd_putc,"SDTAD:%s

",SoDienThoaiAdmin);

lcd_gotoxy(1,2);
printf(lcd_putc,"KEY:%s

",key);

_CatDatSim(6);
_GuiTinNhan(SoDienThoai,Content);
_TatHetThietBi();
_KhoiDongXong();
while(1)//vong lap vo han
{

d0 = input_state(PIN_C0);
d1 = input_state(PIN_C1);
d2 = input_state(PIN_C2);
d3 = input_state(PIN_C3);
if(NewCall==1)
{


Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 22/31

_Xoa();
lcd_gotoxy(1,1);
printf(lcd_putc,"CUOC GOI TOI.....");
_Delay(30);
_TuChoiCuocGoi();
_Delay(10);
_ReSet(20,1);
_Xoa();
}
else if((NewSMS==1))//Neu la tin nhan moi
{
_Xoa();
lcd_gotoxy(1,1);
printf(lcd_putc,"CO TIN NHAN TOI\n...");
_Delay(20); //tao thoi gian tre de nhan du du lieu tin nhan trong ham ngat
_Reset(1,2);
_getnumber();
_caidatsdt();
_Xoa();
for(j=0;j<80;j++)
{
if(strstr(SMS,tathet)&&(strstr(SoDienThoai1,SoDienThoai)||strstr(SoDienThoai2,SoDienThoai)||
strstr(SoDienThoaiAdmin,SoDienThoai)))
{

_TatHetThietBi();
sprintf(Content,"DA TAT HET THIET BI");
_GuiTinNhan(SoDienThoai,Content);
_Xoa();
lcd_gotoxy(1,1);
printf(lcd_putc,"DA TAT HET\nTHIET BI");
break;
}

if((strstr(SoDienThoai1,SoDienThoai)||strstr(SoDienThoai1,SoDienThoai)||

strstr(SoDienThoaiAdmin,SoDienThoai))&& strstr(SMS,bathet))
{
_BatHetThietBi();
sprintf(Content,"DA BAT HET THIET BI");
_GuiTinNhan(SoDienThoai,Content);
_Xoa();
lcd_gotoxy(1,1);
printf(lcd_putc,"DA BAT HET\nTHIET BI");
break;

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 23/31

}

if((strstr(SoDienThoai1,SoDienThoai)||strstr(SoDienThoai1,SoDienThoai)||


strstr(SoDienThoaiAdmin,SoDienThoai))&&(SMS[j]=='T')&&(SMS[j+1]=='A')&&(SMS[j+2]=='T')&&(SMS[j+3]=='1'
||SMS[j+3]=='2'||SMS[j+3]=='3'||SMS[j+3]=='4'))
{
Temp=SMS[j+3];
_DieuKhien(Temp,0);
sprintf(Content,"DA TAT THIET BI SO %c",Temp);
_GuiTinNhan(SoDienThoai,Content);
_Xoa();
lcd_gotoxy(1,1);
printf(lcd_putc,"DA TAT THIET BI\nSO %c",Temp);
break;
}
if((strstr(SoDienThoai1,SoDienThoai)||strstr(SoDienThoai2,SoDienThoai)||
strstr(SoDienThoaiAdmin,SoDienThoai))&&(SMS[j]=='B')&&(SMS[j+1]=='A')&&(SMS[j+2]=='T')&&(SMS[j+3]=='1'
||SMS[j+3]=='2'||SMS[j+3]=='3'||SMS[j+3]=='4'))
{
Temp=SMS[j+3];
_DieuKhien(Temp,1);
sprintf(Content,"DA BAT THIET BI SO %c",Temp);
_GuiTinNhan(SoDienThoai,Content);
_Xoa();
lcd_gotoxy(1,1);
printf(lcd_putc,"DA BAT THIET BI\nSO %c",Temp);
break;
}
if(strstr(SMS,kiemtra)&&(strstr(SoDienThoai1,SoDienThoai)||strstr(SoDienThoai2,SoDienThoai)||
strstr(SoDienThoaiAdmin,SoDienThoai)))
{
sprintf(Content,"SO DIEN THOAI ADMIN:%s",SoDienThoaiAdmin);

_GuiTinNhan(SoDienThoai,Content);
break;
}}
_Delay(10);
_Reset(10,1);
_Xoa(); }
else
{_ManHinhChinh();
}}}
void _Delay(char time)
{
int i;

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 24/31

for(i=0;i{
delay_ms(100);//tao tre 0.1s
}
}
void _Init_lcd(void)
{
lcd_init();
lcd_putc('\f');
}
void _CaiDat(void)

{
enable_interrupts(INT_RDA); //cho phep ngat uart - ngat nhan du lieu tu sim900a
enable_interrupts(GLOBAL); //cho phep tat ca cac loai ngat hoat dong
}
void _DieuKhien(char TenThietBi, int1 Level)
{
switch(TenThietBi)
{
case '1':
{
output_bit(ThietBi_1,Level);
if(Level==0)
{
Status[0]='0';
}
else
{
Status[0]='#';
}
break;
}
case '2':
{
output_bit(ThietBi_2,Level);
if(Level==0)
{
Status[1]='0';
}
else
{

Status[1]='#';

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


ĐỒ ÁN 3
Trang 25/31

}
break;
}
case '3':
{
output_bit(ThietBi_3,Level);
if(Level==0)
{
Status[2]='0';
}
else
{
Status[2]='#';
}
break;
}
case '4':
{
output_bit(ThietBi_4,Level);
if(Level==0)
{
Status[3]='0';

}
else
{
Status[3]='#';
}
break;
}
}
}
void _BatHetThietBi(void)
{
char i=0;
char array[]={'1','2','3','4'};

for(i=0;i<=3;i++)
{
_DieuKhien(array[i],1);
Status[i]='#';
}

Hệ thống điều khiển thiết bị qua tin nhắn và cuộc gọi


×