Lập trình cho vi điều khiển Atmega128

Một phần của tài liệu ỨNG DỤNG CÔNG NGHỆ GPS GPRS GIÁM SÁT HỆ THỐNG XE BUÝT (Trang 104 - 130)

3. Họ và tên giáo viên hướng dẫn: TS Nguyễn Trường Thịnh

4.3. Lập trình cho vi điều khiển Atmega128

88

Sau khi phân tích các yêu cầu của đề tài, vi điều khiển phải thực hiện các công việc: nhận và xử lý dữ liệu GPS, gửi dữ liệu qua GPRS về server, xử lý các thông tin phản hồi từ server. Do vậy, thuật toán của chương trình như sau:

Begin

Hiển thị dữ liệu GPS lên LCD

Kiểm tra Kết nối tới sever

End

Nhận và xử lý dữ liệu GPS

Chương trình gửi dữ liệu tới server

Y

N

Khởi tạo các giá trị ban đầu

Chương trình nhận dữ liệu từ server và thi hành

89

Vì GPS gửi thông tin về là một chuỗi dữ liệu gồm rất nhiều thông tin khác nhau, bản tin GPS gửi về có cấu trúc:

Hình 4.3 Cấu trúc chuỗi tin GPRMC

$GPRMC,123519,A,4807.038,N,11131.200,E,022.4,084.4,230910,003.1,W*6A T Thhờờii ggiiaann :: 1 122ggiiờờ 3 355pphhúútt 1 199ggiiââyy ( (UUTTCC)) B Bcc ĐĐôônngg T TccĐĐ:: 0 02222..44KKnnoott N Nggààyy:: 2 233//0099//22001100 K KiinnhhĐĐ:: 1 1111100 3311..220000´´ V VĩĩĐĐ:: 4 48800 0077..003388´´

90

Từ cấu trúc của bản tin để lấy được những thông tin : thời gian, vĩ độ, kinh độ, tốc độ ta có lưu đồ thuật toán sau:

BEGIN

Data= “$GPRMC”

Bỏ qua 1 phần tử

Lấy giá trị giờ

Lấy thông số vĩ độ Bỏ qua 3 phần tử

Bỏ đi 3 phần tử Y

N

Lấy thông số kinh độ

Lấy ngày tháng năm Bỏ qua 7 phần tử Lấy thông số tốc độ Bỏ qua 3 phần tử END Data có “A” N 1 1

91

CHƯƠNG 5: XÂY DỰNG PHẦN MỀM SERVER 5.1. Yêu cầu và mục đích của hệ thống phần mềm

Chức năng giám sát:

- Hiển thị vị trí chính xác các phương tiện trên bản đồ. - Thường xuyên update vị trí của phương tiện.

- Quan sát được lộ trình của phương tiện. Chức năng điều khiển, cảnh báo:

Thông qua kết nối GPRS, Server kết nối và nhận dữ liệu từ thiết bị, thông qua dữ liệu nhận về Server thực hiện tính toán các giá trị như: Vị trí, tốc độ, tình trạng xe... từ đó đưa ra những điều khiển, cảnh báo cho phương tiện.

- Các điều khiển: gửi thông tin tới các trạm chờ xe buýt, gửi thông tin về thời gian sắp đến trạm kế của xe buýt...

- Các cảnh báo như: Quá tốc độ, cảnh báo khi xảy ra tắc đường và hướng dẫn xe buýt tìm được đường đi nhanh nhất...

Chức năng quản lý thông tin:

- Bao gồm chức năng theo dõi thông tin vị trí, tốc độ, và các trạng thái khác của phương tiện.

92

Hình 5.1 Sơ đồ hệ thống

Hệ thống phần mềm bao gồm 3 phần chính:

- Phần mềm server quản lý kết nối giữa trung tâm và User - là các thiết bị phần cứng đặt trên xe buýt và các trạm chờ xe buýt.

- Phần mềm hiển thị giao diện quản lý tuyến xe và trạm chờ : Hiển thị thông tin xe buýt và trạm chờ.

- Hiển thị vị trí của xe buýt và trạm chờ trên bản đồ offline.

5.2.Cấu trúc và sơ đồ giải thuật

5.2.1. Cấu trúc

Phần mềm xây dựng trên sơ đồ 3 lớp:

93

5.2.2. Sơ đồ giải thuật

Dữ liệu thu nhận qua server Phân tích và xử lý dữ liệu Quản lý thông tin về buýt và trạm buýt Hiển thị lên bản đồ buýt và trạm buýt Gửi xuống buýt và trạm xe buýt

Thông tin vị trí khoảng cáchTính toán Lưu trữ thông tin

94

