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

Ứng dụng vi xử lý galileo 2 0 trong đo và hiển thị tốc độ động cơ bước trên LCD

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 (2.5 MB, 71 trang )

LỜI CẢM ƠN
Trước hết em xin chân thành gửi lời cảm ơn tới thầy giáo Nguyễn Anh
Tuấn đã tận tình chỉ bảo, hướng dẫn và giúp em có những kiến thức cũng như
kinh nghiệp quý báu.
Em xin bày tỏ lòng biết ơn sâu sắc tới các thầy cô giáo trường đại học
CNTT&TT và đặc biệt là các thầy cô giáo trong bọ môn điện tử viễn thông đã
luôn nhiệt tình giảng dạy và giúp đỡ chúng em trong thời gian qua
Mặc dù có nhiều cố gắng nhưng thời gian thực hiện đồ án có hạn, vốn
kiến thức nắm chưa được nhiều nên đồ án còn nhiều hạn chế. Em rất mong được
sự góp ý, chỉ bảo của các thầy, cô để hoàn thành bài viết của mình
Em xin chân thành cảm ơn !


LỜI CAM ĐOAN
Em xin cam đoan đây là công trình nghiên cứu của riêng em và được sự
hướng dẫn khoa học của Ths. Nguyễn Anh Tuấn Các nội dung nghiên cứu, kết
quả trong đề tài này là trung thực và chưa công bố dưới bất kỳ hình thức nào
trước đây. Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhận
xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong
phần tài liệu tham khảo.
Ngoài ra, trong đề tài còn sử dụng một số nhận xét, đánh giá cũng như số
liệu của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn
gốc.
Nếu phát hiện có bất kỳ sự gian lận nào em xin hoàn toàn chịu trách nhiệm về
nội dung đề tài của mình. Trường đại học CNTT&TT không liên quan đến những
vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu có).

Thái Nguyên, tháng 6 năm 2016
Sinh viên
Triệu Anh Tuấn



MỤC LỤC
LỜI CẢM ƠN .....................................................................................................1
LỜI CAM ĐOAN................................................................................................2
MỤC LỤC ..........................................................................................................3
DANH MỤC HÌNH ẢNH ...................................................................................5
DANH MỤC CÁC CHỮ VIẾT TẮT ..................................................................7
LỜI MỞ ĐẦU .....................................................................................................1
CHƯƠNG 1: GIƠI THIỆU VỀ INTEL GALILEO 2.0........................................2
1.1 Tổng quan..................................................................................................2
1.2 Kết nối ngoại vi .........................................................................................3
1.3 Khối xử lý trung tâm Quark SoC X1000 ....................................................6
1.3.1 Giới thiệu về SoC................................................................................6
1.3.2 Bộ xử lý Quark SoC X1000 400MHz..................................................7
1.4 Lập trình cho Intel Galileo 2.0 và cài đặt hệ điều hành...............................9
1.5 Cài đặt hệ điều hành cho Intel Galileo 2.0................................................14
1.5.1 Hệ điều hành nhúng ..........................................................................14
1.5.2 Hệ điều hành Linux...........................................................................17
1.6 Ứng dụng của Board Intel Galileo 2.0......................................................22
1.7 Ưu nhược điểm của Board Intel Galileo 2.0 .............................................22
1.7.1. Ưu điểm ...........................................................................................22
1.7.2. Nhược điểm .....................................................................................23
CHƯƠNG 2: PHÂN TÍCH BÀI TOÁN ............................................................24
2.1 Yêu cầu bài toán ......................................................................................24
2.2 Giải pháp thiết kế.....................................................................................24
2.2.1 Sơ đồ khối.........................................................................................24
2.2.2 chức năng các khối............................................................................24
2.3 Một số linh kiện sử dụng trong mạch .......................................................25
2.3.1 Động cơ bước ...................................................................................25
2.3.2 LCD 16x2 .........................................................................................51

2.3.3 ULN2003..........................................................................................53


2.3.4 Module Chuyển Đổi I2C cho LCD1602 ............................................54
CHƯƠNG 3: THIẾT KẾ VÀ THỰC THI .........................................................55
3.1 Sơ đồ nguyên lý.......................................................................................55
3.2 Thiết kế trên phần mêm corel...................................................................55
3.3 Lưu đồ thuật toán.....................................................................................57
3.4 Lắp đặt phần cứng ...................................................................................58
KẾT LUẬN.......................................................................................................60
TÀI LIỆU THAM KHẢO .................................................................................61
PHỤ LỤC..........................................................................................................62


