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

Nghiên cứu và tìm hiểu giao tiếp giữa phần mền labviewvavixulygalileo 2 0

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.05 MB, 73 trang )

LỜI CẢM ƠN
Do kiến thức và khả năng của em còn nhiều hạn chế, nên báo cáo đồ án tốt
nghiệp này không tránh khỏi các sai sót. Em rất mong nhận được sự góp ý của các
Thầy, các Cô và các bạn để nội dung báo cáo được hoàn thiện hơn.
Em xin được gửi lời cảm ơn chân thành tới Thầy Nguyễn Thế Dũng , Giảng
viên bộ môn Thực Hành, Khoa Công nghệ Điện tử và Truyền thông, đã tận tình
hướng dẫn em về chuyên môn, phương pháp làm việc để em có thể xây dựng và
hoàn thành nội dung báo cáo đồ án tốt nghiệp theo đúng kế hoạch. Em cũng xin gửi
lời cảm ơn gia đình, các Thầy, Cô và các bạn trong Khoa Công nghệ Điện tử và
Truyền thông, Trường Đại Học Công nghệ thông tin và Truyền thông đã giúp đỡ và
tạo điều kiện cho em trong suốt quá trình làm đồ án và hoàn thiện báo cáo đồ án tốt
nghiệp này.
Sau cùng, em xin chúc các Thầy, Cô trong Khoa Công nghệ Điện tử và
Truyền thông cùng các Thầy, Cô trong Trường luôn dồi dào sức khỏe và niềm tin
để tiếp tục thực hiện sứ mệnh cao đẹp của mình là truyền đạt kiến thức cho các bạn
trong các khóa học tiếp theo.
Em xin chân thành cảm ơn!
Thái Nguyên, Tháng 05 năm 2016

Đinh Gia Lễ

1


LỜI CAM ĐOAN
Em xin cam đoan toàn bộ nội dung của báo cáo này là do em tự tìm hiểu
nghiên cứu dưới sự định hướng của thầy giáo Nguyễn Thế Dũng hướng dẫn. Nội
dung báo cáo này không sao chép và vi phạm bản quyền từ bất kỳ công trình nghiên
cứu nào.
Nếu những lời cam đoan trên không đúng, em xin chịu hoàn toàn trách
nhiệm trước pháp luật.


Thái Nguyên, tháng 5 năm 2016
Sinh viên thực hiện

Đinh Gia Lễ

2


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
LỜI NÓI ĐẦU...................................................................................... 7
CHƯƠNG I GIỚI THIỆU PHẦN CỨNG INTEL GALILEO GEN 2.................. 8
1.1 Giới thiệu phần cứng INTEL GALILEO GEN 2........................................... 8
1.2 Cấu trúc phần cứng ....................................................................................... 8
1.3 Khối xử lý trung tâm Quark SoC X1000 ..................................................... 11
1.3.1 Mạch tích hợp SoC............................................................................... 11
1.3.2 Bộ xử lý Quark SoC X1000 400MHz................................................... 12
1.4 Lập trình cho IntelGalileo Gen2 và cài đặt hệ điều hành.......................... 13
1.4.1 Lập trình................................................................................................... 13
1.4.2 Cài đặt hệ điều hành ................................................................................. 16
1.5 Ứng dụng của Board IntelGalileo Gen2 .............................................. 22
1.5.1 Thiết lập phần cứng.............................................................................. 22
1.5.2 Setting up AWS IoT ............................................................................. 23
1.5.3 Cấu hình Intel Galileo cho AWS .......................................................... 24
1.5.4 Kết nối Intel Galileo tới AWS IOT....................................................... 25
CHƯƠNG 2 TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH LabVIEW ............. 31
2.1 Giới thiệu về ngôn ngữ lập trình LabVIEW ................................................ 31

