LỜI CẢM ƠN
Sau quá trình học tập và rèn luyện tại khoa Điện – Điện tử,trƣờng đại học
Hàng Hải Việt Nam em đã hoàn thành đề tài đồ án tốt nghiệp đƣợc giao. Đây là
một đồ án quan trọng có tính bƣớc ngoặt trong quá trình học tập tại trƣờng.
Để hoàn thành đồ án này, em xin chân thành cảm ơn các thầy, các cô đã
tận tình hƣớng dẫn, chia sẻ kiến thức qua các học phần trong chƣơng trình đào
tạo kỹ sƣ ngành tự động hóa của trƣờng đại học Hàng Hải. Đặc biệt là thầy giáo
tiến sĩ Phạm Tuấn Anh đã tận tình hƣớng dẫn em thực hiện đồ án này.
Đồ án sử dụng các kiến thức em đã đƣợc học tại trƣờng và thu thập qua
các phƣơng tiện truyền thông. Do đó sẽ không thể tránh đƣợc những thiếu sót.
Em rất mong nhận đƣợc sự góp ý của các thầy, các cô giúp em hoàn thiện hơn
về những hiểu biết của mình.
Em xin chân thành cảm ơn !
1
Mục Lục
MỘT SỐ TỪ VIẾT TẮT SỬ DỤNG TRONG ĐỀ TÀI ........................................... 4
DANH MỤC CÁC BẢNG......................................................................................... 5
DANH MỤC CÁC HÌNH VẼ.................................................................................... 6
LỜI MỞ ĐẦU ............................................................................................................ 8
CHƢƠNG 1. KHÁI QUÁT VỀ NỀN TẢNG ARDUINO ........................................ 9
1.1 Lịch sử phát triển.................................................................................................. 9
1.2 Khả năng mở rộng .............................................................................................. 13
1.2.1 module Ethernet Shield .................................................................................. 13
1.2.2 Module truyền thông không dây Xbee ........................................................... 14
1.2.3 Data Logging Shield........................................................................................ 15
1.2.4 Motor Shield R3 .............................................................................................. 15
1.2.5 LCD keypad shield .......................................................................................... 16
1.2.6 Một số module mở rộng khác. ........................................................................ 17
1.3 Ngôn ngữ lập trình dành cho arduino ................................................................ 17
CHƢƠNG 2. XÂY DỰNG HỆ THỐNG NHÚNG DỰA TRÊN ARDUINO ........ 20
2.1 Hệ thống nhúng .................................................................................................. 20
2.1.1 Đinh nghĩa hệ thống nhúng ............................................................................. 20
2.1.2 Đặc điểm hệ thống nhúng ............................................................................... 21
2.1.3 Các kiến trúc phần mềm hệ thống nhúng ........................................................ 21
2.2 Mô tả hệ thống.................................................................................................... 22
2.2.1 Mục đích hệ thống ........................................................................................... 22
2.2.2 Sơ đồ hệ thống................................................................................................. 23
2.2.3 Chức năng các khối trong sơ đồ ...................................................................... 24
2.3 Giải pháp kỹ thuật .............................................................................................. 25
2.3.1 Vi xử lý master và slave .................................................................................. 25
2.3.2 Module Xbee s2 và Xbee shield V03.............................................................. 26
2.3.3 Cảm biến MQ-2............................................................................................... 27
2.3.4 Các thiết bị khác .............................................................................................. 27
2.3.5 Nguyên lí hoạt động ........................................................................................ 27
2
CHƢƠNG 3. LẬP TRÌNH HỆ THỐNG ................................................................. 35
3.1 Các phần mềm lập trình ..................................................................................... 35
3.1.1 Lập trình cho arduino ...................................................................................... 35
3.1.2 Cài đặt arduino IDE......................................................................................... 36
3.1.3 Lập trình cho xbee ........................................................................................... 38
3.1.4 Cài đặt X-CTU ................................................................................................ 40
3.2 Cấu trúc khung chƣơng trình.............................................................................. 41
3.2.1 Chƣơng trình cho arduino master.................................................................... 41
3.2.2 Chƣơng trình cho arduino slave ...................................................................... 44
3.2.3 Cài đặt cho xbee .............................................................................................. 47
3.2.4 Cài đặt cho router ............................................................................................ 47
3.3 Kết quả ............................................................................................................... 49
Kết Luận ................................................................................................................... 52
Tài liệu tham khảo .................................................................................................... 54
3
MỘT SỐ TỪ VIẾT TẮT SỬ DỤNG TRONG ĐỀ TÀI
AVR
Vi điều khiển do hãng Atmel sản xuất.
USB
Universal Serial Bus – chuẩn kết nối đa dụng tuần tự trong máy tính.
SPI
Serial Peripheral Interface – Giao diện ngoại vi nối tiếp.
FAT
File Allocation Table – Bảng cấp phát tập tin.
PWM
Pulse width modulation – Phƣơng pháp điều khiển kiểu điều biến độ
rộng xung .
LCD
Liquid Crystal Display – Màn hình tinh thể lỏng.
DDNS
Dynamic Domain Name System – Hệ thống tên miền động.
ZC
Zigbee Coordinator – Thiết bị gốc có khả năng quyết định cấu hình,
quy định cách đánh địa chỉ và lƣu giữ bảng địa chỉ.
ZED
Zigbee End Device – Điểm cuối của mạng và có nhiệm vụ đọc/ hoạt
động thông tin từ các thành phần vật lí.
API
Application Programming Interface – giao diện lập trình ứng dụng
MAC
Media Access Control hay Medium Access Control – Tầng con giao
thức dữ liệu.
4
DANH MỤC CÁC BẢNG
Số bảng
Tên bảng
Trang
1.1
Thông số kỹ thuật Arduino Uno R3
10
1.2
Kết nối arduino và 2 kênh trên Motor shield R3
15
2.1
Danh sách thiết bị
24
3.1
Các nút lệnh menu trong IDE
34
5
DANH MỤC CÁC HÌNH VẼ
Số hình
Tên hình
Trang
1.1
Sự phát triển các dòng arduino
9
1.2
Arduino Uno R3
11
1.3
Arduino ethernet
12
1.4
Arduino LEONARDO
12
1.5
Arduino ATmega2560
12
1.6
Arduino Due
13
1.7
Module ENC28j60
13
1.8
Module xbee s2
14
1.9
Data logging shield
15
1.10
Motor shield R3
16
1.11
LCD keypad shield
16
1.12
Một số module mở rộng arduino
17
1.13
Giao diện adublock
18
1.14
Giao diện Snap4arduino
18
2.1
Hệ thống đèn giao thông
20
2.2
Máy in
21
2.3
Sơ đồ tổng quát
24
2.4
Arduino Uno R3 pinout diagram
26
2.5
Xbee s2 pinout
26
2.6
Sơ đồ của module MQ-2
27
2.7
Kết nối giữa các thiết bị
29
2.8
Sơ đồ chi tiết phần slave
30
6
2.9
Sơ đồ chi tiết phần master
31
3.1
Giao diện IDE
33
3.2
Mô tả chƣơng trình arduino
33
3.3
Trang tải xuống phần mềm
34
3.4
Giao diện cài đặt X-CTU
37
3.5
Cài đặt X-CTU
38
3.6
Ghép nối cho arduino master
38
3.7
Lƣu đồ thuật toán arduino master
39
3.8
Kết nối cho arduino slave
40
3.9
Lƣu đồ thuật toán cho arduin slave
41
3.10
Cấu hình NAT-virtual trên netis DL4311
43
3.11
iao diện website canyouseeme.org
43
3.12
Kết nối giữa arduino master, xbee s2, ENC28J60 và
router
44
3.13
Kết nối giữa arduino slave, xbee s2 và MQ-2
44
3.14
Giao diện truy cập bằng chrome trên windowns
45
3.15
Hình 3.15 Giao diện truy cập bằng Brower trên
android.
45
7
LỜI MỞ ĐẦU
Xu thế chuyên môn hóa luôn đƣợc đánh giá cao và sử dụng trong nhiều
lĩnh vực. Nó đem lại hiệu quả cao cho công việc. Trong đồ án này sẽ đề cập đến
một hệ thống mang tính chuyên môn hóa cao nhƣ vậy. Để ngắn ngọn lại có thể
gọi đây là một hệ thống nhúng. Đồ án sẽ giải thích hệ thống nhúng là gì và các
đặc điểm của nó. Qua đó chỉ ra một số hệ thống chúng ta tiếp xúc hàng ngày. Để
xây dựng một hệ thống nhúng không phức tạp. Có thể sử dụng các thiết bị từ
đơn giản đến phức tạp. Trong đồ án sẽ giới thiệu đến một nền tảng khá mới mẻ
chuyên dùng để xây dự các hệ thống nhúng.Đó là nền tảng Arduino. Arduino
đƣợc phát triển từ năm 2005 và nó đƣợc du nhập vào Việt Nam khoảng 3 năm
trở lại đây. Nó đang đƣợc phát triển trên toàn thế giới với các ƣu điểm và tính
năng vƣợt trội của nó.
Dựa trên nền tảng Arduino đồ án sẽ xây dựng một hệ thống nhúng điều
khiển, giám sát nồng độ khí gas qua internet. Đồ án cũng sử dụng truyền thông
không dây zigbee làm kênh truyền giữa các thiết bị. Tuy nhiên đồ án cũng chỉ
giải quyết đƣợc một phần yêu cầu công nghệ cần phát triển thêm để phù hợp với
thực tế.
8
CHƢƠNG 1. KHÁI QUÁT VỀ NỀN TẢNG ARDUINO
1.1 Lịch sử phát triển
Hình 1.1 Sự phát triển các dòng arduino
9
Arduino đƣợc phát triển dựa trên một dự án dành cho sinh viên tại Ivrea,
Italy từ năm 2005 đƣợc thể hiện nhƣ hình 1.1. Trong thời kì đầu hình thành,
arduino chịu sự ảnh hƣởng của các mạch lập trình AVR ( sử dụng cổng RS232 ). Tại thời điểm đó, ƣu điểm của arduino chỉ đến từ sự đơn giản. Nổi bật
trong dòng thời kì này là dòng mạch severino .
Phiên bản tiếp theo là arduino USB ( 2005 ). Lúc này, xu thế đang hƣớng
tới các máy tính xách tay mỏng hơn, nhẹ hơn, đẹp hơn. Nhƣ vậy cổng nối tiếp
không còn phù hợp với xu thế. Do vậy phiên bản arduino USB đã thay thế cổng
nối tiếp bằng cổng USB type B.
Vào năm 2006, sự xuất hiện của Arduino Extreme với hàng loạt thay đổi
mang tính chất quan trọng. Đầu tiên là các linh kiện trên Arduino đƣợc thay thế
bằng linh kiện dán. Tiếp theo là có thêm đèn báo ở 2 chân RX và TX. Ngoài ra
các chân header male đƣợc thay thế bằng các chân female. Cùng với các thay
đổi về kỹ thuật, năm 2006 đã xuất hiện website arduino.cc giúp cho việc quảng
bá và phát triển arduino.
Phiên bản tiếp theo xuất hiện vào năm 2009, Arduino Duemilanove. Bản
nâng cấp này có khả năng tự nhận biết mỗi khi sử dụng nguồn ngoài hay từ cổng
USB.
Cuối cùng là dòng Arduino Uno ( 2010 – đến nay ). Các linh kiện đƣợc
thu gọn lại. Arduino uno có 3 phiên bản : R2, R3 và SMD. Trong đó phiên bản
R3 ( Hình 1.2 ) đƣợc đánh giá cao khi sử dụng chip ATMega16U2. Từ phiên
bản này arduino USB chính thức chia làm 2 nhánh con là Arduino Ethernet
(Hình 1.3) và Arduino Leonardo( Hình 1.4 ).
Đồng hành với sự phát triển của Arduino USB còn có một số dòng
arduino khác nhƣ Arduino Mega2560 ( Hình 1.5 ), Arduino Due( Hình 1.6 ) …
Bảng 1.1 đƣa ra các thông số kỹ thuật của arduino uno r3, arduino Ethernet,
arduino Leonardo, arduino mega2560, Arduino Due. Có thể thấy sự đa dạng
trong các dòng sản phẩm arduino để phục vụ từng mục đích sử dụng. Nhƣng bên
cạnh đó việc chuẩn hóa cũng nhƣ dùng chung một họ vi điều khiển giúp cho
ngƣời dùng không quá khó khăn khi tiếp cận các dòng khác. Cùng với đó là các
10
module mở rộng chuẩn hóa có thể dùng cho nhiều dòng arduino khác nhau. Từ
năm 2009 đến nay sự phát triển mạnh mẽ của arduino đã thực cụ thể hóa nhiều ý
tƣởng. Giảm thời gian, chi phí nghiên cứu cũng nhƣ không đòi hỏi kiến thức
chuyên sâu.
Bảng 1.1 Thông số kỹ thuật Arduino Uno R3
Vi điều
Arduino
uno r3
ATMega32
khiển
8
Điện áp
Arduino
Ethernet
Arduino
Arduino
leonardo Mega2560
ATMega32
ATMega32
ATMega25
8
U4
60
Arduino
Due
ATSAM3
X8E
5V – DC
5V – DC
5V – DC
5V – DC
3.3 V – DC
16 MHz
16 MHz
16 MHz
16 MHz
84 MHZ
14
14
20
54
54
6
4
7
15
12
6
6
12
16
12
32 KB
32 KB
32 KB
256KB
512 KB
SRAM
2 KB
2 KB
2.5 KB
8 KB
96 KB
EEPROM
1 KB
1 KB
1 KB
4 KB
0 KB
hoạt động
Tần số
hoạt động
Digital I/O
Digital I/O
với PWM
Analog
Bộ nhớ
flash
Hình 1.2 Arduino Uno R3
11
Hình 1.3 Arduino ethernet
Hình 1.4 Arduino LEONARDO
Hình 1.5 Arduino ATmega2560
12
Hình 1.6 Arduino Due
1.2 Khả năng mở rộng
Thấy đƣợc tiềm năng phát triển của arduino, một số hãng đã phát triển lên
các module mở rộng nhằm chuẩn hóa các thiết bị từ đó tạo lên một sự thống
nhất. Nhƣ vậy việc chia sẻ các thƣ viện, chƣơng trình sẽ trở nên dễ dàng và tiện
lợi đem lại hiệu quả cao trong công việc. Các module này đƣợc gọi là các shield
và chỉ cần cắm vào arduino. Các shield này đƣợc đặt tên dựa vào chức năng của
nó nhƣ : provide motor control, Global Positioning System ( GPS ), liquid
crystal display ( LCD ), breadboarding ( prototyping ) … Sau đây là một số
shield cơ bản hay đƣợc sử dụng trong cộng đồng arduino.
1.2.1 module Ethernet Shield
Hình 1.7 Module ENC28j60
ENC28j60 ( Hình 1.7 ) là IC giao tiếp mạng Ethernet ở lớp vật lí tƣơng
ứng với mô hình OSI. Nó hỗ trợ truyền song công trên kênh truyền có băng
thông từ 10-20Mbps. Đồng thời tránh xung đột bằng cách làm việc trên protocol
CSMA/CD để phát hiện và tối thiểu hóa xung đột. ENC28j60 giao tiếp
13
với các thiết bị khác qua chuẩn SPI.
Module ENC28j60 phù hợp với nhiều thiết bị, dễ dàng ghép nối. Hiện nay
đang đƣợc sử dụng trong nhiều ứng dụng liên quan đến ethernet.
1.2.2 Module truyền thông không dây Xbee
Xbee series 2 ( Hình 1.8 ) nằm trong series module radio đƣợc phát triển
bởi công ty Digi Internation. Xbee s2 cho phép tạo ra các mạng không dây nhƣ
point to point , point to mutilpoint, zigbee.
Hình 1.8 Module xbee s2
Nhà phát triển cũng đƣa ra một số ƣu điểm chủ yếu trên xbee s2:
- Chất lƣợng cao, giá thành thấp : Xbee có thể truyền tín hiệu với khoảng
cách 40m khi có vật cản ( indoor ) và 120m khi không có vật cản ( outdoor ).
- Kết nối mạng và bảo mật cao : Với xbee có thể tạo ra trên 65000
( FFFF ) địa chỉ mạng khác nhau và đồng thời hoạt động mà không ảnh hƣởng
tới nhau. Hơn nữa xbee có khả năng tự định tuyến, tự phục hồi, chịu lỗi.
- Sử dụng năng lƣợng thấp : xbee chỉ tiêu tốn 40mA ( 3,3V) để hoạt động.
Ngoài ra nó còn có chức năng “sleep” giúp giảm thiểu tối đa năng lƣợng sử
dụng.
- Dễ dàng sử dụng : Digi Internation đã cung cấp miễn phí phần mềm hỗ
trợ xbee với cái tên X-CTU. Khi các module cài đặt theo chế độ API có thể dễ
dàng truy cập từ module chủ tới các module tớ mà không cần cáp nối với PC.
Ngoài ra, để dễ dàng kết nối với arduino cần có thêm module hỗ trợ là
xbee shield V03. Xbee sdield V03 có 2 chế độ đƣợc điều khiển bởi 1 công tắc 3
chân là chế độ USB và chế độ Xbee. Với chế độ USB, Xbee có thể kết nối với
14
máy tính qua module adruino trung gian ( arduino luôn trong trạng thái đƣợc
reset ).
Với chế độ Xbee, xbee shield thay cho các dây dẫn kết nối xbee và arduino. Nhƣ
vậy giảm tối đa sự nhầm lẫn khi sử dụng .
1.2.3 Data Logging Shield
Hình 1.9 Data logging shield
Data logging shield ( Hình 1.9 ) là phần mở rộng cho arduino khi cần lƣu
trữ dữ liệu thành file dƣới định dạng FAT 16 hoặc FAT 32. Shield này hỗ trợ
lƣu trữ dữ liệu theo thời gian thực.
Thông số kỹ thuật cơ bản :
- Giao thiếp với SD card dƣới định dạng FAT 16 hoặc FAT 32.
- Bộ thời gian thực có kèm pin dự phòng .
- Tích hợp sẵn thƣ viện.
- Sử dụng nguồn 3.3V.
1.2.4 Motor Shield R3
Motor shield R3 ( Hình 1.10 ) đƣợc phát triển dựa trên phiên bản L298.
Nó cho phép điều khiển 2 động cơ một chiều độc lập. Trên Motor shield R3 có 2
kênh riêng biệt đƣợc gọi là kênh A và kênh B. Mỗi kênh sử dụng 4 cổng vào, ra
của arduinno để điều khiển động cơ ( Bảng 1.2).
Thông số kỹ thuật:
Điện áp : 5 – 12V
15
Động cơ điều khiển : 2 động cơ một chiều hoặc 1 động cơ bƣớc
Cảm biến dòng : 1.65 V/A
Hỗ trợ hàm chạy dừng và phanh.
Hình 1.10 Motor shield R3
Bảng 1.2 Kết nối arduino và 2 kênh trên Motor shield R3
Hàm
Kênh A
Kênh B
Hƣớng
D12
D13
PWM
D3
D11
Phanh
D9
D8
Cảm biến dòng
A0
A1
1.2.5 LCD keypad shield
Hình 1.11 LCD keypad shield
LCD keypad shield ( Hình 1.11 ) hỗ trợ 1 màn hình LCD 16x2 và 6 nút
ấn . Các chân 4, 5, 6, 7 ,8 ,9 ,10 đƣợc sử dụng để giao tiếp với màn hình LCD.
16
Analog 0 đƣợc sử dụng để đọc các nút ấn. Điều chỉnh độ tƣơng phản qua biến
trở. Nó tƣơng thích với nhiều phiên bản Arduino. LCD keypad shield đƣợc hỗ
trợ thƣ viện LiquidCrytal trong lập trình arduino giúp tiết kiệm thời gian và
thuật toán khi lập trình. Ngoài ra LCD keypad shield cũng có thể dùng một cách
độc lập.
1.2.6 Một số module mở rộng khác.
Một số module mở rộng khác hình 1.12 gồm có : Capacitive touchpad shield,
64-button shield, cc300 wifi shield, Ethernet shield, CISRECO ProtoX shield,
…
Hình 1.12 Một số module mở rộng arduino
1.3 Ngôn ngữ lập trình dành cho arduino
Với arduino, nhà phát triển đã đƣa ra một phần mềm có tên Arduino IDE
cho ngƣời sử dụng. Tuy nhiên đó không phải là cách duy nhất tạo ra một chƣơng
trình trên arduino. Có rất nhiều cách để tạo ra chƣơng trình ứng dụng nhƣ dùng
các khối qua adublock( Hình 1.13) ,kéo thả các thẻ qua snap4Arduino ( Hình
1.14 ) hay các ngôn ngữ lập trình nhƣ C# hay pyphon ... Mỗi ngôn ngữ lại có các
ƣu điểm và nhƣợc điểm.
17
Hình 1.13 Giao diện adublock
Hình 1.14 Giao diện Snap4arduino
a, Adublock
Arduino đƣợc xây dựng xung quanh một ngôn ngữ lập trình đơn giản.
Tuy nhiên thay vì phải nhớ một câu lệnh thì việc nhớ chức năng của một khối là
đơn giản rất nhiều. Nó cho phép quan sát hệ chƣơng trình một cách trực quan
hơn. Vậy nên adublock phù hợp với những ngƣời ít kinh nghiệm về lập trình hay
các em nhỏ với lƣợng kiến thức ít ỏi. Đồng thời, trên adublock cũng đƣa ra các
hàm và biến tƣơng tự nhƣ trên arduino IDE. Nhƣ vậy việc sử dụng IDE cho các
dự án lớn sẽ đƣợc đồng nhất về tƣ duy.
b. Snap4arduino
Cách thức hoạt động của snap4arduino có đôi chút khác biệt với adublock
ở chỗ snap4arduino dựa trên việc kéo, thả các thẻ. Đây cũng là một phƣơng
pháp giúp ngƣời lập trình có cái nhìn trực quan. Tuy nhiên mức độ yêu cầu về
các kiến thức lập trình đòi hỏi cao hơn so với adublock. Lƣu ý rằng phần mềm
không thể biên dịch chƣơng trình trong snap4arduino mà đơn thuần là đang
tƣơng tác với arduino trong khi nó kết nối với máy tính của bạn.
c. C#
18
Với sự giúp đỡ của một thƣ viện nhƣ CmdMessenger, arduino có thể lập
trình bằng các lệnh qua truyền thông nối tiếp. CmdMessenger có thể chạy trong
visual studio của Microsoft hoặc một phần mềm khác. Từ đó việc giao tiếp giữa
máy tính và arduino sử dụng C# chỉ là để gọi hàm, gửi và nhận lệnh.
d, Python
Python đang là một ngôn ngữ lập trình hứa hẹn sẽ rất phát triển trong
tƣơng lai gần. Nó có hình thức trực quan, cấu trúc rõ ràng, mã lệnh ngắn gọn. So
với C python cung cấp nhiều thƣ viện và biến hơn. Với các ƣu điểm của mình
python cho thấy nó thực sự phù hợp để lập trình cho arduino.
e, Arduino IDE
Đây là phần mềm đƣợc đƣa ra từ chính nhà phát triển. Arduino IDE đƣợc
viết trên môi trƣờng Java và dựa trên C. Nó cũng sử dụng một số quy tắc riêng
xen kẽ chứ không hẳn là chỉ có C. Nó cung cấp đầy đủ các thƣ viện cho các
dòng arduino và các shield. Phần mềm này có thể cài đặt trên hầu hết các hệ
điều hành thông dụng nhƣ Windows, Mac OS, Linux.
19
CHƢƠNG 2. XÂY DỰNG HỆ THỐNG NHÚNG DỰA TRÊN ARDUINO
2.1 Hệ thống nhúng
2.1.1 Đinh nghĩa hệ thống nhúng
“Hệ thống nhúng (embedded system) là một thuật ngữ để chỉ một hệ
thống có khả năng tự trị đƣợc nhúng vào trong một môi trƣờng hay một hệ
thống mẹ. Đó là các hệ thống tích hợp cả phần cứng và phần mềm phục vụ các
bài toán chuyên dụng trong nhiều lĩnh vực công nghiệp, tự động hoá điều khiển,
quan trắc và truyền tin. Đặc điểm của các hệ thống nhúng là hoạt động ổn định
và có tính năng tự động hoá cao.”Ví dụ đơn giản nhƣ hệ thống đèn giao thông
( minh họa bằng hình 2.1 ) đảm nhiệm một chức năng bật tắt đèn theo chu kỳ.
Nó đòi hỏi tính ổn định, và tự động cao.
/>ng#C.C3.A1c_.C4.91.E1.BA.B7c_.C4.91i.E1.BB.83m .
Hình 2.1 Hệ thống đèn giao thông
“Hệ thống nhúng thƣờng đƣợc thiết kế để thực hiện một chức năng
chuyên biệt nào đó. Khác với các máy tính đa chức năng, chẳng hạn nhƣ máy
tính cá nhân, một hệ thống nhúng chỉ thực hiện một hoặc một vài chức năng
nhất định, thƣờng đi kèm với những yêu cầu cụ thể và bao gồm một số thiết bị
máy móc và phần cứng chuyên dụng mà ta không tìm thấy trong một máy tính
đa năng nói chung. Vì hệ thống chỉ đƣợc xây dựng cho một số nhiệm vụ nhất
định nên các nhà thiết kế có thể tối ƣu hóa nó nhằm giảm thiểu kích thƣớc và chi
phí sản xuất. Các hệ thống nhúng thƣờng đƣợc sản xuất hàng loạt với số lƣợng
lớn. Hệ thống nhúng rất đa dạng, phong phú về chủng loại.”Đó có thể là một
20
thiết bị cần tay nhƣ đồng hồ bấm giờ, máy nghe nhạc, nồi cơm điện. cao cấp
hơn là các cánh tay robot, hệ thống băng chuyền. ( Hình 2.2 thể hiện một hệ
thống nhúng thực hiện chức năng in hay gọi tắt là máy in).
/>ng#C.C3.A1c_.C4.91.E1.BA.B7c_.C4.91i.E1.BB.83m .
Hình 2.2 Máy in
2.1.2 Đặc điểm hệ thống nhúng
“Hệ thống nhúng thƣờng có một số đặc điểm chung nhƣ sau:
• Các hệ thống nhúng đƣợc thiết kế để thực hiện một số nhiệm vụ chuyên dụng
chứ không phải đóng vai trò là các hệ thống máy tính đa chức năng. Một số hệ
thống đòi hỏi ràng buộc về tính hoạt động thời gian thực để đảm bảo độ an toàn
và tính ứng dụng; một số hệ thống không đòi hỏi hoặc ràng buộc chặt chẽ, cho
phép đơn giản hóa hệ thống phần cứng để giảm thiểu chi phí sản xuất.
• Một hệ thống nhúng thƣờng không phải là một khối riêng biệt mà là một hệ
thống phức tạp nằm trong thiết bị mà nó điều khiển.
• Phần mềm đƣợc viết cho các hệ thống nhúng đƣợc gọi là firmware và đƣợc lƣu
trữ trong các chip bộ nhớ ROM hoặc bộ nhớ flash chứ không phải là trong một ổ
đĩa. Phần mềm thƣờng chạy với số tài nguyên phần cứng hạn chế: không có bàn
phím, màn hình hoặc có nhƣng với kích thƣớc nhỏ, dung lƣợng bộ nhớ thấp Sau
đây, ta sẽ đi sâu, xem xét cụ thể đặc điểm của các thành phần của hệ thống
nhúng.” />C3%BAng#C.C3.A1c_.C4.91.E1.BA.B7c_.C4.91i.E1.BB.83m
2.1.3 Các kiến trúc phần mềm hệ thống nhúng
21
Một số loại kiến trúc phần mềm thông dụng trong các hệ thống nhúng nhƣ sau:
a, Vòng lặp kiểm soát đơn giản
Theo thiết kế này, phần mềm đƣợc tổ chức thành một vòng lặp đơn giản.
Vòng lặp gọi đến các chƣơng trình con, mỗi chƣơng trình con quản lý một phần
của hệ thống phần cứng hoặc phần mềm.
b, Đa nhiệm tƣơng tác
“Một hệ thống đa nhiệm không ƣu tiên cũng gần giống với kỹ thuật vòng
lặp kiểm soát đơn giản ngoại trừ việc vòng lặp này đƣợc ẩn giấu thông qua một
giao diện lập trình API. Các nhà lập trình định nghĩa một loạt các nhiệm vụ, mỗi
nhiệm vụ chạy trong một môi trƣờng riêng của nó. Khi không cần thực hiện
nhiệm vụ đó thì nó gọi đến các tiến trình con tạm nghỉ (bằng cách gọi "pause",
"wait", "yield" …).”
/>ng#C.C3.A1c_.C4.91.E1.BA.B7c_.C4.91i.E1.BB.83m
c, Đa nhiệm ƣu tiên
“Ở loại kiến trúc này, hệ thống thƣờng có một đoạn mã ở mức thấp thực
hiện việc chuyển đổi giữa các tác vụ khác nhau thông qua một bộ định thời.
Đoạn mã này thƣờng nằm ở mức mà hệ thống đƣợc coi là có một hệ điều hành
và vì thế cũng gặp phải tất cả những phức tạp trong việc quản lý đa nhiệm.
Bất kỳ tác vụ nào có thể phá hủy dữ liệu của một tác vụ khác đều cần phải
đƣợc tách biệt một cách chính xác. Việc truy cập tới các dữ liệu chia sẻ có thể
đƣợc quản lý bằng một số kỹ thuật đồng bộ hóa nhƣ hàng đợi thông điệp
(message queues), semaphores … Vì những phức tạp nói trên nên một giải pháp
thƣờng đƣợc đƣa ra đó là sử dụng một hệ điều hành thời gian thực. Lúc đó, các
nhà lập trình có thể tập trung vào việc phát triển các chức năng của thiết bị chứ
không cần quan tâm đến các dịch vụ của hệ điều hành nữa.”
/>ng#C.C3.A1c_.C4.91.E1.BA.B7c_.C4.91i.E1.BB.83m
2.2 Mô tả hệ thống
2.2.1 Mục đích hệ thống
22
Hiện nay, thời gian làm việc đã chiếm gần hết thời gian của mỗi ngƣời.
Thêm vào đó vấn đề nhà ở cũng không rộng rãi nhƣ trƣớc nên các nguồn nhiên
liệu dùng cho sinh hoạt nhƣ than, củi không phổ biến nữa. Thay vào đó là khí
gas là điện, từ, hồng ngoại. Trong đó phổ biến là dùng gas. Đây là một hỗn hợp
chất khí hữu cơ dễ cháy, hiệu năng cao, giá thành đa dạng. Tuy nhiên vì những
ƣu điểm đó thì chỉ cần một sơ suất nhỏ cũng gây nên hậu quả nghiêm trọng. Đã
có rất nhiều trƣờng hợp đáng tiếc xảy ra do những lỗi tƣởng chừng nhƣ không
ngờ đến. Đồ án “ lập trình hệ thống nhúng với dụng arduino “ sẽ đƣa ra một giải
pháp sử dụng arduino. Ƣu điểm của hệ thống là gọn, nhẹ, dễ sử dụng, giá thành
không cao, có thể mở rộng và phát triển.
Hệ thống sẽ đáp ứng một số yêu cầu cơ bản :
- Độ nhạy của cảm biến cao.
- Giao diện dễ sử dụng.
- Có hệ thống xử lí tại chỗ.
- Tốc độ xử lí của module trung tâm nhanh, ít xảy ra tình trạng treo, chập
chờn tín hiệu, loạn tín hiệu.
- Vật tƣ dễ tìm, giá thành cạnh tranh.
- Khoảng cách truyền tín hiệu cảnh báo xa.
- Cập nhật tình trạng liên tục và thời gian nhỏ.
2.2.2Sơ đồ hệ thống
Hình 2.1 thể hiện sơ đồ khái quát của hệ thống. Sơ đồ gồm 3 khu vực:
- Khu vực (1) là khu vực trung tâm điều khiển.
- Khu vực (2) là khu vực hiện trƣờng số 1.
- Khu vực (3) là khu vực hiện trƣờng số 2.
Ngoài ra còn có thiết bị ngƣời sử dụng truy cập dữ liệu của quá trình. Các
khu vực (1) (2) (3) đƣợc giao tiếp với nhau qua sóng radio. Thiết bị đầu cuối
giao tiếp với khu vực (1) qua internet.
23
Hình 2.3 Sơ đồ tổng quát
2.2.3 Chức năng các khối trong sơ đồ
Vi xử lý master ( 1 ) : Đƣợc đặt tại trung tâm điều khiển. Có vai trò chính
là giao tiếp với vi xử lý slave ( 2 ), ( 3 ) để điều khiển, giám sát nồng độ khí gas.
Thay vào đó ( 1 ) đóng vai trò là websever để các thiết bị đầu cuối ( client ) có
thể truy cập vào dữ liệu của quá trình. Mạng internet đƣợc sử dụng nhƣ một
kênh truyền giữa ( 1 ) và client. Mạng zigbee đƣợc sử dụng nhƣ kênh truyền
giữa ( 1 ), ( 2 ), và ( 3 ).
Vi xử lý slave ( 2 ), ( 3 ) : Đƣợc đặt tại hiện trƣờng với nhiệm vụ thu thập
tín hiệu từ sensor. Tín hiệu thu thập đƣợc sẽ đƣợc xử lí tại chỗ để đƣa ra các
cảnh báo cũng nhƣ điều khiển các thiết bị bảo vệ. Đồng thời tín hiệu đó cũng
đƣợc gửi tới vi xử lý master ( 1 ) qua kênh truyền zigbee.
Sensor : Là phần tử thu thập các dữ liệu nồng độ khí gas. Để đáp ứng yêu
cầu về thời gian thực sensor phải có độ nhạy cao. Kèm theo đó là tính ổn định
cao.
Module xbee : Các module này đóng vai trò là kênh dẫn truyền tín hiệu
giữa các vi điều khiển. Nó sử dụng sóng radio nên có thể truyền tín hiệu trong
môi trƣờng có vật cản. Chất lƣợng đƣờng truyền cao và có thể kiểm tra qua phần
mềm.
Module ethernet: Là phần tử trung gian để đƣa dữ liệu của quá trình đến
với các thiết bị đầu cuối. Module Ethernet đƣợc kết nối với arduino qua chuẩn
SPI.
24
Router : Kết nối hệ thống với mạng internet qua địa chỉ IP mà nhà cung
cấp mạng cung cấp. Thƣờng địa chỉ này là địa chỉ động.
DDNS (DynamicDomain Name System ): Vì địa chỉ IP đƣợc cung cấp là
địa chỉ động và việc nhớ 4 byte là khá khó khăn nên cần chuyển địa chỉ đó thành
một tên miền. Hay nói cách khác là cần ánh xạ tên miền tới địa chỉ IP có tần
xuất thay đổi cao. Dịch vụ DDNS đƣợc tích hợp sẵn trong các router có thể tự
giám sát sự thay đổi địa chỉ ip và cập nhật vào hệ thống dữ liệu.
Client: Các thiết bị đầu cuối truy cập lấy dữ liệu quá trình.
2.3 Giải pháp kỹ thuật
Lựa chọn các thiết bị nhƣ bảng 2.1
Bảng 2.1 Danh sách thiết bị
Tên
Chức năng
Arduino Uno R3
Vi điều khiển master và slave
Xbee s2
Truyền thông không dây
Xbee shield
Liên kết arduino và xbee
MQ-2
Cảm biến khí gas
ENC28j60
Module Ethernet
Router
Kết nối mạng cho hệ thống
2.3.1Vi xử lý master và slave
Số lƣợng
3
3
3
2
1
1
Vi xử lý master sử dụng board arduino uno R3 với các ƣu điểm sau :
+ Dễ dàng tiếp cận cho mọi ngƣời.
+ Làm việc ổn định trong thời gian dài.
+ Số lƣợng các chân vào ra đủ cung cấp cho hệ thống.
+ Giá thành thấp, có sẵn trên thị trƣờng.
Việc sử dụng arduino Uno R3 cho các dự án nhỏ và trung đã trở nên phổ
biến trong cộng đồng arduino. Nó có thể đáp ứng nhiều yêu cầu công nghệ với
sự giúp đỡ của các shield đi kèm. Cụ thể để giao tiếp với module đo nồng độ khí
gas MQ-2 nó có 5 đầu vào tƣơng tự. Với 14 đầu vào ra số việc điều khiển các rơ
le, đèn báo cũng không có gì khó. Nó cũng cung cấp sẵn chuẩn SPI khi có sẵn
các chân SCK ( Serial Clock ), MISO( Master in slave out ), MOSI ( master out
slave in), SS ( Slave select ).
25