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à cô Trần Thị
Trà Vinh đã tận tình giúp đỡ em trong suốt quá trình thực tập đến khi hoàn thành đồ án
tốt nghiệp, giải đáp những thắc mắc trong quá trình thực hiện. 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ì 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 ý 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, 05 năm 2016
i
Lê Tấn Vàng
MỤC LỤC
LỜI CẢM ƠN ................................................................................................................. i
MỤC LỤC ...................................................................................................................... ii
DANH MỤC CÁC TỪ VIẾT TẮT .............................................................................. v
DANH MỤC HÌNH VẼ ............................................................................................... vii
DANH MỤC BẢNG BIỂU .......................................................................................... ix
MỞ ĐẦU ......................................................................................................................... 1
CHƢƠNG 1 TỔNG QUAN VỀ MẠNG GSM VÀ DỊCH VỤ NHẮN TIN NHẮN
SMS ................................................................................................................................. 2
1.1. TỔNG QUÁT VỀ HỆ THỐNG THÔNG TIN DI ĐỘNG GSM .................... 2
1.1.1. Giới thiệu về hệ thống thông tin di động GSM .......................................... 2
1.1.2 Đặc điểm của hệ thống thông tin di động GSM .......................................... 2
1.1.3 Cấu trúc của hệ thống thông tin di động GSM ........................................... 3
1.1.3.1 Cấu trúc tổng quát .................................................................................. 3
1.1.3.2 Các thành phần của hệ thống thông tin di động GSM ......................... 3
1.1.4 Sử phát triển của hệ thống thông tin di động ở Việt Nam ......................... 4
1.2. TỔNG QUÁT VỀ TIN NHẮN SMS .................................................................. 4
1.2.1 Giới thiệu về SMS .......................................................................................... 4
1.2.2 Cấu trúc của một tin nhắn SMS ................................................................... 6
1.2.3 Tin nhắn SMS chuỗi ...................................................................................... 7
1.2.4 SMS CENTER/SMSC ................................................................................... 7
1.2.5 Nhắn tin SMS quốc tế .................................................................................... 8
CHƢƠNG 2 VI ĐIỀU KHIỂN PIC16F887 ................................................................. 9
2.1. GIỚI THIỆU PIC (Programmable Intelligent Computer) ............................. 9
2.1.1. Giới thiệu về vi điều khiển PIC ................................................................... 9
2.1.2. Ƣu và nhƣợc điểm của PIC ........................................................................ 10
2.2 GIỚI THIỆU TỔNG QUÁT VỀ PIC16F887 .................................................. 10
ii
2.2.1 Giới thiệu về PIC16F887 ............................................................................. 10
2.2.2 Sơ đồ khối của PIC16F887 .......................................................................... 12
2.3 KHẢO SÁT SƠ ĐỒ CHÂN, CHỨC NĂNG TỪNG CHÂN .......................... 13
2.3.1 Sơ đồ chân vi điều khiển PIC16F887 ......................................................... 13
2.3.2 Tổ chức bộ nhớ ............................................................................................. 15
2.3.2.1 Bộ nhớ chương trình ............................................................................ 15
2.3.2.2 Bộ nhớ dữ liệu ...................................................................................... 17
2.3.3 Các cổng I/O của PIC16F887...................................................................... 17
2.4 BỘ CHUYỂN ĐỔI TƢƠNG TỰ - SỐ (ADC) ................................................. 19
2.4.1 Kết quả chuyển đổi AD ............................................................................... 20
2.4.2 Các bƣớc chuyển đổi từ tƣơng tự - số ........................................................ 21
2.4.3 Các thanh ghi ADC ...................................................................................... 22
2.5 BỘ SO SÁNH COMPARATOR ....................................................................... 22
2.6 TRUYỀN THÔNG NỐI TIẾP EUART ........................................................... 24
2.6.1 Bộ EUSART hoạt động trong chế độ bất đồng bộ .................................... 24
2.6.1.1 Bộ phát bất đồng bộ EUSART ............................................................. 25
2.6.1.2 Bộ thu bất đồng bộ EUSART ............................................................... 26
2.6.1.3 Độ chính xác của xung clock với hoạt động không đồng bộ ............. 28
2.6.2 Bộ EUSART hoạt động trong chế độ đồng bộ .......................................... 30
2.7 HOẠT ĐỘNG ĐỊNH THỜI TIMER ............................................................... 30
2.7.1 Bộ định thời TIMER0 ................................................................................. 30
2.7.2 Bộ định thời TIMER1 ................................................................................. 32
2.7.3 Bộ định thời TIMER2 ................................................................................. 34
2.8 NGẮT (INTERRUPT) ....................................................................................... 35
CHƢƠNG 3 THIẾT KẾ MẠCH TỰ ĐỘNG CÂN BẰNG NHIỆT ĐỘ VÀ ĐIỀU
KHIỂN THIẾT BỊ THÔNG QUA TIN NHẮN SMS ............................................... 37
3.1 GIỚI THIỆU MODULE SIM900A, TẬP LỆNH AT COMMAND. ............. 37
iii
3.1.1 Giới thiệu module SIM900A ....................................................................... 37
3.1.2 Đặc điểm của module SIM900A ................................................................. 37
3.1.3 Khảo sát sơ đồ chân và chức năng từng chân ........................................... 40
3.1.4 Khảo sát tập lệnh AT của module SIM900A ............................................ 42
3.2 XÂY DỰNG HỆ THỐNG ................................................................................. 44
3.2.1 Phần tự động cân bằng nhiệt độ .................................................................... 44
3.2.2 Phần điều khiển bằng tin nhắn SMS ............................................................. 45
3.3 THIẾT KẾ PHẦN CỨNG ................................................................................. 46
3.3.1 Sơ đồ mạch ................................................................................................... 46
3.3.1.1 Nguồn .................................................................................................... 46
3.3.1.2 Mạch cân bằng nhiệt ............................................................................ 46
3.3.1.3 Mạch điều khiển ................................................................................... 47
3.3.1.4 Relay ...................................................................................................... 47
3.3.3 Mạch layout .................................................................................................. 48
CHƢƠNG 4. KẾT QUẢ ĐẠT ĐƢỢC CỦA HỆ THỐNG ...................................... 50
4.1 KẾT QUẢ ĐẠT ĐƢỢC ..................................................................................... 50
4.2 QUÁ TRÌNH HOẠT ĐỘNG CỦA SẢN PHẨM ............................................. 50
KẾT LUẬN .................................................................................................................. 53
TÀI LIỆU THAM KHẢO ............................................................................................. x
iv
PHỤ LỤC ...................................................................................................................... xi
DANH MỤC CÁC TỪ VIẾT TẮT
Từ viết Thuật ngữ tiếng Anh Thuật ngữ tiếng Việt tắt
3GPP Third Generation Partnership Project Dự án cộng tác bên thứ ba
ADC Analog Digital Converter Bộ chuyển đổi tín hiệu từ
analog sang digital
AUC Authentication Center Trung tâm nhận thực
BSS Base Station Subsystem Hệ thống trạm cơ sở phụ
BTS Base Transceiver Station Trạm thu phát gốc.
CDMA Code Division Multiple Access Đa truy nhập phân chia theo mã
CSPDN Circuit Switched Public Data Network Mạng số liệu công cộng chuyển
mạch kênh.
EDGE Enhanced Data Rates for Global Nâng cao tốc độ truyền dữ liệu
Evolution
EIR Equipment Identity Register Bộ ghi nhận dạng thiết bị.
ETSI European Telecommunications Viện các tiêu chuẩn viễn thông
Standards Institute Châu Âu
GPRS General Packet Radio Service Dịch vụ vô tuyến gói tổng hợp
GSM Global System for Mobile Hệ thống thông tin di động số
Communications toàn cầu
HLR Home Location Register Địa điểm đăng kí thường trú
ISDN Integrated Services Digital network Mạng số dịch vụ tích hợp.
MS Mobile Station Trạm di động
MSC Mobile-services Switching Centrer Trung tâm chuyển mạch các
dịch vụ mạng.
NSS Network Switching Subsystem Mạng chuyển mạch hệ thống
con
OMC Operation and Maintenance Center Trung tâm khai thác và bảo
dưỡng.
Operation Subsystem Hoạt động hệ thống phụ OSS
v
Programmable Interface Controller Giao diện điều khiển lập trình PIC
PLMN Public Land Mobile Network Mạng di động mặt đất.
PSP Parallel Slave Port Cổng phụ song song
PSPDN Packet Switch Public Data Network Mạng chuyển mạch số liệu
công cộng
PSTN Public Switch Telephone Network Mạng điện thoại chuyển mạch
công cộng.
PWM Pulse Width Modulation Phương pháp điều chỉnh điện áp
SIM Subscriber Identity Module Module nhận dạng thuê bao
SMS Short Message Service Dịch vụ tin nhắn ngắn
SMSC Short message Service Centre Trung tâm dịch vụ tin nhắn ngắn
SPI Serial Peripheral Interface Giao tiếp ngoại vi nối tiếp
TDM Time Division Multiplexing Điều chế phân chia theo thời
gian
TDMA Time Division Multiple Access Đa truy cập phân chia theo thời
gian
USB Universal Serial Bus Cổng nối tiếp chung
VLR Visitor Location Register Địa chỉ đăng kí truy cập
WAP Wireless Application Protocol Giao thức Ứng dụng Không
vi
dây
DANH MỤC HÌNH VẼ
Số
Tên hình Trang hiệu
hình
1.1 Cấu trúc của hệ thống thông tin di động GSM 3
1.2 Các thành phần hệ thống GSM 3
1.3 Cấu trúc của một tin nhắn SMS 6
2.1 Sơ đồ khối vi điều khiển PIC16F887 12
2.2 Sơ đồ chân vi điều khiển PIC16F887 13
2.3 Bộ nhớ chương trình PIC16F887 16
2.4 Địa chỉ thanh ghi của PIC16F887 17
2.5 Sơ đồ khối của AD 20
2.6 Chu kỳ xung clock và tần số làm việc của ADC 20
2.7 Các cách lưu kết quả chuyển đổi 10 bit A/D 21
2.8 Các thanh ghi liên quan đến bộ điều khiển A/D 22
2.9 Nguyên lý hoạt động của một bộ so sánh đơn giản 23
2.10 Sơ đồ khối đơn giản của bộ Comparator 23
2.11 Các thanh ghi liên quan đến bộ so sánh 24
2.12 Sơ đồ khối bộ truyền dữ liệu EUSART bất đồng bộ 26
2.13 Các thanh ghi liên quan đến quá trình truyền bất đồng bộ 26
2.14 Sơ đồ khối bộ nhận dữ liệu EUSART bất đồng bộ 27
2.15 Các thanh ghi liên quan đến quá trình nhận dữ liệu bất đồng bộ 28
2.16 Cấu tạo thanh ghi TXSTA 28
2.17 Cấu tạo thanh ghi RCSTA 29
2.18 Sơ đồ khối bộ định thời Timer 0 31
2.19 Các thanh ghi liên quan đến bộ định thời Timer0 32
2.20 T1CON: Thanh ghi điều khiển Timer1 33
2.21 Sơ đồ khối Timer1 33
2.22 Các thanh ghi liên quan đến bộ định thời Timer1 34
2.23 T2CON: Thanh ghi điều khiển Timer2 35
vii
2.24 Sơ đồ khối của bộ định thời Timer2 35
2.25 Các thanh ghi liên quan đến bộ định thời Timer2 35
3.1 Module SIM900A 39
3.2 Sơ đồ chân của Module SIM900A 40
3.2 Sơ đồ khối hệ thống tự cân bằng nhiệt 44
3.3 Sơ đồ khối hệ thống điều khiển thiết bị bằng SMS 45
3.4 Mạch nguồn 46
3.5 Mạch cân bằng nhiệt 47
3.6 Mạch điều khiển chính 47
3.7 Relay 48
3.8 Mạch cân bằng nhiệt độ 48
3.9 Mạch điều khiển chính 49
4.1 Mạch hoàn thiện 50
4.2 Bật thiết bị 1 50
4.3 Thông báo đã bật thiết bị 1 50
4.4 tắt thiết bị 1 51
4.5 Thông báo đã tắt thiết bị 1 51
4.6 Bật thiết bị 2 51
4.7 Thông báo đã bật thiết bị 2 51
4.8 Tắt thiết bị 2 51
4.9 Thông báo đã tắt thiết bị 2 51
4.10 Bật thiết bị 3 51
4.11 Thông báo đã bật thiết bị 3 51
4.12 Tắt thiết bị 3 52
4.14 Bật thiết bị 4 52
4.15 Thông báo đã bật thiết bị 4 52
4.16 Tắt thiết bị 4 52
4.17 Thông báo đã tắt thiết bị 4 52
4.18 Kiểm tra nhiệt độ phòng 52
viii
4.19 Thông báo nhiệt độ phòng 52
DANH MỤC BẢNG BIỂU
Số
Tên bảng Trang hiệu
bảng
Bảng so sánh chức năng của PIC16F887 và AT89C51 10 2.1
Bảng mô tả các chức năng từng chân của PIC 13 2.2
ix
Bảng mô tả các chức năng từng chân của SIM900A 40 3.1
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
MỞ ĐẦU
Ngày nay, cùng với sự phát triển vược bậc của khoa học kỹ thuật như công nghệ
thông tin, tự động hóa, điện điện tử, …thì việc ứng dụng chúng vào cuộc sống và sản
xuất là vô cùng cần thiết.
Mạng GSM và việc sử dụng điện thoại di động phát triển rất mạnh mẽ và phổ
biến, mang lại nhiều ứng dụng hay mang tính công nghệ. Sử dụng tin nhắn SMS trên
nền mạng GSM để điều khiển thiết bị là một trong những ứng dụng tiêu biểu.
Trong quá trình nghiên cứu, em đã quyết định thực hiện đề tài: “Thiết kế mạch
tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS”.
Với đề tài này, em muốn sử dụng điện thoại di động điều khiển thiết bị điện dân
dụng, dùng Module SIM900A trên nền mạng GSM để thu SMS điều khiển và tích hợp
với mạch tự động cân bằng nhiệt độ để sử dụng ở những nơi có diện tích rộng, không
sử dụng được máy lạnh như nhà kính trồng rau,nhà máy, xí nghiệp,.... Em hi vọng với
đề tài này sẽ làm cơ sở cho việc mở rộng, phát triển hơn nữa trong tương lai.
Đề 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 PIC16F887
Chương 3: Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông
qua tin nhắn SMS.
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
1
Chương 4: Kết quả đạt được của hệ thống
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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Ề HỆ THỐNG THÔNG TIN DI ĐỘNG GSM
1.1.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.1.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.
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
2
- Tính phủ sóng cao: Hệ thống GSM không chỉ cho phép chuyển giao trong toàn
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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
đổ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.1.3 Cấu trúc của hệ thống thông tin di động GSM
1.1.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.1.3.2 Các thành phần của hệ thống thông tin di động GSM
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
3
Hình 1.2 Các thành phần hệ thống GSM
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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ộng chuyể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.1.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.
1.2. TỔNG QUÁT VỀ TIN NHẮN SMS
1.2.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
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
4
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
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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.
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 đang tắt nguồn.
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
5
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
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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.
Thứ ba, tin nhắn SMS hỗ trợ việc chi trả các dịch vụ trực tuyến.
1.2.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:
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
6
Hình 1.3 Cấu trúc của một tin nhắn SMS
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
- 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 cầm 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.2.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.2.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
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
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
7
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
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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 thức, khuôn mẫu quốc tế. Một điện
thoại nên có một thực đơn chọn lựa để cấu hình địa chỉ SMSC. Thông thường thì địa
chỉ được điều chỉnh 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.2.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
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
8
toàn cầu.
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
CHƢƠNG 2 VI ĐIỀU KHIỂN PIC16F887
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à PIC16F887.
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
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
9
khác PIC còn có thể giao tiếp với máy tính thông qua cổng USB.
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
2.1.2. Ƣu và nhƣợc điểm của PIC
Họ 8051 thường được sử dụng cho 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 PIC16F887 và AT89C51
STT Chức năng PIC16F887A 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
9 Instruction set 35 >100
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.2 GIỚI THIỆU TỔNG QUÁT VỀ PIC16F887
2.2.1 Giới thiệu về PIC16F887
Khối xử lí trung tâm mà đóng vai trò chính là PIC16F887 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
PIC16F887 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…Sử dụng PIC có nhiều thuận lợi hơn trong
thiết kế board, khi đó board mạch sẽ nhỏ gọn và đẹp hơn dễ thi công hơn rất nhiều, vì
tính về giá cả tổng cộng cho đến lúc thành phẩm thì PIC có thể xem như rẻ hơn 89.
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
10
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
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
chuẩn công nghiệp thay vì chuẩn PC (chuẩn dân dụng).
Ngoài ngôn ngữ Asembly PIC còn hỗ trợ ngôn ngữ C qua sử dụng CCS, HTPIC,
MirkoBasic. Bên cạnh đó với bề dày của sự phát triển lâu đời PIC đã tạo ra rất nhiều
diễn đàn sôi nổi về PIC cả trong và ngoài nước. Chính vì vậy chúng ta sẽ có nhiều
thuận lợi trong việc dễ dàng tìm kiếm các thông tin lập trình cho các dòng PIC.
Dòng PIC16F887 đượ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à không cần qua 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.
- 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 9 bit đị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)
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
11
thông qua 2 chân.
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
- 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.
2.2.2 Sơ đồ khối của PIC16F887
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
12
Hình 2.1 Sơ đồ khối vi điều khiển PIC16F887
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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 PIC16F887
Hình 2.2 Sơ đồ chân vi điều khiển PIC16F887
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: Lê Tấn Vàng_Lớp: CCVT06A
13
tương tự.
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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ự.
Port B 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: Lê Tấn Vàng_Lớp: CCVT06A
14
hoặc đồng bộ với xung đồng hồ. RC7/RX/DT 26 I/O
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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 PIC16F887 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 PIC16F887 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ó 21 bit .
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
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
15
bộ đếm chương trình.
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
.
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
16
Hình 2.3 Bộ nhớ chương trình PIC16F887
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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 PIC16F887
2.3.3 Các cổng I/O của PIC16F887
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.
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
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
17
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
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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 PIC16F887 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 PORT A 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
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
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
18
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
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
điện trở kéo lên được điều khiển bởi chương trình. Các thanh ghi SFR liên quan đến
PORTB bao gồm:
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.
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ử
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
19
dụng bộ chuyển đổi ADECLARE, các thanh ghi này có thể được sử dụng như các
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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 10 bit 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
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
20
hình sau:
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
Hình 2.7 Các cách lưu kết quả chuyển đổi 10 bit 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
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
21
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)
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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:
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
22
Tín hiệu analog ở chân V
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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 đó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).
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
23
− Thanh ghi PIE2 (địa chỉ 8Dh): chứa cờ ngắt của bộ so sánh (CMIE).
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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: Lê Tấn Vàng_Lớp: CCVT06A
24
Bộ EUSART bất đồng bộ bao gồm các thành phần quan trọng sau:
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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ẽ 1.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 đó.
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. 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:
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.
Set chân điều khiển RX/DT và TX/CK bằng “1”.
Cho phép port nối tiếp bất đồng bộ bằng cách xóa bit SYNC và bit SPEN.
Nếu cần phát 9 bit dữ liệu, đặt bit TX9.
Set bit điều khiển CKTXP nếu dữ liệu phát bị đảo ngược.
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
Nếu ngắt được yêu cầu, cho phép bit TXIE. Trường hợp có sử dụng ngắt,
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
25
phải bảo đảm rằng bit GIE và bit PEIE trong thanh ghi INTCON được đặt.
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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.
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ẽ 1.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.
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
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àn
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
26
OERR, sẽ lên 1. Những dữ liệu trong RSR sẽ mất đi. Và thanh ghi RCREG có thể
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
đượ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 Bit CREN.
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
27
Hình 2.14 Sơ đồ khối bộ nhận dữ liệu EUSART bất đồng bộ
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
28
Chế độ đồng bộ: không cần thiết
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
+ 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 phép 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.
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
29
+ 0 = không cho phép nhận tiếp.
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
Bit 3 ADDEN: bit cho phép phát 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ắc 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 the).
+ 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, 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 Timer 0 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.
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
30
- Ngắt khi có sự tràn từ FFh đến 00h.
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
- 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, Timer 0 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 Timer 0
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 Timer 0 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 Timer 0
Muốn Timer 0 hoạt động ở chế độ Timer ta clear bit T0SC (OPTION_REG<5>),
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
31
khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kỳ xung đồng hồ (tần số vào
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS 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 và xóa đượ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 ở 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ều 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 này
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
32
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ừ
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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
clear bit T1OSCEN Timer 1 sẽ lấy xung đếm từ oscillator hoặc từ chân
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
33
RC0/T1OSO/T1CKI.
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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. 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
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
34
từ 00h đến giá trị được ghi trong thanh ghi TR2 và sau đó reset lại giá trị 00h trong chu
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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)
PIC16F887 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;
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
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
35
khác. Bit điều khiển ngắt RB0/INT0 và TMR0 nằm trong thanh ghi INTCON, thanh
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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í
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
36
bằng chương trình để tránh hiện tượng trên xảy ra.
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
CHƢƠNG 3 THIẾT KẾ MẠCH TỰ ĐỘNG CÂN BẰNG NHIỆT
ĐỘ VÀ ĐIỀU KHIỂN THIẾT BỊ THÔNG QUA TIN NHẮN SMS
3.1 GIỚI THIỆU MODULE SIM900A, TẬP LỆNH AT COMMAND.
3.1.1 Giới thiệu module SIM900A
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 SIM900A là một trong những loại modem GSM. Nhưng Module
SIM900A đượ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 SIM900A có nhiều lớp.
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 SIM900A
1. Nguồn cung cấp khoảng 3,4 – 4,5V
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
37
2. Nguồn lưu trữ
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
3. Băng tần
EGSM 900Mhz, DCS 1800 Mhz và PCS 1900Mhz, SIM900A 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
SIM900A hổ trợ giao thức PAP, kiểu sử dụng kết nối PPP
SIM900A 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:
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:
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
38
Dạng mã hóa âm thanh.
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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:
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: Lê Tấn Vàng_Lớp: CCVT06A
39
Hình 3.1 Module SIM900A
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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 SIM900A
Bảng 3.1 Bảng mô tả các chức năng từng chân của SIM900A
Thứ tự Tên chân 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 SIM900A là nguồn đơn VDAT là 3
3,4 V – 4,5 V 5
7
9
GND Chân GND 2
4
6
8
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
40
10
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
VCHG 11
Chân vào của bộ chuyển đổi tín hiệu tương tự sang số ADC 12
TEMP-BAT 13
VRTC 14
VCC-EXT 15
đầu ra dùng để chỉ báo mạng kết nối được hệ thống NETLIGHT 16
chân này dùng để điều khiển hệ thống bật/tắt PWRKEY 17
Kết nối bàn phím KBC 18
20
22
24
26
STATUS 19 báo trình trạng công việc
GPIO 21 input/output port
35
BUZZER 23 đầu ra chuông
SIM VCC 25 nguồn cung cấp cho thẻ sim
SIM RST 27 chân reset cho mạch sim
KBR 28 chân kết nối với bàn phím
30
32
34
36
SIM DATA 29 đầu ra dữ liệu chân sim
SIM CLK 32 chân thời gian của sim
SIM 33 chân dò tìm mạng
PRESENCE
DCD 37
DISP CS 38
DISP CLK 40
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
41
DISP DATA 42
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
DISP D/C 44
chân ra giao tiếp với màn hình DISP RST 46
chân đầu cuối dữ liệu DTR 39
chân nhận dữ liệu RXD 41
chân truyền dữ liệu TXD 43
RTS 45
CTS 47
RI 49
đầu ra dùng để điều chỉnh trong nhận dữ liệu DBG RXD 48
đầu ra dùng để điều chỉnh trong truyền dữ liệu DBG TXD 50
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 SIM900A
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
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
42
(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
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
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).
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
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
43
thấp, nó chỉ khoảng từ 6 đến 10 tin nhắn SMS trên 1 phút.
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
3.2 XÂY DỰNG HỆ THỐNG
3.2.1 Phần tự động cân bằng nhiệt độ
KHỐI CẢM BIẾN NHIỆT
KHỐI NGUỒN
T.B 1 VI SỬ LÝ
T.B 2
KHỐI ĐIỀU KHIỂN THIẾT BỊ
KHỐI HIỂN THỊ
(LED 7 THANH)
Hình 3.2 Sơ đồ khối hệ thống tự cân bằng nhiệt
Khối nguồn
Tạo nguồn ổn định cung cấp cho vi xử lý.
Khối cảm biến nhiệt
Đo và thông báo nhiệt độ hiện tại cho vi xử lý.
Khối vi xử lý
Khối vi xử lý là khối trung tâm trong việc xử lý nhiệt độ và điều khiển thiết bị.
Nhận và xử lý dữ liệu từ khối cảm biến nhiệt và thực thi các tập lệnh đã được lập trình.
Khối hiển thị led 7 thanh
Hiển thị hiệt độ thực tế đo được và mức nhiệt độ được người dung thiết lập.
Khối điều khiển thiết bị
Bao gồm 3 BJT C1815 có nhiệm vụ khuếch đại điện áp để kích cho relay bật tắt
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
44
thiết bị.
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
3.2.2 Phần điều khiển bằng tin nhắn SMS
Hình 3.3 Sơ đồ khối hệ thống điều khiển thiết bị bằng SMS
CHỨC NĂNG TỪNG KHỐI:
Khối SIM900A
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 SIM900A.
- 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.
- GSM Module SIM900A: 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 PIC16F887.
Khối vi xử lý
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 PIC16F887 đảm nhận và có nhiệm vụ gửi nhận dữ
liệu với Module SIM900A một cách liên tục. Khi Module SIM900A 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.
Khối hiển thị LCD
Gồm TEXT LCD 16x2, có nhiệm vụ hiện thị các thông tin có liên quan tới việc
điều khiển, giúp cho giao diện giữa người dùng và thiết bị trực quan hơn.
Khối điều khiển thiết bị
Khối này bao gồm 4 BJT C1815 có nhiệm vụ khuếch đại điện áp để kích cho
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
45
relay. Khối công suất với dòng thấp, đáp ứng tải tiêu tụ công suất dân dụng như bóng đèn.
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
Khối nguồn
Tạo nguồn với hai mức điện áp 12V cấp cho vi điều khiển và 4V cho module
SIM900A.
3.3 THIẾT KẾ PHẦN CỨNG
3.3.1 Sơ đồ mạch
3.3.1.1 Nguồn
Hình 3.4 Mạch nguồn
- 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.
- 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à 10 uF và đầu ra là 1000 uF
- Dùng đèn led để hiển trị trạng thái của nguồn.
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
46
3.3.1.2 Mạch cân bằng nhiệt
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
Hình 3.5 Mạch cân bằng nhiệt
3.3.1.3 Mạch điều khiển
Hình 3.6 Mạch điều khiển chính
Khi nhận được tín hiệu điều khiển thông qua tin nhắn, 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 thiết bị đã được bật tới điện thoại di động của người điều khiển.
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
47
3.3.1.4 Relay
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
Hình 3.7 Mạch Relay
-Mạch gồm 4 relay dùng để bật tắt bóng đèn tự động.
-Dùng 4 diot zenno để ngăn dòng đảm bảo an toàn cho mạch.
-Dùng 4 BJT để kích dòng cho relay hoạt động
3.3.3 Mạch layout
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
48
Hình 3.8 Lauout mạch cân bằng nhiệt độ
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
49
Hình 3.9 Layout mạch điều khiển chính
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
CHƢƠNG 4. KẾT QUẢ ĐẠT ĐƢỢC CỦA HỆ THỐNG
4.1 KẾT QUẢ ĐẠT ĐƢỢC
Hệ thống bật tắt thiết bị qua tin nhắn hoạt động ổn định, hệ thống đã thực hiện
tốt việc bật tắt 4 thiết bị theo ý muốn.
Khi tin nhắn đến thì khối vi điều khiển sẽ thực thi và điều khiển relay bật tắt tự
động theo lệnh điều khiển từ người sử dụng.
Sau khi thực hiện lệnh, vi điều khiển sẽ giao tiếp với module SIM900A và phát
tin nhắn thiết bị đã được bật (tắt) đến điện thoại của người điều khiển.
Mạch cân bằng nhiệt hoạt động ổn định như mục tiêu đưa ra.
4.2 QUÁ TRÌNH HOẠT ĐỘNG CỦA SẢN PHẨM
Hình 4.1 Mạch hoàn thiện
Hình 4.2 Bật thiết bị 1
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
50
Hình 4.3 Thông báo đã bật thiết bị 1
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
Hình 4.4 Tắt thiết bị 1
Hình 4.5 Thông báo đã tắt thiết bị 1
Hình 4.6 Bật thiết bị 2
Hình 4.7 Thông báo đã bật thiết bị 2
Hình 4.8 Tắt thiết bị 2
Hình 4.9 Thông báo đã tắt thiết bị 2
Hình 4.10 Bật thiết bị 3
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
51
Hình 4.11 Thông báo đã bật thiết bị 3
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
Hình 4.12 Tắt thiết bị 3
Hình 4.13 Thông báo đã tắt thiết bị 3
Hình 4.14 Bật thiết bị 4
Hình 4.15 Thông báo đã bật thiết bị 4
Hình 4.16 Tắt thiết bị 4
Hình 4.17 Thông báo đã tắt thiết bị 4
Hình 4.18 Kiểm tra nhiệt độ phòng
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
52
Hình 4.19 Thông báo nhiệt độ phòng
Thiết kế mạch tự động cân bằng nhiệt độ và điều khiển thiết bị thông qua tin nhắn SMS
KẾT LUẬN
Qua thời gian gần 2 tháng nghiên cứu thì đề tài cơ bản đã được hoàn thành, mạch đã
được kiểm tra và chạy ổn định. Trong quá trình làm đề tài em xin gửi lời cảm ơn đến
Cô Trần Thị Trà Vinh đã tận tình giúp đỡ em để em có thể hoàn thành để tài đúng tiến
độ và đạt được mục tiêu đã đề ra.
Đề tài em thực hiện có một số ưu điểm và nhược điểm như sau:
Ưu điểm:
Sử dụng mạng viễn thông GSM.
Hệ thống có thể điều khiển thiết bị chỉ cần một tin nhắn.
Hệ thống có tính ứng dụng cao.
Nhược điểm:
Mạch chưa tự reset khi lỗi xảy ra.
Em sẽ tiếp tục cố gắng nghiên cứu phát triển hệ thống để nó có thể đáp ứng được nhu
cầu thực tế hiện nay.
SVTH: Lê Tấn Vàng_Lớp: CCVT06A
53
Em xin chân thành cảm ơn!
TÀI LIỆU THAM KHẢO
x
PHỤ LỤC
#include
#include
// dinh nghia chan dieu khien led 7 doan
#define CS_ADC
P3_0
#define RD_ADC
P3_1
#define WR_ADC P3_2
#define LED_1
P2_4
#define LED_2
P2_5
#define LED_3
P2_6
#define LED_4
P2_7
#define RELAY1
P2_0
#define RELAY2
P2_1
#define KEY1
P3_3
#define KEY2
P3_4
#define KEY3
P3_5
// khai bao bien toan cuc
unsigned char code bang_ma[13] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82,
0xF8, 0x80, 0x90 , 0x9c, 0xc6, 0xFF};// CODE CHAN LED 7 DOAN
unsigned char dem = 0, time = 0, giay = 0, phut = 0, gio = 0 ;
char n1, n2 ,n3 , n4 ;
unsigned char value, temp, nhiet_do;
char nhietdocd = 30;
bit caidat = 0;
char bat_dau = 0, mod = 0;
xi
Code mạch cân bằng nhiệt:
char chuong_trinh = 0;
/// Ham delay
void delay (unsigned int a) {
unsigned int x ;
unsigned char y ;
for (x=0 ; x<=a ; x ++) {
for (y=0 ; y<=200 ; y ++ ) { }
}
}
// ham khoi tao ADC0804
void ADC_0804(void){
CS_ADC=0;
WR_ADC=0;
_nop_();
WR_ADC=1;
CS_ADC=1;
delay(10);
P1=0XFF;
CS_ADC=0;
RD_ADC=0;
nhiet_do=P1;
RD_ADC=1;
CS_ADC=1;
}
// HAM NGAT TIMER
void ngat_timer0() interrupt 1 {
TR0 = 0;
TF0 = 0;
if(caidat == 1){
n1 = temp/10;
n2 = temp%10;
n3 = 10;
xii
n4 = 11;
}
else {
n1 = nhietdocd/10;
n2 = nhietdocd%10;
n3 = 12;
n4 = 12;
LED_1=LED_2=LED_3=LED_4=1;
dem++;
if(dem == 1){
P0 = bang_ma[n1];
LED_1 = 0;
};
if(dem == 2){
P0 = bang_ma[n2];
LED_2 = 0;
};
if(dem == 3){
P0 = bang_ma[n3];
LED_3 = 0;
};
if(dem == 4){
dem = 0;
P0 = bang_ma[n4];
LED_4 = 0;
};
}
TR0 = 1;
}
//Ham chinh
void main (void) {
TMOD = 0x01; // timer 1 che do 1 16bit, timer 0 che do 2 8bit tu dong nap lai
ET0 = 1; // ngat timer 0
xiii
TH0 = 0xEC; // 0xEC
TL0 = 0x77; // cu 100us thi xay ra ngat
ET0 = 1;
EA = 1;
TR0 = 1; // khoi chay timer 0
ADC_0804();
while (1) {
}
}
CODE DANH CHO SIM900A
#include
#include
#include "lcd.c"
#include "1wire.c"
#include "ds18b20.c"
void send_sms(char *sdt, char n);
unsigned char i, j=13, dau_nhay, str[16], rev, xbuffer;
unsigned char *check1,*check2,*check3,*check4;
unsigned char den1
unsigned char den2
unsigned char den3
unsigned char den4
unsigned char num1[]="+84984076453";
unsigned char rev_c0,rev_c1,rev_c2,rev_c3,rev_c4,rev_c5;
unsigned char buffer[95], tach_so[16];
xiv
unsigned char *ptr, ok[]="OK";// ktnd[]="ktnd";
unsigned char eeprom;
int1 new_sms;
int1 tb;
void Clear_buffer(void)
{
for(i = 0 ; i < 150 ; i++)
{
buffer[i] = ' '; delay_us(100);
}
}
void clear_tachso(){
for(i=0;i<16;i++){
tach_so[i]=' '; delay_us(100);
}
}
#int_rda
void ISR_RDA(){
//Led_bao=!Led_bao;
rev=getch(); // lay du lieu khi nhan duoc
if(rev=='+') rev_c1=rev;
if(rev=='C') rev_c2=rev;
if(rev=='M') rev_c3=rev;
if(rev=='T') rev_c4=rev;
if(rev=='I') rev_c5=rev;
if(rev_c1=='+'&&rev_c2=='C'&&rev_c3=='M'&&rev_c4=='T'&&rev_c5=='I')
{Led_bao=0; new_sms=1;}
if(rev != 13 && rev != 10) buffer[xbuffer++]=rev;
if(xbuffer>149) xbuffer=0;
}
unsigned char wait_ok(){
ptr=strstr(buffer,ok);
xv
if(strncmp(ptr,ok,2)==0) return 1;
return 0;
}
void deleteall_sms(){
printf("AT+CMGDA=");//delete all message
putc(34); printf("DEL ALL"); putc(34); putc(13);
delay_ms(1000);
}
void delete_sms(){
printf("AT+CMGD=1");//delete all message
putc(13);
delay_ms(1000);
}
void reset_var(){
rev=rev_c0=rev_c1=rev_c2=rev_c3=rev_c4=rev_c5=new_sms=xbuffer=j=dau_nhay=
tb=0;
}
void khoi_tao_GSM(){
Led_bao=0; // bat led
PWU_KEY = 1;
delay_ms(1500); // kich 1 xung toi thieu la 1s
PWU_KEY = 0;
delay_ms(8000); // cho SIM900A duoc khoi dong xong
printf("ATE0"); putc(13); delay_ms(200); // tat che do ECHO
printf("AT"); putc(13); delay_ms(2000); // gui lenh AT
printf("AT+CMGF=1"); putc(13); delay_ms(2000); // cau hinh nhan tin nhan dang
text(mac dinh la PDU)
Clear_buffer();
reset_var();
printf("AT+CNMI=2,1,0,0,0"); putc(13); delay_ms(2000); // cau hinh khi sim co tin
nhan moi
xvi
while(wait_ok() == 0);
delete_sms();
delay_ms(2000);
Clear_buffer();
reset_var();
j=12; // Tong so +84984076453 la 12
send_sms(num1,0);
delay_ms(3000);
sprintf(str,"SIM900A San Sang");
LCD_Gotoxy(0,0);
LCD_Puts(str);
Led_bao=1; // tat led
}
// Goi tin nhan
void send_sms(char *sdt, char n){
Led_bao=0;
printf("AT+CMGS=");
putc(34); // dau "
for(i=0;i putc(34); putc(13); delay_ms(2000); // delay 2s switch(n){ case 0: {printf("BAT DAU SAN SANG\n\r"); break;} case 1: {printf("DA BAT DEN SO ,1\n\r"); break;} case 2: {printf("DA TAT DEN SO ,1\n\r"); break;} case 3: {printf("DA BAT DEN SO ,2\n\r"); break;} case 4: {printf("DA TAT DEN SO ,2\n\r"); break;} case 5: {printf("DA BAT DEN SO ,3\n\r"); break;} case 6: {printf("DA TAT DEN SO ,3\n\r"); break;} case 7: {printf("DA BAT DEN SO ,4\n\r"); break;} case 8: {printf("DA TAT DEN SO ,4\n\r"); break;} xvii case 9: {printf("Nhiet do phong hien nay la: \n\r"); break;} case 10: {printf("SAI CU PHAP,BAM “HELP” HOAC GOI DEN 0984076453 DE DUOC TRO GIUP!\n\r"); break;} case 11: { for(i=0;i<150;i++){ putc(buffer[i]); } break; } delay_ms(100); putc(26); // ctr+z delay_ms(2000); Led_bao=1; // tat led bao da hoan tat viec gui tin nhan } // Ham chinh void main() { set_tris_a(0b00000011); set_tris_b(0b00100001); set_tris_c(0b10000011); set_tris_d(0x00); set_tris_e(0x00); Coi_chip =1 ; PWU_KEY = PORTD_0 = PORTD_1 = PORTD_2 = PORTD_3 = 0; Led_bao = 1; delay_ms(500); eeprom=read_eeprom(0); PORTD_0 = eeprom & 0; PORTD_1 = (eeprom>>1) & 0; PORTD_2 = (eeprom>>2) & 0; PORTD_3 = (eeprom>>3) & 0; // Ham ngat enable_interrupts(int_rda); enable_interrupts(global); xviii LCD_Init(); delay_ms(200); sprintf(str,"DEMO SIM900A"); LCD_Gotoxy(2,0); LCD_Puts(str); khoi_tao_GSM(); Clear_buffer(); delay_ms(500); // Tat dong benh ngoai while(true){ // Nut reset if(!Reset_gsm){ delay_us(1000); while(!Reset_gsm); PWU_KEY = 1; delay_ms(2000); // kich 1 xung toi thieu la 1s PWU_KEY = 0; } // Khi co tin nhan moi if(new_sms == 1){ // khi co tin nhan moi den SIM900A new_sms = 0; Clear_buffer(); // xoa buffer clear_tachso(); reset_var(); //delay_ms(3000); printf("AT+CMGR=1");putc(13); delay_ms(4000);// cho 2s doc tin nhan moi j=0; for(i=15;i<50;i++){ // 10 if(buffer[i]=='+') dau_nhay=1; if(dau_nhay) { if(buffer[i]=='"') break; else {tach_so[j]=buffer[i]; j++; } xix } } delete_sms(); delay_ms(100); //number=strlen(tach_so); LCD_Gotoxy(0,1); LCD_Puts(tach_so); sprintf(str,"%2d",j); LCD_Gotoxy(13,1); LCD_Puts(str); delay_ms(1000); if(strncmp(tach_so,num1,12)==0){ // so sanh chuoi delay_ms(200); LCD_Gotoxy(0,1); LCD_Puts(str); // Dieu khien thiet bi delay_ms(500); check2=0 ; check2=strstr(buffer,den1 bat); // tim chuoi "den1 bat" trong chuoi buffer if(strncmp(check2,den1 bat,4)==0){ Bat_den1; // bat thiet bi 1 write_eeprom(0x00,eeprom|=0x01); // dien so 1 vao bit dau tien send_sms(tach_so,1); // phan hoi lai dien thoai la da bat tb=1; } else{ delay_ms(500); check2=0 ; check2=strstr(buffer,den1 tat); // tim chuoi "den1 tat" trong chuoi buffer if(strncmp(check2,den1 tat,4)==0){ Tat_den1; // tat thiet bi write_eeprom(0x00,eeprom&=0x0e); // dien so 0 vao bit dau tien //0 send_sms(tach_so,2); xx tb=1; } } delay_ms(500); check3=0 ; check3=strstr(buffer, den2 bat); // tim chuoi " den2 bat" trong chuoi buffer if(strncmp(check3, den2 bat,4)==0){ Bat_den2; // bat thiet bi write_eeprom(0x00,eeprom|=0x02); // dien so 1 vao bit thu 2 send_sms(tach_so,3); // phan hoi lai dien thoai la da bat tb=1; } else{ delay_ms(500); check3=0 ; check3=strstr(buffer, den2 tat); // tim chuoi "den2 tat" trong chuoi buffer if(strncmp(check3, den2 tat,4)==0){ Tat_ den2; // tat thiet bi write_eeprom(0x00,eeprom&=0x0d); // dien so 0 vao bit dau tien send_sms(tach_so,4); tb=1; } } delay_ms(500); check4=0; check4=strstr(buffer, den3 bat); // tim chuoi " den3 bat" trong chuoi buffer if(strncmp(check4, den3 bat,4)==0){ Bat_ den3; // bat thiet bi write_eeprom(0x00,eeprom|=0x04); // dien so 0 vao bit dau tien send_sms(tach_so,5); // phan hoi lai dien thoai la da bat tb=1; } else{ delay_ms(500); check4=0 ; check4=strstr(buffer, den3 tat); // tim chuoi "den3 tat" trong chuoi buffer xxi if(strncmp(check4, den3 tat,4)==0){ Tat_ den3; // tat thiet bi write_eeprom(0x00,eeprom&=0x0b); // dien so 0 vao bit dau tien send_sms(tach_so,6); tb=1; } } delay_ms(500); check4=0 ; check4=strstr(buffer, den 4 bat); // tim chuoi "den4 bat" trong chuoi buffer if(strncmp(check4, den4 bat,4)==0){ Bat_den4; // bat thiet bi write_eeprom(0x00,eeprom|=0x08); // dien so 0 vao bit dau tien send_sms(tach_so,7); // phan hoi lai dien thoai la da bat tb=1; } else{ delay_ms(500); check4=0 ; check4=strstr(buffer, den4 tat); // tim chuoi "den4 tat" trong chuoi buffer if(strncmp(check4, den4 tat,4)==0){ Tat_ den4; // tat thiet bi write_eeprom(0x00,eeprom&=0x07); // dien so 0 vao bit dau tien send_sms(tach_so,8); tb=1; } else{ delay_ms(500); check5=0 ; check5=strstr(buffer, ktnd); // tim chuoi "ktnd" trong chuoi buffer if(strncmp(check4, ktnd,4)==0){ send_sms(tach_so,9); tb=1; } } xxii if(!tb) {send_sms(tach_so,14); delay_ms(500);} //deleteall_sms(); } else{ send_sms(tach_so,9); // phan hoi khi nham may chu delay_ms(500); //deleteall_sms(); } Clear_buffer(); // xoa buffer Clear_tachso(); reset_var(); deleteall_sms(); Clear_buffer(); // xoa buffer reset_var(); Led_bao = 1; delay_ms(200); Led_bao = 0; delay_ms(200); Led_bao = 1; delay_ms(200); Led_bao = 0; delay_ms(200); Led_bao = 1; } } xxiii }