2.2 Các thành phần của một VI......................................................................... 32
2.2.1 Cửa sổ Front Panel ............................................................................. 32
2.2.2 Cửa sổ Block Diagram ....................................................................... 34
2.3 Các Control và Indicator thường dùng ........................................................ 36
2.3.1 Các Control thường dùng ..................................................................... 36
2.3.2 Các Indicator thường dùng ................................................................. 37
2.4 Các kiểu dữ liệu cơ bản trong LabVIEW..................................................... 38
2.5 Các phép toán cơ bản trong LabVIEW........................................................ 39
2.6 Các phép so sánh trong LabVEW................................................................ 40
3


2.7 Các vòng lặp, cấu trúc, công cụ thường sử dụng ......................................... 40
2.7.1 Vòng lặp While (While Loop) ............................................................ 40
2.7.2 Vòng lặp For (For Loop) .................................................................... 41
2.7.3 Thời gian thực thi vòng lặp và các hàm Delay .................................... 42
2.7.4 Shift Register...................................................................................... 43
2.7.5 Feedback Node................................................................................... 44
2.7.6 Cấu trúc Case ..................................................................................... 45
2.8 SubVI và cách tạo SubVI............................................................................ 47
2.8.1 Khái niệm SubVI................................................................................ 47
2.8.2 Tạo một SubVI từ một VI................................................................... 47
2.9 So sánh LabVIEW với các ngôn ngữ lập trình truyền thống........................ 49
CHƯƠNG III THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH ...................... 51
3.1 Mô tả bài toán ............................................................................................. 51
3.2 Thiết kế phần cứng. ..................................................................................... 51
3.2.1 Giao diện nối tiếp RS232.................................................................... 52
3.2.2 Những đặc điểm cần lưu ý trong chuẩn RS232 ................................... 52
3.2.3 Các mức điện áp đường truyền ........................................................... 52
3.3 Thiết kế phần mềm ..................................................................................... 53

3.3.1 Giao diện Front Panel ......................................................................... 53
3.3.2 Giao diện Block Diagram ..................................................................... 54
3.4 Linh kiện sử dụng trong mạch. .................................................................... 58
3.4.1 Module rơle.......................................................................................... 58
CHƯƠNG IV KẾT QUẢ THỰC NGHIỆM ............................................... 65
4.1 Kết quả thực nghiệm ................................................................................... 65
4.2 Đánh giá hoạt động..................................................................................... 68
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .................................................. 69
TÀI LIỆU THAM KHẢO...................................................................... 70

4


DANH MỤC HÌNH ẢNH

Hình 1.1 KIT intel galileo gen 2 ..............................................................................8
Hình 1.2 Khối xử lý trung tâm Quark SoC X1000 .................................................11
Hình 1.3 : Kiểm tra kết nối với Board Intel Galileo 2 ............................................14
Hình 1.4: Kiểm tra cổng kết nối của PC với Intel Galileo 2 ...................................14
Hình 1.5 : kiểm tra cổng kết nối của PC với Intel Galileo 2 ...................................14
Hình 1.6: Kiểm tra và upload chương trình lên Galileo 2.......................................15
Hình 1.7: Kiểm tra chương trình upload thành công ..............................................15
Hình 1.8 : Chương trình upload thành công ...........................................................15
Hình 1.9: So sánh kiến trúc RTOS và OS chuẩn ....................................................17
Hình 1.10: Cấu trúc Hệ điều hành thời gian thực ...................................................18
Hình 1.11 :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.................................................................................................19
Hình 1.12: Win32 Disk Imager..............................................................................21
Hình 1.13: Format thẻ nhớ.....................................................................................21
Hình 1.14: Ghi file image đã tải về lên thẻ.............................................................21

Hình 2 .1 Giao diện LabVIEW. ............................................................................31
Hình 2.2 Cửa sổ Front Panel.................................................................................32
Hình 2.3 Bảng điều khiển trên Front Panel. ..........................................................34
Hình 2.4 Cửa sổ Block Diagram. ..........................................................................35
Hình 2.5 Các kiểu dữ liệu cơ bản..........................................................................38
Hình 2.6 Kiểu mảng trong LabVIEW. ..................................................................38
Hình 2.7 Các hàm sử dụng trong mảng. ................................................................39
Hình 2.8 Các phép toán cơ bản trong LabVIEW. ..................................................40
Hình 2.9 Các phép so sánh trong LabVIEW. ........................................................40
Hình 2.10 Vòng lặp While....................................................................................41
Hình 2.11 Ví dụ về vòng lặp While. .....................................................................41
Hình 2.12 Ví dụ về vòng lặp For...........................................................................42
Hình 2.13 Các hàm Delay.....................................................................................43
Hình 2.14 Shift Register. ......................................................................................43
5