DANH MỤC HÌNH ẢNH
Hình 1.1 Board Intel Galileo 2.0..........................................................................2
Hình 1.2 Các cổng kết nối ngoại vi......................................................................3
Hình 1.3 Kết nối với card wifi .............................................................................4
Hình 1.4 Cấu trúc của Intel Galileo 2.0................................................................6
Hình 1.5 Arduino IDE .........................................................................................9
Hình 1.6 Kiểm tra cổng COM...........................................................................10
Hình 1.7 Kiểm tra trong Devices Manager.........................................................10
Hình 1.8 Kiểm tra và upload chương trình lên Galileo 2.0 .................................11
Hình 1.9 Thông báo đã up load thành công........................................................11
Hình 1.10 Đèn báo trên board............................................................................12
Hình 1.11 Cấu trúc Hệ điều hành thời gian thực ................................................17
Hình 1.12 Các thành phần của HDH linux.........................................................17
Hình 1.14 Hỉnh ảnh khi tải file image ................................................................19
Hình 1.15 Mở file để cài đặt ..............................................................................20
Hình 1.16 Format thẻ nhớ..................................................................................21

Hình 1.17 Ghi file image ...................................................................................21
Hình 2.1 Sơ đồ khối của mạch ...........................................................................24
Hình 2.2 Một số mẫu động cơ bước trong thực tế. .............................................25
Hình 2.3 Cơ chế lái tờ giấy sử dụng động cơ bước được ứng dụng trong máy in.26
Hình 2.4 Các bộ phận cấu thành nên động cơ bước ...........................................26
Hình 2.5 Động cơ bước từ trở............................................................................27
Hình 2.6 Động cơ bước nam châm vĩnh cửu......................................................28
Hình 2.7 Động cơ bước lai.................................................................................29
Hình 2.8 Động cơ bước lưỡng cực.....................................................................29
Hình 2.9 a) Sơ đồ quấn dây đơn cực. .................................................................31
b) Ký hiệu trên sơ đồ nguyên lý. .........................................................31
Hình 2.10 Ký hiệu động cơ bước đa năng trên sơ đồ nguyên lý. .......................31
Hình 2.11 Cơ chế lái lưỡng cực điều khiển dòng điện và hướng từ thông trong cuộn dây.....33
Hình 2.12 Cơ chế lái đơn cực điều khiển dòng điện và hướng từ thông trong cuộn dây. 34
Hình 2.13 Động cơ bước đơn cực và lưỡng cực................................................35
Hình 2.14 Mạch nguyên lý điều khiển động cơ bước từ trở biến thiên. ..............37


Hình 2.15 Các mạch nguyên lý triệt EMF ngược. ..............................................38
Hình 2.16 Mạch nguyên lý điều khiển động cơ bước nam châm vĩnh cửu và lai đơn cực.....39
Hình 2.17 Mạch nguyên lý điều khiển động cơ bước nam châm vĩnh cửu .........40
và lai đơn cực có triệt EMF ngược bằng các diode.............................................40
Hình 2.18 Mạch nguyên lý điều khiển động cơ bước nam châm vĩnh cửu .........40
và lai đơn cực có triệt EMF ngược bằng tụ điện.................................................40
Hình 2.19 Đường cong mô tả quan hệ giữa mô men và tốc độ cộng hưởng........41
Hình 2.20 Một số cách mắc công tắc .................................................................42
Hình 2.21 Sơ đồ ngõ vào ra của chíp ULN2003.................................................43
Hình 2.22 Một mạch cầu H................................................................................44
Hình 2.23 Mạch cầu H ở chế độ thuận...............................................................44
Hình 2.24 Dòng điện khi chuyển chế độ thuận sang suy giảm nhanh .................45

Hình 2.25: Một chế độ suy giảm chậm có ích ....................................................45
Hình 2.26 Mạch cầu có tích hợp mạch logic ......................................................46
Hình 2.27 Hai nửa cầu H ...................................................................................46
Hình 2.28 Sơ đồ chân chíp S244........................................................................47
Hình 2.29 Các ngõ vào ra chíp 293B/D .............................................................49
Hinh 2.30 Hình dạng một LCD..........................................................................51
Hình 2.31 Sơ đồ chân LCD................................................................................51
Hình 2.32 Cấu tạo của ULN2003A....................................................................53
Hình 2.33 I2C....................................................................................................54
Hình 3.1 Sơ đồ nguyên lý ..................................................................................55
Hình 3.2 Mạch điều khiển động cơ bước trên corel............................................56
Hình 3.3 Hình ảnh thiết kế tổng thể ...................................................................56
Hình 3.4 Lưu đồ thuật toán................................................................................57
Hình 3.5 Các khối trong mạch ...........................................................................58
Hình 3.6 Màn hình LCD 16x2 và module I2C ...................................................58
Hình 3.7 Tổng thể sản phẩm ..............................................................................59


DANH MỤC CÁC CHỮ VIẾT TẮT
CNTT&TT: Trường đại học công nghệ thông tin và truyền thông
RTOS: Hệ điều hành thời gian thực –RealTime Operating Systems
PCI: Peripheral Component Interconnection - Kết nối các thành phần ngoại vi
HDH: hệ điều hành
PWM: Pulse Width Modulation)
SoC: System on Chip


