lý thuyết modul sim 900.pdf

14
1.Giới thiệu tổng quan về hệ thống: Module SMS Controller sim900 với việc giao tiếp giữa vi điều khiển PIC và Breakout sim900 là một giải pháp toàn diện cho việc giám sát và điều khiển thiết bị một cách hiệu quả. Được tích hợp 4 ngõ ra relay điều khiển 4 thiết bị bất kì trong nhà, khả năng điều khiển hoàn hảo kể cả các thiết bị điện xoay chiều 220V vì đã có sự cách li hoàn toàn với mạch điều khiển thông qua relay. Với bốn cổng ngõ vào báo động, người sữ dụng có thể kết nối với một thiết bị cảm biến bất kì nào đó với một mức tính hiệu ngõ vào, mạch sẽ giám sát và báo động. Ngoài ra với 8 cổng RF mở rộng, việc kết nối với mạch RF rời là rất tiện lợi, cho ta khả năng điều khiển bằng remote hiệu quả và nhanh chống hơn, đó cũng là cơ bản để mở rộng ngõ vào giám sát cho module hoạt động ở diện rộng. Các tính năng nổi bật của mạch: Hỗ trợ kết nối Breakout SIM900 : o Quad-Band 850/ 900/ 1800/ 1900 MHz o GPRS multi-slot class 10/ class 8 support the GPRS coding schemes o CS-1, CS-2, CS-3 and CS-4. o Hỗ trợ chế độ tiết kiệm năng lượng. o Tích hợp giao thức TCP/IP. MCU: PIC18F4620-I/PT o Program Memory (KB): 64, RAM Bytes: 3,968 o Data EEPROM (bytes): 1024, o 1-A/E/USART, 1-MSSP(SPI/I2C) o 2CCP, Timers: 1 x 8-bit, 3 x 16-bit o ADC: 13 ch, 10-bit, Comparators: 2 Vcc: 2 to 5.5VOutput: o 4 ngõ ra dạng relay 12VDC. Tiếp điểm chung, thường đóng, thường hở. Input: o 4 ngõ vào sử dụng opto cách ly. o 8 ngõ vào RF Receiver 315Mhz – 433Mhz Nguồn xung sử dụng IC LM2596 cho dòng tải 3A, tần số đáp ứng 150Khz Điện áp hoạt động 7-15VDC a. Khối PIC điều khiển:

Upload: danhis4

Post on 26-Dec-2015

266 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Lý thuyết Modul sim 900.pdf

1.Giới thiệu tổng quan về hệ thống:

Module SMS Controller sim900 với việc giao tiếp giữa vi điều khiển PIC và Breakout sim900 là một giải pháp toàn diện cho việc giám sát và điều khiển thiết bị một cách hiệu quả. Được tích hợp 4 ngõ ra relay điều khiển 4 thiết bị bất kì trong nhà, khả năng điều khiển hoàn hảo kể cả các thiết bị điện xoay chiều 220V vì đã có sự cách li hoàn toàn với mạch điều khiển thông qua relay. Với bốn cổng ngõ vào báo động, người sữ dụng có thể kết nối với một thiết bị cảm biến bất kì nào đó với một mức tính hiệu ngõ vào, mạch sẽ giám sát và báo động. Ngoài ra với 8 cổng RF mở rộng, việc kết nối với mạch RF rời là rất tiện lợi, cho ta khả năng điều khiển bằng remote hiệu quả và nhanh chống hơn, đó cũng là cơ bản để mở rộng ngõ vào giám sát cho module hoạt động ở diện rộng.

Các tính năng nổi bật của mạch:

Hỗ trợ kết nối Breakout SIM900: o Quad-Band 850/ 900/ 1800/ 1900 MHz o GPRS multi-slot class 10/ class 8 support the GPRS coding schemes o CS-1, CS-2, CS-3 and CS-4. o Hỗ trợ chế độ tiết kiệm năng lượng. o Tích hợp giao thức TCP/IP.

