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

nhắn tin để điều khiển đóng, mở các thiết bị trong sinh hoạt hằng ngày bằng kết hợp giữa board arduino uno và module breakout SIM900A

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

1

Lờ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


2

MỤC LỤC


3

DANH SÁCH CÁC HÌNH VẼ



4

DANH SÁCH CÁC BẢNG


5

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

Từ viết tắt

Diễn giải

Dịch nghĩa

GND

Ground

Nối đất

AREF

Analog Reference

Điện áp tham chiếu

RX


Receiver

Nhận dữ liệu

TX

Transmitter

Truyền dữ liệu

TTL

Transistor-Transistor Logic

Giao tiếp nối tiếp

SS

Slave Select

Chọn bên bị động

MOSI

Master Output/ Slave Input

Cổng ra chủ động/ Cổng vào
bị động

MISO


Master Input/ Slave Output

Cổng vào chủ động/ Cổng ra
bị động

SCK

Serial Clock

Tín hiệu đồng hồ tắc tơ nối
tiếp

SPI

Serial Peripheral Interface

Giao diện ngoại vi nối tiếp

PWM

Pulse Width Modulation

Điều chế xung

SRAM

Static Random Access Memory

Bộ nhớ truy xuất ngẫu nhiên


EEPROM

Electrically Erasable Programmable
Read Only Memory

Bộ nhớ chỉ đọc

GSM

Global System for Mobile
Communication

Hệ thống thông tin di động
toàn cầu

GPRS

General Packet Radio Service

Dịch vụ vô tuyến gói tổng
hợp


6
SIM

Subscriber Identity Module

Module nhận dạng tin nhắn


SMS

Short Message Service

Dịch vụ tin nhắn ngắn

WAP

Wirless Application Protocol

Giao thức ứng dụng không
dây

SMSC

Short Message Service Center

Trung tâm tin nhắn

CDMA

Code Division Multiple Access

Đa truy nhập phân chia theo


TDMA

Time Division Multiple Access


Đa truy nhập phân chia theo
thời gian

HTTP

Hypertext Transfer Protocol

Giao thức truyền tải siêu văn
bản

HTTPS

Hypertext Transfer Protocol Secure

Giao thức truyền tải bảo mật
cao

TCP/ IP

Transmission Control Protocol /

Giao thức truyền thông
Internet

Internet Protocol
ETSI

European Telecommunications
Standards Instiute


Viện Tiêu chuẩn Viễn thông
châu Âu

MO

Mobile Originated

Máy di động gửi tin nhắn

MT

Mobile Terminated

Máy di động nhận tin nhắn

PUK

Personal Unblocking

Mã nhận dạng cá nhân


7
MỞ ĐẦU
Ngà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ạng
trong 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ệu

quả, 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ướt
web…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ười
dù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ằng
ngà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.


8

CHƯƠ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 cho
sinh 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ái tê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ày
thườ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ủa
Ivrea, 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át
triể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 độc
chó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


9
của vi điều khiển hay vi xử lý ra bên ngoài, cung cấp một số mạch điện bổ trợ và các
chuẩ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ý trung
tâ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ổ sung
giú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ẩn
củ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ếp
thô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ạng
song 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ác cũ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ổng hưở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 động tại



10
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ột nguồ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ác thô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ều chỉ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.


11
o 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ức SPI 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ụng
ATMega328.
• 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.
Vi xử lý
Điện áp hoạt động
Điện áp đầu vào
Điện áp đầu vào (giới hạn)
Chân vào/ ra (I/O) số
Chân vào/ ra tương tự
Dòng điện trong mỗi chân I/O
Bộ nhớ trong
SRAM
EEPROM
Xung nhịp

Atmega328

5V
7-12V
6-20V
14 (6 chân có thể cho đầu ra PWM)
6
40mA
32KB(ATmega328)
2KB(ATmega328)
1KB(ATmega328)
16MHz

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ều
lợ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


12
trườ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ên
nề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ình
Arduino 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ày
hoà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à do
ngô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àn
toà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ủ bao gồm các phiên bản

sau:


13
• Arduino 1.6.3
• Arduino IDE dành cho Intel Galileo.
1.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ông
dâ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 qua
mộ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ẻ sim
vớ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.
Bình thường từ -30ºC tới +80ºC.


14
Hạn chế: - 40ºC tới – 30ºC và +80ºC tới + 85ºC.
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.

SMS:
o Hỗ trợ các chế độ MT, MO, văn bản và PDU.
o Bộ nhớ SMS: Sim card
Sim card:
Hỗ trợ sim card: 1,8V; 3V

o

Giao tiếp nối tiếp và nghép nối:
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ết
sẵn.


15

Hì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.


16
Sơ đồ chân Breakout:
Bảng 1.2: Các chân của module Breakout SIM900A dùng trong bài.
1

2

12


14

17

18

19

20

ON/OFF

LED

TXD

RXD

VCC

GND

VCC

GND

• 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ệu
SIM900A đã 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ủa
SIM900A 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ác
thiế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 ta
cùng tìm hiểu ở chương 2.


17