LỜI MỞ ĐẦU
Với sự phát triển ngày càng mạnh mẽ và rộng lớn của nền khoa học kỹ
thuật. Các công nghệ mới thuộc các lĩnh vực khác nhau cũng nhờ đó đã ra đời để

đáp ứng những nhu cầu của xã hội. Đặc biệt trong lĩnh vực điều khiển ngày càng
phát triển mạnh mẽ với mức độ tự động hóa ngày càng cao. Trong số đó phải nói
đến vi điều khiển một thiết bị có tính tự động hoá cao và đang được ứng dụng rất
rộng rãi trong đời sống hiện đại ngày nay, nhưng mức độ tự động hoá càng cao
đòi hỏi thiết bị đi kèm phải có độ chính xác lớn. Như chúng ta đã biết động cơ
bước là một loại động cơ không quay theo chế độ thông thường mà nó quay theo
bước nên có độ chính xác rất cao về mặt điều khiển học, hiện nay động cơ bước
đang được ứng dụng rất rộng rãi trong thực tế như: điều khiển băng chuyền, sử
dụng trong máy in, trong robot, trong máy CNC... Trên tinh thần học đi đôi với
hành, gắn liền với lao động sản xuất và đời sống, em một sinh viên nghành kỹ
thuật đã gần 5 năm ngồi trên ghế nhà trường chúng em đang đi dần vào thực tế.
Để củng cố và mở rộng kiến thức em đã được học cũng như đánh giá kết quả học
tập của mình .Được sự giúp đỡ của các thầy trong bộ môn đặc biệt là thầy
Nguyễn Anh Tuấn, em đã xin nhận đề tài tốt nghiệp “Ứng dụng vi xử lý Galileo
2.0 trong đo và hiển thị tốc độ động cơ bước trên LCD”. Mục tiêu của đề tài
này là em muốn tìm hiểu rõ hơn cấu tạo cũng như hoạt động của board Intel
Galileo 2.0, nắm được các phương pháp điều khiển động cơ bước. Nội dung cụ
thể của đề tài như sau:
Chương 1: Giới thiệu về board Intel Galileo 2.0
Chương 2: Phân tích bài toán.
Chương 3: Thiết kế và thực thi
Mặc dù đã cố gắng rất nhiều để hoàn thành đề tài này, xong do giới hạn về
thời gian cũng như kiến thức nên nội dung còn nhiều thiếu sót. Rất mong được sự
đóng góp ý kiến của thầy cô để bài báo cáo được hoàn thiện hơn

1


CHƯƠNG 1: GIỚI THIỆU VỀ INTEL GALILEO 2.0
1.1 Tổng quan


Hình 1.1 Board Intel Galileo 2.0
Galileo là một bo mạch vi điều khiển dựa trên bộ xử lí ứng dụng Intel
Quark SoC X1000 - một bộ xử lí thuộc dòng Pentium 32bit system-on-chip
(datasheet) (tích hợp tất cả các thành phần hệ thống vào trong 1 chip xử lí duy
nhất). Galileo là bo mạch tương thích với Arduino đầu tiên dựa trên Intel
Architecture. Cả phần cứng lẫn phần mềm của Galileo đều tương thích với các
Arduino Shield vốn được thiết kế cho Arduino UNO R3 với chuẩn chân cắm
Arduino 1.0 pinout.
Galileo có thể chạy được các shield của Arduino ở cả 2 mức điện áp 3.3V
và 5V mặc dù điện áp hệ thống của nó chỉ là 3.3V. Galileo có được điều này là
nhờ các bộ chuyển đổi điện áp được tích hợp ngay trên bo mạch. Theo mặc định,
Galileo chạy shield ở mức 5V và có thể chuyển xuống 3.3V bằng cách thay đổi
các chân cắm (jumper) trên mạch.
Ngoài các tương thích về mặt phần mềm lẫn phần cứng với nền tảng
Arduino, Galileo cũng hỗ trợ các chuẩn giao tiếp trên máy tính cá nhân hiện nay.

2


Vì vậy, Galileo có thể giao tiếp với nhiều thiết bị khác ngoài các shield trong hệ
sinh thái Arduino. Mặc định, trên bo mạch Galileo hỗ trợ:
 Cổng full sized mini-PCI Express.
 Cổng Ethernet 100Mb.
 Khe cắm thẻ nhớ Micro-SD.
 Cổng Serial RS-232.
 Cổng USB Host và USB Client.
 8MB bộ nhớ NOR Flash mặc định trên mạch.
Đây là bo mạch đầu tiên trong họ hàng của Arduino có khe cắm mini-PCI
Express half-sized lẫn full-sized.

1.2 Kết nối ngoại vi

Hình 1.2 các cổng kết nối ngoại vi
 Ethernet: Giúp mạch Intel Galileo kết nối với các modem/router để kết