MCU: PIC18F4620-I/PT o Program Memory (KB): 64, RAM Bytes: 3,968 o Data EEPROM (bytes): 1024, o 1-A/E/USART, 1-MSSP(SPI/I2C) o 2CCP, Timers: 1 x 8-bit, 3 x 16-bit o ADC: 13 ch, 10-bit, Comparators: 2

Vcc: 2 to 5.5VOutput: o 4 ngõ ra dạng relay 12VDC. Tiếp điểm chung, thường đóng, thường hở.

Input: o 4 ngõ vào sử dụng opto cách ly. o 8 ngõ vào RF Receiver 315Mhz – 433Mhz

Nguồn xung sử dụng IC LM2596 cho dòng tải 3A, tần số đáp ứng 150Khz

Điện áp hoạt động 7-15VDC

a. Khối PIC điều khiển:

Page 2: Lý thuyết Modul sim 900.pdf

Khối vi điều khiển trung tâm sử dụng PIC 18F4620 với nguồn cấp là 4.5V, thực hiện giao tiếp với Sim900 thông qua bộ UART gồm 2 chân truyền nhận, Tx(C6), Rx(C7). Bốn chân điều khiển 4 relay được bố trí ở các chân RD4, RD5, RD6, RD7 tương ứng với các relay 1,2,3 và 4. Tương tự như vậy, 4 chân ngõ vào báo động được bố trí ở các chân RB0, RB1, RB2, RB3 tương ứng IN1, IN2, IN3, IN4. Ngoài ra các chân ngõ vào RF cũng được bố trí ở một port riêng biệt, các chân RA1, RA2, RA3, RA4 tương ứng D3, D2, D1, D0 của bộ 1 và các chân RC5, RC4, RD3, RD2 tương ứng D0, D1, D2, D3 của bộ 2.

Ở sơ đồ trên, nhìn chung chỉ sử dụng những chân cơ bản của PIC với chức năng xuất nhập I/O và dùng bộ UART để giao tiếp với SIM900, với những thứ cơ bản đó các bạn có thể phát triển thêm

Page 3: Lý thuyết Modul sim 900.pdf

nhiều ứng dụng khác làm tăng khả năng cho board như ứng dụng bộ ADC trong việc đọc nhiệt độ, mở rộng port I/O để có thể điều khiển với số lượng thiết bị lớn hơn, v.v…

b.Khối nguồn:

Mạch nguồn ở đây dùng cung cấp cho toàn hệ thống bao gồm các khối vi điều khiển, module sim900, các khối I/O vì vậy ta cần một mạch nguồn có dòng đủ lớn. Ở đây ta chọn mạch nguồn với thiết kế LM2596 -ADJ, đây là IC nguồn có khả năng dòng tải lên đến 3A đảm bảo hệ thống làm việc ổn định. Hệ thống của chúng ta sử dụng nguồn 4.5V cung cấp điện cho toàn mạch, do đó ta cần phân áp điện trở cho LM2596 –ADJ sao cho đầu vào 12V và đầu ra là 4.5V. Theo datasheet của IC LM2596 –ADJ thù ta có công thức phân áp như sau:

Vout = 1.23.(1+ R2/R3)

Ta phải chọn cặp điện trở sao cho Vout bằng 4.5V, với R3=2.1K và R2=5.6K thì thỏa mãn điều kiện trên.

c.Khối Input:

Page 4: Lý thuyết Modul sim 900.pdf

Yêu cầu đặt ra là khi có một tác động từ bên ngoài hay nói cách khác là có một xung vào thì vi điều khiển hiểu và thực hiện báo động qua SIM900, đó cũng là chức năng của khối ngõ vào input này. Để thực hiện được việc thu thập tín hiệu ngõ vào chúng tôi sữ dụng một con Oppto đệm đầu vào để làm việc đó.

Cấu tạo của Oppto bao gồm 1 con led và 1 con transistor quang, nếu ngõ vào led mức cao tức led trong oppto sáng khi đó làm cho transistor quang dẫn, điều đó củng đồng nghĩa ngõ ra mức cao nếu ngõ ra được nối lên nguồn.

