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

}