.42 – Khung ACK

Một phần của tài liệu mobile robot (Trang 48)

Địa chỉ Máy thu của khung ACK được sao chép từ trường Địa chỉ 2 của khung ngay trước đó. Nếu nhiều bit Đoạn hơn được xóa (0) trong trường điều khiển khung của khung trước đó, thì giá trị Khoảng thời gian là 0, nếu khơng thì giá trị Khoảng thời gian thu được từ trường Khoảng thời gian của khung trước đó, trừ đi thời gian (tính theo micrơ - giây) được để phát khung ACK và khoảng SIFS của nó.

2.3.10 Hàm Phối hợp Điểm (PCF)

Bên cạnh Hàm Phối hợp Phân tán cơ bản, có một Hàm Phối hợp Điểm để chọn, mà sử dụng để thực hiện các dịch vụ biên - thời gian, như tiếng nói hoặc truyền video. Hàm Phối hợp Điểm làm cho điểm truy cập sử dụng quyền ưu tiên cao hơn bằng cách sử dụng một Không gian khung Inter (PIFS) nhỏ hơn.

Bằng cách sử dụng cao hơn này quyền ưu tiên truy cập, các vấn đề điểm truy cập kiểm tra tuần tự yêu cầu của các trạm để truyền dữ liệu, do đó điều khiển việc truy cập mơi trường. Để cho phép cho các trạm bình thường khả năng vẫn cịn truy cập mơi trường, có một chuẩn bị mà điểm truy cập phải để lại đủ thời gian cho Truy cập Phân tán trong giữa PCF.

2.3.11 Các mạng Ad hoc

Trong một số trường hợp các người dùng muốn lập một mạng LAN khơng dây mà khơng có một cơ sở hạ tầng (đặc biệt hơn khơng có một điểm truy cập), điều này bao gồm truyền file giữa hai người dùng máy notebook, cuộc họp giữa các cộng tác viên bên ngồi văn phịng...

Chuẩn IEEE 802.11 giải quyết các nhu cầu này bằng cách định nghĩa một mô hình hoạt động “Ad hoc”, trong trường hợp này khơng có điểm truy cập nào hoặc phần nào tính năng của nó được thực hiện bởi các trạm người dùng cuối (như tạo báo hiệu, đồng bộ, vân vân), và các chức năng khác không được hỗ trợ (như đặt lại giữa hai trạm không nằm trong phạm vi, hoặc tiết kiệm năng lượng).

2.3.12 Họ chuẩn IEEE 802.11 2.3.12.1 Chuẩn IEEE 802.11a

Là một chỉ tiêu kỹ thuật IEEE cho mạng không dây hoạt động trong dải tần số 5 GHz (5.725 GHz tới 5.85 GHz) với tốc độ truyền dữ liệu cực đại 54 Mbps. Dải tần số 5 GHz khơng nhiều như tần số 2.4 GHz, vì chỉ tiêu kỹ thuật chuẩn IEEE 802.11 đề nghị nhiều kênh vô tuyến hơn so với chuẩn IEEE 802.11b. Sự bổ sung các kênh này giúp tránh giao thoa vô tuyến và vi ba.

2.3.12.2 Chuẩn IEEE 802.11b (Wifi)

Là chuẩn quốc tế cho mạng không dây hoạt động trong dải tần số 2.4 GHz (2.4 GHz tới 2.4835 GHz) và cung cấp một lưu lượng lên trên 11 Mbps. Đây là một tần số rất thường sử dụng. Các lò vi ba, các điện thoại không dây, thiết bị khoa học và y học, cũng như các thiết bị Bluetooth, tất cả làm việc bên trong dải tần số 2.4 GHz.

2.3.12.3 Chuẩn IEEE 802.11d

Chuẩn IEEE 802.11d là một chuẩn IEEE bổ sung lớp sự điều khiển truy cập (MAC) vào chuẩn IEEE 802.11 để đẩy mạnh khả năng sử dụng rộng mạng WLAN chuẩn IEEE 802.11. Nó sẽ cho phép các điểm truy cập truyền thông thông tin trên các kênh vô tuyến dùng được với các mức công suất chấp nhận được cho các thiết bị khách hàng. Các thiết bị sẽ tự động điều chỉnh dựa vào các yêu cầu địa lý.

