Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 1 SVTH: Trần Nguyên Hoàng

Phần 1
TỔNG QUAN VỀ CÁC LINH KIỆN DÙNG TRONG ĐỀ TÀI
I. Giới thiệu về GSM Module SIM900
1. Khái quát về tin nhắn SMS:
SMS là từ viết tắt của Short Message Service. Đó là một công nghệ cho phép
gửi và nhận các tín nhắn giữa các điện thoại với nhau. SMS xuất hiện đầu tiên ở
Châu âu vào 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ệ wireless như CDMA và TDMA. Các chuẩn GSM và SMS có nguồn gốc
phát triển bởi ETSI. ETSI là chữ viết tắt của European Telecommunications
Standards Institute. 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 về tên đầy đủ của SMS là Short Message Service, từ 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 (1120 bit) 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 lí tự latin chẳng hạn như các lí 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 text 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 text thì tin nhắn SMS còn
có thể mang các dữ liệu dạng binary. 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.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 2 SVTH: Trần Nguyên Hoàng

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 wireless.
Không giống như SMS, các công nghệ mobile như WAP và mobile Java thì không
được hỗ trợ trên nhiều model điện thoại.
Sử dụng tin nhắn SMS ngày càng phát triển và trở lên rộng khắp :
- Các tin nhắn SMS có thể được gửi và đọc tại bất kỳ thời điểm nào.
Ngày nay, hầu hết mọi người đều có điện thoại di động của riêng mình và
mang nó theo người hầu như cả ngày. Với một điện thoại di động , bạn có thể gửi
và đọc các tin nhắn SMS bất cứ lúc nào bạn muốn, sẽ không gặp khó khăn gì khi
bạn đang ở trong văn phòng hay trên xe bus hay ở nhà…
- Tin nhắn SMS có thể được gửi tới các điện thoại mà tắt nguồn.
Nếu như không chắc cho một cuộc gọi nào đó thì bạn có thể gửi một tin nhắn
SMS đến bạn của bạn thậm chí khi người đó tắt nguồn máy điện thoại trong lúc bạn
gửi tin nhắn đó. Hệ thống SMS của mạng điện thoại sẽ lưu trữ tin nhắn đó rồi sau
đó gửi nó tới người bạn đó khi điện thoại của người bạn này mở nguồn.
- Các tin nhắn SMS ít gây phiền phức trong khi bạn vẫn có thể giữ liên
lạc với người khác
Việc đọc và viết các tin nhắn SMS không gây ra ồn ào. Trong khi đó, bạn
phải chạy ra ngoài khỏi rạp hát, thự viện hay một nơi nào đó để thực hiện một cuộc
điện thoại hay trả lời một cuộc gọi. Bạn không cần phải làm như vậy nếu như tin
nhắn SMS được sử dụng.
- Các điện thoại di động và chúng có thể được thay đổi giữa các sóng
mang Wireless khác nhau.
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 mobile 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 mobile ở cùng một nhà cung cấp dịch vụ mạng
sóng mang wireless, mà đồng thời bạn cũng có thể trao đổi nó với người sử dụng
khác ở các nhà cung cấp dịch vụ khác.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 3 SVTH: Trần Nguyên Hoàng

- SMS là một công nghệ phù hợp với các ứng dụng Wireless 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 wireless 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
binary bên cạnh gửi các text. 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.
2. Giới thiệu GSM Module SIM900
SIM900 là 1 Module GSM/GPRS 4 băng tần làm việc ở các tần số: GSM
850MHz, EGSM 900MHZ, DCS 1800MHz và PCS 1900MHz. SIM900 có đầy đủ
các tính năng cơ bản của 1 điện thoại di động GSM như gọi và nhận cuộc gọi, nhắn
và nhận tin SMS, gửi và nhận dữ liệu bằng kết nối GPRS thông qua tập lệnh AT
Các thông số cơ bản:
 Nguồn cung cấp: 3,2 ~ 4,8V
 Băng tần: EGSM 900Mhz, DCS 1800 Mhz và PCS 1900Mhz, SIM900 có
thể tự động tìm kiếm các băng tần
Phù hợp với GSM Phase 2/2+
 Công suất phát:
Class 4 (2W) với GSM 850 và EGSM 900
Class 1 (1W) với DCS 1800 và PCS 1900
 Kết nối GPRS:
GPRS có nhiều rãnh loại 8 ( lựa chọn )
GPRS có nhiều ránh loại 10 ( mặc định )
 Giới hạn nhiêt độ:
Bình thường -30ºC tới +70ºC
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 4 SVTH: Trần Nguyên Hoàng

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:
GPRS dữ liệu download: Max 85.6 kbps
GPRS dữ liệu upload: Max 42.8 kbps
Sơ đồ mã hóa: CS-1, CS-2, CS-3 và CS-4
Sim 300CZ tích hợp giao thức TCP/IP
 CSD: Tốc độ truyền dẫn CSD: 2; 4; 8; 9; 6; 14 KPPS
 Hỗ trợ USSD.
 SMS:
MT, MO, CB, Text and PDU mode
Bộ nhớ SMS: Sim card
 FAX: Nhóm 3 loại 1.
 Giao tiếp SIM card: Hỗ trợ sim card: 1,8v ; 3v
 Anten ngoài: có tiếp điểm kết nối với antena ngoài.
 Âm thanh:
Loại bỏ tiếng dội.
Khử nhiễu.
 Serial port:
Tốc độ baud: 1200bps đến 115200bps.
Sử dụng cho tập lệnh AT và dữ liệu.
Hỗ trợ Autobauding cho tốc độ baud từ 1200bps đến 57600.
 Debug port:
Giao tiếp qua chân DBG_TXD và DBG_RXD.
Dùng cho việc chỉnh sửa và nâng cấp firmware.
 Quản lý danh sách: Hỗ trợ các mẫu danh sách: SM, FD, LD, RC,ON, MC
 Đồng hồ thời gian thực.
 Đặc tính vật lý (đặc điểm):
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 5 SVTH: Trần Nguyên Hoàng

• Kích thướt 24x24x3mm
• Nặng 3.4 g
Hình 1.1: Kích thước của SIM900

Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 6 SVTH: Trần Nguyên Hoàng

Hình 1.2: Hình chụp mặt trên và mặt dưới SIM900
3. Sơ đồ chân và chức năng từng chân của SIM900

Hình 1.3: Sơ đồ chân SIM900
Chân 1,2 : điều khiển tắt/mở module.
Chân 3, 4, 5, 6, 7, 8, 9, 10: chân giao tiếp cổng COM.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 7 SVTH: Trần Nguyên Hoàng

- DTR : Data Terminal ready ( DTE sẵn sàng làm việc).
- RI : Ring Indicator (báo chuông).
- DCD : Data Carier detect (DCE phát hiện sóng mang).
- DSR : Data Set Ready (DCE sẵn sàng làm việc).
- CTS : Clear To Send (DCE sẵn sàng nhận dữ liệu).
- RTS : Request To Send (DTE yêu cầu truyền dữ liệu).
- TXD : Transmitted Data (dữ liệu truyền).
- RXD : Received Data (dữ liệu nhận).
Chân 11, 12, 13, 14: chân giao tiếp màn hình LCD. Chức năng giao tiếp
LCD không hỗ trợ trong firmware tiêu chuẩn, để sử dụng, người dùng phải sửa đổi
firmware.
Chân 15 (VDD_EXT): nguồn 2.8V cung cấp cho mạch ngoài.
Chân 16 (NRESET): reset module (tích cực mức thấp).
Chân 17, 18, 29, 39, 45, 46, 53, 54, 58, 59, 62, 63, 64, 65 (GND): chân mas.
Chân 19, 20 (MIC_P, MIC_N): ngõ vào micro.
Chân 21, 22 (SPK_P, SPK_N): ngõ ra loa.
Chân 23, 24 (LINEIN_R, LINEIN_L): ngõ vào âm thanh.
Chân 25 (ADC): ngõ vào bộ chuyển đổi Analog-Digital (0 ~ 2.8V).
Chân 26 (VRTC): nguồn cung cấp cho RTC.
Chân 27, 28 (DBG_TXD, DBG_RXD): dùng để tuỳ chỉnh và nâng cấp
firmware.
Chân 30, 31, 32, 33, 34 (SIM_VDD, SIM_DATA, SIM_CLK, SIM_RESET,
SIM_PRESENCE): các chân giao tiếp với SIM card.
- SIM_VDD: chân cấp nguồn cho SIM.
- SIM_DATA: ngõ vào, ra dữ liệu.
- SIM_CLK: cấp xung clock cho SIM.
- SIM_RESET: reset SIM.
- SIM_PRESENCE: chân giúp phát hiện thẻ SIM.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 8 SVTH: Trần Nguyên Hoàng

Chân 35, 36 (PWM1, PWM2): ngõ ra điều chế xung dùng cho đèn bàn phím
và bộ rung.
Chân 37, 38 (SDA, SCL): chân dùng cho giao tiếp I²C.
Chân 40-44, 47-51, 67, 68: các ngõ vào ra và kết nối với Keypad.
Chân 52 (NETLIGH): ngõ ra đèn hiển thị trạng thái mạng.
Chân 55, 56, 57 (VBAT): ngõ vào nguồn cung cấp cho Module.
Chân 60 (RF_ANT): kết nối với antena ngoài.
Chân 66 (STATUS): ngõ ra đèn hiển thị trạng thái hoạt động của Module.
4. Tập lệnh AT của Module SIM900:
Module SIM900 giao tiếp với vi điều khiển hoặc máy tính thông qua giao
tiếp RS232 và được điều khiển thông qua bộ tập lệnh AT viết tắt của từ Attention
do Dennis Hayes phát minh ra vào năm 1977. Trong tập lệnh AT, mỗi câu lệnh
được bắt đầu với chữ “AT” hoặc “at”.
Các thuật ngữ:
- <CR> : Carriage return (0x0D).
- <LF> : Line Feed (0x0A).
- MT (Mobile Terminal): Thiết bị đầu cuối mạng (trong trường hợp
này là Module SIM900).
- TE (Terminal Equipment) Thiết bị đầu cuối (máy tinh, vi điều
khiển).
4.1. Các lệnh khởi tạo GSM Module SI M900
Các lệnh khởi tạo chỉ cần được thực thi 1 lần, sau đó lưu lại và trở thành cấu
hình mặc định của modem. Cấu hình mặc định này không thay đổi, kể cả khi mất
nguồn. Phần khởi tạo này không liên quan đến quá trình hoạt dộng sau này của
modem. Do đó có thể khởi tạo riêng trước khi đưa vào vận hành trong hệ thống.
 ATZ<CR> : Reset modem, kiểm tra module đã hoạt động bình
thường chưa. Chuỗi được trả về có dạng
ATZ<CR><CR><LF>OK<CR><LF>.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 9 SVTH: Trần Nguyên Hoàng

 ATE0<CR> : Tắt chế độ echo lệnh. Chuỗi trả về có dạng