Hình 2.15 Feedback Node. ...................................................................................44
Hình 2.16 Ví dụ sử dụng Feedback Node. ............................................................45
Hình 2.17 Cấu trúc Case.......................................................................................45
Hình 2.18 Chương trình khi điều kiện đầu vào là True. ........................................46
Hình 2.19 Chương trình khi điều kiện đầu vào là False.........................................46
Hình 2.20 Icon mặc định và Icon sau khi được tạo. ..............................................48
Hình 2.21 Cách thức tạo một Connector của một VI.............................................49
Hình 3.1 : Sơ đồ khối.............................................................................................51
Hình 3.2 Khối hiển thị chương trình điều khiển thiết bị ........................................54
Hình 3.3 Giao diện Block Diagram của chương trình ............................................54
Hình 3.4 Khối cầu hình cổng COM .......................................................................55
Hình 3.5 Khối điều khiển......................................................................................56
Hình 3.6 Cấu trúc Case..........................................................................................57

Hình 3.7 Khối hàm VISA Write ............................................................................57
Hình 3.8 Khối Hàm VISA Read ...........................................................................58
Hình 3.9 Một module relay kiểu mẫu ....................................................................58
Hình 3.10 Module relay kích ở mức cao ................................................................59
Hình 3.11 Module relay kích ở mức thấp...............................................................59
Hình 3.12 Module rơle .........................................................................................60
Hình 3.13 FT232LR ..............................................................................................61
Hình 3.14 Sơ đồ nguyên lý FT232RL ....................................................................62
Hình 3.15 Sơ đồ chân FT232RL ............................................................................62
Hình 4.1 Mạch cứng sau khi hoàn thiện.................................................................66
Hình 4.2 Kết nối máy tính với KIT Intel Galileo Gen 2 .........................................66
Hình 4.4 Kết nối chân cho Module replay..............................................................67

6


LỜI NÓI ĐẦU
Hiện nay, ngành kỹ thuật điện tử và công nghệ thông tin tiến bộ không ngừng.
Chúng đang ngày càng phát triển và được ứng dụng trong tất cả các mặt của đời
sống. Các thiết bị điện tử dùng Vi Điều Khiển được sử dụng rộng rãi khắp trong các
ứng dụng tự động. Các bộ Vi Điều Khiển ngày càng hiện đại, tốc độ xử lý nhanh
hơn, và các ứng dụng rộng hơn ...
Intel Galileo là một bo mạch vi điều khiển chuyên dùng cho việc phát triển
phần mềm và phần cứng tương tự như Andruino hay Raspberry Pi. Và nó giống như
các giải pháp nhà thông minh hay Internet of Things hiện tại. Intel Galileo sẽ đóng
vai trò là một bộ điều khiển trung tâm, kết nối với các thiết bị điện tử, và kết nối với
điện thoại hoặc máy tính bảng có chạy ứng dụng đặc biệt.
LabVIEW là một ngôn ngữ/phần mềm sử dụng rất rộng rãi trong khoa học, kỹ
thuật, giáo dục nhằm nhanh chóng và dễ dàng tạo ra các ứng dụng giao tiếp máy
tính, đo lường, mô phỏng hệ thống, kết nối thiết bị ngoại vi với máy tính theo thời