Mục đích 11d là sẽ thêm các đặc tính và các hạn chế để cho phép mạng WLAN hoạt động theo các quy tắc của các nước này. Các nhà sản xuất Thiết bị không muốn để tạo ra một sự đa dạng rộng lớn của các sản phẩm và các người dùng chuyên biệt theo quốc gia mà người đi du lịch không muốn một túi đầy các card PC mạng WLAN chuyên biệt theo quốc gia. Hậu quả sẽ là các giải pháp phần sụn chuyên biệt theo quốc gia.

2.3.12.4 Chuẩn IEEE 802.11g

Tương tự tới chuẩn IEEE 802.11b, chuẩn lớp vật lý này cung cấp một lưu lượng lên tới 54 Mbps. Nó cũng hoạt động trong dải tần số 2.4 GHz nhưng sử dụng một công nghệ vô tuyến khác để tăng dải thơng tồn bộ. Chuẩn này được phê chuẩn cuối năm 2003.

2.3.12.5 Chuẩn IEEE 802.11i

Đây là tên của nhóm làm việc IEEE dành cho chuẩn hóa bảo mật mạng WLAN. Bảo mật chuẩn IEEE 802.11i có một khung làm việc được dựa vào RSN (Cơ chế Bảo mật tăng cường). RSN gồm có hai phần:

1. Cơ chế riêng của dữ liệu. 2. Quản lý liên kết bảo mật.

Cơ chế riêng của dữ liệu hỗ trợ hai sơ đồ được đề xướng: TKIP và AES. TKIP (Sự tồn vẹn khóa thời gian) là một giải pháp ngắn hạn mà định nghĩa phần mềm vá cho WEP để cung cấp một mức riêng tư dữ liệu thích hợp tối thiểu. AES hoặc AES - OCB (Advanced Encryption Standard and Offset Codebook) là một sơ đồ riêng tư dữ liệu mạnh mẽ và là một giải pháp thời hạn lâu hơn.

Quản lý liên kết bảo mật được đánh địa chỉ bởi: a) Các thủ tục đàm phán RSN.

b) Sự Chứng thực chuẩn IEEE 802.1x. c) Quản lý khóa chuẩn IEEE 802.1x.

Các chuẩn đang được định nghĩa để cùng tồn tại một cách tự nhiên các mạng pre - RSN mà hiện thời được triển khai. Chuẩn này không kỳ vọng sẽ được thông qua cho đến khi kết thúc năm 2003.

2.3.12.6 Chuẩn IEEE 802.1x (Tbd)

Chuẩn IEEE 802.1x (Yêu cầu một nhà cung cấp dịch vụ RADIUS) cung cấp các doanh nghiệp & các nhà riêng một giải pháp chứng thực bảo mật, biến đổi được sử dụng kỹ thuật tái khóa (re - keying) động, sự chứng thực tên và mật khẩu người dùng và chứng thực lẫn nhau. Kỹ thuật tái khóa động, mà trong suốt với người dùng, loại trừ phân phối khóa khơng bảo mật và sự chi phốI thời gian và ngăn ngừa các tấn cơng liên quan đến các khóa WEP tĩnh. Sự chứng thực trên nền người dùng loại trừ các lỗ bảo mật xuất hiện từ thiết bị bị trộm hoặc mất khi sự chứng thực trên nền thiết bị được sử dụng, và sự chứng thực lẫn nhau giảm nhẹ tấn công dựa vào các điểm truy cập láu cá. Đồng thời, vì sự chứng thực chuẩn IEEE 802.1x thơng qua một cơ sở dữ liệu RADIUS, nó cũng chia thang để dễ dàng điều khiển các số lượng người dùng mạng WLAN đang gia tăng.

CHƯƠNG 3

THIẾT KẾ VÀ THI CÔNG

3.1 Sơ đồ khối hệ thống

3.2 Chức năng từng khối

-Khối Mini2440 : làm nhiệm vụ điều khiển động cơ,nhận và xử lý tín hiệu từ camera truyền về,sau đó thông qua USB wireless truyền về laptop hay PC - Khối nguồn : cung cấp nguồn cho toàn bộ hệ thống

- Khối camera : thu nhận hình ảnh từ môi trường truyền về board Mini2440 - Khối mạch điều khiển DC : nhận tín hiệu điều khiển từ board Mini2440 để