ATE0<CR><CR><LF>OK<CR><LF>.
 AT+CLIP=1<CR> : Định dạng chuỗi trả về khi nhận cuộc gọi.
Thông thường, ở chế độ mặc định, khi có cuộc gọi đến, chuỗi trả
về sẽ có dạng: <CR><LF>RING<CR><LF>
Sau khi lệnh AT+CLIP=1<CR> đã được thực thi, chuỗi trả về sẽ
có dạng: <CR><LF>RING<CR><LF>
<CR><LF>+CLIP: "0929047589",129,"",,"",0<CR><LF>
Chuỗi trả về có chứa thông tin về số điện thoại gọi đến. Thông tin
này cho phép xác định việc có nên nhận cuộc gọi hay từ chối cuộc gọi.
 AT&W<CR> : Lưu cấu hình cài đặt được thiết lập bởi các lệnh
ATE0 và AT+CLIP vào bộ nhớ.
 AT+CMGF=1<CR> : Thiết lập quá trình truyền nhận tin nhắn
được thực hiện ở chế độ text (mặc định là ở chế độ PDU). Chuỗi trả về sẽ có
dạng: <CR><LF>OK<CR><LF>
 AT+CNMI=2,0,0,0,0<CR> : Thiết lập chế độ thông báo cho
TE khi MT nhận được tin nhắn mới. Chuỗi trả về sẽ có dạng:
<CR><LF>OK<CR><LF>
Sau khi lệnh trên được thiết lập, tin nhắn mới nhận được sẽ được
lưu trong SIM, và MT không truyền trở về TE bất cứ thông báo nào. TE sẽ
đọc tin nhắn được lưu trong SIM trong trường hợp cần thiết.
 AT+CSAS<CR> : Lưu cấu hình cài đặt được thiết lập bởi các
lệnh AT+CMGF và AT+CNMI.
4.2. Các lệnh thực hiện cuộc gọi
 ATDxxxxxxxxxx;<CR> : Quay số cần gọi. Chuỗi trả về có
dạng:
<CR><LF>OK<CR><LF>
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 10 SVTH: Trần Nguyên Hoàng

Chuỗi này thông báo lệnh trên đã được nhận và đang được thực thi.
Sau đó là những chuỗi thông báo kết quả quá trình kết nối (nếu như kết nối
không được thực hiện thành công).
Nếu MT không thực hiện được kết nối do sóng yếu, hoặc không có
sóng (thử bằng cách tháo antenna của modem GSM), chuỗi trả về sẽ có dạng:
<CR><LF>NO DIAL TONE<CR><LF>
Nếu cuộc gọi bị từ chối bởi người nhận cuộc gọi, hoặc số máy
đang gọi tạm thời không hoạt động (chẳng hạn như bị tắt máy) chuỗi trả về
có dạng: <CR><LF>NO CARRIER<CR><LF>
Nếu cuộc gọi không thể thiết lập được do máy nhận cuộc gọi đang
bận (ví dụ như đang thông thoại với một thuê bao khác), chuỗi trả về sẽ có
dạng:
<CR><LF>BUSY<CR><LF>
Tổng thời gian từ lúc modem nhận lệnh cho đến lúc nhận được
chuỗi trên thông thường là 4 giây.
Nếu sau 1 phút mà thuê bao nhận cuộc gọi không bắt máy, chuỗi
trả về sẽ có dạng:
<CR><LF>NO ANSWER<CR><LF> (60s)
Trong trường hợp quá trình thiết lập cuộc gọi diễn ra bình thường,
không có chuỗi thông báo nào được trả về, và chuyển sang giai đoạn thông
thoại.
Quá trình kết thúc cuộc gọi được diễn ra trong hai trường hợp:
Đầu nhận cuộc gọi gác máy trước: chuỗi trả về sẽ có dạng:
<CR><LF>NO CARRIER<CR><LF>
Đầu thiết lập cuộc gọi gác máy trước: phải tiến hành gửi lệnh
ATH, và chuỗi trả về sẽ có dạng:
<CR><LF>OK<CR><LF>
Sau khi được khởi tạo bằng lệnh AT+CLIP=1, khi có cuộc gọi
đến, chuỗi trả về sẽ có dạng:
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 11 SVTH: Trần Nguyên Hoàng

<CR><LF>RING<CR><LF>
<CR><LF>+CLIP:
"0929047589",129,"",,"",0<CR><LF>
Chuỗi trả về có hiển thị số điện thoại yêu cầu được kết nối, dựa
trên thông tin này để có thể ra quyết định nhận cuộc gọi hay từ chối cuộc gọi.
Nếu số điện thoại gọi đến không hợp lệ, từ chối nhận cuộc gọi
bằng lệnh ATH<CR>, và chuỗi trả về sẽ có dạng:
<CR><LF>OK<CR><LF>
Nếu số điện thoại gọi đến là hợp lệ, nhận cuộc gọi bằng cách gửi
lệnh ATA<CR>, và chuỗi trả về sẽ có dạng:
<CR><LF>OK<CR><LF>
Kết thúc cuộc gọi, chủ động gác máy bằng cách gửi lệnh
ATH<CR>.
4.3. Các lệnh về tin nhắn SMS
a) Đọc tin nhắn
Khi có tin nhắn mới, module sẽ trả về 1 chuỗi có dạng:
<CR><LF>+CMTI: “SM”,x<CR><LF>
Với x là vị trí của tin nhắn được lưu trong Sim card.
Đọc tin nhắn trong ngăn 1 bằng lệnh AT+CMGR=1<CR>.
Nếu ngăn 1 không chứa tin nhắn, chỉ có chuỗi sau được trả về:
<CR><LF>OK<CR><LF>
Nếu ngăn 1 có chứa tin nhắn, nội dung tin nhắn sẽ được gửi trả về
TE với định dạng như sau:
<CR><LF>+CMGR: "REC
UNREAD","+841228678499",,"07/05/12,09:32:05+28"
<CR><LF>NỘI DUNG<CR><LF>
<CR><LF>OK<CR><LF>
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 12 SVTH: Trần Nguyên Hoàng

Các tham số trong chuỗi trả về bao gồm trạng thái của tin nhắn
(REC UNREAD), số điện thoại gửi tin nhắn (+841228678499) và thời gian
gửi tin nhắn (07/05/12,09:32:05+28) và nội dung tin nhắn.
Đây là định dạng mặc định của module SIM900 lúc khởi động.
Dạng mở rộng có thể được thiết lập bằng cách sử dụng lệnh AT+CSDH=1
trước khi thực hiện đọc tin nhắn.
Sau khi đọc, tin nhắn được xóa đi bằng lệnh AT+CMGD=1<CR>.
b) Gửi tin nhắn:
Lệnh AT sử dụng để gởi tin nhắn như sau
:AT+CMGS="01228678499"
Sau đó SIM900 sẽ gửi trả về chuỗi có dạng <CR><LF>> (kí tự >
và 1 khoảng trắng)
Bây giờ ta nhập nội dung tin nhắn và kết thúc bằng kí tự có mã
ASCII là 0x1A (CTRL+Z)
Gửi kí tự ESC (mã ASCII là 27) nếu không muốn tiếp tục gửi tin
nhắn nữa. Khi đó TE sẽ gửi trả về chuỗi
<CR><LF>OK<CR><LF>.
Chuỗi trả về thông báo kết quả quá trình gửi tin nhắn có định dạng
như sau:
<CR><LF>+CMGS: 62<CR><LF>
<CR><LF>OK<CR><LF>
Trong đó 62 là một số tham chiếu cho tin nhắn đã được gửi. Sau
mỗi tin nhắn được gửi đi, giá trị của số tham chiếu này sẽ tăng lên 1 đơn vị.
Số tham chiếu này có giả trị nằm trong khoảng từ 0 đến 255.
Thời gian gửi một tin nhắn vào khoảng 3-4 giây (kiểm tra với
mạng Mobi phone).
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 13 SVTH: Trần Nguyên Hoàng

Nếu tình trạng sóng không cho phép thực hiện việc gửi tin nhắn
(thử bằng cách tháo antenna), hoặc chức năng RF của modem không được
cho phép hoạt động (do sử dụng các lệnh AT+CFUN=0 hoặc AT+CFUN=4),
hoặc số tin nhắn trong hàng đợi phía tổng đài vượt qua giới hạn cho phép,
hoặc bộ nhớ chứa tin nhắn của MT nhận được tin nhắn bị tràn, MT sẽ gửi
thông báo lỗi trở về và có định dạng như sau:
<CR><LF>+CMS ERROR: 193<CR><LF>
<CR><LF>+CMS ERROR: 515<CR><LF>
Chức năng truyền nhận tin nhắn và chức năng thoại được tách biệt.
Khi đang thông thoại vẫn có thể truyền nhận được tin nhắn. Khi truyền nhận
tin nhắn vẫn có thể tiến hành thiết lập và kết thúc cuộc gọi.
4.4. Các lệnh về GPRS
 AT+CGATT : lệnh gán hay tách thiết bị khỏi GPRS.
 AT+CGDCONT : định nghĩa dạng PDP.
 AT+CGQMIN : chất lượng dich vụ ở mức thấp nhất.
 AT+CGQREQ : chất lượng dich vụ.
 AT+CGDATA : trạng thái dữ liệu vào.
 AT+CGREG : tình trạng đăng ký của mạng.
 AT+CGCOUNT : đếm gói dữ liệu vào.
Trong giới hạn của đề tài, ta chỉ sử dụng đến các lệnh thực hiện việc gửi và
đọc tin nhắn SMS.
II. Giới thiệu Vi điều khiển Microchip PIC16F877A
1. Khái quát về Vi điều khiển PIC16F877A
Khối xử lí trung tâm đóng vai trò chính là PIC16F877A sẽ làm nhiệm vụ
chính là tiếp nhận và xử lí các dữ liệu đến và đi một cách tự động. Đề tài sử dụng
PIC16F877A vì những ưu điểm vượt trội của nó so với các vi điều khiển khác.Về
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 14 SVTH: Trần Nguyên Hoàng