gian thực.
Và từ những vấn đề nêu trên, trong thời gian thực hiện đồ án tốt nghiệp em
đưa đến quyết định thực hiện đề tài “Nghiên cứu và tìm hiểu giao tiếp giữa phần
mềm Labview và vi xử lý Intel Galelio Gen 2.0.”
Đề tài gồm các phần:
- Chương 1: GIỚI THIỆU PHẦN CỨNG INTEL GALILEO GEN 2
- Chương 2: GIỚI THIỆU PHẦN CỨNG INTEL GALILEO GEN 2
- Chương 3: THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH
- Chương 4: KẾT QUẢ THỰC NGHIỆM
. Sản phẩm mới mang tính chất thử nghiệm để học hỏi, trao đổi kinh nghiệm
và làm quen với thực tế. Em kính mong quý Thầy cô cùng bạn bè thông cảm và góp
ý cho em hoàn thiện đề tài để đạt được hiệu quả cao hơn.
Em xin chân thành cảm ơn thầy Nguyễn Thế Dũng đã hết lòng giúp đỡ, chỉ
bảo để em hoàn thành đồ án này.
Sinh viên thực hiện
Đinh Gia Lễ

7


CHƯƠNG I
GIỚI THIỆU PHẦN CỨNG INTEL GALILEO GEN 2
1.1 Giới thiệu phần cứng INTEL GALILEO GEN 2
Intel Galileo là một bo mạch vi điều khiển chuyên dùng cho việc phát triển
phần mềm và phần cứng tương tự như Andruino hay Raspberry Pi.
Intel Galileo do Intel trưc tiếp phát triển và là sản phẩm đầu tiên được đội
ngũ phát triển Arduino chứng nhận đạt chuẩn tương thích với nền tảng Arduino.
Tại CES 2014, Intel đã trình diễn Intel Galileo với hệ thống điều khiển thiết
bị điện tử qua kết nối không dây. Và nó giống như các giải pháp nhà thông minh
hay Internet of Things hiện tại. Intel Galileo sẽ đóng vai trò là một bộ điều khiển

trung tâm, kết nối với các thiết bị điện tử, và kết nối với điện thoại hoặc máy tính
bảng có chạy ứng dụng đặc biệt. Từ ứng dụng này, người dùng có thể ra lệnh đến
các thiết bị nhờ Intel Galileo.
1.2 Cấu trúc phần cứng
Intel Galileo là sản phẩm đầu tiên sử dụng chip Intel Quark X1000 - SoC đầu
tiên thuộc dòng "Santa Clara" của Intel được sản xuất dựa trên dây chuyền công
nghệ 32nm với mức độ tiêu thụ điện rất thấp.

Hình 1.1 KIT intel galileo gen 2
8


 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) 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) bấy giờ lập trình 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ừ 7-15VDC,
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 sử dụng 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. 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).


Intel Galileo Gen2 được thiết kế để phù hợp với các Arduino Shiled, vì

vậy Intel Galileo Gen2 có:


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ư các mạch Arduino.
9


 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.
 Mỗi chân đều có một điện trở pull-up trong có trị số khoảng 5.6k đến 10k ohm.
 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.
 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ự nền tảng Arduino.

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ính qua cổng USB Client.
 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)
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.
 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.
 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.
 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.
 GND: Chân nối cực âm của nguồn điện.
 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 chân 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.

10