điều khiển động cơ

-Khối USB wireless : truyền/nhận tín hiệu giữa borad Mini2440 và laptop hay PC

- Laptop-PC : nhận hình ảnh truyền về từ board Mini2440 đồng thời gửi lại tín hiệu điều khiển xuống board.

3.3 Thiết kế các khối hệ thống

3.3.1 Khối Mini2440

- Là kit có sẵn,chỉ việc kết nối và sử dụng

- Sử dụng cách chân GPIO để xuất dữ liệu điều khiển động cơ

Hình 3.2 – Sơ đồ chân GPIO

-Chân VDD5V và GND cấp nguồn cho mạch điều khiển - Chân 9-11-15-17 dùng điều khiển 2 động cơ sau củ axe - Chân 21 dùng điều khiển động cơ servo quay camera

3.3.2 Khối camera và usb wireless

- Chọn loại camera và usb wireless thích hợp,không cần chế tạo lại.ở đây nhóm thực hiện chọn camera USB và USB wireless TP-Link 54Mb

3.3.3 Khối điều khiển DC

Hình 3.4 – L298

Hình 3.7 – Mạch layout

- Dùng IC L298 là mạch tích hợp đơn chip có kiểu vỏ cơng suất 15 chân (multiwatt 15) và PowerSO20 (linh kiện dán công suất). Là IC mạch cầu đôi (dual full-bridge) có khả năng hoạt động ở điện thế cao, dịng cao. Nó được thiết kế tương thích chuẩn TTL và lái tải cảm kháng như relay, cuộn solenoid, động cơ DC và động cơ bước. Nó có 2 chân enable (cho phép) để cho

phép/không cho phép IC hoạt động, độc lập với các chân tín hiệu vào. Cực phát (emitter) của transistor dưới của mỗi mạch cầu được nối với nhau và nối ra chân ngoài để nối với điện trở cảm ứng dịng khi cần.

- Mỡi đợng cơ được điều khiển bởi các chân IN1-IN2-ENA và IN3-IN4- ENB.Những chân này điều khiển 2 mạch cầu H bên trong IC xuất tín hiệu ra điều khiển động cơ quay thuận nghịch.Chân ENA và ENB xuất tín hiệu cho phép chân IN1->IN4 hoạt động.Nếu ENA và ENB ở trạng mức logic 0 thì các chân IN ở trạng thái cấm.

- Sơ đồ chân kết nối :

+ Chân Vss được nối với nguồn 5V cung cấp nguồn cho IC hoạt động + Chân Vs cung cấp nguồn trực tiếp cho động cơ

+ Chân IN1-IN2-ENA điều khiển động cơ trái và IN3-IN4-ENB điều khiển động cơ phải

- Các diode trong mạch có tác dụng bảo vệ các van chuyển mạch.Chọn diode 1N4148 có tác dụng chuyển mạch nhanh.

3.3.4 Thiết kế khối nguồn

Hình 3.8 – Mạch nguồn

- Dùng IC 7805 để tạo nguồn 5V cho Board Mini2440 với 2 tụ đầu vào và đầu ra để ổn định dòng điện trong mạch.Led nối đầu ra cho biết trạng thái hoạt động của mạch.

3.4 Nguyên lý hoạt động

CHƯƠNG 4

XÂY DỰNG PHẦN MỀM

Yêu cầu phần mềm

- Cài đặt bootloader,kernel 2.6.32 và file system - Viết và build driver cho động cơ servo

- Build và config Mjpg cho Mini2440

- Viết chương trình Server(Controll) và Client(mini)

Phần mềm sử dụng

- QT Creator SDK

4.1 Driver Servo

- Driver Servo

o Cách viết driver servo

// Cấu trúc để đăng kí các hàm qua driver interface được quy định theo chuẩn struct file_operations servodrive_funcs = {

read: servodrive_read, write: servodrive_write, open: servodrive_open, release: servodrive_release

}; // Khai báo các hàm

int servodrive_open(struct inode *inode, struct file *filp); int servodrive_release(struct inode *inode, struct file *filp);

ssize_t servodrive_read(struct file *filp, char *buf, size_t count, loff_t *f_pos);