mặt tính năng và công năng thì có thể xem PIC vượt trội hơn rất nhiều so với VĐK
họ 89 với nhiều module được tích hợp sẵn như ADC 10 BIT, PWM 10 BIT,
EEPROM 256 BYTE, COMPARATER, VERF COMPARATER…Về mặt giá cả
thì có đôi chút chênh lệch như giá 1 con 89S52 khoảng 20.000 thì PIC16F877A là
80.000 nhưng khi so sánh như thế thì ta nên xem lại phần linh kiện cho việc thiết kế
mạch nếu như sử dụng VĐK họ 89 muốn có ADC phải dùng thêm IC ADC chẳng
hạn như ADC 0808 hay 0809 với giá vài chục ngàn và bộ opamp thì khi sử dung
PIC nó đã tích hợp cho ta sẵn các module đó có nghĩa là không cần bổ sung thêm
ADC, Opam, EPPROM vì PIC đã có sẵn trong nó. Ngoài ra việc sử dụng VĐK
PIC16F877A có nhiều thuận lợi hơn trong thiết kế board, khi đó board mạch sẽ nhỏ
gọn và đẹp hơn dễ thi công hơn rất nhiều, vì tính về giá cả tổng cộng cho đến lúc
thành phẩm thì PIC có thể xem như rẻ hơn VĐK họ 89. Một điều đặc biệt nữa là tất
cả các con PIC được sử dụng thì đều có chuẩn PI tức chuẩn công nghiệp thay vì
chuẩn PC (chuẩn dân dụng).
Ngoài ra, PIC có ngôn ngữ hổ trợ cho việc lập trình ngoài ngôn ngữ Asembly
còn có ngôn ngữ C với rất nhiều trình biên dịch như CCS, HTPIC, MirkoBasic,…
Bên cạnh đó với bề dày của sự phát triển lâu đời PIC đã tạo ra rất nhiều diễn đàn sôi
nổi về PIC cả trong và ngoài nước. Chính vì vậy chúng ta sẽ có nhiều thuận lợi
trong việc dễ dàng tìm kiếm các thông tin lập trình cho các dòng PIC.
Dòng PIC16F877A được chọn sử dụng trong đề tài là dòng phổ thông với
các tính năng cơ bản và dễ cho việc sử dụng với:
- Tập lệnh để lập trình chỉ có 35 lệnh với độ dài 14bit rất dễ nhớ và dễ học.
Mỗi lệnh đều được thực thi trong 1 chu kỳ xung clock. Tốc độ hoạt động tối
đa cho phép là 20MHz với 1 chu kỳ lệnh là 200ns.
- Bộ nhớ chương trình: 8K x 14 words; bộ nhớ dữ liệu: 368 x 8 Bytes (RAM);
bộ nhớ dữ liệu EEPROM 256 x 8 bytes.
- Khả năng ngắt lên đến 14 nguồn ngắt.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 15 SVTH: Trần Nguyên Hoàng

- Dải điện thế hoạt động rộng: từ 2.0V đến 5.5V
- Mức công suất tiêu thụ thấp:
 Nhỏ hơn 0.6 mA khi điện thế cấp là 3V, tần số thạch anh 4 MHz
 20 μA khi điện thế cấp là 3V, tần số thạch anh 32 kHz
 Nhỏ hơn 1 μA ở chế độ chờ với nguồn dự phòng.
- Số PORT I/O là 5 với 33 pin I/O.
- Các đặc tính ngoại vi bao gồm các khối chức năng sau:
 Timer0: bộ đếm/ định thời 8 bit với bộ chia tần số 8 bit.
 Timer1: bộ đếm/ định thời 16 bit với bộ chia tần số, có thể thực hiện chức
năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động
ở chế độ sleep.
 Timer2: bộ đếm/ định thời 8 bit.
 2 bộ Capture (thu thập) 16 bit với độ chính xác tối đa là 12.5ns
 2 bộ Compare (so sánh) 16 bit với độ chính xác tối đa là 200ns
 2 bộ PWM (điều chế độ rộng xung) 10 bit
 Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI (Serial
Peripheral Interface Bus) và I²C (Inter-Integrated Circuit).
 Chẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.
 Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều
khiển RD, WR, CS ở bên ngoài.
 1 bộ ADC với 8 kênh 10 bit.
Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
 Bộ nhớ Flash với khả năng ghi xoá được 100.000 lần.
 Bộ nhớ EEPROM với khả năng ghi xoá được 1.000.000 lần.
 Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm.
 Khả năng tự nạp chương trình với sự điều khiển của phần mềm.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 16 SVTH: Trần Nguyên Hoàng

 Nạp được chương trình ngay trên mạch điện ICSP (In Circuit Serial
Programming) thông qua 2 chân.
 Watchdog Timer với bộ dao động trong.
 Chức năng bảo mật mã chương trình.
 Chế độ Sleep tiết kiệm năng lượng.
 Có thể hoạt động với nhiều dạng Oscillator khác nhau.

Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 17 SVTH: Trần Nguyên Hoàng

2. Sơ đồ khối và khái quát cấu trúc phần cứng của VĐK PIC16F877A
2.1. Sơ đồ khối vi điều khiển PIC16F877A

Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 18 SVTH: Trần Nguyên Hoàng

2.2. Một số đặc tính của CPU
2.2.1. Configuration bit
Đây là các bit dùng để lựa chọn các đặc tính của CPU. Các bit này được
chứa trong bộ nhớ chương trình tại địa chỉ 2007h và chỉ có thể được truy xuất trong
quá trình lập trình cho VĐK. Chi tiết về các bit này như sau:

Bit 13 : CP (Code Protection)
1: tắt chế bảo vệ mã chương trình.
0: bật chế độ bảo vệ mã chương trình.
Bit 12, 5, 4 : không quan tâm và được mặc định mang giá trị 0.
Bit 11 : DEBUG (In-circuit debug mode bit)
1: không cho phép, RB7 và RB6 được xem như các pin xuất nhập
bình thường.
0: cho phép, RB6 và RB7 là các pin được sử dụng cho quá trình
debug.
Bit 10, 9 : WRT1 : WRT0 (Flash Program Memory Write Enable bit)
11: tắt chức năng chống ghi, EECON sẽ điều khiển quá trình ghi lên
tòan bộ nhớ chương trình.
10: chỉ chống ghi từ địa chỉ 0000h : 00FFh.
01: chỉ chống ghi từ địa chỉ 0000h : 07FFh.
00: chỉ chống ghi từ địa chỉ 0000h : 0FFFh.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 19 SVTH: Trần Nguyên Hoàng

