69
MỤC LỤC CHƯƠNG I................................................4 CƠ SỞ LÝ THUYẾT.........................................4 1.1. Cơ sở lý thuyết vi điều khiển PIC16F877A........4 1.1.1. Sơ đồ chân vi điều khiển PIC 16F877A.........4 1.1.2. Thông số kỹ thuật vi điều khiển PIC 16F877A.. 4 1.1.3. Tổ chức bộ nhớ...............................6 1.1.4. Các cổng xuất nhập của PIC16F877A............7 1.1.5. Ngắt (Interrupt).............................9 1.1.6. Bộ đếm và bộ định thời......................11 1.1.7. Bộ chuyển đổi ADC...........................15 1.2. Lý thuyết về SIM900.............................17 1.2.1. Các tính năng chính của SIM900..............18 1.2.2. Các chế độ hoạt động........................20 1.2.3. Sơ đồ chân..................................21 1.2.4. Tập lệnh AT cho SIM900 ứng dụng cho GSM.....24 1.3. Cảm biến khoảng cách SRF05......................34 CHƯƠNG II..............................................37 THIẾT KẾ HỆ THỐNG......................................37 2.1. Thiết kế phần cứng..............................37 2.1.1. Sơ đồ khối hệ thống.........................37 2.1.2. Sơ đồ mô tả hệ thống........................38 2.1.3. Sơ đồ nguyên lý điện tử.....................39 2.2. Thiết kế phần mềm...............................42 2.2.1. Lưu đồ chương trình điều khiển..............42 2.2.2. Lưu đồ thuật toán điều khiển trên máy tính. .45 CHƯƠNG III.............................................46 KẾT QUẢ ĐẠT ĐƯỢC.......................................47 1

Robot Gprs

Embed Size (px)

Citation preview

Page 1: Robot Gprs

MỤC LỤC

CHƯƠNG I...................................................................................................................4

CƠ SỞ LÝ THUYẾT....................................................................................................4

1.1. Cơ sở lý thuyết vi điều khiển PIC16F877A......................................................4

1.1.1. Sơ đồ chân vi điều khiển PIC 16F877A.....................................................4

1.1.2. Thông số kỹ thuật vi điều khiển PIC 16F877A..........................................4

1.1.3. Tổ chức bộ nhớ...........................................................................................6

1.1.4. Các cổng xuất nhập của PIC16F877A........................................................7

1.1.5. Ngắt (Interrupt)...........................................................................................9

1.1.6. Bộ đếm và bộ định thời.............................................................................11

1.1.7. Bộ chuyển đổi ADC..................................................................................15

1.2. Lý thuyết về SIM900.......................................................................................17

1.2.1. Các tính năng chính của SIM900..............................................................18

1.2.2. Các chế độ hoạt động................................................................................20

1.2.3. Sơ đồ chân................................................................................................21

1.2.4. Tập lệnh AT cho SIM900 ứng dụng cho GSM........................................24

1.3. Cảm biến khoảng cách SRF05.........................................................................34

CHƯƠNG II................................................................................................................37

THIẾT KẾ HỆ THỐNG..............................................................................................37

2.1. Thiết kế phần cứng...........................................................................................37

2.1.1. Sơ đồ khối hệ thống..................................................................................37

2.1.2. Sơ đồ mô tả hệ thống................................................................................38

2.1.3. Sơ đồ nguyên lý điện tử............................................................................39

2.2. Thiết kế phần mềm...........................................................................................42

2.2.1. Lưu đồ chương trình điều khiển...............................................................42

2.2.2. Lưu đồ thuật toán điều khiển trên máy tính..............................................45

CHƯƠNG III...............................................................................................................46

KẾT QUẢ ĐẠT ĐƯỢC..............................................................................................47

3.1. Sản phẩm..........................................................................................................47

3.2. Kết luận và hướng phát triển............................................................................48

1

Page 2: Robot Gprs

DANH MỤC HÌNH VẼ

Hình 1.1 Sơ đồ chân và hình ảnh thực tế PIC 16F877A...............................................4

Hình 1.2 Sơ đồ khối vi điều khiển PIC16F877A..........................................................6

Hinh 1.3 Sơ đồ logic tất cả các ngắt của vi điều khiển PIC16F877A...........................9

Hình 1.4 Sơ đồ khối của Timer0.................................................................................11

Hình 1.5 Sơ đồ khối của Timer1.................................................................................13

Hình 1.6 Sơ đồ khối của Timer2.................................................................................14

Hình 1.7 Sơ đồ khối bộ chuyển đổi ADC...................................................................16

Hình 1.8. Hình ảnh Sim 900........................................................................................17

Hình 1.9. Sơ đồ chân SIM900.....................................................................................17

Hình 1.10. Sơ đồ chân của SIM900............................................................................21

Hình 1.11. Hình ảnh SRF05........................................................................................34

Hình 1.12. Chân của module SRF05...........................................................................35

Hình 1.13. Giản đồ xung chế độ 1 của SRF05...........................................................35

Hình 1.14. Chế độ 2....................................................................................................36

Hình 2.1. Sơ đồ khối hệ thống.....................................................................................37

Hình 2.2. Mô tả hệ thống.............................................................................................38

Hình 2.3. Module control............................................................................................39

Hình 2.4. Module sensor.............................................................................................40

Hình 2.5. Module SIM................................................................................................41

Hình 2.6. Khối nguồn..................................................................................................42

Hình 2.7. Lưu đồ thuật toán điều khiển.......................................................................43

Hình 2.8. Thuật toán trên máy tính.............................................................................45

Hình 3.1. Hình ảnh ô tô dò đường...............................................................................47

Hình 3.2. Hình ảnh vẽ bản đồ trên máy tính...............................................................48

2

Page 3: Robot Gprs

DANH MỤC BẢNG

Bảng 1.1. Mô tả tính năng của SIM900......................................................................19

Bảng 1.2. Bảng mô tả các loại mã hóa........................................................................19

Bảng 1.3. Các chế độ hoạt động của SIM900.............................................................20

Bảng 1.4. Các thiết lập cho cuộc gọi...........................................................................24

Bảng 1.5. Chi tiết các lệnh thiết lập và cài đặt cuộc gọi.............................................27

Bảng 1.6. Lệnh thiết lập và cài đặt cho tin nhắn SMS................................................28

Bảng 1.7. Chi tiết các lệnh thiết lập và cài đặt tin nhắn SMS.....................................31

Bảng 1.8. Các lệnh đặc biệt dành cho SIM900...........................................................31

Bảng 1.9. Chi tiết các lệnh đặc biệt dành cho SIM900...............................................33

Bảng 1.10. Các thông báo lỗi CME............................................................................33

Bảng 1.11. Các thông báo lỗi CMS.............................................................................34

3

Page 4: Robot Gprs

CHƯƠNG I

CƠ SỞ LÝ THUYẾT

1.1. Cơ sở lý thuyết vi điều khiển PIC16F877A.

1.1.1. Sơ đồ chân vi điều khiển PIC 16F877A.

Hình 1.1 Sơ đồ chân và hình ảnh thực tế PIC 16F877A

1.1.2. Thông số kỹ thuật vi điều khiển PIC 16F877A.

Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14

bit. Mỗi lệnh đều được thực thi trong một chu kì xung clock. Tốc độ hoạt động tối đa

cho phép là 20 MHz với một chu kì lệnh là 200ns. Bộ nhớ chương trình 8Kx14 bit, bộ

nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8

byte. Số PORT I/O là 5 với 33 pin I/O.

Các đặc tính ngoại vi bao gồm các khối chức năng sau:

Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit.

4

Page 5: Robot Gprs

Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa vào

xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep.

Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler.

Hai bộ Capture/so sánh/điều chế độ rộng xung.

Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C.

Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.

Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển RD, WR, CS bên

ngoài.

Các đặc tính Analog: 8 kênh chuyển đổi ADC 10 bit. Hai bộ so sánh.

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 bộ nhớ 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. Nạp được chương trình ngay trên mạch điện

ICSP (In Circuit Serial Programming) thông qua 2 chân. Watchdog Timer với bộ dao động

trong.

Chức năng bảo mật mã chương trình. Chế độ Sleep. Có thể hoạt động với nhiều dạng

Oscillator khác nhau.

5

Page 6: Robot Gprs

Hình 1.2 Sơ đồ khối vi điều khiển PIC16F877A

1.1.3. Tổ chức bộ nhớ.

Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình

(program memory) và bộ nhớ dữ liệu (data memory).

Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash, dung

lượng bộ nhớ 8K word (1 word= 14bit) và được phân thành nhiều trang (từ page 0

đến page 3). Như vậy bộ nhớ chương trinh có khả năng chứa được 8*1024 =8192

lệnh (vì một lệnh sau khi mã hóa sẽ có dung lượng 1 word (14 bit). Để mã hóa được

địa chỉ của 8K word bộ nhớ chương trình, bộ đếm chương trình có dung lượng 13 bit

(PC<12:0>). Khi vi điều khiển reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h

(reset vector). Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h

(interrupt vector). Bộ nhớ chương trình không bao gồm bộ nhớ stack sẽ được đề cập

cụ thể trong phần sau.

Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều

bank. Đối với PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank. Mỗi bank có

dung lượng 128 byte, bao gồm các thanh ghi có chức năng đặc biệt SFR (Special

Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung

GPR (General Purpose Pegister) nằm ở vùng địa chỉ còn lại trong bank. Các thanh

ghi SFR thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) sẽ được đặt ở tất

cà các bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làm giảm

bớt lệnh của chương trình.

Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là một vùng

nhớ đặc biệt không cho phép đọc hay ghi. Khi lệnh CALL được thực hiện hay khi

một ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của bộ đếm chương trình PC tự

động được vi điều khiển cất vào trong stack. Khi một trong các lệnh RETURN,

RETLW hat RETFIE được thực thi, giá trị PC sẽ tự động được lấy ra từ trong stack,

vi điều khiển sẽ thực hiện tiếp chương trình theo đúng qui trình định trước.

Bộ nhớ Stack trong vi điều khiển PIC họ 16F87xA có khả năng chứa được 8 địa

chỉ và hoạt động theo cơ chế xoay vòng. Nghĩa là giá trị cất vào bộ nhớ Stack lần thứ

9 sẽ ghi đè lên giá trị cất vào Stack lần đầu tiên và giá trị cất vào bộ nhớ Stack lần thứ

10 sẽ ghi đè lên giá trị 6 cất vào Stack lần thứ 2. Cần chú ý là không có cờ hiệu nào

cho biết trạng thái stack, do đó ta không biết được khi nào stack tràn. Bên cạnh đó tập

lệnh của vi điều khiển dòng PIC cũng không có lệnh POP hay PUSH, các thao tác với

bộ nhớ stack sẽ hoàn toàn được điều khiển bởi CPU.

6

Page 7: Robot Gprs

1.1.4. Các cổng xuất nhập của PIC16F877A.

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

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 đó.

Port A

Port A (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 còn lại. Bên cạnh đó Port A còn là ngõ vào 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ác thanh ghi SFR liên quan đến Port A bao gồm:

- Port A (địa chỉ 05h) : 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.

- ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC.

Port B

Port B (RPB) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là

TRISB. Bên cạnh đó một số chân của Port B 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. Port B còn liên quan

7

Page 8: Robot Gprs

đến ngắt ngoại vi và bộ Timer0. Port B còn được tích hợp chức năng đ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 Port B bao gồm:

- Port B (địa chỉ 06h,106h) : chứa giá trị các pin trong Port B.

- TRISB (địa chỉ 86h,186h) : điều khiển xuất nhập.

- OPTION_REG(địa chỉ 81h,181h): điều khiển ngắt ngoại vi và bộ Timer0.

Port C

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 đó Port C 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 Port C:

- Port C (địa chỉ 07h) : chứa giá trị các pin trong Port C.

- TRISC (địa chỉ 87h) : điều khiển xuất nhập.

Port D

Port D (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng là

TRISD. Port D 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 liên quan đến Port D bao gồm:

- Thanh ghi Port D : chứa giá trị các pin trong Port D.

- Thanh ghi TRISD : điều khiển xuất nhập.

- Thanh ghi TRISE : điều khiển xuất nhập Port E và chuẩn giao tiếp PSP.

Port E

Port E (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 đó Port E 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 Port E bao gồm:

- Port E : chứa giá trị các chân trong PortE.

- TRISE : đ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 : thanh ghi điều khiển khối ADC.

8

Page 9: Robot Gprs

1.1.5. Ngắt (Interrupt).

Hinh 1.3 Sơ đồ logic tất cả các ngắt của vi điều khiển PIC16F877A

PIC16F877A có đến 15 nguồn tạo ra hoạt động ngắt được điều khiển bởi thanh

ghi INTCON (bit GIE). 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/INT và TMR0 nằm trong thanh ghi

INTCON, thanh 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ờ ngắt của các ngắt nằm trong thanh

ghi PIR1 và PIR2.

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ỉ 0004h. 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.

Đố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.

9

Page 10: Robot Gprs

Cần chú ý là 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.

Ngắt INT

Ngắt này dựa trên sự thay đổi trạng thái của pin RB0/INT. Cạnh tác động gây ra

ngắt có thể là cạnh lên hay cạnh xuống và được điều khiển bởi bit INTEDG (thanh

ghi OPTION_ REG <6>). Khi có cạnh tác động thích hợp xuất hiện tại pin RB0/INT,

cờ ngắt INTF được set bất chấp trạng thái các bit điều khiển GIE và PEIE. Ngắt này

có khả năng đánh thức vi điều khiển từ chế độ sleep nếu bit cho phép ngắt được set

trước khi lệnh SLEEP được thực thi.

Ngắt do sự thay đổt trạng thái các PIN trong Port B

Các pin PORTB<7:4> được dùng cho ngắt này và được điều khiển bởi bit RBIE

(thanh ghi INTCON<4>). Cờ ngắt của ngắt này là bit RBIF (INTCON<0>).

10

Page 11: Robot Gprs

1.1.6. Bộ đếm và bộ định thời.

Timer0

Hình 1.4 Sơ đồ khối của Timer0.

Đây là một trong ba bộ đếm hoặc bộ định thời của vi điều khiển PIC16F877A.

Timer0 là bộ đếm 8 bit được kết nối với bộ chia tần số (prescaler) 8 bit. Cấu trúc của

Timer0 cho phép ta lựa chọn xung clock tác động và cạnh tích cực của xung clock.

Ngắt Timer0 sẽ xuất hiện khi Timer0 bị tràn. Bit TMR0IE (INTCON<5>) là bit điều

khiển của Timer0. TMR0IE=1 cho phép ngắt Timer0 tác động, TMR0IF= 0 không

cho phép ngắt Timer0 tác động.

Muốn Timer0 hoạt động ở chế độ Timer ta clear bit TOSC

(OPTION_REG<5>), khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kì xung

đồng hồ (tần số vào Timer0 bằng ¼ tần số oscillator). Khi giá trị thanh ghi TMR0 từ

FFh trở về 00h, ngắt Timer0 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 Timer0 xuất hiện một cách linh động.

Muốn Timer0 hoạt động ở chế độ counter ta set bit TOSC (OPTION_REG<5>).

Khi đó xung tác động lên bộ đếm được lấy từ chân RA4/TOCK1. Bit TOSE

(OPTION_REG<4>) cho phép lựa chọn cạnh tác động vào bột đếm. Cạnh tác động sẽ

là cạnh lên nếu TOSE=0 và cạnh tác động sẽ là cạnh xuống nếu TOSE=1.

Khi thanh ghi TMR0 bị tràn, bit TMR0IF (INTCON<2>) sẽ được set. Đây

chính là cờ ngắt của Timer0. 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 Timer0 không thể “đánh thức” vi

điều khiển từ chế độ sleep.

11

Page 12: Robot Gprs

Bộ chia tần số (prescaler) được chia sẻ giữa Timer0 và WDT (Watchdog

Timer). Điều đó có nghĩa là nếu prescaler được sử dụng cho Timer0 thì WDT sẽ

không có được hỗ trợ của prescaler và ngược lại. Prescaler được điều khiển bởi thanh

ghi OPTION_REG. Bit PSA (OPTION_REG<3>) xác định đối tượng tác động của

prescaler. Các bit PS2:PS0 (OPTION_REG<2:0>) xác định tỉ số chia tần số của

prescaler. Xem lại thanh ghi OPTION_REG để xác định lại một cách chi tiết về các

bit điều khiển trên.

Các lệnh tác động lên giá trị thanh ghi TMR0 sẽ xóa chế độ hoạt động của

prescaler. Khi đối tượng tác động là Timer0, tác động lên giá trị thanh ghi TMR0 sẽ

xóa prescaler nhưng không làm thay đổi đối tượng tác động của prescaler. Khi đối

tượng tác động là WDT, lệnh CLRWDT sẽ xóa prescaler, đồng thời prescaler sẽ

ngưng tác vụ hỗ trợ cho WDT.

Các thanh ghi điều khiển liên quan đến Timer0 bao gồm:

- TMR0 (địa chỉ 01h, 101h): chứa giá trị đếm của Timer0.

- INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE và

PEIE).

- OPTION_REG (địa chỉ 81h, 181h): điều khiển prescaler.

Timer1

Timer1 là bộ định thời 16 bit, giá trị của Timer1 sẽ được lưu trong hai thanh ghi

(TMR1H:TMR1L). Cờ ngắt của Timer1 là bit TMR1IF (PIR1<0>). Bit điều khiển

của Timer1 sẽ là TMR1IE (PIE<0>).

Tương tự như Timer0, Timer1 cũng có hai chế độ hoạt động: chế độ định thời

(timer) với xung kích là xung clock của oscillator (tần số của timer bằng ¼ tần số của

oscillator) và chế độ đếm (counter) với xung kích là xung phản ánh các sự kiện cần

đếm lấy từ bên ngoài thông qua chân RC0/T1OSO/T1CKI (cạnh tác động là cạnh

lên). Việc lựa chọn xung tác động (tương ứng với việc lựa chọn chế độ hoạt động là

timer hay counter) được điều khiển bởi bit TMR1CS (T1CON<1>). Sau đây là sơ đồ

khối của Timer1:

12

Page 13: Robot Gprs

Hình 1.5 Sơ đồ khối của Timer1.

Ngoài ra Timer1 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 bit T1OSCEN (T1CON<3>) được set, Timer1 sẽ lấy xung clock từ hai chân

RC1/T1OSI/CCP2 và RC0/T1OSO/T1CKI làm xung đếm. Timer1 sẽ bắt đầu đếm

sau cạnhxuống đầu tiên của xung ngõ vào. Khi đó PORTC sẽ bỏ qua sự tác động của

hai bit TRISC<1:0> và PORTC<2:1> được gán giá trị 0. Khi clear bit T1OSCEN

Timer1 sẽ lấy xung đếm từ oscillator hoặc từ chân RC0/T1OSO/T1CKI.

Timer1 có hai chế độ đếm là đồng bộ (Synchronous) và bất đồng bộ. Chế độ

đếm được quyết định bởi bit điều khiển /T1SYNC (T1CON<2>).

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, Timer1 sẽ tiếp tục quá trình đếm khi vi điều khiển đang ở chế

độ sleep và ngắt do Timer1 tạo ra khi bị tràn có khả năng “đánh thức” vi điều khiển.

Ở chế độ đếm bất đồng bộ, Timer1 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 Timer1 sẽ được đồng bộ hóa với xung clock

bên trong. Ở chế độ này Timer1 sẽ không hoạt động khi vi điều khiển đang ở chế độ

sleep.

Các thanh ghi liên quan đến Timer1 bao gồm:

- INTCON : cho phép ngắt hoạt động (GIE và PEIE).

- PIR1 (địa chỉ 0Ch) : chứa cờ ngắt Timer1 (TMR1IF).

- PIE1( địa chỉ 8Ch) : cho phép ngắt Timer1 (TMR1IE).

- TMR1L (địa chỉ 0Eh) : chứa giá trị 8 bit thấp của bộ đếm Timer1.

- TMR1H (địa chỉ 0Eh) : chứa giá trị 8 bit cao của bộ đếm Timer1.

13

Page 14: Robot Gprs

- T1CON (địa chỉ 10h) : xác lập các thông số cho Timer1.

Timer2

Hình 1.6 Sơ đồ khối của Timer2.

Timer2 là bộ định thời 8 bit và được hỗ trợ bởi hai bộ chia tần số prescaler va

postscaler. Thanh ghi chứa giá trị đếm của Timer2 là TMR2. Bit cho phép ngắt

Timer2 tác động là TMR2ON (T2CON<2>). Cờ ngắt của Timer2 là bit TMR2IF

(PIR1<1>). Xung ngõ vào (tần số bằng ¼ tần số oscillator) được đưa qua bộ chia tần

số prescaler 4 bit (với các tỉ số chia tần số là 1:1, 1:4 hoặc 1:16 và được điều khiển

bởi các bit T2CKPS1 : T2CKPS0 (T2CON<1:0>).

Timer2 còn được hỗ trợ bởi thanh ghi PR2. Giá trị đếm trong thanh ghi TMR2

sẽ tăng từ 00h đến giá trị chứa trong thanh ghi PR2, sau đó được reset về 00h. Khi

reset thanh ghi PR2 được nhận giá trị mặc định FFh.

Ngõ ra của Timer2 được đưa qua bộ chia tần số postscaler với các mức chia từ

1:1 đến 1:16. Postscaler được điều khiển bởi 4 bit T2OUTPS3:T2OUTPS0. Ngõ ra

của postscaler đóng vai trò quyết định trong việc điều khiển cờ ngắt.

Ngoài ra ngõ ra của Timer2 còn được kết nối với khối SSP, do đó Timer2 còn

đóng vai trò tạo ra xung clock đồng bộ cho khối giao tiếp SSP.

Các thanh ghi liên quan đến Timer2 bao gồm:

- INTCON : cho phép toàn bộ các ngắt (GIE và PEIE).

- PIR1 (địa chỉ 0Ch) : chứa cờ ngắt Timer2 (TMR2IF).

- PIE1 (địa chị 8Ch) : chứa bit điều khiển Timer2 (TMR2IE).

- TMR2 (địa chỉ 11h) : chứa giá trị đếm của Timer2.

14

Page 15: Robot Gprs

- T2CON (địa chỉ 12h) : xác lập các thông số cho Timer2.

- PR2 (địa chỉ 92h) : thanh ghi hỗ trợ cho Timer2.

1.1.7. Bộ chuyển đổi ADC

ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu giữa hai dạng

tương tự và số. PIC16F877A có 8 ngõ vào analog (RA4:RA0 và RE2:RE0). Hiệu

điện thế chuẩn VREF có thể được lựa chọn là VDD, VSS hay hiệu điện thể chuẩn được

xác lập trên hai chân RA2 và RA3. 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:ADRESL.

Khi không sử dụng bộ chuyển đổi ADC, các thanh ghi này có thể được sử dụng như

các 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, bit ADCON0<2> được xóa về 0 và cờ

ngắt ADIF được set.

Qui trình chuyển đổi từ tương tự sang số bao gồm các bước sau:

Thiết lập các thông số cho bộ chuyển đổi ADC:

- Chọn ngõ vào analog, chọn điện áp mẫu (dựa trên các thông số của thanh

ghi ADCON1)

- Chọnh kênh chuyển đổi AD (thanh ghi ADCON0).

- Chọnh xung clock cho kênh chuyển đổi AD (thanh ghi ADCON0).

- Cho phép bộ chuyển đổi AD hoạt động (thanh ghi ADCON0).

Thiết lập các cờ ngắt cho bộ AD

- Clear bit ADIF.

- Set bit ADIE.

- Set bit PEIE.

- Set bit GIE.

Đợ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 (set bit ADCON0<2>).

Đợi cho tới khi quá trình chuyển đổi hoàn tất bằng cách:

- Kiểm tra bit ADCON0<2>. Nếu ADCON0<2> =0 thì quá trình chuyển đổi

hoàn tất.

- Kiểm tra cờ ngắt.

15

Page 16: Robot Gprs

Đọc kết quả chuyển đổi và xóa cờ ngắt, set bit ADCON0<2> (nếu cần tiếp tục

chuyển đổi).

Tiếp tục thực hiện các bước 1 và 2 cho quá trình chuyển đổi tiếp theo.

Hình 1.7 Sơ đồ khối bộ chuyển đổi ADC.

Các thanh ghi liên quan đến bộ chuyển đổi ADC bao gồm:

- INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngắt (các bit GIE,

PEIE).

- PIR1 (địa chỉ 0Ch): chứa cờ ngắt AD (bit ADIF).

- PIE1 (địa chỉ 8Ch): chứa bit điều khiển AD (ADIE).

- ADRESH (địa chỉ 1Eh) và ADRESL (địa chỉ 9Eh): các thanh ghi chứa kết

quả chuyển đổi AD.

- ADCON0 (địa chỉ 1Fh) và ADCON1 (địa chỉ 9Fh): xác lập các thông số

cho bộ chuyển đổi AD.

- 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.

16

Page 17: Robot Gprs

1.2. Lý thuyết về SIM900

Hình 1.8. Hình ảnh Sim 900

Hình 1.9. Sơ đồ chân SIM900

17

Page 18: Robot Gprs

1.2.1. Các tính năng chính của SIM900

Tính năng Mô tả thực thi

Nguồn cung cấp Sử dụng điện áp từ 3.4. đến 4.5VNguồn tiết kiệm Sử dụng điển hình ở chế độ ngủ với dòng 1.5mACác dải tần hoạt động

GSM850, EGSM900, DCS1800, PCS1900 có thể tìm thấy các dải tần một cách tự động. Các dải tần có thể được thiết lập bởi câu lệnh AT.

Tương thích với pha GSM 2/2+

Lớp GMS MS nhỏCông suất truyền tải Lớp 4(2W) ở GSM850 và EGSM 900

Lớp 1(1W) ở DCS 1800 và PCS 1900Kết nối GPRS GPRS nhiều khe mặc định trong lớp 10

GPRS nhiều khe tùy chọn ở lớp 8 GPRS trạm di động lớp B

Dải nhiệt độ Hoạt động bình thường ở -30 đến 80 độ C Hoạt động hạn chế ở -40 đến 30 và 80 đến 85 độ C Nhiệt độ lưu trữ là -45 đến 90 độ C

Dữ liệu GPRS

CSD

Truyền dữ liệu xuống lớn nhất là 85.6 kbps Truyền dữ liệu lên lớn nhất 42.8 kbps Mã hóa chương trình CS-1, CS-2, CS-3 và CS-4 SIM900 hỗ trợ các giao thức PAP( Giao thức xác nhận

mật mã) thường được sử dụng trong các kết nối PPP. SIM900 được tích hợp giao thức TCP/IP Cung cấp gói chuyển mạch kênh điều khiển quảng

bá(PBCCH). Các tốc độ truyền CSD: 2.4, 4.8, 9.6, 14.4 kbps, không

trong suốt Hỗ trợ dịch vụ dữ liệu bổ xung phi cấu trúc

SMS MODULE, MO, CB, Text và chế độ PDU Lưu trữ SMS: thẻ SIM

FAX Nhóm 1 lớp 3Giao tiếp SIM Cung cấp thẻ SIM : 1.8, 3V.An-ten ngoài Bộ đệm An-tenTính năng Audio Các chế độ mã hóa tiếng nói:

Một nửa tốc độ(ETS 06.20) Tốc độ đầy đủ(ETS 06.11) Nâng cao tốc độ đầy đủ(ETS06.50/ 06.60/06.80) Đa tốc độ thích nghi(AMR) Triệt tiếng dội Triệt nhiễu

Cổng nối tiếp và cổng gỡ lỗi

Cổng nối tiếp: Giao tiếp modem 8 dây với các đường trạng thái và

18

Page 19: Robot Gprs

đường dữ liệu, không cân bằng, không đồng bộ. 1.2 kbps đến 11.52 kbps Cổng nối tiếp có thể sử dụng được cho lệnh AT và

luồng dữ liệu. Hỗ trợ RTS/CTS bắt tay phần cứng và phần mềm điều

khiển luồng ON/OFF. Kết hợp khả năng theo giao thức hợp kênh GSM 07.10 Hỗ trợ các tốc độ baud tự động từ 1200 bps đến

115200bps.Cổng gỡ lỗi (debug)

Giao tiếp 2 dây trống DBG_TXD và DBG_RXD Có thể sử dụng để gỡ lỗi hoặc cập nhật Fireware.

Quản lý danh bạ Cung cấp các kiểu danh bạ: SM, FD, LD, RC, ON, MC.Bộ công cụ áp dụng cho SIM

Cung cấp SAT lớp 3, GSM 11.14 release 99

Đồng hồ thời gian thực

Được triển khai khi thực hiện

Chức năng định thời Lập trình thông qua lệnh AT.Đặc điểm vật lý Kích cỡ : 24mmx24mmx3mm.

Trọng lượng 3.4gCập nhật Firmware Cập nhật Firmware bởi cổng gỡ lỗi

Bảng 1.1. Mô tả tính năng của SIM900

Bảng 1.2. Bảng mô tả các loại mã hóa

19

Page 20: Robot Gprs

1.2.2. Các chế độ hoạt động

Chế độ Chức năngGSM/GPRS SLEEP

Chế độ ngủ GSM/GPRS : Module sẽ tự động trở về chế độ ngủ, trong điều kiện chế độ ngủ được kích hoạt và không có không khí và ngắt phần cứng( như ngắt GPIO và dữ liệu trên cổng nối tiếp). Trong các điều kiện này dòng điện cung cấp sẽ là thấp nhất. Trong chế độ ngủ, module vẫn có thể nhận gói dữ liệu và SMS.

GSM IDLE Phần mềm được hiệu hóa. Module được đăng ký tới mạng GSM và các module sẵn sàng để kết nối.

GSM TALK Kết nối giữa hai thuê bao trong tiến trình. Trong trường hợp này công suất tiêu thụ độc lập trên mạng thiết lập như DTX on/off FR/EFR/HR, nhảy chuỗi, an-ten.

GPRS STANDBY Module sẵn sàng cho module truyền dữ liệu GPRS, dù không có dữ liệu trên dòng gửi và nhận. Trong trường hợp này, công suất tiêu thụ trên mạng được thiết lập và cấu hình GPRS.

GPRS DATA Có dữ liệu truyền GPRS(PPP hoặc TCP và UDP) trong tiến trình. Trong điều kiện này, công suất tiêu thụ lien quan tới thiết lập mạng. Tốc độ dữ liệu lên, xuống và cấu hình GPRS.

Công suất xuống Bình thường công suất xuống được gửi bởi lệnh AT là “ AT+CPOWD=1” hoặc sử dụng PWRKEY. Đơn vị quản lý công suất thực hiện bật và tắt module. Phần mềm được kích hoạt khi có kết nối tới nguồn pin và cổng nối tiếp

Chế độ chức năng nhỏ nhất

Lệnh AT “ AT+CFUN” được sử đụng để thiết lập cho module cung cấp nguồn thấp nhất. Trong chế độ này phần RF và SIM card sẽ không truy nhập được. Cổng nối tiếp vẫn truy nhập được.

Bảng 1.3. Các chế độ hoạt động của SIM900

20

Page 21: Robot Gprs

1.2.3. Sơ đồ chân

Hình 1.10. Sơ đồ chân của SIM900

21

Page 22: Robot Gprs

Bảng mô tả chức năng các chân:

22

Page 23: Robot Gprs

Hình 1.11. Bảng mô tả chức năng chân của SIM900

23

Page 24: Robot Gprs

1.2.4. Tập lệnh AT cho SIM900 ứng dụng cho GSM

Các thuật ngữ.

 <CR> : Carriage return (0x0D).

<LF> : Line Feed (0x0A).

MODULE : Mobile Terminal . Thiết bị đầu cuối mạng (trong trường hợp này

là module SIM900).

TE : Terminal Equipment.  Thiết bị đầu cuối (máy tinh, hệ vi điều khiển).

a. Các lệnh thiết lập và cài đặt cho cuộc gọi.

ATA Trả lời một cuộc gọi đến.ATD Đi trước một số điện thoại để thực hiện cuộc gọi.ATD><mem><n> Thực hiện cuộc gọi đến số điện thoại đã lưu trong bộ nhớ.ATD<str> Thực hiện cuộc gọi đến số đã lưu và có tên <str>.ATDL Gọi số vừa gọi gần nhất.ATH Ngắt kết nối đang thực hiện.ATI Hiện thị thông tin về module SIM900ATL Cài đặt độ lớn của loa.ATO Chuyển từ chế độ nhận lệnh sang chế độ nhận dữ liệu.ATT Lựa chọn kiểu chuông.ATZ Thực hiện lệnh này trước khi cài đặt lại các thông số của

module.AT&F Thiết lập các thông số cài đặt là các thông số mặc định.AT&V Hiện thị cấu hình đã cài đặt cho module.+++ Chuyển từ chế độ dữ liệu và kết nối mạng GPRS về chế độ

lệnh.Bảng 1.4. Các thiết lập cho cuộc gọi

b. Các lệnh thiết lập và cài đặt cuộc gọi

Chi tiết về tập lệnh thiết lập và cài đặt cho cuộc gọi:

ATA Lệnh nhấc máy khi có cuộc gọi đếnMODULE gửi trả “OK” khi kết nối thành công.MODULE gửi trả “NO CARRIER” khi kết nối không thành công.

ATD[<n>][<msgm>][;] Lệnh thực hiện cài đặt dịch vụ cuộc gọi.Lệnh này có thể hủy bỏ bằng việc nhận 1 lệnh ATH hoặc 1 ký tự khi lệnh đang thực thi.Nếu cuộc gọi được kết nối và cài đặt hoàn tất. MODULE gửi trả: ”OK”MODULE gửi trả: “NO DIALTONE” nếu không có chuông. Hoặc gửi trả “BUSY” nếu số máy

24

Page 25: Robot Gprs

đang bận hoặc gửi trả “NO CARRIER” nếu bị từ chối hoặc không nhấc máy Các tham số:<n> : số điện thoại<msgm>:    “I” Không hiện thị số người gọi “i” Hiện thị số người gọi “G” Kích hoạt chế độ gọi nội bộ “g”  Hủy chế độ gọi nội bộ.<;>: Kết thúc và thực hiện cài đặt cuộc gọi

ATD<mem><n>[<I>][<G>][;]

Lệnh thực hiện quay số có trong danh bạ riêng biệt.Lệnh này có thể hủy bỏ bằng việc nhận 1 lệnh ATH hoặc 1 ký tự khi lệnh đang thực thi.Module bị lỗi. MODULE gửi trả:+CME ERROR: <err>Nếu không đổ chuông. MODULE gửi trả:“NO DIALTONE”Số máy đang bận gửi trả: “BUSY”Không kết nối hoặc bị từ chối gửi trả:“NO CARRIER”Kết nối thành công và cuộc gọi được thực hiện:“OK”Các tham số: <mem> danh bạ “DC”    danh sách các số đã gọi. “FD”    danh bạ trong sim. “LD”    danh sách các số đã gọi trong sim. “MC”   danh sách các cuộc gọi nhỡ. “ME”    tất cả các số có trong danh bạ.  <n>: Một số nguyên là vị trí bộ nhớ có thể sử dụng. <msgm>:  I  Không hiện thị số người gọi    i  Hiện thị số người gọi          G Kích hoạt chế độ gọi nội bộ          g  Hủy chế độ gọi nội bộ.<;>: Kết thúc và thực hiện cuộc gọi

ATD><n>[<I>][<G>][;] Thực hiện cuộc gọi từ dạnh bạ.Lệnh thực hiện quay số có trong danh bạ riêng biệt.Lệnh này có thể hủy bỏ bằng việc nhận 1 lệnh ATH hoặc 1 ký tự khi lệnh đang thực thi.Module bị lỗi. MODULE gửi trả:+CME ERROR:<err>

25

Page 26: Robot Gprs

Nếu không đổ chuông. MODULE gửi trả:“NO DIALTONE”Số máy đang bận:“BUSY”Không kết nối hoặc bị từ chối :“NO CARRIER”Kết nối thành công và cuộc gọi được thực hiện:“OK”Các tham số:        <n>: Một số nguyên là vị trí bộ nhớ có thể sử dụng.       <msgm>:  I Không hiện thị số người gọi                   i Hiện thị số người gọi                  G Kích hoạt chế độ gọi nội bộ                  g  Hủy chế độ gọi nội bộ.<;>: Kết thúc và thực hiện cuộc gọi

ATD><str>[<I>][<G>][;] Lệnh thực hiện cuộc gọi đến số đã lưu trong danh bạ có tên <str>.Lệnh này có thể hủy bỏ bằng việc nhận 1 lệnh ATH hoặc 1 ký tự khi lệnh đang thực thi.Module bị lỗi. MODULE gửi trả:+CME ERROR:<err>Nếu không đổ chuông. MODULE gửi trả:“NO DIALTONE”Số máy đang bận:“BUSY”Không kết nối hoặc bị từ chối :“NO CARRIER”Kết nối thành công và cuộc gọi được thực hiện:“OK”Các tham số:<str>: Chuỗi ký tự “abc123” đã lưu torng dạnh bạ.<msgm>:  I Không hiện thị số người gọi.         i Hiện thị số người gọi         G  Kích hoạt chế độ gọi nội bộ         g  Hủy chế độ gọi nội bộ.<;>: Kết thúc và thực hiện cuộc gọi.

ATDL Thực hiện cuộc gọi đến số vừa gọi gần nhất.Lệnh này có thể hủy bỏ bằng việc nhận 1 lệnh ATH hoặc 1 ký tự khi lệnh đang thực thi.Module bị lỗi. MODULE gửi trả:+CME ERROR:<err>Nếu không đổ chuông. MODULE gửi trả:

26

Page 27: Robot Gprs

“NO DIALTONE”Số máy đang bận:“BUSY”Không kết nối hoặc bị từ chối :“NO CARRIER”Kết nối thành công và cuộc gọi được thực hiện:“OK”

ATH0 Lệnh ngắt kết nối đang thực hiện.Lệnh được thực hiện. MODULE gửi trả:“OK”

ATI Lệnh yêu cầu hiện thông tin của module.Ví dụ:SIMCOM_ltd.SIMCOM_SIM900Z.

ATL[value] Lệnh cài đặt độ lớn của loa.Lệnh thực hiện thành công.MODULE gửi trả:“OK”Tham số:[value]:    Có bốn mức độ 0,1,2,3.

ATM[value] Lệnh cài đặt các chế độ cho loa.Lệnh thực hiện thành công. MODULE gửi trả:“OK”Tham số:[value]:  0 Tắt loa.              2 Mở loa khi nhấc máy.

+++ Lệnh này chỉ có hiệu lực khi module đang ở kết nối mạng GPRS. Lệnh này thực hiện hủy bỏ kết nối và trở về chế độ nhận lệnh.Lệnh thực hiện thành công. MODULE gửi trả:“OK”Thực hiện chuyển từ chế độ nhận lệnh trở về chế độ nhận dữ liệu và kết nối mạng gửi lệnh ATO.

ATO[n] Lệnh thực hiện chuyển module từ chế độ nhận lệnh sang chế độ nhận dữ liệu.Lệnh thực hiện không thành công. MODULE gửi trả:“ NO CARRIER “Lệnh thực hiện thành công. MODULE gửi trả:“OK”Tham số:  [n] 0 chuyển từ nhận lệnh sang nhận dữ liệu.

Bảng 1.5. Chi tiết các lệnh thiết lập và cài đặt cuộc gọi

27

Page 28: Robot Gprs

c. Các lệnh thiết lập và cài đặt cho tin nhắn sms.

AT+CMGD Xóa tin nhắn sms.AT+CMGF Định dạng văn bản tin nhắn.AT+CMGL Danh sách tin nhắn đã lưu.AT+CMGR Lệnh đọc tin nhắn.AT+CMGS Lệnh gửi tin nhắn.AT+CMGW Lưu tin nhắn vào bộ nhớ.AT+CMSS Gửi tin nhắn đã lưu.AT+CMGC Gửi sms lệnh.AT+CNMI MODULE gửi thông báo khi có tin nhắn mới.AT+CPMS Các tin nhắn riêng biệt được lưu.AT+CRES Cài đặt lại tin nhắn.AT+CSAS Lưu các cài đặt cho tin nhắn.AT+CSCA Địa chỉ dịch vu tin nhắn.AT+CSMP Cài đặt định dạng chữ của tin nhắn.AT+CSMS Lựa chọn tin nhắn dịch vụ.

Bảng 1.6. Lệnh thiết lập và cài đặt cho tin nhắn SMS

Chi tiết mô tả các lệnh dành cho tin nhắn sms :

AT+CMGD=<index> Lệnh xóa tin nhắn sms đã lưu tron bộ nhớ.Lệnh thực hiện thành công.MODULE gửi trả:“OK”Nếu lệnh không thực hiện được.MODULE gửi trả:+CMS ERROR <err>Tham số:            <index>  Vị trí của tin nhắn lưu trong bộ nhớ.            <err>       Cho biết lỗi.

AT+CMGF=[<mode>] Lệnh cài đặt định dạng của tin nhắn gửi và nhận.Lệnh thực hiện thành công.MODULE gửi trả:“OK”Tham số:[<mode>]        0          Dạng PDU                        1          Dạng văn bản 

AT+CMGL=[<stat>] Danh sách tin nhắn đã lưu.Tham số:         + Nếu tin nhắn là dạng văn bản:[<stat>]: “REC UNREAD” tin nhắn chưa đọc.                “REC READ”       tin nhắn đã đọc.                “STO UNSEND”  tin nhắn chưa gửi được.                “STO SEND”        tin nhắn đã gửi.                “ALL”                   tất cả tin nhắn+ Nếu tin nhắn là dạng PDU:

28

Page 29: Robot Gprs

[<stat>]           0          tin nhắn chưa đọc.                        1          tin nhắn đã đọc.                        2          tin nhắn chưa gửi.                        3          tin nhắn đã gửi.                        4          tất cả tin nhắn

Nếu lệnh thực hiện thành công, MODULE gửi trả chuỗi có định dạng như sau :+ Nếu tin nhắn là dạng văn bản (+CMGF=1) :+CMGL: [<index>,[<stat>],[<oa/da>],[<alpha>],[<scts>] [,<tooa/toda>,<length>] [<data>]“OK”+ Nếu tin nhắn là dạng PDU (+CMGF=0) :+CMGL:<index>,<stat>,[<alpha>],<length> <pdu>“OK” Nếu lệnh thực hiện không thành công,MODULE gửi trả:+CMS ERROR: <err>

AT+CMGR=<index>[,<mode>]

Lệnh đọc tin nhắn sms.Tham số<index> Một số nguyên là vị trí của đã lưu tin nhắn.<mode>     0  Chế độ mặc định. 1 Không thay đổi trạng thái của tin nhắn.Ví dụ : Tin nhắn sẽ không chuyển từ 'received unread’ sang ‘received read’ khi được đọc.Lệnh thực hiện thành công, MODULE gửi trả lại chuỗi có dạng:+  Nếu tin nhắn là dạng văn bản (+CMGF=1)+ CMGR:<stat>,<sn>,<mid>,<dcs>,<page>,<pages> <data>“OK”+  Nếu tin nhắn là dạng PDU (+CMGF=0)+CMGR: <stat>,[<alpha>],<length><pdu>“OK”Lệnh thực hiện không thành công,MODULE gửi trả:+CMS ERROR: <err>Tham số:<stat>:  0 "REC UNREAD" tin nhắn chưa được

29

Page 30: Robot Gprs

đọc. 1  "REC READ" tin nhắn đã đọc. 2  "STO UNSENT" tin nhắn chưa gửi được. 3  "STO SENT" tin nhắn đã gửi. 4  "ALL" tất cả tin nhắn.<length>  Độ dài của tin nhắn (số ký tự).<data> Nội dung tin nhắn.

AT+CMGS = <da>[,<toda>]<CR>nội dung tin nhắn<ctr-Z/ESC>

Lệnh gửi tin nhắn dạng văn bản.Gửi <ESC> cho module để hủy bỏ việc gửi tin nhắn khi lệnh đang thực thi.Tham số:<da>    “số điện thoại gửi tin nhắn”Nếu lệnh được thực hiện thành công và tin nhắn đã được gửi đi,MODULE gửi trả:CR><LF>+CMGS: <mr>“OK”Nếu lệnh không thực hiện được,MODULE gửi trả:“+CMS ERROR: <err>“ Tham số:<mr>    Một số nguyên là vị trí lưu tin nhắn vào bộ nhớ.

AT+CMGW=[<oa/da>[,<tooa/ toda>[,<stat>]]]<CR>  Nội dung tin nhắn <ctrl-Z/ESC><ESC>

Lệnh lưu tin nhắn vào bộ nhớ.Gửi <ESC> cho module để hủy bỏ việc lưu tin nhắn khi lệnh đang thực thi.

Lệnh thực hiện thành công,tin nhắn đã được lưu vào bộ nhớ.MODULE gửi trả:CR><LF>+CMGW: <index><““OK”Nếu có lỗi xảy ra,MODULE gửi trả:+CMS ERROR: <err>Tham số:<index>      Vị trí lưu tin nhắn.

AT+CMSS=<index>[,<da> [,<toda>]]

Lệnh gửi tin nhắn từ bộ nhớ lưu tin nhắnLệnh thực hiện thành công,MODULE gửi trả:+CMGS: <mr>OKLệnh thực hiện không thành công:+CMS ERROR: <err>Tham số:<mr>    Vị trí lưu tin nhắn trong bộ nhớ.<err> Lỗi nhận được

AT+CNMI=[<mode>[,<Module> [,<bm>

Lệnh này cài đặt cho module để module thông báo khi nhận được tin nhắn mới.

30

Page 31: Robot Gprs

[,<ds>[,<bfr>]]]]] Lệnh thực hiện thành công,MODULE gửi trả:“OK”Lệnh thực hiện không thành công:“+CMS ERROR: <err> “Tham số:<Module>    0 Không gửi thông báo khi có tin nhắn mới. 1 Gửi thông báo với định dạng:            + CMODULEI: <mem>,<index>           2 Gửi thông báo có định dạng:          + CMODULE: <oa>, [<alpha>],<scts>[,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<length>]”<data>.

Bảng 1.7. Chi tiết các lệnh thiết lập và cài đặt tin nhắn SMS

d. Các lệnh đặc biệt dành cho SIM900.

AT+CPOWD Tắt nguồn cung cấp cho module.AT+CMIC Thay đổi đổ lớn của microphone.AT +UART Cầu hình cho truyền thông nối tiếp.AT+CALARM Cài đặt hẹn giờ.AT+CADC Đọc ADC.AT+ECHO Cài đặt tiếng vọng cho cuộc gọi.AT+CSMINS Cho biết sim đã gắn vào đế hay chưa.AT+CMODULEE Đọc nhiệt độ hiện tại của module.AT+CMGDA Xóa tất cả các tin nhắn.          

Bảng 1.8. Các lệnh đặc biệt dành cho SIM900

Chi tiết về các lệnh đặc biệt dành cho SIM900 :

AT+CPOWD = <n> Lệnh ngắt nguồn cung cấp cho module hoạt động.Tham số :<n>      0          Ngắt nguồn khẩn cấp.            1          Ngắt nguồn bình thường.

AT+UART=<uart>[,<baud>] Lệnh cấu hình cho truyền thông nối tiếp.Lệnh được thực hiện thành công, MODULE gửi trả :“OK”Tham số:<uart >            1          sử dụng line 1                        2          sử dụng line 2 (gprs)                        3          sử dụng line 3<baud>   9600, 19200, 28800, 38400, 57600, 115200

AT+CALARM=<state>, <time> ,<repeat>,<power>

Lệnh cài đặt báo thức.Lệnh được thực hiện thành công, MODULE gửi trả :

31

Page 32: Robot Gprs

“OK”Tham số:<state> 0 Tắt báo thức.                  1 Bật báo thức.<time>       Thời gian báo thức “yy/MM/dd,hh:mm:ss +-zz” < repeat >       0  Không lặp lại.                        1  Lặp lại hàng ngày.                        2  Tuần                        3  Tháng<power>   0 Thông báo bình thường. Chỉ gửi “ALARM RING” 1 Tắt nguồn báo thức. Gửi “ALARM RING” và ngưng báo thức sau 5s.  2 Bất nguồn báo thức. Gửi “ALARM MODE” và trở về chế độ báo thức.

AT+ CADC? Lệnh đọc ADC.Lệnh thực hiện thành công, MODULE gửi trả:+ CADC: < status>,<value>“OK”Tham số:<status>           1 Đọc thành công.                        0 Lỗi khi đọc ADC.<value>            Số nguyên từ 0-2400.

AT+CSMINS? Lệnh cho biết sim đã được gắn vào đế sim hay chưa.Lệnh thực hiện thành công,MODULE gửi trả:+CSMINS:<n>,<SIM inserted>Tham số:<n>      0 Không cho phép gắn sim.            1 Cho phép.<SIM inserted>            0 Sim chưa được gắn vào đế.            1 Sim đã được gắn.

AT+CMGDA=<type> Xóa tất cả các tin nhắn.Lệnh thực hiện thành công, MODULE gửi trả:“OK”Lệnh thực hiện không thành công:+CMS ERROR: NUMTham số:<type> “DEL READ”     xóa các tin nhắn đã đọc.              “DEL UNREAD” xóa tin nhắn chưa đọc.              “DEL SENT”      xóa các tin nhắn đã gửi.              “DEL UNSENT” xóa các tin nhắn chưa gửi.              “DEL INBOX”    xóa các tin nhắn nhận

32

Page 33: Robot Gprs

được.              “DEL ALL”       xóa tắt cả các tin nhắn.

Bảng 1.9. Chi tiết các lệnh đặc biệt dành cho SIM900

e. Các thông báo lỗi.

Thông báo lỗi có dạng: +CME ERROR: <err>

Một số lỗi thường gặp:

<err> Ý nghĩa0 Module bị lỗi,không thể kết nối với mạng.1 Không kết nối mạng.3 Module không cho phép kết nối mạng.4 Module không hỗ trợ kết nối.10 Chưa gắn sim.13 Sim không hoạt động.14 Sim bận.15 Sim bị lỗi.16 Nhập mật mã sai.20 Bộ nhớ đầy.22 Không tìm thấy.23 Bộ nhớ bị lỗi.24 Chuỗi quá dài.30 Không có mạng.32 Mạng không kết nối được. Chỉ thực hiện được các cuộc gọi khẩn

cấp.100 Không nhận ra.107 Dịch vụ GPRS không được kết nối.744 Sim đầy.746 Không nhận được dịch vụ mạng.770 Không có tín hiệu sim.772 Không có nguồn cho sim.

Bảng 1.10. Các thông báo lỗi CME

Thông báo lỗi có dạng: +CMS ERROR: <err>

<err> Ý nghĩa300 Module bị lỗi.302 Module không hoạt động.303 Không được hỗ trợ.310 Chưa gắn sim.313 Sim bị lỗi.314 Sim bận.315 Sim gắn sai.

33

Page 34: Robot Gprs

320 Bộ nhớ bị lỗi,không hoạt động.331 Không có mạng.512 Sim chưa sẵn sàng.513 Không nhận ra sim.

Bảng 1.11. Các thông báo lỗi CMS

1.3. Cảm biến khoảng cách SRF05

Cảm biến SRF05 là một loại cảm biến khoảng cách dựa trên nguyên lý thu phát

siêu âm. Cảm biến gồm một bộ phát và một bộ thu sóng siêu âm. Sóng siêu âm từ đầu

phát truyền đi trong không khí, gặp vật cản (vật cần đo khoảng cách tới) sẽ phản xạ

ngược trở lại và được đầu thu ghi lại. Vận tốc truyền âm thanh trong không khí là một

giá trị xác định trước, ít thay đổi. Do đó nếu xác định được khoảng thời gian từ lúc

phát sóng siêu âm tới lúc nó phản xạ về đầu thu sẽ quy đổi được khoảng cách từ cảm

biến tới vật thể. Cảm biến SRF05 cho khoảng cách đo tối đa lên tới 3-4 mét.

SRF05 có thể thiết lập cách hoạt động thông qua các chân điều khiển MODE.

Nối hoặc không nối chân MODE xuống GND cho phép cảm biến được điều khiển

thông qua giao tiếp dùng 1 chân hay 2 chân IO.

Hình 1.11. Hình ảnh SRF05

Cách 1 tách riêng chân TRIGER và Echo

Modun cảm biến SRF05 có hai chân TRIGGER và ECHO riêng biệt. Khi chân

MODE để trống (chân MODE có điện trở kéo lên VCC, khi để trống nó sẽ nhận mức

điện áp VCC) SRF05 sẽ sử dụng cả 2 chân chức năng TRIGGER và ECHO cho việc

điều khiển hoạt động của cảm biến.

34

Page 35: Robot Gprs

Hình 1.12. Chân của module SRF05

Hình 1.13. Giản đồ xung chế độ 1 của SRF05

Từ hình vẽ mô tả trên, để điều khiển SRF05 ở MODE1 cần cấp cho chân

TRIGGER một xung điều khiển với độ rộng tối thiểu 10uS. Sau đó một khoảng thời

gian, đầu phát sóng siêu âm sẽ phát ra sóng siêu âm, vi xử lý tích hợp trên modun sẽ

tự xác định thời điểm phát sóng siêu âm và thu sóng siêu âm. Vi xử lý tích hợp này sẽ

đưa kết quả thu được ra chân ECHO. Độ rộng xung vuông tại chân ECHO tỉ lệ với

khoảng cách từ cảm biến tới vật thể.

Cách 2: sử dụng một chân cho cả echo và trigger.

Ở chế độ này, một chân của vi xử lý sẽ điều khiển quá trình phát xung của cảm

biến siêu âm và việc đọc tín hiệu trả về. Yêu cầu lúc đó chân MODE cần được nối đất

(GND). Đầu tiên xuất một xung với độ rộng tối thiểu 10uS vào chân TRIGGER-

ECHO (chân số 3) của cảm biến. Sau đó vi xử lý tích hợp trên cảm biến sẽ phát ra tín

hiệu điều khiển đầu phát siêu âm. Sau 700uS kể từ lúc kết thúc tín hiệu điều khiển, từ

35

Page 36: Robot Gprs

chân TRIGGER-ECHO có thể đọc ra một xung mà độ rộng tỉ lệ với khoảng cách từ

cảm biến tới vật thể.

Hình 1.14. Chế độ 2

36

Page 37: Robot Gprs

CHƯƠNG II

THIẾT KẾ HỆ THỐNG

2.1. Thiết kế phần cứng

2.1.1. Sơ đồ khối hệ thống

Hình 2.1. Sơ đồ khối hệ thống

Hệ thống gồm các khối như hình trên được kết nối với nhau với các chức năng

cụ thể sau:

Module control là khối điều khiển: nhận dữ liệu từ khối cảm biến (Module

SENSORS) chức năng giao tiếp với Module SIM để truyền thông qua GPRS đồng

thời giao tiếp với module Sensor để thu thập dữ liệu cảm biến.

Module SIM thực chất là SIM900 dùng trong mạng di động để truyền thông

GPRS.

Module sensor: là các cảm biến thu thập dữ liệu ở đây là cảm biến khoảng cách

dung để thu thập các tín hiệu về khoảng cách.

Module POWER : Đây là nguồn sử dụng Acquy, và PIN dùng cho tất cả các

module.

Module executable: là module thực thi đó là các motor điều khiển bánh của

robot.

37

Page 38: Robot Gprs

2.1.2. Sơ đồ mô tả hệ thống

Hình 2.2. Mô tả hệ thống

Hệ thống được mô tả như hình trên: Robot được kết nối tới một tên miền cố

định trên mạng internet với địa chỉ ip tĩnh(server) , laptop cũng kết nối tới tên miền

đó. Khi cả hai cùng kết nối tới địa chỉ đó thì khi đó chúng có thể giao tiếp và truyền

thông dữ liệu với nhau. Dữ liệu từ Robot là các khoảng cách được gửi về máy vi

tính theo dạng khung truyền, dữ liệu này được máy tính xử lý tách ra và tính toán để

vẽ đường đi trên phần mềm. Phần mềm trên máy vi tính có thể điều khiển ô tô theo

hướng quy định bởi các nút được thiết kế trên phần mềm. Như vậy máy tính lúc này

đóng vai trò như một Server, robot chính là một Client kết nối tới nó.

38

Page 39: Robot Gprs

2.1.3. Sơ đồ nguyên lý điện tử

a. Module control

Hình 2.3. Module control

Sử dụng vi điều khiển PIC 16F877A với thạch anh 20Mhz cấp dao động cho

Module, với các chức năng điều khiển các động cơ ở các chân RA0, RA1, RA3, RA4.

Chân RD7 dùng để điều khiển việc bật hoặc tắt module SIM900 dử dụng transistor

NPN để tác động. Chân RB0 dùng để kiểm tra trạng thái của SIM900, RB2 RB4 RB6

tương ứng là các chân T1 T2 T3 dùng để giao tiếp cảm biển khoảng cách SRF05.

Chân RC5 được nối với chân VDD_EXT của SIM900 được nối vào led báo có

nguồn, đây là chaand điện áp ra cung cấp áp 2.8V . Chân RB7 để giao tiếp lấy dữ liệu

từ cảm biến nhiệt độ một dây DS18B20. Ngoài ra module này được nối với công tắc

được nối thông qua điện trở lên nguồn mức 0 thì thực hiện reset( khi nhấn công tắc).

Chân RX và TX trên module dùng để giao tiếp truyền nhận dữ liệu với module SIM.

Vi điều khiển này được nạp chương trình dưới dạng đuôi .hex, được lập trình

bằng ngôn ngữ C cho vi điều khiển PIC thông qua trình biên dịch CCS của hãng

Microchip.

39

Page 40: Robot Gprs

b. Module sensor

Hình 2.4. Module sensor

Module này sử dụng 2 loại cảm biến đó là cảm biến nhiệt độ giao tiếp 1 dây là

DS18B20 và module cảm biến khoảng cách SRF05.

Cảm biến DS18B20

Gồm 3 chân được mắc như hình vẽ trên, chân nguồn và dữ liệu được nối lên

nguồn thông qua điện trở để kéo mức điện áp lên cao giúp cho việc giao tiếp

dữ liệu với vi điều khiển tốt hơn. Chân dữ liệu ở giữa được nối tới chân RB7

của vi điều khiển PIC16F877A trong module Control.

Đây là loại cảm biến sử dụng chuẩn giao tiếp 1 dây, cung cấp từ 9 đến 12 bít

chứa các giá trị nhiệt độ trong bài sẽ dùng 9 bít.

Cảm biến khoảng cách SRF05

Đây là cảm biến khoảng cách, sử dụng giao tiếp khoảng cách như cách 2 có

nghĩa là chân phát và thu tín hiệu cùng trên chân TRIGER, khi giao tiếp thực

hiện kích chân Triger lên 1 trong 10 micro giây, sau đó chờ tín hiệu phản hồi

để tính thời gian phản hồi từ đó áp dụng các công thức để tính ra khoảng cách.

40

Page 41: Robot Gprs

c. Module SIM

Hình 2.5. Module SIM

Sử dụng SIM900 kết nối thẻ sim dùng để kết nối tới mạng di động và kết nối tới

mạng internet thông qua GPRS. Trên module sử dụng các led để báo trạng thái được

kết nối tới 2 chân NETLIGHT và STATUS thông qua các transistor. Sử dụng giap

tiếp SIM thông qua các chân như SIM_VDD, SIM_DATA, SIM_CLK, SIM_RST và

kết nối tới an-ten thông qua chân RF_ANT.

41

Page 42: Robot Gprs

d. Khối nguồn

Hình 2.6. Khối nguồn

Sử dụng IC AMS1117 chuyển đổi điện áp từ ác-quy 12V xuống 5V cung cấp

cho vi điều khiển PIC và cảm biến hoạt động. Ở đây sử dụng cả nguồn PIN điện thoại

cung cấp nguồn 4.1V cho module SIM hoạt động. Có thể dùng nguồn Ac-quy 12 V

vừa điều khiển động cơ, vừa nuôi mạch nếu nối Jum ở J3. Hoặc có thể dùng nguồn

độc lập nếu không dùng Jum nối.

2.2. Thiết kế phần mềm

2.2.1. Lưu đồ chương trình điều khiển

Chương trình ngắt nhận lệnh

Khi có ngắt đến thì tiến hành lưu lệnh đang thực hiện và bật cờ báo đã nhận

được lệnh sau đó kết thúc chương trình ngắt quay về chương trình chính. Sau đó tiếp

tục chờ ngắt, nếu có ngắt lại quay trở lại chương trình ngắt.

42

Page 43: Robot Gprs

Chương trình chính

Hình 2.7. Lưu đồ thuật toán điều khiển

43

Page 44: Robot Gprs

Lưu đồ thuật toán được mô tả như sau:

Khi cấp nguồn cho mạch thì thuật toán được mô tả như sau: Ban đầu phải cấu

hình SIM900 để kết nối GPRS tới địa chỉ server tĩnh. Thiết lập ngắt để sẵn sàng nhận

lệnh từ server, thiết lập chu kỳ truyền là 1s khi kết nối được tới Server rồi tiến hành

chạy tiến.

Sau đó kiểm tra khoảng cách nhận được, nếu khoảng cách của cảm biến đặt phía

trước Robot nhỏ hơn 30 cm thì tiến hành dừng xe gửi thông số về khoảng cách trước

tría phải và nhiệt độ về Server, ngừng đếm thời gian sau đó xuống kiểm tra xem có

lệnh nhận được từ Server hay không. Nếu khoảng cách lớn hơn 30 cm thì không dừng

xe nữa mà kiểm tra lệnh từ Server.

Nếu có lệnh từ Server gửi về thì tiến hành kiểm tra, nếu là lệnh tiến thì sẽ đi tiến

và bắt đầu đếm thời gian, ngược lại nếu là dừng xẽ dừng xe tương tự nếu xe rẽ trái 90

độ thì rẽ và rẽ phải 90 độ thì rẽ phải 90 độ và bắt đầu đếm thời gian. Sau đó xóa các

lệnh nhận được và kiểm tra thời gian đếm.

Nếu không nhận được thời gian gửi về từ server hoặc ko thực hiện lệnh nào thì

nhảy xuống kiểm tra thời gian đếm, nếu thời gian đếm bằng chu kỳ truyền thì gửi

thông số khoảng cách trước khoảng cách trái, khoảng cách phải và nhiệt độ về server

và reset bộ đếm. Ngược lại thì quay lại quá trình kiểm tra khoảng cách. Và lặp lại các

bước như trên.

44

Page 45: Robot Gprs

2.2.2. Lưu đồ thuật toán điều khiển trên máy tính

Hình 2.8. Thuật toán trên máy tính

45

Page 46: Robot Gprs

Mô tả lưu đồ:

Bắt đầu khi chạy chương trình, khi nhấn nút open thì tiến hành kết nối Socket và

mở cổng kết nối trên mạng và chờ client là robot kết nối tới nó. Khi có kết nối từ

client thì tiến hành tạo ra hai thread gửi và nhận song song độc lập với nhau. Nếu

chưa có kết nối từ client thì tiếp tục chờ.

Sau khi có kết nối từ client rồi thì tiến hành việc nhận và gửi dữ liệu thông qua

hai thread gửi và nhận được mô tả như sau:

Với Thread nhận: Tạo ra bộ đệm nhận với 1024 byte để chứa dữ liệu trong bộ

đệm nhận, sau đó tạo ra một đối tượng để vẽ bản đồ là drawPanel, khi có dữ liệu tiến

hành nhận dữ liệu và chuyển đổi sang dạng chuỗi. Sau đó tiến hành tách chuỗi thành

các giá trị khoảng cách và nhiệt đột ương ứng và vẽ bản đồ sau đó quay lại tạo bộ

đệm nhận và tiếp tục nhận dữ liệu từ client.

Với Thread truyền: Lắng nghe sự kiện khi nhấn một trong các nút sau trái, phải,

tiến lùi, dừng thì kiểm tra trạng thái sự kiện nút nhấn cuối cùng thì gửi lệnh tương

ứng tới client là tiến, lùi, quay trái hoặc quay phải và dừng. Nếu không thì quay trở

lại chương trình kiểm tra nút nhấn.

46

Page 47: Robot Gprs

CHƯƠNG III

KẾT QUẢ ĐẠT ĐƯỢC

3.1. Sản phẩm

Sản phẩm sau khi hoàn thành đáp ứng được yêu cầu đề ra.

Hình 3.1. Hình ảnh ô tô dò đường

47

Page 48: Robot Gprs

Hình 3.2. Hình ảnh vẽ bản đồ trên máy tính

3.2. Kết luận và hướng phát triển

Sau khi hoàn thành đề tài “Robot thăm dò địa hình điều khiển từ xa” đã hoạt

động đúng như ý tưởng và yêu cầu thiết kế. Phần mềm đã vẽ được đường đi của

Robot và các chức năng điều khiển đã được thiết lập. Tuy nhiên do sai số linh kiện và

khả năng nghiên cứu còn hạn chế Robot vẫn chưa vận hành tốt trong các điều kiện

địa hình khác nhau.

Vì vậy hướng phát triển của đề tài là phát triển thêm chức năng định vị cho nó

để xác định vị trí thực trên bản đồ, nâng cấp cảm biến khoảng cách thành camera để

con người giám sát tốt hơn. Có thể vận hành tốt trong các địa hình khác nhau…nhằm

đáp ứng được các yêu cầu của thực tế của thị trường.

48