1.3 Khối xử lý trung tâm Quark SoC X1000
1.3.1 Mạch tích hợp 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 (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í.
 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ớ.

Hình 1.2 Khối xử lý trung tâm Quark SoC X1000
11


1.3.2 Bộ xử lý Quark SoC X1000 400MHz
Bảng 1.1 : Bộ xử lý Quark SoC
Tình trạng
Số hiệu Bộ xử lý
Bộ nhớ đệm
Kích thước
Mô tả
Số lõi
Số luồng
Tần số cơ sở của bộ xử lý
TDP
Dung lượng bộ nhớ tối Đa (tùy
vào loại bộ nhớ)
Các loại bộ nhớ

Số Kênh Bộ Nhớ Tối Đa
Băng thông bộ nhớ tối đa
Phần mở rộng địa chỉ vật lý
Hỗ trợ bộ nhớ ECC
Hỗ trợ PCI
Phiên bản PCI Express
Cấu hình PCI Express ‡
Số cổng PCI Express tối đa
Phiên bản chỉnh sửa USB

Launched
X1000
16 KB
32 nm
32 bit, single core, single thread, Pentium
ISA compatable
1
1
400 MHz
2,2 W
2 GB
DDR3 800
1
1,6 GB/s
32-bit
No
PCI Express
2.0
x1
2

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
12


 Đ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
 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.
 (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 IntelGalileo Gen2 và cài đặt hệ điều hành
1.4.1 Lập trình
Do IntelGalileo Gen2 tương thích với board Arduino uno, có thể dùng
Arduino IDE để lập trình cho Galileo bằng ngôn ngữ C.
Ban đầu 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

13


Hình 1.3 : Kiểm tra kết nối với Board Intel Galileo 2
Tiếp theo kiểm tra cổng kết nối của PC với Intel Galileo 2.

Hình 1.4: Kiểm tra cổng kết nối của PC với Intel Galileo 2
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.5 : kiểm tra cổng kết nối của PC với Intel Galileo 2
14



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.

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

Hình 1.7: Kiểm tra chương trình upload thành công
Và đèn Led tích hợp trên Board Galileo 2 sẽ nhấp nháy.

Hình 1.8 : Chương trình upload thành công
15


Chương trình Arduino có thể được chia thành ba phần chính : Strucrure,
values(variable and constants ), and functions.
1.4.2 Cài đặt hệ điều hành
1.4.2.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 –
RealTime 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.
RTOS rất phổ biến cũng như những hệ điều hành như Windows, Mac OS và
Unix. RTOS 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ị lỗi 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 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
16


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 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.

Hình 1.9: So sánh kiến trúc RTOS và OS chuẩn
17


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

Hình 1.10: Cấu trúc Hệ điều hành thời gian thực
1.4.2.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).

18


Hình 1.11 :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 được ứng dụng rất nhiều trong các lĩnh vực viễn thông di động . Hệ
thống con của trình điều khiển hỗ trợ động các module được nạp mà không ảnh
hưởng đến hiệu năng. 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 module 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

19


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).
1.4.2.3 Linux và Intel Galileo Gen2
Bước1: Chuẩn bị
1

thẻ nhớ Micro-SD 4GB Class 4.

 Đầu

đọc thẻ nhớ.

Nên sử dụng thẻ 8GB Class10 hoặc hơn để tăng tốc độ đọc ghi dữ liệu, giảm
thời gian chạy của một số tác vụ như cập nhật hệ thống, cài đặt/xoá các package
(software). Dung lượng thẻ nhớ tối đa mà Intel Galileo có thể nhận là 32GB.
Bước 2. Tải file image của hệ điều hành
Link: (Direct link)
Dung lượng file là 232.89MB.
Khi tải xong, ta sẽ được một file là iot-devkit-1.5-i586-galileo.bz2 (iot-devkit
phiên bản 1.5 dành cho Intel Galileo).
Giải nén file này, ta sẽ được một file tên là iot-devkit-1.5-i586-galileo (file
này không có đuôi) dung lượng 1.32GB.
Bước3: Tải phần mềm hỗ trợ ghi dữ liệu
Tải Win32 Disk
Imager tại (Direct link bản
Portable).
Để chạy phần mềm, giải nén file vừa tải về và chạy file Win32DiskImager.exe.

Bạn cũng có thể chạy ngay trong file nén bằng cách double-click vào file này.

20


Hình 1.12: Win32 Disk Imager
Các phần mềm khác cũng có tính năng tương đương như HDD Raw
Copy, Rawrite32, ... hoặc lệnh dd nếu dùng Linux.
Bước4. Format thẻ nhớ
Format về định dạng bất kì như NTFS, FAT32,...

Hình 1.13: Format thẻ nhớ
Bước5. Ghi file image đã tải về lên thẻ.
Chạy Win32 Disk Imager, chọn Image File là file image 1.32GB đã giải nén
ở bước 2 và chọn Device là thẻ nhớ đã chuẩn bị.

Hình 1.14: Ghi file image đã tải về lên thẻ
21