5.3. Xây dựng phần mềm server quản lý phương tiện, ứng dụng giao thức TCP/IP 5.3.1 Ứng dụng giao thức TCP/IP trong việc liên kết các user qua mạng 5.3.1 Ứng dụng giao thức TCP/IP trong việc liên kết các user qua mạng

internet.

5.3.1.1. Sơ lược về TCP server.

Đây là chương trình trên máy tính dùng để truyền nhận các gói TCP giữa các thiết bị và máy tính được kết nối với đường truyền internet công cộng. Phần mềm do nhóm tự thiết kế và thực hiện.

Phần mềm này thực hiện bằng công cụ socket cho phép ta biết được địa chỉ của server mà thiết bị cần kết nối, để thực hiện các thao tác sau này.

Trong quá trình truyền dữ liệu qua mạng internet có 2 giao thức là UDP và TCP dùng để truyền nhận dữ liệu. TCP có ưu điểm hơn là: Đảm bảo độ tin cậy của gói dữ liệu được truyền đi do quá trình kết nối và bắt tay chặt chẽ giữa client (trong trường hợp này là module SIM548) và server. Tuy tốc độ chậm nhưng vẫn phù hợp với các ứng dụng. Vì thế nhóm chọn giao thức TCP để kết nối trong hệ thống.

5.3.1.2. Đơn vị điều khiển socket

Đây là công cụ được lựa chọn để xây dựng ứng dụng server. Thực tế quá trình khảo sát cho thấy một số hạn chế sau:

Số lượng socket hạn chế: Có thể tạm hiểu một socket là một liên kết. Khi một client thiết lập một kết nối với server, chương trình ứng dụng sẽ phải mở một socket (hay một liên kết) để thao tác với kết nối đó. Do số lượng socket có hạn (65535 socket), bên cạnh đó số lượng client trong hệ thống là rất lớn, do đó cần quản lí thật chặt các liên kết, hủy bỏ các kết nối không hiệu quả, không truyền nhận dữ liệu sau một khoảng thời gian ngắn.

Thời gian xử lí khá chậm: Do giao thức TCP/IP đòi hỏi một quy trình bắt tay chặt chẽ, gói dữ liệu trước khi truyền nhận phải chờ thông tin phản hồi của gói dữ liệu trước đó, nên thời gian xử lí một gói TCP/IP lên đến khoảng 200 ms. Do đó cần có sự cân đối giữa thời gian truyền nhận và số lượng liên kết cho phép.

5.3.1.3. Quy trình tạo một server trên máy tính sử dụng socket

Tạo một phần mềm server có khả năng mở socket liên kết, khả năng trao đổi dữ liệu giữa server và client, chức năng hiển thị các liên kết và điều khiển các client.

Sau khi có được phần mềm, ta phải tạo một ứng dụng chạy trên mạng NAT ( mạng ảo hóa nội bộ) chỉ đến server, bằng cách mở một Port trên modem chỉ đến máy

95

tính đang chạy phần mềm server. Port này chứa IP của máy tính chạy server trên mạng LAN.

Sau đó thông báo địa chỉ IP của modem ADSL cho client được biết. Cách biết được IP của một kết nối, truy cập vào website www.IP2location.com.

Client sẽ dùng địa chỉ IP này để kết nối đến server.

5.3.2 Giải pháp ứng dụng của module Sim548 trong việc kết nối server- client

5.3.2.1. Đối với server.

Đầu tiên, Server thực hiện thao tác lắng nghe yêu cầu kết nối. Khi có một yêu cầu thực hiện kết nối, thì cho phép thực hiện kết nối.

Khi kết nối thành công thì cho phép truyền nhận dữ liệu, nhưng nếu user ngắt kết nối, kết nối sẽ bị hủy nhằm tiết kiệm tài nguyên. Qua thực tế kiểm nghiệm các mạng GPRS hiện hành, mặc dù kết nối đã bị hủy bởi hệ thống mạng, nhưng phía module và Server vẫn không nhận biết được trạng thái đường truyền đã bị hủy. Thao tác này giúp giảm bớt rủi ro của các liên kết truyền nhận dữ liệu trong quá trình vận hành hệ thống.

Xây dựng giao thức liên kết dữ liệu: Tùy theo mục đích sử dụng của dữ liệu, ta có thể xây dựng một giao thức phù hợp. Đây là giao thức được sử dụng trong quá trình thử nghiệm ứng dụng GPRS login: UserID, password dùng cho thao tác login_data, nội dung dữ liệu dùng cho quá trình truyền nhận dữ liệu. Có thể bổ sung thêm các cấu trúc dùng cho các thao tác điều khiển, nhận biết.

5.3.2.2. Module Sim548

Chú ý thời gian thực thi của mỗi lệnh và đặt thời gian “time-out” hợp lí. Đặc biệt chú ý các lệnh “AT+CIPSTART” và “AT+CIPSEND”. Nếu thời gian thực thi lâu hơn thời gian khảo sát, kết quả thực thi các lệnh này chắc chắn thất bại.

