Trong xu thế phát triển của khoa học ngày nay và trong lĩnh vực điều
khiển tự động nói chung thì phần mềm nhúng đang có những bước đột phá
mới, dần khẳng định được nó có vai trò quan trọng như thế nào trong lĩnh vực
điều khiển tự động.Nó tạo ra các cuộc cách mạng triệt để trong tương lai. Lý
do của sự phát triển vượt bực này xuất phát từ những nhu cầu bức thiết từ
thực tế và những bước tiến mạng mẽ trong công nghệ phần cứng. Một phần
mềm nhúng phải kết hợp chặt chẽ với môi trường của nó bao gồm phần cứng
và các hệ thống liên quan. Nó có những ràng buộc về tốc độ xử lý, dung
lượng bộ nhớ và mức tiêu thụ điện năng Một phần mềm nhúng tốt là phần
mềm phải đảm bảo được các yếu tố trên và đó cũng là hướng phát triển quan
trọng của các phần mềm nhúng. Điểm mấu chốt của các phần mềm nhúng
ngày nay là việc lựa chọn các phương pháp thực thi của một chức năng giống
như một thành phần “cứng” của phần mềm như các thành phần truyền thông
khác.
65 trang |
Chia sẻ: lethao | Lượt xem: 1635 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đồ án Mô hình mạng cảm nhận không dây WSN, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
. Nội dung con trỏ tăng một đơn vị, con trỏ dịch
tới vị trí tiếp theo ( bên phải hoặc bên trái ). Theo sơ đồ thiết kế LCD làm việc
ở chế độ 4 bit, kết nối với CC1010EM qua cổng P2.
Một số các thông số điều khiển hướng dịch chuyển hiển thị của con
trỏ trên màn hình:
- ID : chỉ số tăng của con trỏ sau mỗi một bytes được hiển thị.
- S : dịch chuyển màn hình hiển thị sau mỗi bytes được hiển thị.
Cho phép hiển thị mà hình / con trỏ:
- D : On(1) / Off(0) màn hình.
- C : On(1) / Off(0) con trỏ.
- B : On(1) / Off(0) nhấp nháy con trỏ.
Di chuyển con trỏ trên mà hình hiển thị:
- SC : On(1) / Off(0) Sự dịch chuyển màn hình hiển thị.
- RL : Hướng dịch chuyển Phải(1) / Trái (0).
- DL : Thiết lập độ dài dữ liệu 8bit(1) / 4bit(0).
- N : Số dòng hiển thị 1dòng (0) / 2dòng (1).
- F : Font ký tự 5x10 (1) / 5x7 (0).
Sinh viên: Đoàn Duy Hà – CT701
Trang 15
Đồ án tốt nghiệp
Thăm dò cờ báo bận BUSY FLAG:
- BF : Sét module đang trong quá trình sử lý
Dịch chuyển con trỏ tới vùng CGRAM để hiển thị A-Address đọc viết
mã ASCII để hiển thị D-DATA.
3.3. Vi điều khiển CC1010
Vấn đề lựa chọn vi điều khiển để xây dựng nút mạng là một vấn đề rất
quan trọng. Việc lựa chọn vi điều khiển hợp lý sẽ làm cho quá trình xây dựng
hệ thống được rút ngắn, hệ thống có thể hoạt động ổn định, độ tin cậy cao và
có thể đạt các chỉ tiêu đề ra như sau:
Tiêu thụ năng lượng thấp.
Bộ nhớ chương trình cũng như bộ nhớ dữ liệu có kích thước hợp lý.
Kích thước vật lý nhỏ.
Giá thành rẻ, dễ sử dụng, quen thuộc với người sử dụng....
Như đã giới thiệu ở chương 2 thì trên thế giới hiện nay có rất nhiều loại
vi điều khiển khác nhau và các loại vi điều khiển đó đều thỏa mãn được các
chỉ tiêu đề ra. Tuy nhiên 2 loại PIC và Motorola không có tích hợp truyền
nhận không dây hoặc khi sử dụng chúng ta phải thiết kế thêm nhiều các thành
phần phụ trợ rắc rối khác vì thế khi thiết kế hệ thống có thể gặp nhiều khó
khăn, phức tạp. Vi điều khiển CC1010 được lựa chọn để làm nút mạng là
thích hợp hơn tất cả các loại khác mà em từng được biết vì nó đã thỏa mãn
được những yêu cầu đã đặt ra.
Vi điều khiển CC1010 được cung cấp bởi hãng điện tử nổi tiếng
Chipcon, có lõi tương thích với vi điều khiển 8051 .Vi điều khiển CC1010 là
dòng vi điều khiển mạnh ,kích thước nhỏ ,tiêu thụ năng lượng ít ,có thời gian
sống dài ,có đủ tài nguyên phần cứng để đáp ứng chức năng mạng và chức
năng cảm ứng thích hợp cho các ứng dụng truyền nhận không dây, CC1010
được tích hợp nhiều các tính năng phục vụ cho các ứng dụng không dây như
bộ truyền nhận vô tuyến, bộ biến đổi ADC, bộ nhớ lập trình Flash...Vì vậy
CC1010 chỉ cần đến rất ít các thành phần phụ khác để có thể trở thành một
nút mạng cảm nhận không dây.
Sinh viên: Đoàn Duy Hà – CT701
Trang 16
Đồ án tốt nghiệp
Đặc điểm chung của vi điều khiển CC1010
- Vi điều khiển CC1010 có lõi là vi điều khiển 8051.
- Tốc độ xử lý được nâng cấp nhanh hơn 2.5 lần so với 8051 chuẩn.
- Có 32kb flash, 2048 + 128 Byte SRAM.
- Có 4 bộ định thời.
- Có 2 cổng UART, RTC.
- Có 3 kênh ADC 10 Bit.
- Giao diện lập trình SPI.
- Bộ mã hóa DES tích hợp bên trong.
- Có 26 chân vào ra chung.
- Cần rất ít thành phần bên ngoài.
- Độ nhạy cao (-107 dBm).
- Nguồn nuôi từ 2,7 – 3,6 V.
- Có bộ thu phát sóng vô tuyến 300 – 1000 MHz.
- Tiêu thụ dòng thấp ( 9.1 mA trong chế độ thu ).
- Công suất phát có thể lập trình được ( lên đến +10 dBm ).
- Tốc độ thu phát dữ liệu lên đến 76.8 kbit/s.
3.3.1. Bộ nhớ Flash:
CC1010 có tích hợp 32-kbyte bộ nhớ lập trình flash. Nó được chia thành
256 trang, mỗi trang dài 128 byte. Nó có thể được lập trình hoặc xoá dữ liệu
thông qua giao diện nối tiếp SPI hoặc thông qua vi nhân 8051. Tuổi thọ của
bộ nhớ Flash thường là 20.000 lần ghi/xoá. Bộ nhớ Flash có thể được khoá để
không đọc/ghi được bằng cách thiết lập bít tương ứng thông qua giao diện nối
tiếp. Việc xoá chíp phải được thực hiện trên bộ nhớ không bị khoá. Ðiều này
cho phép ngăn chặn phần mềm không bị copy trái phép.
Sinh viên: Đoàn Duy Hà – CT701
Trang 17
Đồ án tốt nghiệp
3.3.2. Các cổng vào – ra chung:
Vi điều khiển CC1010 có tất cả 4 cổng vào - ra chung đó là: P0, P1, P2,
P3. Mỗi cổng liên kết với 2 thanh ghi là:Thanh ghi cổng (P0, P1, P2, P3) và
Thanh ghi hướng (P0dir, P1dir, P2dir, P3dir). Mỗi bit trên thanh ghi Px được
liên kết với bit tương ứng trên thanh ghi hướng PxDIR. Việc thiết lập
PxDIR.y sẽ làm cho chân Px.y trở thành đầu nhập dữ liệu và đưa vào bit Px
(y). Tất cả các chân đều là chân nhập dữ liệu khi mà reset lại chip. Việc xóa
bit hướng PxDir.y sẽ làm cho chân Px.y trở thành chân xuất dữ liệu từ thanh
ghi Px(y). Một số cổng có những hàm chức năng thêm vào (ví dụ như giao
diện SPI). Các chức năng này có thể được dùng thông qua các thanh ghi khác
(như SPCR.SPE). Các chức năng thêm vào này có thể ghi đè lên bit hướng
được thiết lập trong PxDIR hoặc là không. Khi đọc thanh ghi Px, dữ liệu sẽ
lấy từ bộ đệm (Pad). Khi sử dụng các lệnh ghi - đọc dữ liệu thì giá trị của
thanh ghi xuất dữ liệu sẽ bị thay đổi bất chấp việc thiết lập các bit hướng
trong PxDIR..
Sinh viên: Đoàn Duy Hà – CT701
Trang 18
Đồ án tốt nghiệp
Hình 3.1:
Các cổng vào / ra chung
3.3.3. Các bộ định thời:
Vi điều khiển CC1010 có chứa 4 bộ định thời / bộ đếm của vi nhân 8051
chuẩn (Timer0 và Timer1), chúng có thể hoạt động như một bộ định thời với
xung nhịp dựa trên đồng hồ hệ thống hoặc hoạt động như một bộ đếm với
xung nhịp dựa trên T0 (p3.4 cho Time 0) hoặc T1 (p3.5 cho Time 1). Mỗi bộ
định thời /bộ đếm có một thanh ghi 16 bit có thể ghi đọc được thông qua TL0
và TH0 cho Timer 0 và TL1 và TH1 cho Timer 1. Ngoài 2 bộ định thời trên
CC1010 còn cung cấp thêm 2 bộ định thời Timer2 và Timer3 có khả năng
điều chỉnh độ rộng xung. Chế độ hoạt động của 2 bộ định thời này có thể
được thiết lập thông qua thanh ghi TCON2 có địa chỉ 0xA.
Sinh viên: Đoàn Duy Hà – CT701
Trang 19
Đồ án tốt nghiệp
Hình 3.2:
Các thanh ghi của bộ định thời
3.3.4. Các cổng nối tiếp
CC1010 có tích hợp 2 cổng nối tiếp 0 và 1. Hai cổng này được điều
khiển thông qua thanh ghi SCON0 và SCON1. Dữ liều vào ra trên hai cổng
này sẽ được lưu tạm thời thông qua các thanh ghi đệm SBUF0 và SBUF1.
Cổng nối tiếp 0 được sử dụng trong các giao tiếp chung. Trong khi đó cổng
nối tiếp 1 được dùng chủ yếu cho mục đích gỡ rối.
3.3.5. Các bộ biến đổi ADC:
Bộ biến đổi ADC tích hợp trên chip được điều khiển bởi thanh ghi
ADCON và ADCON2. Có 2 chân analog được dùng để lấy mẫu được điều
khiển bởi ADCON.ADADR. Thanh ghi này được dùng để lựa chọn chân
AD1 như là chân so sánh bên ngoài (khi đang dùng AD0). Ðiện thế so sánh
được điều khiển bởi ADCON.ADCREF. Bit ADCON.AD_PD được lập khi
ADC không được dùng để tiết kiệm điện năng.
Bộ biến đổi ADC hoạt động 1 trong 4 chế độ được lựa chọn bởi bit
ADCON.ADCM. Mỗi lần biến đổi thì mất 11 chu kì xung nhịp. Trong chế độ
xung nhịp 1 khi POWER.PMODE được thiết lập thì đồng hồ 32 kHz được
đưa trực tiếp vào bộ biến đổi ADC. Trong chế độ xung nhịp 0, xung nhịp đầu
vào của ADC lấy từ bộ dao động chính bằng cách sử dụng bộ chia được lựa
Sinh viên: Đoàn Duy Hà – CT701
Trang 20
Đồ án tốt nghiệp
chọn bởi ADCON2.ADCDIV. Thanh ghi phải được thiết lập để tần số xung
nhịp của ADC phải nhỏ hơn hoặc bằng 250 kHz.
Trong chế độ chuyển đổi đơn mỗi lần chuyển đổi được thiết lập bằng
việc đặt bít điều khiển ADCON.ADCRUN. Cờ ngắt EXIF.ADIF và
ADCON2.ADCIF được đặt bởi phần cứng nếu 8 bit của giá trị mẫu sau cùng
lớn hơn hoặc bằng giá trị được lưu trữ trong thanh ghi ADTRH. Một thủ tục
ngắt sẽ được thực thi nếu các cờ ngắt này được thiết lập. Ðể luôn luôn nhận
được một ngắt khi mà hoàn thành việc chuyển đổi thì ADTRH phải được đặt
bằng 0. Khi việc chuyển đổi hoàn thành thì bit điều khiển ADCON.ADCRUN
bị xóa bởi phần cứng.
Trong chế độ đa chuyển đổi thi ADC bắt đầu với lần chuyển đổi mới sau
mỗi 11 chu kì xung nhịp. Tất cả lần chuyển đổi sẽ ngừng lại khi xóa bit
ADCON.ADCRUN sau đó ADC sẽ bỏ qua các tiến trình và ngừng hoạt động.
Trong tất cả các chế độ hoạt động khi mà 8 bit của giá trị mẫu lớn hơn
hoặc bằng giá trị được ghi ở trong thanh ghi ADTRH thì một hành động được
diễn ra:
Ða chuyển đổi - có nối tiếp: Khi việc so sánh ngưỡng có giá trị
TRUE thì một ngắt được sinh ra và một thủ tục phục vụ ngắt tương ứng được
thực hiện nếu các cờ ngắt EIE.ADIE và ADCON2.ADCIE được bật. ADC sẽ
thực hiện tiếp tục các quá trình chuyển đổi mà không quan tâm tới kết quả của
việc so sánh ngưỡng. Ðể luôn luôn nhận được ngắt khi quá trình biến đổi
được hoàn thành thì ADTRH phải được đặt =0.
Ða chuyển đổi - có dừng: Khi việc so sánh ngưỡng có giá trị TRUE
thì một ngắt được sinh ra và một thủ tục phục vụ ngắt tương ứng được thực
hiện nếu các cờ ngắt EIE.ADIE và ADCON2.ADCIE được bật. ADC sẽ dừng
hoạt động và bit ADCON.ADCRUN được xóa.
Ða chuyển đổi nạp lại: Khi đã vượt qua ngưỡng thì một quá trình
khởi động lại hệ thống sẽ được sinh ra. Chế độ này thường được sử dụng cùng
với chế độ Stop Mode của 8051 và bộ dao động 32 kHz để tiết kiệm điện năng
Sinh viên: Đoàn Duy Hà – CT701
Trang 21
Đồ án tốt nghiệp
trong khi giám sát tín hiệu. Giá trị được lưu trữ trong ADDATH và ADDATL
không bị ảnh hưởng khi reset hệ thống.
3.4. Kết luận
Trong chương 3 đã giới thiệu một số các kiến thức cơ bản về vi điều
khiển CC1010, các đặc điểm chính, các thành phần mà ta sẽ tiến hành làm
việc trực tiếp đó là lập trình cho nó, một nội dung quan trọng nữa là các kiến
thức về loại màn hình được chọn để hiển thị kế quả của nút gốc sau khi nhận
được dữ liệu từ các nút cơ sở đó là loại màn hình tinh thể lỏng – LCD 1602A,
cơ chế hiển thị và cách thức làm việc của nó.
Sinh viên: Đoàn Duy Hà – CT701
Trang 22
Đồ án tốt nghiệp
CHƯƠNG 4:
PHẦN MỀM NHÚNG CHO HỆ ĐO NHIỆT ĐỘ TỰ ĐỘNG
4.1. Tổng quan về phần mềm nhúng
Trong xu thế phát triển của khoa học ngày nay và trong lĩnh vực điều
khiển tự động nói chung thì phần mềm nhúng đang có những bước đột phá
mới, dần khẳng định được nó có vai trò quan trọng như thế nào trong lĩnh vực
điều khiển tự động.Nó tạo ra các cuộc cách mạng triệt để trong tương lai. Lý
do của sự phát triển vượt bực này xuất phát từ những nhu cầu bức thiết từ
thực tế và những bước tiến mạng mẽ trong công nghệ phần cứng. Một phần
mềm nhúng phải kết hợp chặt chẽ với môi trường của nó bao gồm phần cứng
và các hệ thống liên quan. Nó có những ràng buộc về tốc độ xử lý, dung
lượng bộ nhớ và mức tiêu thụ điện năng…Một phần mềm nhúng tốt là phần
mềm phải đảm bảo được các yếu tố trên và đó cũng là hướng phát triển quan
trọng của các phần mềm nhúng. Điểm mấu chốt của các phần mềm nhúng
ngày nay là việc lựa chọn các phương pháp thực thi của một chức năng giống
như một thành phần “cứng” của phần mềm như các thành phần truyền thông
khác.
4.2. Các bước để xây dựng một phần mềm nhúng
Phần mềm viết cho các họ vi xử lý có thể sử dụng các ngôn ngữ khác
nhau như C/C++ hoặc Assembler. Tùy theo tiêu chí xây dựng hệ thống mà
lựa chọn ngôn ngữ thích hợp. Từ đó cũng chọn ra chương trình dịch thích
hợp. Ngày nay nhu cầu phát triển hệ thống nhanh, bảo trì dẽ dàng nên dùng
ngôn ngữ được lựa chọn thường là ngôn ngữ cấp cao như C/C++.
Quy trình xây dựng một phần mềm bất kỳ thường trải qua các bước như
sau:
- Tìm hiểu bài toán
- Phân tích
- Thiết kế
- Viết chương trình
Sinh viên: Đoàn Duy Hà – CT701
Trang 23
Đồ án tốt nghiệp
- Kiểm thử
Việc xây dựng một phần mềm nhúng cũng tuân theo trình tự các bước
như trên. Ngoài ra, phần mềm nhúng còn có đặc trưng là làm việc trực tiếp
với phần cứng. Do đó để kiểm soát quá trình làm việc với các thành phần
chấp hành có đúng đắn không là điều kiện rất quan trọng.
4.3. Phần mềm nhúng viết cho vi điều khiển CC1010
Phần mềm nhúng viết cho vi điều khiển CC1010 được viết bằng ngôn
ngữ C, sử dụng các thư viện cho CC1010 do hãng chipcon cung cấp, sử dụng
chương trình dịch Keil uVersion 2.0.
Chương trình dịch Keil uVersion 2.0 do hãng Keil Electronic GmbH xây
dựng là một môi trường phát triển tích hợp (IDE) dùng để xây dựng các
chương trình cho các họ vi điều khiển tương thích họ 8051 của Intel. Đây là
bộ chương trình dịch cho phép người viết chương trình soạn thảo chương
trình, dịch chương trình và gỡ lỗi trên cùng một môi trường. Chương trình
dich hỗ trợ cả C và Assembly.
Phần mềm nhúng cho hệ được thiết kế nhằm mục đích sử dụng hệ thống
để cảnh báo sự kiện nguy hiểm ( vượt mức thông thường về nhiệt độ). Tức là
nếu thông tin nhiệt độ mà nút mạng thu nhận được vượt quá ngưỡng nào đó
thì nút gốc sẽ đưa ra cảnh báo. Phần mềm được thiết kế để hệ hoạt động trong
2 trường hợp:
4.3.1. Trường hợp truyền đơn bước
Các nút mạng cảm nhận được nhiệt độ và truyền không dây trực tiếp về
nút gốc. Nút gốc tập hợp dữ liệu, hiển thị lên màn hình LCD. Sau đó nút gốc
sẽ tiến hành kiểm tra nhiệt độ các nút mạng xem có nút nào vượt quá ngưỡng
không, từ đó đưa ra các phán đoán và cảnh báo cần thiết.
4.3.2. Trường hợp truyền đa bước
Nút mạng cảm nhận nhiệt độ và truyền gián tiếp thông tin về nút gốc
thông qua các nút trung gian. Bản thân các nút trung gian có thể mang dữ liệu
hoặc không. Nút gốc nhận thông tin từ các nút mạng thông qua các nút trung
gian, hiển thị lên màn hình LCD, và đưa ra các kết luận cần thiết. Trường hợp
Sinh viên: Đoàn Duy Hà – CT701
Trang 24
Đồ án tốt nghiệp
truyền đa bước chỉ mang tính chất thử nghiệm, tức là truyền nhận được dữ
liệu thông qua nút trung gian, chưa tính toán đến vấn đề cản nhiễu hay xung
đột.
Thiết kế phần cứng chỉ thiết kế khối truyền (nút mạng) và khối nhận
(nút gốc). Nút trung gian được tạo ra bằng cách dùng một phần mềm điều
khiển khác nạp cho nút mạng bình thường để biến một nút cảm nhận đó thành
một nút trung gian. Trường hợp truyền đa bước này là một khác biệt so với
các nghiên cứu trước đây.
Giới thiệu Bộ công cụ Development Enviroment IDE với thư viện
hàm hỗ trợ:
Bộ công cụ Development Enviroment IDE do hãng Chipcon cung cấp
giúp ta lập trình và nạp cho chip CC1010. Chip có thể nạp trực tiếp khi kết
nối bộ CC1010EM với bộ C1010EB mà không cần phải tháo Chip CC1010
khỏi bo mạch.
Môi trường phát triển tích hợp (Integrated Development Enviroment
dựa trên chip CC1010. IDE bao gồm giao diện đồ hoạ quản lý các dự án, một
bộ soạn thảo chương trình nguồn, bộ mô phỏng cho hỗ trợ nhiều thiết bị khác
nhau, và các bộ biên dịch, liên kết. CC1010IDE hoạt động dựa trên
ìVision2b là một công cụ phát triển phần mềm của hãng Keil Elektronik
GmbH. Công cụ này hỗ trợ tốt các đặc tính của CC1010IDE và các vi điều
khiển khác dựa trên kiến trúc của bộ vi xử lý 8051.
CC1010IDE bao gồm nhiều các file nguồn để hỗ trợ và đơn giản hoá
công việc lập trình phát triển chương trình. Bên cạnh thư viện C chuẩn, IDE
còn có các file nguồn khác được chia thành 4 nhóm:
- Hardware Definition Files (HDF).
- Hardware Abstraction Library (HAL).
- Chipcon Utility Library (CUL).
- Application examples.
Sinh viên: Đoàn Duy Hà – CT701
Trang 25
Đồ án tốt nghiệp
Hình 4.1:
Thư viện Chipcon
Trong đó:
Hardware Definition Files (HDF): chứa địa chỉ của các thanh ghi, bản
đồ vector ngắt và các hằng số phần cứng khác đều được xác định trước. Nó
bao gồm các macro dành cho CC1010EB và các định nghĩa chung khác hỗ trợ
cả ngôn ngữ C và Assembly.
Hình 4.2:
Thư viện Chipcon
Hardware Abstraction Library (HAL): Thư viện này bao gồm nhiều
các macro và các hàm nhằm làm đơn giản hoá việc truy cập vào phần cứng
của CC1010.Thông qua việc gọi các macro và hàm này người sử dụng có thể
truy cập vào các thành phần vi điều khiển một cách dễ dàng mà không cần
phải tìm hiểu một cách chi tiết về phần cứng.
4.3.3. Thiết kế phần mềm nhúng
4.3.3.1. Phần mềm cho hệ truyền đơn bước ( single hop)
Trong hệ này giả sử ta chỉ truyền từ các nút mạng về trung tâm. Mỗi nút
mạng này ta sẽ gắn 1 địa chỉ. Mỗi nút mạng khác nhau sẽ có một địa chỉ khác
Sinh viên: Đoàn Duy Hà – CT701
Trang 26
Đồ án tốt nghiệp
nhau. Muốn thu dữ liệu từ nút đơn nào ta chỉ việc kiểm tra địa chỉ nút đó, nếu
đúng địa chỉ thì sẽ tiến hành xử lý dữ liệu để hiển thị.
Phần mềm nhúng cho hệ đơn bước phải bao gồm 2 phần mềm:
Phần mềm 1( software 1 single hop SW1-SH ):
Cài đặt cho nút mạng (bộ truyền), đảm bảo rằng khi nút mạng nhận
được tín hiệu từ cảm biến thì sẽ thực hiện số hóa tín hiệu, điều chế và đưa lên
Anten phát. Phần mềm này cũng phải đảm bảo rằng nút mạng có khả năng
hoạt động độc lập, có chế độ ngủ đông để tiết kiệm pin.
Phần mềm 2 ( software 1 single hop SW2-SH ):
Cài đặt cho nút gốc (bộ nhận ), đảm bảo rằng khi nút gốc nhận được
tín hiệu vô tuyến của các nút mạng thì sẽ tiến hành phân tích, kiểm tra địa chỉ,
sau đó lọc ra thông tin nhiệt độ, điều khiển hiển thị lên màn hình LCD. Phần
mềm 2 này còn phải bao gồm cả việc điều khiển phân tích dữ liệu và đưa ra
các phán đoán xử lý kịp thời, hay đơn giản là hiển thị dữ liệu cho quan sát
viên ở trung tâm xử lý có thể nhận biết được.
Trong khi viết các phần mềm này, có thể sử dụng một vài hàm trong thư
viện hàm mà nhà sản xuất cung cấp.
a) Phần mềm 1 (software 1 single hop SW1-SH)
♦ Thuật toán
Nút mạng thực hiện việc cảm nhận, số hóa và truyền tín hiệu nhiệt độ đã
số hóa đến nút gốc. Theo cấu trúc phần cứng của CC1010, để tiết kiệm nguồn
nuôi, sau mỗi lần phát tín hiệu, ta sẽ đặt nút mạng vào trạng thái Hibernate
(ngủ đông). Sau đó lại cho tiếp tục phát. Chu trình hoạt động của nút mạng
theo một vòng lặp như sau:
- Phát tín hiệu số hoá của nhiệt độ lấy từ chân AD1.
- Đợi một khoảng thời gian ngẫu nhiên từ 0 đến 250* 8ms (trong lúc
này tiến hành ngủ đông cho nút mạng).
- Phát tín hiệu số hoá của nhiệt độ lấy từ chân AD1.
Sinh viên: Đoàn Duy Hà – CT701
Trang 27
Đồ án tốt nghiệp
Hình 4.3:
Thuật toán cho nút truyền trường hợp single hop
♦ Chương trình
Sử dụng thư viện hàm nhà sản xuất cung cấp, để có thể đọc và truyền
thông tin nhiệt độ ta sử dụng các hàm và đoạn chương trình như sau:
- Đưa lối ra IC LM 61 tới chân AD1, ta dùng khai báo:
// ADC setup
halConfigADC(ADC_MODE_SINGLE |
ADC_REFERENCE_INTERNAL_1_25, CC1010EB_CLKFREQ,
0);
ADC_SELECT_INPUT(ADC_INPUT_AD1);
ADC_POWER(TRUE);
- Địa chỉ được định:
#define TBC_MY_SPP_ADDRESS 1
nodeIDs[0] = TBC_MY_SPP_ADDRESS;
- Hàm truyền nhiệt được viết như sau:
void tbcTransmit (void) {
word xdata temp;
Sinh viên: Đoàn Duy Hà – CT701
Trang 28
Đồ án tốt nghiệp
// Khoi dong ADC
ADC_SAMPLE_SINGLE();
temp = ADC_GET_SAMPLE_10BIT();
// Cap nhat bang
txDataBuffer[TBC_TEMP_OFFSET] = (temp >> 8) & 0xFF;
txDataBuffer[TBC_TEMP_OFFSET + 1] = temp & 0xFF;
nodeTemps[0] = temp;
nodeLastT[0] = (int) sppGetTime();
// Truyen thong tin
sppSend(&TXI);
do { /*nothing*/ } while (sppStatus() != SPP_IDLE_MODE);
} // tbcTransmit
- Hàm đợi ngẫu nhiên:
// doi 1 khoang ngau nhien (0 to 255*8=2040)
void tbcWaitRandom (void) {
byte xdata time;
byte xdata n;
time = rand();
for (n = 0; n < waitMultiplier; n++) {
halWait (time, CC1010EB_CLKFREQ);
}
} // tbcWaitRandom
- Đoạn lặp trong chương trình thể hiện thuật toán:
while (TRUE) {
tbcTransmit();
tbcWaitRandom();
}
b) Phần mềm 2 (software 2 single hop SW2-SH )
♦ Thuật toán
Điểm quan trọng nhất của phần mềm này là viết hàm nhận dữ liệu và
viết hàm để hiển thị lên màn hình LCD làm việc ở chế độ 4bit.
Sinh viên: Đoàn Duy Hà – CT701
Trang 29
Đồ án tốt nghiệp
Hình 4.4:
Thuật toán cho nút gốc trường hợp truyền single hop
♦ Chương trình
- Để nhận dữ liệu :
sppReceive(&RXI);
do { /* khong lam gi ca */ } while (sppStatus() !=
SPP_IDLE_MODE);
- Đoạn kiểm tra tín hiệu tại địa chỉ x :
for (n = 0; n <= TBC_MAX_NODE_COUNT; n++) {
for(p=0;p<4;p++){
if(nodeIDs[n]==p){
// thực hiện hiển thị số liệu và kiểm tra
ngưỡng ....
//.............................
}
else{
// thông báo không có số liệu
}
}
}
Sinh viên: Đoàn Duy Hà – CT701
Trang 30
Đồ án tốt nghiệp
- Đoạn hiển thị lên LCD dùng một số hàm được viết ở trong file thư
viện: lcd.h điều khiển LCD ở chế độ 4 bit:
+
+
Để in một xâu ra LCD cần thực hiện các động tác:
lcd_init();
lcd_com(a); // a là đặt địa chỉ trên màn hình ta cần in
lcd_puts("xâu cần in ");// phần trong dấu nháy kép là dòng cần in
Để in nhiệt ra LCD cần chuyển dữ liệu thành dạng chuỗi, ở đây
dữ liệu trong biến fTemp được chuyển thành chuỗi bằng lệnh:
Char so[15]; // khai báo chuỗi “so”
sprintf(so,"%2.3f",fTemp); // chuyển giá trị biến ra chuỗi
- Ví dụ: Với khai báo:
char so[15] // khai báo xâu tên nút mạng
và: sprintf(not,"%2d",p);
đoạn chương trình sau được đặt vào vòng lặp để kiểm tra tính an toàn
của hệ thống:
// Phan doan he thong:
if (fTemp<70){
lcd_init(); // khởi tạo LCD
lcd_com(15); // đặt con trỏ lên dòng đầu
lcd_puts(" Nhiet not ");
lcd_puts(not);
// in tên nút mạng cần hiển thị
lcd_com(0xC0); // đặt con trỏ đầu dòng 2
lcd_puts(" -- An toan -- ");
// thông báo nút an toàn
delayy(10000); // quan sát trong 10s
}
else{
lcd_init();
lcd_com(15);
lcd_puts(" Nhiet Nut "); // in tên nút mạng cần hiển thị
lcd_puts(not);
lcd_com(0xC0); // đặt con trỏ đầu dòng 2
lcd_puts(" -- bao dong -- "); // thông báo nút báo động
Sinh viên: Đoàn Duy Hà – CT701
Trang 31
Đồ án tốt nghiệp
delayy(10000);
}
4.3.3.2. Phần mềm cho hệ truyền nối tiếp nhiều bước (multi hop )
Trường hợp này ta giả sử có hệ truyền 2 bước nối tiếp. Nút 1 truyền
cho nút 2 ( nút trung gian), nút 2 truyền tiếp cho nút gốc, nút gốc nhận dữ liệu
của nút 1 từ nút 2 và tiến hành hiển thị phân tích để đưa ra các cảnh báo về
độ an toàn. Như vậy có 3 phần mềm cần được viết:
Phần mềm cho nút 1 (software 1 multi hop SW1-MH): Cài đặt cho
nút 1 SW1-MH = SW1- SH
Về cơ bản phần mềm này chính là phần mềm SW1- SH ở trên với địa chỉ
nút 1 đặt là 1.
Phần mềm cho nút 2 ( software 2 multi hop SW2-MH): Cài đặt cho
nút trung gian.
Nhận tín hiệu, kiểm tra địa chỉ nếu, nếu tín hiệu thu được là của nút 1 thì
sẽ tiến hành đem dữ liệu đó truyền tiếp. Về cơ bản nút trung gian có cấu trúc
giống hệt nút 1 nhưng được cài đặt bằng phần mềm khác để chỉ đóng vai trò
vận chuyển mà không có vai trò cảm nhận. Trong phần mềm sẽ không có
đoạn kết nối LM61 với kênh AD1.
Phần mềm cho nút gốc ( software 3 multi hop SW3-MH) : SW3-MH
Phần mềm này đảm bảo cho nút 3 nhận dữ liệu liên tục, kiểm tra nếu
đúng dữ liệu do nút 2 gửi đến thì cho phép hiển thị và tiến hành phân tích để
xử lý hiển thị và đưa ra dạng cảnh báo.
Sinh viên: Đoàn Duy Hà – CT701
Trang 32
Đồ án tốt nghiệp
c) Phần mềm SW1-MH
♦ Thuật toán
Hình 4.5:
Thuật toán nút 1 trường hợp truyền nối tiếp ( multi hop)
♦ Chương trình
Nút 1 được gắn địa chỉ bằng 1 và truyền đi:
#define TBC_MY_SPP_ADDRESS
1
nodeIDs[0] = TBC_MY_SPP_ADDRESS;
Phần mềm SW1- MH chính là phần mềm SW1-SH với giá trị gán địa chỉ
là 1.
d) Phần mềm SW2-MH
Bản thân nút 2 sẽ không cảm nhận nhiệt độ. Nút 2 có địa chỉ là 2. Nút 2
nhận dữ liệu từ các nút khác nhau, sẽ tiến hành kiểm tra, nếu nhận được địa
chỉ là địa chỉ nút 1 thì sẽ lấy dữ liệu của nút 1 để truyền tiếp
Sinh viên: Đoàn Duy Hà – CT701
Trang 33
Đồ án tốt nghiệp
♦ Thuật toán
Hình 4.6:
Thuật toán nút trung gian trường hợp truyền nối tiếp
( multi hop)
♦ Chương trình
- Định địa chỉ nút 2:
#define TBC_MY_SPP_ADDRESS 1
nodeIDs[0] = TBC_MY_SPP_ADDRESS;
- Loại bỏ phần cảm nhận của nút 2 bằng cách không gọi các chương
trình khởi động ADC. (không cho phép kết nối LM61 với kênh AD1)
- Đoạn kiểm tra địa chỉ các nút nhận được, nếu đúng nút 1 thì nhận
nhiệt và thoát:
for (n = 0; n <= TBC_MAX_NODE_COUNT; n++) {
if (nodeIDs[n] ==
TBC_UNUSED_NODE_ID) {
continue;
Sinh viên: Đoàn Duy Hà – CT701
Trang 34
Đồ án tốt nghiệp
}
if(nodeIDs[n]==1){
// Temperature:
temp = nodeTemps[n];
break;
}
}
- Nếu nhận được đúng của nút 1 thì gọi hàm truyền như ở phần mềm
SW2-SH:
tbcTransmit();
tbcWaitRandom(); // đợi ngẫu nhiên, trạng thái ngủ đông
e) Phần mềm nút gốc: SW3-MH
♦ Thuật toán
Hình 4.7:
Thuật toán nút gốc trường hợp truyền nối tiếp ( multi hop)
Sinh viên: Đoàn Duy Hà – CT701
Trang 35
Đồ án tốt nghiệp
♦ Chương trình
if(nodeIDs[n]==2){ // kiểm tra xem có đúng điạ chỉ truyền
là 2 không?
fTemp = nodeTemps[n];
fTemp -= 492;
fTemp /= 8.192;
sprintf(so,"%2.3f",fTemp); // chuyển giá trị nhiệt độ thành
xâu
if(fTemp<70){ // Phán đoán tình trạng nút 1:
lcd_init();
lcd_com(15);
lcd_puts("Nhiet tai nut 1:");
lcd_com(0xC0);
lcd_puts(so); // in giá trị nhiệt độ
lcd_puts(" C
");
delayy(5000);
lcd_init();
lcd_com(15);
lcd_puts("Tinh trang nut 1"); // phán đoán
lcd_com(0xC0);
lcd_puts("-- An toan -- "); // nút 1 an toàn
delayy(5000);
}
else{
lcd_init();
lcd_com(15);
lcd_puts("Nhiet tai nut 1:");
lcd_com(0xC0);
lcd_puts(so);
lcd_puts(" C
"); // nhiệt độ nút 1
delayy(5000);
lcd_init();
lcd_com(15);
lcd_puts("Tinh trang nut 1"); // phán đoán
lcd_com(0xC0);
lcd_puts(" -- Bao dong -- "); // nút 1 báo động
delayy(5000);
}
Sinh viên: Đoàn Duy Hà – CT701
Trang 36
Đồ án tốt nghiệp
4.4. Kết luận
Các phần mềm đã viết xong. Chương 5 miêu tả cách tiến hành các thử
nghiệm, các tình huống có thể xảy ra và các
Các file đính kèm theo tài liệu này:
- ĐỒ ÁN TỐT NGHIỆP Mô hình mạng cảm nhận không dây - WSN.docx