Chú ý chọn Device để ghi dữ liệu chính xác. Vì đây là hành động ghi đè dữ
liệu mới lên thẻ nhớ nên nếu bạn ghi nhầm dữ liệu sang USB của mình, cơ may
phục hồi gần như bằng 0.
Bấm nút Write để bắt đầu ghi dữ liệu. Với thẻ nhớ Class 10, tốc độ ghi trung
bình là 10MB/s. Quá trình ghi dữ liệu sẽ kết thúc trong khoảng 5 phút.
Bước6. Chạy Linux Yocto trên board Galileo.
Ta chỉ cần cắm thẻ nhớ vào board và cấp nguồn cho nó. Galileo sẽ tự động
khởi động hệ điều hành vừa được cài đặt trên thẻ nhớ.
Tài khoản đăng nhập mặc định là root, password mặc định không được cài đặt.
1.5 Ứng dụng của Board IntelGalileo Gen2



Một số ứng dụng của Intel Galileo gen 2



Làm bộ xử lý cho máy bay điều khiển từ xa (drone)



Kết nối với máy tính qua cổng Enthernet hỗ trợ những dự án IoT



Thông báo qua email khi có thư đường bưu điện gửi tới hộp thư của bạn



Hệ thống chống trộm trong gia đình thông báo qua internet…..



Nhóm sẽ giới thiệu một ứng dụng đó là: kiểm soát Intel Galileo gen 2 qua

AWS (Amazon Web Sevices) IoT .


Project này có thể truy cập và kiểm soát các thành phần khác nhau như

Led, buzzer, nút ấn, cảm biến … Dự án có thể mở rộng để tự động hóa nhà ở…



Nền tảng:

 AWS IoT Console: Amazon Web Services đã đưa ra các hỗ trợ cho IoT,
nền tảng có mã nguồn mở đảm bảo an toàn và các nền tảng khác miễn phí
 Intel Galileo Gen 2
 Grove Starter Kit: là bộ kit để học tập thiết kế cho Arduino và Galileo, nó
chứa sẵn các thành phần như Buzzer, Cảm biến ánh sang, module Relay….
1.5.1 Thiết lập phần cứng
 Kết

nối Ban galileo của bạn với internet bằng cách sử dụng Ethernet hoặc

Wi-Fi. Đối với thiết lập WiFi bạn sẽ phải sử dụng dòng lệnh connmanctl. Một khi
bạn có thể đăng nhập vào thiết bị đầu cuối Linux, nó là cần thiết để tải về vài thư
viện cần thiết.
 Thư

viện AWS Iot: cài bằng lệnh
22


$ npminstall aws-iot-device-sdk
Wiring x86: Nhập các dòng lệnh sau
-

$ mkdir wiringx86-src
- $ cd wiringx86-src
- $ curl -O -L />- $ tar zxvf master.tar.gz

- $ cd wiring-x86-master/
- $ sudo python setup.py install

1.5.2 Setting up AWS IoT
Tạo tài khoản Amazon Web Services và chọn đến AWS IOT ConsoleClick
Get Started

Đặt tên khách hàng hoặc thiết bị các trường khác để trống nhấn nút Create

23


Ấn kết nối lên thiết bị của bạn bước này sẽ tạo ra khóa công khai khóa riêng
và chứng nhận thiết bị cho bạn

Tải tất cả các tập tin và ấn xác nhận

1.5.3 Cấu hình Intel Galileo cho AWS
Đăng nhập vào galileo gen 2 sử dụng putty
Tạo một thư mục mới cho AWS sử dụng lệnh
$ mkdir aws-iot
$ cd aws-iot
Tạo thư mục để đặt các chứng chỉ
$ mkdir cert
$ cd cert
24


Sử dụng công cụ WinSCP di chuyển các chứng chỉ tải về vào cert folder


$ curl > rootCA.pem
1.5.4 Kết nối Intel Galileo tới AWS IOT
Chạy câu lệnh
$ node connectToAWS.js
Nếu đã làm theo tất cả các bước một cách chính xác dòng lệnh sau sẽ hiện ra

Tới bảng điều khiển AWS và chọn IOT intel_galileo . Nhấn nút Cập nhật
Shawdow . Bạn sẽ tìm thấy địa phương địa chỉ IP của Intel Galileo. Xin chúc mừng!
Bạn đã kết nối thành công với AWS của thiết bị IOT.

25


×