Do phía server đã chủ động được các liên kết, nên khi nhận được chuỗi “<CR><LF>CLOSED<CR><LF>”, nếu có nhu cầu tiếp tục truyền nhận thông tin, cần khởi tạo kết nối với server và “login” trong khoảng thời gian 1 phút kể từ khi kết nối được thực hiện.

Nếu quá trình khởi tạo kết nối gặp khó khăn, nên reset lại module (bằng lệnh “AT+CFUN=0” và “AT+CFUN=1”) và bắt đầu khởi tạo lại kết nối.

Khi nhận được chuỗi “<CR><LF>+CGREG: 0<CR><LF>” thông báo vị trí hiện tại của module không được hỗ trợ sóng GPRS, nên tạm thời ngắt kết nối GPRS

96

cho đến khi chuyển đến vị trí có sóng GPRS (nhận biết bằng chuỗi <CR><LF>+CGREG: 1<CR><LF>), hoặc chuyển sang phương pháp truyền nhận dữ liệu khác, chẳng hạn như SMS.

5.3.3 Khả năng và mức độ đáp ứng của Server

Trên lý thuyết mức độ hỗ trợ của server có thể lên đến hàng ngàn user một lúc. Tuy nhiên trong điều kiện đồ án này, nhóm chưa thực nghiệm được cụ thể, hiện mới chỉ thử nghiệm với 3 user thật và 2-3 user ảo và hệ thống hoàn toàn đáp ứng.

Để có thể duy trì hệ thống thì cần có kế hoạch trong việc truyền và nhận dữ liệu. Đặt các cơ chế cập nhật thời gian một cách chính xác và tiết kiệm. Hiện nay các dữ liệu của user được cập nhật liên tục.

Tốc độ truyền nhận dữ liệu giữa module và server là khá nhanh, đạt mức 20kbps.

5.3.4 Vấn đề bảo mật của hệ thống

Có thể hình dung GPRS như một mạng LAN sử dụng đường truyền vô tuyến thay cho đường truyền bằng cáp mạng. Mọi kết nối với mạng internet bên ngoài đều thông qua 1 Gateway. Do đó mạng internet bên ngoài không thể “nhìn thấy” được địa chỉ IP của thiết bị bên trong (trong trường hợp này là module SIM548), mà chỉ “nhìn thấy” được địa chỉ IP của Gateway của mạng GPRS của nhà cung cấp dịch vụ.

Như vậy, server không thể phân biệt được module nào vừa thực hiện kết nối với Server nếu chỉ dựa vào địa chỉ IP. Muốn làm được điều đó, thì sau khi thực hiện được liên kết, module user phải gửi các gói dữ liệu cung cấp thông tin về module đó cho server. Khi xây dựng hệ thống, để phân biệt được thông tin nhận được từ module nào gửi đến, phải qui định cho mỗi module một “ID”, chẳng hạn như mã xe mà module đó đang được gắn lên. Công việc này đồng nghĩa với việc ta đang xây dựng một lớp ứng dụng dựa trên lớp TCP. Quy trình cung cấp thông tin về module cho Server tương tự như một quy trình “đăng nhập” thường thấy trong các ứng dụng liên quan đến mạng internet như Yahoo.

Tuy nhiên, module Sim548 lại có thể “nhìn thấy” địa chỉ IP của Server. Khi module SIM548 nhận được gói dữ liệu được truyền đi từ Server, địa chỉ IP của Server được hiển thị trong phần header của gói dữ liệu đó. Thông tin này giúp module phân biệt được các gói dữ liệu nhận được và có được phương thức xử lí phù hợp.

Về phía Server, nếu chỉ dừng lại ở việc quy định “ID” cho mỗi module SIM548 thì vẫn có nhiều chỗ hở trong vấn đề bảo mật, vì chỉ cần nắm được thông tin về ID,

97

một thiết bị bên ngoài hệ thống đang xây dựng vẫn có thể kết nối, đăng nhập vào Server và gây ra những khó khăn cho hệ thống. Vì thế để tăng cường phương thức bảo mật hệ thống, sản phẩm được áp dụng một số giải pháp sau:

