Điều khiển từ xa qua tin nhắn SMS sử dụng PIC

Chương 1 Dẫn nhập 2 1.1. Giới thiệu đề tài . 2 1.2. Ý nghĩa khoa học của đề tài 3 1.3. Mục đích nghiên cứu .3 1.4. Giới hạn đề tài . 4 Chương 2 Cơ sở lí luận .5 2.1. Tình hình nghiên cứu trong nước và ngoài nước . . 5 2.1.1 Ngoài nước 5 2.2.1 Trong nước 7 2.2. Ý tưởng thiết kế . . 8 2.3. Đề cương nghiên cứu chi tiết . 8 2.4. Phương pháp nghiên cứu . .9 2.5. Phương tiện nghiên cứu 9 2.6. Kế hoạch thực hiện 9 Chương 3 Truyền dữ liệu và giao tiếp máy tính 10 3.1. Tổng quan về tin nhắn SMS 10 3.1.1 Giới thiệu về SMS 10 3.1.2 Cấu trúc một tin nhắn SMS 10 3.1.3 Tin nhắn SMS chuỗi/tin nhắn SMS dài . 12 3.1.4 SMS centre/SMSC 13 3.1.5 Nhắn tin SMS quốc tế 13 3.1.6 SMS Gateway . 14 3.1.7 Mã nguồn mở và phần mềm SMS gateway 17 3.2. Tổng quan về hệ thống truyền dữ liệu . 17 3.2.1 Cấu trúc một hệ thống thông tin .17 3.2.2 Phân loại các hệ thống thông tin 19 3.2.2.1. Phân loại theo đường truyền 19 3.2.2.2. Phân loại theo tín hiệu trên đường truyền .19 3.2.2.3. Phân loại theo số bit trên một đường dây .19 3.2.2.4. Phân loại dựa vào xung nhịp đồng hồ Ck của bộ phát và bộ thu 19 3.2.2.5. Phân loại theo chiều tín hiệu trên đường truyền .19 3.2.3 Giao tiếp song song bất đồng bộ 19 3.2.3.1. Sơ đồ khối 19 3.2.3.2. Hoạt động của hệ thống 21 3.2.4 Giao tiếp nối tiếp bất đồng bộ 21 3.2.4.1. Phát dữ liệu nối tiếp 22 3.2.4.2. Thu dữ liệu nối tiếp 22 3.3. Kỹ thuật ghép nối và giao tiếp máy tính .23 3.3.1 Cổng nối tiếp RS232 .23 3.3.1.1 Giới thiệu . 23 3.3.1.2 Các loại kết nối 23 3.3.1.3 Đặc tính điện .25 3.3.1.4 Các phương pháp giao tiếp 25 3.3.1.5 Thủ tục giao tiếp .27 3.3.1.6 Các loại cáp 27 3.3.1.7 Thủ tục truyền nhận 29 3.3.2 Giao tiếp điện thoại với máy tính qua USB Modem .30 3.3.2.1 Giới thiệu 30 3.3.2.2 Cài đặt và sử dụng Driver cho USB Modem 31 3.3.2.3 Kiểm tra Com Portname 35 3.3.2.4 Kiểm tra những Mobile phone được hỗ trợ tập lệnh AT 38 Chương 4 Thiết kế 40 4.1. Phương án thiết kế . 40 4.2. Sơ đồ khối toàn hệ thống và chức năng từng khối . 40 4.3. Sơ đồ nguyên lí phần cứng hệ thống. .42 4.4. Sơ đồ nguyên lí các khối của hệ thống 43 4.4.1 Khối xử lí trung tâm . 43 4.4.2 Khối cảm biến .63 4.4.3 Khối giao tiếp LCD và Keypad 66 4.4.4 Khối công suất 76 Chương 5 Xây dựng phần mềm điều khiển 81 5.1. Xây dựng phần mềm điều khiển cho phần cứng .81 5.2. Xây dựng phần mềm điều khiển trên máy tính .84 Chương 6 Thi công 90 6.1. Thi công phần cứng .90 6.2. Giao diện phần mềm trên máy tính 94 Chương 7 Kết luận 95 7.1. Tóm tắt 95 7.2. Hướng phát triển đề tài . 97 Phần C Phụ lục 98 Hướng dẫn sử dụng phần mềm 150 Tài liệu tham khảo 153