nối với Internet (tốc độ tối đa lên đến 10/100 Mb/s).
 USB Client: Cổng này là cổng Micro USB (uUSB) vì vậy ta có thể lấy
dây sạc điện thoại thông minh để sử dụng. Cổng này dùng để lập trình với
chương trình Arduino từ máy tính. Cổng này là cổng serial ảo duy nhất của Intel
Galileo, và nó được thiết kế ra để lập trình với chương trình Arduino. Khi người
sử dụng cài một hệ điều hành Linux khác (ví dụ debian) thì lúc bấy giờ lập trình

3


viên không thể sử dụng Arduino để lập trình cho Galileo, mà phải dùng các kiến
thức điều khiển các chân GPIO của vi xử lý Quark.
 USB 2.0 Host: đây là cổng USB dùng cho việc nhận tín hiệu các thiết bị
ngoại vi như webcam, usb micro, usb,... Ở Gen1 thì cổng này có dạng MiniA còn
sang Gen đã chuyển sang chuẩn TypeA, giúp cho việc kết nối với các thiết bị
ngoại vi thuận tiện hơn.
 Jack nguồn chuẩn 5.5: được dùng để cấp điện áp cho board, từ 715VDC, Gen1 chỉ có thể cấp mức điện áp 5V.
 Khe cắm thẻ nhớ
 Reset Button: nút bấm có chức năng reset lại chương trình đã được nạp
vào board.
 Reboot Button: nút bấm có chức năng khởi động lại toàn bộ board, bao
gồm cả hệ điều hành và chương trình đã được nạp vào board. Không nên nhấn
nút này nếu không thực sự cần thiết vì quá trình khởi động hệ điều hành tốn
không ít thời gian.
 PCIe (Peripheral Component Interconnect Express): Cổng này được
Intel Galileo sử dụng để gắn card Wifi vào. Nghĩa là với card Wifi này, lập trình

viên sẽ dễ dàng cài đặt Galileo truy cập vào một Access Point (router Wifi) nào
đó mà không cần sử dụng một cục thu wifi (router Client) qua cổng LAN
(Ethernet).

Hình 1.3 Kết nối với card wifi

4


 Intel Galileo 2.0 được thiết kế để phù hợp với các Arduino Shiled, vì
vậy Intel Galileo Gen2 có:
o 14 chân Digital I/O, trong đó 6 chân có thể phát xung PWM. Chúng có
thể được sử dụng ở cả 2 chế độ INPUT và OUTPUT, sử dụng được với các hàm
pinMode(), digitalWrite() và digitalRead() như trên các mạch Arduino.
o Các chân giao tiếp có thể hoạt động ở 2 mức điện áp 3.3V và 5V. Dòng
cấp tối đa là 10mA, dòng đỉnh là 25 mA.
o Mỗi chân đều có một điện trở pull-up trong có trị số khoảng 5.6k đến
10k ohms. Mặc định, các điện trở này bị ngắt.
o 6 chân Analog từ A0 đến A5 giao tiếp qua chip AD7298. Mỗi chân
Analog có thể cung cấp độ phân giải 12bit với 4096 giá trị khác nhau.
o I2C bus, TWI với 2 chân SDA và SLC nằm cạnh chân AREF. TWI:
gồm 2 chân SDA (A4) và SCL (A5). Hỗ trợ giao tiếp TWI thông qua thư viện
Wire tương tự như trên Arduino.
o SPI: chạy ở xung mặc định là 4Mhz để làm việc với các Arduino shield,
có thể lập trình lên đến mức 25Mhz.
Dù Galileo có SPI Controler riêng nhưng nó chỉ hoạt động như là một SPI
Master, không phải SPI Slave. Do đó, Galileo không thể là một SPI Slave cho
một SPI Master khác. Galileo chỉ có thể là một thiết bị slave khi được kết nối với
máy tín qua cổng USB Client.
o UART (cổng Serial): là một cổng UART với tốc độ có thể lập trình

được, 2 chân giao tiếp là 0 (RX) và chân 1 (TX)
o ICSP (SPI): gồm 6 chân tích hợp Serial Programming dùng để kết nối
với các shield. Các chân này hỗ trợ giao tiếp SPI thông qua thư viện SPI.
o VIN: chân cấp nguồn cho Galileo khi nó sử dụng nguồn ngoài (trái
ngược với điện áp chuẩn 5V từ chân cắm nguồn). Bạn có thể cấp nguồn cho
Galileo từ chân này, hoặc, nếu cấp nguồn từ chân cắm nguồn phía trước, bạn có
thể lấy ra điện áp chuẩn 5V từ chân này.
o Chân 5V output: chân này cấp nguồn ra 5V từ nguồn ngoài cấp cho
Galileo hay từ nguồn USB. Dòng ra tối đa ở chân này cho các shield là 800mA.

