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

Các lệnh thiết lập và cài đặt cho tin nhắn sms

Một phần của tài liệu ĐIỀU KHIỂN THIẾT BỊ BẰNG TIN NHẮN SMS DÙNG MODULE SIM 900 (Trang 60 -60 )

AT+CMGD Xóa tin nhắn sms.

AT+CMGF Định dạng văn bản tin nhắn. AT+CMGL Danh sách tin nhắn đã lưu.

AT+CMGR Lệnh đọc tin nhắn.

AT+CMGS Lệnh gửi tin nhắn.

AT+CMGW Lưu tin nhắn vào bộ nhớ. AT+CMSS Gửi tin nhắn đã lưu.

AT+CMGC Gửi sms lệnh.

AT+CNMI MT gửi thông báo khi có tin nhắn mới. AT+CPMS Các tin nhắn riêng biệt được lưu. AT+CRES Cài đặt lại tin nhắn.

AT+CSAS Lưu các cài đặt cho tin nhắn. AT+CSCA Địa chỉ dịch vu tin nhắn.

AT+CSMP Cài đặt định dạng chữ của tin nhắn. AT+CSMS Lựa chọn tin nhắn dịch vụ.

lệnh thiết lập và cài đặt cho tin nhắn SMS

- Chi tiết mô tả các lệnh dành cho tin nhắn sms :

AT+CMGD= Lệnh xóa tin nhắn sms đã lưu tron bộ nhớ.

Lệnh thực hiện thành công.MT gửi trả:

OK

Nếu lệnh không thực hiện được.MT gửi trả:

+CMS ERROR

Tham số:

Vị trí của tin nhắn lưu trong bộ nhớ.

AT+CMGF=[] Lệnh cài đặt định dạng của tin nhắn gửi và nhận.

Lệnh thực hiện thành công.MT gửi trả:

OK

Tham số:

[] 0 Dạng PDU

1 Dạng văn bản

AT+CMGL=[] Danh sách tin nhắn đã lưu.

Tham số:

+ Nếu tin nhắn là dạng văn bản:

[] “_REC UNREAD” tin nhắn chưa đọc.

“RED READ” tin nhắn đã đọc.

“STO UNSEND” tin nhắn chưa gửi được.

“STO SEND” tin nhắn đã gửi.

“ALL” tất cả tin nhắn

+ Nếu tin nhắn là dạng PDU: [] 0 tin nhắn chưa đọc. 1 tin nhắn đã đọc. 2 tin nhắn chưa gửi. 3 tin nhắn đã gửi. 4 tất cả tin nhắn Nếu lệnh thực hiện thành công,MT gửi trả chuỗi có định dạng như sau :

+ Nếu tin nhắn là dạng văn bản (+CMGF=1) :