pdf164 trang | Chia sẻ: banmai | Lượt xem: 2100 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Điều khiển từ xa qua tin nhắn SMS sử dụng PIC, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ếp tục gửi cho đến khi tất cả các ký tự 10 byte của mảng được truyền, hoặc nó tìm thấy một byte bằng 0 (NULL). Lệnh đọc giá trị từ bộ ADC Cú pháp: Variable = ADIN channel number Biến = ADIN kênh Chức năng: Dùng để đọc giá trị từ tín hiệu Analoge chuyển sang tín hiệu số Hoạt động: Biến là do người dùng định nghĩa Chân của kênh do người dùng chọn Ví dụ: ' Đọc giá trị từ kênh 0 của ADECLARE và đặt kết quả lưu trong biến DECLARE ADIN_RES 10 ' lưu kết quả tron 10 bit DECLARE ADIN_TAD FRC ' RC OSC được chọn DECLARE ADIN_STIME 50 ' thời gian lấy mẫu 50us DIM VAR1 as WORD Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 125 -  TRISA = %00000001 ' Set analogue input on PORTA.0 ADECLAREON1 ADCON1 = %10000000 ' Cấu hình AN0 (PORTA.0) như ngõ vào ADECLAREON0 = %11000001 VAR1 = ADIN 0 ' đặt kết quả vào VAR1 Có 3 loại DECLARE dùng để lưu kết quả là : DECLARE ADIN_RES 8 , 10 , or 12. ‘Đặt số Bit cho kết quả. Nếu DECLARE không được dùng thì mặc định là 8 Bit cho Pic16F877A.Cho ví dụ nếu là họ Pic16F87X thì kết quả có độ phân giải 10 bit, trong khi loại này mặc đinh sẽ xuất ra kết quả 8 Bit. Nhưng khi ta dùng DECLARE thì có thể khai báo dùng 10 Bit và khi khai báo DECLARE thì thiết bị cho phép lưu kết quả 8 Bit nhưng không lưu được kết quả 12 Bit cho loại VDK có độ phân giải 10 Bit này DECLARE ADIN_TAD 2_FOSC , 8_FOSC , 32_FOSC , or FRC. ‘đặt xung clock cho ADECLARE Việc lựa chọn nguồn xung này cũng ảnh hưởng đến thời gian chuyển đổi dữ liệu và có thể không được chuyển đổi chính xác. DECLARE ADIN_STIME 0 to 65535 microseconds (us). Cho phép tụ giữ bên trong VDK được nạp đầy trước khi lấy mẫu. điều này có thể là 1 giá trị từ 0 đến 65535(us) Một giá trị đặc trưng cho ADIN_STIME là từ 50 đến 100. Điều này cho phép tương thích với thời gian nạp mà không ảnh hưởng nhiều đến thời gian chuyển đổi Chú ý là trước khi lệnh ADIN được sử dụng thì thanh ghi TRISA phải cho phép các chân nhận dữ liệu tương ứng là ngõ vào Ví dụ : Again: VAR1 = ADIN 3 ' Place the conversion into variable VAR1 DELAYUS 1 ' Wait for 1us GOTO Again ' Read the ADECLARE forever Lệnh xuất ra LCD : Lệnh Print Cú pháp: PRINT Item { , Item... } Chức năng: Gửi một đoạn văn đến LCD Item có thể là 1 hằng , biến, hay một toán tử, một chuỗi Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 126 -  Khai báo LCD LCD_DTPIN = PORTB.4 ‘ chọn chân kết nối dữ liệu LCD_RSPIN = PORTB.3 ‘ chọn chân kết nối RS LCD_ENPIN = PORTB.2 ‘ chọn chân kết nối RS LCD_INTERFACE = 4 ‘ giao tiếp theo chế độ 4 bit(hoặc 8 bit) LCD_LINES = 2 ‘ mặc định 2 hàng LCD_TYPE = 0 ‘ 0 : mặc định là LCD trắng đen Khởi tạo LCD Lệnh điều khiển Hoạt động $FE, 1 Xóa màn hình $FE, 2 Trả về ban đầu $FE, $0C Tắt con trỏ $FE, $0E Dấu gạch dưới con trỏ $FE, $0F Nhấp nháy con trỏ $FE, $10 Dịch con trỏ sang trái một vị trí $FE, $14 Dịch con trỏ sang phải một vị trí $FE, $C0 Dịch con trỏ đến đầu dòng thứ hai Print $FE,1 : delayms 30 xóa màn hình và đợi 30ms Print $FE,2 Print $FE,$0E Xuất dữ liệu ra LCD Print at 1,1,@bien Xuất giá trị thập phân bien ra LCD tại vị trí hàng 1,ô thứ 1 3. CHƯƠNG TRÌNH NHẬN DỮ LIỆU VÀ ĐỌC NHIỆT ĐỘ: include "PROTON_12.INC" dim nhandulieu as byte dim baodong as byte nhietdo var word 'Khoi tao ADC ADIN_RES 10 ' ket qua 10 bit ADIN_STIME 50 ' thoi gian lay mau TRISA.0 = 1 'kenh RA0 nhan tin hieu ADCON1 = %10001110 ' chon ket qua 10bit ben trai cua thanh ghi ket qua ADCON0 = %11000001 ' chon xung noi,RA0,va ADON = 1 Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 127 -  serin portc.7,t2400,600,Loop,[dec nhandulieu] ' nhan du lieu tu phan mem ' nhan du lieu tuong ung voi den if nhandulieu = 11 then portb.3 = 0 ' den1 mo if nhandulieu = 10 then portb.3 = 1' den1 tat if nhandulieu = 21 then portb.2 = 0' den2 mo if nhandulieu = 20 then portb.2 = 1' den2 tat if nhandulieu = 31 then portb.1 = 0' den1 mo if nhandulieu = 30 then portb.1 = 1' den1 tat if nhandulieu = 41 then portb.0 = 0' den2 mo if nhandulieu = 40 then portb.0 = 1' den2 tat if nhandulieu = 51 then portc.2 = 0' den1 mo if nhandulieu = 50 then portc.2 = 1' den1 tat if nhandulieu = 61 then portc.3 = 0' den2 mo if nhandulieu = 60 then portc.3 = 1' den2 tat if nhandulieu = 71 then portc.4 = 0' den1 mo if nhandulieu = 70 then portc.4 = 1' den1 tat if nhandulieu = 81 then portc.5 = 0' den2 mo if nhandulieu = 80 then portc.5 = 1' den2 tat ' den12 mo if nhandulieu = 121 then portb.0 = 0 portb.1 = 0 portb.2 = 0 portb.3 = 0 portc.2 = 0 portc.3 = 0 portc.4 = 0 portc.5 = 0 endif ' den12 tat if nhandulieu = 120 then portb.0 = 1 portb.1 = 1 portb.2 = 1 portb.3 = 1 portc.2 = 1 portc.3 = 1 portc.4 = 1 portc.5 = 1 endif ' lenh mo cong if nhandulieu = 222 then porta.1 = 0 Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 128 -  porta.2 = 1 sai = 3 endif nhietdo = ADIN 0 ' doc nhiet do tai RA0 nhietdo = nhietdo / 2 ' nhiet do chia 2 vi do phan giai 10bit serout portc.6,t2400,[@nhietdo,13] ' xuat nhiet do len phan mem 4. CHƯƠNG TRÌNH GIAO TIẾP KEYPAD VÀ LCD: col var byte row var byte key var byte dim tam[5] as byte i as byte dim kiemtra as byte dim sai as byte trisb = 0 portb = $ff trisc = %01000000 portc = $ff trisa.1 = 0 trisa.2 = 0 porta.1 = 1 porta.2 = 1 'Khoi tao LCD print $fe,1 : delayms 30 'doi 30ms cho LCD len nguon print $fe,2 'xoa du lieu, bat dau dong dau tien Print $FE,$0E 'dau "_" i = 1 kiemtra = 0 sai = 3 baodong = 0 Loop: For Col = 4 to 7 if sai 0 then print at 1,1,"Fill in Password" if sai = 0 then print at 1,1,"Lock Key " PORTd = 0 ' Ngo ra portd muc thap TRISd = (Dcd Col) ^ $ff' cot tuong ung se xuong 0 Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 129 -  while (portd $f0 row = portd << 4 & $ff Key = (Col * 3) + (Ncd (Row ^ $f0)) 'phep tinh so phim key = key - 16 ' so phim tru 16 de dua ve gia tri dung if key = 11 then key = 0 tam[i-1] = key 'luu ma phim va bien mang bien tam if key 10 then print at 2,i,dec key if key = 12 then cls kiemtra = 0 porta.2 = 1 tam[0] = 0 i = 0 endif tam[4] = 0 ' cho gia tri cua bien tam cuoi cung bang Null if tam[0] = 1 then if tam[1] = 2 then if tam[2] = 3 then if tam[3] = 4 then kiemtra = 1 if key = 10 then if kiemtra = 1 then print at 2,1,"Open the door" porta.2 = 0 i = 0 else sai = sai - 1 print at 2,1,"Wrong password" delayms 300 print at 2,1,"please wait . . ." delayms 300 print at 2,1,"Remain ",dec sai," times" endif endif delayms 400 i = i + 1 if i = 5 then i = 1 while sai = 0 porta.1 = 0 print at 1,1, "Lock key " print at 2,1,"Contact Host " goto loop wend Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 130 -  Chương trình chính tổng quát khi ghép nối hai chương trình trên: Include "PROTON_12.INC" dim nhandulieu as byte dim baodong as byte nhietdo var word col var byte row var byte key var byte dim tam[5] as byte dim i as byte dim kiemtra as byte dim sai as byte dim backup[9] as byte delayms 500 ' tri hoan 500ms cho vi dieu khien duoc cap nguon 'Khoi tao ADC ADIN_RES 10 ' ket qua 10 bit ADIN_STIME 50 ' thoi gian lay mau trisb = 0 portb = $ff trisc = %01000000 portc = $ff TRISA.0 = 1 'kenh RA0 nhan tin hieu trisa.1 = 0 trisa.2 = 0 porta.1 = 1 porta.2 = 1 ADCON1 = %10001110 ' chon ket qua 10bit ben trai cua thanh ghi ket qua ADCON0 = %11000001' chon xung noi,RA0,va ADON = 1 'Khoi tao LCD print $fe,1 : delayms 30 'doi 30ms cho LCD len nguon print $fe,2 'xoa du lieu, bat dau dong dau tien Print $FE,$0E 'dau "_" i = 1 kiemtra = 0 sai = 3 baodong = 0 Main: serin portc.7,t2400,600,Loop,[dec nhandulieu] ' nhan du lieu tu phan mem ' nhan du lieu tuong ung voi den Loop: For Col = 4 to 7 Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 131 -  if sai 0 then print at 1,1,"Fill in Password" if sai = 0 then print at 1,1,"Lock Key " PORTd = 0 ' Ngo ra portd muc thap TRISd = (Dcd Col) ^ $ff ' cot tuong ung se xuong 0 if nhandulieu = 11 then portb.3 = 0 ' den1 mo if nhandulieu = 10 then portb.3 = 1' den1 tat if nhandulieu = 21 then portb.2 = 0' den2 mo if nhandulieu = 20 then portb.2 = 1 ' den2 tat if nhandulieu = 31 then portb.1 = 0 ' den1 mo if nhandulieu = 30 then portb.1 = 1' den1 tat if nhandulieu = 41 then portb.0 = 0' den2 mo if nhandulieu = 40 then portb.0 = 1' den2 tat if nhandulieu = 51 then portc.2 = 0' den1 mo if nhandulieu = 50 then portc.2 = 1' den1 tat if nhandulieu = 61 then portc.3 = 0' den2 mo if nhandulieu = 60 then portc.3 = 1' den2 tat if nhandulieu = 71 then portc.4 = 0' den1 mo if nhandulieu = 70 then portc.4 = 1' den1 tat if nhandulieu = 81 then portc.5 = 0' den2 mo if nhandulieu = 80 then portc.5 = 1' den2 tat ' den12 mo if nhandulieu = 121 then portb.0 = 0 portb.1 = 0 portb.2 = 0 portb.3 = 0 portc.2 = 0 portc.3 = 0 portc.4 = 0 portc.5 = 0 endif ' den12 tat if nhandulieu = 120 then portb.0 = 1 portb.1 = 1 portb.2 = 1 portb.3 = 1 portc.2 = 1 portc.3 = 1 portc.4 = 1 portc.5 = 1 endif Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 132 -  ' lenh mo cong if nhandulieu = 222 then porta.1 = 0 porta.2 = 1 sai = 3 endif if nhandulieu = 211 then backup[0] = portb.3 backup[1] = portb.2 backup[2] = portb.1 backup[3] = portb.0 backup[4] = portc.2 backup[5] = portc.3 backup[6] = portc.4 backup[7] = portc.5 backup[8] = 0 serout portc.6,t2400,[str backup] endif if nhandulieu = 100 then nhietdo = ADIN 0' doc nhiet do tai RA0 nhietdo = nhietdo / 2 ' nhiet do chia 2 vi do phan giai 10bit serout portc.6,t2400,[@nhietdo,13] ' xuat nhiet do len phan mem endif while (portd $f0 row = portd << 4 & $ff Key = (Col * 3) + (Ncd (Row ^ $f0)) 'phep tinh so phim key = key - 16 ' so phim tru 16 de dua ve gia tri dung if key = 11 then key = 0 tam[i-1] = key 'luu ma phim va bien mang bien tam if key 10 then print at 2,i,dec key if key = 12 then cls kiemtra = 0 porta.2 = 1 tam[0] = 0 i = 0 endif tam[4] = 0 ' cho gia tri cua bien tam cuoi cung bang Null if tam[0] = 1 then if tam[1] = 2 then if tam[2] = 3 then if tam[3] = 4 then kiemtra = 1 if key = 10 then if kiemtra = 1 then Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 133 -  print at 2,1,"Open the door" porta.2 = 0 i = 0 else sai = sai - 1 print at 2,1,"Wrong password" delayms 300 print at 2,1,"please wait . . ." delayms 300 print at 2,1,"Remain ",dec sai," times" endif endif delayms 400 i = i + 1 if i = 5 then i = 1 while sai = 0 porta.1 = 0 print at 1,1, "Lock key " print at 2,1,"Contact Host " goto main wend wend Next goto Main end FILE KÈM THEO PROTON_4.INC: DEVICE = 16F877 XTAL = 4 ‘ thach anh 4Mhz LCD_DTPIN = PORTb.4 LCD_RSPIN = PORTb.2 LCD_ENPIN = PORTb.3 LCD_INTERFACE = 4' 4-bit Interface LCD_LINES = 2 LCD_TYPE = 0 ‘ khai bao LCD symbol T300 = 3313 Symbol N300 = 3313 + $4000 Symbol T600 = 1646 Symbol N600 = 1646 + $4000 Symbol T1200 = 813 Symbol N1200 = 813 + $4000 Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 134 -  Symbol T2400 = 396 Symbol N2400 = 396 + $4000 Symbol T4800 = 188 Symbol N4800 = 188 + $4000 Symbol T9600 = 84 Symbol N9600 = 84 + $4000 Symbol OT2400 = 396 + $8000 ' Open True Symbol OT1200 = 813 + $8000 ' Open True Symbol OT9600 = 84 + $8000 ' Open True Symbol OT300 = 3313 + $8000' Open True Symbol ON2400 = 396 + $4000 + $8000 ' Open Inverted Symbol ON1200 = 813 + $4000 + $8000 ' Open Inverted Symbol ON9600 = 84 + $4000 + $8000 ' Open Inverted Symbol ON300 = 3313 + $4000 + $8000' Open Inverted ‘ Khai bao cac toc do Baud III. TẬP LỆNH AT COMMAND 1. LỊCH SỬ PHÁT TRIỂN Các modem được sử dụng từ những ngày đầu của sự ra đời của máy tính. Từ Modem là một từ được hình thành từ hai từ modulator và demodulator. Và định nghĩa đặc trưng này cũng giúp ta hình dung được phần nào là thiết bị này sẽ làm cái gì. Dữ liệu số thì đến từ một DTE, thiết bị dữ liệu đầu cuối được điều chế theo cái cách mà nó có thể được truyền dữ liệu qua các đường dây truyền dẫn. Ở một mặt khác của đường dây, một modem thứ hai điều chế dữ liệu đến và xúc tiến, duy trì nó. Các modem ngày xưa chỉ tương thích cho việc gửi và nhận dữ liệu. Để thiết lập một kết nối thì một thiết bị thứ hai như một dialer thì được cần đến. Đôi khi kết nối cũng được thiết lập bằng tay bằng cách quay số điện thoại tương ứng và một khi modem được bật thì kết nối coi như được thực thi. Vấn đề này thì không có gì cần phải bàn cãi trong những ngày trước đây khi mà máy tính được sử dụng bởi những nhà kỹ thuật khéo léo, modem và các máy tính lớn. Các máy tính loại nhỏ ở các năm 70 thâm nhập vào thị trường là các gia đình, cùng với chi phí thì sự thiếu hụt về kiến thức kỹ thuật trở thành một đề tài cần thảo luận. Chúng ta đang nói về tuổi đời khi Internet, tele-banking và các ứng dụng truyền thông phổ biến khác khi mà chúng ta biết chúng bây giờ không còn tồn tại nữa rồi. Lí do chính của mọi người còn sử dụng modem đó là để kết nối với BBSes, Bullitin Board Systems. Các hệ thống máy tính chính thống được sử dụng bởi các công ty và các tính nguyện viên nơi mà mọi người có thể giao tiếp với người khác bằng cách sử dụng các board thông tin và up rồi download phần mềm cùng với các tiện tính. Với chi phí thấp thì dễ dàng cho việc sử dụng các modem, nó làm cho cộng việc này trở thành có thể thực thi. Ở điều kiện lí tưởng, các modem có thể quay các số điện thoại mong muốn mà không cần có giao diện dành cho người dùng hay một bộ quay số bên ngoài Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 135 -  Khi chúng ta xem trong RS232 port layout thì chuẩn RS232 miêu tả một kênh truyền thông với bộ kết nối 25 chân DB25, nó được thiết kế để thực thi quá trình truyền các lệnh điều khiển đến modem được kết nối với nó. Thao tác này bao gồm cả các lệnh quay một số điện thoại rõ ràng nào đó. Không may đó là các quá trình thực thi dùng RS232 với chi phí thấp này chỉ thể hiện trên các máy tính ở các hộ gia đình trong những năm 70, và kênh truyền thông thứ hai không được thực thi. Thế nên nhất thiết phải có một phương pháp đươc thiết lập để sử dụng kênh dữ liệu hiện tại để không chỉ truyền dữ liệu từ một điểm đầu cuối này tới một điểm đầu cuối khác mà nó còn có thể điều khiển lệnh nhắm tới modem duy nhất. Dennis Hayes đã đưa giải pháp cho vần đềnày trong năm 1977. Modem thông minh (Smartmodem) của ông sử dụng chuẩn truyền thông RS232 đơn giản kết nối tới một máy tính để truyền cả lệnh và dữ liệu . Bởi vì mỗi lệnh bắt đầu với chữ AT trong chữ Attention nên ngôn ngữ điều khiển được định nghĩa bởi Hayes nhanh chóng được biết tới với bộ lệnh Hayes AT. Chính vì sự đơn giản và khả năng thực thi với chi phí thấp của nó, bộ lệnh Hayes AT nhanh chóng được sử dụng phổ biến trong các modem của các nhà sản xuất khác nhau. Khi chức năng và độ tích hợp của các modem ngay càng tăng cùng với thời gian, nên làm cho ngôn ngữ lệnh Hayes AT và nhanh chóng mỗi nhà sản xuất modem đã sử dụng ngôn ngữ của riêng ông ấy. Ngày nay, bộ lệnh AT bao gồm cả các lệnh về dữ liệu, fax, voice và các truyền thông SMS. Các lệnh AT là các hướng dẫn được sử dụng để điều khiển một modem. AT là một cách viết gọn của chữ Attention. Mỗi dòng lệnh của nó bắt đầu với “AT” hay “at”. Đó là lí do tại sao các lệnh Modem được gọi là các lệnh AT. Nhiều lệnh của nó được sử dụng để điều khiển các modem quay số sử dụng dây mối (wired dial-up modems), chẳng hạn như ATD (Dial), ATA (Answer), ATH (Hool control) và ATO (return to online data state), cũng được hỗ trợ bởi các modem GSM/GPRS và các điện thoại di động. Bên cạch bộ lệnh AT thông dụng này, các modem GSM/GPRS và các điện thoại di động còn được hỗ trợ bởi một bộ lệnh AT đặc biệt đối với công nghệ GSM. Nó bao gồm các lệnh liên quan tới SMS như AT+ CMGS (gửi tin nhắn SMS), AT+CMSS (gửi tin nhắn SMS từ một vùng lư trữ), AT+CMGL (chuỗi liệt kê các tin nhắn SMS) và AT+CMGR (đọc tin nhắn SMS) Chú ý là khởi động “AT” là một tiền tố để thông báo tới modem về sự bắt đầu của một dòng lệnh. Nó không phải là một phần của tên lệnh AT. Ví dụ như D là một tên lệnh AT thực tế trong ATD và +CMGS là tên một lệnh AT thực tế trong AT+CMGS. Tuy nhiên, một số sách hay một số trang web lại sử dụng chúng thay cho nhau như là tên của một lệnh AT. Sau đây là một vài nhiệm vụ có thể được hoàn thành bằng cách sử dụng các lệnh AT kết hợp với sử dụng 1 modem GSM/GPRS hay một điện thoại di động: Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 136 -   Lấy thông tin cơ bản về điện thoại di động hay modem GSM/GPRS. Ví dụ như tên của nhà sản xuất (AT+CGMI), số model (AT+CGMM), số IMEI (International Mobile Equipment Identity) (AT+CGSN) và phiên bản phần mềm (AT+CGMR).  Lấy thông tin trạng thái hiện tại của điện thoại di động hay modem GSM/GPRS. Ví dụ như trạng thái hoạt động của điện thoại (AT+CPAS), trạng thái đăng kí mạng mobile (AT+CREG), chiều dài sóng radio (AT+CSQ), mức sạc bin và trạng thái sạc bin (AT+CBC).  Thiết lập một kết nối dữ liệu hay kết nối voice tới một remote điều khiển (ATD, ATA,..)  Gửi và nhận fax (ATD, ATA,AT+F*)  Gửi (AT+CMGS, AT+CMSS), đọc (AT+CMGR, AT+CMGL), viết (AT+CMGW) hay xóa tin nhắn SMS (AT+CMGD) và nhận các thông báo của các tin nhắn SMS nhận được mới nhất (AT+CNMI).  Đọc (AT+CPBR), viết (AT+CPBW) hay tìm kiếm (AT+CPBF) cá mục về danh bạ điện thoại (phonebook).  Thực thi các nhiệm vụ liên quan tới an toàn, chẳng hạn như mở hay đóng các khóa chức năng (AT+CLCK), kiểm tra xem một chức năng được khóa hay chưa (AT+CLCK) và thay đổi password (AT+CPWD). (Các ví dụ về khóa chức năng: khóa SIM [một password phải được cho vào thẻ SIM mỗi khi điện thoại được mở] và khóa PH-SIM [một thể SIM nào đó có liên kết tới điện thoại, và để sử dụng được các thẻ SIM khác thì buộc phải đăng nhập một password vào trong nó].)  Điều khiển hoạt động của các mã kết quả/các thông báo lỗi của các lệnh AT. Ví dụ, bạn có thể điều khiển cho phép hay không cho phép kích hoạt hiển thị thông báo lỗi (AT+CMEE) và các thông báo lỗi nên được hiển thị theo dạng số hay theo dạng dòng chữ (AT+CMEE=1 hay AT+CMEE=2).  Thiết lập hay thay đổi cấu hình của điện thoại di dộng hay modem GSM/GPRS. Ví dụ, thay đổi mạng GSM (AT+COPS), loại dịch vụ của bộ truyền tin (AT+CBST), các thông số protocol liên kết với radio (AT+CRLP), địa chỉ trung tâm SMS (AT+CSCA) và khu vực lưu trữ các tin nhắn SMS (AT+CPMS).  Lưu và phục hồi các cấu hình của điện thoại di động hay modem GSM/GPRS. Ví du, lưu (AT+COPS) và phục hồi (AT+CRES) các thiết lập liên quan tới tin nhắn SMS chẳng hạn như địa chỉ trung tâm tin nhắn SMS. Chú ý là nhà sản xuất điện thoại di động thường không thi hành tất cả các lệnh AT, các thông số lệnh và các giá trị của tham số trong các điện thoại di động. Trạng thái hành vi của các lệnh AT thực thi có thể cũng khác so với các định nghĩa chuẩn trước đó. Nói chung, các modem GSM/GPRS được thiết kế dành cho các ứng dụng Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 137 -  wireless mà có được các hỗ trợ tốt về các lệnh AT hơn là các điện thoại di động thông thừơng khác. Thêm vào đó, một vài lệnh AT yêu cầu sự hỗ trợ từ các tổng đài của mạng di động. Ví dụ, SMS thông qua GPRS có thể được kích hoạt trên các điện thoại di động có sử dụng GPRS và các modem GPRS với lệnh +CGSMS (tên lệnh ở dạng text: Select Service for MO SMS Messages). Nhưng nếu tổng đài mạng điện thoại không hỗ trợ quá trình truyền dẫn SMS thông qua GPRS, thì bạn không thể sử dụng chức năng này được. 2. MODEM GSM & MODEM GPRS: 2.1. Modem GSM Một modem GSM là một modem wireless, nó làm việc cùng với một mạng wireless GSM. Một modem wireless thì cũng hoạt động giống như một modem quay số. Điểm khác nhau chính ở đây là modem quay số thì truyền và nhận dữ liệu thông qua một đường dây điện thoại cố định trong khi đó một modem wireless thì gửi và nhận dữ liệu thông qua sóng radio . Một modem GSM có thể là một thiết bị mở rộng bên ngoài hay một PC Card/PCMCIA Card. Điển hình đó là một modem GSM rời bên ngoài được kết nối với một máy tính thông qua một cáp nối tiếp hay một cáp USB. Một modem GSM hợp chuẩn với một PC Card/PCMCIA Card được thiết kế cho việc sử dụng với môt máy tính laptop. Nó được gắn vào một trong những khe cắm PC Card/PCMCIA Card của một máy tính laptop. Giống như một điện thoại di động GSM, một modem GSM yêu cầu 1 thẻ SIM với một sóng mang wireless để hoạt động. Như đã đề cập trong mục trước đó về hướng dẫn về SMS, các máy tính sử dụng lệnh AT để điều khiển modem. Cả hai modem GSM và modem quay số đều có hỗ trợ một bộ các lệnh AT chuẩn chung. Vì thế bạn có thể sử dụng modem GSM hay modem quay số đều được. Bổ trợ cho các lệnh AT chuẩn, các modem GSM còn hỗ trợ một bộ lệnh AT mở rộng. Những lệnh AT mở rộng này được định nghĩa trong các chuẩn của GSM. Với các lệnh AT mở rộng này,bạn có thể làm một số thứ như sau: + Đọc,viết, xóa tin nhắn + Gửi tin nhắn SMS + Kiểm tra chiều dài tín hiệu + Kiểm tra trạng thái sạc bin và mức sạc của bin. + Đọc, viết và tìm kiếm về các mục danh bạ Số tin nhắn SMS có thể được thực thi bởi một modem SMS trên một phút là rất thấp, nó chỉ khoảng từ 6 đến 10 tin nhắn SMS trong 1 phút. Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 138 -  2.2. Modem GPRS : Một modem GPRS là một modem GSM mà có hỗ trợ thêm cộng nghệ GPRS cho việc truyền dữ liệu. GPRS hỗ trợ cho Dịch Vụ Radio Gói Đầy Đủ (General Packet Radio Service). Nó là một công nghệ truyền gói tin và là một mở rộng của GSM (GSM là một công nghệ chuyển mạch). Một ưu điểm đáng kể của GPRS trên nền GSM đó là GPRS có tốc độ truyền dữ liệu cao hơn. GPRS có thể được sử dụng giống như một bộ truyền tin của SMS. Nếu như SMS trên nền GPRS được sử dụng thì nó có thể đạt tới tốc độ truyền là 30 tin nhắn SMS trong một phút. Điều này cho thấy nó thực thi nhanh hơn nhiều so với sử dụng SMS trên nền GSM (với GSM thì tốc độ truyền chỉ khoảng 6 tới 10 tin nhắn SMS trong một phút). Cần phải có modem GPRS để truyền và nhận tin nhắn SMS trền nền GPRS. Và cần chú ý là một vài sóng mang wireless không hỗ trợ việc gửi và nhận tín nhắn SMS trên nền GPRS. Nếu như chúng ta cần gửi hay nhận các tin nhắn SMS thì cần phải có một modem GPRS chuẩn. 2.3. Sự chọn lựa giữa: Mobile Phone và Modem GPRS Nói chung, một modem GSM/GPRS thường được khuyên dùng hơn dành cho máy tính cho việc gửi và nhận tin nhắn. Đó là bởi vì các điện thoại di động thường có những giới hạn nhất định nào đó của nó so với các modem GSM/GPRS. Say đây là một vài miêu tả giới hạn của nó. Một vài model điện thoại di động (chẳng hạn như Ericsson R380) không thể sử dụng với máy tính trong việc nhận các tin nhắn SMS ở dạng chuỗi nối tiếp nhau. Khi một thiết bị điện thoại di động nhận các tin nhắn SMS , tin nhắn này bao gồm tất cả các phần của một tin nhắn SMS nối chuỗi với nhau, nó kết hợp chúng lại với nhau thành một tin nhắn một cách tự động. Cách xử lí hợp lí nên là: khi thiết bị di động nhận các tin nhắn SMS mà các phần của tin nhắn này được kết nối móc chuỗi với nhau, nó đẩy chúng tới máy tính mà không kết hợp chúng lại Nhiều model điện thoại di động không thể sử dụng được với máy tính để nhận các tin nhắn MMS. Bởi vì khi chúng nhận một thông báo MMS, chúng sẽ xử lí nó một cách tự động thay vì đưa nó tới máy tính. Một điện thoại di động không hỗ trợ các lệnh AT, các tham số lệnh và các giá trị của tham số. Ví dụ, các thiết bị di động không hỗ trợ việc gửi và nhận các tin nhắn SMS ở chế độ text. Cho nên lệnh AT "AT+CMGF=1" (nó chỉ dẫn cho điện thoại di động sử dụng chế độ text) sẽ gây ra một thông báo lỗi phản hồi lại. Thường thì các modem GSM/GPRS hỗ trợ cho một bộ lệnh AT hoàn chỉnh nhiều hơn so với các thiết bị điện thoại di động. Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 139 -  Hầu hết các ứng dụng tin nhắn SMS phải ở chế độ sẵn sàng suốt 24 giờ trong một ngày (ví dụ như, ứng dụng tin nhắn SMS mà cung cấp dịch vu download nhạc chuông nên được chạy tại tất cả các thời gian trong ngày như thế người dùng mới có thể doanload nhạc chuông tại bất kỳ thời điểm nào mà họ muốn). Nếu như các ứng dụng sử dụng điện thoại di động để gửi và nhận các tin nhắn SMS thì chiếc điện thoại di dộng này phải được mở suốt cả ngày. Tuy nhiên một số model điện thoại di động không thể hoạt động khi tháo bin ra khỏi, thậm chí khi một adaptor AC được kết nối, điều đó có nghĩa là bin sẽ được nạp điện 24 tiếng trong một ngày. Bên cạnh các vấn đề trên, các điện thoại di động và các modem GSM/GPRS ít hay nhiều cũng giống nhau trong việc gửi và nhận các tin nhắn từ máy tính. Thực ra thì bạn có thể coi một lệnh AT được dùng để kích hoạt các thiết bị di động như "GSM/GPRS modem + keypad + display + ...". Có nhiều sự khác nhau giữa các điện thoại di động và các modem GSM/GPRS ở trong các giới hạn về tốc độ truyền tin SMS, vì thế yếu tố xác định cho tốc độ truyền tin nhắn SMS là mạng wireless. 3. Các thủ tục cần có cho việc gửi các lệnh AT tới một điện thoại di động hay một modem GSM/GPRS bằng cách sử dụng MS HyperTerminal. Để sử dụng MS HyperTerminal cho việc gửi các lệnh AT đến điện thoại di động hay modem GSM/GPRS, bạn cần phải thực hiện theo những bước như sau: 1. Cho một thẻ SIM vẫn còn gía trị vào vào trong điện thoại di động hay một modem GSM/GPRS. Bạn có thể kiếm được một thẻ SIM bằng cách mua dịch vụ GSM của một nhà phân phối mạng wireless 2. Kết nối điện thoại di động hay modem GSM/GPPRS của bạn tới máy tính và cài đặt driver của modem wireless tương ứng cho nó. Bạn sẽ tìn thấy driver của modem wireless trong đĩa CD mà nhà sản xuất cung cấp cho bạn. Và nếu như nhà sản xuất không cung cấp driver cho điện thoại hay modem GSM/GPRS thì bạn có thể vào trang web của nhà sản xuất để download nó về rồi cài vào. Còn nếu vào trang web của nàh sản xuất mà cũng không có thì bạn vẫn có thể sử dụng driver cho modem chuẩn của Window 3. Chạy MS HyperTerminal bằng cách chọn Start →Programs→Accessories → Communications → HyperTerminal. 4. Trong hộp thoại Connection Description, hãy gõ tên và chọn một biểu tượng icon mà bạn thích dùng cho kết nối này. Sau đó thì nhấn nút OK 5. Trong hộp thoại Connect to, chọn COM port mà điện thoại di động hay modem GSM/GPRS đang kết nối tới tại khay Connect using. Thí dụ, bạn có thể chọn CÓM khi điện thoại di động hay modem đang được kết nối với port COM1. Sau đó thì nhấn nút OK. Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 140 -  ( đôi khi sẽ có hơn một port COM ở trong khay Connect using. Để biết port COM nào được sử dụng bởi điện thoại di động hay modem GSM/GPRS thì hãy làm theo những bước sau đây: Trong Window 98: Vào Control Panel -> Modem sau đó click vào tab Diagnostics. Trong hộp thoại này bạn sẽ thấy port COM nào mà điện thoại di động hay modem GSM/GPRS đangđược kết nối. Trong Window2000 Vào Control Panel →Phone and Modem Options. Sau đó click vào tab Modems .Trong hộp thoại này bạn sẽ thấy port COM nào mà điện thoại di động hay modem GSM/GPRS đangđược kết nối.) 6. Hộp thoại Properties xuất hiện. Chọn các thiết lập port chính xác cho điện thoại di động hay modem GSM/GPRS. Sau đó click vào nút OK (Để tìm ra các thiết lập chính xác phù hợp với điện thoại di động hay modem GSM/GPRS thì có một cách đó là tra sổ hướng dẫn cầm tay của điện thoại di động của bạn hay modem GSM/GPRS. Và một cách khác là kiểm tra các thiết lập port được sử dụng cho driver của modem wireless mà bạn cài đặt trước đó). Để kiểm tra các thiết lập port được sử dụng cho driver của modem wireless trên nền Windows 98, hãy làm theo những bước sau: a.Vào Control Panel → Modem. b.Chọn điện thoại di động hay modem GSM/GPRS trong hộp thoại hiện ra. c.Click vào nút Properties d.Hộp thoại Properties hiện ra. Tại khu vực Maximum speeds tại tab General ứng với khu vực Bits per second HyperTerminal. Click vào tab Connection và bạn có thể tìm các thiết lập cho các bít dữ liệu, các bít parityvà bit stop. Click vào nút Advanced thì bạn có thể tìm thấy thiết lập cho điều khiển lưu lượng. Để kiểm tra các thiết lập port được sử dụng cho driver của modem wireless trên nền Windows 2000 và Windows XP, hãy làm theo những bước sau: a.Vào Control Panel→Phone and Modem Options→Modems tab. b.Chọn điện thoại di động hay modem GSM/GPRS trong hộp thoại hiện ra. c.Click vào nút Properties d.Hộp thoại Properties hiện ra. Click vào tab Advanced rồi sau đó Click vào nút Change Default Preferences Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 141 -  e.Hộp thoại Change Default Preferences xuất hiện. Khu vực Port Speed ở tab General tương ứng với khu vực Bits per second. Bạn cũng có thể tìm các thiết lập cho điều khiển lưu lượng ở tab General. Ở tab Advanced, bạn có thể tìm các thiết lập cho các bít dữ liệu, các bít parity và bít stop. Hình: Cửa sổ màn hình hộp thoại Properties của MS HyperTerminal trong Windows 98. 7. Gõ “AT” ở trong cửa sổ màn hình window chính. Một phản hồi “OK” sẽ được trả lời từ điện thoại di động hay modem GSM/GPRS Gõ “AT+CPIN?” trong cửa sổ màn hình window chính. Lệnh AT “AT+CPIN” được sử dụng để chất vần liệu điện thoại di động hay modem GSM/GPRS đang đợi một PIN có đúng không (personal identification number _số nhận dạng cá nhân, ví dụ như password). Nếu thấy có phản hồi là “+CPIN:READY”thì nó có nghĩa là thẻ SIM không yêu cầu có một PIN và nó đã sẵn sàng cho sử dụng. Còn nếu như thẻ SIM của bạn yêu cầu có một PIN thì bạn cần đặt PIN thông qua lệnh AT “AT+CPIN+”. Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 142 -  Hình: Cửa sổ màn hình chính của MS HyperTerminal trong windows 98. Nếu như bạn nhận được phản hồi như cửa sổ màn hình trên thì điện thoại di động hay modem GSM/GPRS đang hoạt động đúng. Và tới đây bạn có thể gõ cá lệnh AT theo ý riêng của bạn để điều khiển điện thoại di động hay modem GSM/GPRS. Để có những hiểu biết chi tiết hơn về cách sử dụng các lệnh AT để gửi và nhận các tin nhắn SMS sẽ được cung cấp trong các mục sau. Kiểm tra xem điện thoại di động hay modem GSM/GPRS có hỗ trợ việc sử dụng các lệnh AT để gửi, nhận và đọc các tin nhắn SMS. Sau khi kiểm tra xong các truyền thông giữ PC và điện thoại di động hay modem GSM/GPRS, thứ kế tiếp mà bạn muốn làm là kiểm tra xem điện thoại di động hay modem GSM/GPRS có hỗ trợ việc sử dụng các lệnh AT để truyền, nhận và đọc tin nhắn SMS không. Hầu hết các modem GSM/GPRS đều có hỗ trợ ba chức năng trên nhưng chỉ có một số điện thoại di động hỗ trợ các chức năng đó. Gửi tin nhắn SMS. Để hiểu xem một modem GSM/GPRS hay điện thoại di động có hỗ trợ việc gửi các tin nhắn SMS thông qua các lệnh AT hay không, bạn phải: 1.Sử dụng lệnh AT +CSMS (tên lệnh trong text: Select Message Service) để kiểm tra liệu xem các tin nhắn SMS có nguồn gốc từ mobile có được hỗ trợ không. 2.Thực thi các hoạt động test để kiểm tra liệu các lệnh AT +CMGW (tên lệnh ở dạng text: Send Message) và (hay) +CMSS (tên lệnh ở dạng text: Send Message from Storage) được hỗ trợ không. (bạn có thể kiểm tra các lệnh AT +CMGW [tên lệnh ở dạng text: Write Message to Memory] và +CMGD [tên lệnh ở dạng text: Delete Message] thêm vào khi đôi khi chúng được sử dụng chung với +CMSS) Nhận và đọc các tin nhắn SMS từ vùng lưu trữ tin nhắn Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 143 -  Để hiểu xem liệu một modem GSM/GPRS hay điện thoại di động có hỗ trợ nhận và đọc tin nhắn SMS thông qua các lệnh AT không thì bạn phải : 1.Sử dụng lệnh AT +CSMS (tên lệnh ở dạng text: Select Message Service) dùng để kiểm tra xem liệu các tin nhắn SMS kết cuối di động có được hỗ trợ không 2.Thực thi các hoạt động test để kiểm tra xem liệu +CNMI (tên lệnh ở dạng text: New Message Indications to TE), +CMGL (tên lệnh ở dạng text: List Messages) và (hay) +CMGR (tên lệnh ở dạng text: Read Message) có được hỗ trợ không. Nếu như modem GSM/GPRS hay điện thoại di động có hỗ lệnh AT +CNMI thì nó có thể gửi một thông báo hay trực tiếp xúc tiến tin nhắn tới PC bất cứ khi nào một tin nhắn SMS mới tới. Còn nếu như modem GSM/GPRS hay điện thoại di động không hỗ trợ lệnh +CNMI nhưng lai hỗ trợ lệnh +CMGL và/hay +CMGR thì PC phải có sự lựa chọn modem GSM/GPRS hay điện thoại di động theo thứ tự để biết nếu như có bất kỳ tin nhắn mới nào vừa tới nó. 4. Chế độ hoạt động: chế độ SMS text và chế độ SMS PDU: Chi tiết kỹ thuật của SMS được định nghĩa ở hai chế độ (hai mode),và ở hai chế độ đó modem GSM/GPRS hay điện thoại di động đều có thể hoạt động tốt với nó. Hai chế độ đó là :chế độ SMS text và chế độ SMS DPU. (chuẩn PDU dùng cho đơn vị dữ liệu Protocol). Chế độmà một modem GSM/GPRS hay điện thoại di động đang hoạt động tìm kiếm, xác định cấu trúc ngữ pháp của các lệnh AT SMS và định dạng của các đáp ứng trả lại sau khi thi hành. Dưới đây là các lệnh AT SMS mà nó có ảnh hưởng tới:  CMGS (Send Message_gửi tin nhắn)  CMSS (Send Message from Storage_gửi tin nhắn từ trung tâm lưu trữ)  CMGR (Read Message_đọc tin nhắn)  CMGL (List Messages_liệt kê các tin nhắn)  CMGW (Write Message to Memory_viết tin nhắn vào bộ nhớ)  CNMA (New Message Acknowledgement to ME/TA_Sự chấp nhận các tin nhắn mới tới ME/TA).  CMGC (Send Command_gửi tin nhắn). Hai lệnh AT sau chỉ hữu ích khi chế độ SMS text được sử dụng.  CSMP (Set Text Mode Parameters_đặt các tham số cho chế độ text)  CSDH (Show Text Mode Parameters_Chỉ ra các tham số ở chế độ text) 5. Sự so sánh giữa chế độ SMS text và chế độ SMS PDU: Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 144 -  Dưới đây chúng ta sẽ so sánh các khía cạch khác nhau giữa hai chế độ SMS text và SMS PDU. Sự so sánh này sẽ giúp chúng ta thấy được sự khác nhau giữa hai chế độ này và từ giúp ta có quyết định tốt hơn trong việc chọn lựa chế độ nào nên được sử dụng bởi ứng dụng tin nhắn SMS của bạn. Cấu trúc ngữ pháp của các lệnh AT SMS và các đáp ứng của nó: Khi modem GSM/GPRS hay điện thoại di động đang hoạt động trong các chế độ khác nhau thì cấu trúc ngữ pháp lệnh AT SMS nào đó và các đáp ứng của nó đưa lại sau khi thực thi lệnh là khác nhau. Sau đây là một ví dụ cho trình bày nói trên. Giả sử rằng bạn muốn gửi một tin nhắn SMS như sau: “It is easy to send text messages” đến một số điện thoại +85291234567 thì trong chế độ SMS text thì dòng lệnh bạn phải đánh vào là như sau: AT+CMGS="+85291234567"It is easy to send text messages. . Tuy nhiên nếu modem GSM/GPRS hay điện thoại di động đang hoạt động trong các chế độ SMS PDU thì việc thực thi dòng lệnh trên sẽ phát sinh ra một lỗi. Đó là do cấu trúc ngữ pháp của lệnh AT +CMGS được sử dụng theo một cách khác trong chế độ SMS DPU. Để thực thi nhiệm vụ trên thì dòng lệnh sau nên được thay thế vào: AT+CMGS=4207915892000000F001000B915892214365F7000021493 A283D0795C3F33C88FE06CDECLAREB6E32885EC6D341EDF27C1E3E97E72E Các giá trị được định nghĩa cho các tham số: Khi modem GSM/GPRS hay điện thoại di động đang hoạt động trong các chế độ khác nhau thì các giá trị của các tham số nào đó cũng khác nhau. Thường thì các giá trị dạng string được định nghĩa dành cho chế độ SMS text trong khi các giá trị số được định nghĩa dành cho chế độ PDU. Thí du, lệnh AT +CMGL được sử dụng để liệt kê các tin nhắn được lưu trữ trong kho lưu trữ tin nhắn. Nó sẽ lấy một tham số để chỉ ra trạng thái của các tin nhắn SMS được tìm, lấy về. Bảng thông số sau sẽ liệt kê các giá trị được định nghĩa cho các tham số trong hai chế độ text và chế độ PDU. Trạng thái tin nhắn Các giá trị định nghĩa trong chế độ text Các giá trị định nghĩa trong chế độ PDU Received unread "REC UNREAD" 0 Received read "REC READ" 1 Stored unsent "STO UNSENT" 2 Stored sent "STO SENT" 3 All messages "ALL" 4 Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 145 -  Giả sử rằng bạn muốn liệt kê tất cả cac1tin nhắn từ trung tâm lưu trữ tin nhắn. Nếu như modem GSM/GPRS hay điện thoại di động đang hoạt động trong các chế độ SMS text thì bạn nên ấn định giá trị dạng string “All” đối với lệnh AT AT +CMGL như sau: AT+CMGL="ALL" Còn trong chế độ SMS PDU thì giá trị số “4” nên được ấn định cho cho lệnh AT +CMGL, nó như sau: AT+CMGL=4 Dạng ngõ ra/ngõ vào (input/output) của các tin nhắn SMS được dùng bởi các lệnh AT SMS. Khi modem GSM/GPRS hay điện thoại di động đang hoạt động trong các chế độ khác nhau thì dạng ngõ ra/ngõ vào (input/output) của các tin nhắn SMS được dùng bởi các lệnh AT SMS cũng khác nhau. Trong chế độ SMS text thì đầu và thân của các tin nhắn SMS được làm các ngõ vào vao/ngõ ra khi tách rời các tham số/các lĩnh vực.Trong chế độ SMS DPU, TPDUs (Transport Protocol Data Units) ở định dạng hexa là các ngõ vào và ngõ ra. Đầu và thần của các tin nhắn SMS được mã hóa theo dạng TPDUs. Sau đây là một thí dụ cho những trình bày nói trên. Để gửi một tin nhắn SMS "It is easy to send text messages." Đến một số điện thoại +85291234567 thì dòng lệnh sau nên được sử dụng trong chế độ SMS text. Trong khi bạn thấy các dưới đây, đầu số của số điện thoại đích và các đầu số của các số điện thoại khác nữa được mã hóa theo dãy số hexa. AT+CMGS=4207915892000000F001000B915892214365F7000021493A283D 0795C3F33C88FE06CDECLAREB6E32885EC6D341EDF27C1E3E97E72E Dễ dàng trong sử dụng Khi các bạn đã xem tất cả các ví dụ trước thì bạn sẽ cảm thấy thật là dễ dàng sử dụng các lệnh AT trong chế độ SMS text. Bạn không cần phải học về các loại cấu trúc khác nhau của TPDUs ở dạng bit hay là các mã hóa hay giải mã các chuỗi số hexa. Các đặc điểm hỗ trợ của tín nhắn SMS Mặc dù sử dụng các lệnh AT rất dễ dàng trong chế độ SMS text, nhưng nó lại hỗ trợ ít các đặc điểm về tin nhắn SMS hơn là chế độ SMS DPU. Điều này là do bạn không thể hoàn tất các điều khiển dựa trên các giá trị đầu và than6cua3 tin nhắn trong chế độ SMS text. Một vài nhiệm vụ có thể được hoàn thành trong chế độ text, đòi hỏi người lập trình phải hiểu biết về chế độ PDU và TPDU. Thí dụ, để yêu cầu một bản tin trạng thái từ SMSC trong chế độ SMS text thì bạn phải đặt bit 5 của 8 bít đầu tiên trong SMS-SUBMIT TPDU thành “1” bằng lệnh AT +CCMP (tên lệnh ở dạng text: Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 146 -  Set Text Mode Parameters). Các nhiệm vụ tương tự bao gồm thiết lập chu kỳ hợp lí cho tin nhắn và gửi một tin nhắn SMS dạng flash (nghĩa là nó ngay lập tức xuất hiện trên màn hình điện thoại khi nó đến địa chỉ đích). 6. Gửi các tin nhắn SMS từ một máy tính/PC sử dụng các lệnh AT (AT+CMGS, AT+CMSS) Chế độ SMS DPU có nhiều hỗ trợ phổ biến hơn dành cho điện thoại hay modem GSM/GPRS hơn là cho chế độ SMS text. Cả hai lệnh AT+CMGS (tên lệnh ở dạng text:Send Message) và +CMSS(tên lệnh ở dạng text: Send Message From Storage) đều có thể được sử dụng để gửi các tin nhắn SMS từ một máy tính (PC). Sự khác nhau cơ bản ở bản giữa chúng là lệnh AT +CMGS lấy các tin nhắn SMS như là một tham số,trong khi đó lệnh AT+CMSS lấy các số index mà chỉ rõ vị trí của tin nhắn SMS trong khu vực lưu trữ tin nhắn như là một tham số. Những trình bày sau đây là một thí dụ để làm sáng tỏ sự khác nhau này. Giả sử rằng bạn muốn gửi một tin nhắn dạng text "Sending text messages is easy." Từ một máy tính để bàn (PC) tới một số thoại di động 091234567 sử dụng lệnh AT +CMGS ở chế độ SMS text. Và sau đây là dòng lệnh được sử dụng: AT+CMGS="91234567"Sending text messages is easy. Còn nếu cũng muốn gửi text nhưng sử dụng lệnh AT +CMSS thì đầu tiên bạn phải sử dụng lệnh AT+CMGW (tên lệnh ở dạng text: Write Message to Memory) để viết text tin nhắn tới khu vực lưu trữ tin nhắn. Trong chế độ SMS text thì dòng lệnh sẽ như sau: AT+CMGW="91234567"Sending text messages is easy. Giờ thì chúng ta có thể nói text tin nhắn SMS bây giờ được định vị tại index 3 của vùng lưu trữ tin nhắn. Ban5co1 thể sử dụng lệnh AT +CMSS để gửi text tin nhắn đến trung tâm tin nhắn bằng dòng lệnh sau: AT+CMSS=3 Khi khong gian lưu trữ bị giới hạn, nếu như mỗi text tin nhắn SMS đã gửi được để ở vùng lưu trữ tin nhắn thì sẽ có một thời điểm khi mà không có thêm các text tin nhắn SMS nào có thể được viết. Để giải thoát không gian lưu trữ, bạn có thể sử dụng lệnh AT +CMGD (tên lệnh ở dạng text: Delete Message) để xóa các text tin nhắn SMS ở vùng lưu trữ tin nhắn,nó như sau: AT+CMGD=3 Khi bạn thấy dòng lệnh trên, gửi một tin nhắn SMS bằng lệnh AT +CMSS là một sự nặng nề về bit, bởi vì nó bao gồm nhiều bước và các lệnh AT. Tuy nhiên,một bản copy của tin nhắn SMS đã gửi được lưu ở vùng lưu trữ tin nhắn. Điều này không thể đạt được với lệnh AT +CMGS. Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 147 -  Trong một vài tình huống, có nhiều thuận lợi để gửi các tin nhắn SMS bằng lệnh AT +CMSS hơn là dùng lệnh AT +CMGS. Ví dụ, nếu như bạn phải gửi các tin nhắn tương tự nhau đến nhiều người nhận thì sử dụng lệnh At +CMSS sẽ thuận lợi hơn: AT+CMSS=3,"91234567" AT+CMSS=3,"97777777" AT+CMSS=3,"96666666" 7. Đọc các tin nhắn SMS từ một khu vực lưu trữ tin nhắn sử dụng các lệnh AT (AT+CMGR, AT+CMGL) Để kích hoạt sử dụng một máy tính để bàn (PC) cho việc đọc các tin nhắn SMS từ một khu vực lưu trữ tin nhắn, thì modem GSM/GPRS hay điện thoại di động phải được hỗ trợ cả hai lệnh AT+CMGR (tên lệnh ở dạng text: Read Messages) và lệnh AT+CMGL (tên lệnh ở dạng text: List Messages). Lệnh AT+CMGR được sử dụng để đọc một tin nhắn SMS tại một vị trí nào đó trong khu vực lưu trữ tin nhắn. Trạng thái có thể là : "received unread", "received read", "stored unsent", "stored sent",…Còn lệnh AT+CMGL cũng cho phép bạn lấy tất cả các tin nhắn SMS được lưu trữ trong khu vực lưu trữ tin nhắn. Những trình bày sau là một ví dụ nhằm giúp hiểu rõ được sự khác nhau giữa +CMGR và +CMGL. Giả sử rằng bạn muốn sử dụng máy tính đọc một text tin nhắn từ một khu vực lưu trữ tin nhắn và bạn cũng biết chỉ số của text tin nhắn SMS là ở chỗ nào. Trong trường hợp này thì bạn nên sử dụng lệnh AT+CMGR. Và đây là dòng lệnh được đánh vào(giả sử rằng text tin nhắn được lưu trữ tại vị trí có chỉ số là 3): AT+CMGR=3 Modem GSM/GPRS hay điện thoại sẽ phản hồi lại như sau: +CMGR: "REC READ","+85291234567",,"07/02/18,00:12:05+32". Hello, welcome to our SMS tutorial. OK Giả sử bay giờ bạn lại ở trong một tình huống khác. Bạn muốn sử dụng máy tính bàn (PC) để lấy về tất cả các tin nhắn SMS mà bạn chưa đọc trước đó. Trong trường hợp này thì bạn sử dụng lệnh AT+CMGL. Trong chế độ SMS text thì dòng lệnh được sử dụng là: AT+CMGL="REC UNREAD" Modem GSM/GPRS hay điện thoại sẽ phản hồi lại như sau: +CMGL: 1,"REC UNREAD","+85291234567",,"07/02/18,00:05:10+32" Reading text messages is easy. Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 148 -  +CMGL: 2,"REC UNREAD","+85291234567",,"07/02/18,00:07:22+32" A simple demo of SMS text messaging. OK Lệnh AT+CMGL cũng có thể được dùng để đọc tất cả các tin nhắn mà được lưu trữ trong khu vực lưu trữ tin nhắn. Để làm được như vậy trong chế độ SMS text thì dòng lệnh sẽ là: AT+CMGL="ALL" Ở thời điểm này thì phản hồi của Modem GSM/GPRS hay điện thoại di động sẽ như sau: +CMGL: 1,"REC READ","+85291234567",,"07/02/18,00:05:10+32" Reading text messages is easy. +CMGL: 2,"REC READ","+85291234567",,"07/02/18,00:07:22+32" A simple demo of SMS text messaging. +CMGL: 3,"REC READ","+85291234567",,"07/02/18,00:12:05+32" Hello, welcome to our SMS tutorial. OK Với những gì bạn thấy ở những dòng trên, lệnh AT+CMGR chỉ có thể được sử dụng để đọc 1 tin nhắn SMS tại một thời điểm trong khi đó lệnh AT+CMGL có thể được sử dụng để đọc nhiều tin nhắn tại cùng một thời điểm. Một sự khác nhau khác nữa giữa hai lệnh AT+CMGR và AT+CMGL là lệnh AT+CMGR có thể được sử dụng để lấy nhiều chi tiết tin nhắn hơn là lệnh AT+CMGL khi cac1 modem GSM/.GPRS hay các điện thoại di động đang hoạt động ở chế độ SMS text.Sau đây là cac1chi tiết tin nhắn có thể lấy được bằng cách sử dụng lệnh AT+CMGR ở chế độ SMS text. + Trạng thái của tin nhắn SMS ("received unread", "received read", "stored unsent", "stored sent",…) + Số điện thoại của người gửi/người nhận được lưu trữ trong phần đầu của tin nhắn SMS và kiểu của số điện thoại. + Text liên quan tới số điện thoại của người gửi/người nhận nằm trong danh bạ điện thoại. + Thời gian và ngày tin nhắn SMS đến SMSC (chỉ cho phép với các tin nhắn SMS đến) + Tám bit đầu tiên (1 octet = 8 bits) của TPDU (Transport Protocol Data Unit) của tin nhắn SMS. + Giá trị nhận dạng protocol nằm trongTPCU của tin nhắn SMS. Đồ án tốt nghiệp Phụ Lục GVHD_Trần Thu Hà  ‐ 149 -  + Giá trị lược đồ mã hóa dữ liệu nằm trong TPCU của tin nhắn SMS. + Số SMSC được lư trữ cùng với tin nhắn SMS và kiểu số SMSC + Chu kỳ hợp lí của tin nhắn SMS (chỉ cho phép tin nhắn SMS đi) + Thân của tin nhắn SMS và chiều dài của nó. Sau đây là các chi tiết tin nhắn có thể lấy được bằng cách sử dụng lệnh AT+CMGL ở chế độ SMS text: + Số index nhằm định rõ vị trí của tin nhắn SMS ở trong vùng lưu trữ tin nhắn. + Trạng thái của tin nhắn SMS ("received unread", "received read", "stored unsent", "stored sent"…) + Số điện thoại của người gửi/người nhận được lưu trữ trong phần đầu của tin nhắn SMS và kiểu của số điện thoại. + Text liên quan tới số điện thoại của người gửi/người nhận nằm trong danh bạ điện thoại. + Thời gian và ngày tin nhắn SMS đến SMSC (chỉ cho phép với các tin nhắn SMS đến) + Thân của tin nhắn SMS và chiều dài của nó. Nếu bạn so sánh hai list trên, bạn sẽ nhận ra rằng các chi tiết tin nhắn sau chỉ có thể được lấy bằng các lệnh AT+CMGR chứ không phải lệnh AT+CMGL: + Tám bit đầu tiên của TPCU của tin nhắn SMS. + Giá trị nhận dạng protocol trong TPCU của tin nhắn SMS. + Gía trị lược đồ mã hóa dữ liệu trong TPCU của tin nhắn SMS. + Số SMSC được lưu trữ cùng với tin nhắn SMS và kiểu của số SMSC. + Chu kỳ giá trị của tin nhắn SMS (chỉ cho phép với các tin nhắn SMS đi). Chú ý: Nếu modem GSM/GPRS hay điện thoại di động đang hoạt động ở chế độ SMS PDU thì các chi tiết tin nhắn có thể được lấy bằng hai lệnh AT+CMGR và lệnh AT+CMGL là như nhau. Đồ án tốt nghiệp Hướng Dẫn Sử Dụng Phần Mềm GVHD_Trần Thu Hà  ‐ 150 -  HƯỚNG DẪN SỬ DỤNG PHẦN MỀM ««««oΟo»»»» Phần mềm được viết dựa trên ngôn ngữ lập trình Visual Basic. Net của hãng Microsoft. Khi tạo thành file để thực thi thì đòi hỏi cần có một nền máy ảo để chạy chương trình. Đó gọi là Net Framework 2.0 hoặc cao hơn. Phần mềm được chạy theo một quy trình như sau : Khi khởi động phần mềm thì cần phải đăng nhập mới có thể mở chương trình. Sau khi đang nhập thành công thì ta cần phải thiết lập các thuộc tính để có thể điều khiển thiết bị. Việc thiết lập như sau: Chọn tên cổng cần kết nối. Chương trình sẽ tự phát hiện ra tên cổng đang sử dụng. Nếu chưa phát hiện hay việc kết nối thiết bị sau khi đã khởi động phần mềm thì bấm nút Refresh Chọn tốc độ Baud cho Modem điện thoại Chọn thuộc tính cho thiết bị bằng cách Click vào nút Properties. Trong bảng thuộc tính này có các thành phần như Baudrate, Databit, Stopbit, Parity, Handshaking. Baudrate : chọn tốc độ Baud cho việc đồng bộ 2 thiết bị, mặc định là 2400 Stopbit : chọn số lượng stopbit cho việc đồng bộ với thiết bị, mặc định là One Parity : chọn phương thức báo lỗi chẵn, lẻ hoặc không chọn, mặc định là None Handshaking : chọn phương thức bắt tay, để kiểm tra xem thiết bị có muốn truyền nhận dữ liệu hay không? Mặc định là None Đồ án tốt nghiệp Hướng Dẫn Sử Dụng Phần Mềm GVHD_Trần Thu Hà  ‐ 151 -  Sau khi thực hiện các thao tác trên, lúc này ta mới có thể cho mở cổng. Nếu chưa thực hiện những bước trên thì sẽ xuất hiện thông báo “ Bạn chưa chọn các thuộc tính. Làm ơn hãy chọn thuộc tính trước khi mở cổng” Sau khi mở cổng thì ta có thể điều khiển được thiết bị thông qua nút bấm và tin nhắn SMS, xem nhiệt độ, các sự kiện xảy ra cứ mỗi 5s, và biểu đồ hiển thị nhiệt độ đo được. Muốn điều khiển bằng tin nhắn SMS thì ta cần nắm các lệnh điều khiển : light1 on/off : đèn 1 bật/tắt light2 on/off : đèn 2 bật/tắt light12 on/off : đèn 1 và 2 bật/tắt Nút Security có nhiệm vụ thay đổi mật khẩu để khởi động chương trình và số điện thoại cho phép điều khiển các thiết bị khi đã bật phân mềm Đồ án tốt nghiệp Hướng Dẫn Sử Dụng Phần Mềm GVHD_Trần Thu Hà  ‐ 152 -  Khi muốn cài đặt lịch làm việc Schedule Tasks cho hệ thống. Nhấn nút Schedule . Khi nhấn xong thì thực hiện các thao tác trong Form Chọn ngày giờ và nhập sự kiện sau đó nhấn nút Add. Nhấn nút Confirm để chấp nhận. Khi sau đó nhấn Exit để thoát ra, nếu muốn xóa thì bấm Clear Muốn nhắn tin đến số điện thoại khác thì soạn tin nhắn tại: Bấm Send để gửi đi. Đồ án tốt nghiệp Tài Liệu Tham Khảo GVHD_Trần Thu Hà  ‐ 153 -  TÀI LIỆU THAM KHẢO 1. NGUYỄN HỮU PHƯƠNG - MẠCH SỐ - NHÀ XUẤT BẢN THỐNG KÊ. 2. NGUYỄN ĐÌNH PHÚ - VI XỬ LÍ 2 - TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT. 3. HOÀNG MINH SƠN – MẠNG TRUYỀN THÔNG CÔNG NGHIỆP – NXB KHOA HỌC VÀ KỸ THUẬT – 2006. 4. DOGAN IBRAHIM – PIC BASIC PROJECTS 30 PROJECTS USING PIC BASIC AND PIC BASIC PRO. 5. JAN AXELSON – SERIAL PORT COMPLETE SECOND EDITION. 6. NGUYỄN TIẾN AN - ĐỒ ÁN TỐT NGHIỆP “THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN NGÔI NHÀ TỰ ĐỘNG” - TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT. 7. TRẦN NGỌC MINH, LÊ ANH TÀI - ĐỒ ÁN TỐT NGHIỆP “ĐIỀU KHIỂN CÁC THIẾT BỊ ĐIỆN TRONG NHÀ QUA MẠNG INTERNET” - TRƯỜNG ĐẠI HỌC SỰ PHẠM KỸ THUẬT. 8. MỘT SỐ TRANG WEB: www.codeproject.com www.dientuvietnam.com www.picvietnam.com www.deverlopershome.com

Các file đính kèm theo tài liệu này:

  • pdfdo an tot nghiep_trongkien phamvannamat.pdf