5


o Chân 3.3V output: cấp điện áp ra 3.3V được điều chế từ các mạch điều
áp trên Galileo. Dòng ra tối đa ở chân này cho các shield là 800mA.
o GND: chân nối cực âm của nguồn điện.
o IOREF: cho phép các shield điều chỉnh hoạt động phù hợp với điện áp
hoạt động trên Galileo. Chân IOREF được kiểm soát bởi các jumper trên mạch
để lựa chọn 2 mức điện áp làm việc của shield là 3.3V và 5V.
1.3 Khối xử lý trung tâm Quark SoC X1000

Hình 1.4 Cấu trúc của Intel Galileo 2.0
1.3.1 Giới thiệu về SoC
 SoC là chữ viết tắt cho System on a chip, hay System on Chip. SoC là
một mạch tích hợp (mà người ta thường gọi là IC), trong đó tất cả những thành
phần quan trọng của một chiếc máy tính hay một thiết bị điện tử đều được đặt
trên một con chip duy nhất.
 Một SoC cơ bản thường có những thành phần sau:
 Một vi điều khiển, vi xử lí, hay nhân xử lí tín hiệu. Vài SoC thì có thể có
nhiều hơn một nhân xử lí, khi đó người ta gọi nó là MPSoC, tức Multiprocessor

System on Chip. Ở thế giới di động ngày nay, loại được sử dụng phổ biến là vi xử lí.

6


 Các khối bộ nhớ, có thể là RAM, ROM, EEPROM hay bộ nhớ flash
 Nguồn canh thời gian, chẳng hạn như mạch dao động
 Một số giao diện như USB, FireWire, Ethernet
 Bộ chuyển đổi tín hiệu số sang tín hiệu tương tự và ngược lại
 Mạch quản lí năng lượng, mạch kiểm soát điện áp.
 Những SoC hiện đại còn có bộ xử lí đồ họa, chip cầu bắc, chip cầu
nam, bộ kiểm soát bộ nhớ,...
1.3.2 Bộ xử lý Quark SoC X1000 400MHz
Bảng 1.1 Thông số kỹ thuật của Quark SoC x1000
Tình trạng

Launched

Số hiệu Bộ xử lý

X1000

Bộ nhớ đệm

16 KB

Thuật in thạch bản

32 nm


Giá đề xuất cho khách hàng

TRAY: $9.62

Mô tả

32 bit, single core, single thread,
Pentium ISA compatable

Số lõi

1

Số luồng

1

Tần số cơ sở của bộ xử lý

400 MHz

TDP

2,2 W

Dung lượng bộ nhớ tối Đa (tùy vào loại

2 GB

bộ nhớ)

Các loại bộ nhớ

DDR3 800

Số Kênh Bộ Nhớ Tối Đa

1

Băng thông bộ nhớ tối đa

1,6 GB/s

Phần mở rộng địa chỉ vật lý

32-bit

Hỗ trợ bộ nhớ ECC ‡

No

Hỗ trợ PCI

PCI Express

Phiên bản PCI Express

2.0

7



Cấu hình PCI Express ‡

x1

Số cổng PCI Express tối đa

2

Phiên bản chỉnh sửa USB

2.0

Số cổng USB

3

Tổng số cổng SATA

0

Mạng LAN Tích hợp

2

Mạng IDE tích hợp

0

IO mục đích chung


16

UART

2

Số cổng SATA 6.0 Gb/giây tối đa

0

TJUNCTION

110°C

Phạm vi nhiệt độ vận hành

0°C to 70°C

Kích thước gói

15mm x 15mm

Hỗ trợ socket

FCBGA393

Điểm nổi bật của bộ xử lý Quark SoC X1000 là hoạt động ở xung nhịp
400MHz, nhanh hơn 20 lần so với 20MHz của Arduino. Tuy nhiên để đánh giá
chất lượn của một lõi CPU ta cũng cần xem xét tới hiệu năng làm việc của nó

trong một chu kỳ. Theo nhà sản xuất RPi, BCM2835 chỉ có hiệu năng tương
đương 1 CPU Pentium II 300MHz. Trái lại, X1000 lại có hiệu năng tương đương
một CPU ARM như BCM2835 nhưng với xung nhịp 1.2GHz.
Dung lượng bộ nhớ tối đa và băng thông tối đa lần lượt là 2GB và 1.6GB/s
cho phép CPU xử lý gói thông tin lớn. Kết hợp với bộ nhớ DDR3 với tần số làm
việc 800MHz, có khả năng chuyển 8 từ dữ liệu trong một chu kỳ đồng hồ.
Các công nghệ tích hợp bên trong:
o Idle States (Trạng thái không hoạt động) (Trạng thái C) được dùng để
tiết kiệm điện khi bộ xử lý không hoạt động. C0 là trạng thái hoạt động, có nghĩa
là CPU đang làm những công việc hữu ích. C1 là trạng thái không hoạt động thứ
nhất, C2 là trạng thái không hoạt động thứ 2, v.v. khi có nhiều tác vụ tiết kiệm
điện hơn được thực hiện cho các trạng thái C cao hơn.