ssize_t servodrive_write(struct file *filp, const char *buf, size_t count, loff_t *f_pos); // Khai báo Major và các chân GPIO

int g_nServoDrvMajor = 0; int pin_gpio[] = { 160, /* PIN 9 */ 161, /* PIN 10 */ 162, /* PIN 11 */ 163, /* PIN 12 */ 164, /* PIN 13 */ 165, /* PIN 14 */ 166, /* PIN 15 */ 192, /* PIN 16 */ 193, /* PIN 17 */ 195, /* PIN 18 */

197, /* PIN 19 */ 198, /* PIN 20 */ 199, /* PIN 21 */ 200, /* PIN 22 */ 201, /* PIN 23 */ 202, /* PIN 24 */ 139, /* PIN 25 */ 140, /* PIN 26 */ 141, /* PIN 27 */ 194, /* PIN 28 */ 142, /* PIN 29 */ 143, /* PIN 30 */ 32, /* PIN 31 */ 33, /* PIN 32 */ 233, /* PIN 33 */ 234 /* PIN 34 */ };

// Khởi tạo driver servo

static int servodrive_init(void) {

printk("<1>Starting servo drive %s %s\n", __DATE__, __TIME__); servodrive_init_data();

g_nServoDrvMajor = register_chrdev(g_nServoDrvMajor, SERVODRIVE_NAME, &servodrive_funcs);

if (g_nServoDrvMajor < 0) {

printk("<l>Servodrive error: %i\n", g_nServoDrvMajor); return g_nServoDrvMajor;

}

printk("<1>major=%i\n", g_nServoDrvMajor);

servodrive_class = class_create(THIS_MODULE, SERVODRIVE_NAME); device_create(servodrive_class, NULL, MKDEV(g_nServoDrvMajor, id), NULL, SERVODRIVE_NAME "%d", id);

g_nServoDrvOpen = 1;

init_timer(&g_tlServoDrvPwm);

g_tlServoDrvPwm.function = servodrive_pwm;

g_tlServoDrvPwm.expires = jiffies + usecs_to_jiffies(SERVODRIVE_PERIOD); add_timer(&g_tlServoDrvPwm);

return 0; }

// Giải phóng hàm