Mạch input dùng oppto có khả năng thu thập tín hiệu ngõ vào với mức cao là 5V-12V cách li hoàn toàn với mạch hệ thống nhờ tính chất về cấu tạo của Oppto.

d.Khối điều khiển Output:

Page 5: Lý thuyết Modul sim 900.pdf
Page 6: Lý thuyết Modul sim 900.pdf

Khối điều khiển thiết bị có nhiệm vụ điều khiển các thiết bị ngoại vi thông qua tiếp điểm thường đóng và thường hở. Mạch sử dụng các oppto kích transistor và relay cách li điều khiển thiết bị với khả năng ứng dụng cao, có thể sử dụng điều khiển được cho rất nhiều loại thiết bị khác nhau kể cả thiết bị dùng nguồn 220V xoay chiều.

Nguyên lí hoạt động của 1 kênh tiêu biểu trong khối như sao: nhìn vào sơ đồ nguyên lí ta thấy, khi có tín hiệu ngỏ ra từ chân vi diều khiển ở mức cao 5V-12V kích vào Anot led của oppto làm led oppto sáng, khi đó transistor quang của oppto dẫn nguồn 12V qua điện trở 10K kích vào cực B của transistor C1815. Khi đó transistor C1815 dẫn tiếp tục làm nguồn 12V qua cuộn dây relay đổ xuống mass. Khi có điện qua cuộn dây relay thì công tắc của relay sẽ bật và kết thúc quá trình điều khiển thiết bị.

e.Khối kết nối Breakout SIM900:

Dựa vào sơ đồ chân của Breakout SIM900 mà ta thiết kế connector giao tiếp với PIC. Cấu tạo và sơ đồ nguyên lý Breakout SIM900 các bạn có thể tham khảo ở đây:

http://at-sky.com.vn/san-pham/2-breakout-sim900.html#.UfnRAazebBM

Khối này có nhiệm vụ rất quan trọng trong mạch SMS Controller SIM900, Breakout SIM900 là cầu nối giữa hệ thống với điện thoại di động, nhiệm vụ là tiếp nhận tin nhắn từ điện thoại và chuyển

Page 7: Lý thuyết Modul sim 900.pdf

bản tin đến vi điều khiển xử lí đồng thời nhận nội dung tin nhắn từ vi điều khiển và phát đến điện thoại người dùng thông qua mạng GSM.

f.Khối RF:

Khối RF bao gồm các connector kết nối với mạch RF rời bên ngoài có khả năng nhận tín hiệu từ bộ RF đó đưa về cho vi xử lí điều khiển. Mạch SMS Controller có tích hợp 8 kênh RF tương đương 2 bộ RF rời với mỗi bộ 4 kênh.

Việc tích hợp các bộ RF trên Board rất quan trọng và lợi ích mở rộng rất lớn, với các bộ RF ta có thể thực hiện điều khiển thiết bị bằng remote một cách dể dàng. Những ngõ vào RF còn có thể sữ dụng như những input báo động không dây.

2.Hoạt động:

Các bạn có thể hình dung tổng quát toàn bộ hệ thống qua sơ đồ khối như sau:

Page 8: Lý thuyết Modul sim 900.pdf

AT-COM đã phát triển một hệ thống code demo cho SMS Controller SIM900,viết trên nền CCS, với hệ thống này mạch SMS Controller có khả năng thực hiện các chức năng cơ bản là nhắn tin điều khiển thiết bị cũng như giám sát ngõ vào thông qua các cổng input.

Việc nhắn tin điều khiển hệ thống thiết bị vô cùng đơn giản với khả năng cú pháp hoàn toàn do người lập trình quy định.

Ở đây chúng tôi quy định cú pháp nhắn tin bằng đoạn chương trình trên. Với các cú pháp như sau:

Mở thiết bị 1: #[pass] On1.

Page 9: Lý thuyết Modul sim 900.pdf

Mở thiết bị 2: #[pass] On2.

Mở thiết bị 3: #[pass] On3.

Mở thiết bị 4: #[pass] On4.

Tắt thiết bị 1: #[pass] Tat1.

Tắt thiết bị 2: #[pass] Tat2.

Tắt thiết bị 3: #[pass] Tat3.