8


o (Execute Disable Bit) Bít vô hiệu hoá thực thi là tính năng bảo mật dựa
trên phần cứng có thể giảm khả năng bị nhiễm vi rút và các cuộc tấn công bằng
mã độc hại cũng như ngăn chặn phần mềm có hại từ việc thi hành và phổ biến
trên máy chủ hoặc mạng.
1.4 Lập trình cho Intel Galileo 2.0 và cài đặt hệ điều hành
Do Intel Galileo 2.0 tương thích với board Arduino uno nên chúng ta có
thể dùng Arduino IDE để lập trình cho Galileo bằng ngôn ngữ C.
Đầu tiên chưa yêu cầu Insert MicroSD card. Intel galileo 2 đã có sẵn bộ
nhớ trong và có thể chạy một số chương trình ngay.
Mở Arduino IDE 1.6.0. Kiểm tra kết nối với Board Intel Galileo 2

Hình 1.5 Arduino IDE
Tiếp theo kiểm tra cổng kết nối của PC với Intel Galileo 2. Thường nó sẽ
là COM3 hoặc cao hơn.


9


Hình 1.6 Kiểm tra cổng COM
Có thể kiểm tra cổng này trong mục Devices Manager> Ports (Click chuột
phải vào biểu tượng Computer, chọn Manage). Nếu lỗi chưa hiện cổng thì có thể
phải cài driver Serial cho máy tính.

Hình 1.7 Kiểm tra trong Devices Manager
Mở chương trình Blink trong File> Examples> 01.Basics> Blink:
Kiểm tra và upload chương trình lên Galileo 2.

10


Hình 1.8 Kiểm tra và upload chương trình lên Galileo 2.0
Cuối cùng kiểm tra chương trình upload thành công.

Hình 1.9 Thông báo đã up load thành công
Và đèn Led tích hợp trên Board Galileo 2.0 sẽ nhấp nháy.

11


Hình 1.10 Đèn báo trên board
Chương trình Arduino có thể được chia làm 3 phần: cấu trúc (structure),
biến số (variable) và hằng số (constant), hàm và thủ tục (function). Chuyên mục
này sẽ giúp bạn tìm hiểu về 3 phần này qua sự diễn giải các khái niệm và mô tả
các hàm thao tác/thủ tục


12


Bảng 1.2 Các hàm và thủ tục
Cấu trúc

Giá trị

Hàm và thủ tục

setup()
loop()
Cấu trúc điều khiển
if

if…else

switch / case

for

while

break


continue
return



goto
Cú pháp mở rộng
; (dấu chấm phẩy)

{} (dấu
ngoặc

nhọn)

// (single
line
comment)
/*
*/ (multi-line

comment)
#define

#include

Toán tử số học
= (phép gán)


+ (phép cộng)
- (phép trừ)

* (phép nhân)


/ (phép chia)

% (phép chia lấy

dư)
Toán tử so sánh
== (so sánh bằng)

!= (khác bằng)

> (lớn hơn)

< (bé hơn)

>= (lớn hơn hoặc

bằng)

<= (bé hơn hoặc
bằng)
Toán tử logic
&& (và)


Hằng số
HIGH | LOW

INPUT |INPUT_P

ULLUP|OUTPUT

LED_BUILTIN

true | false

Hằng số nguyên

(integer constants)
Hằng
số
thực

(floating point constants)
Kiểu dữ liệu

void
boolean

char

unsigned char


byte

int

unsigned int
word

long


unsigned long

short

float

double


array
string (chuỗi kí tự

biểu diễn bằng array)
String (object)

Chuyển đổi kiểu dữ liệu
char()

byte()

int()

word()

long()

float()

Phạm vi của biến và

phân loại

Phạm vi hiệu lực
của biến

static – biến tĩnh
const – biến hằng


Nhập
xuất
Digital(Digital I/O)
pinMode()

digitalWrite()

digitalRead()

Nhập
xuất
Analog(Analog I/O)
analogRefere

nce()

analogRead()
analogWrite()

–PWM – PPM
Hàm thời gian

millis()

micros()


delay()

delayMicrose
conds()
Hàm toán học
min()

max()

abs()

map()

pow()


sqrt()
sq()

isnan()

constrain()

Hàm lượng giác
cos()


sin()

tan()

u
randomSeed(

)
random()

Nhập xuất nâng
cao(Advanced I/O)
tone()


noTone()
shiftOut()





13


|| (hoặc)
volatile

! (phủ định)

Hàm hỗ trợ
^ (loại trừ)
sizeof()