Bit 8 : CPD (Data EEPROM Memory Write Protection bit)
1: tắt chức năng bảo vệ mã của EEPROM.
0: bật chức năng bảo vệ mã.
Bit 7 : LVP (Low-Voltage (Single supply) In-Circuit Serial
Programming Enable bit
1: cho phép chế độ bạp chương trình ở điện áp thấp, pin RB3/PGM
được sử dụng cho chế độ này.
0: không cho phép chế độ nạp chương trình ở điện áp thấp, điện áp
cao được đưa vào pin MCLR, pin RB3 là pin I/O bình thường.
Bit 6 : BODEN (Brown-out Reset Enable bit)
1: cho phép BOR (Brown-out Reset).
0: không cho phép BOR.
Bit 3 : PWRTEN (Power-up Timer Enable bit)
1: không cho phép PWR.
0: cho phép PWR.
Bit 2 : WDTEN (Watchdog Timer Enable bit)
1: cho phép WDT.
0: không cho phép WDT.
Bit 1, 0 : Fosc1 – Fosc0 (lựa chọn lọai oscillator)
11: sử dụng RC oscillator.
10: sử dụng HS oscillator.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 20 SVTH: Trần Nguyên Hoàng

01: sử dụng XT oscillator.
00: sử dụng LP oscillator.
2.2.2. Các đặc tính của Oscillator
PIC16F877A có khả năng sử dụng một trong 4 lọai oscillator, đó là:
LP: (Low Power Crystal).
XT: Thạch anh bình thường.
HS: (High-Speed Crystal).
RC: (Resistor/Capacitor) dao động RC.
Đối với các lọai oscillator LP, HS, XT, oscillator được gắn vào VĐK thông
qua các pin OSC1/CLK1 và OSC2/CLK0.
2.2.3. Ngắt (Interrupt)
PIC16F877A có đến 15 nguồn tạo ra hạt động ngắt được điều khiển bởi
thanh ghi INTCON (bit GIE). Bên cạnh đó mỗi ngắt còn có 1 bit điều khiển và cờ
ngắt riêng. Các cờ ngắt vẫn được set bình thường khi thỏa mãn điều kiện ngắt xảy
ra bất chấp trạng thái của bit GIE, tuy nhiên họat động ngắt vẫn phụ thuộc vào bit
GIE và các bit điều khiển khác. Bit điều khiển ngắt RB0/INT và TMR0 nằm trong
thanh ghi INTCON, thanh ghi này còn chứa bit cho phép các ngắt ngọai vi PEIE.
Bit điều khiển các ng8át nằm trong thanh ghi PIE1 và PIE2. Cờ ngắt của các ngắt
nằm trong thanh ghi PIR1 và PIR2.
Trong một thời điểm chỉ có một chương trình ngắt được thực thi, chương
trình ngắt được kết thúc bằng lệnh RETFIE. Khi chương trình ngắt được thực thi,
bit GIE tự động được xóa, địa chỉ lệnh tiếp theo của chương trình được cất vào bộ
nhớ Stack và bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h. Lệnh RETFIE được
dùng để thóat khỏi chương trình ngắt và quay trở về chương trình chính, đồng thời
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 21 SVTH: Trần Nguyên Hoàng

bit GIE cũng được set để cho phép các ngắt họat động trở lại. Các cờ hiệu được
dùng để kiểm tra ngắt nào đang xảy ra và phải được xóa bằng chương trình chính
trước khi cho phép ngắt tiếp tục họat động trở lại để ta có thể phát hiện thời điểm
tiếp theo mà ngắt xảy ra.
Đối với các ngắt ngọai vi như ngắt từ chân INT hay ngắt từ sự thay đổi trạng
thái các pin của PORTB, việc xác định ngắt nào xảy ra cần 3 hoặc 4 chu kỳ lệnh tùy
thuộc vào thời điểm xảy ra ngắt.

2.2.3.1. Ngắt INT
Ng8át này dựa trên sự thay đổi trạng thái của pin RB0/INT. Cạnh tác động
gây ra ng8át có thể là cạnh lên hay cạnh xuống và được điều khiển bởi bit INTEDG
(thanh ghi OPTIONREG<6>). Khi có cạnh tác động thích hợp xuất hiện tại pin
RB0/INT, cờ ngắt INTF được set bất chấp trạng thái các bit điều khiển GIE và
PEIE. Ngắt này có khả năng đánh thức CĐK từ chế độ sleep nếu bit cho phép ngắt
được set trước khi lệnh SLEEP được thực thi.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 22 SVTH: Trần Nguyên Hoàng

2.2.3.2. Ngắt do sự thay đổi trạng thái các pin trong PORTB
Các pin PORTB<7:4> được dùng cho ngắt này và được điều khiển bởi bit
RBIE (thanh ghi INTCON<4>). Cờ ngắt của ngắt này là bit RBIF (INTCON<0>).
2.3. Các cổng xuất nhập của PI C16F877A
VĐK PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB, PRTC,
PORTD, PORTE. Muốn xác lập chức năng của một chân trong PORT A là input, ta
set bit điều khiển tương ứng với chân đó trong thanh ghi TRISA và ngược lại, muốn
xác lập chức năng của một chân trong PORT A là output, ta clear bit điều khiển
tương ứng với trong đó trong thanh ghi TRISA. Tương tự đối với các PORT và các
thanh ghi điều khiển tương ứng TRIS (đối với PORT A là TRISA, đối với PORT B
là TRISB, đối với PORT C là TRISC, đối với PORT D là TRISD, đối với PORT D
là TRISD).
2.3.1. PORT A
PORT A (RPA) bao gồm 6 I/O pin. Đây là các chân “hai chiều”
(bidirectional pin), nghĩa là có thể xuất và nhập được. Chức năng I/O này được điều
khiển bởi thanh ghi TRISA (địa chỉ 85h). Bên cạnh đó PORT A còn là ngõ vào của
bộ ADC, bộ so sánh, ngõ vào xung clock của Timer0 và ngõ vào của bộ giao tiếp
MSSP (Master Synchronous Serial Port).
Các thanh ghi SFR liên quan đến PORTA bao gồm:
o PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA.
o TRISA (địa chỉ 85h) : điều khiển xuất nhập.
o CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh điện
áp.
o ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 23 SVTH: Trần Nguyên Hoàng


Hình 1.5: Sơ đồ khối của chân
RA4/T0CKL

Hình 1.4: Sơ đồ khối các chân RA3:RA0 và RA5
2.3.2. PORT B
PORTB (RPB) gồm 8 pin I/O. Bên cạnh đó một số chân của PORT b còn
được sử dụng trong quá trình nạp chương trình cho VĐK với các chế độ nạp khác
nhau. PORT B còn liên quan đến ngắt ngọai vi và bộ Timer0. PORT B còn được
tích hợp chức năng điện trở kéo lên được điều khiển bởi chương trình.
Các thanh ghi SFR liên quan đến PORTB bao gồm:
o PORTB (địa chỉ 06h, 106h) : chứa giá trị các pin trong
PORT B.
o TRISB (địa chỉ 86h, 186h) : điều khiển xúât nhập.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 24 SVTH: Trần Nguyên Hoàng

o OPTION_REG (địa chỉ 81h, 181h): điều khiển ngắt ngoại vi và bộ
Timer0.
Hình 1.6: Sơ đồ khối các chân RB3:RB0

Hình 1.7: Sơ đồ khối các chân
RB7:RB4
2.3.3. PORT C
PORT C (RPC) gồm 8 pin I/O. Bên cạnh đó, PORT C còn chứa các chân
chức năng của bộ so sánh, bộ Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I²C,
SPI, SSP, USART.
Các thanh ghi điều khiển liên quan đến PORT C;
o PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORT C.
o TRISC (địa chỉ 87h) : điều khiển xuất nhập.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 25 SVTH: Trần Nguyên Hoàng



Hình 1.9: Sơ đồ khối các chân
RC2:RC0 và RC7:RC5
Hình 1.10: Sơ đồ khối các chân Rc4:RC3
2.3.4. PORT D
PORT D (RPD) gồm 8 pin I/O. PORT D còn là cổng xúât dữ liệu của chuẩn
giao tiếp PSP (Parallel Slave Port).
Các thanh ghi liên quan đến PORT D bao gồm:
o Thanh ghi PORTD : chứa giá trị các pin trong PORT D.
o Thanh ghi TRISD : điều khiển xuất nhập.


Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 26 SVTH: Trần Nguyên Hoàng

Hình 1.21: Sơ đồ khối các chân RD7:RD0
2.3.5. PORT E
PORT E (RPE) gồm 3 chân I/O. Các chân của PORT E có ngõ vào analog.
Bên cạnh đó PORTE còn là các chân điều khiển của chuẩn giao tiếp PSP.
Các thanh ghi liên quan đến PORT E bao gồm:
o PORTE : chứa giá trị các chân trong PORTE.
o TRISE : điều khiển xuất nhập và xác lập các
thông số cho chuẩn giao tiếp PSP.
o ADCON1 : thanh ghi điều khiển khối ADC.


Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 27 SVTH: Trần Nguyên Hoàng

Hình 1.22: Sơ đồ khối các chân RE2:RE0

2.4. Tổ chức bộ nhớ:
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình
(Program memory) và bộ nhớ dữ liệu (Data Memory).
2.4.1. Bộ nhớ chương trình
Bộ nhớ chương trình của VĐK PIC16F877A là bộ nhớ Flash, dung lượng bộ
nhớ 8K word (1 word = 14 bit) và được phân thành nhiều trang (từ page 0 đến page
3). Như vậy, bộ nhớ chương trình có khả năng chứa được 8x1024 = 8192 lệnh (1
lệnh sau khi mã hoá sẽ có dung lượng 1 word – 14bit)
Để mã hoá được địa chỉ của 8K word bộ nhớ chương trình, bộ đếm chương
tirnh2 có dung lượng 13 bit (PC<12:0>)
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 28 SVTH: Trần Nguyên Hoàng

Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h
(Reset Vector). Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h
(Interrupt Vector).
Bộ nhớ chương trình không bao gồm bộ nhớ stack và kh6ong được địa chỉ
hoá bởi bộ đếm chương trình

Hình 1.23: Sơ đồ bộ nhớ chương trình PIC16F877A
2.4.2. Bộ nhớ dữ liệu
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia làm nhiều Bank. Đối
với PIC16F877A, bộ nhớ dữ liệu được chia làm 4 Bank. Mỗi Bank có dung lượng
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 29 SVTH: Trần Nguyên Hoàng

128 Byte, bao gồm các thanh ghi có chức năng đặc biệt SFR (Special Functin
Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung GPR
(General Purpose Register) nằm ở vùng địa chỉ còn lại trong Bank. Các thanh ghi
SFR thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) sẽ được đặt ở tất
cả các Bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làm
giảm bớt lệnh của chương trình. Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877A như
sau:

Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 30 SVTH: Trần Nguyên Hoàng


Hình 1.24: Sơ đồ bộ nhớ dữ liệu PIC16F877A
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 31 SVTH: Trần Nguyên Hoàng

2.4.2.1. Thanh ghi chức năng đặc biệt SFR
Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và
điều khiển các khối chức năng tích hợp bên trong VĐK. Có thể phân thanh ghi SFR
làm 2 loại: thanh ghi SFR liên quan đến các chức năng bên trong (CPU) và thanh
ghi SFR dùng để thiết lập và điều khiển các khối chức năng bên ngoài ( ví dụ:
ADC, PWM…). Phần này sẽ đề cập đến các thanh ghi liên quan đến chức năng bên
trong. Các thanh ghi dùng để thiết lập và điều khiển các khối chức năng sẽ được
nhắc đến khi ta đề cập đến các khối chức năng đó
 Thanh ghi STATUS (03h, 83h, 103h, 183h): thanh ghi chứa kết quả
thực hiện phép toán của khối ALU, trạng thái reset và các bit chọn
bank cần truy xuất trong bộ nhớ dữ liệu.

 Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và
ghi, cho phép điều khiển chức năng pull-up của các chân trong
PORTB, xác lập các tham số về xung tác động, cạnh tác động của
ngắt ngoại vi và bộ đếm Timer0.

 Thanh ghi INTCON (0Bh, 8Bh, 10Bh, 18Bh): thanh ghi này cho phép
đọc và ghi, chứa các bit điều khiển và các bit cờ hiệu khi Timer 0 bị
tràn, ngắt ngoại vi RB0/INT và ngắt interrupt-on-change tại các chân
của PORTB.

 Thanh ghi PIE1(8Ch): chứa các bit điều khiển chi tiết các ng8át của
các khối chức năng ngọai vi.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 32 SVTH: Trần Nguyên Hoàng


 Thanh ghi PIR1 (0Ch) chứa cờ ngắt của các khối chức năng ngọai vi,
các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh
ghi PIE1.

 Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối
chức năng CCP2, SSP bus, ng8át của bộ so sánh và ngắt ghi vào bộ
nhớ EEPROM.

 Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng
ngọai vi, các ngắt này được cho phép bởi các bit điều khiển chứa
trong thanh ghi PIE2.

 Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế
độ reset của vi điều khiển.

2.4.2.2. Thanh ghi mục đích chung GPR
Các thanh ghi này có thể được truy xuất trực tiếp hoặc gián tiếp thông qua
thanh ghi FSG (File Select Register). Đây là các thanh ghi dữ liệu thông thường,
người sử dụng có thể tùy theo mục đích chương trình mà có thể dùng cá thanh ghi
này để chứa các biến số, hằng số, kết quả hoặc các tham số phục vụ cho chương
trình
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 33 SVTH: Trần Nguyên Hoàng

2.4.3. STACK
Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là một
vùng nhớ đặc biệt không cho phép đọc hay ghi. Khi lệnh CALL được thực hiện hay
khi 1 ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của bộ đếm chương trình PC
tự động được VĐK cất vào trong stack.
Bộ nhớ stack trong VĐK PIC họ 16F87xA có khả năng chứa được 8 địa chỉ
và hoat động theo cơ chế xoay vòng. Nghĩa là giá trị cất vào bộ nhớ stack lần thứ 9
sẽ ghi đè lên giá trị cất vào stack lần đầu tiên
Không có cờ hiệu nào cho biết trạng thái stack, do đó không thể biết được
khi nào stack tràn. Các thao tác với bộ nhớ stack sẽ hòan toàn được điều khiển bởi
CPU.
2.5. Timer 0
Đây là một trong ba bộ đếm hoặc bộ định thời của VĐK PIC16F877A.
Timer 0 là bộ đếm 8 bit được kết nối với bộ chia tần số (prescaler) 8 bit. Cấu trúc
của Timer 0 cho phép ta lựa chọn xung clock tác động và cạnh tích cực của xung
clock. Ngắt Timer 0 sẽ xuất hiện khi Timer 0 bị tràn. Bit TMR0IE (INTCON<5>) là
bit điều khiển của Timer 0. TMR0IE = 1 cho phép ngắt Timer 0 tác động, TMR0IE
= 0 không cho phép ngắt Timer 0 tác động.
Muốn Timer 0 họat động ở chế độ timer ta clear bit TOSC
(OPTION_REG<5>), khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kì xung
đồng hồ (tần số vào Timer 0 bằng ¼ tần số oscillator). Khi giá trị thanh ghi TMR0
từ FFh trở về 00h, ngắt Timer 0 sẽ xuất hiện. Thanh ghi TMR0 cho phép ghi và xóa
giúp ta ấn định thời điểm ngắt Timer0 xuất hiện một cách linh động.
Muốn Timer 0 họat động ở chế độ Counter ta set bit TOSC
(OPTION_REG<5>). Khi đó xung tác động lên bộ đếm được lấy từ chân
RA4/TOCK1. Bit TOSE (OPTION_REG<4>) cho phép lực chọn cạnh tác động vào
bộ đếm. Cạnh tác động là cạnh lên nếu TOSE = 0 và cạnh tác động là cạnh xuống
nếu TOSE = 1.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 34 SVTH: Trần Nguyên Hoàng

Hình 1.25: Sơ đồ khối của Timer 0
Khi thanh ghi TMR0 bị tràn, bit TMR0IF (INTCON<2>) sẽ được set. Đây
chính là cờ ngắt của Timer0. Cờ ngắt này phải được xóa bằng chương trình trước
khi bộ đếm bắt đầu thực hiện quá trình đếm. Ngắt Timer0 không thể “đánh thức”
VĐK từ chế độ sleep.
Bộ chia tần số (prescaler) được chia sẻ giữa Timer 0 và WDT (Watchdog
Timer). Điều đó có nghĩa là nếu prescaler được sử dụng cho Timer 0 thì WDT sẽ
không có được hỗ trợ của prescaler và ngược lại.
2.6. ADC
ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu từ dạng tương
tự sang dạng số. VĐK PIC16F877a có 8 ngõ vào analog (RA4:RA0 và RE2:RE0).
Hiệu điện thế chuẩn VREF có thể lựa chọn là VDD, VSS hay hiệu điện thế chuẩn
được xác lập trên 2 chân RA2 và RA3. Kết quả chuyển đổi từ tín hiệu tương tự sang
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 35 SVTH: Trần Nguyên Hoàng

tín hiệu số là 10 bit số tương ứng và được lưu trong 2 thanh ghi
ASRESH:ADRESL. Khi không sử dụng bộ chuyển đổi ADC, các thanh ghi này có
thể được sử dụng như các thanh ghi thông thường khác.

Hình 1.26: Sơ đồ khối bộ chuyển đổi ADC
Qui trình chyển đổi từ tương tự sang số bao gồm các bước sau:
1- Thiết lập các thông số cho bộ chuyển đổi ADC:
 Chọn ngõ vào Analog, chọn điện áp mẫu (dựa trên các
thông số của thanh ghi ADCON1).
 Chọn kênh chuyển đổi AD (thanh ghi ADCON0).
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 36 SVTH: Trần Nguyên Hoàng

 Chọn xung clock cho kênh chuyển đổi AD (thanh ghi
ADCON0).
 Cho phép bộ chuyển đổi AD họat động (thanh ghi
ADCON0).
2- Thiết lập cá cờ ngắt cho bộ AD
 Clear bit ADIF.
 Set bit ADIE.
 Set bit PEIE.
 Set bit GIE.
3- Đợi cho tới khi quá trình lấy mẫu hòan tất.
4- Bắt đầu quá trình chuyển đổi (set bit GO/DONE).
5- Đợi cho tới khi quá trình chuyển đổi hòan tất bằng cách:
 Kiểm tra bit GO/DONE. Nếu GO/DONE =0, quá trình
chuyển đổi đã hòan tất.
 Kiểm tra cờ ngắt.
6- Đọc kết quả chuyển đổi và xóa cờ ngắt, set bit GO/DONE (nếu
cần tiếp tục chuyển đổi).
7- Tiếp tục thực hiện các bước 1 và 2 cho quá trình chuyển đổi tiếp
theo.
Cần chú ý là có 2 cách lưu kết quả chuyển đổi AD, việc lựa chọn các lưu
được điều khiển bởi bit ADFM và được minh họa cụ thể trong hình sau:
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 37 SVTH: Trần Nguyên Hoàng


Hình 1.27: Các cách lưu kết quả chuyển đổi ADC
Các thanh ghi liên quan đến bộ chuyển đổi ADC bao gồm:
 INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngắt (các bit
GIE, PEIE).
 PIR1 (địa chỉ 0Ch): chứa cờ ngắt AD (bit ADIF).
 PIE1 (địa chỉ 8Ch): chứa bit điều khiển AD (ADIE).
 ADRESH (địa chỉ 1Eh) và ADRESL (địa chỉ 9Fh): các thanh ghi chứa
kết quả chuyển đổi AD.
 PORTA (địa chỉ 05h) và TRISA(địa chỉ 85h): liên quan đến các ngõ vào
analog o83 PORTA.
 PORTE (địa chỉ 09h) và TRISE (địa chỉ 89h): liên quan đến các ngõ vào
analog ở PORTE.
2.7. Giao tiếp nối tiếp
2.7.1. USART
UASRT ( Universal Synchronous Asynchronous Receiver Transmitter) là
một torng hai chuẩn giao tiếp nối tiếp. USART còn được gọi là giao diện giao tiếp
nối tiếp SCI (Serial Communication Interface). Có thể sử dụng giao diện này cho
các giao tiếp với các thiết bị ngoại vi, với các VĐK khác hay với máy tính. Các
dạng của giao diện USART ngọai vi bao gồm:
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 38 SVTH: Trần Nguyên Hoàng

 Bất đồng bộ (Asynchronous).
 Đồng bộ_Master Mode.
 Đồng bộ_Slave Mode.
Hai pin dùng cho giao diện này là RC6?TX/CK và RC7/RX/DT, trong đó
RC6/TX/CK dùng để truyền xung clock (baud rate) và RC7/RX/DT dùng để truyền
data. Trong trường hợp này ta phải setbit TRISC<7:6> và SPEN (RCSTA<7>) để
cho phép giao diện USART.
PIC16F877A được tích hợp sẵn bộ tạo tôc độ baud BRG (Baud Rate
Generator) 8 bit dùng cho giao diện USART. BRG thực chất là một bộ đếm có thể
được sử dụng cho cả hai dạng đồng bộ và bất đồng bộ và được điều khểin bởi thanh
ghi PSBRG. Ở dạng bất đồng bộ, BRG còn được điều khiển bởi bit BRGH
(TXSTA<2>). Ở dạng đồng bộ tác động của bit BRGH đựơc bỏ qua. Tốc độ baud
do BRG tạo ra được tính theo công thức sau:

Trong đó X là giá trị của thanh ghi RSBRG (X là số nguyên và 0 < X < 255).
Các thanh ghi liên qua đến BRG bao gồm:
 TXSTA (địa chỉ 98h): chọn chế độ đồng bộ hay bất đồng
bộ (bit SYNC) và chọn mức tốc độ baud (bit BRGH).
 RCSTA (địa chỉ 18h): cho phép họat động cổng nối tiếp (bit
SPEN).
 RSBRG (địa chỉ 99h): quyết định tốc độ baud.
2.7.2. USART bất đồng bộ
Ở chế độ truyền này USART họat động theo chuẩn NRZ ( None Return to
Zero), nghĩa là các bit truyền đi sẽ bao gồm 1 bit Start, 8 hoặc 9 bit dữ liệu (thông
thừơng là 8 bit) và 1 bit Stop. Bit LSB sẽ được truyền đi trước. Các khối truyền và
nhận data độc lập với nhau sẽ dùng chung tần số tương ứng với tốc độ baud cho quá
trình dịch dữ liệu (tốc độ baud gấp 16 hay 64 lần tốc độ dịch dữ liệu tùy theo giá trị
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 39 SVTH: Trần Nguyên Hoàng

của bit BRGH), và để đảm bảo tính hiệu quả của dữ liệu thì hai khối truyền và nhận
phải dùng chung một định dạng dữ liệu.
Bộ USART bất đồng bộ bao gồm các thành phần quan trọng sau:
 Bộ phát tốc độ baud ( BRG )
 Mạch lấy mẫu
 Bộ phát bất đồng bộ.
 Bộ thu bất đồng bộ.
2.7.2.1. Truyền dữ liệu qua chuẩn giao tiếp USART bất đồng bộ
Thành phần quan trọng nhất của khối truyền dữ liệu là thanh ghi dịch dữ liệu
TSR (Transmit Shift Register). Thanh ghi TSR sẽ lấy dữ liệu từ thanh ghi đệm dùng
cho quá trình truyền dữ liệu TXREG. Dữ liệu cần truyền phải được đưa trước vào
thanh ghi TXREG. Ngay sau khi bit Stop của dữ liệu cần truyền trước đó được
truyền xong, dữ lịêu từ thanh ghi TXREG sẽ được đưa vào thanh ghi TSR, thanh
ghi TXREG bị rỗng, ngắt xảy ra và cờ hiệu TXIF (PIR1<4>) được set. Ngắt này
được điều khiển bởi bit TXIE (PIE1<4>). Cờ hiệu TXIF vẫn được set bất chấp trạng
thái của bit TXIE hay tác động của chương trình (không thể xóa TXIF bằng chương
trình) mà chỉ reset về 0 khi có dữ liệu mới được đưa vào thanh ghi TXREG.
Hình 1.28: Sơ đồ khối của khối truyền dữ liệu USART
Trong khi cờ hiệu TXIF đóng vai trò chỉ thị trạng thái thanh ghi TXREG thì
cờ hiệu TRMT (TXSTA<1>) có nhiệm vụ thể hiện trạng thái thanh ghi TSR. Khi
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 40 SVTH: Trần Nguyên Hoàng

thanh ghi TSR rỗng, bit TRMT sẽ được set. Bit này chỉ đọc và không có ngắt nào
được gắn với trạng thái của nó. Một điểm cần chú ý nữa là thanh ghi TSR không có
trong bộ nhớ dữ liệu và chỉ được điều khiển bời CPU.
Khối truyền dữ liệu được cho phép hoạt động khi bit TXEN (TXSTA<5>)
được set. Quá trình truyền dữ liệu chỉ thực sự bắt đầu khi đã có dữ liệu trong thanh
ghi TXREG và xung truyền baud được tạo ra. Khi khối truyền dữ liệu được khởi
động lần đầu tiên, thanh ghi TSR rỗng. Tại thời điểm đó, dữ liệu đưa vào thanh ghi
TXREG ngay lập tức được load vào thanh ghi TSR và thanh ghi TXREG bị rỗng.
Lúc này ta có thể hình thành 1 chuỗi dữ liệu liên tục cho quá trình truyền dữ liệu.
Trong quá trình truyền dữ liệu nếu bit TXEN bị reset về 0, quá trình truyền kết thúc,
khối truyền dữ liệu được reset và pin RC6/TX/CK chuyển đến trạng thái high-
impedance.
Trong trường hợp dữ liệu cần truyền là 9 bit, bit TX9 (TXSTA<6>) được set
và bit dữ liệu thứ 9 sẽ được lưu trong bit TX9D (TXSTA<0>). Nên ghi bit dữ liệu
thứ 9 vào trước, vì khi ghi 8 bit dữ liệu vào thanh ghi TXREG trước có thể xảy ra
trường hợp nội dung thanh ghi TXREG sẽ được load vào thanh ghi TSG trước, như
vậy dữ liệu truyền đi sẽ bị sai khác so với yêu cầu.
Tóm lại, để truyền dữ liệu theo giao diện USART bất đồng bộ, ta cần thực
hiện tuần tự các bước sau:
1- Tạo xung truyền baud bằng cách đưa các giá trị cần thiết vào thanh ghi
RSBRG và bit điều khiển mức tốc độ baud BTGH.
2- Cho phép cổng giao diện nối tiếp bất đồng bộ bằng cách clear bit SYNC
và set bit PSEN.
3- Set bit TXIE nế cần sử dụng ngắt truyền.
4- Set bit TX9 nếu định dạng dữ liệu cần truyền là 9 bit.
5- Set bit TXEN để cho phép truyền dữ liệu (lúc này bit TXIF cũng sẽ được
set).
6- Nếu định dạng dữ liệu là 9 bit, đưa bit dữ liệu thứ 9 vào bit TX9D.
7- Đưa 8 bit dữ liệu cần truyền vào thanh ghi TXREG.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 41 SVTH: Trần Nguyên Hoàng

8- Nếu sử dụng ngắt truyền, cần kiểm tra lại các bit GIE và PEIE (thanh ghi
INTCON).
Các thanh ghi liên quan đến quá trình truyền dữ liệu bằng giao diện USART
bất đồng bộ:
 Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho
phép tất cả các ngắt.
 Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu TXIF.
 Thanh ghi PIE1 (địa chỉ 8Ch): chưa bit cho phép ngắt
truyền TXIE.
 Thanh ghi RCSTA (địa chỉ 18h): chứa bit cho phép cổng
truyền dữ liệu (hai pin RC6/TX/CK và RC7/RX/DT).
 Thanh ghi TXREG (địa chỉ 19h): thanh ghi chứa dữ liệu
cần truyền.
 Thanh ghi TXSTA (địa chỉ 98h): xác lập các thông số cho
giao diện.
 Thanh ghi SPBRG (địa chỉ 99h): quyết định tốc độ baud.
2.7.2.2. Nhận dữ liệu qua chuẩn giao tiếp USART bất đồng bộ
Dữ liệu được đưa vào từ chân RC7/RX/DT sẽ kích họat khối phục hồi dữ
liệu. khối phục hồi dữ liệu thực chất là một bộ dịch dữ liệu tốc độ cao và có tần số
họat động gấp 16 lần hoặc 64 lần tần số baud. Trong khi đó tốc độ dịch của thanh
ghi nhận dữ liệu sẽ bằng với tần số baud hoặc tần số của oscillator.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 42 SVTH: Trần Nguyên Hoàng

Hình 1.29: Sơ đồ khối của khối nhận dữ liệu USART
Bit điều khiển cho phép khối nhận dữ liệu là bit RCEN (RCSTA<4>). Thành
phần quan trọng nhất của khối nhận dữ liệu là thanh ghi nhận dữ liệu RSR (Receive
Shift Register). Sau khi nhận diện bit Stop của dữ liệu truyền tới, dữ liệu nhận được
trong thanh ghi RSR sẽ được đưa vào thanh ghi RCGER, sau đó cờ hiệu RCIF
(PIR<5>) sẽ được set và ngắt nhận được kích họat. Ngắt này được điều khiển bởi
bit RCIE (PIE1<5>). Bit cờ hiệu RCIF là bit chỉ đọc và không thể được tác động
bởi chương trình. RCIF chỉ reset về 0 khi dữ liệu nhận vào ở thanh ghi RCREG đã
được đọc và khi đó thanh ghi RCREG rỗng. Thanh ghi RCREG là thanh ghi có bộ
đệm kép (double-buffered register) và họat động theo cơ chế FIFO (First In First
Out) cho phép nhận 2 byte và byte thứ 3 tiếp tục được đưa vào thanh ghi RSR. Nếu
sau khi nhận được bit Stop của byte dữ liệu thứ 3 mà thanh ghi RCREG vẫn còn
đầy, cờ hiệu báo tràn dữ liệu (Overrun Error bit) OERR (RCSTA<1>) sẽ được set,
dữ liệu trong thanh ghi RSR sẽ bị mất đi và quá trình đưa dữ liệu từ thanh ghi RSR
vào thanh ghi RCREG sẽ bị gián đọan. Trong trường hợp này cần lấy hết dữ liệu ở
thanh ghi RSREG vào trước khi tiếp tục nhận byte dữ liệu tiếp theo. Bit OERR phải
được xóa bằng phần mềm và thực hiện bằng cách clear bit RCEN rồi set lại. Bit
FERR (RCSTA<2>) sẽ được set khi phát hiện bit Stop của dữ liệu nhận vào. Bit dữ
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 43 SVTH: Trần Nguyên Hoàng

liệu thứ 9 sẽ được đưa vào bit RX9D (RCSTA<0>). Khi đọc dữ liệu từ thanh ghi
RCREG, 2 bit FERR và RX9D sẽ nhận các giá trị mới. Do đó cần đọc dữ liệu từ
thanh ghi RCSTA trước khi đọc dữ liệu từ thanh ghi RCREG để tránh bị mất dữ
liệu.
Tóm lại, khi sử dụng giao diện nhận dữ liệu USART bất đồng bộ cần tiến
hành tùân tự các bước sau:
1- Thiết lập tốc độ baud (đưa giá trị thích hợp vào thanh ghi SPBRG và bit
BRGH).
2- Cho phép cổng giao tiếp USART bất đồng bộ (clear bit SYNC và set bit
SPEN).
3- Nếu cần sử dụng ngắt nhận dữ liệu, set bit RCIE.
4- Nếu dữ liệu truyền nhận có định dạng là 9 bit, set bit RX9.
5- Cho phép nhận dữ liệu bằng cách set bit CREN.
6- Sau khi dữ liệu được nhận, bit RCIF sẽ được set và ngắt được kích họat
(nếu bit RCIE được set).
7- Đọc giá trị thanh ghi RCSTA để đọc bit dữ liệu thứ 9 và kiểm tra xem
quá trình nhận dữ liệu có bị lỗi không.
8- Đọc 8 bit dữ liệu từ thanh ghi RCREG.
9- Nếu quá trình truyền nhận có lỗi xảy ra, xóa lỗi bằng cách xóa bit CREN.
10- Nếu sử dụng ngắt nhận cần set bit GIE và PEIE (thanh ghi INTCON).
Các thanh ghi liên quan đến quá trình nhận dữ liệu bằng giao diện USART
bất đồng bộ:
 Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): chứa
