Tải bản đầy đủ (.pdf) (54 trang)

KHÁI QUÁT VỀ NỀN TẢNG ARDUINO

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.2 MB, 54 trang )

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


×