Phép toán hợp nhất
++ (cộng thêm 1

đơn vị)
– (trừ đi 1 đơn vị)

+= (phép rút gọn

của phép cộng)
-= (phép rút gọn

của phép trừ)
*= (phép rút gọn

của phép nhân)
/= (phép rút gọn

của phép chia)



shiftIn()
pulseIn()
Bits và Bytes
lowByte()


highByte()

bitRead()

bitWrite()

bitSet()

bitClear()

bit()

Ngắt (interrupt)
attachInterrup

t()
detachInterru

pt()
interrupts()

noInterrupts()

Giao tiếp

Serial




1.5 Cài đặt hệ điều hành cho Intel Galileo 2.0
1.5.1 Hệ điều hành nhúng
Hệ điều hành thời gian thực hay còn gọi là Hệ điều hành thời gian thực –
Real Time Operating Systems(RTOS), là phần mềm điều khiển chuyên dụng
thường được dùng trong những ứng dụng điện toán nhúng có tài nguyên bộ nhớ
hạn chế và yêu cầu ngặt nghèo về thời gian đáp ứng tức thời, tính sẵn sàng cao và
khả năng tự kiểm soát một cách chính xác.
Có thể tìm thấy RTOS bất kỳ nơi nào. Chúng cũng phổ biến như những hệ
điều hành mà bạn đã quen thuộc như Windows, Mac OS và Unix. RTOS âm
thầm làm việc bên trong các bộ định tuyến và chuyển mạch trên mạng, động cơ
xe, máy nhắn tin, điện thoại di động, thiết bị y tế, thiết bị đo lường và điều khiển
công nghiệp và các vô số ứng dụng khác.
Một thuộc tính quan trọng của RTOS là khả năng tách biệt với ứng dụng,
vì vậy nếu có một chương trình bị "chết" hay hoạt động không hợp lệ, RTOS có
thể nhanh chóng cô lập chương trình này, kích hoạt cơ chế phục hồi và bảo vệ
các chương trình khác hay chính bản thân hệ điều hành khỏi các hậu quả của các

14


lệnh sai. Cơ chế bảo vệ tương tự cũng được áp dụng để tránh tình trạng tràn bộ
nhớ do bất kỳ chương trình nào gây ra. RTOS xuất hiện ở hai dạng: cứng và
mềm. Nếu tính năng xử lý ứng với một sự kiện nào đó không xảy ra hay xảy ra
không đủ nhanh, RTOS cứng sẽ chấm dứt hoạt động này và giữ không gây ảnh
hưởng đến độ tin cậy và tính sẵn sàng của phần còn lại của hệ thống.
Vì RTOS và máy tính nhúng trở nên phổ biến trong các ứng dụng quan
trọng, các nhà phát triển thương mại đang tạo nên những RTOS mới với tính sẵn
sàng cao. Những sản phẩm này có một thành phần phần mềm chuyên dụng làm
chức năng cảnh báo, chạy các chương trình chẩn đoán hệ thống để giúp xác định
chính xác vấn đề trục trặc hay tự động chuyển đổi sang hệ thống dự phòng. Hiện

thời RTOS sẵn sàng cao hỗ trợ bus Compact PCI của tổ chức PCI Industrial
Computer Manufacturers Group, bus này dùng cho phần cứng có thể trao đổi
nóng.
RTOS có rất nhiều dạng. Sản phẩm thương mại như VxWorks và
VxWorks AE, đều của Wind River Systems Inc; VxWorks AE được thiết kế với
tính sẵn sàng cao, hỗ trợ khả năng gửi thông điệp phân tán và có thể chịu lỗi.
RTOS cho phép lập trình viên tách biệt thư viện dùng chung, dữ liệu và phần
mềm hệ thống cũng như ứng dụng.
LynxOS là loại RTOS cứng, làm việc với Unix và Java. QNX chạy trên
bộ xử lý Intel x86 với nhân chỉ có 10 KB.
RTOS của giới nghiên cứu gồm có Chimera của Đại học Carnegie Mellon.
Đây là hệ thống đa nhiệm, đa bộ xử lý thời gian thực, được thiết kế để tạo sự dễ
dàng cho các nhà lập trình trong việc tái cấu hình và tái sử dụng mã. Chimera
nhắm vào các hệ thống rô bô và tự động. RTOS của Đại học Maryland, có tên là
Maruti, hỗ trợ cho cả ứng dụng thời gian thực cứng và mềm.
Trong nhiều năm, ứng dụng dựa trên RTOS chủ yếu là trong các hệ thống
nhúng và mới gần đây thì chúng đã có mặt khắp nơi, từ thiết bị y tế được điều
khiển bằng máy ảnh cho đến máy pha cà phê, những ứng dụng tính toán phân tán
đang thúc đẩy các nhà phát triển hệ điều hành thực hiện nghiên cứu và phát triển
chuẩn. Chính phủ Mỹ cũng có một số chương trình về lĩnh vực này như công

