Professional Documents
Culture Documents
QUẢN LÝ THIẾT BỊ
SỬ DỤNG CÔNG NGHỆ GSM
-i-
- Tp. Hồ Chí Minh, Tháng 1-2010 -
- ii -
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐH BÁCH KHOA CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Thành phố Hồ Chí Minh Độc Lập – Tự Do – Hạnh Phúc
Số:______/BKĐT
Khoa: Điện – Điện tử
Bộ Môn: Viễn Thông
NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP
Họ và tên: BÙI MẠNH KHÁNH MSSV: 40501241
Họ và tên: VÕ THÀNH LONG MSSV: 40501532
Ngành: VIỄN THÔNG LỚP: DD05DV2
1. Đầu đề luận văn: “Quản lý thiết bị sử dụng GSM”
2. Nhiệm vụ ( Yêu cầu về nội dung và số liệu ban đầu):
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
3. Ngày giao nhiệm vụ luận văn:
4. Ngày hoàn thành nhiệm vụ:
5. Họ và tên người hướng dẫn: Phần hướng dẫn
................................................
b)
c)
9. Đánh giá chung (bằng chữ: giỏi, khá, TB): Điểm …………………….
Lời đầu tiên, sinh viên muốn gửi lời cảm ơn chân thành đến giáo viên, Thạc sĩ
Đinh Quốc Hùng, trong thời gian vừa qua, đã hướng dẫn và giúp đỡ sinh viên
nghiên cứu từ đồ án 2, thực tập tốt nghiệp đến luận văn tốt nghiệp. Những lời nhận
xét, góp ý và hướng dẫn của giáo viên đã giúp sinh viên có một định hướng đúng
trong quá trình thực hiện đề tài, giúp sinh viên nhìn ra được ưu khuyết điểm của đề
tài và từng bước khắc phục để ngày một tốt hơn.
Đồng thời sinh viên cũng muốn gửi lời cảm ơn sâu sắc đến gia đình và bạn bè đã
động viên và cổ vũ tinh thần sinh viên trong suốt quãng thời gian học tập, đặc biệt
là bố mẹ sinh viên, người đã chăm lo và hi sinh rất nhiều cho sinh viên để sinh viên
có thể chuyên tâm học tập.
Bên cạnh đó, sinh viên muốn nói lời cảm ơn đến những giáo viên đã đứng trên bục
giảng truyền đạt kinh nghiệm, kiến thức cho sinh viên trong suốt 4 năm đại học vừa
qua.
Một lần nữa, sinh viên xin gửi lời cảm ơn chân thành và sâu sắc đến bố mẹ, thầy cô
và bạn bè, những người luôn ở cạnh động viên, giúp đỡ và cổ vũ tinh thần cho sinh
viên.
VÕ THÀNH LONG
- ii -
TÓM TẮT LUẬN VĂN
Mục tiêu chính của đề tài luận văn là thiết kế mạch giao tiếp với GSM modem
nhằm quản lý thiết bị bằng tin nhắn SMS. Khối giao tiếp này phải được thiết kế một
cách linh hoạt nhằm truyền tải thông tin từ người sử dụng tới các thiết bị quản lý.
Lý thuyết về GSM modem đã được tìm hiểu trong đồ án hai, trong phần luận văn
này tập trung xây dựng hệ thống gồm phần giao tiếp với GSM modem (node trung
tâm) và thiết bị giám sát nhiệt độ (node ngoại vi).
Node ngoại vi và node trung tâm sử dụng giao tiếp không dây nhằm đảm bảo tính
thẩm mỹ,tiện lợi cho người dùng.Mạch cảm biến nhiệt độ là một thí dụ điển hình
cho thiết bị giám sát.Với thiết kế, lập trình linh hoạt người dùng có thể thêm nhiều
thiết bị giám sát khác vào hệ thống mà không cần thay đổi gì node trung tâm.
VÕ THÀNH LONG
- iii -
MỤC LỤC
Đề mục Trang
Trang bìa.............................................................................................................i
Nhiệm vụ luận văn...............................................................................................
Lời cảm ơn.........................................................................................................ii
Tóm tắt luận văn...............................................................................................iii
Mục lục.............................................................................................................iv
Danh sách hình vẽ............................................................................................vii
Danh sách bảng biểu.........................................................................................xi
- iv -
1.5.4 Mô tả các thanh ghi.........................................................................17
1.6 USART...................................................................................................19
1.6.1 Tạo xung clock................................................................................20
1.6.2 Định dạng khung truyền..................................................................21
1.6.3 Khởi tạo USART.............................................................................22
1.6.4 Truyền thông dữ liệu –bộ truyền USART.......................................23
1.6.5 Nhận dữ liệu –bộ phận USART.......................................................24
1.7 Bộ biến đổi A/D.....................................................................................26
Chương 2: GIỚI THIỆU CẢM BIẾN DS18B20
2.1 Sơ đồ chân cảm biến nhiệt độ DS18B20.................................................34
2.2 Các đặc tính cơ bản của DS18B20..........................................................35
2.3 Lệnh ROM và các lệnh chức năng..........................................................37
2.3.1 Lệnh ROM......................................................................................37
2.3.2 Lệnh chức năng bộ nhớ...................................................................38
2.4 Các cách kết nối DS18B20 với vi điều khiển.........................................39
-v-
5.1.2 Sơ đồ nguyên lý.............................................................................60
5.2 Giới thiệu IC max232..............................................................................62
- vi -
DANH SÁCH HÌNH VẼ
- vii -
Hình 3.1: Module giao tiếp RF
Hình 3.2:Cấu trúc chân RF module
Hình 3.3:Kết nối RF
Hình 4.1: Sơ đồ khối bên trong GSM modem.
Hình 4.2: Kết nối SMA cho anten
Hình 4.3 Nguồn cung cấp kết nối
Hình 4.4 15 chân kết nối
Hình 5.1: Sơ đồ khối tổng quát
Hình 5.2: Quá trình truyền tin(1)
Hình 5.3: Quá trình truyền tin(2)
Hình 5.4: Quá trình truyền tin(3)
Hình 5.5: Sơ đồ khối trung tâm
Hình 5.6: Sơ đồ khối ngoại vi
Hình 5.7: Sơ đồ nguyên lý trung tâm
Hình 5.8 : Sơ đồ nguyên lý ngoại vi
Hình 5.9: Sơ đồ chân MAX232.
Hình 5.10: Sơ đồ khối bên trong MAX232.
- viii -
Hình 6.13: Cách sử dụng codevisionAVR(13)
Hình 6.14: Cách sử dụng codevisionAVR(14)
- ix -
DANH SÁCH BẢNG BIỂU
-x-
DANH MỤC TỪ VIẾT TẮT
- xi -
Phần mở đầu
Ngày nay với sự phát triển của hệ thống thông tin di động GSM và hệ thống
định vị GPS, nhu cầu của việc giám sát, quản lý ngày càng tăng. Song song với nhu
cầu định vị, chỉ đường dùng công nghệ GPS, nhu cầu giám sát thiết bị trên xe cũng
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 1
ngày càng cấp thiết. Module Wavecom Fastrack Supreme được tích hợp nhiều cổng
giao tiếp mở rộng cho những chức năng khác nhau như GPS, Bluetooth, Wifi,… cùng
các chuẩn giao tiếp chuẩn thông dụng như USB,RS232,…đã đáp ứng được hai nhu cầu
định vị và giám sát trên.
Trong đề tài luận văn này, chúng em thiết kế hệ thống để cụ thể mô hình trên. Thiết bị
gắn trên xe tải sẽ làm nhiệm vụ chính là thu sóng GPS xác định tọa độ của nó và gửi
tọa độ đó cùng các thông số đo được trên xe gửi về trung tâm quản lý. Cụ thể như sau:
- Thiết kế khối trung giao tiếp với GSM modem
- Thiết kế khối ngoại vi kiểm tra nhiệt độ
- Giao tiếp khối ngoại vi và khối trung tâm dùng RF module giao tiếp không dây
PHẦN 1: CƠ SỞ LÝ THUYẾT
Chương 5: Cơ sở thiết kế
CƠ SỞ LÝ THUYẾT
ATmega16 là vi điều khiển 8 bit dựa trên kiến trúc RISC. Với khả năng thực
hiện mỗi lệnh trong vòng một chu kỳ xung clock, ATmega16 có thể đạt được tốc độ
1MIPS trên mỗi MHz (1 triệu lệnh/s/MHz).Dưới đây là sơ đồ khối của ATmega16
ATmega16 có các đặc điểm sau: 16KB bộ nhớ Flash với khả năng đọc trong khi
ghi, 512 byte bộ nhớ EEPROM, 1KB bộ nhớ SRAM, 32 thanh ghi chức năng chung,
32 đường vào ra chung, 3 bộ định thời/bộ đếm, ngắt nội và ngắt ngoại, USART, giao
tiếp nối tiếp 2 dây, 8 kênh ADC 10 bit,....
ATmega 16 hỗ trợ đầy đủ các chương trình và công cụ phát triển hệ thống như:
trình dịch C, macro assemblers, chương trình mô phỏng/sửa lỗi, kit thử nghiêm,...
CPU của AVR có chức năng bảo đảm sự hoạt động chính xác của các chương
trình. Do đó nó phải có khả năng truy cập bộ nhớ, thực hiện các quá trình tính toán,
điều khiển các thiết bị ngoại vi và quản lý ngắt.
1.2.1 Cấu trúc tổng quát
AVR sử dụng cấu trúc Harvard, tách riêng bộ nhớ và các bus cho chương
trình và dữ liệu. Các lệnh được thực hiện chỉ trong một chu kỳ xung clock. Bộ nhớ
chương trình được lưu trong bộ nhớ Flash.
1.2.2 ALU
ALU làm việc trực tiếp với các thanh ghi chức năng chung. Các phép toán
được thực hiện trong một chu kỳ xung clock. Hoạt động của ALU được chia làm 3
loại: đại số, logic và theo bit.
C: Carry Flag ;cờ nhớ (Nếu phép toán có nhớ cờ sẽ được thiết lập)
Z: Zero Flag ;Cờ zero (Nếu kết quả phép toán bằng 0)
N: Negative Flag (Nếu kết quả của phép toán là âm)
V: Two’s complement overflow indicator (Cờ này được thiết lập khi tràn số
bù 2)
V, For signed tests (S=N XOR V) S: N
H: Half Carry Flag (Được sử dụng trong một số toán hạng sẽ được chỉ rõ
sau)
T: Transfer bit used by BLD and BST instructions(Được sử dụng làm
nơi trung gian trong các lệnh BLD,BST).
I: Global Interrupt Enable/Disable Flag (Đây là bit cho phép toàn cục
ngắt. Nếu bit này ở trạng thái logic 0 thì không có một ngắt nào được phục vụ.)
Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được
lưu vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí. Và con trỏ ngăn xếp sẽ
giảm 1 khi thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp
sẽ tăng 1 và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2. Như
vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước
khi một chương trình con được gọi hoặc các ngắt được cho phép phục vụ. Và giá trị
ngăn xếp ít nhất cũng phải lớn hơn hoặc bằng 60H (0x60) vì 5FH trỏ lại là vùng các
thanh ghi.
thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1
và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2. Như vậy con trỏ
ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một
chương trình con được gọi hoặc các ngắt được cho phép phục vụ. Và giá trị ngăn xếp
ít nhất cũng phải lớn hơn 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi.
Ví dụ:
char cSREG;
EECR |= (1<<EEWE);
AVR có 2 không gian bộ nhớ chính là bộ nhớ dữ liệu và bộ nhớ chương trình.
Ngoài ra ATmega16 còn có thêm bộ nhớ EEPROM để lưu trữ dữ liệu.
1120 ô nhớ của bộ nhớ dữ liệu định địa chỉ cho file thanh ghi, bộ nhớ
I/O và bộ nhớ dữ liệu SRAM nội. Trong đó 96 ô nhớ đầu tiên định địa chỉ cho
file thanh ghi và bộ nhớ I/O, và 1024 ô nhớ tiếp theo định địa chỉ cho bộ nhớ
SRAM nội.
Vi điều khiểnATmega16 có 32 đường vào ra chia làm bốn nhóm 8 bit một. Các
đường vào ra này có rất nhiều tính năng và có thể lập trình được. Ở đây ta sẽ xét chúng
là các cổng vào ra số. Nếu xét trên mặt này thì các cổng vào ra này là cổng vào ra hai
chiều có thể định hướng theo từng bit. Và chứa cả điện trở pull-up (có thể lập trình
được). Mặc dù mỗi port có các đặc điểm riêng nhưng khi xét chúng là các cổng vào ra
số thì dường như điều khiển vào ra dữ liệu thì hoàn toàn như nhau. Chúng ta có thanh
ghi và một địa chỉ cổng đối với mỗi cổng, đó là : thanh ghi dữ liệu cổng (PORTA,
PORTB, PORTC, PORTD), thanh ghi dữ liệu điều khiển cổng (DDRA, DDRB,
DDRC, DDRD) và cuối cùng là địa chỉ chân vào của cổng (PINA, PINB, PINC,
PIND).
Tóm lại:
1. Để đọc dữ liệu từ ngoài thì ta phải thực hiện các bước sau:
Đưa dữ liệu ra thanh ghi điều khiển DDRxn để đặt cho PORTx (hoặc bit n
trong port) đó là đầu vào (xóa thanh ghi DDRx hoặc bit).
Sau đó kích hoạt điện trở pull-up bằng cách set thanh ghi PORTx ( bit).
Cuối cùng đọc dữ liệu từ địa chỉ PINxn (trong đó x: là cổng và n là bit).
2. Để đưa dữ liệu từ vi điều khiển ra các cổng cũng có các bước hoàn toàn tương tự.
Ban đầu ta cũng phải định nghĩa đó là cổng ra bằng cách set bit tương ứng của cổng
đó…và sau đó là ghi dữ liệu ra bit tương ứng của thanh ghi PORTx.
Ví dụ:
unsigned char i;
...
/* Define pull-ups and set outputs high */
/* Define directions for port pins */
PORTB = (1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0);
DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);
/* Insert nop for synchronization*/
_NOP();
/* Read port pins */
i = PINB;
Bộ định thời (timer/counter0) là một module định thời/đếm 8 bit, có các đặc
điểm sau:
Bộ đếm một kênh
Xóa bộ định thời khi trong mode so sánh (tự động nạp)
PWM
Tạo tần số
Bộ đếm sự kiện ngoài
Bộ chia tần 10 bit
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 14
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 1: GIỚI THIỆU VI XỬ LÝ ATMEGA16
TCNT0 và OCR0 là các thanh ghi 8 bit. Các tín hiệu yêu cầu ngắt đều nằm
trong thanh ghi TIFR. Các ngắt có thể được che bởi thanh ghi TIMSK.
Bộ định thời có thể sử dụng xung clock nội thông qua bộ chia hoặc xung clock
ngoài trên chân T0. Khối chọn xung clock điều khiển việc bộ định thời/bộ đếm sẽ
dùng nguồn xung nào để tăng giá trị của nó. Ngõ ra của khối chọn xung clock được
xem là xung clock của bộ định thời (clkT0).
Thanh ghi OCR0 luôn được so sánh với giá trị của bộ định thời/bộ đếm. Kết
quả so sánh có thể được sử dụng để tạo ra PWM hoặc biến đổi tần số ngõ ra tại
chân OC0.
Phần chính của bộ định thời 8 bit là một đơn vị đếm song hướng có thể lập trình
được. Cấu trúc của nó như hình dưới đây:
Bộ so sánh 8 bit liên tục so sánh giá trị TCNT0 với giá trị trong thanh ghi so sánh
ngõ ra (OCR0). Khi giá trị TCNT0 bằng với OCR0, bộ so sánh sẽ tạo một báo hiệu.
Báo hiệu này sẽ đặt giá trị cờ so sánh ngõ ra (OCF0) lên 1 vào chu kỳ xung clock tiếp
theo. Nếu được kích hoạt (OCIE0=1), cờ OCF0 sẽ tạo ra một ngắt so sánh ngõ ra và sẽ
tự động được xóa khi ngắt được thực thi. Cờ OCF0 cũng có thể được xóa bằng phần
mềm.
Bit 7-FOC0: So sánh ngõ ra bắt buộc:Bit này chỉ tích cực khi bit
WGM00 chỉ định chế độ làm việc không có PWM. Khi đặt bit này lên 1, một
báo hiệu so sánh bắt buộc xuất hiện tại đơn vị tạo dạng sóng.
Bit 6, 3-WGM01:0: Chế độ tạo dạng sóng:Các bit này điều khiển đếm thứ
tự của bộ đếm, nguồn cho giá trị lớn nhất của bộ đếm (TOP) và kiểu tạo dạng sóng
sẽ được sử dụng.
Bit 5:4-COM01:0: Chế độ báo hiệu so sánh ngõ ra:Các bit này điều khiển
hoạt động của chân OC0. Nếu một hoặc cả hai bit COM01:0 được đặt lên 1, ngõ
ra OC0 sẽ hoạt động.
Bit 2:0: CS02:0: Chọn xung đồng hồ:Ba bit này dùng để lựa chọn nguồn
xung cho bộ định thời/bộ đếm.
Thanh ghi bộ định thời/bộ đếm cho phép truy cập trực tiếp (cả đọc và ghi)
vào bộ đếm 8 bit.
1.6 USART
Bộ truyền nhận nối tiếp đồng bộ và bất đồng bộ là một thiết truyền thông nối tiếp
có các chức năng chính như sau:
Hoạt động song công (các thanh ghi truyền và nhận nối tiếp độc lập với nhau).
Hoạt động đồng bộ hoặc bất đồng bộ
Bộ tạo tốc độ baud có độ chính xác cao
Hỗ trợ khung truyền nối tiếp với 5, 6, 7, 8, hoặc 9 bit dữ liệu và 1 hoặc 2 bit
stop
Kiểm tra chẵn lẻ
Phát hiện tràn dữ liệu
Phát hiện lỗi khung
Lọc nhiễu, bao gồm phát hiện bit start lỗi và bộ lọc thông thấp số
Ngắt khi kết thúc truyền, thanh ghi truyền hết dữ liệu và kết thúc nhận
Chế độ truyền thông đa vi xử lý
Chế độ truyền đồng bộ tốc độ cao
Sơ đồ khối của bộ USART như sau:
USART bao gồm 3 phần chính: bộ tạo xung clock, bộ truyền và bộ nhận. Các
thanh ghi điều khiển được sử dụng chung giữa các phần này.
Ví dụ:
;
/* Copy 9th bit to TXB8 */
UCSRB &= ~(1<<TXB8);
if ( data & 0x0100 )
UCSRB |= (1<<TXB8);
/* Put data into buffer, sends the data */
UDR = data;
}
Vi điều khiểnATmega16 có một bộ biến đổi ADC tích hợp trong chip với các đặc
điểm:
Độ phân giải 10 bit
Sai số tuyến tính: 0.5LSB
Độ chính xác +/-2LSB
Thời gian chuyển đổi:65-260μs
8 Kênh đầu vào có thể được lựa chọn
Có hai chế độ chuyển đổi free running và single conversion
Có nguồn báo ngắt khi hoàn thành chuyển đổi
Loại bỏ nhiễu trong chế độ ngủ
Tám đầu vào của ADC là tám chân của PORTA và chúng được chọn thông qua
một MUX.
Để điều khiển hoạt động vào ra dữ liệu của ADC và CPU chúng ta có 3 thanh ghi:
ADMUX là thanh ghi điều khiển lựa chọn kênh đầu vào cho ADC, ADCSRA là thanh
ghi điều khiển và thanh ghi trạng thái của ADC, ADCH và ADCL là 2 thanh ghi dữ
liệu.
Với 4 bit được định nghĩa là MUX3, MUX2, MUX1,và MUX0, ứng với các tổ hợp
logic ta có thể chọn kênh đầu vào. Cụ thể:
Các bit REFS1 và REFS0 dùng để chọn giá trị điện áp tham khảo cho ADC, như
sau:
Bảng 1.2: chọn điện áp tham khảo ADC
Chú ý: Nếu như ta thay đổi kênh trong thời điểm mà ADC đang chuyển đổi thì khi
quá trình chuyển đổi đã hoàn thành thì kênh vào mới được thay đổi.
Bit này được set lên 1 bởi phần cứng khi quá trình chuyển đổi đã hoàn thành
và thanh ghi dữ liệu đã được cập nhật. Bit này được xóa bằng phần cứng nếu
như ngắt này được phép và được phục vụ. Hoặc nó có thể được xóa bằng cách
ghi giá trị logic “0”vào cờ này. Cụ thể khi ngắt bị cấm ta có thể sử dụng các
lệnh sbi và cbi để tác dụng lên bit này.
ADMUX (có thể thay đổi trong quá trình hoạt động).
Bước 3: Thiết lập các thông số cho ADC
Tốc độ chuyển đổi thông qua xung nhip chuyển đổi.
Chế độ chuyển đổi : đơn hoặc tự động.
Sử dụng ngắt hoặc không.
Bước 4: Bắt đầu chuyển đổi và đọc dữ liệu.
Ví dụ: (biến đổi ADC, ngõ vào analog PA2, hiển thị dữ liệu trên led ở PORTB)
#include <avr/io.h>
#include<avr/interrupt.h>
//ADC interrupt function
ISR(ADC_vect)
{PORTB=ADCH;
}
int main(void)
{
outp(0xFF, DDRB); //PORTB is output
outp(0xFF, PORTB); //all PIN’s high (LED’s off)
outp(0x22, ADMUX); //PINA2 as analog input (MUX0..2)
//left adjusted (ADLAR=1)
//AREF as reference voltage (connected to VCC 5V) (REFS0..1)
outp(0xA5, ADCSR); //ADC enable, ADC auto trigger, ADC prescaler= 32
outp((inp(SFIOR)&0x1F),SFIOR); //Trigger source = Free Running Mode
sbi(ADCSR,6);
for(;;)
{
}
return 1;
Cảm biến nhiệt độ DS18B20 là một sản phẩm của công ty Dallas (Mỹ), đây
cũng là công ty đóng góp nhiều vào việc cho ra đời bus một dây và các cảm biến một
dây. Hình dạng bề ngoài của cảm biến một dây DS18B20 được miêu tả trong hình vẽ,
trong đó dạng vỏ TO-92 với 3 chân là dạng thường gặp và được sử dụng trong nhiều
ứng dụng, cảm biến dạng vỏ SOIC với 8 chân được dùng để đo nhiệt độ bề mặt, kể cả
da người.
• Chân 1:GND
Có thể đo nhiệt độ từ -55 đến +1250C. Khi lắp vào mạch phải nối chân 2 và
chân 3 với điện trở 4k7.
Sử dụng giao diện một dây nên chỉ cần có một chân ra để truyền thông.
Độ phân giải khi đo nhiệt độ là 9 - 12bit. Dải đo nhiệt độ -550C đến 1250 C,
từng bậc 0,50 C, có thể đạt độ chính xác đến 0,10 C bằng việc hiệu chỉnh qua
phần mềm. Rất thích hợp với các ứng dụng đo lường đa điểm vì nhiều đầu
đo có thể được nối trên một bus, bus này được gọi là bus một dây (1-wire
bus) giống hình dưới đây :
Không cần thêm linh kiện bên ngoài. Điện áp nguồn nuôi có thể thay đổi
trong khoảng rộng, từ 3,0 V đến 5,5 V một chiều và có thể được cấp thông
qua đường dẫn dữ liệu. Dòng tiêu thụ ở chế độ nghỉ cực nhỏ. Thời gian lấy
mẫu và biến đổi thành số tương đối nhanh, không quá 200 ms.
Mỗi cảm biến có một mã định danh duy nhất 64 bit chứa trong bộ nhớ ROM
trên chip (on chip), giá trị nhị phân được khắc bằng tia lazer. Đầu đo nhiệt
độ số DS18B20 đưa ra số liệu để biểu thị nhiệt độ đo được dưới dạng mã
nhị phân 9 bit. Các thông tin được gửi đến và nhận về từ DS18B20 trên giao
diện 1-wire, do đó chỉ cần hai đường dẫn gồm một đường cho tín hiệu và
một đường làm dây đất là đủ để kết nối vi điều khiển đến điểm đo. Nguồn
nuôi cho các thao tác ghi/đọc/chuyển đổi có thể được trích từ đường tín
hiệu, không cần có thêm đường dây riêng để cấp điện áp nguồn.
Mỗi vi mạch đo nhiệt độ DS18B20 có một mã số định danh duy nhất, được
khắc bằng laser trong quá trình chế tạo vi mạch nên nhiều vi mạch DS1820
có thể cùng kết nối vào một bus 1-wire mà không có sự nhầm lẫn. Đặc điểm
này làm cho việc lắp đặt nhiều cảm biến nhiệt độ tại nhiều vị trí khác nhau
trở nên dễ dàng và với chi phí thấp.
Theo chuẩn 1-wire độ dài tối đa cho phép của bus là 300 m.
Số lượng các cảm biến nối vào bus không hạn chế. Để nâng cao độ phân
giải lên trên 12 bit ta phải tính toán thêm bằng phần mềm dựa trên các số
liệu lưu trữ trên các thanh ghi nhiệt độ, COUNT REMAIN và COUNT PER
C trong nhóm các thanh ghi nháp (scratchpad).
Bộ nhớ ROM 64–Bit Của DS18B20: Mỗi cảm biến nhiệt độ DS1820 có một
dãy mã 64 bit duy nhất được lưu trữ trong bộ nhớ ROM từ khi sản xuất bằng kỹ thuật
lazer.
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 38
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 2: GIỚI THIỆU CẢM BIẾN DS18B20
READ ROM (33h) :Cho phép đọc ra 8 byte mã đã khắc bằng laser trên
ROM, bao gồm: 8 bit mã định tên linh kiện (10h), 48 bit số xuất xưởng,
8 bit kiểm tra CRC. Lệnh này chỉ dùng khi trên bus có 1 cảm biến
DS1820, nếu không sẽ xảy ra xung đột trên bus do tất cả các thiết bị
slave cùng đáp ứng.
MATCH ROM (55h) :Lệnh này được gửi đi cùng với 64 bit ROM tiếp
theo, cho phép bộ điều khiển bus chọn ra chỉ một cảm biến DS1820 cụ
thể khi trên bus có nhiều cảm biến DS1820 cùng nối vào. Chỉ có
DS1820 nào có 64 bit trên ROM trùng khớp với chuỗi 64 bit vừa được
gửi tới mới đáp ứng lại các lệnh về bộ nhớ tiếp theo. Còn các cảm biến
DS1820 có 64 bit ROM không trùng khớp sẽ tiếp tục chờ một xung
reset. Lệnh này được sử dụng cả trong trường hợp có một cảm biến một
dây, cả trong trường hợp có nhiều cảm biến một dây.
SKIP ROM (CCh) : Lệnh này cho phép thiết bị điều khiển truy nhập
thẳng đến các lệnh bộ nhớ của DS1820 mà không cần gửi chuỗi mã 64
bit ROM. Như vậy sẽ tiết kiệm được thời gian chờ đợi nhưng chỉ mang
hiệu quả khi trên bus chỉ có một cảm biến.
SEARCH ROM (F0h) : Lệnh này cho phép bộ điều khiển bus có thể dò
tìm được số lượng thành viên slave đang được đấu vào bus và các giá trị
cụ thể trong 64 bit ROM của chúng bằng một chu trình dò tìm.
ALARM SEARCH (ECh) : Tiến trình của lệnh này giống hệt như lệnh
Search ROM, nhưng cảm biến DS1820 chỉ đáp ứng lệnh này khi xuất
hiện điều kiện cảnh báo trong phép đo nhiệt độ cuối cùng. Điều kiện
cảnh báo ở đây được định nghĩa là giá trị nhiệt độ đo được lớn hơn giá
trị TH và nhỏ hơn giá trị TL là hai giá trị nhiệt độ cao nhất và nhiệt độ
thấp nhất đã được đặt trên thanh ghi trong bộ nhớ của cảm biến.
2.3.2 Lệnh chức năng bộ nhớ: Sau khi thiết bị chủ (thường là một vi điều
khiển) sử dụng các lệnh ROM để định địa chỉ cho các cảm biến một dây
đang được đấu vào bus, thiết bị chủ sẽ đưa ra các lệnh chức năng DS1820.
Bằng các lệnh chức năng thiết bị chủ có thể đọc ra và ghi vào bộ nhớ nháp
(scratchpath) của cảm biến DS1820. Khởi tạo quá trình chuyển đổi giá trị
nhiệt độ đo được và xác định chế độ cung cấp điện áp nguồn. Các lệnh chức
năng có thể được mô tả ngắn gọn như sau:
WRITE SCRATCHPAD (4Eh) : Lệnh này cho phép ghi 2 byte dữ liệu
vào bộ nhớ nháp của DS1820. Byte đầu tiên được ghi vào thanh ghi TH
(byte 2 của bộ nhớ nháp) còn byte thứ hai được ghi vào thanh ghi TL
(byte 3 của bộ nhớ nháp). Dữ liệu truyền theo trình tự đầu tiên là bit có ý
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 40
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 2: GIỚI THIỆU CẢM BIẾN DS18B20
nghĩa nhất và kế tiếp là những bit có ý nghĩa giảm dần. Cả hai byte này
phải được ghi trước khi thiết bị chủ xuất ra một xung reset hoặc khi có
dữ liệu khác xuất hiện.
READ SCRATCHPAD (BEh) :Lệnh này cho phép thiết bị chủ đọc nội
dung bộ nhớ nháp. Quá trình đọc bắt đầu từ bit có ý nghĩa nhất của byte
0 và tiếp tục cho đến byte thứ 9 (byte 8 - CRC). Thiết bị chủ có thể xuất
ra một xung reset để làm dừng quá trình đọc bất kỳ lúc nào nếu như chỉ
có một phần của dữ liệu trên bộ nhớ nháp cần được đọc.
COPYSCRATCHPAD (48h) : Lệnh này copy nội dung của hai thanh
CONVERT T (44h) : Lệnh này khởi động một quá trình đo và chuyển
đổi giá trị nhiệt độ thành số (nhị phân). Sau khi chuyển đổi giá trị kết
quả đo nhiệt độ được lưu trữ trên thanh ghi nhiệt độ 2 byte trong bộ nhớ
nháp. Thời gian chuyển đổi không quá 200 ms, trong thời gian đang
chuyển đổi nếu thực hiện lệnh đọc thì các giá trị đọc ra đều bằng 0.
READ POWER SUPPLY (B4h) : Một lệnh đọc tiếp sau lệnh này sẽ cho
biết DS1820 đang sử dụng chế độ cấp nguồn như thế nào, giá trị đọc
được bằng 0 nếu cấp nguồn bằng chính đường dẫn dữ liệu và bằng 1 nếu
cấp nguồn qua một đường dẫn riêng.
Bộ thu phát HM-TR được thiết kế cho các ứng dụng cần truyền dữ liệu
không dây. Nó có đặc tính là tốc độ dữ liệu cao, khoảng cách truyền xa, tần số
có thể lập trình được, cấu trúc khung USART có thể cấu hình được và dòng ở
chế độ sleep thấp. Giao thức giao tiếp được tự động điều khiển và hoàn toàn
trong suốt với người dùng. Module này có thể thêm vào các hệ thống đã tồn tại
sẵn với giá thành thấp,hiệu suất cao và giao tiếp dữ liệu không dây dễ dàng.
1.Điều chế dịch tần số FSK
2.Giao tiếp hai chiều half-duplex
3.Tần số hoạt động 315/433/868/915 Mhz
4.Tần số có thể lập trình được,đươc phép sử dụng các ứng dụng FDMA
5.Tự động điều khiển RF sang USART,tin cậy và dễ dàng sử dụng
6.Cấu trúc khung USART có thể cấu hình được với tốc độ dữ liệu từ 300-
19200bps
7.Sử dụng chân ENABLE để điều khiển chu kỳ lặp lại theo những yêu cầu khác
nhau của ứng dụng.
8.Hiệu suất cao,khoảng cách truyền xa 300m ở những khu vực trống
9.Giao thức UART với chuẩn TTL /RS232
10.Không cần bộ cộng hưởng RF trong mạch ứng dụng
Kết nối anten là một loại kết nối SMA với một điện trở RF là 50Ω
4.1.3 Nguồn cung cấp cho kết nối
Chú ý:
Cả hai pin 3 và pin 4 được sử dụng giao diện của GPIO. Chúng đều bị nghiêm
cấm kết nối chúng vào bất kỳ nguồn cung cấp nào
4.1.4 Các chân kết nối của GSM modem
Tập lệnh này là cơ sở lập trình và điều khiển dùng để tương tác giữa thiết bị GSM
modem với bộ VXL. Thông qua tập lệnh, VXL có thể gọi các tác vụ đơn giản
như đọc tin nhắn, xóa tin nhắn, gửi tin nhắn .
<bm> :thiết lập luật lệ cho việc thu và lưu trữ các tin nhắn kiểu CBM(Cell
Broadcast Message). Có các giá trị 0,1,2,3 (mặc định là 0).
<ds> :cho biết trạng thái SMS.Có các giá trị 0,1,2(mặc định là 0).
<bfr>:bằng 0 hay 1(mặc định là 0).
4. AT+CMGR=”index” : đọc tin nhắn.
Với “index” là vị trí tin nhắn trong bộ nhớ, thường từ 0 đến 75.
5. AT+CMGL=<number> : liệt kê tin nhắn, cho phép gửi toàn bộ tin nhắn từ
bộ nhớ tới thiết bị ngoài.
<number>=0 :chỉ liệt kê các tin nhắn mới.
<number>=1 :liệt kê các tin nhắn đã đọc.
<number>=2 :liệt kê các tin nhắn đã gửi.
<number>=3 :liệt kê các tin nhắn chưa gửi .
<number>=4 :liệt kê tất cả các tin nhắn.
6. AT+CMGW : lệnh ghi tin nhắn xuống bộ nhớ modem.
Cú pháp : AT+CMGW=”số di động” {Enter}
>Gõ nội dung tin nhắn và bấm Ctrl+Z.
7. AT+CMSS=<index> : lệnh gửi tin nhắn đã được lưu trong bộ nhớ.
Với <index> là vị trí tin nhắn được lưu trong bộ nhớ.
Trường hợp muốn gửi tin nhắn đến một số khác (không phải số lưu trong bộ
nhớ bằng lệnh AT+CMGW) , ta thêm vào số điện thoại đằng sau <index>.
Cú pháp: AT+CMSS=<index>,”số di động” .
8. AT+CMGS : Lệnh gửi tin nhắn.
Cú pháp : AT+CMGS=”số di động “ {Enter}
>Gõ nội dung tin nhắn rồi nhấn Ctrl+Z.
9. AT+CMGD=<index> : lệnh xóa tin nhắn trong bộ nhớ tại vị trí <index>.
AT+CMGD=<index>,<delflag> : xóa tin nhắn dựa vào <delflag>.
Với <delflag> :
- 0 : xóa tin nhắn tại vị trí <index>.
- 1 : xóa mọi tin nhắn đã đọc.
- 2 : xóa mọi tin nhắn đã đọc và đã gửi.
PHẦN I – CƠ SỞ LÝ THUYẾT
Chương 4: GIỚI THIỆU GSM MODEM VÀ TẬP LỆNH AT
Chương 5: Cơ sở thiết kế
CƠ SỞ THIẾT KẾ
5.1.1 Sơ đồ khối
5.1.2 Sơ đồ nguyên lý
5.1.1 Sơ đồ khối
Hệ thống gồm 3 khối chính: server, khối trung tâm và thiết bị ngoại vi.
Server chính là hệ thống tương tác với người dùng, nó có thể là một chiếc
điện, hay một GSM modem gắn với máy tính. Khối trung tâm là thiết bị
trung gian điều phối giao tiếp giữa server và ngoại vi. Thiết bị ngoại vi bao
gồm các thiết bị giám sát, quản lý như: thiết bị đo nhiệt độ, ẩm độ,thiết bị
đếm số người...
Hoạt động của node trung tâm chia làm hai phần chính: giao tiếp với modem
GSM và giao tiếp node ngoại vi. Khối trung tâm có nhiệm vụ là phân tích, truyền đạt
thông tin từ server (user) tới thiết bị ngoại vi. Trong quá trình hoạt động, các thiết bị
ngoại vi chỉ tương tác với node trung tâm khi có yêu cầu của server hoặc trong trường
hợp node trung tâm cấp quyền ưu tiên cho nó.
Giao tiếp node trung tâm: bất kỳ lệnh nào từ server gửi tới node trung tâm đều
được đặt trong cặp dấu sao(*) với hai mục đích chính: điều khiển node trung tâm hay
node ngoại vi.
Điều khiển node trung tâm: thay đổi password node trung tâm hay thay đổi số
phone server. Password node trung tâm chính là mật mã đễ truy cập vào node này. Khi
password sai thì không thể truy cập node trung tâm. Phone sever là số điện thoại mà
node trung tâm sẽ gửi cảnh báo về.
Điều khiển node ngoại vi: ta dùng một ký tự để định nghĩa node ngoại vi. Node
trung tâm không hiểu nội dung lệnh điều khiển mà server gửi tới node ngoại vi mà chỉ
biết tên của node ngoại vi. Trong trường hợp server muốn đăng ký node ngoại vi mới
hay thiết lặp các thông số mới cho node ngoại vi. Node trung tâm sẽ kiễm tra là node
ngoại vi mới hay node ngoại vi đã tồn tại chỉ cần thiết lập lại thông số. Sau đó nó gửi
toàn bộ nội dung điều khiển tới node ngoại vi. Nếu node ngoại vi tồn tại thì nó sẽ đáp
ứng lại lệnh từ node trung tâm. Node trung tâm sẽ gửi đáp ứng về lai server để chứng
thực node này tồn tại hay không, đồng thời mang theo nội dung mà node trung tâm
muốn gửi cho sever.
Các node ngoại vi hoạt động dựa vào quyền ưu tiên node trung tâm cấp pháp.
Tên của node ngoại vi được qui định bởi Server và chính node ngoại vi đó, không phụ
thuộc vào Node trung tâm. Và node trung tâm cấp quyền ưu tiên cho ngoại vi dựa vào
tên của từng node. Điều này có nghĩa là ngoại vi chỉ có thể gửi tin tức về trung tâm khi
có đang được quyền ưu tiên hay khi trung tâm yêu cầu.
1/ Serial: đây là một dãy 6 ký tự dùng để phân biệt các nhánh với nhau, đồng thời
được biết đến như password của node trung tâm, server có thể thay đổi serial này. Mặc
định lần đầu truy cập Serial là 6 số 021187. Nếu message từ server tới node trung tâm
có số serial sai thì node trung tâm sẽ gửi tin nhắn sai password về user
2/ Option: mang nội dung thông tin từ server tới node trung tâm:
“R”: đăng ký node ngoại vi mới hoặc thiết lập thông số mới cho node ngoại vi.
“C”: kiểm tra trạng thái của các node ngoại vi.
“S”: thay đổi số serial cho node trung tâm. Theo sau sẽ là 6 số serial mới và kết
thúc bằng dấu *.
“P”: thay đổi số phone ma node trung tâm sẽ gửi cảnh báo về trong trường hợp
khẩn. Theo sau sẽ là số phone mới và kết thúc bằng dấu *.
3/ Device: gồm 8 bit đặc trưng cho các ngoại vi. Trong trường hợp thay đổi số
serial thì 8 bit này bằng 0. Trường hợp kiểm tra hết thì 8 bit bằng 1.
4/ Parameter: các thông số cài đặt từ server đến node ngoại vi. Thành phần này chỉ
có trong trường hợp đăng ký thiết bị.
Khi tin nhắn điều khiển từ server tới Trung Tâm, sever sẽ xử lý nội dung tin
nhắn. Khi yêu cầu của chỉ thay đổi số serial hay số phone thì Trung Tâm sẽ xử lý và
gửi đáp ứng về về server. Trong trường hợp lệnh điều khiển liên quan tới node ngoại
vi thì Trung tâm sẽ gửi lệnh tới node ngoại vi.
Thông số Device đầu tiên chính là tên thiết bị. Khi ngoại vi nhận được tên
Device này, nó so sánh xem có phải tên của chính nó hay không. Nếu như đúng, nó sẽ
nhận tiếp các thông số theo sau và bắt đầu xử lý. Trong trường hợp không có thiết bị
nào tồn tài thì sau một thời gian, Trung Tâm sẽ gửi lại phản hồi về Server, đồng thời
xóa tên của thiết bị ra khỏi bộ nhớ. Trong trường hợp tồn tại thiết bị thì ngoại vi sẽ xử
lý các command và gửi về các respone về trung tâm.
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 60
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 5: CƠ SỞ THIẾT KẾ
Trong phạm vi của đề tài này chúng em thiết kế mạch giao tiếp
với GSM modem và giao tiếp với thiết bị ngoại vi đo nhiệt độ thông qua
RF module. Các kết quả đo đạc của thiết bị ngoại vi hay các lệnh từ
người dùng điện thoại sẽ được xử lý tại phần trung tâm này.
Sơ đồ khối ngoại vi
Trong phần ngoại vi này, chúng em xin thiết kế một mạch đo nhiệt độ để
minh họa. Mạch này gồm phần chính là vi xử lý ATmega16L giao tiếp với RF
module và cảm biến nhiệt độ DS18B20.
Mục đích chính của phần này là thiết kế phần node trung tâm một cách
linh hoạt sao cho khi ta them vào các node ngoại vi khác mà không cần thay đổi
node trung tâm.
5.1.2 Sơ đồ nguyên lý
Sơ đồ phần cứng gồm hai khối chính là khối trung tâm và khối ngoại vi.
Khối trung tâm gồm phần chính là vi xử lý ATmega162 với hai USART.
USART0 giao tiếp với modem qua max232,USART1 để giao tiếp với RF
module theo chuẩn TTL. Ngoài ra còn một số đèn led báo hiệu, giao tiếp SPI
được mở rộng để giao tiếp với thẻ nhớ.
R 2
4 k 7
R 1 U 5
4 k 7
S W 1 1 U 4 4 0 2 3
P B 0 / T 0 P A 0 / A3 9D 0 D Q V D D
G N D
J 2 C 3 2
1 0 4 3 P B 1 / T 1 P A 1 / A3 8D 1
1 2 4 P B 2 / A I NP 0A 2 / A3 7D 2 J 3
3 4 5 P B 3 / A I NP 1A 3 / A3 6D 3 D S 1 8 B 2 0
P B 4 / S S P A 4 / A3 5D 4
1
5 6 6 1
7 8 7 P B 5 / M O P S A I 5 / A3 4D 5 2
9 1 0 8 P B 6 / M I PS OA 6 / A3 3D 6
9 P B 7 / S C P K A 7 / A3 2D 7
1 0 R S T A R E 3 F1 C O N N S O C K E T 2
g i a o t i e p m a c h n a p 1 1 V C C G N 3D 0
1 2 G N D A V C 2 C9
1 3 X T A L 2 P C 7 / 2A 8 1 5
1 4 X T A L 1 P C 6 / 2A 7 1 4
1 5 P D 0 / R X P D C 5 / 2A 6 1 3
1 6 P D 1 / T X PD C 4 / 2A 5 1 2
1 7 P D 2 / I N PT 0C 3 / 2A 4 1 1
1 8 P D 3 / I N PT 1C 2 / 2A 3 1 0 R 3
1 9 P D 4 P C 1 /2 A 2 9 2 k 2
2 0 P D 5 / O C P 1 C A 0 /2 A 1 8
P D 6 / W RP D 7 / R D
Y 1
A T m e g a 1 6 L D 1
Z T A L E D
C 2 C 1
3 3 p 3 3 p
J 1
1
2
3
4
5
6
g i a o t i e p R F
Khi kết nối GSM modem(slave) đến mạch để tương tác xử lý các lệnh được gửi
từ cellphone master, ta phải dùng trung gian đường truyền bằng IC MAX232. Do
cellphone có cổng nối tiếp là cổng COM 9 chân, ta phải chuyển tín hiệu này để có thể
truyền đến chân RXD và TXD của IC ATmega8535. Đây cũng là chức năng chính của
IC MAX232.
Họ IC MAX220 đến MAX249 là bộ nhận/lái tín hiệu dùng cho các chuẩn giao
tiếp truyền thông EIA/TIA-232E và V.28/V.24.
Trong đề tài này, ta sử dụng Codevision AVR để biên dịch chương trình C ra
file hex.
Khởi động AVR ta sẽ có màn hình như sau:
• Chọn source nếu muốn chương trình tạo ra một cửa sổ trắng để bạn tự tạo ra
mã
CodewizardAVR giúp chúng ta khởi tạo các thông số ban đầu cho việc cho việc
lập trình, điều này giúp chúng ta tiết kiệm được rất nhiều thời gian, tránh được những
sai lầm đáng tiếc do không tìm hiểu kỹ cấu trúc vi xử lý.
Trong đề tài này ta chọn chip ATmega 162 và tần số dao động thạch anh là
7.3728 Mhz. Đồng thời ta khởi tạo USART0 và USART1, cấu hình input/output cho
các PORT, enable giao thức truyền dữ liệu SPI.
Ta cấu hình SPI cho chip ở chế độ Master, Mode 0. Ngoài ra ta cấu hình
PORTC.0,1,2 ở chế độ output để điều khiền các led.
Sau khi thiết lập các thông số ban đầu, ta lưu các thiết lập này: File =>
Generate, Save and Exit
Ta đặt chọn thư mục để lưu tập tin,tên project, và tên đoạn code để hoàn thành
quá trình khởi tạo.
Sau khi hoàn thành đoạn code, ta lưu lại toàn bộ (Save all) và biên dịch ra mã
Hex: Project =>Built All (Ctrl + F9) hoặc ta có thể nhấp trực tiếp vào biểu tượng
trên thanh công cụ. Nếu đoạn mã C không có lỗi thì chương trình sẽ hiện ra bảng
thông báo no error và các thông số ước đoán về dung lượng file HEX
Trong trường hợp chương trình C có lỗi, CodeVision sẽ hiện bảng thông báo
chỉ rõ số lỗi.
Sau khi đã hoàn thành quá trình tạo file HEX, ta bắt đầu quá trình nạp chip. Ở
đây ta sử dụng mạch nạp USB AVR910. Sau khi cài driver cho mạch nạp, ta thiết lập
các thông số của mạch nạp để tương thích với Codevision. Click chuột phải vào
Computer chọn Manage => Device Manager=>Ports(COM &LPT) =>AVR910USB
Programer (double click) ta thiết lập các thông số như hình bên dưới
Đồng thời ta thiết lập các thông số cho Codevision: Settings => Programmer
Ta chọn các loại mạch nạp là AVR910, tốc độ Baud la 119200bps, cổng giao
tiếp là COM3 (phải giống với các thông số đã thiết lập cho mạch nạp) .
Để nạp cho vi xử lý ta chọn Tool => Chip Programer (shift+ F4).
Với yêu cầu của đề tài, ta có thể hình dung khái quát lưu đồ giải thuật như sau:
Quá trình xử lý tin nhắn bắt đầu với việc lưu số điện thoại gửi tới, sau đó bắt
gói tin nhắn bắt đầu bằng ký tự ‘*’. 6 ký tự theo sau chính là số serial, ATmega162 sẽ
so sánh số serial đó với 6 số serial của nó (được lưu trong eeprom). Nếu sai thì nó sẽ
gửi tin nhắn trở lại số điện thoại mà nó đã lưu để thông báo sai password. Vì số serial
dùng để phân biệt với các node trung tâm khác. Vì vậy ta xem nó như password để
truy cập vào node trung tâm đó. Nếu đúng số serial thì nó tiếp tục đọc ký tự tiếp theo.
1.Nếu nhận được ký tự ‘S’ thì nó sẽ thay đổi số serial(lưu vào
eeprom),đồng thời thông báo đã thay đổi password về server.
2.Nếu nhận được ký tự ‘P’ thì nó sẽ thay đổi số phone server. Và gửi
thông báo đã thay đổi phone_server về server.
3.Nếu nhận được ký tự ‘C’ thì nó sẽ tiếp tục nhận tên thiết bị ngoại vi.
Sau đó sẽ gửi tin nhắn kiểm tra thiết bị ra ngoại vi. Nếu nhận được respone thì
nó sẽ gửi respone đó về server. Trong trường hợp không nhận được phản hồi
nào từ ngoại vi. Nó sẽ gửi thông báo thiết bị không còn hoạt động về server.
4.Nếu nhận được ký tự ‘R’ thì nó sẽ tiếp tục nhận các thông số thiết lập,
sau đó gửi lệnh đăng ký thiết bị ra ngoại vi. Tương tự nếu nhận respone thì nó
gửi respone đó về server, ngược lại nó thông báo thiết bị không còn hoạt động
về server.
5.Các trường hợp còn lại, ATmega gửi thông báo sai cấu trúc lệnh về
server.
Giao tiếp với node ngoại vi: ATmega sẽ lần lượt đọc tên thiết bị lưu trong
eeprom và gửi tới thiết bị ngoại vi cùng ký tự P(priority) để cấp quyền ưu tiên. Nếu
thiết bị nào có thông báo nào về server thì sẽ gửi khi nó được cấp quyền ưu tiên.
#pragma used+
void read_message(void)
{
char data[9]={'A','T','+','C','M','G','R','=','1'};
array_send0(data,9);
putchar(0x0D);
}
#pragma used-
do {
putchar(phone_server[i]);
i++;
}
while (phone_user[i] != '"' );
putchar(0x0D);
delay_ms(4000);
}
#pragma used-
#pragma used+
void end_send(void)
{
putchar(0x1A);
delay_ms(5000);
}
#pragma used-
Chương trình lọc số: Vì DS18B20 xuất ra biến dạng số float nên khi xuất ra
LCD, máy tính, module RF cần phải tách ra hàng trăm, chục, đơn vị, thập phân.
void locso(float so)
{ float temp1,temp2;
// t=so/100;
// lay fan tram
c=so/10;
// lay fan chuc
GVHD: TH.S ĐINH QUỐC HÙNG
SVTH: BÙI MẠNH KHÁNH
: VÕ THÀNH LONG Trang 83
PHẦN II – THIẾT KẾ VÀ THI CÔNG
Chương 6: LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH
d=(so-10*c);
// lay hang don vi
if(so<0)
//Neu ®Çu vao ©m -> ®æi sang d-¬ng
temp2=so*-1;
else
temp2=so;
temp1=temp2-(c*10+d);
tp1 = (unsigned char)(temp1*10);
tp2 = (unsigned char)(temp1*100-tp1*10);
tp3 = (unsigned char)(temp1*1000-tp1*100-tp2*10);
tp4 = (unsigned char)(temp1*10000-tp1*1000-tp2*100-
tp3*10);
}
Giao tiếp với máy tính hoặc RF:
Mạch giao tiếp với máy tính qua cổng com hoặc giao tiep với RF có các thông số
sau:
• Baud Rate 9600.
• 8 bit datas.
• 1 bit stop.
• Non parity.
case 6: putchar('6');
break;
case 7: putchar('7');
break;
case 8: putchar('8');
break;
case 9: putchar('9');
break;
};
}
Ta sử dụng phần mềm orcad 9.2 để thiết kế mạch nguyên lý và mạch layout
KẾT LUẬN
Từ những yêu cầu đề ra ở phần đầu luận văn, chúng em đã hoàn thành một số yêu cầu
sau:
- Hoàn thành thiết kế mạch giao tiếp trung tâm và mạch kiểm tra nhiệt độ ngoại
vi
- Lập trình giao tiếp giữa node trung tâm và GSM modem để nhận lênh của
người dùng
- Lập trình giao tiếp giữa khối ngoại vi và trung tâm thông qua RF module
Tuy nhiên, luận văn cũng còn nhiều thiếu xót và hạn chế:
- Chưa lưu được dữ liệu giám sát ngay tại node trung tâm
- Truyền nhận dữ liệu giữa node ngoại vi và node trung tâm với giao thức đơn
giản trong khi sử dụng dãy tần số miễn phí nên không đảm bảo được độ chính
xác cao
http://www.ebook.edu.vn/?page=1.5&tag=avr
http://dientuvietnam.net/forums/showthread.php?p=233419
http://www.tme.com.vn/Product.aspx?id=633&CateId=227