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.. Intel Galileo sẽ
Trang 1LỜ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ễ
Trang 2LỜ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ễ
Trang 3MỤ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
Trang 42.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
Trang 5DANH 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
Trang 6Hì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
Trang 7LỜ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ễ
Trang 8CHƯƠ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
Trang 9 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
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
Trang 10 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
Trang 111.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
Trang 12Băng thông bộ nhớ tối đa 1,6 GB/s
Phần mở rộng địa chỉ vật lý 32-bit
Phiên bản PCI Express 2.0
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
Trang 13 Đ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
Trang 14Hì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
Trang 15Mở 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
Trang 16Chươ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ự
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
Trang 17cao, 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
Trang 18Hệ 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:
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)
Trang 19Hì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
Trang 20nề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
(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:
https://software.intel.com/sites/landingpage/iotdk/board-boot-image.html (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 http://sourceforge.net/projects/win32diskimager/ (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
Trang 21Hì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ẻ
Trang 22Chú ý 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ư
Trang 23- $ 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
Trang 24Ấ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ỉ
Trang 25Sử dụng công cụ WinSCP di chuyển các chứng chỉ tải về vào cert folder
$ curl Class%203-Public-Primary-Certification-Authority-G5.pem > rootCA.pem
https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-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
Trang 268.6cm x 5.6cm x 2.1cm (thực tế là dài hơn một chút nữa do thẻ SD trồi ra ngoài, tuy nhiên có thể khắc phụ nhược điểm này)
Bộ xử lí Intel® Quark X1000 – lõi đơn Broadcom BCM2835 – lõi
đơn
Mô tả về bộ xử lí
Quark, giới thiệu bởi Intel tại IDF2013, tiêu thụ ít năng lượng, kích thước nhỏ, giá rẻ; phù hợp với các ứng dụng "wearables"
(thiết kế các sản phẩm có thể mặc lên người) và Internet of Things†
Thích hợp cho các thiết bị smart phones, digital TV, máy đọc sách, phương tiện giải trí, môi trường tính toán có độ bảo mật cao
Kiến trúc Intel ® Pentium® Class x86 ARM® ARM1176™
Trang 27RAM
512KB on-chip SRAM cho các chương trình Arduino và 256MB DRAM cho hệ điều hành
512MB SDRAM (được chia sẻ cho GPU)
Bộ nhớ Flash
8MB NOR Flash (Legacy SPI), cho FW bootloader và lưu trữ các chương trình
Thẻ nhớ SD (dung lượng tối đa lên đến 64GB), hỗ trợ lưu trữ trên thiết bị USB 2.0 ngoài
Hỗ trợ video Không Nhưng có thể xử lý nội
dung video bởi công cụ V4L2
HDMI – 1080p RCA (analog), không có âm thanh DSI* – cho màn hình cảm ứng
Hỗ trợ âm thanh Không Nhưng có thể dùng công
đèn LED chỉ thị nguồn, trạng thái thẻ SD, kết nối cổng LAN, hoạt động ở cổng LAN, kết nối 100Mbps
JTAG 10-pin, Mini-JTAG header Có, header P2 và P3
(không có công cụ hỗ trợ)
Tương thích
Các Arduino shield chuẩn Arduino pinout 1.0, điện áp hoạt động 3.3V và 5V
Có thể giao tiếp với các mạch Arduino qua cổng USB bằng công cụ USB TTL hoặc dùng 2 chân TX,
RX đã điều chỉnh hiện điện thế
Trang 28Các cổng nhập xuất cơ bản
(bản B) Analog I/O 6 chân, hỗ trợ độ phân giải 12bit
17 chân I/O (GPIO) chung (hỗ trợ I2C, UART, và SPI.)
Digital I/O 14 chân hỗ trợ cả 2 chế độ INPUT và
OUTPUT
8 chân GPIO có thể được lập trình để chạy 2 chế độ INPUT và OUTPUT
PWM 6 chân Digital I/O có thể dùng để phát
xung PWM (hardware PWM)
Digital I/O có thể phát được xung PWM (software PWM)
2 cổng mở rộng chia sẻ chung một cổng upstream đến chip LAN9512 mà
nó kiêm luôn giao tiếp Ethernet Dòng
ra tối đa là 100mA, không phải 500mA
Không, có thể sử dụng USB WiFi hoặc các loại Router qua LAN
Khe cắm thẻ nhớ Khe cắm thẻ microSD
Khe cắm thẻ SD RPi phải chạy hệ điều hành trên thẻ nhớ
Trang 29DSI (Digital
EEPROM 11KB Do có thể hoạt động độc lập nên
Galileo cần có EEPROM
Không Vì buộc có thẻ nhớ nên RPi không có EEPROM
1920 X 1080
Trang 30Các thông số khuyến cáo trên mạch
Galileo
Raspberry Pi (Model B)
DC Power Supply
(VIN)
Chỉ cấp điện áp 5V, dòng tiêu thụ đến 2A, nên dùng nguồn 5V – 3A
Chỉ cấp điện áp 5V Dòng tiêu thụ khoảng 700mA, lên đến khoảng 2A nếu dùng thêm phụ kiện
Cáp Ethernet không bao gồm Cat5e/Cat6
không bao gồm Cat5e/Cat6
USB 2.0 type
Thẻ nhớ Không yêu cầu
Tổi thiểu 4GB class
bị ngoại vi giao tiếp qua cổng USB nếu chúng cần trên 1A
Trang 31CHƯƠNG 2 TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH LabVIEW
2.1 Giới thiệu về ngôn ngữ lập trình LabVIEW
LabVIEW (Laboratory Virtual Instrumentation Engineering Workbench)
là môi trường ngôn ngữ đồ họa hiệu quả trong việc giao tiếp đa kênh giữa con người, thuật toán và các thiết bị Bởi vì chương trình LabVIEW mô phỏng giao diện và hoạt động của các thiết bị thực, chẳng hạn như dao động ký và thiết bị đo đa năng, chương trình LabVIEW được gọi là thiết bị ảo (Virtual Instrument), thường gọi tắt là VI
LabVIEW trở thành một trong những công cụ phổ biến trong các ứng dụng thu thập dữ liệu từ cảm biến, phát triển các thuật toán và điều khiển các thiết bị tại phòng thí nghiệm trên thế giới
LabVIEW được sử dụng rộng rãi trong các lĩnh vực đo lường, tự động hóa, cơ điện tử, robotics, vật lý, toán học, sinh học, vật liệu, ôtô,…
Hình 2 1 Giao diện LabVIEW
Chương trình LabVIEW có các đặc điểm sau:
- Đồ họa và biên dịch
- Lập trình theo dạng dòng chảy hướng dữ liệu
- Đa mục tiêu và nhiều nền tảng
- Hướng đối tượng
- Khả năng đa luồng và quản lí bộ nhớ
Trang 322.2 Các thành phần của một VI
Một VI bao gồm 2 thành phần chính là: Cửa sổ Front Panel và Block Diagram
2.2.1 Cửa sổ Front Panel
Cửa sổ Front Panel là giao diện người dùng cho VI Ở đó sẽ hiển thị các Panel giống như các thiết bị thực Ví dụ như các nút bấm, nút vặn, đồ thị, các bộ điều khiển, Trên Front Panel thường có các bộ điều khiển là Control và bộ hiển thị
là Indicator Bộ điều khiển tương ứng với các dữ liệu đầu vào của bài toán, còn bộ hiển thị tương ứng với các dữ liệu ra của bài toán
Hình 2.2 Cửa sổ Front Panel
Trên thanh công cụ của cửa sổ Front Panel có các nút như: Nhấp chuột vào nút Run để chạy một VI, LabVIEW biên dịch VI nếu cần thiết Bạn có thể chạy một
VI nếu nút Run xuất hiện ở dạng một mũi tên màu trắng Mũi tên màu trắng này cũng cho thấy bạn có thể sử dụng VI như một SubVI nếu bạn tạo ra Connector Panel cho VI đó
Khi VI chạy, nút Run xuất hiện như hình dưới đây nếu VI là một VI chính,
có nghĩa là không có chương trình nào gọi nó và do đó, nó không phải là một SubVI
Nếu VI đang chạy là một subVI, nút Run xuất hiện như hình
Trang 33Nút Run bị gãy khi VI bạn đang tạo hoặc chỉnh sửa có lỗi Nếu nút Run vẫn còn bị gãy sau khi bạn hoàn thành nối dây sơ đồ khối, VI bị lỗi và không thể chạy Click vào nút này để hiển thị cửa sổ Error list, trong đó liệt kê tất cả các lỗi và cảnh báo
Nhấp vào nút Run Continuoustly để chạy VI cho đến khi bạn hủy bỏ hoặc tạm dừng chương trình Bạn cũng có thể nhấp chuột vào nút một lần nữa để vô hiệu hóa việc chạy liên tục
Trong khi VI chạy, nút Abort Execution xuất hiện Nhấp vào nút này để dừng VI ngay lập tức nếu không có cách nào khác để dừng nó Nếu có nhiều hơn một VI chính đang chạy sử dụng VI, nút này bị làm mờ
Nhấn nút Pause để tạm dừng một VI đang chạy Khai bạn nhấn vào nút Pause, LabVIEW hiển thị Block Diagram tại vị trí nơi chương trình tạm dừng và nút Pause biến thành màu đỏ Nhấn vào nút Pause lần nữa để tiếp tục chạy VI
Chọn menu Text Settings để thay đổi cài đặt phông chữ cho các phần được lựa chọn của VI bao gồm kích thước, kiểu dáng và màu sắc
Chọn menu Align Objects để sắp xếp các đối tượng theo trục, bao gồm cả theo chiều dọc, cạnh trên, trái,
Chọn nút Distribute Objects để phân bổ các đối tượng đồng đều
Chọn nút Resize Objects làm nhiều đối tượng trên Front Panel có cùng kích thước
Chọn nút Reorder khi bạn có các đối tượng chồng chéo lên nhau và bạn muốn xác định đối tượng nào ở trước hoặc ở phía sau Chọn một trong các đối tượng với công cụ Postioning và sau đó chọn một trong các lựa chọn
Trang 34Nhập các từ cần tìm kiếm để tìm nội dung trong LabVIEW Help
Chọn nút Show Context Help Window để hiển thị hoặc tắt cửa sổ Context Help
Nút Enter Text xuất hiện để nhắc bạn rằng một giá trị mới đã sẵn sằng thay thế một giá trị cũ Nút này biến mất khi bạn nhấp vào nó
Bảng điều khiển chứa các điều khiển và các hiển thị để tạo ra Front Panel Truy cập bảng điều khiển từ cửa sổ Front Panel bằng cách chọn View->Controls Palette Bảng điều khiển được chia thành nhiều mục khác nhau, có thể hiển thị một
số hoặc tất cả các mục cho phù hợp
Hình 2.3 Bảng điều khiển trên Front Panel
2.2.2 Cửa sổ Block Diagram
Block Diagram là nơi người dùng có thể sử dụng để lập trình, xử lí các dữ
Trang 35chương trình Cấu trúc của một Block Diagram gồm có các thiết bị đầu cuối (là các thiết bị tương ứng với các đối tượng trên Front Panel), ngoài ra nó còn có các nút với dây nối
Hình 2 4 Cửa sổ Block Diagram
Các nút trên thanh công cụ của Block Diagram có thể sử dụng để gỡ lỗi khi chạy một VI
Nhấp vào nút Highlight Execution để hiển thị tuần tự thực thi của sơ đồ khối khi bạn chạy VI Nhấp vào một lần nữa để vô hiệu hóa việc làm nổi bật tuần tự thực thi của sơ đồ khối
Nhấp vào nút Retain Wire Values để lưu các giá trị của dây tại mỗi điểm trong luồng thực hiện để khi bạn đặt một thanh dò (probe) trên dây ngay lập tức bạn
có thể giữ lại những giá trị mới nhất của dữ liệu truyền qua dây dẫn Bạn phải chạy thành công VI ít nhất một lần trước khi bạn có thể giữ lại các giá trị dây
Nhấp vào nút Step Into để mở một nút và tạm dừng Khi bạn nhấp vào nút Step Into một lần nữa, nó thực hiện các hành động (action) đầu tiên và dừng lại
ở các hành động tiếp theo của SubVI hoặc cấu trúc (structure) Bạn cũng có thể bấm phím Ctrl và phím mũi tên xuống để thực thi VI từng bước một Mỗi nút nhấp nháy
để chỉ khi nó đã sẵn sàng để thực thi
Trang 36Nhấp vào nút Step Over để thực thi một nút và tạm dừng tại nút tiếp theo Bạn cũng có thể bấm phím Ctrl và phím mũi tên bên phải Bằng cách bước qua nút, bạn thực hiện các nút mà không thực thi nút đó từng bước một
Nhấp vào nút Step Out để kết thúc thực hiện các nút hiện tại và tạm dừng Khi VI kết thúc việc thực hiện, nút Step Out bị làm mờ Bạn cũng có thể bấm
<Ctrl> và các phím mũi tên Bằng cách bước ra khỏi một nút, bạn hoàn thành thực thi từng bước qua các nút và hướng đến nút tiếp theo
Nhấp vào nút Clean Up Diagram để tự động định lại tất cả các dây hiện có và sắp xếp lại các đối tượng trên Block Diagram để tạo ra một bố trí gọn gàng nhất Để cấu hình các tùy chọn làm gọn, chọn Tools->Options để hiển thị hộp thoại Options Dialogbox và chọn Block Diagram từ Category Bạn có thể cấu hình các thiết lập trong phần Cleanup Block Diagram
Nút cảnh báo (Warning) xuất hiện nếu một VI có chứa một cảnh báo và bạn thiết lập hiển thị cảnh báo (Show Warnings) trong cửa sổ Error List Một cảnh báo chỉ có một vấn đề tiềm năng với các sơ đồ khối, nhưng nó không dừng VI đang chạy
Công dụng của Labview Help: Sử dụng cửa sổ Context Help, LabVIEW Help, và NI Example Finder giúp bạn tạo và chỉnh sửa VI
2.3 Các Control và Indicator thường dùng
2.3.1 Các Control thường dùng
Các Control được chia làm 3 dạng: Boolean, Numeric và String Các loại