Đồ á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

pdf 76 trang thiennha21 14/04/2022 5490
Bạn đang xem 20 trang mẫu của tài liệu "Đồ á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", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfdo_an_thiet_ke_mach_tu_dong_can_bang_nhiet_do_va_dieu_khien.pdf

Nội dung text: Đồ á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

  1. 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 Lê Tấn Vàng i
  2. 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 2.2.1 Giới thiệu về PIC16F887 10 ii
  3. 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 3.1.1 Giới thiệu module SIM900A 37 iii
  4. 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 PHỤ LỤC xi iv
  5. 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. OSS Operation Subsystem Hoạt động hệ thống phụ PIC Programmable Interface Controller Giao diện điều khiển lập trình v
  6. 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 dây vi
  7. DANH MỤC HÌNH VẼ Số hiệu Tên hình Trang 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 2.24 Sơ đồ khối của bộ định thời Timer2 35 vii
  8. 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 4.19 Thông báo nhiệt độ phòng 52 viii
  9. DANH MỤC BẢNG BIỂU Số hiệu Tên bảng Trang bảng 2.1 Bảng so sánh chức năng của PIC16F887 và AT89C51 10 2.2 Bảng mô tả các chức năng từng chân của PIC 13 3.1 Bảng mô tả các chức năng từng chân của SIM900A 40 ix
  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 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. Chương 4: Kết quả đạt được của hệ thống SVTH: Lê Tấn Vàng_Lớp: CCVT06A 1
  11. 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. - Tính phủ sóng cao: Hệ thống GSM không chỉ cho phép chuyển giao trong toàn SVTH: Lê Tấn Vàng_Lớp: CCVT06A 2
  12. 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 Hình 1.2 Các thành phần hệ thống GSM SVTH: Lê Tấn Vàng_Lớp: CCVT06A 3
  13. 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 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 SVTH: Lê Tấn Vàng_Lớp: CCVT06A 4
  14. 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. 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 SVTH: Lê Tấn Vàng_Lớp: CCVT06A 5
  15. 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: Hình 1.3 Cấu trúc của một tin nhắn SMS SVTH: Lê Tấn Vàng_Lớp: CCVT06A 6
  16. 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 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 SVTH: Lê Tấn Vàng_Lớp: CCVT06A 7
  17. 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 toàn cầu. SVTH: Lê Tấn Vàng_Lớp: CCVT06A 8
  18. 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 khác PIC còn có thể giao tiếp với máy tính thông qua cổng USB. SVTH: Lê Tấn Vàng_Lớp: CCVT06A 9
  19. 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 1 I/O 5 Ports 4 Ports 2 Flash Memory 8k 4k 3 EEPROM 256bytes - 4 Timer 3 2 5 Interrupts 15 4 6 ADC 8 channel 10 bit - 7 PWM 2 - 8 Comparator 2 - 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. 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 SVTH: Lê Tấn Vàng_Lớp: CCVT06A 10
  20. 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) thông qua 2 chân. SVTH: Lê Tấn Vàng_Lớp: CCVT06A 11
  21. 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 Hình 2.1 Sơ đồ khối vi điều khiển PIC16F887 SVTH: Lê Tấn Vàng_Lớp: CCVT06A 12
  22. 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 Bảng 2.2 Bảng mô tả các chức năng từng chân của PIC Tên chân Thứ tự Hướng Mô tả chức năng và các đặc tính. chân OSC1/CLKIN 9 I Đầu vào của thạch anh hay ngõ vào của 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. MCLR/Vpp 1 I/P Ngõ vào Master Reset, chân này cho phép reset chip ở mức thấp. Port A là port vào ra hai chiều. RA0/AN0 2 I/O RA0 có thể làm ngõ vào ADC hoặc tương tự. RA1/AN1 3 I/O RA1có thể làm ngõ vào ADC hoặc tương tự. SVTH: Lê Tấn Vàng_Lớp: CCVT06A 13
  23. 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 RA2/AN2/VREF- 4 I/O RA2 có thể làm ngõ vào ADC hoặc tương tự hoặc điện áp chuẩn âm. RA3/AN3/VREF+ 5 I/O RA3 có thể làm ngõ vào ADC hoặc tương tự hoặc điện áp chuẩn dương. RA4/T0CKI 6 I/O RA4 có thể làm ngõ vào ADC hoặc tương tự, xung clock cho bộ định thời RA5/SS/AN4 7 I/O Timer0. 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 34 I/O Chân vào ra hai chiều. RB2 35 I/O Chân vào ra hai chiều. RB3/PGM 36 I/O Ngõ vào được lập trình ở mức thấp. RB4 37 I/O Interrup-on-change pin. RB5 38 I/O Interrup-on-change pin. RB6/PGC 39 I/O Interrup-on-change pin or In-crcuit 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 RC2/CCP1 17 I/O PWM2. RC3/SCK/CSL 18 I/O Là ngõ vào (hoặc ra) compare2, đồng RC4/SDI/SDA 23 I/O thời là ngõ vào PWM1. RC5/SD0 24 I/O Dữ liệu ngoài SPI (chế độ SPI). RC6/TX/CK 25 I/O Chân truyền không đồng bộ USART RC7/RX/DT 26 I/O hoặc đồng bộ với xung đồng hồ. SVTH: Lê Tấn Vàng_Lớp: CCVT06A 14
  24. 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. RD0/PSP0 19 I/O Là cổng vào ra hai chiều hoặc là cổng RD1/PSP1 20 I/O vào ra song song giao tiếp với bus của RD2/PSP2 21 I/O vi xử lý. RD3/PSP3 22 I/O RD4/PSP4 27 I/O RD5/PSP5 28 I/O RD6/PSP6 29 I/O RD7/PSP7 30 I/O RE0/RD/AN5 8 Ngõ vào Analog 5. RE1/WR/AN6 9 Ngõ vào Analog 6. RE2/CS/AN7 10 Ngõ vào Analog 7. VSS 12, 31 P Cung cấp điện áp âm cho vi xử lý. VDD 11, 32 P Cung cấp nguồn dương cho vi xử lý. 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 bộ đếm chương trình. SVTH: Lê Tấn Vàng_Lớp: CCVT06A 15
  25. 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.3 Bộ nhớ chương trình PIC16F887 SVTH: Lê Tấn Vàng_Lớp: CCVT06A 16
  26. 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 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 SVTH: Lê Tấn Vàng_Lớp: CCVT06A 17
  27. 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 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 SVTH: Lê Tấn Vàng_Lớp: CCVT06A 18
  28. 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ử dụng bộ chuyển đổi ADECLARE, các thanh ghi này có thể được sử dụng như các SVTH: Lê Tấn Vàng_Lớp: CCVT06A 19
  29. 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 hình sau: SVTH: Lê Tấn Vàng_Lớp: CCVT06A 20
  30. 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  Xóa cờ ngắt ADC (tiếp tục thực hiện nếu cần tiếp tục chuyển đổi) SVTH: Lê Tấn Vàng_Lớp: CCVT06A 21
  31. 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: Tín hiệu analog ở chân V SVTH: Lê Tấn Vàng_Lớp: CCVT06A 22
  32. 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). − Thanh ghi PIE2 (địa chỉ 8Dh): chứa cờ ngắt của bộ so sánh (CMIE). SVTH: Lê Tấn Vàng_Lớp: CCVT06A 23
  33. 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. Bộ EUSART bất đồng bộ bao gồm các thành phần quan trọng sau: SVTH: Lê Tấn Vàng_Lớp: CCVT06A 24
  34. 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, phải bảo đảm rằng bit GIE và bit PEIE trong thanh ghi INTCON được đặt. SVTH: Lê Tấn Vàng_Lớp: CCVT06A 25
  35. 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 OERR, sẽ lên 1. Những dữ liệu trong RSR sẽ mất đi. Và thanh ghi RCREG có thể SVTH: Lê Tấn Vàng_Lớp: CCVT06A 26
  36. 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. Hình 2.14 Sơ đồ khối bộ nhận dữ liệu EUSART bất đồng bộ SVTH: Lê Tấn Vàng_Lớp: CCVT06A 27
  37. 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 Chế độ đồng bộ: không cần thiết SVTH: Lê Tấn Vàng_Lớp: CCVT06A 28
  38. 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. + 0 = không cho phép nhận tiếp. SVTH: Lê Tấn Vàng_Lớp: CCVT06A 29
  39. 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 đượ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. - Ngắt khi có sự tràn từ FFh đến 00h. SVTH: Lê Tấn Vàng_Lớp: CCVT06A 30
  40. 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 ) 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 ). 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 ). 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 ). Ngắt này có thể được giấu đi bằng cách xóa đi bit TMR0IE (INTCON ). 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 ), khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kỳ xung đồng hồ (tần số vào SVTH: Lê Tấn Vàng_Lớp: CCVT06A 31
  41. 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 Timer 0 bằng /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 ). Khi đó xung tác động lên bộ đếm được lấy từ chân RA4/T0CKI. Bit T0SE (OPTIN_REG ) 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 ) 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 ) xác định đối tượng tác động của bộ chia tần số. Các bit PS2:PS0 (OPTION_REG ) 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 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ừ SVTH: Lê Tấn Vàng_Lớp: CCVT06A 32
  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 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 và PORTC được gán giá trị 0. Khi clear bit T1OSCEN Timer 1 sẽ lấy xung đếm từ oscillator hoặc từ chân RC0/T1OSO/T1CKI. SVTH: Lê Tấn Vàng_Lớp: CCVT06A 33
  43. 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 ). 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 từ 00h đến giá trị được ghi trong thanh ghi TR2 và sau đó reset lại giá trị 00h trong chu SVTH: Lê Tấn Vàng_Lớp: CCVT06A 34
  44. 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 khác. Bit điều khiển ngắt RB0/INT0 và TMR0 nằm trong thanh ghi INTCON, thanh SVTH: Lê Tấn Vàng_Lớp: CCVT06A 35
  45. 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í bằng chương trình để tránh hiện tượng trên xảy ra. SVTH: Lê Tấn Vàng_Lớp: CCVT06A 36
  46. 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 2. Nguồn lưu trữ SVTH: Lê Tấn Vàng_Lớp: CCVT06A 37
  47. 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: Dạng mã hóa âm thanh. SVTH: Lê Tấn Vàng_Lớp: CCVT06A 38
  48. 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 Hình 3.1 Module SIM900A SVTH: Lê Tấn Vàng_Lớp: CCVT06A 39
  49. 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 1 chân của chip được dành riêng để kết nối tới nguồn cung 3 cấp, nguồn cung cấp của SIM900A là nguồn đơn VDAT là 5 3,4 V – 4,5 V 7 9 GND 2 Chân GND 4 6 8 10 SVTH: Lê Tấn Vàng_Lớp: CCVT06A 40
  50. 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 ADC 12 Chân vào của bộ chuyển đổi tín hiệu tương tự sang số TEMP-BAT 13 VRTC 14 VCC-EXT 15 NETLIGHT 16 đầu ra dùng để chỉ báo mạng kết nối được hệ thống PWRKEY 17 chân này dùng để điều khiển hệ thống bật/tắt KBC 18 Kết nối bàn phím 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 DISP DATA 42 SVTH: Lê Tấn Vàng_Lớp: CCVT06A 41
  51. 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 DISP RST 46 chân ra giao tiếp với màn hình DTR 39 chân đầu cuối dữ liệu RXD 41 chân nhận dữ liệu TXD 43 chân truyền dữ liệu RTS 45 CTS 47 RI 49 DBG RXD 48 đầu ra dùng để điều chỉnh trong nhận dữ liệu DBG TXD 50 đầu ra dùng để điều chỉnh trong truyền dữ liệu AGND 51 Chân GND 52 SPK1P 53 chân output SPK1N 55 SPK2P 57 SPK2N 59 MIC1P 54 chân input MIC1N 56 MIC2P 58 MIC2N 60 Ghi chú: I = input ; O = output ; I/O = input/output 3.1.4 Khảo sát tập lệnh AT của module 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 (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 SVTH: Lê Tấn Vàng_Lớp: CCVT06A 42
  52. 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 này, bạn có thể làm một số thứ như sau:  Đọ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ạ Số tin nhắn SMS có thể được thực thi bởi một modem SMS trên một phút thì rất thấp, nó chỉ khoảng từ 6 đến 10 tin nhắn SMS trên 1 phút. SVTH: Lê Tấn Vàng_Lớp: CCVT06A 43
  53. 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 KHỐI ĐIỀU T.B 1 VI SỬ LÝ KHIỂN THIẾT T.B 2 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 thiết bị. SVTH: Lê Tấn Vàng_Lớp: CCVT06A 44
  54. 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 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. SVTH: Lê Tấn Vàng_Lớp: CCVT06A 45
  55. 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. 3.3.1.2 Mạch cân bằng nhiệt SVTH: Lê Tấn Vàng_Lớp: CCVT06A 46
  56. 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. 3.3.1.4 Relay SVTH: Lê Tấn Vàng_Lớp: CCVT06A 47
  57. 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 Hình 3.8 Lauout mạch cân bằng nhiệt độ SVTH: Lê Tấn Vàng_Lớp: CCVT06A 48
  58. 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.9 Layout mạch điều khiển chính SVTH: Lê Tấn Vàng_Lớp: CCVT06A 49
  59. 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 Hình 4.3 Thông báo đã bật thiết bị 1 SVTH: Lê Tấn Vàng_Lớp: CCVT06A 50
  60. 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 Hình 4.11 Thông báo đã bật thiết bị 3 SVTH: Lê Tấn Vàng_Lớp: CCVT06A 51
  61. 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 Hình 4.19 Thông báo nhiệt độ phòng SVTH: Lê Tấn Vàng_Lớp: CCVT06A 52
  62. 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. Em xin chân thành cảm ơn! SVTH: Lê Tấn Vàng_Lớp: CCVT06A 53
  63. TÀI LIỆU THAM KHẢO x
  64. PHỤ LỤC Code mạch cân bằng nhiệt: #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
  65. 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
  66. 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
  67. 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]; unsigned char *ptr, ok[]="OK";// ktnd[]="ktnd"; xiv
  68. unsigned char eeprom; int1 new_sms; int1 tb; void Clear_buffer(void) { for(i = 0 ; i 149) xbuffer=0; } unsigned char wait_ok(){ ptr=strstr(buffer,ok); if(strncmp(ptr,ok,2)==0) return 1; xv
  69. 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 while(wait_ok() == 0); xvi
  70. 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<j;i++){putc(*sdt); sdt++;} 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;} case 9: {printf("Nhiet do phong hien nay la: \n\r"); break;} xvii
  71. 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 >1) & 0; PORTD_2 = (eeprom>>2) & 0; PORTD_3 = (eeprom>>3) & 0; // Ham ngat enable_interrupts(int_rda); enable_interrupts(global); LCD_Init(); xviii
  72. 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
  73. } 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); tb=1; xx
  74. } } 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 if(strncmp(check4, den3 tat,4)==0){ xxi
  75. 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; } } if(!tb) {send_sms(tach_so,14); delay_ms(500);} xxii
  76. //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