các bit cho phép tòan bộ các ngắt (bit GIER và PEIE).
 Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu RCIE.
 Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt
RCIE.
 Thanh RCSTA (địa chỉ 18h): xác định các trạng thái trong
quá trình nhận dữ liệu.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 44 SVTH: Trần Nguyên Hoàng

 Thanh ghi RCREG (địa chỉ 1Ah): chứa dữ liệu nhận được.
 Thanh ghi TXSTA (địa chỉ 98h): chứa các bit điều SYNC
và BRGH.
 Thanh ghi SPBRG (địa chỉ 99h): điều khiển tốc độ baud.
2.8. Sơ đồ chân PI C16F877A


Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 45 SVTH: Trần Nguyên Hoàng

Phần 2
THIẾT KẾ VÀ THI CÔNG
I. SƠ ĐỒ KHỐI TỔNG QUÁT CỦA TOÀN HỆ THỐNG














GSM
MODULE
SIM900
KHỐI NGUỒN CUNG CẤP
KHỐI XỬ

KHỐI CẢM
BIẾN
KHỐI
CÔNG
SUẤT
KHỐI
HIỂN THỊ
KEYPAD
K
H

I

G
I
A
O

T
I

P

Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 46 SVTH: Trần Nguyên Hoàng

 Khối nguồn cung cấp :