15


nghệ quản lý tài nguyên thời gian thực, mạng, quản lý dữ liệu và phần mềm điều
khiển trung gian. Mục đích của chương trình là làm cho các hệ thống cộng tác,
phân tán có thể giao tiếp và chia sẻ tài nguyên với nhau. Một uỷ ban chuyên trách
đang đẩy mạnh việc tạo ra khung công nghệ cho tính toán phân tán thời gian
thực, áp dụng cho cả ứng dụng quân sự và thương mại. Khung công nghệ này sẽ
hỗ trợ các giao tiếp và thành phần liên tác chuẩn.

Cho dù ai là người tạo ra môi trường tính toán phân tán thời gian thực,
phổ dụng thì RTOS vẫn sẽ là một trong những công nghệ quan trọng nhất mà
người dùng cuối chưa từng nghe đến.

So sánh kiến trúc RTOS và OS chuẩn
Hệ thống điều hành với phần lõi là hạt nhân phải đảm nhiệm các tác vụ
chính như sau:


Xử lý ngắt



Lưu trữ ngữ cảnh chương trình tại thời điểm xuất hiện ngắt



Nhận dạng và lựa chọn đúng bộ xử lý và phục vụ dịch vụ ngắt



Điều khiển quá trình



Tạo và kết thúc quá trình/tác vụ



Lập lịch và điều phối hoạt động hệ thống




Định thời



Điều khiển ngoại vi



Xử lý ngắt



Khởi tạo giao tiếp vào ra

16


Hình 1.11 Cấu trúc Hệ điều hành thời gian thực
1.5.2 Hệ điều hành Linux
Nhìn bề ngoài, Linux là một hệ điều hành. Như thể hiện trong hình, Linux
gồm có một nhân kernel (mã cốt lõi quản lý các tài nguyên phần cứng và phần
mềm) và một bộ sưu tập các ứng dụng của người dùng (chẳng hạn như các thư
viện, các trình quản lý cửa sổ và các ứng dụng).

Hình 1.12 Các thành phần của HDH linux

17



Sơ đồ cho thấy tất cả các thành phần của Linux cho những người dùng,
nhân và phần cứng
Sơ đồ trên chỉ ra các thành phần quan trọng. Tầng cuối cùng chính là một
tập hợp mã kiến trúc giúp Linux có thể hỗ trợ đa nền tảng phần cứng (ARM,
PowerPC, Tilera TILE v.v...). Tất nhiên, chức năng này được đăng ký theo giấy
phép GNU, tạo nên tính di động của Linux.
Linux theo phong cách riêng của mình trong lĩnh vực về tính di động . Hệ
thống con của trình điều khiển (là rất lớn về khả năng của nó) hỗ trợ động các mô
đun được nạp mà không ảnh hưởng đến hiệu năng, tạo nên tính mô đun (thêm
vào một nền tảng động hơn). Linux cũng bảo mật ở mức nhân kernel (trong một
số lược đồ) tạo nên một nền tảng bảo mật Trong miền hệ thống tệp bên ngoài,
Linux tạo nên một mảng lớn nhất về hỗ trợ hệ thống tệp của bất kỳ hệ điều hành
nào, như là một ví dụ, tạo nên tính linh hoạt thông qua tính mô đun thiết kế.
Linux thực hiện không chỉ các tính năng lên lịch trình tiêu chuẩn mà còn lên lịch
trình thời gian thực bao gồm các bảo đảm về độ trễ ngắt).
Trong các thiết bị nhúng, với các mức ràng buộc khác nhau (hiệu năng của
bộ xử lý, các tài nguyên như bộ nhớ và v.v). Linux là lý tưởng trong hầu hết các
trường hợp này vì khả năng thu hẹp quy mô của nó và sử dụng bất kỳ các bộ vi
xử lý nhúng nào có sẵn trên thị trường. Tính linh hoạt này làm cho Linux trở
thành một nền tảng được sử dụng rất nhiều trong truyền hình, giải trí trong xe
hơi, các hệ thống định vị và nhiều kiểu thiết bị khác.
Linux có khả năng tùy chỉnh cao và tập trung vào mức tiêu thụ điện năng
thấp. Để bảo đảm sự tập trung vào điện năng, sáng kiến Less Watts (Wát thấp
hơn) theo dõi sự tiêu thụ điện năng của các bản phát hành nhân Linux. Dự án này chủ
yếu tập trung vào các nền tảng của Intel, nhưng cũng có thể có ích với các bộ xử lý
khác.
Linux là một đề xuất khá chuẩn cho các thiết bị nhúng và có thể xác định
sự thành công hay thất bại của thiết bị (hỗ trợ phát triển và xuất hiện nhanh).

Trong phần này, xin phép được giới thiệu cách cài đặt hệ điều hành linux
yocto lên Board Galileo

18


×