Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
LỜI CẢM ƠN
Em xin chân thành cảm ơn đến quý Thầy, Cô trường Cao đẳng CNTT Hữu Nghị
Việt – Hàn, những người trực tiếp giảng dạy, truyền đạt những kiến thức bổ ích cho
em, đó chính là những nền tảng cơ bản, là những hành trang vô cùng quý giá, là bước
đầu tiên cho em bước vào sự nghiệp sau này trong tương lai. Đặc biệt là thầy Trần
Trung Tín, đã giúp đỡ em trong một tháng qua, giải đáp những thắc mắc trong quá
trình kiến tập. Nhờ đó, em mới có thể hoàn thành được đồ án tốt nghiệp này
Trong quá trình làm đồ án, vì chưa có kinh nghiệm thực tế, chỉ dựa vào lý thuyết
đã học cùng với thời gian hạn hẹp nên bài báo cáo tốt nghiệp chắc chắn sẽ không tránh
khỏi những sai sót. Kính mong nhận được sự góp ý, chia sẽ từ quý Thầy, Cô và các
bạn để kiến thức của em ngày càng hoàn thiện hơn và rút ra những kinh nghiệm bổ ích
có thể áp dụng vào thực tiễn một cách hiệu quả trong tương lai
Kính chúc thầy cô luôn vui vẻ, hạnh phúc, dồi dào sức khỏe và thành công trong
công việc
Em xin chân thành cảm ơn
Đà Nẵng,ngày 29 tháng 05 năm 2013
Bùi Tấn Tài
SVTH : Bùi Tấn Tài – CCVT03A
i
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
MỤC LỤC
LỜI CẢM ƠN ................................................................................................................. i
MỤC LỤC ..................................................................................................................... ii
THUẬT NGỮ VIẾT TẮT ............................................................................................. v
DANH MỤC BẢNG ................................................................................................... vii
DANH MỤC HÌNH ................................................................................................... viii
MỞ ĐẦU ......................................................................................................................... 1
CHƯƠNG 1. TỔNG QUAN VỀ MẠNG GSM VÀ DỊCH VỤ NHẮN TIN NHẮN
SMS ................................................................................................................................. 3
1.1 TỔNG QUÁT VỀ TIN NHẮN SMS .................................................................. 3
1.1.1 Giới thiệu về SMS ........................................................................................ 3
1.1.2 Cấu trúc của một tin nhắn SMS ................................................................. 5
1.1.3 Tin nhắn SMS chuỗi .................................................................................... 5
1.1.4 SMS CENTER/SMSC ................................................................................. 5
1.1.5 Nhắn tin SMS quốc tế .................................................................................. 6
1.2 TỔNG QUÁT VỀ HỆ THỐNG THÔNG TIN DI ĐỘNG GSM..................... 7
1.2.1 Giới thiệu về hệ thống thông tin di động GSM ......................................... 7
1.2.2 Đặc điểm của hệ thống thông tin di động GSM ........................................ 7
1.2.3 Cấu trúc của hệ thống thông tin di động GSM ......................................... 8
1.2.3.1 Cấu trúc tổng quát ................................................................................. 8
1.2.3.2 Các thành phần của hệ thống thông tin di động GSM ........................ 8
1.2.4 Sử phát triển của hệ thống thông tin di động ở Việt Nam ....................... 9
CHƯƠNG 2. VI ĐIỀU KHIỂN PIC16F877A ........................................................... 10
2.1. GIỚI THIỆU PIC (Programmable Intelligent Computer ). ........................ 10
2.1.1. Giới thiệu về vi điều khiển PIC................................................................ 10
2.1.2. Ưu và nhược điểm của PIC ...................................................................... 11
2.2GIỚI THIỆU TỔNG QUÁT VỀ PIC16F877A ............................................... 11
2.2.1 Giới thiệu về PIC16F877A ........................................................................ 11
2.2.2 Sơ đồ khối của PIC 16F877A .................................................................... 14
2.3 KHẢO SÁT SƠ ĐỒ CHÂN, CHỨC NĂNG TỪNG CHÂN ......................... 15
2.3.1 Sơ đồ chân vi điều khiển PIC16F877A .................................................... 15
2.3.2 Tổ chức bộ nhớ ........................................................................................... 17
SVTH : Bùi Tấn Tài – CCVT03A
ii
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
2.3.2.1 Bộ nhớ chương trình ........................................................................... 17
2.3.2.2 Bộ nhớ dữ liệu ..................................................................................... 19
2.3.3 Các cổng I/O của PIC16F877A ................................................................. 19
2.4 BỘ CHUYỂN ĐỔI TƯƠNG TỰ - SỐ (ADC) ................................................ 22
2.4.1 Kết quả chuyển đổi AD ............................................................................. 22
2.4.2 Các bước chuyển đổi từ tương tự - số ...................................................... 23
2.4.3 Các thanh ghi ADC .................................................................................... 24
2.5 BỘ SO SÁNH COMPARATOR ...................................................................... 24
2.6 TRUYỀN THÔNG NỐI TIẾP EUART .......................................................... 26
2.6.1 Bộ EUSART hoạt động trong chế độ bất đồng bộ .................................. 26
2.6.1.1 Bộ phát bất đồng bộ EUSART ............................................................ 27
2.6.1.2 Bộ thu bất đồng bộ EUSART .............................................................. 28
2.6.1.3 Độ chính xác của xung clock với hoạt động không đồng bộ ........... 30
2.6.2 Bộ EUSART hoạt động trong chế độ đồng bộ ....................................... 32
2.7 HOẠT ĐỘNG ĐỊNH THỜI TIMER............................................................... 32
2.7.1 Bộ định thời TIMER0 ................................................................................ 32
2.7.2 Bộ định thời TIMER1 ................................................................................ 34
2.7.3 Bộ định thời TIMER2 ................................................................................ 36
2.8 NGẮT (INTERRUPT) ...................................................................................... 37
CHƯƠNG 3. THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG CẢM BIẾN VÀ PHÁT
CẢNH BÁO MỰC NƯỚC, NHIỆT ĐỘ QUA MẠNG TIN NHẮN SMS .............. 39
3.1 GIỚI THIỆU MODULE SIM900, TẬP LỆNH AT COMMAND. ............... 39
3.1.1 Giới thiệu module SIM900 ........................................................................ 39
3.1.2 Đặc điểm của module SIM900 .................................................................. 40
3.1.3 Khảo sát sơ đồ chân và chức năng từng chân ......................................... 42
3.1.4 Khảo sát tập lệnh AT của module SIM900 ............................................ 44
3.2 XÂY DỰNG HỆ THỐNG ................................................................................ 46
3.3 THIẾT KẾ PHẦN CỨNG ................................................................................ 47
3.3.1 Cảm biến ..................................................................................................... 47
3.3.1.1 Led phát ................................................................................................ 47
3.3.1.2 Led thu ................................................................................................. 48
3.3.1.3 Cảm biến nhiệt độ LM35 ..................................................................... 48
SVTH : Bùi Tấn Tài – CCVT03A
iii
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
3.3.2 Nguồn cung cấp cho hệ thống ................................................................... 49
3.3.3 Đèn báo ....................................................................................................... 50
3.3.4 Vi điều khiển PIC 16F877A ...................................................................... 51
3.3.5 Sơ đồ mạch.................................................................................................. 52
3.4. LƯU ĐỒ GIẢI THUẬT ................................................................................... 53
3.4.1. Lưu đồ giải thuật tổng quát chương trình chính .................................. 53
3.4.2 Lưu đồ thuật toán chương trình con kiểm tra mực nước ..................... 54
3.4.3 Lưu đồ giải thuật chương trình con Cấu hình GSM .............................. 55
3.4.4 Lưu đồ giải thuật chương trình gửi tin nhắn .......................................... 56
CHƯƠNG 4. KẾT QUẢ ĐẠT ĐƯỢC CỦA HỆ THỐNG ...................................... 57
4.1 KẾT QUẢ ĐẠT ĐƯỢC .................................................................................... 57
4.2 HÌNH ẢNH HOẠT ĐỘNG .............................................................................. 57
KẾT LUẬN .................................................................................................................. 64
TÀI LIỆU THAM KHẢO ........................................................................................... 65
PHỤ LỤC ..................................................................................................................... 66
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN ..................................................... 82
SVTH : Bùi Tấn Tài – CCVT03A
iv
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
THUẬT NGỮ VIẾT TẮT
Từ viết Thuật ngữ tiếng Anh Thuật ngữ tiếng Việt tắt
Short Message Service Dịch vụ tin nhắn ngắn SMS
Programmable Interface Controller Giao diện điều khiển lập trình PIC
GSM Global System for Mobile Hệ thống thông tin di động số
Communications toàn cầu
CDMA Code Division Multiple Access Đa truy nhập phân chia theo mã
TDMA Time Division Multiple Access Đa truy cập phân chia theo thời
gian
3GPP Third Generation Partnership Project Dự án cộng tác bên thứ ba
ETSI European Telecommunications Viện các tiêu chuẩn viễn thông
Standards Institute Châu Âu
WAP Wireless Application Protocol Giao thức Ứng dụng Không
dây
Module nhận dạng thuê bao
SIM Subscriber Identity Module
Short message Service Centre
SMSC Trung tâm dịch vụ tin nhắn ngắn
GPRS General Packet Radio Service Dịch vụ vô tuyến gói tổng hợp
EDGE Enhanced Data Rates for Global Nâng cao tốc độ truyền dữ liệu
Evolution
TDM Time Division Multiplexing Điều chế phân chia theo thời
gian
NSS Network Switching Subsystem Mạng chuyển mạch hệ thống
con
BSS Base Station Subsystem Hệ thống trạm cơ sở phụ
MS Mobile Station Trạm di động
OSS Operation Subsystem Hoạt động hệ thống phụ
AUC Authentication Center Trung tâm nhận thực
VLR Visitor Location Register Địa chỉ đăng kí truy cập
HLR Home Location Register Địa điểm đăng kí thường trú
EIR Equipment Identity Register Bộ ghi nhận dạng thiết bị.
SVTH : Bùi Tấn Tài – CCVT03A
v
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
MSC Mobile-services Switching Centrer Trung tâm chuyển mạch các
dịch vụ mạng.
BTS Base Transceiver Station Trạm thu phát gốc.
PSPDN Packet Switch Public Data Network Mạng chuyển mạch số liệu
công cộng
CSPDN Circuit Switched Public Data Network Mạng số liệu công cộng chuyển
mạch kênh.
PSTN Public Switch Telephone Network Mạng điện thoại chuyển mạch
công cộng.
PLMN Public Land Mobile Network Mạng di động mặt đất.
Integrated Services Digital network Mạng số dịch vụ tích hợp. ISDN
Operation and Maintenance Center Trung tâm khai thác và bảo OMC
dưỡng.
ADC Analog Digital Converter Bộ chuyển đổi tín hiệu từ
analog sang digital
PWM Pulse Width Modulation Phương pháp điều chỉnh điện áp
Parallel Slave Port Cổng phụ song song PSP
Universal Serial Bus
Cổng nối tiếp chung USB
Serial Peripheral Interface
Giao tiếp ngoại vi nối tiếp SPI
SVTH : Bùi Tấn Tài – CCVT03A
vi
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
DANH MỤC BẢNG
Tên Trang Bảng
Bảng so sánh chức năng của 11 2.1
PIC16F877A và AT89C51
Bảng mô tả các chức năng từng chân của 15 2.2
PIC
Bảng mô tả các chức năng từng chân của 42 3.4
SIM900
SVTH : Bùi Tấn Tài – CCVT03A
vii
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
DANH MỤC HÌNH
Tên Trang Hình
Cấu trúc của hệ thống thông tin di động GSM 1.1 8
1.2 Các thành phần hệ thống GSM 8
2.1 Sơ đồ khối Vi điều khiển Pic16F877A 14
2.2 Sơ đồ chân vi điều khiển Pic16F877A 15
2.3 Bộ nhớ chương trình Pic 16F877A 18
2.4 Địa chỉ thanh ghi của Pic 16F877A 19
2.5 Sơ đồ khối của AD 22
2.6 Chu kỳ xung clock và tần số làm việc của ADC 22
2.7 Các cách lưu kết quả chuyển đổi 10bit A/D 23
2.8 Các thanh ghi liên quan đến bộ điều khiển A/D 24
2.9 Nguyên lý hoạt động của một bộ so sánh đơn giản 25
2.10 Sơ đồ khối đơn giản của bộ Comparator 25
2.11 Các thanh ghi liên quan đến bộ so sánh 26
2.12 Sơ đồ khối bộ truyền dữ liệu EUSART bất đồng bộ 28
2.13 Các thanh ghi liên quan đến quá trình truyền bất đồng bộ 28
2.14 Sơ đồ khối bộ nhận dữ liệu EUSART bất đồng bộ 29
2.15 Các thanh ghi liên quan đến quá trình nhận dữ liệu bất đồng 30
bộ
2.16 Cấu tạo thanh ghi TXSTA 30
2.17 Cấu tạo thanh ghi RCSTA 31
2.18 sơ đồ khối bộ định thời Timer0 33
2.19 Các thanh ghi liên quan đến bộ định thời Timer0 34
2.20 T1CON: Thanh ghi điều khiển Timer1 35
2.21 Sơ đồ khối Timer1 35
2.22 ác thanh ghi liên quan đến bộ định thời Timer1 36
2.23 T2CON: Thanh ghi điều khiển Timer2 37
2.24 Sơ đồ khối của bộ định thời Timer2 37
2.25 Các thanh ghi liên quan đến bộ định thời Timer2 37
SVTH : Bùi Tấn Tài – CCVT03A
viii
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Module Sim900 42 3.1
Sơ đồ chân của Module Sim900 42 3.2
Sơ đồ khối hệ thống điều khiển thiết bị bằng SMS 46 3.3
Sơ đồ mạch led thu với bộ so sánh tương đương 48 3.4
Sơ đồ mạch cảm biến nhiệt độ LM35 48 3.5
Sơ đồ mạch nguồn cung cấp cho hệ thống 49 3.6
Sơ đồ mạch dèn báo hiệu 50 3.7
Sơ đồ mạch vi điều khiển PIC16F877A 51 3.8
Sơ đồ mạch cảm biến hồng ngoại 52 3.9
Hệ thống được cấp nguồn và sẵng sàng hoạt động 57 4.1
Tin nhắn đã được gửi tới điện thoại 58 4.2
Cảm biến đầu tiên hoạt động khi đổ nước vào 59 4.3
Tin nhắn đã được gửi tới điện thoại 59 4.4
Cảm biến thứ hai hoạt động khi đổ nước vào 60 4.5
Tin nhắn đã được gửi tới điện thoại 60 4.6
Cảm biến thứ ba hoạt động khi đổ nước vào 61 4.7
Tin nhắn đã được gửi tới điện thoại 61 4.8
Cảm biến thứ tư hoạt động khi đổ nước vào 62 4.9
Tin nhắn đã được gửi tới điện thoại 62 4.10
Tin nhắn đã được gửi tới điện thoại 63 4.11
SVTH : Bùi Tấn Tài – CCVT03A
ix
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
MỞ ĐẦU
Hệ thống giám sát mực nước từ xa thông qua tin nhắn SMS. Là một ứng dụng
của khoa học công nghệ đang được nghiên cứu và áp dụng để cảnh báo được sớm nhất
mức nước lũ có thể gây thiệt hại về người, sơ tán di chuyển một cách nhanh nhất sớm
nhất. Hệ thống này nhỏ gọn và làm việc hiệu quả mà không cần phải bảo dưỡng nhiều.
hệ thống sẽ được đặt những nơi nhạy cảm nhất như đầu nguồn con sông, ở đó hệ thống
sẽ đo và báo cáo mực nước qua tin nhắn SMS về cho các trạm theo dõi nhanh nhất và
chính xác nhất. Từ đó chúng ta có thể theo dõi mực nước và sơ tán được sớm khi có
nguy cơ xảy ra lũ
Đồ án được nghiên cứu, khảo sát và thực hiện với mục đích áp dụng những kiến
thức đã được học trong nhà trường để thiết kế, tạo ra một hệ thống giám sát mực nước,
nhiệt độ từ xa bằng tin nhắn SMS hoàn chỉnh. Hệ thống tích hợp module Sim900 và hệ
thống cảm biến hồng ngoại. Đối với hệ thống cảm biến, có các led cảm biến được đặt
chiếu vào nhau, và phát dữ liệu khi có vật cản che những led cảm biến đó. Qua xử lý,
dữ liệu sẽ được gửi về thiết bị đầu cuối (mobile) của người điều khiển để báo cho biết
mực nước đang ở mức cảnh báo nào hay mực nước chỉ bình thườ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 Module, và các vấn đề
khác liên quan tới đề tài.
Ý nghĩa khoa học của hệ thống là hạn chế thiệt hại do lũ lụt gây ra, hạn chế
những tổn thất nặng nề về người và của. Không dừng lại ở đó, hệ thống sẽ dần dần
phát triển qua nhiều mặt, ngoài cảnh báo lũ lụt ra còn cảnh báo để giảm nhẹ được
nhiều thiệt hại khác do thiên tai gây ra như cháy rừng, bão, động đất, sóng thần,…
Công nghệ là vô tận, biết vận dụng nó vào thực tiễn sẽ góp phần lợi ích to lớn
đến xã hội đang ngày càng phát triển mạnh mẽ. Vì vậy em đã chọn đề tài "Xây dựng
hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn
SMS/GSM" nhằm phục vụ cho công tác phòng chống lũ lụt và giảm nhẹ thiệt hại về
người
Đề tài này được thực hiện gồm 4 chương :
Chương 1: Tổng quan về mạng GSM và dịch vụ nhắn tin qua mạng SMS
Chương 2: Vi điều khiển PIC16F877A
SVTH : Bùi Tấn Tài – CCVT03A
1
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Chương 3: Thiết kế và xây dựng hệ thống cảm biến và phát cảnh báo mực
nước, nhiệt độ qua mạng tin nhắn SMS
Chương 4: Kết quả đạt được của hệ thống
SVTH : Bùi Tấn Tài – CCVT03A
2
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
CHƯƠNG 1. TỔNG QUAN VỀ MẠNG GSM VÀ DỊCH VỤ
NHẮN TIN NHẮN SMS
1.1 TỔNG QUÁT VỀ TIN NHẮN SMS
1.1.1 Giới thiệu về 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 tin 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 1991. Ở 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 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 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.
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.
SVTH : Bùi Tấn Tài – CCVT03A
3
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
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.
- 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 hệ
thống 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.
SVTH : Bùi Tấn Tài – CCVT03A
4
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Thứ ba, tin nhắn SMS hỗ trợ việc chi trả các dịch vụ trực tuyến.
1.1.2 Cấu trúc của một tin nhắn SMS
Nội dung của một tin nhắn SMS được gửi đi sẽ được chia làm 5 phần như sau :
- Instructions to air interface : Chỉ thị 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 centre).
- 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.
1.1.3 Tin nhắn SMS chuỗ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 text 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 ra thành
nhiều phần nhỏ và sau đó gửi các phần nhỏ này như một tin nhắn SMS đơn. Khi các
tin nhắn SMS này đã được gửi tới đích hoàn toàn thì nó sẽ được 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 ở các thiết bị có
sử dụng sóng wireless.
1.1.4 SMS CENTER/SMSC
Một SMS Center (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 wireless. 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
SVTH : Bùi Tấn Tài – CCVT03A
5
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
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 (netwok) (chẳng hạn như 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 (bậ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ẽ họat động một cách chuyên dụng để chuyển lưu thông
SMS của một mạng wireless. Hệ thống vận hành mạng luôn 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 wireless. 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
wireless.
Bạn phải biết địa chỉ SMSC của hệ thống vận hành mạng wireless để 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 th0ứ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 lại trong thẻ SIM bởi hệ thống mạng wireless. Đ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ả.
1.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 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 giữa các nhà điều hành mạng wireless ở
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 trong 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 <= chi phí cho 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 wireless 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.
SVTH : Bùi Tấn Tài – CCVT03A
6
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
1.2 TỔNG QUÁT VỀ HỆ THỐNG THÔNG TIN DI ĐỘNG GSM
1.2.1 Giới thiệu về hệ thống thông tin di động GSM
GSM (Global System for Mobile communication) là hệ thống thông tin di động
số toàn cầu, là công nghệ không dây thuộc thế hệ 2G(second generation) có cấu trúc
mạng tế bào, cung cấp dịch vụ truyền giọng nói và chuyển giao dữ liệu chất lượng cao
với các băng tần khác nhau: 400Mhz, 900Mhz, 1800Mhz và 1900Mhz, được tiêu
chuẩn Viễn thông Châu Âu (ETSI) quy định.
GSM là một hệ thống có cấu trúc mở nên hoàn toàn không phụ thuộc vào phần
cứng, người ta có thể mua thiết bị từ nhiều hãng khác nhau.
Do nó hầu như có mặt khắp mọi nơi trên thế giới nên khi các nhà cung cấp dịch
vụ thực hiện việc ký kết roaming với nhau nhờ đó mà thuê bao GSM có thể dễ dàng sử
dụng máy điện thoại GSM của mình bất cứ nơi đâu.
Mặt thuận lợi to lớn của hệ thống GSM là ngoài việc truyền âm thanh với chất
lượng cao còn cho phép thuê bao sử dụng các cách giao tiếp khác rẻ tiền hơn đó là tin
nhắn SMS. Ngoài ra để tạo thuận lợi cho các nhà cung cấp dịch vụ thì hệ thống GSM
được xây dựng trên cơ sở hệ thống mở nên nó dễ dàng kết nối các thiết bị khác nhau từ
các nhà cung cấp thiết bị khác nhau.
Nó cho phép nhà cung cấp dịch vụ đưa ra tính năng roaming cho thuê bao của
mình với các mạng khác trên toàn thế giới. Và hệ thống GSM cũng phát triển thêm các
tính năng truyền dữ liệu như GPRS và sau này truyền với tốc độ cao hơn sử dụng
EDGE.
GSM hiện chiếm 85% thị trường di động với 2,5 tỷ thuê bao tại 218 quốc gia và
vùng lãnh thổ. Các mạng thông tin di động GSM cho phép có thể roaming với nhau do
đó những máy điện thoại di động GSM của các mạng GSM khác nhau ở có thể sử
dụng được nhiều nơi trên thế giới.
1.2.2 Đặc điểm của hệ thống thông tin di động GSM
- Cho phép gởi và nhận những mẫu tin nhắn văn bản bằng kí tự dài đến 126 kí tự.
- Cho phép chuyển giao và nhận dữ liệu, FAX giữa các mạng GSM với tốc độ
hiện hành lên đến 9.600 bps.
- Tính phủ sóng cao: Hệ thống GSM không chỉ cho phép chuyển giao trong toàn
mạng mà còn chuyển giao giữa các mạng GSM trên toàn cầu mà không có một sự thay
SVTH : Bùi Tấn Tài – CCVT03A
7
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
đổi, điều chỉnh nào. Đây là một tính năng nổi bật nhất của hệ thống GSM(dịch vụ
roaming).
- Sử dụng công nghệ phân chia theo thời gian TDM (Time division multiplexing)
để chia ra 8 kênh full rate hay 16 kênh haft rate.
- Công suất phát của máy điện thoại được giới hạn tối đa là 2 watts đối với băng
tần GSM 850/900Mhz và tối đa là 1 watts đối với băng tần GSM 1800/1900Mhz.
- Mạng GSM sử dụng 2 kiểu mã hoá âm thanh để nén tín hiệu âm thanh 3,1khz
đó là mã hoá 6 và 13kbps gọi là Full rate (13kbps) và haft rate (6kbps).
1.2.3 Cấu trúc của hệ thống thông tin di động GSM
1.2.3.1 Cấu trúc tổng quát
Hình 1.1 Cấu trúc của hệ thống thông tin di động GSM
Hệ thống GSM được chia thành nhiều hệ thống con như sau:
- Phân hệ chuyển mạch NSS (Network Switching Subsystem).
- Phân hệ trạm gốc BSS (Base Station Subsystem).
- Phân hệ bảo dưỡng và khai thác OSS (Operation Subsystem).
- Trạm di động MS (Mobile Station).
1.2.3.2 Các thành phần của hệ thống thông tin di động GSM
Hình 1.2 Các thành phần hệ thống GSM
SVTH : Bùi Tấn Tài – CCVT03A
8
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
AUC : Trung tâm nhận thực.
VLR : Bộ ghi định vị tạm trú.
HLR : Bộ ghi định vị thường trú.
EIR : Bộ ghi nhận dạng thiết bị.
MSC : Trung tâm chuyển mạch các dịch vụ mạng.
BSC : Bộ điều khiển trạm gốc.
BTS : Trạm thu phát gốc.
NSS : Phân hệ chuyển mạch.
BSS : Phân hệ trạm gốc.
MS : Trạm di động.
OSS : Phân hệ khai thác bảo dưỡng.
PSPDN : Mạng số liệu công cộngchuyển mạch gói.
CSPDN : Mạng số liệu công cộng chuyển mạch kênh.
PSTN : Mạng điện thoại chuyển mạch công cộng.
PLMN : Mạng di động mặt đất.
ISDN : Mạng số dịch vụ tích hợp.
OMC : Trung tâm khai thác và bảo dưỡng.
1.2.4 Sử phát triển của hệ thống thông tin di động ở Việt Nam
Hệ thống GSM đã vào Việt Nam từ năm 1993. Hiện, ba nhà cung cấp di động hệ
thống GSM lớn nhất của Việt Nam là VinaPhone, MobiFone và Viettel Mobile, cũng
là những nhà cung cấp chiếm thị phần nhiều nhất trên thị trường với số lượng thuê bao
mới tăng chóng mặt trong thời gian vừa qua.
Hiện nay có đến hơn 85% người dùng hiện nay đang là khách hàng của các nhà
cung cấp dịch vụ theo hệ thống GSM.
Cho tới thời điểm này, thị trường thông tin di động của Việt Nam đã có khoảng
70 triệu thuê bao di động. Khi mà ba “đại gia” di động của Việt Nam là VinaPhone,
MobiFone và Viettel đều tăng trưởng rất nóng với số lượng thuê bao mỗi ngày phát
triển được lên tới hàng trăm ngàn thuê bao.
SVTH : Bùi Tấn Tài – CCVT03A
9
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
CHƯƠNG 2. VI ĐIỀU KHIỂN PIC16F877A
2.1. GIỚI THIỆU PIC (Programmable Intelligent Computer ). 2.1.1. Giới thiệu về vi điều khiển PIC
Năm 1971 bộ vi xử lý đầu tiên ra đời đã mở ra một thời đại mới trong công nghệ
điện tử và tin học, nó đã ảnh hưởng sâu sắc đến mọi lĩnh vực khoa học công nghệ. Các
hệ thống được thiết kế dựa trên nền tảng của bộ vi xử lý (điển hình như PC) có khả
năng mà các hệ thống điện tử thông thường không thể thực hiện được.
Để thúc đẩy việc nghiên cứu chế tạo vi điều khiển đó là tính đa dụng, dễ dàng lập
trình và giá thành thấp. Vi điều khiển tỏ ra rất hấp dẫn trong các ứng dụng điều khiển
điện tử vì có kích thước nhỏ, tuy nhỏ nhưng chức năng cũng rất đa dạng, dễ dàng tích
hợp vào trong hệ thống để điều khiển toàn hệ thống.
PIC là dòng vi điều khiển do hãng MICROCHIP sản xuất với công nghệ hiện đại,
phù hợp cho các ứng dụng đơn giản và hiện đại. Đang được sử dụng phổ biến trong
các ứng dụng dân dụng và công nghiệp bởi những đặc tính ưu việt của nó. Hơn nữa
việc lập trình cho PIC lại khá đơn giản bởi số mã lệnh ít, có nhiều công cụ hỗ trợ lập
trình bằng ngôn ngữ cấp cao như C. Hiện tại PIC có các dòng 8 bits và 16 bits. Trong
báo cáo này ta quan tâm đến PIC 8 bits cụ thể là PIC16F877A - một vi điều khiển với
tất cả đặc trưng cơ bản của PIC.
Các đặc điểm cơ bản của PIC có thể được tóm tắt như sau :
- PIC có nhiều chủng loại như PIC 8 bits (PIC10, PIC12, PIC16), hay PIC 16 bits
(PIC24F, PIC24H, …).
- PIC có thể được lập trình bằng ngôn ngữ Assembler hoặc C.
- Có 5 port I/O port A, port B, port C, port D, port E.
- Có 3 timer: Timer0 là 8 bits, Timer1 là 16 bits, Timer2 là 16 bits.
- Được tích hợp bộ chuyển đổi ADC.
- PIC có thể sử dụng Timer để tạo xung PWM.
- Phương thức cất giữ Sleep.
- Có bản lựa chọn dao động.
- Công suất tiêu thụ thấp.
- Cổng phụ song song (PSP) với 8 bit mở rộng, với RD, WR và CS điều khiển.
- Thực hiện truyền dữ liệu nối tiếp với máy tính thông qua cổng RS-232, mặt
khác PIC còn có thể giao tiếp với máy tính thông qua cổng USB.
SVTH : Bùi Tấn Tài – CCVT03A
10
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
2.1.2. Ưu và nhược điểm của PIC
Ta từng sử dụng họ 8051 và thấy được tính hữu dụng của nó qua các ứng dụng
cơ bản, đơn giản. Tuy nhiên đối với các ứng dụng phức tạp, đòi hỏi tốc độ cao, mức độ
tích hợp cao thì bản thân 8051 khó đáp ứng được ( hoặc ta phải đầu tư thêm chi phí
cho việc xử lí ngoại vi,…). PIC thì khác, hãy xem bảng so sánh sau :
Bảng 2.1 Bảng so sánh chức năng của PIC16F877A và AT89C51
STT Chức năng PIC16F877A AT89C51
I/O 5 Ports 4 Ports 1
Flash Memory 8k 4k 2
EEPROM 256bytes - 3
Timer 3 2 4
Interrupts 15 4 5
ADC 8 channel 10 bit - 6
PWM 2 - 7
Comparator 2 - 8
Instruction set 35 >100 9
10 Truyền thông SUART,I2C,MSSP,PSP UART
Khả năng tích hợp cao của PIC mang lại sự đơn giản nhưng hiệu quả trong thiết
kế và lập trình. Tuy vậy PIC không phải là tất cả, khi làm một sản phẩm, tính kinh tế là
quan trọng, sử dụng loại vi điều khiển nào mang lại hiệu quả cao nhất là tùy thuộc vào
người thiết kế.
2.2GIỚI THIỆU TỔNG QUÁT VỀ PIC16F877A
2.2.1 Giới thiệu về PIC16F877A
Khối xử lí trung tâm mà đóng vai trò chính là Pic 16F877A 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 PIC
16F877A 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ề 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 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ì PIC 16F877A là 60.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ư xài 89 muốn
SVTH : Bùi Tấn Tài – CCVT03A
11
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
có ADC bạn phải mua con 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à bạn ko cần mua ADC, Opam, EPPROM vì PIC đã có sẵn trong nó. Ngoài
chúng ta sẽ gặp 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 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 thì có thề sử dung CCS, HTPIC, MirkoBasic,… và còn nhiều chương
trình khác nữa để hỗ trợ cho việc lập trình bên cạnh ngôn ngữ kinh điển là asmbler thì
sử dụng MPLAB IDE. 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 PIC 16F877A đượ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 rất dễ nhớ và dễ học, có độ dài 16bit. 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à 64MHz.
- 8 k Flash Rom.
- 256 Bytes EEPROM
- 4 Port điều khiển vào ra với tín hiệu điều khiển độc lập, với dòng ra cao có thề
kích trực tiếp các transirtor mà ko cần wa bộ buffer.
- 3 bộ định thời Timer0, Timer1, Timer2.
- 1 bộ định thời Timer1 là 16 bit có thể lập trình được.
- 2 bộ định thời Timer0, Timer2 là 8 bit có thể hoạt động trong chế độ sleep với
nguồn xung clock ngoài.
- 2 bộ module CCP ( bao gồm Capture bắt giữ, Compare so sánh, PWM điều chế
xung 10 bit) và 1 bộ module ECCP.
- 1 bộ ADC với 10 kênh ADC 10 bit .
- 2 bộ so sánh tương tự hoạt động độc lập.
- Bộ giám sát định thời Watchdog timer.
SVTH : Bùi Tấn Tài – CCVT03A
12
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
- Cổng giao tiếp song song 8 bit với các tín hiệu điều khiển.
- Chuẩn giao tiếp nối tiếp MSSP (SPI/I2C)
- Chuẩn giao tiếp nối tiếp USART (AUSART/EUSART) với 9bit địa chỉ
- Hỗ trợ giao tiếp I2C.
- 15 nguồn ngắt.
- Chế độ sleep tiết kiệm năng lượng.
- Chức năng bảo mật chương trình
- Nạp chương trình bằng cổng nối tiếp ICSP( In Circuit Serial Programming)
thông qua 2 chân.
- Có thể hoạt động với nhiều dạng Oscillator khác nhau.
- Tần số hoạt động tối đa là 64Mhz.
- Bộ nhớ Flash với khả năng ghi xóa được 100.000 lần
- Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần
- Dữ liệu 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.
SVTH : Bùi Tấn Tài – CCVT03A
13
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
2.2.2 Sơ đồ khối của PIC 16F877A
Hình 2.1 Sơ đồ khối Vi điều khiển Pic16F877A
SVTH : Bùi Tấn Tài – CCVT03A
14
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
2.3 KHẢO SÁT SƠ ĐỒ CHÂN, CHỨC NĂNG TỪNG CHÂN
2.3.1 Sơ đồ chân vi điều khiển PIC16F877A
Hình 2.2 Sơ đồ chân vi điều khiển Pic16F877A
Thứ tự
Bảng 2.2 Bảng mô tả các chức năng từng chân của PIC
chân
Tên chân Hướng Mô tả chức năng và các đặc tính.
OSC1/CLKIN I Đầu vào của thạch anh hay ngõ vào của 9
xung clock ngoài.
OSC1/CLKOUT 10 O Đầu ra của bộ dao động thạch anh, nối
với thạch anh hay cộng hưởng trong
chế độ cộng hưởng của thạch anh.
I/P Ngõ vào Master Reset, chân này cho 1 MCLR/Vpp
phép reset chip ở mức thấp.
Port A là port vào ra hai chiều.
RA0/AN0 I/O RA0 có thể làm ngõ vào ADC hoặc 2
tương tự.
RA1/AN1 I/O RA1có thể làm ngõ vào ADC hoặc 3
SVTH : Bùi Tấn Tài – CCVT03A
15
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
tương tự.
I/O RA2 có thể làm ngõ vào ADC hoặc 4 RA2/AN2/VREF-
tương tự hoặc điện áp chuẩn âm.
I/O RA3 có thể làm ngõ vào ADC hoặc 5 RA3/AN3/VREF+
tương tự hoặc điện áp chuẩn dương.
RA4/T0CKI I/O RA4 có thể làm ngõ vào ADC hoặc 6
tương tự, xung clock cho bộ định thời
RA5/SS/AN4 I/O Timer0. 7
RA5 có thể làm ngõ vào ADC hoặc
tương tự.
PortB là port vào ra hai chiều.
RB0/INT 33 I/O Là chân vào ra hai chiều và có thể sử
dụng làm chân ngắt ngoài.
RB1 Chân vào ra hai chiều. 34 I/O
RB2 Chân vào ra hai chiều. 35 I/O
RB3/PGM Ngõ vào được lập trình ở mức thấp. 36 I/O
RB4 Interrup-on-change pin. 37 I/O
RB5 Interrup-on-change pin. 38 I/O
RB6/PGC Interrup-on-change pin or In-crcuit 39 I/O
Debugger pin.
RB7/PGD 40 I/O Interrup-on-change pin or In-crcuit
Debugger pin.
PORT C là cổng vào ra hai chiều.
RC0/T1OSO/T1CKI 15 I/O Là ngõ ra của Timer1 hoặc là ngõ vào
xung clock của Timer1.
RC1/T1OSI/CCP2 16 I/O Là ngõ ra của Timer1 hoặc ngõ vào
Capture2, ngõ ra Capture hay ngõ ra
PWM2. RC2/CCP1 17 I/O
Là ngõ vào (hoặc ra) compare2, đồng RC3/SCK/CSL 18 I/O
thời là ngõ vào PWM1. RC4/SDI/SDA 23 I/O
Dữ liệu ngoài SPI (chế độ SPI). RC5/SD0 24 I/O
Chân truyền không đồng bộ USART RC6/TX/CK 25 I/O
SVTH : Bùi Tấn Tài – CCVT03A
16
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
RC7/RX/DT 26 I/O hoặc đồng bộ với xung đồng hồ.
Chân đồng bộ USART hoặc đồng bộ
với dữ liệu.
Là cổng vào ra hai chiều hoặc là cổng I/O 19 RD0/PSP0
vào ra song song giao tiếp với bus của I/O 20 RD1/PSP1
vi xử lý. I/O 21 RD2/PSP2
I/O 22 RD3/PSP3
I/O 27 RD4/PSP4
I/O 28 RD5/PSP5
I/O 29 RD6/PSP6
I/O 30 RD7/PSP7
8 RE0/RD/AN5 Ngõ vào Analog 5.
9 RE1/WR/AN6 Ngõ vào Analog 6.
10 RE2/CS/AN7 Ngõ vào Analog 7.
12, 31 P Cung cấp điện áp âm cho vi xử lý. VSS
11, 32 P Cung cấp nguồn dương cho vi xử lý. VDD
Ghi chú: I = input ; O = output ; I/O = input/output ; P = power
2.3.2 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.3.2.1 Bộ nhớ chương trình
Bộ nhớ chương trình của Vi điều khiển Pic 16F877A là bộ nhớ flash, dung lượng
bộ nhớ 64K word (1 word = 16bit).
Để mã hóa được địa chỉ của 64k word bộ nhớ chương trình, bộ đếm chương trình
có 21bit (PC<20:0>).
Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h
(Reset vertor). Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0008h
(Interrupt vertor). Bộ nhớ chương trình bao gồm bộ nhớ Stack và được địa chỉ hóa bởi
bộ đếm chương trình
SVTH : Bùi Tấn Tài – CCVT03A
17
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
.
Hình 2.3 Bộ nhớ chương trình Pic 16F877A
SVTH : Bùi Tấn Tài – CCVT03A
18
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
2.3.2.2 Bộ nhớ dữ liệu
Bộ nhớ dữ liệu của Pic là bộ nhớ EEPROM được chia ra làm nhiều bank. Đối
với Pic 18F26K20 bộ nhớ dữ liệu được chia ra làm 16 bank.
Hình 2.4 Địa chỉ thanh ghi của Pic 16F877A
2.3.3 Các cổng I/O của PIC16F877A
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để tương
tác với thế giới bên ngoài. Sự tương tác này rất đa dạng và thông qua quá trình tương
tác đó, chức năng của vi điều khiển được thể hiện một cách rõ ràng.
SVTH : Bùi Tấn Tài – CCVT03A
19
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin), tùy theo
cách bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và số lượng
chân trong mỗi cổng có thể khác nhau. Bên cạnh đó, do vi điều khiển được tích hợp
sẵn bên trong các đặc tính giao tiếp ngoại vi nên bên cạnh chức năng là cổng xuất nhập
thông thường, một số chân xuất nhập còn có thêm các chức năng khác để thể hiện sự
tác động của các đặc tính ngoại vi nêu trên đối với thế giới bên ngoài. Chức năng của
từng chân xuất nhập trong mỗi cổng hoàn toàn có thể được xác lập và điều khiển được
thông qua các thanh ghi SFR liên quan đến chân xuất nhập đó.
Vi điều khiển PIC16F877A có 4 cổng xuất nhập, bao gồm PORTA, PORTB,
PORTC, PORTD và PORTE.
PORTA
PORTA (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). Muốn xác lập chức năng của một chân trong PORTA 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 PORTA là output, ta “clear” bit điều
khiển tương ứng với chân đó trong thanh ghi TRISA. Thao tác này hoàn toàn 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 PORTA là
TRISA, đối với PORTB là TRISB, đối với PORTC là TRISC, và đối với PORTE là
TRISE). Bên cạnh đó PORTA còn là ngõ ra của bộ ADC, bộ so sánh, ngõ vào analog
ngõ vào xung clock của Timer0 và ngõ vào của bộ giao tiếp MSSP (Master
Synchronous Serial Port).
Đặc tính này sẽ được trình bày cụ thể trong phần sau. Các thanh ghi SFR liên
quan đến PORTA bao gồm:
PORTA (địa chỉ 05) : chứa giá trị các pin trong port A
TRISA (địa chỉ 85h) : điều khiển xuất nhập.
CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh.
CVRCON (địa chỉ 9Dh) : thanh ghi điều khiển bộ so sánh điện áp.
ADCON (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC.
PORTB
PORTB (RPB) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISB (địa chỉ 93h). Bên cạnh đó một số chân của PORTB còn được sử dụng trong
SVTH : Bùi Tấn Tài – CCVT03A
20
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
quá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau. PORTB
còn liên quan đến ngắt ngoại vi và bộ Timer0. PORTB 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ấu trúc bên trong và chức năng cụ
thể của từng chân trong PORTB sẽ được trình bày cụ thể trong Phụ lục 1. Các thanh
ghi SFR liên quan đến PORTB bao gồm:
PORTB (địa chỉ 06h) : chứa giá trị các pin trong PORTB
TRISB (địa chỉ 86h) : điều khiển xuất nhập
OPTON_REG (địa chỉ 81h) : điều khiển ngắt ngoại vi và bộ Timer 0.
PORTC
PORTC (RPC) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISC. Bên cạnh đó PORTC 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 I2C, SPI, SSP, USART. Các thanh ghi điều
khiển liên quan đến PORTC:
PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORTC
TRISC (địa chỉ 87h) : điều khiển xuất nhập
PORTD
PORTD (RPD) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISD. Bên cạnh đó PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP
(Parallel Slave Port). Các thanh ghi điều khiển liên quan đến PORTC:
PORTC (địa chỉ 08h) : chứa giá trị các pin trong PORTC
TRISC (địa chỉ 88h) : điều khiển xuất nhập.
PORTE
PORTE (RPE) gồm 3 chân I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISE. Các chân của PORTE 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 PORTE bao gồm:
+ PORTE (địa chỉ 09h) : chứa giá trị các chân trong PORTE.
+ TRISE (địa chỉ 89h) : đ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.
+ ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển khối ADC.
SVTH : Bùi Tấn Tài – CCVT03A
21
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
2.4 BỘ CHUYỂN ĐỔI TƯƠNG TỰ - SỐ (ADC)
ADECLARE (Analog to Digital Converter) là bộ chuyển đổi tín hiệu giữa hai
dạng tương tự và số. Kết quả chuyển đổi từ tín tiệu tương tự sang tín hiệu số là 10 bit
số tương ứng và được lưu trong hai thanh ghi ADRESH và ADRESL. Khi không sử
dụng bộ chuyển đổi ADECLARE, các thanh ghi này có thể được sử dụng như các
thanh ghi thông thường khác. Khi quá trình chuyển đổi hoàn tất, kết quả sẽ được lưu
vào hai thanh ghi ADRESH:ADRESL.
Hình 2.5 Sơ đồ khối của AD
Hình 2.6 Chu kỳ xung clock và tần số làm việc của ADC
2.4.1 Kết quả chuyển đổi AD
Có 2 cách lưu kết quả của chuyển đổi 10bit A/D , bên trái hoặc bên phải. Việc
lựa chọn các cách lưu được điều khiển bởi bit ADFM và được minh họa cụ thể trong
hình sau:
SVTH : Bùi Tấn Tài – CCVT03A
22
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Hình 2.7 Các cách lưu kết quả chuyển đổi 10bit A/D
2.4.2 Các bước chuyển đổi từ tương tự - số
Thiết lập cấu hình cho port:
- Ngắt kết nối các đầu ra của bộ điều khiển
- Thiết lập cấu hình các chân ở dạng analog
Thiết lập các thông số cho bộ chuyển đổi ADC
- Chọn xung clock cho bộ chuyển đổi ADC
- Chọn điện áp mẫu
- Chọn đầu vào cho bộ ADC
- Chọn dạng kết quả
- Chọn chế độ kết nối trễ
- Cho phép bộ chuyển đổi ADC hoạt động
Thiết lập các cờ ngắt cho bộ ADC
- Clear cờ ngắt ADC
- Mở chế độ ngắt của bộ ADC
- Mở ngắt ngoài
- Mở ngắt toàn bộ
Đợi cho tới khi quá trình lấy mẫu hoàn tất
Bắt đầu quá trình chuyển đổi bằng cách set bit GO/DONE
Đợi cho tới khi quá trình chuyển đổi hoàn tất bằng cách:
- Kiểm tra bit GO/DONE
- Kiểm tra cờ ngắt ADC
Đọc kết quả chuyển đổi ADC
Xóa cờ ngắt ADC (tiếp tục thực hiện nếu cần tiếp tục chuyển đổi)
SVTH : Bùi Tấn Tài – CCVT03A
23
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
2.4.3 Các thanh ghi ADC
INTCON (địa chỉ 0Bh,8Bh,10Bh,18Bh) : Cho phép các ngắt.
PIR1 (địa chỉ 0Ch) : Chứa cờ ngắt AD (bit ADIF).
PIR1 (địa chỉ 8Ch) : Chứa bit điều khiển AD (bit ADIE).
ADCON0 (địa chỉ 1Fh) : Thanh ghi điều khiển A/D 0.
ADCON1 (địa chỉ 9Fh) : Thanh ghi điều khiển A/D 1.
ADRESH (địa chỉ 1Eh): Thanh ghi kết quả mức cao ADC .
ADRESL (địa chỉ 9Eh): Thanh ghi kết quả mức thấp ADC .
PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h) : Liên quan đến các ngõ vào
analog ở PORTA.
PORTE (địa chỉ 09h) và TRISE (địa chỉ 89h) : Liên quan đến các ngõ vào
analog ở PORTE.
Hình 2.8 Các thanh ghi liên quan đến bộ điều khiển A/D
2.5 BỘ SO SÁNH COMPARATOR
Bộ so sánh bao gồm hai bộ so sánh tín hiệu analog và được đặt ở PORTA. Ngõ
vào bộ so sánh là các chân RA3:RA0, ngõ ra là hai chân RA4 và RA5. Thanh ghi điều
khiển bộ so sánh là CMCON. Các bit CM2:CM0 trong thanh ghi CMCON đóng vai
trò lựa chọn các chế độ hoạt động cho bộ Comparator.
Cơ chế hoạt động của bộ Comparator như sau:
Tín hiệu analog ở chân V
SVTH : Bùi Tấn Tài – CCVT03A
24
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Hình 2.9 Nguyên lý hoạt động của một bộ so sánh đơn giản
Hình 2.10 Sơ đồ khối đơn giản của bộ Comparator
Các bit C2OUT và C1OUT (CMCON<7:6>) đóng vai trò ghi nhạn sự thay đổi
tín hiệu analog so với điện áp đặt trước. Các bit này cần được xử lý thích hợp bằng
chương trình để ghi nhận sự thay đổi của tín hiệu ngõ vào. Cờ ngắt của bộ so sánh là
bit CMIF (thanh ghi PIR1). Cờ ngắt này phải được reset về 0. Bit điều khiển bộ so
sánh là bit CMIE (thanh ghi PIE).
Các thanh ghi liên quan đén bộ so sánh bao gồm:
− CMCON (địa chỉ 9Ch) và CVRCON (địa chỉ 9Dh) : xác lập các thông số cho
bộ so sánh.
− Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh) : chứa các bit cho phép
các ngắt.
− Thanh ghi PIR2 (địa chỉ 0Dh) : chứa cờ ngắt của bộ so sánh (CMIF).
− Thanh ghi PIE2 (địa chỉ 8Dh) : chứa cờ ngắt của bộ so sánh (CMIE).
SVTH : Bùi Tấn Tài – CCVT03A
25
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Hình 2.11 Các thanh ghi liên quan đến bộ so sánh
2.6 TRUYỀN THÔNG NỐI TIẾP EUART
EUSART (Enhanced Universal Synchronous Asynchronous Receiver
Transmitter) là một bộ truyền thông nối tiếp. Nó có tất cả các bộ phát xung clock,
đăng ký thay đổi và bộ đệm dữ liệu cần thiết để thực hiện một đầu vào hay đầu ra dữ
liệu nối tiếp chuyển giao độc lập của thiết bị thực hiện chương trình. EUSART còn
được gọi là giao diện giao tiếp nối tiếp SCI (Serial Communication Interface).
Bộ EUSART là một trong hai hình thức giao tiếp nối tiếp vào ra.EUSART có thể
được cấu hình như là một hệ thống bất đồng bộ hoạt động song công mà có thể giao
tiếp với các thiết bị bên ngoài như là các thiết bị đầu cuối CRT và các máy tính cá
nhân nó cũng có thể được cấu hình như là một hệ thống đồng bộ hoạt động bán công
mà có thể giao tiếp với các mạch tích hợp A/D hay D/A, các EEPROM nối
tiếp….EUSART có thể được cấu hình để hoạt động một trong các chế độ sau:
Bất đồng bộ ( song công: Asynchronous ).
Đồng bộ chủ ( bán công: Master mode )
Đồng bộ tớ ( bán công: Slave mode )
2.6.1 Bộ EUSART hoạt động trong chế độ bất đồng bộ
Ở chế độ truyền này EUSART hoạt độ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 hay 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ị
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.
SVTH : Bùi Tấn Tài – CCVT03A
26
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Bộ EUSART 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.6.1.1 Bộ phát bất đồng bộ EUSART
Sơ đồ khối bộ phát EUSART bất đồng bộ được chỉ ra hình vẽ 2.12. Phần chính
của nó là thanh ghi dịch nối tiếp phát (TSR). Nó nhận dữ liệu từ thanh ghi đệm phát
TXREG. Thanh ghi TXREG được nạp dữ liệu bởi phần mềm.Thanh ghi TXR sẽ
không được nạp dữ liệu cho đến khi stop bit đã được phát đi trong lần nạp trước đó.
ngay khi stop bit được phát.TSR được nạp giá trị mới từ thanh ghi TXREG. Mỗi khi
TXREG phát dữ liệu đến TSR.TXREG rỗng và cờ TXIF được bật.Ngắt này có thể
được cho phép hoặc không cho phép bằng cách đặt hoặc xóa bit TXIE ( PIE<4>). Cờ
TXIF sẽ được đặt bất chấp trạng thái của bit TXIE và không thể được xóa bởi phần
mềm. Nó chỉ có thể được xóa khi dữ liệu mới được nạp vào thanh ghi TXREG. Trong
khi bit TXIF chỉ ra trạng thái của thanh ghi TXREG thì bit TRMT lại chỉ ra trạng thái
của thanh ghi TSR.Bit này chỉ có thể đọc, được đặt khi thanh ghi TSR rỗng.
Việc phát dữ liệu được phép bằng cách cho phép bit TXEN. Việc phát dữ liệu
thực sư không xảy ra cho đến khi thanh ghi TXREG được nạp dữ liệu và bộ BRG tạo
ra một clock dịch.Việc phát dữ liệu cũng có thể được bắt đầu bằng nạp thanh ghi
TXREG và cho phép bit TXEN.
Để có thể phát 9 bit dữ liệu , bit TX9 được đặt và 9 bit dữ liệu được ghi đến bit
TX9D.Bit thứ 9 phải được ghi trước khi ghi 8 bit dữ liệu đến TXREG.
Để thiết lập chế độ phát bất đồng bộ , các bước sau được thực hiện :
1) Thiết lập tốc độ Baud cho thanh ghi SPBRGH:SPBRG , nếu tốc độ baud được
yêu cầu cao , đặt bit BRGH.
2) Set chân điều khiển RX/DT và TX/CK bằng “1”.
3) Cho phép port nối tiếp bất đồng bộ bằng cách xóa bit SYNC và bit SPEN.
4) Nếu cần phát 9 bit dữ liệu , đặt bit TX9.
5) Set bit điều khiển CKTXP nếu dữ liệu phát bị đảo ngược.
6) Cho phép phát dữ liệu bằng cách đặt bit điều khiển TXEN, có thể ngắt bit
TXIF
SVTH : Bùi Tấn Tài – CCVT03A
27
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
7) Nếu ngắt được yêu cầu , cho phép bit TXIE. Trường hợp có sử dụng ngắt ,
phải bảo đảm rằng bit GIE và bit PEIE trong thanh ghi INTCON được đặt.
8) Nếu cần phát 9 bit dữ liệu , bit thứ 9 sẽ phụ thuộc vào bit dữ liệu TX9D
9) Nhận 8 bit dữ liệu từ thanh ghi TXREG. Có thể bắt đầu truyền dữ liệu.
Hình 2.12 Sơ đồ khối bộ truyền dữ liệu EUSART bất đồng bộ
Hình 2.13 Các thanh ghi liên quan đến quá trình truyền bất đồng bộ
2.6.1.2 Bộ thu bất đồng bộ EUSART
Sơ đồ khối của bộ thu được chỉ ra ở hình vẽ 2.14. Dữ liệu nhận trên chân
RC7/RX/DT và dồn vào khối khôi phục dữ liệu. Khối khôi phục dữ liệu thật ra là dịch
dữ liệu tốc độ cao, hoạt động nhanh gấp 16 lần tốc độ Baud. Một khi chế độ bất đồng
bộ được chọn thì việc tiếp nhận được phép bằng cách đặt Bit CREN (RCSTA<4>).
Trung tâm của bộ nhận là thanh ghi dịch nhận RSR. Sau khi lấy mẫu Bit Stop dữ
liệu nhận trong RSR được truyền đến thanh ghi RCREG. Nếu việc truyền hoàn tất thì
Bit Cờ RCIF lên 1. Ngắt thật sự cho phép hoặc không cho phép bằng cách đặt hoặc
xóa Bit RCIE. Cờ RCIF chỉ là 1 Bit chỉ đọc và được xó bởi phần cứng. Nó được xóa
khi thanh ghi RCREG được đọc và hoàn toàn không có dữ liệu. RCREG là 1 thanh ghi
bộ đệm đôi (Bởi vì nó cho 2 Byte dữ liệu có thể truyền và nhận đồng thời đến RCREG
SVTH : Bùi Tấn Tài – CCVT03A
28
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
FIFO và Byte thứ 3 bắt đầu được dịch chuyển đến thanh ghi RSR). Khi phát hiện ra
Bit Stop của Byte thừ 3 này, Nếu thanh ghi RCREG vẫn còn đầy thì Bit bào lỗi
trànOERR(RCSTA<1>), sẽ lên 1. Những dữ liệu trong RSR sẽ mất đi. Và thanh ghi
RCREG có thể được đọc 2 lần để lấy lại 2 Byte trong FIFO. Bit báo tràn OERR phải
được xóa trong phần mềm.
Để thiết lập chế độ thu bất đồng bộ, các bước sau được yêu cầu :
1. Khởi tạo thanh ghi SPBRGH:SPBRG, BRGH và BRG16 bit cho việc chọn sai
số tốc độ Baud.
2. Set chân điều khiển RX/DT và TX/CK bằng “1”.
3. Cho phép nhận qua Port nối tiếp bất đồng bộ bằng cách xóa Bit SYNC và cho
Bit SPEN lên 1.
4. Nếu ngắt xảy ra thì set Bit RCIE và Nếu sử dụng ngắt thì set bit GIE và PEIE
của thanh ghi INTCON.
5. Nếu nhận 9-Bit dữ liệu thì set Bit RX9 .
6. Set bit CKTXP nếu dữ liệu nhận bị đảo ngược.
7. Cho phép nhận dữ liệu bằng cách set Bit CREN.
8. Sau khi dữ liệu được nhận , Bit Cờ ngắt RCIF sẽ được set và cờ ngắt được
kích hoạt (nếu bit RCIE được set).
9. Đọc nội dung thanh ghi RCSTA để nhận bit dữ liệu thứ 9 và xác định các lỗi
xảy trong quá trình thu dữ liệu.
10. Nhận 8 bit dữ liệu thu được bằng cách đọc nội dung thanh ghi RCREG.
11. Nếu xuất hiện lỗi trong quá trình nhận thì xóa lỗi bằng cách xóa BitCREN
Hình 2.14 Sơ đồ khối bộ nhận dữ liệu EUSART bất đồng bộ
SVTH : Bùi Tấn Tài – CCVT03A
29
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Hình 2.15 Các thanh ghi liên quan đến quá trình nhận dữ liệu bất đồng bộ
2.6.1.3 Độ chính xác của xung clock với hoạt động không đồng bộ
Hình 2.16 Cấu tạo thanh ghi TXSTA
Bit 7 CSRC : bit chọn nguồn xung.
Chế độ bất đồng bộ : không cần thiết
Chế độ đồng bộ :
1 = chế độ chủ (phát xung dao động nội từ BRG). +
0 = chế độ tớ ( xung dao dộng ngoại ). +
Bit 6 TX9 : bit cho phép truyền 9 bit.
+ 1 = chọn chế độ truyền 9 bit.
+ 1 = chọn chế độ truyền 8 bit.
Bit 5 TXEN : bit cho phép truyền.
+ 1 = cho phép truyền.
+ 0 = không cho phép truyền.
Bit 4 SYNC : bit chọn chế độ USART.
+ 1 = chế độ đồng bộ.
+ 0 = chế độ bất đồng bộ.
Bit 3 SEND8 : gửi bit ký tự bị mất.
Chế độ bất đồng bộ :
+ 1 = truyền ký tự bị mất
+ 0 = quá trình truyền ký tự bị mất kết thúc
Chế độ đồng bộ : không cần thiết
SVTH : Bùi Tấn Tài – CCVT03A
30
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
+ 1 = tốc độ nhanh.
+ 0 = tốc độ chậm.
Bit 1 TRMT : bit trạng thái dịch truyền thanh ghi.
+ 1 = TSR rỗng.
+ 0 = TSR đầy.
Bit 0 TX9D : bit thứ 9 của truyền dữ liệu, có thể là bit Parity.
Hình 2.17 Cấu tạo thanh ghi RCSTA
Bit 7 SPEN : bit cho phép Serial Port.
+ 1 = cho phép Serial Port (tức là cấu hình cho RC7/RX/DT và
RC6/TX/CK như chân Serial Port).
+ 0 = không cho phép.
Bit 6 RX9 : bit cho phép nhận 9 bit.
+ 1 = cho phép nhận 9 bit.
+ 0 = cho phếp nhận 8 bit.
Bit 5 SREN : bit cho phep nhận đơn độc.
Chế độ bất đồng bộ không dùng.
Chế độ đồng bộ - Master:
+ 1 = cho phép nhận đơn độc.
+ 0 = không cho phép.
Chế độ đồng bộ - Slave : không cần.
Bit 4 CREN : bit cho phép nhận tiếp tục.
Chế độ bất đồng bộ :
+ 1 = cho phép nhận tiếp tục.
Chế độ bất đồng bộ :
+ 1 = cho phép nhận tiếp tục.
+ 0 = không cho phép nhận tiếp tuc.
Chế độ đồng bộ :
+ 1 = cho phép nhận tiếp đến khi bit cho phép CREN bị xóa.
+ 0 = không cho phép nhận tiếp.
SVTH : Bùi Tấn Tài – CCVT03A
31
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Bit 3 ADDEN : bit cho phép phat hiện địa chỉ.
Chế độ bất đồng bộ 9 bit (RX9 = 1):
+ 1 = cho phép phat hiện địa chỉ, cho phép nhắt và tải bộ đệm nhận khi
RSR<8> được SET.
+ 0 = không cho phép phát hiện địa chỉ, tất cả các Bytes được nhận và bit
thứ 9 có thể được sử dụng như là bit Parity.
Bit 2 FERR : bit báo lỗi khung truyền
+ 1 = lỗi khung truyền (có thể được chấp nhận bằng cách đọc thanh ghi
RCREG và nhận Byte tiếp theo).
+ 0 = không xuất hiện lỗi trong quá trình truyền nhận dữ liệu.
Bit 1 OERR : bit báo lỗi tràn bộ nhớ.
+ 1 = lỗi tràn ( có thể xóa bằng cách xóa bit CREN).
+ 0 = không báo lỗi tràn.
Bit 0 RX9D : bit thứ 9 của dữ liệu nhận ( có thể là bit parity nhưng phải được
tính toán bởi người dùng).
2.6.2 Bộ EUSART hoạt động trong chế độ đồng bộ
Giao diện EUSART đồng bộ được kích hoạt bằng cách set bit SYNC. Cổng giao
tiếp nối tiếp vẫn là hai chân RC7/RX/DT, RC6/TX/CK và được cho phép bằng cách
set bit SPEN. EUART cho phép hai chế độ truyền nhận dữ liệu là Master mode và
Slave mode. Master mode được kích hoạt bằng cách set bit CSRC (TXSTA<7>), Slave
mode được kích hoạt bằng cách Clear bit CSRC. Điểm khác biệt duy nhất giữa hai chế
độ này làMaster mode sẽ lấy xung clock đồng bộ từ bộ tạo xung baud BRG còn Slave
mode lấy xung clock đồng bộ từ bên ngoài qua chân RC6/TX/CK. Điều này cho phép
Slave mode hoạt động ngay cả khi vi điều khiển đang ở chế độ sleep.
2.7 HOẠT ĐỘNG ĐỊNH THỜI TIMER
2.7.1 Bộ định thời TIMER0
Bộ định thời/bộ đếm Timer0 có các đặc tính sau :
- Bộ định thời / bộ đếm 8 bit .
- Cho phép đọc và ghi .
- Bộ chia 8 bit lập trình được bằng phần mềm .
- Chọn xung clock nội hoặc ngoại .
- Ngắt khi có sự tràn từ FFh đến 00h
SVTH : Bùi Tấn Tài – CCVT03A
32
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
- Chọn cạnh cho xung clock ngoài
Bên dưới là sơ đồ khối của bộ định thời Timer 0 và bộ chia dùng chung với
WDT. Chế độ định thời (Timer) được chọn bằng cách xóa bit T0CS (
OPTION_REG<5> ) Trong chế độ định thời , bộ định thời Timer 0 sẽ tăng dần sau
mỗi chu kỳ lệnh ( không có bộ chia ) . Nếu thanh ghi TMR0 được ghi thì sự tăng sẽ bị
ngăn lại sau hai chu kỳ lệnh .
Chế độ đếm(Counter) được chọn bằng cách set bit T0SC ( OPTION_REG<5> ).
Trong chế độ đếm , Timer0 sẽ tăng dần ở mỗi cạnh lên hoặc cạnh xuống của chân
RA4/T0CKI . Sự tăng cạnh được xác định bởi bit Timer0 Source Edge Select , T0SE
(OPTION_REG<4> ) . Bộ chia chỉ được dùng chung qua lại giữa bộ định thời Timer0
và bộ định thời Watchdog . Bộ chia không cho phép đọc hoặc ghi .
Ngắt TMR0 được phát ra khi thanh ghi TMR0 tràn từ FFh đến 00h đối với 8 bit.
Sự tràn này sẽ set bit TMR0IF(INTCON<2>). Ngắt này có thể được giấu đi bằng cách
xóa đi bit TMR0IE (INTCON<5>) . Bit TMR0IF cần phải được xóa trong chương
trình bởi thủ tục phục vụ ngắt của bộ định thời Timer0 trước khi ngắt này được cho
phép lại.
Sơ đồ khối của Timer 0 như sau:
Hình 2.18 sơ đồ khối bộ định thời Timer0
Muốn Tmer 0 hoạt động ở chế độ Timer ta clear bit T0SC (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
SVTH : Bùi Tấn Tài – CCVT03A
33
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Timer 0 bằng 1/4 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 va xoa được giúp ta ấn định thời điểm ngắt Timer
0 xuất hiện một cách linh động . Muốn Timer 0 hoạt đọng o chế độ counter ta set bit
T0CS (OPTION_REG<5>). Khi đó xung tác động lên bộ đếm được lấy từ chân
RA4/T0CKI. Bit T0SE (OPTIN_REG<4>) cho phép lựa chọn cạnh tác động vào bộ
đếm. Cạnh tác động sẽ là cạnh lên nếu T0SE = 0 và cạnh tác động sẽ là cạnh xuống
nếu T0SE = 1.
Khi thanh ghi TMR0 bị tràn, bit TMR0IF (INTCON<2>) sẽ được set. Đây chính
là cờ ngắt của Timer 0. 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 lại quá trình đếm .NGắt Timer 0 không thể đánh thức vi điều
khiển 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 bộ chia tần số được sử dụng cho timer 0 thì WDT sẽ không có
hỗ trợ của bộ chia tần số và ngược lại. Bộ chia tần số được điềi khiển bởi thanh ghi
OPTION_REG. Bit PSA (OPTION_REG<3>) xác định đối tượng tác động của bộ
chia tần số. Các bit PS2:PS0 (OPTION_REG<2:0>) xác định tỉ số của bộ chia tần số.
Các lệnh tác động lên giá trị thanh ghi TMR0 sẽ xóa chế độ hoạt động của bộ chia tần
số.
Các thanh ghi điều khiển liên quan đến Timer 0 bao gồm :
TMR0 (địa chỉ 01h,101h) : chứa giá trị đếm của Timer 0.
INTCON (địa chỉ 0Bh,8Bh,10Bh,18Bh)):cho phép ngắt hoạt .
OPTION_REG (địa chỉ 81h,181h) : điều khiển bộ chia tần số.
Hình 2.19 Các thanh ghi liên quan đến bộ định thời Timer0
2.7.2 Bộ định thời TIMER1
Bộ định thời Timer1 là một bộ định thời/bộ đếm 16 bit gồm hai thanh ghi
TMR1H ( byte cao ) và TMR1L ( byte thấp ) mà có thể đọc hoặc ghi . Cặp thanh ghi
SVTH : Bùi Tấn Tài – CCVT03A
34
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
này tăng số đếm từ 0000h đến FFFFh và một tràn sẽ xuất hiện khi có sự chuyển số
đếm từ FFFFh xuống 0000h . Ngắt, nếu được phép có thể phát ra khi có số đếm tràn và
được đặt ở bit cờ ngắt TMR1IF. Ngắt có thể được phép hoặc cấm bằng cách đặt hoặc
xóa bit cho phép ngắt TMR1IE.
Bộ định thời Timer1 có thể được cấu hình để hoạt động một trong hai chế độ sau:
- Định thời một khoảng thời gian ( Timer )
- Đếm sự kiện ( Counter )
Việc lựa chọn một trong hai chế độ được xác định bằng cách đặt hoặc xóa bit
chọn clock TMR1CS. Trong chế độ định một khoảng thời gian, bộ định thời tăng số
đếm lên sau mỗi chu kỳ lệnh. Trong chế độ đếm sự kiện, bộ định thời tăng sau mỗi
cạnh lên của clock ngoài đặt vào. Bộ định thời 1 có thể được phép hoặc cấm bằng
cách đặt hoặc xóa bit điều khiển TMR1ON.
Hình 2.20 T1CON: Thanh ghi điều khiển Timer1
Hình 2.21 Sơ đồ khối Timer1
Ngoài ra Timer 1 còn có chức năng reset input bên trong được điều khiển bởi một
trong hai khối CCP (Capture/Compare/PWM).Khi set bit T1OSCEN thì Timer 1 sẽ lấy
xung clock từ hai chân RC/T1OSI/CCP2 và RC0/T1OSO/T1CKI làm xung đếm.
Timer 1 sẽ bắt đầu đếm sau cạnh xuống đầu tiên của xung ngõ vào. Khi đó PORTC sẽ
bỏ qua sự tác động của hai bit TRISC<1:0> và PORTC<2:1> được gán giá trị 0 . Khi
SVTH : Bùi Tấn Tài – CCVT03A
35
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
clear bit T1OSCEN Timer 1 sẽ lấy xung đếm từ oscillator hoặc từ chân
RC0/T1OSO/T1CKI.
Timer 1 có hai chế độ đếm là đồng bộ (Synchronous) và bất đồng bộ
(Asynchronous). Chế độ đếm được quyết định bởi bit điều khiển T1SYNC
(T1CON<2>).
Khi T1SYNC = 1 xung đếm lấy từ bên ngoài sẽ không được đồng bọ hóa với
xung clock bên trong, Timer 1 sẽ tiếp tục quá trình đếm vi điều khiển đang ở chế độ
sleep và ngắt do Timer tạo ra khi bi tràn có khả năng đánh thức vi điều khiển. Ở chế độ
đếm bất đòng bộ, Timer 1 không thể được sử dụng để làm nguồn xung clock cho khói
CCP (Capture/Compare/Pulse width modulation).
Khi T1SYNC = 0 xung đếm vào Timer 1 sẽ được đồng bộ hóa với xung clock
bên trong. Ở chế độ này Timer 1 sẽ không hoat động khi vi điều khiẻn đang ở chế độ
sleep.
Các thanh ghi liên quan đến Timer 1 bao gồm:
INTCON (địa chỉ 0Bh, 8Bh,10Bh, 18Bh) : cho phép ngắt hoạt động.
PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer 1 (TMR1IF).
PIE1 (địa chỉ 8Ch): cho phép ngắt Timer 1 (TMR1IE).
TMR1L (địa chỉ 0Eh): chứa giá trị 8 bít thấp của bộ đếm Timer 1.
TMR1H (địa chỉ 0Fh): chứa giá trị 8 bít cao của bộ đếm Timer 1.
T1CON (địa chỉ 10h): xác lập các thông số cho Timer 1.
Hình 2.22 Các thanh ghi liên quan đến bộ định thời Timer1
2.7.3 Bộ định thời TIMER2
Bộ định thời Timer2 là bộ định thời 8 bit với một bộ chia và một bộ Postscaler.
Nó thường được dùng chung với bộ CCP trong chế độ PWM ( sẽ được đề cập ở phần
SVTH : Bùi Tấn Tài – CCVT03A
36
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
sau ). Thanh ghi TMR2 có thể đọc hoặc ghi và được xóa khi có bất kỳ tín hiệu reset
nào của thiết bị.
Bộ định thời Timer2 có một thanh ghi chu kỳ 8 bit. Bộ định thời tăng số đếm lên
từ 00h đến giá trị được ghi trong thanh ghi TR2 và sau đó reset lại giá trị 00h trong chu
kỳ kế tiếp. PR2 là thanh ghi có thể đọc hoặc ghi.Giá trị trùng hợp trong thanh ghi
TMR2 được đi qua bộ postscaler 4 bit để phát ra một ngắt TMR2(được đặt ở bit cờ
ngắt TMR2IF). Bộ định thời 2 có thể được tắt ( không hoạt động ) bằng cách xóa bit
điều khiển TMR2ON để giảm thiểu công suất tiêu tán nguồn.
Hình 2.23 T2CON: Thanh ghi điều khiển Timer2
Hình 2.24 Sơ đồ khối của bộ định thời Timer2
Hình 2.25 Các thanh ghi liên quan đến bộ định thời Timer2
2.8 NGẮT (INTERRUPT)
PIC16F877A có nhiều nguồn tạo ra hoạt động ngắt và được điều khiển bởi rất
nhiều thanh ghi: RCON; INTCON; INTCON2; INTCON3; PIR1, PIR2; PIE1, PIE2;
SVTH : Bùi Tấn Tài – CCVT03A
37
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
IPR1, IPR2. Bên cạnh đó mỗi ngắt còn có một 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 hoạt độ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/INT0 và TMR0 nằm trong thanh ghi INTCON, thanh
ghi này còn chứa bit cho phép các ngắt ngoại vi PEIE. Bit điều khiển các ngắt nằm
trong thanh ghi PIE1 và PIE2. Các cờ ngắt ngoại vi được chứa trong hai thanh ghi
chức năng đặc biệt : thanh ghi PIR1 và PIR2.Các bit cho phép ngắt tương ứng được
chứa trong hai thanh ghi PIE 1 và PIE 2.
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 chính được cất vào trong bộ
nhớ Stack và bộ đếm chương trình sẽ chỉ đến địa chỉ 0008h. Lệnh RETFIE được dùng
để thoát khỏi chương trình ngắt và quay trở về chương trình chính, đồng thời bit GIE
cũng sẽ được set để cho phép các ngắt hoạt độ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 trước khi cho phép
ngắt tiếp tục hoạt động trở lại để ta có thể phát hiện được thời điểm tiếp theo mà ngắt
xảy ra.
Khi một ngắt được đáp ứng, bit GIE được xóa và cấm tất cả các ngắt khác.Cờ
ngắt phải được xóa bởi phần mềm trước khi cho phép lại ngắt.Thông thường, trước
khi thực hiện các chương trình phục vụ ngắt, nội dung các thanh ghi w và status nên
được lưu lại để bảo đảm an toàn và được phục hồi trước khi trở lại chương trình chính.
Đối với các ngắt ngoại 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 (PORTB interrupt-on-change), 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.
Trong quá trình thực thi ngắt, chỉ có giá trị của bộ đếm chương trình được cất
vào trong Stack, trong khi một số thanh ghi quan trọng sẽ không được cất và có thể bị
thay đổi giá trị trong quá trình thực thi chương trình ngắt. Điều này nên được xử lí
bằng chương trình để tránh hiện tượng trên xảy ra.
SVTH : Bùi Tấn Tài – CCVT03A
38
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
CHƯƠNG 3. THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG CẢM
BIẾN VÀ PHÁT CẢNH BÁO MỰC NƯỚC, NHIỆT ĐỘ QUA
MẠNG TIN NHẮN SMS
3.1 GIỚI THIỆU MODULE SIM900, TẬP LỆNH AT COMMAND.
3.1.1 Giới thiệu module SIM900
Các modem được sử dụng từ những ngày đầu của sự ra đời máy tính. Từ Modem
là một từ được hình thành từ hai từ modulator và demodulator. Và định nghĩa đặc
trưng này cũng giúp ta hình dung được phần nào là thiết bị này sẽ làm cái gì. Dữ liệu
số thì đến từ một DTE, thiết bị dữ liệu đầu cuối được điều chế theo cái cách mà nó có
thể được truyền dữ liệu qua các đường dây truyền dẫn. Ở một mặt khác của đường
dây, một modem khác thứ hai điều chế dữ liệu đến và xúc tiến, duy trì nó.
Các modem ngày xưa chỉ tương thích cho việc gữi nhận dữ liệu. Đễ thiết lập một
kết nối thì một thiết bị thứ hai như một dialer thì được cần đến. Đôi khi kết nối cũng
được thiết lập bằng tay bằng cách quay số điện thoại tương ứng và một khi modem
được bật thì kết nối coi như được thực thi. Các máy tính loại nhỏ ở các năm 70 thâm
nhập vào thị trường là các gia đình, cùng với chi phí thì sự thiếu hụt về kiến thức kỹ
thuật trở thành một vấn đề nan giải.
Một modem GSM là một modem wireless, nó làm việc cùng với một mạng
wireless GSM. Một modem wireless thì cũng hoạt động giông như một modem quay
số. Điểm khác nhau chính ở đây là modem quay số thì truyền và nhận dữ liệu thông
qua một đường dây điện thoại cố định trong khi đó một modem wireless thì việc gữi
nhận dữ liệu thông qua sóng.
Giống như một điện thoại di động GSM , một modem GSM yêu cầu 1 thẻ sim
với một mạng wireless để hoạt động.
Module Sim900 là một trong những loại modem 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 hệ thống
GSM/GPRS hoạt động ở băng tầng EGSM 900Mhz, DCS 1800 Mhz và PCS
1900Mhz, tính năng GPRS của Sim900 có nhiều lớp
SVTH : Bùi Tấn Tài – CCVT03A
39
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
8 lớp điện dung
10 lớp điện dung
Và hỗ trợ GPRS theo dang đồ thị mã hóa CS-1, CS-2, CS-3 và CS-4.
3.1.2 Đặc điểm của module SIM900
1. Nguồn cung cấp khoảng 3,4 – 4,5V
2. Nguồn lưu trữ
3. 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 Pha 2/2+
4. Loại GSM là loại MS nhỏ
5. 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 ( tự động )
6. Giới hạn nhiêt độ:
Bình thường -300C tới +700C
Hạn chế : - 350C tới -300C và +700C tới +800C
Nhiệt độ bảo quản: -450C tới 850C
7. Dữ liệu GPRS:
GPRS dữ liệu tải xuống: Max 85.6 kbps
GPRS dữ liệu úp lên: Max 41.8 kbps
Sơ đồ mã hóa: CS-1, CS-2, CS-3 và CS-4
Sim900 hổ trợ giao thức PAP ,kiểu sử dụng kết nối PPP
Sim900 tích hợp giao thức TCP/IP
Chấp nhận thông tin được điều chỉnh rộng rãi
8. CSD:
Tốc độ truyền dẫn CSD: 2; 4; 8; 9; 6; 14 KPPS
Hỗ trợ USSD
9. SMS:
MT, MO, CB, Text and PDU mode
Bộ nhớ SMS: Sim, card
10. FAX:
SVTH : Bùi Tấn Tài – CCVT03A
40
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Nhóm 3 loại 1
11. Sim card:
Hỗ trợ sim card: 1,8v ; 3v
12. Anten ngoài:
Kết nối thông qua anten ngoài 500km hoặc đế anten
13. Âm thanh:
Dạng mã hóa âm thanh.
Mức chế độ (ETS 06.20)
Toàn bộ chế độ (ETS 06.10)
Toàn bộ chế độ tăng cường (ETS 06.50/ 06.06/ 06.80)
Loại bỏ tiếng dội.
14. Giao tiếp nối tiếp và sự ghép nối:
Cổng nối tiếp: 7 Cổng nối tiếp( ghép nối)
Cổng kết nối có thể sử dụng với CSD Fax, GPRS và gửi lệnh ATCommand tới
mudule điều khiển
Cổng nối tiếp có thể Sd chức năng giao tiếp
Hỗ trợ tốc độ truyền 1200 BPS tới 115200 BPS
Cổng hiệu chỉnh lỗi: 2 cổng nối tiếp TXD và RXD
Cổng hiệu chỉnh lỗi chỉ sử dụng sữa lỗi
15. Quản lý danh sách:
Hỗ trợ mẫu danh sách: SM, FD, LD, RC,ON, MC
16. Sim Application toolkit:
Hỗ trợ SAT loại GSM 11,14 bản 99
17. Đồng hồ thời gian thực:
Người cài đặt
18. Times function:
Lập trình thông qua AT Command
19. Đặc tính vật lý (đặc điểm):
Kích thước 50±0.15 x 33±0.15 x7.7±0.3mm
Nặng 13.8 g
SVTH : Bùi Tấn Tài – CCVT03A
41
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Hình 3.1 Module Sim900
3.1.3 Khảo sát sơ đồ chân và chức năng từng chân
Hình 3.2 Sơ đồ chân của Module Sim900
Bảng 3.1 Bảng mô tả các chức năng từng chân của SIM900
Tên chân Thứ tự Mô tả chức năng và các đặc tính
chân
VBAT chân của chip được dành riêng để kết nối tới nguồn cung 1
cấp, nguồn cung cấp của Sim900 là nguồn đơn VDAT là 3,4 3
5 V – 4,5 V
7
9
GND 2 Chân GND
4
6
SVTH : Bùi Tấn Tài – CCVT03A
42
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
8
10
11 VCHG
12 ADC Chân vào của bộ chuyển đổi tín hiệu tương tự sang số
13 TEMP-BAT
14 VRTC
15 VCC-EXT
16 NETLIGHT đầu ra dùng để chỉ báo mạng kết nối được hệ thống
17 PWRKEY chân này dùng để điều khiển hệ thống bật/tắt
18 KBC Kết nối bàn phím
20
22
24
26
19 STATUS báo trình trạng công việc
21 GPIO input/output port
35
23 BUZZER đầu ra chuông
25 SIM VCC nguồn cung cấp cho thẻ sim
27 SIM RST chân reset cho mạch sim
28 KBR chân kết nối với bàn phím
30
32
34
36
29 SIM DATA đầu ra dữ liệu chân sim
32 SIM CLK chân thời gian của sim
33 SIM chân dò tìm mạng
PRESENCE
37 DCD
38 DISP CS
SVTH : Bùi Tấn Tài – CCVT03A
43
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
DISP CLK 40
DISP DATA 42
DISP D/C 44
DISP RST 46 chân ra giao tiếp với màng hình
DTR 39 chân đầu cuối dữ liệu
RXD 41 chân nhận dữ liệu
TXD 43 chân truyền dữ liệu
RTS 45
CTS 47
RI 49
DBG RXD 48 đầu ra dùng để điều chỉnh trong nhận dữ liệu
DBG TXD 50 đầu ra dùng để điều chỉnh trong truyền dữ liệu
AGND 51 Chân GND
52
SPK1P 53 chân output
SPK1N 55
SPK2P 57
SPK2N 59
MIC1P 54 chân input
MIC1N 56
MIC2P 58
MIC2N 60
Ghi chú: I = input ; O = output ; I/O = input/output
3.1.4 Khảo sát tập lệnh AT của module SIM900
Các modem được sử dụng từ những ngày đầu của sự ra đời của máy tính. Từ
Modem là một từ được hình thành từ hai từ modulator và demodulator. Và định nghĩa
đặc trưng này cũng giúp ta hình dung được phần nào là thiết bị này sẽ làm cái gì. Dữ
liệu số thì đến từ một DTE, thiết bị dữ liệu đầu cuối được điều chế theo cái cách mà nó
có thể được truyền dữ liệu qua các đường dây truyền dẫn. Ở một mặt khác của đường
dây, một modem thứ hai điều chế dữ liệu đến và xúc tiến, duy trì nó.
SVTH : Bùi Tấn Tài – CCVT03A
44
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Khi chúng ta xem trong RS232 port layout thì chuẩn RS232 miêu tả một kênh
truyền thông với bộ kết nối 25 chân DB25, nó được thiết kế để thực thi quá trình
truyền các lệnh đến modem được kết nối với nó. Thao tác này bao gồm cả các lệnh
quay một số điện thoại nào đó. Không may đó là các quá trình dùng RS232 với chi phí
thấp này chỉ thể hiện trên các máy tính ở các hộ gia đình trong những năm 70, và kênh
truyền thông thứ 2 không được thực thi. Thế nên nhất thiết phải có một phương pháp
được thiết lập để sử dụng kênh dữ liệu hiện tại để không chỉ truyền dữ liệu từ một
điểm đầu cuối này tới một điểm đầu cuối khác mà nó còn nhắm tới modem duy nhất.
Dennis Hayes đã đưa ra giải pháp cho vấn đề này trong năm 1977. Modem thông minh
( Smartmodem ) của ông sử dụng chuẩn truyền thông RS232 đơn giản kết nối tới một
máy tính để truyền cả câu lệnh và dữ liệu. Bởi vì mõi lệnh bắt đầu với chữ AT trong
chữ Attention nên ngôn ngữ điều khiển được định nghĩa bởi Hayes nhanh chóng được
biết đến với bộ lệnh Hayes AT. Chính vị sự đơn giản và khả năng thực thi với chi phí
thấp của nó, bộ lệnh Hayes AT nhanh chóng được sử dụng phổ biến trong các modem
của các nhà sản xuất khác nhau. Khi chức năng và độ tích hợp của các modem ngày
càng tăng cùng thời gian, nên làm cho ngôn ngữ lệnh Hayes AT càng phức tạp. Vì thế
nhanh chóng mỗi nhà sản xuất modem đã sử dụng ngôn ngữ riêng của ông ấy. Ngày
nay bộ lệnh AT bao gồm cả các lệnh về dữ liệu, fax, voice và các truyền thông SMS
Các lệnh AT là các hướng dẫn được sử dụng để điều khiển một modem. AT là
một cách viết gọn của chữ Attention. Mỗi dòng lệnh của nó bắt đầu với “AT” hay “at”.
Đó là lý do tại sao các lệnh modem được gọi là các lệnh AT. Nhiều lệnh của nó được
sử dụng để điều khiển các modem quay số sử dụng dây mối (wired dial-up modems),
chẳng hạn như ATD (Dial), ATA (Answer), ATH (Hool control) và ATO (return to
online data state), cũng được hỗ trợ bởi các modem GSM/GPRS và các điện thoại di
động.
Bên cạch bộ lệnh AT thông dụng này, các modem GSM/GPRS và các điện thoại
di động còn được hỗ trợ bởi một bộ lệnh AT đặc biệt đối với hệ thống GSM. Nó bao
gồm các lệnh liên quan tới SMS như AT+ CMGS (gửi tin nhắn SMS), AT+CMSS
(gửi tin nhắn SMS từ một vùng lư trữ), AT+CMGL (chuỗi liệt kê các tin nhắn SMS)
và AT+CMGR (đọc tin nhắn SMS).
SVTH : Bùi Tấn Tài – CCVT03A
45
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Ngoài ra, các modem GSM còn hỗ trợ một bộ lệnh AT mở rộng. Những lệnh AT
mở rộng này được định nghĩa trong các chuẩn của GSM. Với các lệnh AT mở rộng
Đọc,viết, xóa tin nhắn
Gửi tin nhắn SMS
Kiểm tra chiều dài tín hiệu
Kiểm tra trạng thái sạc bin và mức sạc của bin.
Đọc, viết và tìm kiếm về các mục danh bạ
này,bạn có thể làm một số thứ như sau:
Số tin nhắn SMS có thể được thực thi bởi một modem SMS trên một phút thì rất
thấp, nó chỉ khoảng từ 6 đến 10 tin nhắn SMS trên 1 phút.
MODULE Sim900
3.2 XÂY DỰNG HỆ THỐNG
VI ĐIỀU KHIỂN PIC16F877A
KHỐI NGUỒN
S M S
KHỐI CẢM BIẾN
K h ố i G i a o T i ế p
MOBILE
Hình 3.3 Sơ đồ khối hệ thống
CHỨC NĂNG TỪNG KHỐI:
* Khối giao tiếp SMS
Có chức năng gửi nhận tin nhắn SMS cho việc điều khiển các thiết bị. Khối này
cần 1 thiết bị điện thoại di động và 1 Module Sim900
- Thiết bị điện thoại di động : dành cho người sử dụng. Người sử dụng cần phải
đăng kí dịch vụ viễn thông đối với các nhà cung cấp dịch vụ trong nước.
SVTH : Bùi Tấn Tài – CCVT03A
46
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
- GSM Module Sim900 : Module này phải được gắn Sim của nhà cung cấp dịch
vụ và cũng cần phải có chức năng như một điện thoại di động để kết nối với vi điều
khiển PIC16F877A . Cái này được đặt cố định và thường xuyên kết nối với
Pic16F877A.
* Khối xử lý phần cứng
Khối xử lý phần cứng là khối trung tâm trong việc xử lý và điều khiển phần
cứng. Khối do một vi điều khiển PIC16F877A đảm nhận và có nhiệm vụ gửi nhận dữ
liệu với Module Sim900 một cách liên tục. Khi Module Sim900 gửi thông tin điều
khiển thì Khối xử lý phần cứng sẽ được lập trình để thực thi. Vi điều khiển có nhiệm
vụ giao tiếp với khối cảm biến hồng ngoại.
* Khối cảm biến
o Hồng ngoại
Là một Led phát và một Led thu hồng ngoại. Led phát là một Led hồng ngoại .
Khi mã lệnh có giá trị bit = ‘1’ thì Led phát hồng ngoại trong khoảng thời gian T của
bit đó . Khi mã lệnh có giá trị bit= ‘0’ thì Led không sáng . Do đó bên thu không nhận
được tín hiệu xem như bit = ‘0’. Led thu : Tia hồng ngoại từ phần phát được tiếp nhận
bởi Led thu hồng ngoại
o Nhiệt độ
Sử dụng ICLM35 là một cảm biến nhiệt độ hiệu chỉnh với độ chính xác 1 °
C. Khoảng đo từ -55 ° C đến 150 ° C. Đầu ra là tuyến tính và mỗi độ C bằng 10mV, do
đó:
- 150 ° C = 1500mV
- -40 ° C =-400mV
3.3 THIẾT KẾ PHẦN CỨNG
3.3.1 Cảm biến
3.3.1.1 Led phát
Led phát được nối trực tiếp lên nguồn 5v của mạch
Led phát phải chiếu trực tiếp vào led thu để đảm bảo giao tiếp được với nhau tốt
nhất
SVTH : Bùi Tấn Tài – CCVT03A
47
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
3.3.1.2 Led thu
Hình 3.4 Sơ đồ mạch led thu với bộ so sánh tương đương
Mạch gồm 4 bộ so sánh tương đương với một IC LM324, 4 led thu và 4 biến trở
Khi led phát chiếu trực tiếp vào led thu sẽ có tín hiệu vào cực dương của bộ so
sánh. Tại cực âm của bộ so sánh sẽ có điện áp tham chiếu tạo ra bởi biến trở, tùy vào
mức độ ánh sáng từ led phát đến led thu mà chúng ta điều chỉnh biến trở để cảm biến
không bị ảnh hưởng bởi ánh sáng bên ngoài. Tín hiệu sau khi ra bộ so sánh sẽ được
truyền tới bộ vi xử lý, tín hiệu này có mức tin cậy cao
3.3.1.3 Cảm biến nhiệt độ LM35
Hình 3.5 Sơ đồ mạch cảm biến nhiệt độ LM35
SVTH : Bùi Tấn Tài – CCVT03A
48
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Đây là những cảm biến để đo nhiệt độ môi trường sử dụng LM35. Các đầu ra của
cảm biến được đưa vào bộ MUX. Các đặc điểm chung của cảm biến nhiệt độ LM35
như sau
+ Chân 1 : Chân nguồn đầu vào Vcc
+ Chân 2 : Chân đầu ra Vout
+ Chân 3 : Chân nối GND
Cảm biến LM35 là bộ cảm biến nhiệt mạch tích hợp chính xác cao mà điện áp
đầu ra của nó tỷ lệ tuyến tính với nhiệt độ theo thang độ Celsius. Chúng cũng không
yêu cầu cân chỉnh ngoài vì vốn chúng đã được cân chỉnh
Đặc điểm chính của cảm biến LM35
+ Điện áp đầu vào từ 4V đến 30V
+ Độ phân giải điện áp đầu ra là 10mV/oC
+ Độ chính xác cao ở 25 C là 0.5 C
+ Trở kháng đầu ra thấp 0.1 cho 1mA tải
Dải nhiệt độ đo được của LM35 là từ -55 C - 150 C với các mức điện áp ra khác
nhau. Xét một số mức điện áp sau :
- Nhiệt độ -55 C điện áp đầu ra -550mV
- Nhiệt độ 25 C điện áp đầu ra 250mV
- Nhiệt độ 150 C điện áp đầu ra 1500mV
3.3.2 Nguồn cung cấp cho hệ thống
Hình 3.6 Sơ đồ mạch nguồn cung cấp cho hệ thống
- Dùng IC LM2576 để tạo ra nguồn 3.3V cho mạch và đảm bảo điện áp ra cung
cấp cho mạch luôn ổn đinh.
SVTH : Bùi Tấn Tài – CCVT03A
49
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
- Dùng các tụ hóa ở đầu vào và đầu ra để lọc nhiễu cho nguồn vào và nguồn ra
của bộ tạo nguồn, chọn tụ đầu vào là 100 uF và đầu ra là 1000 uF
- Dùng đèn led để hiển trị trạng thái của nguồn.
3.3.3 Đèn báo
Hình 3.7 Sơ đồ mạch dèn báo hiệu
Các đèn D9 D10 D11 D12 hiển thị 4 mức cảm biến. Khi led thu nhận được ánh
sáng từ led phát thì tương ứng mỗi cặp led cảm biến, đèn báo hiệu sẽ sáng lên
Các đèn D8 D3 RV8 hiển thị nguồn vào và hiển thị khi module gửi tin nhắn
SVTH : Bùi Tấn Tài – CCVT03A
50
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
3.3.4 Vi điều khiển PIC 16F877A
Hình 3.8 Sơ đồ mạch vi điều khiển PIC16F877A
Khi nhận được tín hiệu cảm biến hồng ngoại và cảm biến nhiệt đọ, vi điều khiển
sẽ xử lý tín hiệu rồi giao tiếp với GSM để làm nhiệm vụ phát tin nhắn với nội dung và
lệnh được lập trình sẵng.
GSM có nhiệm vụ phát tin nhắn như chiếc điện thoại di động bình thường, nó sẽ
phát đi tin nhắn với nội dung cảnh báo qua điện thoại di động của người giám sát
SVTH : Bùi Tấn Tài – CCVT03A
51
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
3.3.5 Sơ đồ mạch
Hình 3.9 Sơ đồ mạch cảm biến hồng ngoại
SVTH : Bùi Tấn Tài – CCVT03A
52
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
3.4. LƯU ĐỒ GIẢI THUẬT
3.4.1. Lưu đồ giải thuật tổng quát chương trình chính
Bắt đầu
Khai báo biến
Khởi tạo SPI
Khởi tạo thanh ghi
Khởi tạo ngắt timer
Thiết lập ADC
Khởi tạo cấu hình GSM
Kiểm tra mực nước và đo nhiệt độ
Gửi tin nhắn
Kết thúc
SVTH : Bùi Tấn Tài – CCVT03A
53
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Bắt đầu
Đọc dữ liệu
3.4.2 Lưu đồ thuật toán chương trình con kiểm tra mực nước
Đ
Sensor1==1 Num_count1==0
Gửi tin nhắn Num_count1++ Num_count2==0 Num_count3==0 Num_count4==0
S
Đ
Sensor2==1 Num_count2==0
Gửi tin nhắn Num_count2++ Num_count3==0 Num_count4==0
S
Đ
Sensor3==1 Num_count3==0
Gửi tin nhắn Num_count3++ Num_count4==0
S
Đ
Gửi tin nhắn Num_count4++
Sensor4==1 Num_count4==0
S
Kết thúc
SVTH : Bùi Tấn Tài – CCVT03A
54
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
3.4.3 Lưu đồ giải thuật chương trình con Cấu hình GSM
Bắt Đầu
Gửi Lệnh AT
Đ
S
Gửi lệnh AT + CMGF = 1 (Chuyển sang dạng Text)
S
Gửi lệnh AT&W (Lưu cấu hình)
Xóa Bộ Đệm BUFFER
Đ
Kết Thúc
SVTH : Bùi Tấn Tài – CCVT03A
55
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
3.4.4 Lưu đồ giải thuật chương trình gửi tin nhắn
Bắt đầu
Đọc dữ liệu
S
Đ
Index==0
Gửi tin nhắn: Hệ thống sẵn sàng hoạt động
S
Đ
Index==1
Gửi tin nhắn: Mực nước hiện tại là 1 và nhiệt độ hiện tại là temp
S
Đ
Index==2
Gửi tin nhắn: Mực nước hiện tại là 2 và nhiệt độ hiện tại là temp
S
Đ
Index==3
Gửi tin nhắn: Mực nước hiện tại là 3 và nhiệt độ hiện tại là temp
S
Đ
Gửi tin nhắn: Mực nước hiện tại là 4 và nhiệt độ hiện tại là temp
Index==4 S
Index==5
Gửi tin nhắn: Mực nước hiện tại là bình thường và nhiệt độ là temp
Kết thúc
SVTH : Bùi Tấn Tài – CCVT03A
56
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
CHƯƠNG 4. KẾT QUẢ ĐẠT ĐƯỢC CỦA HỆ THỐNG
4.1 KẾT QUẢ ĐẠT ĐƯỢC
Hệ thống mạch báo lũ lụt qua tin nhắn điện thoại đã đạt được nhu ý muốn, hệ
thống đã thực hiện tốt việc báo mực nước (gồm 4 mức) theo ý muốn, đã nhận được dữ
liệu và phát tin nhắn thành công
Đầu tiên khi đổ nước vào ngăn chứa nước, vật cản led hồng ngoại sẽ nổi lên theo
nước. Khi vật cản che hai led phát và led thu của mức đầu tiên, mạch cảm biến đã so
sánh và hoàn thành nhiệm vụ để chuyển tín hiệu qua cho vi xử lý làm việc sau đó vi
điều khiển sẽ giao tiếp với module Sim900 và phát cảnh báo thành công tới số điện
thoại đã định sẵng với mức nước đầu tiên. Sau đó những mức nước còn lại cũng đã gửi
tin nhắn thành công.
Mạch cảm biến đã hoàn thành được công việc của nó là đưa tín hiệu mỗi mức
mực nước về cho vi xử lý
Mạch GSM đã xử lý được các thông tin mà mạch cảm biến đưa về để xử lý và
giao tiếp với module Sim900 và phát được tin nhắn cảnh báo tới người dám sát
4.2 HÌNH ẢNH HOẠT ĐỘNG
Hình 4.1 Hệ thống được cấp nguồn và sẵng sàng hoạt động
SVTH : Bùi Tấn Tài – CCVT03A
57
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Sau khi cấp nguồn, GSM sẽ nhận mạng và Sim, sau khi nhận thành công hệ
thống sẽ gửi tin nhắn qua số điện thoại đã được lập trình sẵng với nội dung: Hệ thống
sẵn sàng hoạt động
Hình 4.2 Tin nhắn đã được gửi tới điện thoại
SVTH : Bùi Tấn Tài – CCVT03A
58
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Hình 4.3 Cảm biến đầu tiên hoạt động khi đổ nước vào
Khi đổ nước vào khay đựng nước led màu xanh lá cây đầu tiên không sáng
tương ứng với cảm biến của mực nước đầu tiên
Hệ thống sẽ gửi tin nhắn với nội dung: Mực nước hiện tại là mức 1 và nhiệt độ
hiện tại là 30 oC (nhiệt độ tùy vào môi trường mà hệ thống đang hoạt động)
Hình 4.4 Tin nhắn đã được gửi tới điện thoại
SVTH : Bùi Tấn Tài – CCVT03A
59
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Hình 4.5 Cảm biến thứ hai hoạt động khi đổ nước vào
Khi tiếp tục đổ nước vào thì led màu xanh lá cây thứ hai không sáng tương ứng
với cảm biến mực nước thứ hai
Hệ thống sẽ gửi tin nhắn với nội dung: mực nước hiện tại là mức 2 và nhiệt độ
hiện tại là 30 oC
Hình 4.6 Tin nhắn đã được gửi tới điện thoại
SVTH : Bùi Tấn Tài – CCVT03A
60
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Hình 4.7 Cảm biến thứ ba hoạt động khi đổ nước vào
Mực nước lúc này là mực nước thứ ba Hệ thống thông báo mực nước hiện tại là 3 và nhiệt độ hiện tại là 30oC
Hình 4.8 Tin nhắn đã được gửi tới điện thoại
SVTH : Bùi Tấn Tài – CCVT03A
61
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Hình 4.9 Cảm biến thứ tư hoạt động khi đổ nước vào
Khi mực nước lên mức thứ tư thì hệ thống sẽ nhắn tin với nội dung: mực nước
hiện tại là 4 và nhiệt độ hiện tại là 30 oC
Hình 4.10 Tin nhắn đã được gửi tới điện thoại
SVTH : Bùi Tấn Tài – CCVT03A
62
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
* Ngoài ra hệ thống còn phát tin nhắn nguội cảnh báo lặp lại, cứ mỗi 1 phút hệ
thống sẽ phát tin nhắn cảnh tình trạng hệ thống lúc đó như thế nào.
* Nếu chưa đổ nước vào thì sau mỗi 1 phút hệ thống sẽ gửi tin nhắn với nội
dung: mực nước hiện tại là bình thường và nhiệt độ hiện tại là 30 oC
Hình 4.11 Tin nhắn đã được gửi tới điện thoại
SVTH : Bùi Tấn Tài – CCVT03A
63
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
KẾT LUẬN
Qua thời gian nghiên cứu, thi công, đồ án đã cơ bản được hoàn thành. Bằng sự nỗ
lực cố gắng của bản thân và sự phân chia công việc hợp lí, chặt chẽ, phù hợp thời gian,
bên cạnh đó còn là sự hướng dẫn nhiệt tình, tận tâm của thầy Trần Trung Tín, đồ á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ệ giám sát mực nước, nhiệt độ bằng tin nhắn SMS.
Trong quá trình thực hiện đề tài, em đã thu được những kết quả nhất định như sau:
Mạch điện với các module nhỏ trên mạch được thiết kế, thi công hoàn chỉnh
và đã được thử nghiệm nhiều lần và đã thoạt động ổn định trong thực tế.
Xây dựng được mô hình giám sát mực nước, nhiệt độ qua tin nhắn điện
thoại
Trong đồ án này, em đã trình bày về chức năng, cấu trúc của từng khối module
nhỏ 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 module 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.
Tuy nhiên đề tài có có nhiều hạn chế mà em chưa đi sâu vào nghiên cứu như:
+ Hệ thống chỉ dừng lại ở việc chỉ phát tin nhắn cảnh báo mực nước và phát cảnh
báo nguội sau mỗi 1 phút.
+ Hệ thống chưa thể phát tin nhắn báo mực nước đang giảm
+ Chưa thể xử lý cuộc gọi và tin nhắn trả lại từ người quản lí.
+ Không thể tự reset lại chương trình khi bị lỗi
Ngoài ra ứng dụng của hệ thống GSM Sim900 còn rất nhiều như là: điều khiển
thiết bị trong nhà, điều khiển vận hành các thiết bị từ xa, báo cháy từ xa, báo khí hậu
thời tiết, v.v…
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 quan tới đề tài. Sau này em sẽ cố gắng học hỏi và phát triển hệ thống trở nên
hiện đại hơn
SVTH : Bùi Tấn Tài – CCVT03A
64
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
TÀI LIỆU THAM KHẢO
TÀI LIỆU TIẾNG VIỆT
[ 1 ]. Ngô Hải Bắc ,Lập trình giao tiếp máy tính qua cổng RS232,
www.dientuvietnam.net, (2009).
[ 2 ]. Nguyễn Tăng Cường, Phan Quốc Thắng, Cấu trúc và lập trình họ vi
điều khiển 8051 , Nhà xuất bản Khoa học và Kỹ thuật, Hà Nội, (2005)
[ 3 ]. Phạm Minh Hà, Kỹ thuật mạch điện tử , Nhà xuất bản Khoa học và Kỹ
thuật, Hà Nội, (2005).
[ 4 ]. Đỗ Xuân Thụ, Kỹ thuật điện tử, Nhà xuất bản Giáo dục, Hà Nội,
(2000).
[ 5 ]. Trần Xuân Trường, Tài liệu sử dụng CCS, www.picvietnam.com,
(2009).
[ 6 ]. Giáp Văn Vỹ, Lập trình C cho PIC, www.picvietnam.com , (2007).
MỘT SỐ TRANG WEB THAM KHẢO
[ 7 ]. www.alldatasheet.com
[ 8 ]. www.dientuvietnam.com
[ 9 ]. www.google.com.vn
[ 10 ]. www.hlab.com.vn
[ 11 ]. www.picvietnam.com
[ 12 ]. www.4tech.com.vn
SVTH : Bùi Tấn Tài – CCVT03A
65
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
PHỤ LỤC
1. TẬP LỆNH AT CỦA MODULE
1.1 Các lệnh khởi tạo GSM Module Sim900
Lệnh AT
Nếu lệnh thực hiện đựợc thì trả về:
Ok
Bắt đầu thực hiện các lệnh tiếp theo.
Nếu lệnh không thực hiện được thì trả về dạng:
+CMS ERROR
Lệnh AT+CMGF=[
Nếu lệnh thực hiện đựợc thì trả về:
Ok
1 dạng dữ liệu kiểu text
Nếu lệnh không thực hiện được thì trả về dạng:
+CMS ERROR
Lệnh AT&W[
Nếu lệnh thực hiện đựợc thì trả về:
Ok
Lưu cấu hình cho GSM Module Sim900
Nếu lệnh không thực hiện được thì trả về dạng:
+CMS ERROR
Lệnh ATE[
Nếu lệnh thực hiện đựợc thì trả về:
Ok
1 Bật chế độ Echo
Nếu lệnh không thực hiện được thì trả về dạng:
+CMS ERROR
1.2 Các lệnh về SMS
Lệnh Xóa tin nhắn
AT+CMGD
SVTH : Bùi Tấn Tài – CCVT03A
66
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
Ví dụ: muốn xóa một tin nhắn nào đó được lưu trên sim thì ta thực hiện lệnh sau.
AT+CMGD=
Nếu lệnh thực hiện đựợc thì trả về:
Ok
Nếu lệnh không thực hiện được thì trả về dạng:
+CMS ERROR
Lệnh đọc tin nhắn:
AT+CMGR=
1 dạng dữ liệu kiểu text
Nếu như lệnh được thực hiện thì kiểu dữ liệu trả về dưới dạng text ( mode=1):
Từ SMS-DELIVER:
+CMGR: >, Từ SMS-SUBMIT: +CMGR: >, Từ SMS-STATUS-REPORTs: +CMGR: Từ SMS-COMMANDs: +CMGR: Từ CBM storage +CMGR: Nếu dữ liệu trả về dạng PDU(mode=0): +CMGR: Nếu lệnh bị lỗi thì trả về dưới dạng: +CMS ERROR: Lệnh gửi tin nhắn SMS: AT+CMGS Nếu gửi tin nhắn dưới dạng text: (+CMGF=1): +CMGS= Nếu gửi tin nhắn dạng PDU: (+CMGF=0): +CMGS= Lệnh được thực hiện thành công thi dữ liệu trả về: Dạng text : +CMGS: OK Dạng PDU : +CMGS: OK Lệnh bị lổi : +CMS ERROR: Lệnh viết tin nhắn rồi lưu vào ngăn nhớ: AT+CMGW Nếu viết tin nhắn dưới dạng text : AT+CMGW=[ Z/ESC> Lệnh được thực hiện đúng thì dữ liệu trả về dạng: +CMGW: OK Lệnh sai: +CMS ERROR: Nếu viết tin nhắn dưới dạng PDU: AT+CMGW= Lệnh gửi tin nhắn từ một ngăn nhớ nào đó: AT+CMSS= Nếu lệnh được thực hiện thành công dữ liệu trả về dạng: Dạng text: +CMGS: OK Dạng PDU: +CMGS: OK Nếu lệnh bị lỗi: +CMS ERROR: Lệnh báo hiệu tin nhắn mới: AT+CNMI=[ Nếu lệnh được thưch hiện đúng thì dữ liệu trả về dạng: OK Nếu lệnh bị lỗi: +CMS ERROR: 1.3 Các lệnh khác Lệnh nghỉ AT+CFUN Ví dụ muốn tắt hết chức năng liên quan đến truyền nhận sóng RF và các chức năng liên quan đến sim thì gõ lệnh: AT+CFUN=0 OK Lệnh chuyển từ chế độ nghỉ sang chế độ hoạt động bình thường AT+CFUN Ví dụ sim đang ở chế độ nghỉ ta muốn chuyển sang chế độ hoạt động bình thường thi gõ lệnh: AT+CFUN=1 OK Lệnh reset mode ATZ OK Lệnh tắt chế độ echo ATE0 1.4 Các lệnh kiểm tra ban đầu - Lấy thông tin cơ bản về điện thoại di động hay modem GSM/GPRS. Ví dụ như tên của nhà sản xuất (AT+CGMI), số model (AT+CGMM), số IMEI (International Mobile Equipment Identity) (AT+CGSN) và phiên bản phần mềm (AT+CGMR). - Lấy các thông tin cơ bản về những người kí tên dưới đây. Thí dụ, MSISDN (AT+CNUM) và số IMS (International Mobile Subscriber Identity) (AT+CIMI). - Lấy thông tin trạng thái hiện tại của điện thoại di động hay modem GSM/GPRS. Ví dụ như trạng thái hoạt động của điện thoại (AT+CPAS), trạng thái đăng kí mạng mobile (AT+CREG), chiều dài sóng radio (AT+CSQ), mức sạc bin và trạng thái sạc bin (AT+CBC). - Đọc (AT+CPBR), viết (AT+CPBW) hay tìm kiếm (AT+CPBF) các mục về danh bạ điện thoại (phonebook). - Thực thi các nhiệm vụ liên quan tới an toàn, chẳng hạn như mở hay đóng các khóa chức năng (AT+CLCK), kiểm tra xem một chức năng được khóa hay chưa (AT+CLCK) và thay đổi password (AT+CPWD). - Điều khiển hoạt động của các mã kết quả/các thông báo lỗi của các lệnh AT. Ví dụ, bạn có thể điều khiển cho phép hay không cho phép kích hoạt hiển thị thông báo lỗi (AT+CMEE) và các thông báo lỗi nên được hiển thị theo dạng số hay theo dạng dòng chữ (AT+CMEE=1 hay AT+CMEE=2). - Thiết lập hay thay đổi cấu hình của điện thoại di dộng hay modem GSM/GPRS. Ví dụ, thay đổi mạng GSM (AT+COPS), loại dịch vụ của bộ truyền tin (AT+CBST), các thông số protocol liên kết với radio (AT+CRLP), địa chỉ trung tâm SMS (AT+CSCA) và khu vực lưu trữ các tin nhắn SMS (AT+CPMS). - Lưu và phục hồi các cấu hình của điện thoại di động hay modem GSM/GPRS. Ví du, lưu (AT+COPS) và phục hồi (AT+CRES) các thiết lập liên quan tới tin nhắn SMS chẳng hạn như địa chỉ trung tâm tin nhắn SMS. 2. CODE #include "..\Include/pic_gsm_demo.h" #include "myLCD16x2.c" #include #define Led0 PIN_C1 #define Led1 PIN_C2 #define GSM_PW PIN_E2 #define GSM_SENSE PIN_E1 #define TEXTMODE 5; #define PDUMODE 0; #define UART_emptyIn() {RxHead=0;RxTail=0;} #define RXBUFSIZE 70 #define TIME_OUT (int32)5000000 #define PHONE_NUM "01214522546" int16 delay_100; char timed_getc(void); int1 frame_get; int1 new_frame; void GSM_init(void); void GSM_start(void); void GSM_sync(void); void GSM_sel_mess_mode(char mode); int UART_getc_timeout(); int UART_getc_blocking(); unsigned int check_new_message(); int read_message(); int RxBuf[RXBUFSIZE]; int RxHead = 0; void UART_ISR()//source from MDK8051 project { char c; c=getc(); RxBuf[RxHead] = c; RxHead++; if (RxHead > (RXBUFSIZE - 1))// check for wrap around. RxHead = 0; } #int_TIMER0 TIMER0_isr() { if(delay_100 < 40) delay_100++; else { counter++; delay_100=0; output_toggle(Led0); adc=read_adc(); if((counter>60)&&(adc!=old_value)) { counter=0; enable=1; } old_value += Filter*(adc - old_value); } return 0; } #INT_RDA void rda() { UART_ISR(); } void GSM_init(void) { output_bit(GSM_PW,1); output_bit(Led1,1); output_float(GSM_SENSE); } void GSM_start(void) { //start up GSM module delay_ms(2000); lcd_init(); output_bit(GSM_PW,0); output_bit(Led1,0); delay_ms(2000); output_bit(GSM_PW,1); output_bit(Led1,1); lcd_putc("\nGSM initializing"); delay_ms(5000); lcd_putc("\nPlease wait......."); delay_ms(5000); lcd_putc("\n..to init Sim900"); delay_ms(5000); lcd_putc("\nPlease wait......."); delay_ms(5000); lcd_putc("\n..to init Sim900"); delay_ms(5000); lcd_putc("\nPlease wait......."); delay_ms(5000); lcd_putc("\n..to init Sim900"); } void GSM_sync(void) { putc(13);//enter CR delay_ms(1000); output_bit(Led1,0); new_frame=0; frame_get=0; printf("AT"); putc(13);//enter CR delay_ms(1000); printf("AT"); putc(13);//enter CR delay_ms(1000); printf("AT"); putc(13);//enter CR delay_ms(1000); } void GSM_sel_mess_mode(char mode) { if(mode>0) //text mode { output_bit(Led1,0); printf("AT+CMGF=1"); putc(13);//enter CR output_bit(Led1,1); delay_ms(1000); output_bit(Led1,0); printf("AT+CMGF=1"); putc(13);//enter CR output_bit(Led1,1); delay_ms(1000); output_bit(Led1,0); } else //PDU mode { output_bit(Led1,0); printf("AT+CMGF=0"); putc(13);//enter CR output_bit(Led1,1); delay_ms(1000); output_bit(Led1,0); printf("AT+CMGF=0"); putc(13);//enter CR output_bit(Led1,1); delay_ms(1000); output_bit(Led1,0); } } void lcd_display() { if(old_value !=new_value) { lcd_putc("\fNhiet do:"); new_value = old_value; tmp_temp=(char)convertC2K(old_value); Converter(tmp_temp); lcd_gotoxy( 1,2 ); if(x!=0) lcd_send_byte(1,tmp[x]); lcd_send_byte(1,tmp[y]); lcd_send_byte(1,tmp[z]); lcd_putc("oC"); } } char Converter(char n) { char tmp; tmp=n; x=n/100; tmp=n%100; y=tmp/10; z=tmp%10; } float convertC2K(float adc) { float temp_value; temp_value = (adc-139.25)/0.512; return temp_value; } void KiemTraMucNuoc(char temp) { char sensor4 char sensor3 char sensor2 char sensor1. if(sensor4==1) { delay_ms(10); if((sensor4==1)&& (num_count4==0)) { send_message(4,temp); num_count4++; output_toggle(Led0);enable1=1; num_count3=0;num_count2=0;num_count1=0; } } else if(sensor3==1) { delay_ms(10); if((sensor3==1)&& (num_count3==0)) { send_message(3,temp); num_count3++; output_toggle(Led0);enable1=1; num_count2=0;num_count1=0; } } else if(sensor2==1) { delay_ms(10); if((sensor2==1)&& (num_count2==0)) { send_message(2,temp); num_count2++ ; output_toggle(Led0);enable1=1; num_count1=0; } } else if(sensor1==1) { delay_ms(10); if((sensor1==1)&& (num_count1==0)) { send_message(1,temp); num_count1++; output_toggle(Led0); enable1=1; } } void clear_status()//XOA GIA TRI CUA CAM BIEN { if((sensor1==0)&&(sensor2==0)&&(sensor3==0)&&(sensor4==0) ) { if((num_count1!=0)||(num_count2!=0)||(num_count3!=0)||(num_count4!=0)) { num_count1=0; num_count2=0; num_count3=0; num_count4=0; enable1=0; } } } void main() { GSM_init();// thiet lap GSM setup_spi(SPI_SS_DISABLED);// thiet lap SPI setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); // thiet lap timer setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); enable_interrupts(INT_TIMER0); // thiet lap ngat enable_interrupts(INT_RDA); enable_interrupts(GLOBAL); setup_adc(adc_clock_internal); // thiet lap ADC setup_adc_ports(sAN0); set_adc_channel(0); Pic GSM 1 demo"); GSM_start(); GSM_sync();// dong bo GSM GSM_sel_mess_mode(5);// khai bao chon tin nhan trong ma lenh AT control printf("ATE1"); //echo on putc(13);//enter CR delay_ms(1000);// printf("AT"); putc(13);//enter CR delay_ms(1000); output_bit(Led1,1); printf("AT"); putc(13);//enter CR delay_ms(1000); output_bit(Led1,0); printf("AT+CMGS="); putc(34);//" printf(PHONE_NUM); putc(34);//" putc(13);//enter CR delay_ms(1000);//cho ki tu ">" putc(0x1A);//CTRL+Z output_bit(Led1,1); delay_ms(2000);// set_tris_b(0xff); while(1) { lcd_display(); KiemTraMucNuoc(tmp_temp);// kiem tra muc nuoc va nhiet do if((enable==1)&&(enable1==0)) { send_message(10,tmp_temp);// ham gui tin nhan enable=0; } clear_status(); } } void send_message(int index,char temp) { printf("ATE1"); //echo on putc(13);//enter CR delay_ms(1000);// printf("AT"); putc(13);//enter CR delay_ms(1000); output_bit(Led1,1); printf("AT"); putc(13);//enter CR delay_ms(1000); output_bit(Led1,0); printf("AT+CMGS="); putc(34);//" printf(PHONE_NUM); putc(34);//" putc(13);//enter CR delay_ms(1000);//cho ki tu ">" if(index==0) { printf("He thong bao muc nuoc va nhiet do san sang hoat dong!"); } else if(index==10) { printf("Muc nuoc hien tai la binh thuong va Nhiet do hien tai:%doC", temp); } else printf("Muc nuoc va nhiet do hien tai: %d va %doC",index, temp); delay_ms(1000);// putc(0x1A);//CTRL+Z output_bit(Led1,1); delay_ms(2000);// } NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ........................................................................................................................................... ...........................................................................................................................................SVTH : Bùi Tấn Tài – CCVT03A
67
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
SVTH : Bùi Tấn Tài – CCVT03A
68
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
SVTH : Bùi Tấn Tài – CCVT03A
69
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
SVTH : Bùi Tấn Tài – CCVT03A
70
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
SVTH : Bùi Tấn Tài – CCVT03A
71
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
SVTH : Bùi Tấn Tài – CCVT03A
72
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
SVTH : Bùi Tấn Tài – CCVT03A
73
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
SVTH : Bùi Tấn Tài – CCVT03A
74
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
SVTH : Bùi Tấn Tài – CCVT03A
75
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
SVTH : Bùi Tấn Tài – CCVT03A
76
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
SVTH : Bùi Tấn Tài – CCVT03A
77
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
SVTH : Bùi Tấn Tài – CCVT03A
78
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
SVTH : Bùi Tấn Tài – CCVT03A
79
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
SVTH : Bùi Tấn Tài – CCVT03A
80
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
SVTH : Bùi Tấn Tài – CCVT03A
81
Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMS/GSM
SVTH : Bùi Tấn Tài – CCVT03A
82