- Xây dựng một “tường lửa” (firewall): Tức là chỉ cho phép một số địa chỉ IP được thực hiện kết nối với Server, bao gồm địa chỉ IP của các gateway của nhà cung cấp dịch vụ (địa chỉ IP của mạng Viettel là “203.113.138.98”, của mạng Mobi Fone là “210.245.59.148”), một số địa chỉ IP có thể nhận biết được và không cho phép các địa chỉ IP lạ đăng nhập vào hệ thống. Hạn chế của “tường lửa” là không phân biệt được thiết bị có thuộc hệ thống hay không, ví dụ như một “hacker” có thể sử dụng một module SIM548 và dùng mạng GPRS của Viettel để đăng nhập vào hệ thống, khi đó “tường lửa” sẽ không phân biệt được đâu là module của “hacker”, đâu là module của hệ thống, vì cả hai đều có chung một địa chỉ IP mà “tường lửa” cho phép vượt qua, đó là địa chỉ IP của gateway của mạng Viettel, và “hacker” đã vượt qua được “tường lửa” một cách dễ dàng.

- Xây dựng cơ chế “login”: Đây là bước sàng lọc tiếp theo sau “tường lửa”. Sau khi đã thực hiện được kết nối với Server, các module phải cung cấp ID và password phù hợp để Server nhận diện, và có thể được mã hóa/giải mã nếu cần thiết.

- Xây dựng một giao thức riêng cho lớp ứng dụng: Cơ chế này phục vụ cho quá trình sàng lọc thông tin được gửi đến từ các module SIM548. Những gói dữ liệu không phù hợp với giao thức sẽ bị loại bỏ, vì dữ liệu đó chắc chắn không phải do các module SIM548 trong hệ thống gửi đến.

- Xây dựng cơ chế mã hóa và giải mã dữ liệu: Cơ chế này chỉ nên được sử dụng trong những hệ thống yêu cầu tính bảo mật cao, vì sẽ tiêu tốn nhiều tài nguyên, và tăng gánh nặng về xử lí thuật toán cho các hệ nhúng được sử dụng trong hệ thống.

5.3.5 Giải pháp GPRS

Ứng dụng GPRS trong truyền nhận dữ liệu mang lại nhiều ưu thế hơn so với SMS:

- Chi phí duy trì hệ thống thấp hơn rất nhiều lần so với SMS. - Tốc độ nhanh, dung lượng thông tin cho phép truyền tải lớn. - Độ tin cậy cao.

98 - Chủ động được trạng thái đường truyền.

- Tương thích với nhiều mô hình ứng dụng, từ đơn giản đến phức tạp.

Tuy nhiên trong thực tế, hạn chế của GPRS là vùng phủ sóng, độ ổn định, nhưng hiện nay các mạng cung cấp dịch vụ GPRS tại Việt Nam phủ sóng GPRS ở hầu hết các khu vực từ thành phố đến nông thôn. Phương thức này có khả năng mang lại một giải pháp hoàn thiện cho ứng dụng.

GPRS là một công nghệ khá hoàn thiện và phổ biến hiện nay, việc lựa chọn sử dụng GPRS hoàn phù hợp và đáp ứng được yêu cầu đặt ra cũng như yêu cầu công nghệ hiện nay.

Ngoài ra, ta còn kết hợp sử dụng GPRS và SMS để làm toàn diện hơn ứng dụng. Đôi khi do điều kiện trí hiện tại của module không được hỗ trợ sóng GPRS, môi trường, lỗi mạng ta không thể kết nối và sử dụng GPRS có thể tạm thời thay thế đường truyền dữ liệu GPRS bằng dịch vụ SMS. Giải pháp này vừa tiết kiệm chi phí duy trì hệ thống, vừa hoàn thiện ứng dụng.

5.4. Xây dựng phần mềm Server dùng Java

5.4.1 Java và lịch sử phát triển

Java là ngôn ngữ lập trình hướng đối tượng (tựa C++) do sun Microsystem đưa ra vào giữa thập niên 90. Chương trình viết bằng ngôn ngữ lập trình java có thể chạy trên bất kỳ hệ thống nào có cài máy ảo java (Java Virtual achine).

Ngôn ngữ lập trình Java do James Gosling và các công sự của Công ty Sun Microsystem phát triển. Đầu thập niên 90, Sun Microsystem tập hợp các nhà nghiên cứu thành lập nên nhóm đặt tên là Green Team. Nhóm Green Team có trách nhiệm xây dựng công nghệ mới cho ngành điện tử tiêu dùng. Để giải quyết vấn đề này nhóm nghiên cứu phát triển đã xây dựng một ngôn ngữ lập trình mới đặt tên là Oak tương tự như C++ nhưng loại bỏ một số tính năng nguy hiểm của C++ và có khả năng chạy trên nhiều nền phần cứng khác nhau. Cùng lúc đó world wide web bắt đầu phát triển và Sun đã thấy được tiềm năng của ngôn ngữ Oak nên đã đầu tư cải tiến và phát triển. Sau đó không lâu ngôn ngữ mới với tên gọi là Java ra

Một phần của tài liệu ỨNG DỤNG CÔNG NGHỆ GPS GPRS GIÁM SÁT HỆ THỐNG XE BUÝT (Trang 104 - 130)