static void servodrive_exit(void) { int i;

g_nServoDrvOpen = 0;

for (i = 0; i < GPIO_TOTAL_COUNT; i++) { if (pulse_time_usec[i]) { gpio_free(pin_gpio[i]); } } printk("<1>Exiting servodrive\n"); unregister_chrdev(g_nServoDrvMajor, SERVODRIVE_NAME); device_destroy(servodrive_class, MKDEV(g_nServoDrvMajor, id)); // Khởi tạo và kết thúc module

module_init(servodrive_init); module_exit(servodrive_exit);

- Điều khiển Servo

o Đầu tiên cần add driver servo vào kernel Mini2440,ta làm như sau: + sudo apt-get install patch //cài đặt trình patch file cho ubuntu

+ Thực hiện lệnh:patch -p1 < /home/mini2440/Desktop/servo/servo.patch + cp config_mini2440_w35 .config //tạo file config để biên dịch kernel + make menuconfig

+ Check vào driver servo trong phần char driver và check GPIO + Save lại và thực hiện make zImage

- Sử dụng driver servo

+ echo 9:100 > /dev/servodrive0 //quay về góc 0 + echo 11:-100 > /dev/servodrive0 //quay về góc 180 + echo 9:off > /dev/servodrive0 //tắt servo

Trong đó : 9,11…(số chân của GPIO),100,-100…(xung cấp cho động cơ servo)

4.2 Mjpg Mini2440

- Sơ lược về Mjpg-streamer

"MJPG-streamer", là một dòng lệnh ứng dụng các tập tin JPEG dùng trong một mạng lưới trên nền IP từ webcam để xem trên một trình ứng dụng như Firefox,

Cambozola, VLC, một thiết bị Windows Mobile hoặc mobilephone có một webbrowser. Nó có thể làm cho phần cứng của webcam nhất định hoạt động mà đòi hỏi số chu kỳ CPU của máy chủ rất ít. Điều này làm cho nó tớt hơn và CPU tớn ít tài ngun hơn như các thiết bị nhúng và các máy chủ thường xuyên hoạt động, không nên dành phần lớn sức mạnh tính tốn để nén videoframes. Ví dụ nó tiêu thụ ít hơn 10% CPU trên một phần cứng 200MHz khi trình chiếu một đoạn video 960x720 điểm ảnh.

Plugin là nguồn cho hình ảnh, các input-plugin. Input-plugin tạo hình ảnh và sao chép nó vào bộ nhớ. Còn output-plugins tạo đầu ra cho hình ảnh. Phổ biến nhất là webserver-output-plugin, cho phép vận chuyển các hình ảnh hiện thị lên một webbrowser cho người xem. Công việc MJPG-streamer là tổng hợp tín hiệu đầu vào và bổ sung cho tín hiệu đầu ra, gần như tất cả những thứ quan trọng được thực hiện bởi các plugin.

Có 2 loại plugin là input-plugin và output-plugin :

- Input-Plugins : Phổ biến cho tất cả các input-Plugins, họ sao chép hình ảnh JPEG cho một bộ nhớ có thể truy cập cơng cợng và tín hiệu này để trong q trình chờ.

o input_uvc.so : input-Plugin này lấy hình ảnh từ một thiết bị Linux UVC tương thích v4l2, như Sphere AF Logitech Quickcam hoặc QC Logitech Pro 5000. Mã nguồn của plugin này được dựa trên "luvcview" và đã được thay đổi theo nhiều cách. Ngược lại "luvcview" nó khởi tạo các lệnh Logitech mới cho pan / tilt / focus mà không cần thiết một thư viện trợ giúp hoặc không quan trọng với các tập tin XML, các quy tắc udev. Input- plugin đầu vào cịn nhiều tính năng, bởi vì bạn có thể stream up 960x720 pixel hình ảnh từ webcam của bạn với một tốc độ khung hình cao (> = 15 fps). Nếu bạn khơng quan tâm cho tải CPU, nó thậm chí có thể lấy 1600x1200 hình ảnh lớn khơng nén, nén chúng bằng phần mềm và truyền chúng cho các client.

o input_control.so : Plugin này đầu vào chỉ thực hiện các giao diện điều khiển pan / tilt.

- Output-Plugin :

o Ouput_http.so : là một HTTP máy chủ web 1.0 đầy đủ chức năng. Nó có thể là fiel serve từ một thư mục duy nhất và có thể thực hiện các lệnh nhất định. Ví dụ, nó có thể phục vụ một tập tin JPEG duy nhất của plugin đầu vào, hoặc theo tiêu chuẩn hiện có M-JPEG. Bằng cách phục vụ các tập tin từ một thư mục, nó cho phép bạn thiết kế trang web của riêng bạn, nhúng các hình ảnh webcam, stream.

o output_file.so : Plugin này được sử dụng để lưu trữ các hình ảnh JPEG của các plugin đầu vào trong một thư mục được chỉ định. Nó có thể

được sử dụng để lấy hình ảnh và chỉ lưu trữ chúng, hoặc chuyển đến một tài khoản FTP bằng cách thực hiện một lệnh sau khi lưu trữ các hình ảnh.

- Cài đặt Mjpg-streamer

- Biên dịch lại kernel : thực hiện các lệnh sau #cp config_mini2440_w35 .config

#gedit .config

- Thêm những dòng này vào trong file .config CONFIG_VIDEO_DEV=y CONFIG_VIDEO_V4L2_COMMON=y CONFIG_VIDEO_V4L1_COMPAT=y CONFIG_VIDEO_MEDIA=y CONFIG_S3C2440_CAMERA=y #make menuconfig #make zImage

- Cài đặt chương trình :

# tar xzvf mjpg-streamer.tgz # cd mjpg-streamer

# make clean all

# export LD_LIBRARY_PATH=.

# ./mjpg_streamer -o "output_http.so -w ./www"

- Sử dụng Mjpg-streamer

export LD_LIBRARY_PATH=`pwd`

./mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 640x480 -y yuv -f 24" -o "output_http.so -w `pwd`/www"

Trong đó :

-i : Đầu vào : -d(thiết bị),-r(khung hình,điểm ảnh),-y(format yuv),-f(số fame) -o : Đầu ra : -w(web đầu ra)

Một phần của tài liệu mobile robot (Trang 48)

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

(95 trang)