NGUYÊN LÝ HOẠT ĐỘNG CỦA HỆ THỐNG

Một phần của tài liệu Luận văn thiết kế thiết bị thu thập nhiệt độ và truyền dữ liệu về server lưu trữ sử dụng dịch vụ GPRS (Trang 32)

Thiết bị thu thập dữ liệu có nhiệm vụ lấy mẫu nhiệt độ môi trường rồi lưu thông tin đó kèm với thời gian lấy mẫu vào bộ nhớ FRAM của vi điều khiển MSP430FR5739. Khi số lượng mẫu đã lấy bằng với mức ngưỡng đã cài đặt thiết bị sẽ tự động kết nối và truyền thông tin đến server, chức năng này được mô tả trong Hình 3.7 (lưu ý: chỉ xét trong trường hợp trước đó thiết bị đã biết thông tin địa chỉ IP và PORT của server lưu trữ đang chờ lắng nghe).

Mặc định, ngoài tính năng tự động truyền thông tin về server lưu trữ khi đã lấy được số lượng mẫu cần thiết thì định kỳ, sau mỗi lần đánh thức chức năng truyền nhận GSM thiết bị sẽ cập nhật trạng thái hiện tại và gửi tin nhắn báo tình trạng Pin, và số lượng mẫu đã thu thập được.

Người quản lý sẽ nhận thông tin dưới dạng tin nhắn SMS trong khoản thời gian sau khi thiết bị kích hoạt lại (từ chế độ ngủ tiết kiệm nguồn) chức năng truyền nhận GSM để lắng nghe thông tin điều khiển. Trong nội dung tin nhắn đến có đề cập đến trạng hiện tại ở thiết bị (bao gồm giá trị điện áp của PIN, tổng số mẫu đã thu thập được, nhiệt độ tại nơi thu thập) do đó trong trường hợp này người quản lý có quyền chọn lựa các giải pháp sau:

1. Không làm gì cả nếu không muốn gửi lệnh điều khiển hay không có thay đổi bất kỳ thông số nào của thiết bị.

2. Trường hợp nếu muốn kiểm tra cấu hình hiện tại (đã được thiết lập) trên thiết bị thì có thể thực hiện như Hình 3.8

4. Trường hợp khi cần thiết lập lại cấu hình cho thiết bị thì thực hiện như Hình 3.10

khi thực hiện xong mọi tác vụ cần thiết trong chương trình chính thì mặc định vi điều khiển sẽ rơi vào chế độ LPM0 (Low Power Mode-0). Khi đã rơi vào trạng thái LPM0 thì vi điều khiển chỉ có thể trở về chế độ hoạt động tích cực khi có một tác vụ ngắt được thực thi.

.4.2 Lưu đồ giải thuật chương trình

.4.2.1 Mô tả hoạt động và giải thuật tổng quát của chương trình

Về phương thức hoạt động, sau khi được cấp nguồn thiết bị sẽ kiểm tra và gửi tất cả các thông số đã được thiết lập trước đó như IP, PORT của server lưu trữ cùng các thông số định thời mà người dùng đã thiết đặt bằng tin nhắn SMS. Mặc định, ngay sau khi cấp nguồn thiết bị sẽ giữ chức năng truyền nhận GSM hoạt động trong khoảng 5 phút, trong khoảng thời gian này người dùng có quyền thay đổi lại thông số mới cho thiết bị. Sau khoảng thời gian trên, mọi thiết lập điều khiển sẽ không được xử lý cho đến khi chức năng GSM được phép hoạt động trở lại.

Ở chế độ thường trực thiết bị sẽ cập nhật và hiển thị giá trị các thông số thời gian, nhiệt độ, số mẫu đã lấy và điện áp trên LCD. Tiếp đó vi điều khiển sẽ lắng nghe xem “cờ” nào trong các bộ định thời được bật lên để thực hiện các công việc tương ứng. Lưu đồ giải thuật được trình bày ở Hình 3.12. Trong đó các đoạn chương trình con được đề câp như: kiểm tra tin nhắn đến, lấy mẫu dữ liệu lưu vào bộ nhớ, kết nối và truyền dữ liệu về server lưu trữ được trình bày cụ thể trong các đề mục 3.4.2.2, 3.4.2.33.4.2.4. Một số biến quy ước chung gồm có:

