Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 69 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
69
Dung lượng
1,76 MB
Nội dung
TÓM TẮT NỘI DUNG NGHIÊN CỨU Đề tài nghiên cứu xây dựng hệ thống giám sát – báo động qua mạng thông tin di động GSM dựa dịch vụ SMS GPRS Các vấn đề cụ thể cần nghiên cứu bao gồm: · Thiết kế mơ hình cho hệ thống giám sát – báo động qua mạng thông tin di động GSM · Nghiên cứu nắm bắt công nghệ CPU không dây hệ điều hành thời gian thực OpenAT Wavecom để ứng dụng thiết kế thực hệ thống nhúng không dây · Nghiên cứu hoạt động đặc tính IC cảm biến nhiệt độ độ ẩm để sử dụng hệ thống · Tìm hiểu dịch vụ SMS, GPRS nhà cung cấp dịch vụ mạng GSM Việt Nam · Nghiên cứu xây xựng WebServer để thu thập liệu giám sát internet · Thi công thiết bị thu thập giám sát không dây TrangI SUMMARY OF RESEARCH CONTENT This project is to research about wireless monitoring –alarming system via mobile GSM network based on SMS and GPRS services the problems below are considered in this report: · Design adequate model of wireless monitoring –alarming system via mobile GSM network · Reseach about the wireless CPU technology and OpenAT realtime operating system of Wavecom, appling it to design and implement the wirelesss embedded system · Research about temperature and humidity sensor for using in this project · Investigate to SMS and GPRS services of some GSM network service provider in Viet Nam · Reseach to build a Webserver for acquiring monitored data via internet · Fabricate wireless acquiring and monitoring devices Trang II MỤC LỤC Trang Tóm tắt đề tài/dự án (gồm tiếng Việt tiếng Anh) I Mục lục III Danh sách chữ viết tắt VI Danh sách bảng VII Danh sách hình VIII Bảng toán IX PHẦN MỞ ĐẦU Tên đề tài/dự án: Hệ thống giám sát – báo động qua mạng thông tin di động GSM Chủ nhiệm đề tài/dự án: Th.S Hồ Trung Mỹ Cơ quan chủ trì: ĐH Bách Khoa TP.HCM Thời gian thực hiện: 09/2008 – 09/2009 Kinh phí duyệt: 265.000.000 VNĐ Kinh phí cấp: 170.000.000 theo TB số:168TB-SKHCN ngày: 08/09/2008 Mục tiêu Nội dung Sản phẩm đề tài CHƯƠNG I: TỔNG QUAN TÀI LIỆU 1.1 1.2 Tính cấp thiết đề tài Tình hình nghiên cứu thuộc lĩnh vực đề tài 3 CHƯƠNG II: NỘI DUNG NGHIÊN CỨU 2.1 Nội dung I: Tìm hiểu mạng thông tin di động Việt Nam 2.1.1 Mô tả nội dung 2.1.2 Phương pháp nghiên cứu 2.1.3 Sản phẩm cần đạt Trang III 2.2 Nội dung II: Nghiên cứu công nghệ CPU không dây 2.2.1 Mô tả nội dung 2.2.2 Phương pháp nghiên cứu 2.2.3 Sản phẩm cần đạt 2.3 Nội dung III: Thiết kế mơ hình hệ thống 2.3.1 Mô tả nội dung 2.3.2 Phương pháp nghiên cứu 2.3.3 Sản phẩm cần đạt 2.4 Nội dung IV: Thực Thiết bị giám sát không dây 2.4.1 Mô tả nội dung 2.4.2 Phương pháp nghiên cứu 2.4.3 Sản phẩm cần đạt 2.5 Nội dung V: Thực Thiết bị thu thập không dây xây dựng chương trình ứng dụng để thu thập liệu 2.5.1 Mô tả nội dung 2.5.3 Phương pháp nghiên cứu 2.5.3 Sản phẩm cần đạt 2.6 Nội dung VI: Xây dựng Web server để thu thập liệu 2.6.1 Mô tả nội dung 2.6.2 Phương pháp nghiên cứu 2.6.3 Sản phẩm cần đạt CHƯƠNG III: KẾT QỦA VÀ THẢO LUẬN Nội dung I: Tìm hiểu mạng thơng tin di động 3.1 Việt Nam Trang IV 3.1.1 Thế hệ công nghệ mạng di động 3.1.2 Dich vụ SMS 3.1.3 Dịch vụ GPRS 10 3.1.4 Các dịch vụ mạng thông tin di động Việt Nam 12 3.2 Nội dung II: Nghiên cứu công nghệ CPU không dây 15 3.2.1 Vi điều khiển không dây Q2687 15 3.2.2 Hệ Điều hành thời gian thực OpenAT 16 3.3 Nội dung III: Thiết kế mơ hình hệ thống 17 3.4 Nội dung IV: Thực Thiết bị giám sát khơng dây 18 3.4.1 Đặc tính cảm biến thiết bị 18 3.4.2 Phần mềm nhúng 21 3.4.3 Kết thi công 22 3.5 Nội dung V: Thực Thiết bị thu thập không dây 22 xây dựng chương trình ứng dụng để thu thập liệu 3.5.1 Thiết bị đọc liệu qua tin nhắn SMS 22 3.5.2 Chương trình ứng dụng thu thập liệu 23 3.6 Nội dung VI: Xây dựng Web server để thu thập liệu 27 CHƯƠNG IV: KẾT LUẬN VÀ ĐỀ NGHỊ 31 4.1 Đánh giá 31 4.1.1 Đánh giá tiến độ thực 31 4.1.2 Đánh giá tiêu chí kỹ thuật 31 4.2 Kết luận 31 4.3 Hướng phát triển đề tài 31 PHỤ LỤC 32 TÀI LIỆU THAM KHẢO 58 Trang V DANH SÁCH CÁC CHỮ VIẾT TẮT VIẾT TẮT A&D ADC ADL API ASP AT AUX CLK CPU DAC EXTINT EDGE FCM GPI GPIO GPO GPRS GSM HTTP IP IC MS M2M OS PC PDU PSTN RI RTC RTOS RXD SIM SPI SMS TXD VB UMTS WIP THUẬT NGỮ Application & Data Analog to Digital Converter Application Development Layer Application Programming Interface Active Server Page ATtention AUXiliary CLocK Central Processing Unit Digital Analog Converter EXTernal INTerruption Enhanced Data Rates for GSM Evolution Flow Control Manager General Purpose Input General Purpose Input Output General Purpose Output General Packet Radio Service Global System for Mobile communications HyperText Transfer Protocol Internet Protocol Intergated Circuit Mobile Station Machine to Machine Operating System Personal Computer Protocol Data Unit Public Switch Telephone Network Ring Indicator Real Time Clock Real Time Operating System Receive Data Subscriber Identity Module Serial Perpheral Interface Short Message Services Transmit Data Visual Basic Universal Mobile Telecommunications System Wireless Internet Protocol Trang VI DANH SÁCH BẢNG Số TT TÊN BẢNG SỐ LIỆU TRANG Bảng tóm tắt đặc tính hệ mạng di động Giá cước tin nhắn SMS [12] (07/2009) 13 Giá cước GPRS mobifone [12] (07/2009) 13 Giá cước GPRS vinaphone [12] (07/2009) 14 Giá cước GPRS Viettel [12] (07/2009) 14 Đặc tính Q2687 [11] 15 Bảng so sánh giải pháp Fastrack Q2687 16 Trang VII DANH SÁCH HÌNH SỐ TT TÊN HÌNH ẢNH TRANG Giải pháp không dây cho hệ thống quản lý thiết bị đo tự động (www.wavecom.com) Mô hình hệ thống dùng modem GSM thơng thường 15 Mơ hình hệ thống dùng Q2687 15 Kiến trúc OpenAT [11] 16 Mơ hình hệ thống giám sát không dây qua mạng GSM 17 Sơ đồ khối thiết bị giám sát không dây 18 Các thông số điện SHT75 [14] 19 Các thông đo độ ẩm tương đối SHT75 [14] 20 Các thông số đo nhiệt độ SHT75[14] 20 10 Lưu đồ giải thuật chương trình nhúng thiết bị giám sát không dây 21 11 Lưu đồ giải thuật chương trình đọc liệu qua tin nhắn SMS 23 12 Giao diện cấu hình phần mềm thu thập liệu qua SMS 24 13 14 Giao diện giá trị thu thập tức thời phần mềm thu thập liệu qua SMS Giao diện đồ thị liệu thu thập phần mềm thu thập liệu qua SMS 25 26 15 Giao diện trang chủ website 27 16 Trang web danh sách thiết bị 28 17 Trang nhập thiết bị 29 18 Trang web quản lý liệu thiết bị 30 Trang VIII PHẦN MỞ ĐẦU Tên đề tài: Hệ thống giám sát – báo động qua mạng thông tin di động GSM Chủ nhiệm đề tài: Th.S Hồ Trung Mỹ Cơ quan chủ trì: ĐH Bách Khoa TP.HCM Thời gian thực đề tài: 09/2008 – 09/2009 Kinh phí duyệt: 265.000.000 VNĐ Kinh phí cấp: 170.000.000 theo TB số : 168 TB-SKHCN ngày 08/09 /2008 Mục tiêu: · Hệ thống giám sát - báo động: Ø Thu thập nhiệt độ độ ẩm Ø Truyền liệu qua dịch vụ SMS Ø Truyền liệu lên Webserver qua GPRS Ø Cấu hình Ø Có khả mở rộng mạng thiết bị · Chương trình phần mềm: Ø Hoạt động tương tích Windows Ø WebServer chạy ASP Nội dung: · Tìm hiểu dịch vụ di động, SMS, GPRS · Nghiên cứu công nghệ CPU không dây hệ điều hành OpenAT Wavecom · Nghiên cứu hoạt động sử dụng IC cảm biến nhiệt độ, độ ẩm · Thi công thiết bị mẫu giám sát cảm biến truyền qua SMS, GPRS · Xây dựng phần mềm Webserver để thu thập liệu · Kiểm tra, thử nghiệm thiết bị hệ thống Những nội dung thực hiện: Cơng việc dự kiến Tìm hiểu, lực chọn mạng thông tin di động GSM Việt Nam phù hợp với yêu cầu hệ thống, sâu nghiên cứu hệ thống SMS sử dụng truyền liệu qua mạng thông tin di động Thiết kế chi tiết mô hình cho hệ thống giám sát – báo động qua mạng thông tin di động GSM Nghiên cứu nắm bắt công nghệ CPU không dây hệ điều hành thời gian thực OpenAT Wavecom để ứng dụng thiết kế thực hệ thống nhúng không dây Thiết kế thi công dụng cụ giám sát – Cơng việc thực Tìm hiểu, lựa chọn mạng thông tin di động GSM Việt Nam phù hợp với yêu cầu hệ thống Chọn nhà cung cấp dịch vụ Mobifone Đưa chi tiết mơ hình cho hệ thống giám sát – báo động qua mạng thông tin di động GSM Nghiên cứu nắm bắt công nghệ CPU không dây hệ điều hành thời gian thực OpenAT Wavecom để ứng dụng thiết kế thực hệ thống nhúng không dây Thiết kế thi công thiết bị giám sát – Trang1 cảnh báo có tích hợp cơng nghệ khơng cảnh báo có tích hợp cơng nghệ khơng dây dây truyền liệu qua mạng SMS GPRS Thiết kế thi công thiết bị thu thập Thiết kế thi công thiết bị thu thập dữ liệu qua mạng SMS giao tiếp máy liệu qua mạng SMS giao tiếp máy tính tính Xây dựng Webserver để thu thập liệu dựa mạng GPRS Xây dựng chương trình PC: Xây dựng chương trình PC: - Xử lý lưu trữ liệu thu thập - Xử lý lưu trữ liệu thu thập - Giao tiếp người dùng tạo - Giao tiếp người dùng tạo báo cáo thống kê báo cáo thống kê Thử nghiệm hệ thống Thử nghiệm hệ thống Báo cáo kết Báo cáo kết Sản phẩm đề tài Đề tài đạt sản phẩm sau: · Mơ hình hệ thống giám sát – báo động qua mạng thông tin di động GSM: Đưa mơ hình giải pháp ứng dụng phù hợp khả thi Việt Nam · Thiết bị giám sát - báo động khơng dây: Phần cứng có khả đo đạc thông số nhiệt độ, độ ẩm, điều khiển thiết bị khác với yêu cầu không cần băng thơng rộng, có dung lượng liệu thấp, biến đổi chậm để truyền thông số qua mạng SMS, có khả kết nối với mạng internet qua GPRS để truyền liệu tới Web Server mạng internet Thiết bị có khả cấu hình mềm dẽo phù hợp · Thiết bị thu thập liệu từ thiết bị giám sát - báo động không dây: Phần cứng có khả nhận tin nhắn SMS sau lọc thơng tin giám sát - báo động để truyền lên máy tính xử lý lưu trữ liệu · Chương trình phần mềm máy tính để xử lý lưu trữ liệu: Phần mềm có giao diện đẹp thân thiện với người dùng, dễ sử dụng quản lý liệu · Web server: lập trình ASP cài đặt host internet để thu thập liệu Trang if(cnt==5) adl_ioWriteSingle (MyGpioHandle, &Clk_Wr , TRUE); if(cnt==6) adl_ioWriteSingle (MyGpioHandle, &Data_Wr, TRUE); if(cnt==7) adl_ioWriteSingle (MyGpioHandle, &Clk_Wr , FALSE); if(cnt==8) { TRACE((1,"End Start Transmission")); if(flag_start==FALSE) { flag_start=TRUE; status=DELAY11MS; flag_delay11ms=TRUE; } else { flag_start=FALSE; status=MEASURE; } cnt=0; } } //End start transmission /* Status WRITE */ /* Write byte */ //write byte start=36, stop=41 if(status==WRITE) { if(cnt==1) { ext_state=0; } //MSB if(ext_state==0) { TRACE((1,"Start write bit")); ext_state=1; if(byte_write & i) adl_ioWriteSingle (MyGpioHandle, &Data_Wr, TRUE); else adl_ioWriteSingle (MyGpioHandle, &Data_Wr, FALSE); } else if(ext_state==1) { adl_ioWriteSingle (MyGpioHandle, &Clk_Wr , TRUE); ext_state=2; } else if(ext_state==2) { ext_state=0; adl_ioWriteSingle (MyGpioHandle, &Clk_Wr, FALSE); i/=2; } //ket thuc ghi bit if(cnt==24) { //cnt thu 24 ext_state=2 ext_state=100; i=0x80; Trang 47 TRACE((1,"GET ACK")); adl_ioSetDirection ( MyGpioHandle, 1, &Dir_In ); } if(cnt==25) { adl_ioWriteSingle (MyGpioHandle, &Clk_Wr, TRUE); } if(cnt==26) { ack_read = adl_ioReadSingle ( MyGpioHandle, &Data_Rd ); if(ack_read==TRUE) { TRACE((1,"No_ACK,go to reset connection")); status=CONNECT_RESET; ext_state=100; cnt=0; } else { TRACE((1,"ACK reply, keep going")); status=WRITE; ext_state=100; } } if(cnt==27) { adl_ioWriteSingle (MyGpioHandle, &Clk_Wr , FALSE); TRACE((1,"End write byte")); if(flag_write==FALSE) { //toi temperature status=DELAY320MS; flag_write=TRUE; flag_delay80ms=FALSE; flag_delay800ms=FALSE; } else {//toi humidity status=DELAY80MS; flag_write=FALSE; flag_delay800ms=FALSE; flag_delay80ms=TRUE; } ext_state=100; cnt=0; } } //End write byte /* Status DELAY80MS */ /* Delay 80ms */ if(status==DELAY80MS) { if(cnt==1) TRACE((1,"Delay 80ms : Begin")); Trang 48 if(cnt==55) { TRACE((1,"Delay 80ms : End")); if(flag_delay800ms==FALSE) { if(flag_delay80ms==FALSE) status=DELAY320MS; else { status=WAIT; ext_state=100; } } else { status=DELAY800MS; } cnt=0; } } //End status /* Status READ */ /* Read byte */ // if(status==READ){ //read MSB if(cnt==1) { TRACE((1,"Start read byte")); adl_ioSetDirection ( MyGpioHandle, 1, &Dir_In ); ext_state=0; byte_read=0x00; } if(ext_state==0) { adl_ioWriteSingle (MyGpioHandle, &Clk_Wr, TRUE); ext_state=1; } else if(ext_state==1) { in_value = adl_ioReadSingle ( MyGpioHandle, &Data_Rd ); if(in_value) byte_read = byte_read | i; ext_state=2; } else if(ext_state==2) { adl_ioWriteSingle (MyGpioHandle, &Clk_Wr , FALSE); ext_state=0; i/=2; } if(cnt==24) { ext_state=100; i=0x80; Trang 49 TRACE((1,"Write ACK begin")); adl_ioSetDirection ( MyGpioHandle, 1, &Dir_Out ); } if(cnt==25) { if(ack_write==TRUE) { TRACE((1,"Write noACK")); adl_ioWriteSingle (MyGpioHandle, &Data_Wr, TRUE); } else { TRACE((1,"Write ACK")); adl_ioWriteSingle (MyGpioHandle, &Data_Wr, FALSE); } } if(cnt==26) adl_ioWriteSingle (MyGpioHandle, &Clk_Wr , TRUE); if(cnt==27) { adl_ioWriteSingle (MyGpioHandle, &Clk_Wr , FALSE); adl_ioWriteSingle (MyGpioHandle, &Data_Wr, TRUE); cnt=0; ext_state=100; if(ack_write==FALSE) { status=READ; Msb=byte_read; ack_write=TRUE; } else { status=TINHTOAN; Lsb=byte_read; ack_write=FALSE; DataReady=TRUE; } } } //End read byte status /* Status WAIT */ /* Wait for data */ if(status==WAIT){ if(cnt==0 || cnt==1) { TRACE((1,"Wait for data ")); adl_ioSetDirection ( MyGpioHandle, 1, &Dir_In ); } else { in_value = adl_ioReadSingle ( MyGpioHandle, &Data_Rd ); if(in_value==TRUE) { TRACE((1,"No data detected!")); Trang 50 } else { TRACE((1,"Data Comin ")); status=READ; cnt=0; } } if(cnt==255){ TRACE((1,"Time out, reset connection ")); status=CONNECT_RESET; cnt=0; } } //End wait for data /* Status MEASURE */ /* Measure */ if(status==MEASURE) { if(temp_humi==FALSE) { TRACE((1,"Measure temperature")); status=WRITE; flag_write=FALSE; flag_start=TRUE; ack_write=FALSE; byte_write=0x03; cnt=0; } else { TRACE((1,"Measure humidity")); flag_start=TRUE; status=WRITE; flag_write=TRUE; flag_delay80ms=TRUE; ack_write=FALSE; byte_write=0x05; cnt=0; } } //End Status MEASURE /* Status DELAY320MS */ // Delay 320ms if(status==DELAY320MS) { ext_state++; if(ext_state==101) { TRACE((1,"Delay 320ms : Begin")); Trang 51 status=DELAY80MS; flag_delay80ms=FALSE; flag_delay800ms=FALSE; } else if(ext_state==105) { TRACE((1,"Delay 320ms : End")); status=WAIT; flag_delay80ms=TRUE; ext_state=100; } else { status=DELAY80MS; flag_delay80ms=FALSE; flag_delay800ms=FALSE; } cnt=0; } //End Status DELAY320MS /* Status DELAY800MS */ /* Delay 800ms */ if(status==DELAY800MS) { ext_state++; if(ext_state==101) { TRACE((1,"Delay 800ms : Begin")); status=DELAY80MS; flag_delay800ms=TRUE; } else if(ext_state==111) { TRACE((1,"Delay 800ms : End")); status=START_TRANS; flag_delay800ms=FALSE; temp_humi=!temp_humi; ext_state=100; } else { status=DELAY80MS; flag_delay800ms=TRUE; } cnt=0; } //End Status DELAY80MS /* Status TINHTOAN */ /* Tinh toan */ if(status==TINHTOAN) { if(cnt==1) { Trang 52 if(DataReady==TRUE) { TRACE((1,"MSB = %d; LSB = %d",Msb,Lsb)); Byte = Msb * 256 + Lsb; if(temp_humi==FALSE) { TRACE((1,"TEMP = %d",Byte)); f_TEMP= -39.8 + 0.01 * Byte; d= (s16)f_TEMP * 1000; f= (f_TEMP * 1000) - d; TRACE((1,"TEMP = %d.%03d",(s16)f_TEMP,f)); wm_sprintf(st_TEMP,"%d.%03d",(s16)f_TEMP,f); } else { TRACE((1,"HUMI = %d",Byte)); RH= -4 + (0.0405 * Byte) - (0.0000028 * Byte * Byte); f_HUMI= (f_TEMP-25)*(0.01+0.00008*Byte)+RH; d= (s16)f_HUMI * 1000; f= (f_HUMI * 1000) - d; TRACE((1,"HUMI = %d.%03d",(s16)f_HUMI,f)); wm_sprintf(st_HUMI,"%d.%03d",(s16)f_HUMI,f); } } } if ( cnt==3 ) { status=DELAY800MS; cnt=0; ext_state=100; DataReady=FALSE; } } cnt++; cnt_timer +=1; if ((cnt_timer % (54 * wm_atoi(Period))) == 0){ Http_Package(st_Http, st_TEMP, st_HUMI); adl_atSendResponsePort(ADL_AT_RSP,ADL_PORT_UART1, st_Http); if (sendTCP) wip_write(TCPClientChannel, st_Http, wm_strlen(st_Http)); } if (cnt_timer == (108 * wm_atoi(Period))){ cnt_timer =0; Sms_Package(st_Sms, st_TEMP, st_HUMI); adl_atSendResponsePort(ADL_AT_RSP,ADL_PORT_UART1, st_Sms); if (sendSMS) adl_smsSend(SmsHandle,DesTel,st_Sms,ADL_SMS_MODE_TEXT); Trang 53 } } void SmsCtrlHandler ( u8 Event, u16 Nb ) { switch( Event ) { case ADL_SMS_EVENT_SENDING_OK: TRACE((1,"SMS was sent successfully!")); break; case ADL_SMS_EVENT_SENDING_ERROR: TRACE((1,"Error!!!, Nb = %d", Nb)); break; case ADL_SMS_EVENT_SENDING_MR: TRACE((1,"SMS was sent successfully, Nb = %d", Nb)); break; } } bool SmsCmdRspHandler(adl_atResponse_t *paras) { adl_smsSend(SmsHandle,CtrlTel,paras->StrData,ADL_SMS_MODE_TEXT); } u8 Sms_Cmd_Parse(ascii *cmdstr, ascii *para) { u8 result=0; u8 pos; ascii * cmd; cmd = adl_memGet(20); wm_memset(cmd,0,20); pos = 0; while ((cmdstr[++pos] != '=') && (pos < wm_strlen(cmdstr))); if (pos < wm_strlen(cmdstr)){ wm_strncpy( cmd, cmdstr, pos); wm_strncpy( para, cmdstr + pos + 1, wm_strlen(cmdstr)-pos); } else{ pos=0; while ((cmdstr[++pos] != '?') && (pos < wm_strlen(cmdstr))); if (pos < wm_strlen(cmdstr)) wm_strncpy( cmd, cmdstr, pos); result=100; } adl_atSendResponsePort(ADL_AT_RSP,ADL_PORT_UART1, "\r\n command :"); adl_atSendResponsePort(ADL_AT_RSP,ADL_PORT_UART1, cmd); Trang 54 adl_atSendResponsePort(ADL_AT_RSP,ADL_PORT_UART1, "\r\n para :"); adl_atSendResponsePort(ADL_AT_RSP,ADL_PORT_UART1, para); if (wm_strcmp(cmd,"AT+DESTEL")==0) result += 1; if (wm_strcmp(cmd,"AT+CTRLTEL")==0) result += 2; if (wm_strcmp(cmd,"AT+IP")==0) result += 3; if (wm_strcmp(cmd,"AT+PORT")==0) result += 4; if (wm_strcmp(cmd,"AT+PERIOD")==0) result += 5; if (wm_strcmp(cmd,"AT+SENDTCP")==0) result += 6; if (wm_strcmp(cmd,"AT+SENDSMS")==0) result += 7; if (wm_strcmp(cmd,"AT+DEVICE")==0) result += 8; wm_sprintf(str, "\r\n result %d:", result); adl_atSendResponsePort(ADL_AT_RSP,ADL_PORT_UART1, str); adl_memRelease(cmd); return result; } /**********************************************************************/ /* Function : SmsHandler */ /**********************************************************************/ bool SmsHandler( ascii * SmsTel, ascii * SmsTimeLength, ascii * SmsText) { s32 cmp_tel = -1; u8 sms_cmd; ascii *para; para = adl_memGet(20); TRACE ((3, "Da nhan duoc tin nhan ")); cmp_tel = wm_strcmp ( SmsTel, CtrlTel); if (cmp_tel == 0) { TRACE((4,"So may da dang ky ")); sms_cmd = Sms_Cmd_Parse(SmsText,para); switch (sms_cmd) { case 1: DesTel_Cmd_Act(para); break; case 2: CtrlTel_Cmd_Act(para); break; case 3: IP_Cmd_Act(para); break; case 4: Port_Cmd_Act(para); break; case 5: Period_Cmd_Act(para); break; case 6: sendsms_Cmd_Act(para); break; case 7: sendtcp_Cmd_Act(para); break; case 8: Device_Cmd_Act(para); break; case 101: break; case 102: break; Trang 55 case 103: break; case 104: break; case 105: break; case 106: break; case 107: break; case 108: break; default: adl_atCmdSend(SmsText,(adl_atRspHandler_t) SmsCmdRspHandler,"*",NULL); break; } if (sms_cmd !=0) adl_smsSend(SmsHandle,SmsTel,SmsText,ADL_SMS_MODE_TEXT); } else { adl_smsSend(SmsHandle, SmsTel, "So may khong duoc dang ky Vui long dang ky ",ADL_SMS_MODE_TEXT); TRACE((4,"Khong phai so may dang ky nen khong duoc phep dang nhap vao he thong ")); } return TRUE; } void LdConf() { // flash memory to store telephone number u16 nbObj=2; DesTel = adl_memGet (13); wm_memset(DesTel,0,13); wm_strcpy(DesTel,"+84983189984"); CtrlTel = adl_memGet (13); wm_memset(CtrlTel,0,13); wm_strcpy(CtrlTel,"+84983189984"); ret = adl_flhSubscribe (TelFlhHandle,nbObj+1); wm_sprintf(str, "adl flhSubcribe = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); if(adl_flhExist(TelFlhHandle,1) == 0){ ret = adl_flhWrite(TelFlhHandle,1,12,DesTel); wm_sprintf(str, "adl flhWrite1 = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); } else { ret = adl_flhRead(TelFlhHandle,1,12,DesTel); Trang 56 wm_sprintf(str, "adl flhRd1 = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); adl_atSendResponse(ADL_AT_UNS, DesTel); } if(adl_flhExist(TelFlhHandle,2) == 0) { ret = adl_flhWrite(TelFlhHandle,2,12,CtrlTel); wm_sprintf(str, "adl flhWrite2 = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); } else { ret = adl_flhRead(TelFlhHandle,2,12,CtrlTel); wm_sprintf(str, "adl flhRd2 = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); adl_atSendResponse(ADL_AT_UNS, DesTel); } //////////////////////////////////////////////// DevID = adl_memGet (15); wm_memset(DevID,0,15); wm_strcpy(DevID,"Dev1"); ret = adl_flhSubscribe (DevFlhHandle,nbObj); wm_sprintf(str, "adl DevflhSubcribe = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); if(adl_flhExist(DevFlhHandle,1) == 0){ ret = adl_flhWrite(DevFlhHandle,1,15,DevID); wm_sprintf(str, "adl DevflhWrite = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); } else { ret = adl_flhRead(DevFlhHandle,1,15,DevID); wm_sprintf(str, "adl DevIDflhRd = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); adl_atSendResponse(ADL_AT_UNS, DevID); } IP = adl_memGet(25); wm_memset(IP,0,25); wm_strcpy(IP,"users3.jabry.com"); Port = adl_memGet (3); wm_memset(Port,0,3); wm_strcpy(Port,"80"); Period = adl_memGet (3); Trang 57 wm_memset(Period,0,3); wm_strcpy(Period,"30"); ret = adl_flhSubscribe (Ip_FlhHandle,nbObj); wm_sprintf(str, "adl IPflhSubcribe = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); if(adl_flhExist(Ip_FlhHandle,1) == 0){ ret = adl_flhWrite(Ip_FlhHandle,1,25,IP); wm_sprintf(str, "adl IPflhWrite = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); } else { ret = adl_flhRead(Ip_FlhHandle,1,25,IP); wm_sprintf(str, "adl IPflhRd1 = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); adl_atSendResponse(ADL_AT_UNS, IP); } ret = adl_flhSubscribe (PortFlhHandle,nbObj); wm_sprintf(str, "adl PortflhSubcribe = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); if(adl_flhExist(PortFlhHandle,1) == 0){ ret = adl_flhWrite(PortFlhHandle,1,3,Port); wm_sprintf(str, "adl PortflhWrite = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); } else { ret = adl_flhRead(PortFlhHandle,1,3,Port); wm_sprintf(str, "adl PortflhRd1 = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); adl_atSendResponse(ADL_AT_UNS, Port); } ret = adl_flhSubscribe (PerFlhHandle,nbObj); wm_sprintf(str, "adl PeriodFlhSubcribe = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); if(adl_flhExist(PerFlhHandle,1) == 0){ ret = adl_flhWrite(PerFlhHandle,1,3,Period); wm_sprintf(str, "adl PeriodFlhWrite = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); } else { ret = adl_flhRead(PerFlhHandle,1,3,Period); wm_sprintf(str, "adl PeriodFlhRd1 = %d", ret); adl_atSendResponse(ADL_AT_UNS, str); Trang 58 adl_atSendResponse(ADL_AT_UNS, Period); } } void Subcribe_Atcmd() { adl_atCmdSubscribe("AT+TEST",Test_Cmd_Haldler, ADL_CMD_TYPE_ACT); adl_atCmdSubscribe ( "AT+START", start_Cmd_Handler, ADL_CMD_TYPE_PARA | 0X0011); adl_atCmdSubscribe ( "AT+STOP", stop_Cmd_Handler, ADL_CMD_TYPE_PARA | 0X0011); adl_atCmdSubscribe ( "AT+DESTEL", DesTel_Cmd_Handler, ADL_CMD_TYPE_PARA | 0X0011); adl_atCmdSubscribe ( "AT+CTRLTEL", CtrlTel_Cmd_Handler, ADL_CMD_TYPE_PARA | 0X0011); adl_atCmdSubscribe ( "AT+DEVID", DevID_Cmd_Handler, ADL_CMD_TYPE_TEST | ADL_CMD_TYPE_READ | ADL_CMD_TYPE_PARA | 0X0011); adl_atCmdSubscribe ( "AT+IP", IP_Cmd_Handler, ADL_CMD_TYPE_PARA | 0X0011); adl_atCmdSubscribe ( "AT+Port", Port_Cmd_Handler, ADL_CMD_TYPE_PARA | 0X0011); adl_atCmdSubscribe ( "AT+Period", Period_Cmd_Handler, ADL_CMD_TYPE_PARA | 0X0011); adl_atCmdSubscribe ( "AT+SENDSMS", sendsms_Cmd_Handler, ADL_CMD_TYPE_PARA | 0X0011); adl_atCmdSubscribe ( "AT+SENDTCP", sendtcp_Cmd_Handler, ADL_CMD_TYPE_PARA | 0X0011); adl_atCmdSubscribe ( "AT+DEVICE", Device_Cmd_Handler, ADL_CMD_TYPE_PARA | 0X0011); } Trang 59 /**********************************************************************/ /* Function : adl_main */ /* -*/ /* Object : Customer application initialisation */ /* Return : None */ /**********************************************************************/ void adl_main (adl_InitType_e adlInitType) { TRACE((1,"Main function")); str = adl_memGet (30); wm_memset(str,0,30); st_TEMP = adl_memGet (6); wm_memset(st_TEMP,0,6); st_HUMI = adl_memGet (6); wm_memset(st_HUMI,0,6); st_Http = adl_memGet (100); wm_memset(st_Http,0,100); st_Sms = adl_memGet (50); wm_memset(st_Sms,0,50); sendSMS = TRUE; sendTCP = FALSE; cnt_timer=0; LdConf(); Subcribe_Atcmd(); Timer = adl_tmrSubscribe ( TRUE, 1, ADL_TMR_TYPE_TICK, TimerHandler ); SmsHandle = adl_smsSubscribe ( SmsHandler, SmsCtrlHandler, ADL_SMS_MODE_TEXT ); /* Subscribe to the SIM events */ adl_simSubscribe (( adl_simHdlr_f ) SimHandler, NULL); /* Initialize the stack */ wip_netInit(); } Trang 60 TÀI LIỆU THAM KHẢO [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] Matos et al., “Digital temperature and humidity monitoring unit for remote applications”, IEEE International Symposium on Consumer Electronics, ISCE 2008 Peter Leijdekkers, Valerie Gay, “Personal Heart Monitoring System Using Smart Phones To Detect Life Threatening Arrhythmias”, Computer-Based Medical Systems, 19th IEEE International Symposium on, 2006, pp 157 – 164 N Wang et al., “Wireless sensors in agriculture and food industry—Recent development and future perspective”, Computers and Electronics in Agriculture, 2006, pp.1-14 Daniel J.S Lim, Vishy Karri, “Remote Monitoring and Control for Hydrogen Safety via SMS”, 1st International Conference on Sensing Technology, November 21-23, 2005, Palmerston North, New Zealand William Enck et al., “Exploiting Open Functionality in SMS Capable Cellular Networks”, CCS’05, November 7–11, 2005, Alexandria, Virginia, USA K Martinez et al., “Glacial Environment Monitoring using Sensor Networks”, REALWSN’05, June 21–22, 2005, Stockholm, Sweden Ting L Chien, Kuo L Su, Jr H Guo, “Develop a Multi Interface Based Detection Module for Home Automation”, 2nd International Conference on Autonomous Robots and Agents December 13-15, 2004 Palmerston North, New Zealand Alan Mainwaring, Wireless Sensor Networks for Habitat Monitoring, WSNA’02, September 28, 2002, Atlanta, Georgia, USA Mafalda Seixas, João Palma, “Remote Alarm and Command System for Residential Domotics Through GSM – SMS”, Laboratório Nacional de Engenharia Civil, CIC Av Brasil, 101, 1700-066 Lisboa, Portugal Geoff Sanders et al., ”GPRS Networks”, Wiley, 2003 (ISBN 0-470-85317-4) Wireless CPU, http://www.wavecom.com Dịch vụ di động, http://www.mobifone.com.vn, http://www.vinaphone.com.vn, http://www.viettel.com.vn Wavecom, “Open AT® ADL Development Guide” Sensiron the sensor company, SHT75 datasheet, www.datasheet4u.com Wavecom, “WIP Plug-in Development Guide” Trang 61