CHƯƠNG II: TÌM HIỂU VỀ TIN NHẮN SMS VÀ TẬP LỆNH ATCOMMAND
2.1. Tổng quát về tin nhắn SMS.
2.1.1. Giới thiệu về SMS.
SMS – Short Message Service (dịch vụ tin nhắn ngắn) – là công nghệ cho phép
việc gửi và nhận tin nhắn giữa các điện thoại di động. SMS lần đầu xuất hiện ở châu
Âu năm 1992. Ở thời điểm đó, nó bao gồm cả các chuẩn về GSM (Global System for
Mobile Communications). Một thời gian sau đó, nó phát triển sang công nghệ không
dây như CDMA và TDMA. Các chuẩn GSM và SMS có nguồn gốc phát triển bởi Viện
Tiêu chuẩn Viễn thông châu Âu (ETSI). Ngày nay thì 3GPP (Third Generation
Partnership Project) đang giữ vai trò kiểm soát về sự phát triển và duy trì các chuẩn
GSM và 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ột
tin nhắn SMS có thể chứa tối đa là 140 byte (1120bit) dữ liệu. Vì vậy, một tin nhắn
SMS 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ắn
SMS 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, Trung
Quố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 ích
khá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ện
thoạ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.


18
Tin 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ện
thoại di động ngày nay đều có hỗ trợ nó. Bạn không chỉ có thể trao đổi các tin nhắn
SMS đối với người sử dụng di động ở cùng một nhà cung cấp dịch vụ mạng sóng
mang 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ới
nó.
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ông
nghệ 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át
huy 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ân
bê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ạt

họ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ó cho
phé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ạn
muố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ực
thi ứ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ăng
chi 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ắn
nà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ười
phát triển ứng dụng này xây dựng. Ứng dụng SMS mà bạn sử dụng sau đó sẽ được
gử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ẳng
hạ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át
triể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:


19

Hình 2.: Cấu trúc một tin nhắn SMS.
• Instructions to air interface: chỉ địa chỉ dữ liệu kết nối với air interface (giao diện
không khí).
• Instructions to SMSC: chỉ thị dữ liệu kết nối với trung tâm tin nhắn SMSC (short
message service center).


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 (Subscriber
Identity 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ể mang
mộ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ứa
nhiều hơn 160 kí tự theo chuẩn dùng trong tiếng Anh. Cơ cấu hoạt động cơ bản SMS
chuỗ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ành
nhiề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 tin
nhắ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ác
hoạ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 được
gử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 tin
nhắ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ư


20
SMSC và SMS gateway) trước khi đi tới đích thực sự của nó. Nhiệm vụ duy nhất của
mộ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ới
chu 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ắt
nguồ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ủa

ngườ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ông
SMS 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ủa
riê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ống
vậ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ạng
khô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ện
thoạ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ì địa
chỉ đượ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 tin
nhắ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ành
quố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à được
gử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ữa
cá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ành
mạ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 trong
nướ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ùng
mộ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ậm
chí 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ống
SMS toàn cầu.


21
2.1.6. Tổng đài tin nhắn (SMS Gateway)
Mộ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ác

cô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 đều
thuộc quyền sở hữu của chính họ. Chẳng hạn như Nokia có một giao thức SMSC được
gọ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ợ giao
thức SMSC chung. Để giải quyết những khó khăn này, một tổng đài tin nhắn được đặt
giữa như một bộ chuyển đổi giữa hai SMSC. Nó chuyển đổi thông tin dữ liệu từ một
giao thức SMSC sang một giao thức SMSC khác. Giải pháp này được sử dụng cho hai
só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.: 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ển
cá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 SMS
dạ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ác
nhau 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ác
giao 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 gian
phá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.


22

Hình 2.: 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ác
kế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ần
biế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ều
hơ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ần

phả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 tin
nhắ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 SMSC
chẳ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.


23

Hình 2.: 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ăng
nà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ện
thoạ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ạng
vă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 đầu
bởi Hayes Communications cho modem Hayes Smartmodem vào năm 1997. Tập lệnh
bao 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ỉnh
cho 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ết
cá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


24
GSM/GPRS, 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ột
modem 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ạng
sạ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ó tin nhắ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 PHSIM [chỉ một thẻ SIM nhất định được tích hợp với một máy điện thoại. Để dùng
thẻ 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áo
lỗi có nên được hiển thị dưới định dạng số hoặc định dạng dài (AT+CMEE=1 or
AT+CMEE=2).
• Lấy hoặc thay đổi cấu hình của điện thoại hay modem. Ví dụ, thay đổi mạng
GSM (AT+COPS), kiểu dịch vụ truyền tin (AT+CBST), các thông số giao thức


25
liê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 tin
SMS 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ác
lệ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ột
cá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ụ, SMS
thông qua GPRS có thể được kích hoạt trên một số điện thoại có GPRS và GPRS
modem 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ện
tí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ường
dù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 (Đọc
tin 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ới
SMS 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ề đầu dòng
(CR – carriage return).
• 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ấm phẩy ";".
• Quy tắc 3: Chuỗi ký tự được để trong dấu nháy kép "".


×