- flag_on là cờ báo hiệu cho biết khi nào cần đánh thức SIM900 (được set

lên trong Timer A1).

- flag_off là cờ báo hiệu cho biết khi nào cần cho SIM900 vào chế độ ngủ

(được set lên trong Timer B0).

- flag_sample là cờ báo cho biết khi nào cần lấy mẫu dữ liệu (được set lên

trong Timer A0).

- count_timerA0 là biến chỉ số lần ngắt cần thiết để bật cờ flag_sampling

trong Timer A0 (số vòng lặp cần thiết dựa vào chu kỳ lấy mẫu T_sampling – xem mục 3.4.2.2).

- count_timerA1 là biến chỉ số lần ngắt cần thiết để bật cờ flag_off trong Timer A1.

thì nội dung tin nhắn SMS gửi đến thiết bị phải theo cú pháp (quy ước) như sau:

 Cú pháp yêu cầu cập nhật dữ liệu về server lưu trữ :

<Mật khẩu>,<addr>, <IP>,<PORT><#>

Ví dụ: Để thiết lập kết nối (như Hình 3.7) đến máy server có địa chỉ IP: 42.117.107.171, PORT: 1234 thì cú pháp là:

123456,addr,42.117.107.171,1234#. Với mật khẩu là 123456 và addr là

từ khóa của lệnh.

 Cú pháp cài đặt cấu hình thiết bị:

<Mậtkhẩu>,<config>,<T_update>,<T_sample> ,<warning_number><#>

Thí dụ: Để thiết lập thông tin điều khiển, cứ khoảng sau 2 giờ thiết bị kích hoạt chức năng truyền nhận GSM để lắng nghe thông tin cập nhật từ người quản lý, chu kỳ lấy mẫu dữ liệu là 1 phút và cứ lấy đủ 200 mẫu thì tự động kết nối với server lưu trữ để truyền dữ liệu thì cú pháp như sau:

123456,config,2,1,200#

 Cú pháp xem cấu hình đã thiết đặt trước đó

<Mậtkhẩu>,<status parameters>#

 Cú pháp kiểm tra tổng số mẫu đã thu thập được

<Mậtkhẩu>,<status data>#

Hình 3.13: Lưu đồ giải thuật xử lý tin nhắn SMS

Đoạn chương trình con xử lý yêu cầu cập nhật về server (Hình 3.13) được trình bày chi tiết trong Hình 3.14, sau khi thiết bị nhận được thông tin địa chỉ IP và

Hình 3.14: Lưu đồ giải thuật xử lý tin nhắn yêu cầu cập nhật

.4.2.3 Giải thuật chương trình lấy mẫu dữ liệu

Bằng cách dựa vào chu kỳ lấy mẫu (biến T_sampling) bộ xử lý sẽ tính toán khoảng thời gian giữa 2 lần lấy mẫu liên tiếp nhau (dựa vào số lần ngắt đã xãy ra trong Timer A0- đề mục 3.4.3.2). Khi đã đến thời gian lấy mẫu, thông tin về số thứ

dạng của một khung gồm có 12 byte, định dạng của mỗi khung được trình bày như trong Bảng 3.1

Bảng 3.1: Định dạng khung dữ liệu lưu trữ vào bộ nhớ FRAM

ID Thời gian lấy mẫu Thông tin ID gói tin ID thiết bị Thông tin về thời gian Điện thế Nhiệt độ

1 byte 1 byte 6 byte 2 byte 2 byte

Tổng dung lượng 1 mẫu tin = 12 byte

Kết thúc việc xử lý và lưu 1 khung thông tin vào bộ nhớ lưu trữ, tiếp theo VĐK sẽ cập nhật lại tổng số mẫu đã lấy (biến count_sampling – mục 3.4.2). Căn cứ vào thông tin tổng số mẫu đã lấy, VĐK tiếp tục so sánh với ngưỡng mà người dùng thiết đặt trước đó (biến warning_number- mục 3.4.2) nếu số mẫu đã lấy bằng với mức ngưỡng thì thiết bị sẽ đánh thức chức năng truyền nhận GSM để gửi tin nhắn cảnh báo đến người quản lý yêu cầu người dùng cập nhật dữ liệu về server lưu trữ. Giải thuật chương trình lấy mẫu và lưu trữ được trình bày như Hình 3.15