Khối này cho ra 2 nguồn ổn áp 5V để cung cấp cho vi điều khiển, các thiết bị
ngoại vi (LCD, cảm biến) và 4V GSM Module Sim900 từ 1 nguồn 12VDC
 Khối giao tiếp:
Có chức năng nhận tin nhắn SMS để nhận lệnh điều khiển thiết bị và gửi tin
nhắn cảnh báo, report. Khối này gồm 1 thiết bị điện thoại di động và Module
SIM900
o Thiết bị điện thoại di động: dành cho người sử dụng (điều khiển) để
gửi tin nhắn điều khiển và nhận tin nhắn cảnh báo và report.
o GSM Module SIM900: Module này được gắn Sim card để sử dụng
dịch vụ gửi và nhận tin nhắn SMS từ nhà cung cấp dịch vụ viễn
thông.
Khi người sử dụng muốn điều khiển mở 1 thiết bị thì gửi 1 tin nhắn với nội
dung theo cú pháp: Dev<tên thiết bị>˽on, tương tự như vậy, cú pháp để tắt 1 thiết bị
là: Dev<tên thiết bị>˽of. Hoặc để điều khiển nhiều thiết bị cùng lúc thì mỗi lệnh
điều khiển 1 thiết bị được đặt xuống hàng. Ví dụ:
“ Dev1 on
Dev2 on
Dev3 of “
Sau khi lệnh điều khiển được gửi đi, người sử dụng sẽ nhận 1 tin nhắn report
với nội dung: Device <tên thiết bị> turned on.
Để biết được tình trạng các thiết bị, người sử dụng có thể soạn tin nhắn với
nội dung: STATUS và tin nhắn report nhận về có dạng : Device <tên thiết bị> is on.
Ví dụ: Device 1 2 3 is on.
Trong trường hợp phát hiện khói, gas rò rỉ hoặc người lạ đột nhập, người sử
dụng sẽ nhận được tin nhắn cảnh báo: SMOKE/GAS detected! Và Stranger
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 47 SVTH: Trần Nguyên Hoàng

detected! Các tin nhắn này sẽ được gửi liên tục mỗi 2 phút 1 lần cho đến khi người
sử dụng đọc được và nhắn 1 tin nhắn xác nhận với mật khẩu định trước, trong
trường hợp này là 270486.
 Khối vi xử lí:
Khối này thực hiện xử lý các tin nhắn điều khiển mà người sử dụng gửi đến
để bật/tắt thiết thông qua các Relay, nhận các tín hiệu cảm biến, đồng thời soạn nội
dung các tin nhắn cảnh báo, report để gửi qua Module SIM900.
Khối này do VĐK PIC16F877A đảm nhận .
 Khối công suất:
Khối này gồm 5 Transistor BJT 2SC1815 làm nhiệm vụ khuếch đại tín hiệu
điều khiển từ VĐK PIC16F877A để đóng ngắt 5 Relay.
 Khối cảm biến:
Khối này gồm 2 cảm biến, 1 cảm biến phát hiện khí gas/khói MQ6 và 1 cảm
biến phát hiện chuyển động bằng hồng ngoại RE 200B. Cảm biến gas MQ6 sẽ đưa
ra 1 điện áp dao động từ 2,6V (khi bình thường) đến 4,9V (khi phát hiện khí gas).
Cảm biến RE200B khi phát hiện 1 sự chuyển động trong phạm vi hoạt động sẽ xuất
ra 1 xung với độ rộng xung Ton và Toff điều chỉnh được.
 Khối hiển thị:
Khối này gồm 1 LCD 16x2 LM1602 hiển thị trạng thái thiết bị và hệ thống
 Keypad:
Khối này gồm 1 bàn phím quét ma trận 4x4 dùng để bật tắt thiết bị bằng tay.

Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 48 SVTH: Trần Nguyên Hoàng

II. SƠ ĐỒ NGUYÊN LÝ PHẦN CỨNG VÀ TÍNH TOÁN
Quá trình thiết kế phần cứng sử dụng phần mềm Proteus 7.8 Sp2.
1. Nguồn cung cấp:
1.1. Nguồn cung cấp cho GSM Module:

Nguồn cung cấp cho SIM900 là từ 3.2V đến 4.8V. Khi Module SIM900 thực
hiện truyền dữ liệu có thể gây sụt áp ở nguồn, để tránh hiện tượng này, nguồn cung
cấp đòi hỏi phải cung cấp đủ dòng 2A cho Module. Trong mạch sử dụng IC ổn áp
Switching LM2596S-ADJ có khả năng cung cấp 1 dòng 3A, với dải điện áp đầu vào
rộng từ 1.2V đến 37V và điện áp đầu ra điều chỉnh được.
Điện áp đầu ra được tính theo công thức:
Vout = Vref (1 +

)
Với Vref = 1.23V.
R3 thường được chọn xấp xỉ 1KΩ.
R2 được tính với công thức: R2 = R1 (

Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 49 SVTH: Trần Nguyên Hoàng

Trong mạch, với R1 được chọn là 1KΩ, điện áp Vout chọn 4V, ta tính được
R2:
R2 = 1KΩ (

= 2.25KΩ
Với kết quả tính được như trên, ta chọn R2 là 2.2KΩ
Nút nhấn B1 dùng để đóng mở nguồn, khi nhấn B1, IC LM2596 sẽ ngắt điện
ở ngõ ra. Nút nhấn này dùng để Reset Module SIM900 khi xảy ra lỗi, mặc dù
Module SIM900 có chân Reset riêng nhưng theo khuyến cáo từ hướng dẫn của nhà
sản xuất không nên dùng thường xuyên vì có thể gây ra hư hỏng cho Module nên
nút nhấn B1 trong trường hợp này sẽ Reset bằng cách ngắt rồi cấp nguồn trở lại để
Module SIM900 reset.
Các tụ điện 470uF là loại Aluminum và tụ điện 100nF là loại tụ gốm.
Diode bảo vệ IC LM2596 điện áp ngược sinh ra do cuộn cảm L1, ở đây dùng
lọai diode Schottky 3A/40V.
Cuộn cảm Ferrite Bead để ngăn nhiễu cao tần sử dụng lọai 3 vòng 430Ω
@10MHz.

Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 50 SVTH: Trần Nguyên Hoàng

1.2. Nguồn cung cấp cho VĐK PI C16F877A, LCD và các cảm biến:
Vì dòng điện tiêu thụ của VĐK PIC16F877A, LCD và các cảm biến thấp nên
trong mạch chỉ dùng IC ổn áp LM7805 với dòng điện ổn áp cực đại là 1.5A
Các tụ điện để lọc nguồn là loại tụ gốm và tụ aluminum tương tự như mạch
nguồn cung cấp cho Module SIM900.
Ferrite Bead FB2 dùng để chặn nhiễu cao tần.

Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 51 SVTH: Trần Nguyên Hoàng

2. Module SIM900:
2.1. Khối giao tiếp SI M card:
Module SIM900 hỗ trợ giao tiếp cả 2 lọai Sim card 1.8V và 3V, nguồn cung
cấp cho Sim card được lấy từ nguồn ổn áp bên trong Module SIM900. Chân
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 52 SVTH: Trần Nguyên Hoàng

SIM_DATA đã được gắn 1 điện trở kéo lên 15KΩ bên trong module nên ta không
cần phải thêm điện trở kéo lên bên ngòai. Module SIM900 hỗ trợ chức năng gắn
“nóng” Sim card, nghĩa là có thể gắn Sim card mà không cần ngắt nguồn hay khởi
động lại Module, chân SIM_PRESENCE để sử dụng chức năng này. Trong mạch,
ta không dùng đến chân SIM_PRESENCE nên chân này để trống.
2.2. Khối hiển thị trạng thái họat động và khối RF của Module
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 53 SVTH: Trần Nguyên Hoàng

Khối hiển thị trạng thái của Module SIM900 gồm 2 đèn LED D2 và D3 lấy
tín hiệu từ 2 chân STATUS và NETLIGHT sau khi được khuếch đại bởi 2
Transistor NPN 2SC1815.
Đèn STATUS D3 sáng khi Module họat động và tắt khi Module ở chế độ
SLEEP.
Đèn NETLIGH D2 có 4 trạng thái thể hiện tình trạng mạng:
Trạng thái D2 Trạng thái Module SIM900
Tắt Module không họat động (LEEP)
Sáng 64ms, tắt 800ms Module chưa kết nối mạng GSM (đang
dò mạng )
Sáng 64ms, tắt 3000ms Module đã kết nối với mạng GSM, sẵn
sàng gửi và nhận tin nhắn, cuộc gọi
Sáng 64ms, tắt 300ms Đang kết nối GPRS
Module SIM900 đưa ra 1 ngõ kết nối với RF antena, ở đây, ta nối với 1
socket gắn vào 1 dây dẫn đến antena ngòai. Socket này được đặt gần Module
SIM900.

Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 54 SVTH: Trần Nguyên Hoàng

2.3. Khối giao tiếp với VĐK:
Khi cấp nguồn, Module SIM900 ở trạng thái chờ, để chuyển trạng thái của
Module SIM900 từ chế độ chờ sang chế độ họat động, chân PWRKEY được nối với
mas và giữ trong 1s rồi ngắt. Ở đây, Transistor Q3 thực hiện việc nối chân
PWRKEY với mas, tín hiệu điều khiển được đưa ra từ chân D0 của VĐK
PIC16F877A.
Để Module chuyển từ trạng thái họat động sang trạng thái chờ, ta cũng nối
chân PWRKEY với mas, giữ trong 1s rồi ngắt, hoặc có thể dùng lệnh AT:
AT+CPOWD=1.

Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 55 SVTH: Trần Nguyên Hoàng

 Giao tiếp RS232:
Vì VĐK PIC16F877A sử dụng điện áp 5V, mức logic của PIC16F877A là
5V, còn Module SIM900 sử dụng điện áp 3.7 ~ 4.5V, mức logic là 3.3V nên để thực
hiện việc giao tiếp RS232 giữa 2 thiết bị phải thực hiện chuyển đổi điện áp mức
logic cho phù hợp với mỗi thiết bị.
- Tín hiệu phát từ VĐK được đưa qua 1 cầu phân áp rồi đến chân Receive của
SIM900.

Từ sơ đồ trên, ta có:

=

=

 5R16 = 3.3 (R16 + R17)
 1.7R16 = 3.3R17
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 56 SVTH: Trần Nguyên Hoàng

 R17 ~ 0.51R16
Ta chọn R16 = 10KΩ, suy ra R17 = 5.1KΩ
- Tín hiệu phát từ Module SIM900 được khuếch đại điện áp bởi 2 Transistor
NPN 2SC1815 rồi đến chân Receive của PIC16F877A
Nguyên lý họat động của mạch khuếch đại điện áp như sau:
 Khi chân TXD của Module SIM900 ở mức thấp (0), Q1 không dẫn, Q2
được phân cực bởi R1 nên dẫn, chân RXD của VĐK nhận mức 0.
 Khi chân TXD của SIM900 ở mức cao (1), Q1 dẫn, Q2 ngắt, chân RXD
của VĐK nhận mức 1.
3. Các cảm biến:
3.1. Cảm biến chuyển động PI R
* Giới thiệu cảm biến PIR RE200B:
Cảm biến chuyển động dùng hồng ngọai PIR (Pyroelectric Passive Infrared
Sensor) RE200B là 1 cảm biến hồng ngoại thụ động được thiết kế để nhận bức xạ
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 57 SVTH: Trần Nguyên Hoàng

có độ dài sóng trong dải xung quanh bước sóng 10 micromet. Độ nhạy quang phổ
của cảm biến đã được tối ưu hóa để nhận bức xạ cơ thể của con người.

* Sơ đồ mạch điện:
Tín hiệu từ sensor RE200B được IC BISS0001 khuếch đại qua 2 bộ Op-Amp
bên trong IC, tín hiệu ngõ ra ở chân 2 của IC là tín hiệu logic (0 và 1) được đưa đến
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 58 SVTH: Trần Nguyên Hoàng

VĐK để xử lý, độ rộng xung Ton và Tof của tín hiệu này có thể được điều chỉnh
bởi 2 biến trở R30 (Tof) và R31(Ton) và được tính bởi công thức:
Ton = 24576 x R31 x C27
Tof = 24 x R30 x C26
IC BISS0001 là IC chuyên dụng dùng cho cảm biến PIR, sơ đồ khối bên
trong của IC như sau:
IC BISS0001 có 2 chế độ họat động là: Retriggerable và Non-Retriggerable
được điều khiển bởi chân 1 (A), được thể hiện qua biểu đồ xung sau:

Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 59 SVTH: Trần Nguyên Hoàng


Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 60 SVTH: Trần Nguyên Hoàng

Trong mạch, 2 chế độ Retriggerable và Non-Retriggerable được chọn bằng
cách nối Jump ở TER2.
3.2. Cảm biến GAS/SMOKE:
Cảm biến GAS/SMOKE dùng trong mạch là cảm biến MQ6 của hãng
HANWEI SENSORS, vật liệu để cảm nhận khí gas là SnO2 với đặc điểm dẫn yếu
trong không khí bình thường và dẫn mạnh khi trong không khí xuất hiện khí Gas,
độ dẫn này tăng theo nồng độ khí Gas có trong không khí. Cảm biến MQ6 có độ
nhạy cao với các khí Butan, Propan, LPG và các khí đốt tự nhiên, độ nhạy của MQ6
thấp hơn đối với khói và Alcohol.
Đáp ứng với các lọai khí của cảm biến, đo ở nhiệt độ 20ºC, độ ẩm 65%, nồng
độ oxi 21%, RL (trong mạch là R18) = 20KΩ thể hiện trong bảng sau:

Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 61 SVTH: Trần Nguyên Hoàng

Với Ro: điện trở cảm biến khi nồng độ PLG trong không khí là 1000ppm.
Rs: điện trở cảm biến ở các nồng độ của các lọai Gas khác nhau.
Sơ đồ mạch điện:
Điện áp đưa ra từ Sensor MQ6 được đưa vào Op-Amp MCP601 với độ lợi
thay đổi được bằng cách điều chỉnh R21, ngõ ra của Op-Amp được đưa vào ngỏ vào
Analog của VĐK PIC16F877A.
Giá trị điện áp đo được ở ngõ ra cảm biến trong điều kiện không khí bình
thường là khỏang 2.6V và khi có khí Gas là 4.8V, khi có khói thuốc là khỏang gần
3V.
Giá trị điện áp đo được ở ngõ ra Op-Amp sau khi chỉnh độ lợi trong điều kiện
không khí bình thường là khỏang 3V, khi có khói là khỏang 3.4V và khi có gas là
4.9V.

Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 62 SVTH: Trần Nguyên Hoàng

4. Khối vi điều khiển PIC16F877A:

Keypad được nối với Port B của VĐK.
Các chân Data của LCD 1602 nối với RD4~RD7, các chân E, RW, RE nối
với Port E của VĐK. Đèn Background của LCD được điều khiển bời chân RC0.
Tín hiệu từ Gas sensor đưa vào chân RA0, tín hiệu từ PIR sensor đưa vào
chân RA1.
Chân RA5 điều khiển LED D12, hiển thị trạng thái họat động của VĐK.
Các chân RL1(RD2), RL2(RD1), RL3(RC5), RL4(RC2), RL5(RC1) đưa đến
khối công suất đóng ngắt relay tắt/mở thiết bị.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 63 SVTH: Trần Nguyên Hoàng

Chân RD0 điều khiển tắt mở GSM Module, RD3 điều khiển transistor Q10
đóng ngắt còi BUZZ
VĐK sử dụng thạch anh 20MHz.
5. Khối công suất:

Khối này gồm 5 Transistor lấy tín hiệu điều khiển từ các chân RL1 ~ RL5
của VĐK để đóng ngắt các relay 12V tắt/mở thiết bị qua các tiếp điểm nối với các
terminal TER4 ~ TER8.
6. Sơ đồ mạch in tòan mạch:




Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 64 SVTH: Trần Nguyên Hoàng


Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 65 SVTH: Trần Nguyên Hoàng

III. Lập trình phần mềm cho VĐK
1. Lưu đồ giải thuật cho tòan chương trình



















BEGIN
Khai báo thư viện
PIC16F877A
Khai báo cấu hình sử
dụng PIC16F877A
Khai báo tần số thạch
anh
Khai báo khối giao tiếp
nối tiếp RS232
Khai báo các driver cho
LCD, Keypad
Khai báo các biến tòan
cục
Ngắt USART
Ngắt Timer0
Chương trình chính
Xử lý các lệnh điều
khiển
END
Chương trình con kiểm tra bàn
phím và đóng ngắt relay
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 66 SVTH: Trần Nguyên Hoàng

2. Lưu đồ giải thuật chương trình con ngắt USART:



















BEGIN
Khai báo các biến
i, data, str[]
Lưu dữ liệu nhận
được vào biến data
Nếu data =
„\n‟ hoặc „\r‟
Reset biến i
Lưu dữ liệu vào bộ
đệm str[i], tăng giá
trị biến i thêm 1
So sánh và kiểm
tra dữ liệu lưu
trong bộ đệm
Gán các biến
tương ứng để xử lý
Xóa bộ đệm, reset
biến i
END
N
Y
Y
N
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 67 SVTH: Trần Nguyên Hoàng

3. Lưu đồ giải thuật chương trình con ngắt Timer0:



















BEGIN
Khai báo biến
Khởi tạo ngắt
Tăng biến
count lên 1
Count =1000
Vgas sensor > 4V
Đọc giá trị analog
từ Gas sensor
PIR sensor =1
Gán biến smk
để xử lý
Gán biến PIR
để xử lý
Xóa cờ ngắt
END
Kiểm tra ngõ vào
PIR sensor
N
N
N
Y
Y
Y
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 68 SVTH: Trần Nguyên Hoàng

4. Lưu đồ giải thuật chương trình con kiểm tra bàn phím và đóng ngắt
Relay:


















BEGIN
Kiểm tra và so sánh các
phím được bấm
Gán các biến tbxm (x:
1~5) tương ứng với các
biến được bấm
Kiểm tra và xử
lý các biến
tbxm (x: 1~5)
)
Đóng Relay
Ngắt Relay
END
= 0
# 0
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 69 SVTH: Trần Nguyên Hoàng

5. Lưu đồ giải thuật chương trình chính (main):



















BEGIN
Thiết lập trạng thái các
ngõ vào/ra
Cài đặt khối ADC
Kích họat ngắt USART
Kích họat SIM900
Gửi lệnh xóa các tin
nhắn vị trí 1 ~ 9 tới
SIM900
Delay 30s (đợi SIM900
kết nối mạng GSM)
Gửi tin nhắn thông báo
sẵn sàng đến người sử
dụng
Kích họat bộ đếm
Timer0
Kiểm tra biến
smk
Gửi tin nhắn
cảnh báo
Quét bàn phím và gọi chương
trình con kiểm tra phím bấm
N
Y
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 70 SVTH: Trần Nguyên Hoàng





















Kiểm tra biến
PIR
Kiểm tra các biến lệnh bật tắt
thiết bị và biến lệnh ngắt cảnh
báo khói
Gửi tin nhắn
cảnh báo
Gọi chương trình con
đóng ngắt Relay
Xóa biến PIR
Kiểm tra tin
nhắn đến
Gửi lệnh đọc tin
nhắn
Kiểm tra số
điện thọai
Gửi tin nhắn
report
Xóa tin nhắn
lệnh đã đọc
Y
Y
Y
N
N
N
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 71 SVTH: Trần Nguyên Hoàng

Phần 3
KẾT LUẬN
I. Kết luận
Qua thời gian nghiên cứu, thi công đồ án đã cơ bản được hoàn thành. Nhờ sự
hướng dẫn nhiệt tình, tận tâm của thầy Phạm Quang Trí, cùng với nỗi lực cố gắng
của bản thân sinh viên thực hiện đề tài, đồ án này đã được hoàn thành đúng thời
gian như đã định và đã đạt được yêu cầu đặt ra theo yêu cầu là thiết kế và thi công
hệ thống điều khiển thiết bị từ xa qua tin nhắn SMS. Trong quá trình thực hiện đề
tài đã thu được những kết quả nhất định như sau:
Mạch điện được thiết kế, thi công hoàn chỉnh gói gọn trong 1 module và đã
được thử nghiệm nhiều lần, cho kết quả hoạt động ổn định trong thực tế.
Xây dựng được mô hình để ứng dụng điều khiển các thiết bị và hệ thống báo
động.
Trong đồ án này, em đã trình bày khá đầy đủ về chức năng, cấu trúc của từng
khối trên board mạch điện tích hợp. Như vậy, giúp người đọc có thể nắm bắt, hiểu
được chức năng của từng khối một cách dễ dàng. Bên cạnh đó, nội dung của đề tài
được trình bày khá chi tiết rõ ràng bằng cách sử dụng những từ ngữ thông dụng, các
hình ảnh đi kèm giúp người đọc dễ hiểu và có thể thực hiện một cách tương tự, đạt
hiệu quả trong một thời gian ngắn.
Hệ thống điều khiển thiết bị trong nhà từ xa thông qua tin nhắn SMS được thực
hiện như trong đề tài là một hệ thống với các chức năng đạt được như sau:
Hệ thống có thể điều khiển được thiết bị điện từ xa thông qua tin nhắn SMS:
+ Sau khi gửi tin nhắn lệnh thì với nội dung tin nhắn đó, bộ xử lí sẽ thực thi quá
trình xử lí, sau đó là điều khiển thiết bị một cách tự động.
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 72 SVTH: Trần Nguyên Hoàng

+ Tin nhắn được gửi đi từ người điều khiển để điều khiển thiết bị điện và người
điều khiển cũng nhận được tin nhắn trả ngược lại với nội dụng tin nhắn là đã điều
khiển được các thiết bị hay chưa và hệ thống cảnh báo.
+ Hệ thống có khả năng được bảo vệ tốt, chỉ với số điện thoại được cài đặt sẵn
của người sử dụng mới có thể điều khiển được hệ thống.
Hệ thống có chức năng cảnh báo sự cố: cảnh báo bằng tin nhắn SMS tới người
dùng khi phát hiện có khí Gas trong không khí và có người lạ xâm nhập trong vùng
phát hiện của cảm biến chuyển động.
Để thực hiện được các chức năng nêu trên, em đã tìm hiểu, nghiên cứu các vấn
đề có liên quan tới đề tài như : họ PIC16F877A, Module SIM900, các ngôn ngữ lập
trình tương ứng như CCS, bộ lệnh AT Command dành cho GSM Module, và các
vấn đề khác liên quan tới đề tài.
Cuối cùng, theo nhận định chủ quan của em thì đồ án đã được hoàn thành đúng
thời gian cho phép và đã trình bày khá đầy đủ các mảng kiến thức liên quan, các
vấn đề liên qua tới đề tài.
II. Hướng phát triển đề tài
Do thời gian thực hiện đề tài có hạn và lượng kiến thức cá nhân là nhất định nên
đề tài thực hiện xong chỉ đáp ứng được một phần nhỏ của một hệ thống hoàn chỉnh.
Vì vậy, để đề tài này thêm phong phú hơn, mang nhiều tính thực tế hơn nữa, có khả
năng ứng dụng cao hơn thì đề tài cần đưa thêm vào những yêu cầu như sau:
Ngoài việc điều khiển giám sát bằng tin nhắn SMS, ta cũng có thể điều khiển
Camera để chụp hình rồi sau đó gửi tin nhắn đa phương tiện đến điện thoại thông
qua chức năng kết nối GPRS của Module SIM900.
Sử dụng thêm nhiều loại cảm biến khác, chẳng hạn như cảm biến nhiệt độ để đo
nhiệt độ, cảm biến độ ẩm không khí để đo độ ẩm không khí, … để ứng dụng vào đề
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

GVHD: Ks. Phạm Quang Trí Page 73 SVTH: Trần Nguyên Hoàng

tài. Như thế người dùng có thể hình dung ra được toàn bộ không gian trong ngôi
nhà.
Mở rộng điều khiển được nhiều hơn nữa các thiết bị trong nhà.
Đề tài không những chỉ áp dụng cho với các tòa nhà mà nên được mở rộng áp
dụng đối với điều khiển các thiết bị sử dụng nơi công cộng.
Mở rộng thêm chức năng thay đổi hoặc thêm số điện thoại điều khiển và nhận
tin nhắn cảnh báo thông qua bàn phím và màn hình LCD để phù hợp hơn với thực
tế sử dụng trong các gia đình.
Hy vọng với những hướng phát triển nêu trên cùng với những ý tưởng khác của
các bạn, của người đọc- những người đi sau - sẽ phát triển hơn nữa đề tài này, khắc
phục những hạn chế, tồn tại của đề tài, làm cho đề tài trở nên phong phú hơn, mang
tính ứng dụng cao hơn vào trong thực tế cuộc sống, phục vụ cho những lợi ích của
con người trong tương lai.