Tắt thiết bị 4: #[pass] Tat4.

Pass là 1 chuổi kí tự bảo mật do ta quy định và thể hiện trên code ở dòng lệnh char MK[]=”123456”; khi nhắn tin các bạn chỉ việc nhắn đúng cú pháp đã quy định là vi điều khiển có thể hiểu và làm việc theo yêu cầu của bạn. Khả năng mở rộng ở đoạn code này rất cao, các bạn có thể phát triển với cú pháp hoàn toàn khác ví dụ ở trên, đoạn kí tự bảo mật có thể dài hơn hơn thế nữa điều đó sẽ giúp khả năng bảo mật cao hơn.

Để vi điều khiển có thể nhận được nội dung tin nhắn từ SIM900 gởi xuống thông qua bộ UART để thuận lợi hơn trong chương trình ta phải có thiết lập ngắt UART.

Đây là chương trình ngắt UART với việc nhận kí tự và lưu vào mãng buffer, ở đây còn nhận biết được đầu chuỗi và kết thúc chuỗi thông qua 2 kí tự đặc biệt “#” và “.” để hiệu quả quản lí chuỗi tối ưu nhất. Và tức nhiên là không thể thiếu 2 dòng lệnh khởi tạo ngắt UART trong main() khi đã sữ dụng ngắt này:

enable_interrupts(INT_RDA); //cho phep ngat uart

enable_interrupts(GLOBAL); //cho phep ngat toan cuc

Ở Breakout SIM900 ngoài việc cấp nguồn cho mạch, để Module có thể bắt đầu hoạt động thì ta cần phải kích một xung mức cao vào chân số 1 ON/OFF của Breakout SIM900, và vi xử lí sẽ đảm nhiệm công việc đó. Đoạn chương trình Init_sim900 được đặt ở đầu đoạn Main có tác dụng kích hoạt Breakout SIM900 để hoạt động.

Page 10: Lý thuyết Modul sim 900.pdf

PWU là chân kích Breakout SIM900 tương ứng với chân RC3 của vi điều khiển. Sao khi kích Breakout SIM900 thành công bằng việc gởi lệnh AT lên SIM, mạch sẽ báo động cho ta biết hệ thống khởi động hoàn tất bằng việc gởi tin nhắn đến số điện thoại cài đặt trong code.

Lệnh send_sms(num1,0); đảm nhận việc gởi tin nhắn đó, đây là lệnh thực hiện gởi tin nhắn phản hồi đến người dùng không chỉ khởi động hoàn tất mà tất cả các báo động liên quan bao gồm đã mở thiết bị, đã tắt thiết bị, v.v…

Page 11: Lý thuyết Modul sim 900.pdf

Nội dung tin nhắn các trường hợp gởi phản hồi nằm trong các case của lệnh switch – case, khi trường hợp nào xảy ra nó chỉ việc lấy đúng case nội dung của trường hợp đó và gởi đi. Số điện thoại máy chủ ta quy định ở trên với đoạn lệnh:

char num1[]="01265105xxx";

Và như vậy trong chương trình gởi tin nhắn, ta chỉ việc lấy số điện thoại đó ra và thực hiện lệnh gởi theo cú pháp lệnh AT Command. Lệnh gởi tin nhắn có cú pháp như sau:

At+CMGS=”sdt”

>(nội dung SMS)

Tương tự chương trình gởi SMS phản hồi, chúng tôi cũng xây dựng riêng cho trường hợp báo động ngõ vào một đoạn chương trình gởi SMS riêng, gọi là đoạn chương trình send_cb(char *p); đoạn chương trình này cũng với chức năng gởi SMS phản hồi nhưng dùng trong việc gởi SMS khi có tác động đầu vào.

Page 12: Lý thuyết Modul sim 900.pdf

Cấu trúc chương trình không có gì mới so với chương trình gởi SMS phản hồi, chỉ thay đổi ở phần lấy nội dung SMS gởi đi, thay vì nội dung được lưu trong từng case của hàm switch – case thì ở đây ta sẽ quét điều kiện của từng trạng thái ngõ vào và nếu ở ngõ vào nào bị tát động chỉ việc gởi đúng nội dung ngõ vào đó.