số mẫu mà nó đã lấy, sau đó lượt từng gói tin theo thứ tự tăng dần từ gói đầu tiên được lấy cho tới gói tin hiện tại ngay trước khi thực hiện công việc cập nhật về server

Hình 3.16: Lưu đồ chương trình gửi dữ liệu về server

.4.3 Chương trình thực hiện các ngắt

 Timer A0 được sử dụng như 1 bộ định thời có chức năng tạo ra các khoảng thời gian cách đều nhau giữa các lần lấy mẫu.

 Timer A1 được dùng tính thời gian đóng chức năng truyền nhận GSM (bắt đầu tính từ thời điểm thiết bị bật chức năng truyền nhận GSM).

 Timer B0 được dùng để tính thời gian để mở chức năng truyền nhận GSM (bắt đầu tính từ thời điểm thiết bị tắt chức năng truyền nhận GSM). Mặc định tất cả 3 Timer được cài đặt cứ 0.5 giây sẽ vào ngắt kiểm tra và xử lý công việc (nếu cho phép ngắt Timer đó hoạt động). Timer A0 luôn được phép ngắt, Timer A1 và Timer B0 sẽ được hoạt động luân phiên.

.4.3.1 Ngắt nhận dữ liệu từ SIM900 (ngắt cổng UART)

Như đã trình bài về tập lệnh AT thì đáp ứng (response) của lệnh AT có định dạng: “<CR><LF><Response><CR><LF>”. Giải thuật xử lý dữ liệu từ đáp ứng được trình bài như trong Hình 3.17.

Do chuẩn truyền thông UART chỉ truyền nhận thông tin theo từng byte, để nhận đầy đủ đáp ứng (response) của module SIM900 thì cần có 1 bộ đệm lưu trữ lại các ký tự trong chuỗi đáp ứng trước khi xử lý thông tin. Ở đây, một mảng

buffer[buffer_size] đươc khai báo để sử dụng như một bộ đệm trong quá trình nhận

dữ liệu từ SIM900; với buffer là tên mảng, buffer_size là số phần tử tối đa của mảng, j là một biến đếm dùng để đánh dấu chỉ số phần tử của mảng.

.4.3.2 Lưu đồ chương trình xử lý ngắt Timer A0

Timer A0 được dùng để xác định thời điểm lấy mẫu tiếp kể từ lần lấy mẫu trước đó dựa vào thông số cài đặt của người quản lý. Gọi T_sample là thời gian được tính bằng phút giữa hai lần lấy mẫu liên tiếp và gọi số lần ngắt cần thiết để lấy 1 mẫu ứng với T_sample là count_timerA0. Do sau mỗi 0.5 giây ngắt xảy ra một lần vì vậy số lần ngắt tương ứng với thời gian lấy mẫu count_timerA0 = T_sample*120.

khá nhiều điện năng nên khoảng thời gian này cần được tính toán hợp lý sao cho vừa đủ để người dùng có thể kịp đưa ra thông tin điều khiển. Trong thực tế, khoảng thời gian 5 phút là đủ để người dùng kịp đưa ra những thông tin điều khiển (nếu cần) vì vậy chức năng chính của Timer A1 là tạo khoảng định thời 5 phút để sau đó set cờ flag_off =1.

.4.3.4 Lưu đồ chương trình trong ngắt Timer B0

Timer B0 được sử dụng như một bộ định thời. Timer B0 chỉ được phép hoạt động (interrupt enabled) ngay sau khi chức năng truyền nhận GSM đóng lại (SIM900 hoạt động trong chế độ shutdown). Dựa vào thông số T_update (xem mục 3.4.2.2) bộ xử lý sẽ tính toán số lần nhảy vào ngắt tương ứng trước khi set cờ flag_on =1. Ở đây, T_update là thời gian được tính bằng giờ do người dùng thiết đặt thông qua tin nhắn điều khiển, do ngắt xảy ra sau mỗi 0.5 giây vì vậy số lần xảy ra ngắt trong 1 giờ tương ứng với 7200 lần.

Hình 3.20: Lưu đồ chương trình ngắt Timer B

Một phần của tài liệu Luận văn thiết kế thiết bị thu thập nhiệt độ và truyền dữ liệu về server lưu trữ sử dụng dịch vụ GPRS (Trang 32)

Tải bản đầy đủ (DOCX)

(66 trang)
w