+CMGL: [,[],[],[],[] [,,] []

+ Nếu tin nhắn là dạng PDU (+CMGF=0) : +CMGL:,,[],

OK

Nếu lệnh thực hiện không thành công,MT gửi trả:

+CMS ERROR:

AT+CMGR=[,] Lệnh đọc tin nhắn sms.

Tham số:

Một số nguyên là vị trí của đã lưu tin nhắn.

0 Chế độ mặc định.

1 Không thay đổi trạng thái của tin nhắn.

Ví dụ : Tin nhắn sẽ không chuyển từ 'received unread’ sang 'received read’ khi được đọc.

Lệnh thực hiện thành công,MT gửi trả lại chuỗi có dạng:

+ Nếu tin nhắn là dạng văn bản (+CMGF=1)

+CMGR:,,,,,

OK

+ Nếu tin nhắn là dạng PDU (+CMGF=0) +CMGR: ,[],

OK

Lệnh thực hiện không thành công,MT gửi trả:

+CMS ERROR: Tham số:

0 "REC UNREAD" tin nhắn chưa được đọc.

1 "REC READ" tin nhắn đã đọc. 2 "STO UNSENT" tin nhắn chưa gửi được.

3 "STO SENT" tin nhắn đã gửi. 4 "ALL" tất cả tin nhắn.

Độ dài của tin nhắn (số ký tự). Nội dung tin nhắn.

AT+CMGS=[,] nội dung tin nhắn

Lệnh gửi tin nhắn dạng văn bản.

Gửi cho module để hủy bỏ việc gửi tin nhắn khi lệnh đang thực thi.

Tham số:

“số điện thoại gửi tin nhắn”

Nếu lệnh được thực hiện thành công và tin nhắn đã được gửi đi,MT gửi trả:

CR>+CMGS: < OK

Nếu lệnh không thực hiện được,MT gửi trả: +CMS ERROR:

Tham số:

Một số nguyên là vị trí lưu tin nhắn vào bộ nhớ.

AT+CMGW=[[,[,]]] Nội dung tin nhắn

Lệnh lưu tin nhắn vào bộ nhớ.

Gửi cho module để hủy bỏ việc lưu tin nhắn khi lệnh đang thực thi.

Lệnh thực hiện thành công,tin nhắn đã được lưu vào bộ nhớ.MT gửi trả:

CR>+CMGW: < OK

Nếu có lỗi xảy ra,MT gửi trả: +CMS ERROR:

Tham số:

AT+CMSS=[, [,]] Lệnh gửi tin nhắn từ bộ nhớ lưu tin nhắn Lệnh thực hiện thành công,MT gửi trả:

CR>+CMGS: [,]CR> OK

Lệnh thực hiện không thành công: < CR>+CMS ERROR:

Tham số:

Vị trí lưu tin nhắn trong bộ nhớ. AT+CNMI=[[, [, [,[,]]]]] Lệnh này cài đặt cho module để module

thông báo khi nhận được tin nhắn mới. Lệnh thực hiện thành công,MT gửi trả:

OK

Lệnh thực hiện không thành công:

+CMS ERROR:

Tham số:

0 Không gửi thông báo khi có tin nhắn mới.

1 Gửi thông báo với định dạng:

+CMTI:,

2 Gửi thông báo có định dạng: +CMT: , [],

[,,,,,,,].

Chi tiết các lệnh thiết lập và cài đặt tin nhắn SMS

CHƯƠNG 6:LƯU ĐỒ GIẢN THUẬT VÀ CHƯƠNG TRÌNH CHÍNH 6.1 LƯU ĐỒ GIẢN THUẬT

Hình 6.1:Sơ đồ chương trình chính Giải thích lưu đồ:

Đầu tiên,, khi vừa khởi động hoặc reset ,vi điều khiển sẽ tiến hành khởi tạo các thanh ghi truyền dữ liệu để truyền dữ liệu nối tiếp. Sau đó vi điều khiển sẽ thực hiện chờ

BEGIN

KHỞI TẠO TRUYỀN DỮ LIỆU UART

BÁO CÓ TIN NHẮN MỚI S

Đ

NHẬN TIN NHẮN

XỬ LÝ TIN NHẮN VÀ ĐIỀU KHIỂN

tin nhắn báo có tin nhắn mới từ module sim900. Nếu có báo gửi tới là tin báo có tin nhắn mới ,vi điều khiển sẽ thực hiện gửi lệnh điều khiển đọc tin nhắn mới từ module.

Sau khi nhận tin nhắn từ module ,vi điều khiển sẽ tiến hành xử lý nội dung tin nhắn để điều khiển thiết bị.

Cuối cùng vi điều khiển tiến hành điều khiển module gửi tin nhắn trả lời báo kết quả điều khiển và kết thúc quá trình điều khiển.

Sau khi thực hiện xong quá trình, vi điều khiển quay lại ban đầu tiếp tục chờ có tin nhắn mới.

6.1.2 Lưu đồ chương trình xử lý tin nhắn:

GVHD : VÕ XUÂN NAM 66

Hinh 6.2:Lưu đồ chương trình xử lý tin nhắn

Để xử lý tin nhắn , trước tiên vi điều khiển chờ tin nhắn tới ,nếu có tin nhắn, vi điều khiển lưu tin nhắn vào chương trình,và lấy nội dung tin nhắn, lấy số điện thoại nhắn tin tới, và sau đó sẽ xóa tin nhắn này trên sim ,và gọi chương trinh điều khiển theo nội dung tin nhắn.

6.1.3 Lưu đồ chương trình điều khiển thiết bị:

Hình 6.3:Lưu đồ chương trình điều khiển thiết bị

Giải thích lưu đồ:

Điều khiển thiết bị

Kiểm tra password

reset

Báo sai mật khẩu

Gửi tin nhắn “đã tắt TB” hay “đã mở TB” cho người điều

khiển

Điều khiển thiết bị on hay off S

Để điều khiển thiết bị ,trước tiên vi điều khiển kiểm tra password ,nếu đúng thì xuất tín hiệu ra portd và porte để điều khiển thiết bị,nếu sai thi vi điều khiển gửi lệnh cho module sim900 để nhắn tin cho nguwoif điều khiển biết là đã sai cú pháp.

6.1.4 Lưu đồ gửi tin nhắn tới số điện thoại điều khiển:

6.2. Chương trình chính:6.2.1. Lập trình cho PIC: 6.2.1. Lập trình cho PIC:

#include <16F877A.h> #include <string.h>

#fuses NOWDT,HS,PUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP #use delay(clock=20000000) #use fast_io(a) #use fast_io(c) Gửi tin nhắn Gửi “AT+CMGS=” GỬI DẤU “ GỬI SỐ ĐIỆN THOẠI

GỬI DẤU

#use fast_io(d) #use fast_io(e) #byte porta=0x05 #byte portb=0x06 #byte portc=0x07 #byte portd=0x08 #byte porte=0x09 #BIT X=0X07.1 #BIT SET=0X07.0 #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7) int ngat,dem;

unsigned int1 mode_sms,gui;

unsigned int16 n,i,xbuff,hoidap;// bo sung trangthai unsigned char MK[]="123456";

unsigned char ON1[]="ON1"; unsigned char ON2[]="ON2"; //unsigned char ON3[]="ON3"; //unsigned char ON4[]="ON4"; //unsigned char ON5[]="ON5"; //unsigned char ON6[]="ON6"; //unsigned char ON7[]="ON7"; //unsigned char ON8[]="ON8"; //unsigned char ON9[]="ON9"; unsigned char ONALL[]="ONALL";

unsigned char OFF1[]="OFF1"; unsigned char OFF2[]="OFF2"; //unsigned char OFF3[]="OFF3"; //unsigned char OFF4[]="OFF4"; //unsigned char OFF5[]="OFF5"; //unsigned char OFF6[]="OFF6"; //unsigned char OFF7[]="OFF7"; //unsigned char OFF8[]="OFF8"; //unsigned char OFF9[]="OFF9"; unsigned char OFFALL[]="OFFALL"; char *ptr1=0; // khai bao con tro 1 char *ptr2=0; // khai bao con tro 2 unsigned char c=0x00, c1=0x00; unsigned char buffer[30];

void SIM_908_startup();

void kiem_tra(); // Chuong trnh kiem tra tin nhan dieu khien void send_number(); void erase_buffer(); void xung(); void main() { enable_interrupts(int_rda); enable_interrupts(INT_EXT);

ext_int_edge(H_TO_L); enable_interrupts(global); set_tris_a(0b00000); set_tris_b(0b00000001); set_tris_c(0b10000000); set_tris_d(0b00000000); set_tris_e(0b000); set=0; dem=0; SIM_908_startup(); while(true) { if(mode_sms==true) { dem=0; ngat=0; kiem_tra();} if(gui==true) { hoidap=ngat; send_number(); delay_ms(1000); gui=false; dem=0; ngat=0;

} } } #int_TIMER1 void Ngat_TIMER1() { clear_interrupt(INT_TIMER1); dem++; if(dem>10) {gui=true; disable_interrupts(int_TIMER1); }} #INT_EXT void ngat_ngoai() { ngat++; if(ngat==1) { enable_interrupts(INT_TIMER1); setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); set_timer1(0); } } #INT_RDA RDA_isr()