Để lấy trạng thái ngõ vào cho chương trình send_cb, ở chương trình chính không thể thiếu một đoạn chương trình quét ngõ vào:

Đây là đoạn chương trình quét trực tiếp trạng thái các ngõ vào input từ chân RB0 đến chân RB3, và thực hiện gởi tin nhắn.

Phần cuối cùng không thể thiếu là đoạn chương trình nhận nội dung SMS và điều khiển thiết bị:

Page 13: Lý thuyết Modul sim 900.pdf

Đây là toàn bộ hệ thống nhận, so sánh nội dung tin nhắn và điều khiển thiết bị theo yêu cầu. Để hiểu rõ hơn hoạt động của chương trình tôi xin ví dụ một đoạn trong điều khiển thiết bị 1 và qua đó các đoạn còn lại các bạn có thể tự tìm hiểu thêm:

Ở đoạn chương trình trên các bạn thấy, biến sms_mode có nhiệm vụ nhận biến khi nào có SMS đến, sms_mode = true khi có tin nhắn, ngược lại sms_mode = false, biến này sẽ được set trong chương trình ngắt các bạn có thể xem lại nội dung chương trình ngắt ở trên. Hàm if(sms_mode= = true) có chức năng kiểm tra SMS đến.

Giả sử có tin nhắn đến và sms_mode = true bước tiếp theo của chương trình là kiểm tra mật khẩu, so sánh mật khẩu mặc định với mật khẩu có trong tin nhắn, thể hiện ở hai đoạn chương trình tiếp theo:

Ptr1=strstr(buffer,MK);

Page 14: Lý thuyết Modul sim 900.pdf

If(strncmp(ptr1,MK,6)= = 0)

Hàm strstr() được sử dụng để tìm kiếm sự xuất hiện đầu tiên của chuổi MK bên trong chuổi buffer, kết quả trả về của hàm là con trỏ Ptr1 chỉ đến phần tử đầu tiên của chuổi buffer có chứa chuổi MK. Hàm tiếp theo strncmp() được sử dụng để so sánh hai chuổi MK và con trỏ Ptr1 có giá trị vị trí đầu tiên xuất hiện chuỗi MK trong chuỗi buffer, với giá trị so sánh là 6 phần tử, nếu hai chuổi giống nhau thì trả về giá trị bằng 0.

Bước cuối cùng trong việc kiểm tra tin nhắn là kiểm tra kí tự điều khiển, cũng dùng hai lệnh tương tự như phần kiểm tra mật khẩu:

ptr2=strstr(buffer,mo_tb1);

if(strncmp(ptr2,mo_tb1,3)= =0)

Nếu toàn bộ điều kiện đều đúng thì hệ thống vi xử lí sẽ làm việc bật tắt các thiết bị theo đúng yêu cầu của người dùng nhắn tin.

3.Tổng kết:

Tóm lại, toàn bộ nội dung ở trên đã giới thiệu cho các bạn tổng quan hết tất cả các hoạt động cơ bản của mạch SMS Controller SIM900, những chức năng mà các bạn được thấy ở trên chỉ là các chức năng cơ bản nhất mà một mạch SMS Controller SIM900 phải làm, dựa trên đoạn code cũng như hướng dẫn ở trên các bạn có thể tự phát triển ứng dụng mới cho mình một các linh hoạt, việc triển khai thêm tiện ích trên board là không khó. Phần hạn chế của đoạn code demo trên còn rất nhiều, code chưa có chức năng điều khiển thiết bị qua bộ thu phát RF, chưa có được nhiều máy chủ báo tin nhắn.

Các bạn có thể phát triển thêm nhiều chức năng quan trọng khác như thay đổi mật khẩu, lưu mật khẩu trong epprom đề phong mất điện, tăng khả năng giám sát thiết bị, có thêm khối hiển thị giúp người dùng trực quan hơn, v.v…

Sao đây là file hex và file code demo mà chúng ta đã theo dỏi từ đầu bài: