Nhưng hầu hết mọi người sử dụngđiện thoại di động chỉ với mục đích liên lạc với nhau như gọi điện, nhắn tin, lướtweb…Trên thực tế điện thoại di động còn có nhiều tính năng thiết thực hơn
Trang 1Lời Cảm Ơn
Qua năm năm học tập trên ghế nhà trường, em cảm ơn tất cả các Thầy, Cô giảng dạy tại khoa Điện tử - Viễn thông, trường Đại Học Khoa Học đã nhiệt tình truyền thụ cho em những kiến thức về chuyên ngành cũng như về các vấn đề xã hội.
Đó là những hành trang cần thiết cho em trong cuộc sống cũng như trong công việc sau này Và nhất là hiện tại kiến thức của các Thầy, Cô giảng dạy đã giúp cho em hoàn thành đồ án tốt nghiệp này Em chúc quý Thầy, quý Cô luôn mạnh khỏe và hạnh phúc trong công cuộc trồng người Em xin trân trọng cảm ơn!!!
Trong quá trình hoàn thành đồ án này, không thể không nói đến công hướng dẫn của thầy Th.S Phan Hải Phong đã nhiệt tình hướng dẫn, bày vẽ cho em trong quá trình hoàn thành đồ án Thầy đã nêu ra nhiều ý tưởng cho phần đồ án, để em có nhiều hướng đi trong quá trình hoàn thành đồ án Tuy nhiên, do kiến thức của bản thân cũng như thời gian thực hiện đồ án có hạn, nên em chỉ hoàn thành một phần nhỏ trong những ý tưởng Thầy đưa ra Em chân thành cảm ơn Thầy.
Huế, ngày 10 tháng 06 năm 2015
Sinh viên thực hiện
Trần Văn Hòa
Trang 2MỤC LỤC
LỜI CẢM ƠN i
MỤC LỤC ii
DANH SÁCH CÁC HÌNH VẼ iv
DANH SÁCH CÁC BẢNG vi
DANH MỤC CÁC TỪ VIẾT TẮT vii
MỞ ĐẦU 1
CHƯƠNG I: TỔNG QUAN VỀ NỀN TẢNG ARDUINO VÀ MODULE BREAKOUT SIM900 2
1.1 Giới thiệu về nền tảng Arduino 2
1.1.1 Lịch sử ra đời của Arduino 2
1.1.2 Cấu trúc bên ngoài của board Arduino 3
1.1.3 Giới thiệu về board mạch Arduino Uno 4
1.1.4 Trình biên dịch Arduino IDE 6
1.2 Giới thiệu về Module Breakout SIM900 7
1.2.1 Giới thiệu Module Breakout SIM900 7
1.2.2 Đặc điểm của module sim 900 8
1.2.3 Khảo sát sơ đồ chân và chức năng từng chân của module Breakout SIM900 8
CHƯƠNG II: TÌM HIỂU VỀ TIN NHẮN SMS VÀ TẬP LỆNH AT-COMMAND .11 2.1 Tổng quát về tin nhắn SMS 11
2.1.1 Giới thiệu về SMS 11
2.1.2 Cấu trúc một tin nhắn SMS 13
2.1.3 Tin nhắn SMS chuỗi/ Tin nhắn SMS dài 13
2.1.4 Trung tâm tin nhắn SMS (SMSC) 13
2.1.5 Nhắn tin SMS quốc tế 14
Trang 32.2 Giới thiệu khái quát về tập lệnh ATCommand 17
2.2.1 Giới thiệu chung về tập lệnh AT 17
2.2.2 Các lệnh căn bản và mở rộng 19
2.2.3 Cú pháp tổng quát của các lệnh AT mở rộng 19
2.2.4 Mã kết quả của lệnh AT 20
2.2.5 Mã kết quả không được yêu cầu 23
2.2.6 Một số ví dụ cơ bản về lệnh AT 23
CHƯƠNG III: THIẾT KẾ, THI CÔNG VÀ LẬP TRÌNH ĐIỀU KHIỂN HỆ THỐNG 32
3.1 Thiết kế, thi công hệ thống 32
3.1.1 Thiết kế nguồn cho SIM900A 32
3.1.2 Cài đặt cấu hình cho module SIM900A 33
3.1.3 Kiểm tra gửi tin nhắn 36
3.1.4 Kiểm tra đọc tin nhắn 37
3.2 Lập trình điều khiển hệ thống 37
3.2.1 Lưu đồ thuật toán 37
CHƯƠNG IV: TỔNG KẾT ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỒ ÁN 46 4.1 Kết quả và đánh giá đồ án 46
4.2 Hướng phát triển 49
KẾT LUẬN 50
TÀI LIỆU THAM KHẢO 51
PHỤ LỤC 52
Trang 4DANH SÁCH CÁC HÌNH VẼ
Hình 1.1: Arduino dùng để điều khiển robot 2
Hình 1.2: Một số board Arduino 3
Hình 1.3: Board Arduino Uno 4
Hình 1.4: Giao diện phần mềm Arduino IDE 6
Hình 1.5: Bo mạch sim 900 7
Hình 1.6: Module SIM900A thiết kế sẵn 9
Hình 1.7: Sơ đồ nguyên lý thiết kế module Breakout SIM900A 9
Hình 2.1: Cấu trúc một tin nhắn SMS 13
Hình 2.2: Một SMS Gateway giống như một bộ chuyển đổi giữa hai SMSC 15
Hình 2.3: Tin nhắn SMS dạng văn bản kết nối các SMSC không cần SMS Gateway 16 Hình 2.4: Tin nhắn SMS kết nối các SMSC thông qua một SMS Gateway 17
Hình 3.1: Sơ đồ nguyên lý của mạch nguồn 32
Hình 3.2: Hình ảnh thực tế của mạch nguồn 33
Hình 3.3: Hercules và USB to UART 34
Hình 3.4: Sơ đồ kết nối SIM900A với máy tính thông qua module USB to UART 34
Hình 3.5: Cấu hình mặc định cho SIM900A 35
Hình 3.6: Giao diện khi gửi tin nhắn 36
Hình 3.7: Giao diện khi đọc tin nhắn 37
Hình 3.8: Lưu đồ thuật toán tổng quát của chương trình 38
Hình 3.9: Lưu đồ thuật toán khởi động và cấu hình SIM900A 39
Hình 3.10: Lưu đồ thuật toán tạo bộ nhớ đệm truyền thông 40
Hình 3.11: Lưu đồ thuật toán đọc tin nhắn và đóng mở thiết bị 43
Hình 3.12: Lưu đồ thuật toán hàm gửi tin nhắn 45
Trang 5Hình 4.2: Ví dụ nhắn tin bật led tại chân 3 và tin nhắn phản hồi về 47 Hình 4.3: Ví dụ kiểm tra trạng thái của hệ thống và tin nhắn nhận được 48
Trang 6DANH SÁCH CÁC BẢNG
Bảng 1.1: Các thông số chi tiết của Arduino Uno 5
Bảng 1.2: Các chân của module Breakout SIM900A dùng trong bài 10
Bảng 2.1: Một số mã lỗi +CMS và ý nghĩa của chúng 21
Bảng 2.2: Các lệnh tạo và gửi tin nhắn SMS 23
Bảng 2.3: Các lệnh nhận và đọc tin nhắn SMS 24
Bảng 2.4: Bảng liệt kê các giá trị của tham số trong chế độ văn bản và PDU 28
Trang 7TTL Transistor-Transistor Logic Giao tiếp nối tiếp
MOSI Master Output/ Slave Input Cổng ra chủ động/ Cổng vào
bị độngMISO Master Input/ Slave Output Cổng vào chủ động/ Cổng ra
bị động
tiếpSPI Serial Peripheral Interface Giao diện ngoại vi nối tiếp
SRAM Static Random Access Memory Bộ nhớ truy xuất ngẫu nhiênEEPROM Electrically Erasable Programmable
Read Only Memory
hợp
Trang 8SIM Subscriber Identity Module Module nhận dạng tin nhắn
WAP Wirless Application Protocol Giao thức ứng dụng không
dâySMSC Short Message Service Center Trung tâm tin nhắnCDMA Code Division Multiple Access Đa truy nhập phân chia theo
mãTDMA Time Division Multiple Access Đa truy nhập phân chia theo
thời gianHTTP Hypertext Transfer Protocol Giao thức truyền tải siêu văn
bảnHTTPS Hypertext Transfer Protocol Secure Giao thức truyền tải bảo mật
caoTCP/ IP Transmission Control Protocol /
Trang 9Ngày nay điện thoại di động trở nên phổ biến, hầu hết mọi người đều sử dụngđiện thoại như một công cụ thiết yếu cho cuộc sống thường ngày Sóng điện thoạiđược phủ sóng hầu hết ở mọi nơi từ miền núi cho đến hải đảo Cho nên, mọi người đều
có thể sử dụng điện thoại ở bất cứ nơi đâu miễn là có thỏa thuận với một nhà mạngtrong vùng phủ sóng Điện thoại di động trở nên một công cụ liên lạc nhanh và hiệuquả, cũng như cập nhật tin tức thường ngày, mang lại nhiều tiện ích cho người dùng Với nhiều mức giá và nhiều chủng loại khác nhau nên mọi người có thể trang bịcho riêng mình một chiếc điện thoại di động vừa ý Nhưng hầu hết mọi người sử dụngđiện thoại di động chỉ với mục đích liên lạc với nhau như gọi điện, nhắn tin, lướtweb…Trên thực tế điện thoại di động còn có nhiều tính năng thiết thực hơn, nếu ngườidùng trang bị thêm các thiết bị ngoại vi khác, để điện thoại có thể như là một công cụđiều khiển hay thiết lập các thiết bị ngoại vi đó theo ý muốn người dùng
Trong phần đồ án tốt nghiệp của em, em xin trình bày một tính năng nhỏ củađiện thoại di động là nhắn tin để điều khiển đóng, mở các thiết bị trong sinh hoạt hằngngày như bóng điện, quạt, điều hòa, tủ lạnh…Bằng kết hợp giữa board Arduino Uno
và module Breakout SIM900A là những mạch đã có sẵn trên thị trường hiện nay
Trang 10CHƯƠNG I: TỔNG QUAN VỀ NỀN TẢNG ARDUINO VÀ MODULE
BREAKOUT SIM900 1.1 Giới thiệu về nền tảng Arduino.
1.1.1 Lịch sử ra đời của Arduino.
Hình 1.1: Arduino dùng để điều khiển robot.
Nền tảng Adrduino được khởi động vào năm 2005 như là một dự án dành chosinh viên tại Interaction Design Institute Ivrea (Viện thiết kết tương tác Ivrea) tại Ivrea,Italy Massimo Banzi là một trong những người sáng lập và giảng dạy tại Ivrea Cáitên "Arduino" đến từ một quán bar tại Ivrea, nơi một vài nhà sáng lập của dự án nàythường xuyên gặp mặt Bản thân quán bar này có được lấy tên là Arduino Bá tước củaIvrea, và là vua của Italy từ năm 1002 đến 1014
Nền tảng này chính thức được đưa ra giới thiệu vào năm 2005 như là một công cụdành cho sinh viên học tập của giáo sư Massimo Banzi, một trong những người pháttriển Arduino tại trường Interaction Design Instistute Ivrea (IDII) Dù hầu như không cómột sự tiếp thị hay quảng cáo nào nhưng tin tức về Arduino vẫn lan truyền với tốc độcchóng mặt nhờ vô vàn lời truyền miệng tốt đẹp của những người dùng đầu tiên
Arduino không phải là tên của một vi xử lý, một vi điều khiển hay một thiết bịhoàn chỉnh Arduino là một tiêu chuẩn phần cứng, kèm theo đó là một tiêu chuẩn vềtrình biên dịch được phát triển đồng bộ Các board Arduino đều cố gắng đưa các chân
Trang 11chuẩn kết nối giúp người dùng sử dụng nó dễ dàng hơn.
Đến nay đã có nhiều thế hệ Arduino ra đời, từ những board Arduino đời đầu sửdụng vi điều khiển AVR 8 bit cho tới bây giờ với những board Arduino sử dụng vi xử
lý ARM 32 bit
Hình 1.2: Một số board Arduino.
1.1.2 Cấu trúc bên ngoài của board Arduino.
Mặc dù đã có nhiều board Arduino đã ra đời với nhiều kích thước, vi xử lý trungtâm khác nhau nhưng chúng đều có chung một số đặc điểm phần cứng bên ngoài khágiống nhau và tuân thủ theo một tiêu chuẩn chung nhất định
Một mạch Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ sunggiúp dễ dàng lập trình và có thể mở rộng với các mạch khác Các kết nối tiêu chuẩncủa Arduino, cho phép người dùng kết nối CPU của board với các module thêm vào cóthể dễ dàng chuyển đổi, được gọi là shield Vài shield giao tiếp với Arduino trực tiếpthông qua các chân khác nhau Tuy nhiên hiện nay, nhiều shield được định địa chỉthông qua serial I2C2 do đó shield này có thể được xếp chồng và sử dụng dưới dạngsong song Arduino chính thức thường sử dụng các dòng chíp mega AVR, đặc biệt làAtmega8, Atmega168, Atmega328, và Atmega2560 Một vài các bộ vi xử lý kháccũng được sử dụng bởi các mạch Arduino tương thích Hầu hết các mạch gồm một bộđiều chỉnh điện áp tuyến tính 5V và một thạch anh dao động 16MHz (hoặc bộ cổnghưởng ceramic trong một vài biến thế) Một vài thiết kế chẳng hạn như LilyPad hoạt
Trang 12động tại tần số 8 MHz và không có bộ điều chỉnh điện áp onboard do hạn chế về kích
cỡ thiết bị
1.1.3 Giới thiệu về board mạch Arduino Uno.
Arduino Uno là một board mạch thuộc gia đình Arduino, được thiết kế với bộ xử
lý trung tâm là vi điều khiển AVR Atmega328
Hình 1.3: Board Arduino Uno.
Cấu tạo chính của Arduino Uno bao gồm các phần sau:
Cổng USB(1): đây là cổng giao tiếp để tải chương trình từ máy tính lên board
Arduino Đồng thời nó cũng là giao tiếp serial để truyền dữ liệu giữa vi điều khiền vàmáy tính
Jack nguồn(2): để chạy Arduino thì có thể lấy nguồn từ cổng USB nói trên,
nhưng không phải lúc nào cũng có thể cắm với máy tính được Lúc đó ta cần mộtnguồn 9V đến 12V để cung cấp cho board
14 chân vào ra Digital(3): 14 chân này được đánh số từ 0 đến 13, ngoài ra còn có
một chân nối đất (GND) và một chân điện áp tham chiếu (AREF)
Một số chân Digital có các chức năng đặc biệt như sau:
o 2 chân Serial: 0 (RX) và 1 (TX): dùng để truyền (transmit – TX) và nhận
(receive - RX) dữ liệu TTL Serial Arduino Uno có thể giao tiếp với các thiết bị khácthông qua hai chân này
o Chân PWM (~): 3, 5, 6, 9, 10 và 11: cho phép xuất ra xung PWM với độ
phân giải 8 bit bằng hàm analogWrite() Nói cách đơn giản, người dùng có thể điềuchỉnh được điện áp ra ở các chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V
và 5V như những chân khác
Trang 13o Chân giao tiếp SPI: 10(SS), 11(MOSI), 12 (MISO), 13 (SCK) Ngoài các
chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thứcSPI với các thiết bị khác
o Led 13: trên Arduino Uno có một đèn led màu cam (kí hiệu chữ L) Khi bấm
nút Reset, bóng đèn này sẽ nhấp nháy để báo hiệu đã khởi động lại mạch lúc đóchương trình sẽ chạy lại từ đầu
8 chân nguồn(4): bao gồm các chân sau:
o Vin: chân để cung cấp nguồn ngoài cho Arduino Uno.
o 2 chân GND: chân nối đất.
o 2 chân 3.3V và 5V: 2 chân này cung cấp hai mức điện áp 3.3V và 5V cho các
thiết bị ngoại vi
o 1 chân RESET: khởi động lại board Arduino Uno.
6 chân Analog in(5): là các chân tín hiệu vào tương tự cung cấp độ phân giải tín
hiệu 10bit để đọc giá trị điện áp trong khoảng 0V-5V
Vi điều khiển AVR(6): đây là bộ xử lý trung tâm của toàn bo mạch Với mỗi mẫu
Arduino khác nhau thì con chip là khác nhau Ở board Arduino Uno thì sử dụngATMega328
Các thông số chi tiết của Arduino Uno.
Bảng 1.1: Các thông số chi tiết của Arduino Uno.
Điện áp đầu vào (giới hạn) 6-20V
Chân vào/ ra (I/O) số 14 (6 chân có thể cho đầu ra PWM)
Dòng điện trong mỗi chân I/O 40mA
1.1.4 Trình biên dịch Arduino IDE.
Thiết kế bo mạch nhỏ gọn, trang bị nhiều tính năng thông dụng mang lại nhiềulợi thế cho Arduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phần mềm Môi
Trang 14trường lập trình đơn giản dễ sử dụng, ngôn ngữ lập trình Wiring dễ hiểu và dựa trênnền tảng C/C++ rất quen thuộc với người làm kỹ thuật Và quan trọng là số lượng thưviện code được viết sẵn và chia sẻ bởi cộng đồng nguồn mở là cực kỳ lớn.
Hình 1.4: Giao diện phần mềm Arduino IDE.
Arduino IDE là phần mềm dùng để lập trình cho Arduino Môi trường lập trìnhArduino IDE có thể chạy trên ba nền tảng phổ biến nhất hiện nay là Windows,Macintosh OSX và Linux Do có tính chất nguồn mở nên môi trường lập trình nàyhoàn toàn miễn phí và có thể mở rộng thêm bởi người dùng có kinh nghiệm
Ngôn ngữ lập trình có thể được mở rộng thông qua các thư viện C++ Và dongôn ngữ lập trình này dựa trên nền tảng ngôn ngữ C của AVR nên người dùng hoàntoàn có thể nhúng thêm code viết bằng AVR vào chương trình nếu muốn Hiện tại,Arduino IDE có thể download từ trang chủ http://arduino.cc/ bao gồm các phiên bảnsau:
Arduino 1.6.3
Trang 151.2 Giới thiệu về Module Breakout SIM900.
1.2.1 Giới thiệu Module Breakout SIM900.
Một module GSM là modem không dây, nó làm việc cùng với một mạng khôngdây GSM Một modem không dây 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 quamột đường dây điện thoại cố định, trong khi đó một modem không dây thì việc gửi vànhận dữ liệu thông qua sóng vô tuyến
Giống như một điện thoại di động GSM, một modem GSM yêu cầu một thẻ simvới một mạng không dây để hoạt động
Module SIM900 là một trong những loại module GSM Nhưng module SIM900được nâng cao hơn có tốc độ truyền dữ liệu nhanh hơn Nó sử dụng công nghệ GSM/GPRS có thể tự động dò tìm băng tần để hoạt động, có tính năng GPRS của sim 900
Hình 1.5: Bo mạch sim 900.
1.2.2 Đặc điểm của module sim 900
Nguồn cung cấp khoảng 3,4 – 4,5V
Giới hạn nhiệt độ hoạt động
o Bình thường từ -30ºC tới +80ºC.
o Hạn chế: - 40ºC tới – 30ºC và +80ºC tới + 85ºC.
Trang 16o Nhiệt độ bảo quản: - 45ºC tới 90ºC.
Dữ liệu GPRS:
o GPRS dữ liệu tải xuống: Max 85.6 kbps.
o GPRS dữ liệu tải lên: Max 42.8 kbps.
o Sim 900 tích hợp giao thức TCP/IP.
Giao tiếp nối tiếp và nghép nối:
o Cổng nối tiếp: 8 Cổng nối tiếp (ghép nối)
o Cổng kết nối có thể SD với CSD Fax, GPRS và gửi lệnh Atcommand tới
module điều khiển
o Cổng nối tiếp có thể SD chức năng giao tiếp.
o Hỗ trợ tốc độ truyền 1200 tới 115200.
o Cổng hiệu chỉnh lỗi: 2 cổng nối tiếp TX và RX.
o Cổng hiệu chỉnh lỗi chỉ sử dụng sửa lỗi
1.2.3 Khảo sát sơ đồ chân và chức năng từng chân của module Breakout SIM900
Trong phần đồ án này em sử dụng Breakout SIM900A, là module đã được thiếtsẵn
Trang 17Hình 1.6: Module SIM900A thiết kế sẵn.
Đây là một module SIM900A đơn giản, được thiết kế từ sơ đồ nguyên lý sau
Hình 1.7: Sơ đồ nguyên lý thiết kế module Breakout SIM900A.
Sơ đồ chân Breakout:
Trang 181 2 12 14 17 18 19 20
Chân 1: Chân ON/OFF (hay chân S PWER KEY trên module thiết thiết kế sẵn)
ta cần kích một xung có mức tích cực dương vào khoảng 1s, lúc này led báo hiệu
sẽ sáng, sau đó chớp nháy với tần suất nhanh báo hiệu SIM900A đang khởiđộng và tìm mạng Khoảng 10s sau led trạng thái nhấp nháy chậm báo hiệuSIM900A đã hoạt động bình thường
Chân 3: Led báo trạng thái hoạt động của SIM900A
Chân 12: (hay chân TXD0 trên module thiết kế sẵn) là chân truyền dữ liệu củaSIM900A sang Arduino Uno
Chân 14: (hay chân RXD0 trên module thiết kế sẵn) là chân nhận dữ liệu từ cácthiết bị ngoại vi, trong bài nhận dữ liệu từ Arduino Uno
Chân 17 và 19: Dương nguồn cung cấp cho module SIM900A hoạt động
Chân 18 và 20: Chân nối đất cho module SIM900A
Một điều quan trọng SIM900A hoạt động theo tập lệnh Atcommand chúng tacùng tìm hiểu ở chương 2
Trang 19CHƯƠNG II: TÌM HIỂU VỀ TIN NHẮN SMS VÀ TẬP LỆNH
AT-COMMAND 2.1 Tổng quát về tin nhắn SMS.
Như đã nói ở trên, tên đầy đủ của SMS là Short Message Service Cụm từ đó, cóthể thấy được là dữ liệu có thể được lưu giữ bởi một tin nhắn SMS là rất giới hạn Mộttin nhắn SMS có thể chứa tối đa là 140 byte (1120bit) dữ liệu Vì vậy, một tin nhắnSMS chỉ có thể chứa:
160 ký tự nếu như mã hóa kí tự 7 bit được sử dụng (mã hóa kí tự 7 bit thì phùhợp với mã hóa các kí tự Latin chẳng hạn như các kí tự Alphabet của Tiếng Anh)
70 ký tự nếu như mã hóa kí tự 16 bit Unicode UCS2 được sử dụng (các tin nhắnSMS không chứa các kí tự Latin như kí tự chữ Trung Quốc phải sử dụng mã hóa
kí tự 16 bit)
Tin nhắn SMS dạng văn bản hỗ trợ nhiều ngôn ngữ khác nhau Nó có thể hoạtđộng tốt với nhiều ngôn ngữ mà có hỗ trợ mã Unicode, bao gồm cả Arabic, TrungQuốc, Nhật Bản và Hàn Quốc
Bên cạnh gửi tin nhắn dạng văn bản, thì tin nhắn SMS còn có thể mang các dữliệu dạng nhị phân Nó còn cho phép gửi nhạc chuông, hình ảnh cùng nhiều tiện íchkhác… tới một điện thoại khác
Một trong những ưu điểm nổi trội của SMS đó là nó được hỗ trợ bởi các điệnthoại có sử dụng GSM hoàn toàn Hầu hết tất cả các tiện ích cộng thêm gồm cả dịch vụgửi tin nhắn giá rẻ được cung cấp, sử dụng thông qua sóng mang không dây
Trang 20Tin nhắn SMS là một công nghệ rất thành công và trưởng thành Tất cả các điệnthoại di động ngày nay đều có hỗ trợ nó Bạn không chỉ có thể trao đổi các tin nhắnSMS đối với người sử dụng di động ở cùng một nhà cung cấp dịch vụ mạng sóngmang không dây, mà đồng thời bạn cũng có thể trao đổi nó với những người sử dụng ởcác nhà cung cấp dịch vụ khác.
SMS là một công nghệ phù hợp với các ứng dụng không dây sử dụng cùng vớinó
Nói như vậy là do:
Thứ nhất, tin nhắn SMS được hỗ trợ 100% bởi các điện thoại có sử dụng côngnghệ GSM Xây dựng các ứng dụng không dây trên nền công nghệ SMS có thể pháthuy tối đa những ứng dụng có thể dành cho người sử dụng
Thứ hai, các tin nhắn SMS còn tương thích với việc mang các dữ liệu nhị phânbên cạnh gửi các văn bản Nó có thể được sử dụng để gửi nhạc chuông, hình ảnh, hoạthọa…
Thứ ba, tin nhắn SMS hỗ trợ việc chi trả các dịch vụ trực tuyến Nghĩa là nó chophép thực hiện việc chi trả các dịch vụ trực tuyến một cách thuận lợi Ví dụ như, bạnmuốn phát triển một ứng dụng tải nhạc chuông mang tính thương mại và thu phí sửdụng từ người sử dụng cho mỗi lần tải nhạc chuông đó Một cách rất thuận lợi để thựcthi ứng dụng này đó là sử dụng một số điện thoại từ nhà cung cấp mạng có khả năngchi trả ngược lại tới tiện ích này thông qua việc sử dụng một sóng mang không dây.Và
để có thể tải nhạc chuông này người sử dụng phải soạn một tin nhắn có nội dung,cũng như cấu trúc tin nhắn được quy định bởi nhà cung cấp dịch vụ và gửi tin nhắnnày tới một số điện thoại đã được tích hợp sẵn chức năng chi trả trực tuyến mà ngườiphát triển ứng dụng này xây dựng Ứng dụng SMS mà bạn sử dụng sau đó sẽ đượcgửi trả lại cho bạn một hay nhiều tin nhắn SMS có kèm theo cả nhạc chuông (chẳnghạn) và thông báo chi phí phải trả cho việc sử dụng ứng dụng đó Chi phí này sẽ gồm
cả chi phí sử dụng dịch vụ hàng tháng của điện thoại di động này hay là được khấu trừ
từ thẻ card dùng di động của bạn Nó tùy thuộc vào thỏa thuận giữa bạn và người pháttriển ứng dụng đó
2.1.2 Cấu trúc một tin nhắn SMS.
Nội dung một tin nhắn SMS khi được gửi đi sẽ chia làm 5 phần sau:
Trang 21 Instructions to handset: chỉ thị dữ liệu kết nối bắt tay.
Instructions to SIM (optional): chỉ thị dữ liệu kết nối, nhận biết SIM (SubscriberIdentity Modules)
Message body: nội dung tin nhắn SMS
2.1.3 Tin nhắn SMS chuỗi/ Tin nhắn SMS dài.
Một trong những trở ngại của công nghệ SMS là tin nhắn SMS chỉ có thể mangmột lượng giới hạn các dữ liệu Để khắc phục trở ngại này, một mở rộng của nó gọi làSMS chuỗi (hay SMS dài) đã ra đời Một tin nhắn SMS dạng văn bản dài có thể chứanhiều hơn 160 kí tự theo chuẩn dùng trong tiếng Anh Cơ cấu hoạt động cơ bản SMSchuỗi làm việc như sau: điện thoại di động của người gửi, sẽ chia tin nhắn dài thànhnhiều phần nhỏ và sau dó gửi các phần nhỏ này như một tin nhắn đơn Khi các tinnhắn SMS này đã được gửi tới đích hoàn toàn thì nó sẽ kết hợp lại với nhau trên máy
di động của người nhận
Khó khăn của SMS chuỗi là nó ít được hỗ trợ nhiều so với SMS dạng văn bản ởcác thiết bị có sử dụng sóng không dây
2.1.4 Trung tâm tin nhắn SMS (SMSC).
Một trung tâm tin nhắn SMS (SMSC) là nơi chịu trách nhiệm luân chuyển cáchoạt động liên quan tới SMS của một mạng không dây Khi một tin nhắn SMS đượcgửi đi từ một điện thoại di động thì trước tiên nó sẽ được gửi tới một trung tâm SMS.Sau đó, trung tâm SMS này sẽ chuyển tin nhắn này tới đích (người nhận) Một tinnhắn SMS có thể phải đi qua nhiều hơn một thực thể mạng (network) (chẳng hạn như
Trang 22SMSC và SMS gateway) trước khi đi tới đích thực sự của nó Nhiệm vụ duy nhất củamột SMSC là luân chuyển các tin nhắn SMS và điều chỉnh quá trình này cho đúng vớichu trình của nó Nếu như máy điện thoại của người nhận không ở trạng thái nhận (tắtnguồn) trong lúc gửi thì SMSC sẽ lưu trữ tin nhắn này Và khi máy điện thoại củangười nhận mở nguồn thì nó sẽ gửi tin nhắn này tới người nhận.
Thường thì một SMSC sẽ hoạt động một cách chuyên dụng để chuyển lưu thôngSMS của một mạng không dây Hệ thống vận hành mạng luôn quản lý SMSC củariêng nó và vị trí của chúng bên trong hệ thống mạng không dây Tuy nhiên hệ thốngvận hành mạng sẽ sử dụng một SMSC thứ ba có vị trí bên ngoài của hệ thống mạngkhông dây
Bạn phải biết địa chỉ SMSC của hệ thống vận hành mạng không dây để sử dụng,tinh chỉnh chức năng tin nhắn SMS trên điện thoại của bạn Điển hình một địa chỉSMSC là một số điện thoại thông thường ở hình thức, khuân mẫu quốc tế Một điệnthoại nên có một thực đơn chọn lựa để cấu hình địa chỉ SMSC Thông thường thì địachỉ được điều chỉnh trong thẻ sim bởi hệ thống mạng không dây Điều này có nghĩa làbạn không cần phải làm bất cứ thay đổi nào cả
2.1.5 Nhắn tin SMS quốc tế
Các tin nhắn SMS giữa các nhà điều hành được chia ra làm hai hạng mục gồm tinnhắn SMS giữa các nhà điều hành cục bộ và tin nhắn SMS giữa các nhà điều hànhquốc tế với nhau Tin nhắn SMS giữa các nhà điều hành cục bộ là tin nhắn mà đượcgửi và nhận giữa các nhà điều hành trong cùng một quốc gia, còn tin nhắn SMS giữacác nhà điều hành quốc tế là tin nhắn SMS được gửi và nhận giữa các nhà điều hànhmạng không dây ở những quốc gia khác nhau
Thường thì chi phí để gửi một tin nhắn SMS quốc tế thì cao hơn so với gửi trongnước Và chi phí gửi tin nhắn nội mạng thì ít hơn so với gửi cho mạng khác trong cùngmột quốc gia và nhỏ thua hoặc bằng chi phí việc gửi tin nhắn SMS quốc tế
Khả năng kết hợp của tin nhắn SMS giữa hai mạng không dây cục bộ hay thậmchí là quốc tế là một nhân tố chính góp phần tới sự phát triển mạnh mẽ của hệ thốngSMS toàn cầu
Trang 23Một khó khăn của tin nhắn SMS là các SMSC được phát triển, xây dựng bởi cáccông ty sử dụng giao thức truyền thống riêng của họ và hầu hết các giao thức này đềuthuộc quyền sở hữu của chính họ Chẳng hạn như Nokia có một giao thức SMSC đượcgọi là CIMD nhưng một nhà điều hành như CMG lại có giao thức SMSC được gọi làEMI Chúng ta không thể kết nối hai SMSC nếu như chúng không được hỗ trợ giaothức SMSC chung Để giải quyết những khó khăn này, một tổng đài tin nhắn được đặtgiữa như một bộ chuyển đổi giữa hai SMSC Nó chuyển đổi thông tin dữ liệu từ mộtgiao thức SMSC sang một giao thức SMSC khác Giải pháp này được sử dụng cho haisóng mang không dây khác nhau để kết nối liên thông giữa các trung tâm tin nhắn, nhưthế các tin nhắn SMS từ các nhà cung cấp mạng khác nhau có thể gửi cho nhau màkhông gặp trở ngại nào.
Hình 2.2: Một SMS Gateway giống như một bộ chuyển đổi giữa hai SMSC.
Bên cạnh các sóng mang không dây, các nhà cung cấp và những người phát triểncác ứng dụng SMS còn có thể phát triển một tổng đài tin nhắn hữu ích Chúng ta sẽxem xét ở tình huống sau Giả sử bạn là nhà phát triển một ứng dụng tin nhắn SMSdạng văn bản Để gửi và nhận các tin nhắn SMS trên máy chủ của bạn, một giải pháp
là kết nối các SMSC của các sóng mang không dây Các sóng mang không dây khácnhau có thể sử dụng SMSC từ các nhà cung cấp dịch vụ khác nhau Điều đó có nghĩa
là ứng dụng tin nhắn SMS dạng văn bản của bạn cần được hỗ trợ SMSC đa dụng cácgiao thức chuyên dụng (điều này được mô tả trong hình dưới) Và kết quả là thời gianphát triển và độ phức tạp của các ứng dụng tin nhắn SMS dạng văn bản tăng
Trang 24Hình 2.3: Tin nhắn SMS dạng văn bản kết nối các SMSC không cần SMS Gateway.
Để giải quyết khó khăn trên một tổng đài tin nhắn được thiết lập để thực thi cáckết nối SMSC với nhau Ngày nay, các ứng dụng tin nhắn SMS dạng văn bản chỉ cầnbiết làm như thế nào để kết nối với tổng đài tin nhắn Để hỗ trợ cho các SMSC nhiềuhơn nữa, bạn chỉ cần tinh chỉnh các thiết lập cài đặt cho tổng đài tin nhắn và không cầnphải thay đổi mã nguồn của ứng dụng tin nhắn SMS dạng văn bản đó Như thế việc sửdụng tổng đài tin nhắn có thể rút ngắn thời gian của sự phát triển các ứng dụng tinnhắn SMS dạng văn bản
Để kết nối một tổng đài tin nhắn, chúng ta phải sử dụng một giao thức SMSCchẳng hạn như SMPP và CIMD Một vài tổng đài còn hỗ trợ giao thức HTTP/HTTPS.HTTP/HTTPS thì sử dụng dễ hơn so với giao thức SMSC Và khó khăn ở đây là nókhông có nhiều chức năng hỗ trợ SMS Chẳng hạn như một tổng đài SMS thì không
hỗ trợ việc gửi tin nhắn có nội dung chứa bức ảnh thông qua giao diện HTTP/HTTPS
Trang 25Hình 2.4: Tin nhắn SMS kết nối các SMSC thông qua một SMS Gateway.
Bên cạnh việc sử dụng kết nối trực tiếp tới SMSC của một sóng mang không dây
Có một cách khác để gửi và nhận tin nhắn SMS dạng văn bản trên máy tính đó là sửdụng một điện thoại di động hay một modem GSM/GPRS Để làm được chức năngnày thì ứng dụng tin nhắn SMS dạng văn bản phải kết nối, giao tiếp được với điệnthoại di động hay modem GSM/GPRS bằng cách sử dụng các tập lệnh ATcommand.Một vài tổng đài tin nhắn SMS có tương thích với giao tiếp kết nối của điện thoại
di động hay modem GSM/GPRS Để gửi và nhận các tin nhắn SMS dạng văn bản từmột điện thoại di động hay một GSM/GPRS modem thì ứng dụng tin nhắn SMS dạngvăn bản chỉ cần biết cách giao tiếp với tổng đài tin nhắn SMS và không cần phải biết
về lệnh ATcommand
2.2 Giới thiệu khái quát về tập lệnh ATCommand.
2.2.1 Giới thiệu chung về tập lệnh AT.
Tập lệnh AT (AT – Attention) còn gọi là tập lệnh Hayes, được phát triển lúc đầubởi Hayes Communications cho modem Hayes Smartmodem vào năm 1997 Tập lệnhbao gồm một loạt các chuỗi ký tự được kết hợp lại để tạo thành những lệnh hoàn chỉnhcho những thao tác như gọi, giữ hay thay đổi các tham số kết nối Ngày nay hầu hếtcác modem đều sử dụng tập lệnh Hayes Các lệnh này đều bắt đầu bằng "AT"
Một cách để gửi lệnh AT đến modem GSM/GPRS là sử dụng một chương trìnhđầu cuối Chức năng của chương trình này là gửi các ký tự được gõ vào modem GSM/
Trang 26GPRS, sau đó hiển thị những phản hồi nó nhận được từ modem này lên màn hình Cóthể dùng các chương trình như Hyper Terminal, TeraTerm, Hercules…
Dưới đây là một vài chức năng mà lệnh tập lệnh AT có thể thực hiện với mộtmodem GSM/GPRS hoặc máy điện thoại di động:
Lấy các thông tin cơ bản về máy điện thoại di động hoặc về modem GMS/GPRS
Ví dụ, để lấy tên nhà sản xuất (AT+CGMI), số model (AT+CGMM), số IMEI(International Mobile Equipment Identity) (AT+CGSN) hay phiên bản phần mềm(AT+CGMR)
Lấy các thông tin cơ bản về thuê bao Ví dụ, MSISDN (AT+CNUM) và số IMSI(International Mobile Subscriber Identity) (AT+CIMI)
Lấy thông tin hiện tại về tình trạng của máy điện thoại hoặc modem GSM/GPRS
Ví dụ, tình trạng hoạt động của máy (AT+CPAS), trạng thái đăng ký mạng diđộng (AT+CREG), độ mạnh của sóng di động (AT+CSQ), mức sạc và tình trạngsạc pin (AT+CBC)
Thiết lập một kết nối dữ liệu hoặc cuộc gọi tới một modem khác (ATD, ATA,etc)
Gửi và nhận fax (ATD, ATA, AT+F*)
Gửi (AT+CMGS, AT+CMSS), đọc (AT+CMGR, AT+CMGL), ghi(AT+CMGW) hoặc xóa (AT+CMGD) tin nhắn SMS và lấy thông báo nếu có tinnhắn SMS vừa nhận (AT+CNMI)
Đọc (AT+CPBR), ghi (AT+CPBW) hoặc tìm kiếm (AT+CPBF) trong danh bạ
Thực hiện các thao tác bảo mật, như là mở hoặc đóng khóa thiết bị (AT+CLCK),kiểm tra nếu thiết bị bị khóa (AT+CLCK) và đổi mật khẩu (AT+CPWD) (Ví dụ:khóa SIM [mỗi lần mở điện thoại phải nhập mật khẩu của thẻ SIM] và khóa PH-SIM [chỉ một thẻ SIM nhất định được tích hợp với một máy điện thoại Để dùngthẻ SIM khác với điện thoại đó, cần phải nhập mật khẩu.])
Điều khiển hiển thị mã kết quả / thông báo lỗi của tập lệnh AT Ví dụ, bạn có thểđiều khiển kích hoạt một số thông báo lỗi nhất định (AT+CMEE) và thông báolỗi có nên được hiển thị dưới định dạng số hoặc định dạng dài (AT+CMEE=1 orAT+CMEE=2)
Trang 27GSM (AT+COPS), kiểu dịch vụ truyền tin (AT+CBST), các thông số giao thứcliên kết vô tuyến (AT+CRLP), địa chỉ trung tâm SMS (AT+CSCA) và bộ nhớlưu trữ tin nhắn SMS (AT+CPMS).
Lưu và khôi phục cấu hình của điện thoại hoặc modem GSM/GPRS Ví dụ, lưu(AT+CSAS) và phục hồi (AT+CRES) các thiết lập liên quan tới việc nhắn tinSMS như là địa chỉ trung tâm SMS
Lưu ý rằng các nhà sản xuất điện thoại không luôn kế thừa tất cả các lệnh AT,tham số lệnh và giá trị tham số trong sản phẩm của họ Bên cạnh đó, hoạt động của cáclệnh AT được kế thừa có thể khác với lệnh được định nghĩa trong tiêu chuẩn Nói mộtcách tổng quát, modem GSM/GPRS được thiết kế cho các ứng dụng không dây hỗ trợtập lệnh AT tốt hơn so với các điện thoại di động
Ngoài ra, một vài lệnh AT cũng đòi hỏi được hỗ trợ bởi nhà mạng Ví dụ, SMSthông qua GPRS có thể được kích hoạt trên một số điện thoại có GPRS và GPRSmodem với lệnh +CGSMS (Select Service for MO SMS Messages) Nhưng nếu nhàmạng di động không hỗ trợ việc truyền tin nhắn qua SMS thì bạn không thể thực hiệntính năng này
2.2.2 Các lệnh căn bản và mở rộng
Có hại dạng lệnh AT: căn bản và mở rộng
Lệnh căn bản là những lệnh không bắt đầu với "+" Ví dụ, D (Dial), A (Answer),
H (Hook control) and O (Quay lại tình trạng dữ liệu trực tuyến) là những lệnh căn bản.Những lệnh mở rộng là những lệnh AT bắt đầu với dấu "+" Mọi lệnh thườngdùng cho SMS đều là lệnh mở rộng Ví dụ, +CMGS (Gửi tin nhắn SMS), +CMSS(Gửi tin nhắn SMS từ bộ nhớ), +CMGL (Liệt kê các tin nhắn SMS) và +CMGR (Đọctin nhắn SMS) là những lệnh mở rộng
2.2.3 Cú pháp tổng quát của các lệnh AT mở rộng
Cú pháp tổng quát của các lệnh AT mở rộng khá rõ ràng Vì việc thao tác vớiSMS chỉ liên quan đến các lệnh AT mở rộng nên chúng ta không đề cập đến các lệnh
AT căn bản Dưới đây là các quy tắc của các lệnh AT mở rộng:
Quy tắc 1: Tất cả các lệnh phải bắt đầu với "AT" và kết thúc với ký tự về đầudòng (CR – carriage return)
Trang 28 Quy tắc 2: Một dòng lệnh có thể bao gồm nhiều hơn một lệnh AT Chỉ có lệnhđầu tiên bắt đầu với "AT" Các lệnh còn lại trên dòng sẽ cách nhau bằng dấu chấmphẩy ";".
Quy tắc 3: Chuỗi ký tự được để trong dấu nháy kép ""
Quy tắc 4: Thông tin phản hồi và mã kết quả (bao gồm mã kết quả cuối cùng và
mã kết quả không mong muốn) luôn bắt đầu với một ký tự về đầu dòng và một ký tự xuống dòng
2.2.4 Mã kết quả của lệnh AT.
Mã kết quả cuối cùng đánh dấu kết thúc phản hồi cho một lệnh AT Nó cho biếtmodem GSM đã hoàn thành thực thi lệnh Hai mã được sử dụng thường xuyên là OK
và ERROR Mỗi một lệnh chỉ có một mã kết quả cuối cùng được trả về
Mã kết quả cuối cùng OK:
Cho biết một lệnh AT nào đó đã được thực hiện thành công bởi modem GSM Luôn bắt đầu và kết thúc với ký tự về đầu dòng và xuống dòng
Mã kết quả cuối cùng ERROR:
Mã này cho biết đã có lỗi xảy ra khi thực hiện một lệnh AT Sau khi xảy ra lỗi, modemGSM/GPRS sẽ không xử lý tiếp phần còn lại trong chuỗi lệnh
Một số nguyên nhân dẫn đến lỗi:
o Cú pháp lệnh sai
o Giá trị của một tham số không hợp lê
o Tên lệnh bị gõ sai
o Modem GSM/GPRS không hỗ trợ lệnh đó
Mã lỗi này cũng bắt đầu và kết thúc với ký tự về đầu dòng và xuống dòng
Mã kết quả cuối cùng +CMS ERROR:
Mã này được trả về khi một lỗi dịch vụ tin nhắn xảy ra Một mã lỗi được trả về cho người lập trình để kiểm tra nguyên nhân gây ra lỗi Lỗi này chỉ liên quan đến những lệnh AT thao tác với SMS Cũng như OK và ERROR, mã lỗi này cũng bắt đầu và kết thúc với một ký tự về đầu dòng và xuống dòng, và một số nguyên thể hiện một lỗi xác định
Dưới đây là một số mã lỗi +CMS và ý nghĩa của chúng:
Trang 29Mã lỗi +CMS Ý nghĩa
thiết bị giao tiếp với mạng không dây.Thường là máy điện thoại hoặc modemGSM/GPRS Thẻ SIM được định nghĩariêng và không phải là một phần củathiết bị di động
lệnh AT không hợp lệ (Với chế độ vănbản)
PIN
Trang 30Mã lỗi +CMS Ý nghĩa
không hợp lệ
không biết
hồi bởi lệnh AT+CNMA
2.2.5 Mã kết quả không được yêu cầu
Là những mã kết quả được gửi từ modem GSM/GPRS để cung cấp thông tin về
sự xảy ra của một sự kiện nào đó Ví dụ, chúng ta có thể dùng lệnh +CNMI (NewMessage Indication to TE) để yêu cầu modem GSM/GPRS gửi các mã kết quả
"+CMTI" tới máy tính mỗi khi có tin nhắn SMS được nhận từ SMSC
Dưới đây là một vài mã kết quả liên quan tới SMS:
Trang 31trạng tới máy tính.
AT+CDSI: được dùng để nhắc nhở máy tính về một tin nhắn SMS mới thông báotình trạng đã được nhận và vị trí lưu nó trong bộ nhớ
AT+CMT: được dùng để chuyển một tin nhắn mới vào máy tính
AT+CMTI: được dùng để nhắc nhở máy tính có tin nhắn mới nhận và vị trí nóđược lưu trong bộ nhớ
2.2.6 Một số ví dụ cơ bản về lệnh AT
Ví dụ về gửi và nhận tin nhắn SMS
Để tạo và gửi tin nhắn SMS chúng ta sẽ sử dụng những lệnh liên quan sau:
Bảng 2.2: Các lệnh tạo và gửi tin nhắn SMS.
Trang 32Để nhận và đọc tin nhắn SMS chúng ta sẽ sử dụng những lệnh liên quan sau:
Bảng 2.3: Các lệnh nhận và đọc tin nhắn SMS.
Ví dụ tạo và gửi tin nhắn
Trang 33 Dòng 1: lệnh "AT" được gửi đến modem GSM/GPRS để kiểm tra kết nối.Modem GSM/GPRS gửi lại mã kết quả "OK" (dòng 2), nghĩa là kết nối giữa chươngtrình đầu cuối và modem GSM / GPRS hoạt động tốt.
Dòng 3: Lệnh AT+CMGF được dùng để hướng dẫn cho modem GSM/GPRShoạt động trong chế độ văn bản SMS Mã kết quả "OK" được trả về (dòng 4), tức làlệnh "AT+CMGF=1" đã được thực thi thành công Nếu mã kết quả là "ERROR”, điều
đó có nghĩa là modem GSM/GPRS không hỗ trợ chế độ văn bản SMS
Để chắc chắn, chúng ta có thể gõ "AT+CMGF=?" trong chương trình đầu cuối Nếuphản hồi là "+CMGF: (0,1)" (0: chế độ PDU và 1: chế độ văn bản), nghĩa là chế độvăn bản SMS được hỗ trợ Nếu phản hồi là "+CMGF: (0)", tức là chế độ văn bản SMSkhông được hỗ trợ
Dòng 5 & 6: Lệnh AT+CMGW sẽ viết một tin nhắn SMS vào bộ nhớ lưu trữ tinnhắn của modem GSM /GPRS, "+84123456789" là số điện thoại của người nhắn Saukhi gõ vào số của người nhận, bạn có thể nhấn phím Enter Modem GSM / GPRS sau
đó sẽ trả về dấu nhắc "> " và bạn có thể bắt đầu nhập nội dung tin nhắn "A simpledemo of SMS text messaging.".Khi đã xong hãy nhấn Ctrl + Z
Dòng 7: "+CMGW: 1" cho ta biết chỉ số được gán với tin nhắn SMS mới tạo là 1
Nó cho biết vị trí của tin nhắn SMS trong bộ nhớ lưu tin nhắn
Dòng 9: Mã kết quả "OK" cho biết kết quả thực hiện lệnh AT+CMGW đã thànhcông
Dòng 10: Lệnh AT+CMSS gửi tin nhắn SMS từ bộ nhớ của modem GSM/GPRS "1" là chỉ số của tin nhắn SMS có được từ dòng 7
Dòng 11: "+CMSS: 20" cho ta biết số tham chiếu được gán cho SMS vừa rồi là20
Dòng 13: Mã kết quả "OK" cho biết lệnh AT+CMSS đã thực hiện thành công
Ví dụ nhận và đọc tin nhắn
Trang 34 Dòng 3: Lệnh AT+CMGF được dùng để hướng dẫn modem GSM/GPRS hoạtđộng trong chế độ văn bản SMS Mã kết quả "OK" được trả về (dòng 4), tức là lệnh
"AT+CMGF=1" đã được thực thi thành công Nếu mã kết quả là "ERROR”, điều đó
có nghĩa là modem GSM/GPRS không hỗ trợ chế độ văn bản SMS
Để chắc chắn, chúng ta có thể gõ "AT+CMGF=?" trong chương trình đầu cuối Nếuphản hồi là "+CMGF: (0,1)" (0: chế độ PDU và 1: chế độ văn bản), nghĩa là chế độvăn bản SMS được hỗ trợ Nếu phản hồi là "+CMGF: (0)", tức là chế độ văn bản SMSkhông được hỗ trợ
Dòng 5-9: Lệnh AT+CMGL liệt kê tất cả tin nhắn SMS có trong bộ nhớ lưu trữcủa modem GSM/GPRS Có hai tin nhắn trong bộ nhớ: "Hello, welcome to our SMStutorial." Và "A simple demo of SMS text messaging." "+84123456789" số điện thoạingười gửi "06/11/11,00:30:29+32" và "06/11/11,00:32:20+32" thời gian tin nhắnđược nhận bởi SMSC "+32" là múi giờ Lưu ý rằng đơn vị là ¼ giờ Vì thế, +32 tức làgiờ GMT+8, vì 32 lần ¼ giờ = 8 giờ "REC READ" cho biết cả hai tin này đã đượcđọc trước đó
Dòng 11: Mã kết quả "OK" cho biết lệnh AT+CMGL đã thực hiện thành công
Trang 35Đặc tả SMS đã định nghĩa hai chế độ mà modem GSM/GPRS có thể thao tác Đó
là chế độ văn bản SMS và chế độ PDU (Protocol Data Unit) Chế độ SSM/GPRSmodem hoặc điện thoại đang hoạt động quyết định cú pháp của một vài lệnh SMS AT
và định dạng của phản hồi sau khi thực thi lệnh Dưới đây là một số lệnh SMS AT bịảnh hưởng:
AT+CMGS (Gửi tin nhắn)
AT+CMSS (Gửi tin nhắn)
AT+CMGR (Đọc tin nhắn)
AT+CMGL (Liệt kê các tin nhắn)
AT+CMGW (Ghi tin nhắn vào bộ nhớ)
AT+CNMA (Phản hồi tin nhắn mới tới ME/TA)
AT+CMGC (Gửi lệnh)
Cú pháp của những mã kết quả không yêu cầu dưới đây cũng phụ thuộc vào chế
độ modem GSM/GPRS hoặc máy điện thoại đang hoạt động:
AT+CMT (Được dùng để chuyển tin nhắn SMS mới nhận tới máy tính)
AT+CBM (Được dùng để chuyển những tin nhắn "quảng bá" tới máy tính)
AT+CDS (Được dùng để chuyển tin thông báo tình trạng tin nhắn tới máy tính)Hai lệnh AT chỉ hữu ích trong chế độ văn bản:
AT+CSMP (Thiết lập các tham số chế độ văn bản SMS)
AT+CSDH (Hiển thị các tham số chế độ văn bản SMS)
So sánh chế độ văn bản và PDU:
Chúng ta so sánh cú pháp các lệnh AT và phản hồi Khi modem GSM/GPRShoặc máy điện thoại hoạt động ở chế độ khác nhau, cú pháp một vài lệnh SMS AT vàphản hồi sau khi thực hiện lệnh cũng khác nhau Dưới đây là ví dụ Để gửi tin nhắn cónội dung "It is easy to send text messages." tới số điện thoại +84123456789 Trong chế
độ văn bản SMS, chúng ta sẽ nhập dòng lệnh sau:
AT+CMGS="+84291234567"<CR>It is easy to send text messages.<Ctrl+Z>
Trang 36Tuy nhiên, nếu modem GSM/GPRS đang hoạt động trong chế độ SMS PDU,thực hiện lệnh trên sẽ gây ra lỗi Nguyên nhân là do cú pháp của lệnh AT+CMGS khácnhau với chế độ SMS PDU Để gửi tin nhắn trên, chúng ta cần nhập lệnh như sau:
AT+CMGS=42<CR>07915892000000F001000B915892214365F7000021493A283D 0795C3F33C88FE06CDCB6E32885EC6D341EDF27C1E3E97E72E<Ctrl+Z>
Giá trị xác định với một vài tham số nhất định:
Khi modem GSM/GPRS hoặc điện thoại hoạt động trong những chế độ khácnhau, các giá trị xác định với một vài tham số cũng khác nhau Chế độ văn bản thườngdùng các giá trị chuỗi, trong khi chế độ PDU sử dụng các giá trị số Ví dụ, lệnhAT+CMGL được dùng để liệt kê các tin nhắn SMS trong bộ nhớ Nó nhận một tham
số để chỉ định tình trạng tin nhắn được đọc Bảng dưới đây liệt kê các giá trị của tham
số đó trong chế độ văn bản và PDU
Bảng 2.4: Bảng liệt kê các giá trị của tham số trong chế độ văn bản và PDU.
Tình trạng tin nhắn Giá trị trong chế độ văn
AT+CMGL="ALL"