{

c=getc(); if(c=='*'){c1=c; xbuff=0;}

if(c=='#' && c1=='*'){mode_sms=true;} if(xbuff>=30){xbuff=0;}

else{buffer[xbuff++]=c;}

return 0; // thoat khoi ham va tra ve gia tri 0 }

//---KHOI DONG MODULE SIM---// void SIM_908_startup() { set=1; delay_ms(3000); set=0; delay_ms(4000); printf("AT\r\n"); delay_ms(1000); printf("AT\r\n"); delay_ms(1000); printf("ATZ\r\n"); delay_ms(1000); printf("ATE0\r\n"); delay_ms(1000);

delay_ms(1000); printf("AT+CMGDA=\"DEL ALL\"\r\n"); delay_ms(1000); hoidap=0; send_number(); delay_ms(1000); erase_buffer(); }

//--- CHUONG TRINH KIEM TRA TIN NHAN VA DIEU KHIEN---// void kiem_tra() { n=0; if(mode_sms==true) { ptr1=strstr(buffer,MK); if(strncmp(ptr1,MK,6)==0) { ptr2=strstr(buffer,ON1);//MO THIET BI 1 if (strncmp(ptr2,ON1,3)==0) { erase_buffer();mode_sms=false; // hoidap=1;send_number(); n=1; xung();

// hoidap=2; send_number(); // delay_ms(1000); } ptr2=strstr(buffer,ON2);//MO THIET BI 2 if (strncmp(ptr2,ON2,3)==0) { erase_buffer();mode_sms=false; // hoidap=3; send_number(); n=2; xung(); // hoidap=4; send_number(); // delay_ms(1000); } ptr2=strstr(buffer,ONALL);//MO ALL//////// if (strncmp(ptr2,ONALL,5)==0) { erase_buffer();mode_sms=false; n=10; xung(); }

//////////////////TAT THIET BI///////////////////// ptr2=strstr(buffer,OFF1);//TAT THIET BI 1 if (strncmp(ptr2,OFF1,4)==0)

erase_buffer();mode_sms=false; n=11; xung(); } ptr2=strstr(buffer,OFF2);//TAT THIET BI 2 if (strncmp(ptr2,OFF2,4)==0) { erase_buffer();mode_sms=false; n=12; xung(); } ptr2=strstr(buffer,OFFALL);//TAT ALL if (strncmp(ptr2,OFFALL,6)==0) { erase_buffer();mode_sms=false; n=20; xung(); } if(n==0) { erase_buffer();mode_sms=false; hoidap=200;send_number(); } }

else { erase_buffer();mode_sms=false; hoidap=100;send_number(); }} }

// --- CHUONG TRINH GUI TIN NHAN---// void send_number() { if(hoidap==0) { printf("AT+CMGS=\"01639416508\"\r\n"); delay_ms(1000);

printf("HE THONG DA KHOI DONG HOAN TAT!\r\n"); delay_ms(1000); putc(26); putc(13);

}

if(hoidap==100) {

printf("AT+CMGS=\"01639416508\"\r\n"); delay_ms(1000);

printf("SAI MAT KHAU!!!\r\n"); delay_ms(1000); putc(26); putc(13); }

{

printf("AT+CMGS=\"01639416508\"\r\n"); delay_ms(1000);

printf("SAI CU PHAP!!!\r\n");

delay_ms(1000); putc(26); putc(13); }

///// THONG BAO TRANG THAI DEN/////////////// if(hoidap==20)

{

printf("AT+CMGS=\"01639416508\"\r\n"); delay_ms(1000);

printf("Den 1 mo, den 2 tat\r\n");

delay_ms(1000); putc(26); putc(13); }

if(hoidap==30) {

printf("AT+CMGS=\"01639416508\"\r\n"); delay_ms(1000);

printf("Den 2 mo, den 1 tat!\r\n"); delay_ms(1000); putc(26); putc(13); }

{

printf("AT+CMGS=\"01639416508\"\r\n"); delay_ms(1000);

printf("Hai den 1 va 2 da tat\r\n"); delay_ms(1000); putc(26); putc(13); } if(hoidap==40) { printf("AT+CMGS=\"01639416508\"\r\n"); delay_ms(1000); printf("Den 1 va 2 da mo!\r\n");

delay_ms(1000); putc(26); putc(13); }

if(hoidap==60) {

printf("AT+CMGS=\"01639416508\"\r\n"); delay_ms(1000);

printf("!!!SU CO!!!DA TAT HET THIET BI\r\n"); delay_ms(1000); putc(26); putc(13);

} }

//--- CHUONG TRINH XOA BO DEM ---// void erase_buffer()

for(i=0;i<=29;i++) {buffer[i]=0;} } void xung() { x=0;delay_ms(210);x=1;delay_ms(110);x=0;delay_ms(100); for(i=1;i<=n;i++) {x=1;delay_ms(5);x=0; delay_ms(5);} x=0; delay_ms(20); }} //=========END MAIN============ 6.2.2. Chương trình PLC: MAIN Chương trình chính

Reset

Đặt thời gian

Mởthiết bị 2

Mở tất cả

Tắt thiết bị 2

Thiết bị 2 tắt, thiết bị 1 tắt

Thiết bị 2 tắt, thiết bị 1 mở

Thiết bị 2 mở, thiết bị 1 tắt

Thiết bị 2 mở, thiết bị 1 mở

Kiểm tra khi có sự cố

Reset chương trình

Giới hạng xung trả về thiết bị 2 tắt, thiết bị 1 mở

Giới hạn xung trả về thiết bị 2 mở, thiết bị 1 mở

Chương trình con cyclic interrupt

CHƯƠNG KẾT LUẬN

Kết luận:

Qua thời gian nghiên cứu, tìm hiểu, thi công, đồ án đã cơ bản được hoàn thành . Bằng sự nỗ lực cố gắng của nhóm và sự hướng dẫn nhiệt tình của giáo viên hướng dẫn, đồ án đã đươc hoàn thành đúng thời gian quy định và đã đạt được những kết quả sau:

Mạch điện sau khi hoàn thành đã hoạt động tốt.

Xây dựng mô hình để ứng dụng điều khiển các thiết bị và hệ thống báo động.

Hệ thống điều khiển được thiết bị điện từ xa thông qua tin nhắn SMS:

Sau khi gửi tin nhắn thì với nội dung tin nhắn quy định, bộ xử lý sẽ thực thi quá trình xử lý, sau đó là điều khiển thiết bị 1 cách tự đông.

Tin nhắn được gửi đi từ người điều khiển để điều khiển thiết bi điện và người điều khiển cũng nhận được tinn nhắn trả ngược lại với nội dung tin nhắn là đã điều khiển được các thiết bị hay chưa và hệ thống cảnh báo.

Hệ thống có khả ngăng bảo vệ tốt, nghĩa là người sử dụng phải biết lệnh điều khiển và mật khẩu (password) thì mới điều khiển được

Để thực hiện được các chức năng như trên, nhóm đã tìm nghiên cứu các vấn đề có liên quan tới đề tài như: Pic 16F877A, Module Sim900, các ngôn ngữ lập trình tương ứng như CCS, bộ lệnh AT Command dành cho

Module, và các vấn đề khác liên quan tới đề tài. Hướng phát triển đề tài:

Do thời gian thực hiện đề tài có hạn và lượng kiến thức cá nhân là nhất định nên đề tài thực hiện xong chỉ đáp ứng được 1 phần nhỏ của 1 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 thì đề tài cần đưa thêm vào những yêu cầu như sau:

Ngoài việc điều khiển giám sát bằng tin nhắn SMS ta có thể điều khiển thông qua 1 cuộc gọi.

Mở rộng điều khiển được nhiều hơn nữa các thiết bị trong nhà

Hy vọng với những hướng phát triển nêu trên cùng với những ý tưởng khác của các bạn, khắc phục những hạn chế, tồn tại của đề tài, làm cho đề tài trở nên phong phú hơn, mang tính ứng dụng cao hơn vào trong thực tế cuộc sống, phục vụ cho những lợi ích của con người trong tương lai

[2] Bài giảng vi xử lý, thầy Nguyễn Trọng Khanh , khoa Điện Tử-Tin Học, trường CĐKT Cao Thắng.

[3] Bài giảng mạch điện tử, thầy Nguyễn Phú Qưới, khoa Điện Tử-Tin Học, trường CĐKT Cao Thắng.

[4] Một Số Trang Web Tham Khảo:

_ www.dientuvietnam.com

_ www.picvietnam.com

Một phần của tài liệu ĐIỀU KHIỂN THIẾT BỊ BẰNG TIN NHẮN SMS DÙNG MODULE SIM 900 (Trang 60 -60 )

×