1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Thiết kế bộ kit thực hành arduino ứng dụng điều khiển thiết bị, giao tiếp với các cảm biến thông dụng và truyền thông với máy tính

77 80 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 77
Dung lượng 3,49 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KHOA VẬT LÝ LÊ THỊ MỸ HẠNH THIẾT KẾ BỘ KIT THỰC HÀNH ARDUINO ỨNG DỤNG ĐIỀU KHIỂN THIẾT BỊ, GIAO TIẾP VỚI CÁC CẢM BIẾN THÔNG DỤNG VÀ TRUYỀN THÔ

Trang 1

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM

KHOA VẬT LÝ

LÊ THỊ MỸ HẠNH

THIẾT KẾ BỘ KIT THỰC HÀNH ARDUINO

ỨNG DỤNG ĐIỀU KHIỂN THIẾT BỊ, GIAO TIẾP

VỚI CÁC CẢM BIẾN THÔNG DỤNG

VÀ TRUYỀN THÔNG VỚI MÁY TÍNH

Trang 2

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM

KHOA VẬT LÝ

LÊ THỊ MỸ HẠNH

THIẾT KẾ BỘ KIT THỰC HÀNH ARDUINO ỨNG DỤNG ĐIỀU KHIỂN THIẾT BỊ, GIAO TIẾP

VỚI CÁC CẢM BIẾN THÔNG DỤNG

VÀ TRUYỀN THÔNG VỚI MÁY TÍNH

Chuyên ngành: Vật lý học Khóa học: 2014-1018

Đà Nẵng, năm 2018

Trang 3

LỜI CẢM ƠN Khóa luận này đã được hoàn thành nhờ nhận được rất nhiều sự giúp đỡ và hỗ trợ

từ nhiều phía Lời đầu tiên em xin gởi lời cảm ơn chân thành đến quý Thầy, Cô, Nhà trường đã tạo điều kiện và môi trường để em học tập và làm việc trong suốt thời gian học tập ở giảng đường Đại học Sư Phạm-Đại học Đà Nẵng

Cảm ơn các Thầy, các Cô trong khoa Vật lý của trường đã dành hết tâm huyết, lòng nhiệt thành của mình để truyền đạt kiến thức và kinh nghiệm quý báu cho không chỉ riêng em mà rất nhiều sinh viên trong suốt thời gian học tập tại trường

Với lòng biết ơn sâu sắc nhất, em xin gởi đến Thầy Cao Xuân Hữu đã trực tiếp hướng dẫn, truyền đạt những kiến thức chuyên môn, nhiệt tình giúp đỡ em hoàn thành khóa luận này

Lời cảm ơn cuối cùng không thể không kể đến gia đình Gia đình là nguồn động lực lớn lao, đã tạo mọi điều kiện tốt nhất để em có thể hoàn thành tốt khóa luận

Mặc dù khóa luận đã hoàn thành với sự cố gắng và nỗ lực hết mình của bản thân, tuy nhiên cũng không tránh khỏi những thiếu sót Em rất mong nhận được những ý kiến đóng góp từ quý Thầy, Cô và các bạn để đề tài này hoàn thiện hơn

Em xin chân thành cảm ơn!

Sinh viên thực hiện

Lê Thị Mỹ Hạnh

Trang 4

MỤC LỤC LỜI CẢM ƠN ……… I MỤC LỤC II DANH MỤC KÝ HIỆU VÀ CỤM TỪ VIẾT TẮT V DANH MỤC BẢNG BIỂU, DANH MỤC HÌNH VI

1 Lý do chọn đề tài 1

2 Mục tiêu nghiên cứu 1

3 Nhiệm vụ nghiên cứu 2

4 Đối tượng và phạm vi nghiên cứu 2

5 Phương pháp nghiên cứu 2

CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ BỘ KIT ARDUINO VÀ PHẦN MỀM LABVIEW 3

1.1 Tổng quan về bộ kit Arduino 3

1.1.1 Thành phần của board Arduino Mega 2560………3

1.1.2 Thông số kỹ thuật 4

1.1.3 Chi tiết về board mạch 5

1.1.4 Chức năng của mỗi khối: 6

1.1.5 Chương trình cơ bản của Arduino 8

1.2 Tổng quan về phần mềm LabView 9

1.2.1 Chức năng chính của phần mềm LabVIEW 9

1.2.2 Những khái niệm cơ bản được sử dụng trong phần mềm LabVIEW 9

1.2.3 Các kỹ thuật lập trình trên LabVIEW 11

1.2.4 Chức năng của từng khối 15

1.3 Truyền thông với máy tính thông qua firmware Linx và phần mềm LabVIEW 18 1.3.1 Nhân LIFA 18

1.3.2 Nhân LINX 20

CHƯƠNG 2:MỘT SỐ BÀI THÍ NGHIỆM THIẾT KẾ TRÊN BỘ KIT ARDUINO SỬ DỤNG CÁC CẢM BIẾN THÔNG DỤNG 25

VÀ TRUYỀN THÔNG VỚI MÁY TÍNH 25

2.1 Sơ lược về các linh kiện điện tử 25

2.1.1 Điện trở (thường) 25

2.1.2 LED siêu sáng 5mm (LED đơn) 25

2.1.3 Nút nhấn (Botton) 26

Trang 5

2.1.4 Tụ gốm 26

2.1.5 LCD 20x4 27

2.1.6 Cảm biến DHT 21 (AM2301) 27

2.1.7 Cảm biến siêu âm HY-SRF05 (đo khoảng cách) 28

2.1.8 PIR sensor alarm Cảm biến phát hiện chuyển động 29

2.1.9 Module cảm biến mưa 30

2.1.10 Cảm biến dò line đơn TCRT5000 32

2.1.11 Module đo thời gian thực (Realtime-clock) DS3231 33

2.2 Một số bài thí nghiệm thực hiện trên bộ kit Arduino 34

2.2.1 Chương trình LED nhấp nháy theo yêu cầu 34

2.2.2 Chương trình thay đổi độ sáng của đèn LED 34

2.2.3 Điều khiển 8 LED bằng 8 chân Digital của Arduino 34

2.2.4 Xác định trạng thái của nút nhấn 35

2.2.5 Dùng nút nhấn để điều khiển một đèn LED: 36

2.2.6 Đo khoảng cách trong không gian với cảm biến SRF05 36

2.2.7 Lập trình Arduino với cảm biến phát hiện chuyển động PIR 38

2.2.8 Lập trình Arduino với cảm biến mưa 38

2.2.9 Chương trình phát hiện line trắng và đen nhờ cảm biến dò line đơn TCRT5000 39

2.2.10 Xem thời gian bằng module đo thời gian thực DS3231 40

2.2.11 Chương trình giám sát nhiệt độ, độ ẩm môi trường sử dụng cảm biến DHT 21 (AM2301) 43

2.3 Các bài thí nghiệm giao tiếp giữa Arduino và LabVIEW thông qua nhân LINX 45 2.3.1 Ví dụ về chương trình giao tiếp với cảm biến nhiệt độ và truyền về máy tính 45 2.3.2 Chương trình đo nhiệt độ môi trường hiển thị trên LCD 47

CHƯƠNG 3: BÀI THÍ NGHIỆM ĐIỀU KHIỂN ĐỘNG CƠ, GIAO TIẾP CẢM BIẾN VÀ TRUYỀN THÔNG VỚI MÁY TÍNH 50

3.1 Giới thiệu sơ lược về bộ điều khiển 50

3.2 Giới thiệu các linh kiện sử dụng trong bộ điều khiển 50

3.2.1 Động cơ DC 12 V 50

Trang 6

3.2.5 Cảm biến đo nhiệt độ DS18B20 (-55°C đến +125°C) 55

3.3 Nguyên lý hoạt động của bộ điều khiển tốc độ động cơ 56

3.4 Sơ đồ khối toàn mạch: 57

3.5 Sơ đồ nguyên lý của toàn mạch 58

3.5.1 Khối điều khiển trung tâm 59

3.5.2 Khối điều khiển động cơ 59

3.5.3 Động cơ và máy phát 59

3.5.4 Khối nguồn 59

3.5.5 Khối hiển thị 59

3.5.6 Khối phím nhấn 59

3.5.7 Các cảm biến 60

3.6 Công thức tính điện áp 60

3.7 Code chương trình trên Arduino 61

3.8 Code trên LabView 64

KẾT LUẬN VÀ KIẾN NGHỊ 66

1.Kết luận 66

2.Kiến nghị 66

TÀI LIỆU THAM KHẢO 67

Trang 7

DANH MỤC KÝ HIỆU VÀ CỤM TỪ VIẾT TẮT

- AC: Alternating Current

- DC: Direct Curent

- FTDI: Future Devices International

- EEPROM: Electrically Erasable Programmable Read-Only Memory

- IC: Integrated Circuit

- IDE: Integrated Development Environment

- IOT: Internet Of Things

- LABVIEW: Laboratory Virtual Instrumentation Engineering Workbench

- LCD: Liquid Crystal Display

- LED: Light Emitting Diode

- PCI: Peripheral Component Interconnect

- PID: Proportional Integral Derivative

- PIR: Passive Infraded Sensor

- RPM: Rounds-Per-Minute

- PWM: Pulse Width Modulation

- RAM: Random Acces Memory

- ROM: Read Only Memory

- RPM: Rounds-Per-Minute

- RX: receive

- SPI: Serial Peripheral Bus

- SRAM: Static Random Access Memory

- TTL: Transistor Transistor Logic

- TWI: Two Wire Interface

- TX: transmit

- UART : Universal Asynchronous Receiver – Transmitter

- USB: Universal Serial Bus

- VIPM: VI Package Manager

Trang 8

DANH MỤC BẢNG BIỂU, DANH MỤC HÌNH

Bảng 1.1: 4 cổng Serial giao tiếp với phần cứng

Bảng 1.2: Thông số kỹ thuật của board Arduino

Bảng 2.1: Sơ đồ chân cảm biến mưa

Bảng 2.2: Sơ đồ chân của cảm biến dò line đơn TCRT 5000

Bảng 2.3: Sơ đồ nối dây của module DS3231

Hình1.1: Mặt trước và mặt sau của board mạch Arduino

Hình 1.2: Chi tiết board mạch

Hình 1.4: Block Diagram của phần mềm LabVIEW

Hình 1.5: Controls palette

Hình 1.6: Các phép toán logic

Hình 1.7: Biểu diễn các phép toán cơ bản ở giao diện Block Diagram

Hình 1.8: Biễu diễn các phép toán tương ứng trên giao diện Front Panel

Hình 1.9: Các khối cơ bản trong LabVIEW

Hình 1.10: Các chân cơ bản của khối Init

Hình 1.11: Các chân cơ bản của khối Close

Hình 1.12: Các khối cơ bản của khối Low Lever

Hình 1.13: Các khối cơ bản của khối Sensor

Hình 1.14: Giao diện của phần mềm VIPM

Hình 1.15 : Giao diện IDE Arduino hiển thị ngau sau khi được nạp mã nguồn để giao

tiếp với LabVIEW

Hình 1.16: Các thông số cần chọn khi cài đặt nhân LINX

Hình 1.17: Bài tập ví dụ tự điều khiển nhấp nháy LED

Hình 1.18: Đoạn code của chương trình Manual Blink

Hình 1.19: Kết quả thu được khi thực hiện chương trình hàm tùy biến

Hình 2.1 : Hình ảnh điện trở 10kΩ và ký hiệu về điện trở

Hình 2.2: Hình ảnh và ký hiệu về LED siêu sáng 5mm

Hình 2.3: Hình ảnh và ký hiệu của nút nhấn 4 chân

Hình 2.4: Hình ảnh của nút nhấn 2 chân

Hình 2.5: Hình ảnh tụ gốm 104

Hình 2.6: Hình ảnh LCD 20x4

Hình 2.7: Mặt trước và mặt sau của cảm biến DHT21

Hình 2.8: Sơ đồ nối chân của cảm biến

Trang 9

Hình 2.11: Sơ đồ chân của cảm biến PIR

Hình 2.12: Hình ảnh về module cảm biến mưa FC-37

Hình 2.13: Mặt trước và mặt sau của cảm biến hồng ngoại TCRT5000

Hình 2.14: Mặt trước và mặt sau của module DS3231

Hình 2.15: Module DS3231 khi lắp pin vào

Hình 2.16: Kết quả các trạng thái của nút nhấn

Hình 2.18: Kết quả thu được khi sử dụng cảm biến phát hiện chuyển động PIR

Hình 2.19: Kết quả thu được khi sử dụng cảm biến mưa.

Hình 2.10: Kết quả thu được khi xác định bằng cảm biến dò line đơn

Hình 2.21: Kết quả đo thời gian thực

Hình 2.22: Kết quả chương trình giám sát nhiệt độ, độ ẩm từ môi trường thông qua cảm biến DHT21 được hiển thị trên LCD 20x4

Hình 2.23: Kết quả chương trình đọc nhiệt độ

Hình 2.24: Kết quả chương trình đọc nhiệt đọ hiển thị trên LCD

Hình 3.1: Động cơ DC 12V được sử dụng trong mô hình

Hình 3.2: Cấu tạo chi tiết về động cơ DC

Hình 3.3: Bóng đèn 6.2V

Hình 3.4: Hình ảnh của cảm biến dòng điện MAX471-3A

Hình 3.5: Sơ đồ chân của cảm biến MAX471

Hình 3.6: Mặt trước và mặt bên của module điều khiển động cơ

Hình 3.7: Hình ảnh cảm biến đo nhiệt độ DS18B20

Hình 3.8: Sơ đồ khối toàn mạch

Hình 3.9: Sơ đồ nguyên lý toàn mạch

Hình 3.10: Mạch cầu phân áp

Hình 3.11: Kết quả trên giao diện Front Panel

Hình 3.12: Kết quả thu được hiển thị trên LCD

Trang 10

MỞ ĐẦU

1 Lý do chọn đề tài

Trong nội dung của các học phần thực tập chuyên đề, thực tập cơ sở thuộc khối

cử nhân ngành Vật lý, sinh viên thường được tiếp cận với vi điều khiển 8051 Tuy nhiên, bộ kit 8051 sử dụng chủ yếu là chip cũ của atmel là 89C52 tốc độ thấp, khó khăn trong giao tiếp với cảm biến, máy tính Các board kit thực hành này thường đắt

và tốn kém thời gian vì khi sinh viên muốn tạo ra một ứng dụng nào đó thì phải làm mạch mới thì mới có thể sử dụng được

Hiện nay bộ kit Arduino được sử dụng phổ biến, bởi nó đáp ứng được hầu hết các nhu cầu của sinh viên như: thao tác nhanh hơn, mạnh hơn, hỗ trợ nhiều thư viện cho người dùng, dễ dàng mua được trên thị trường, không cần phải làm mạch nếu muốn làm một thí nghiệm nào đó Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương tác với nhau hoặc với môi trường được thuận lợi hơn; nó sẽ giúp cho mỗi sinh viên dễ dàng tạo ra những thiết bị có khả năng giao tiếp với máy tính, truyền thông qua mạng hay ứng dụng làm các thiết bị IOT

Ngoài ra, với nhân firmware Linx và phần mềm Labview, ta có thể dễ dàng truyền thông Arduino với máy tính thông qua cổng USB, thay thế được cho các card điều khiển logic phức tạp khi muốn điều khiển thiết bị bằng máy tính

Nếu có 1 bộ vi điều khiển Arduino và các cảm biến, ta có thể thiết kế các bài hướng dẫn để đọc được các cảm biến đó rồi giao tiếp với máy tính hoặc điều khiển qua mạng… Arduino sẽ giúp cho sinh viên dễ dàng tiếp cận và có thể tự mình làm được

Với những lí do trên, khóa luận này được thực hiện để thiết kế và hướng dẫn

làm các bài thí nghiệm trên bộ kit Arduino ứng dụng trong điều khiển thiết bị, giao tiếp với các cảm biến thông dụng và truyền thông với máy tính

2 Mục tiêu nghiên cứu

Với mục đích tạo ra các bài thí nghiệm ghép nối, giao tiếp thiết bị và điều khiển

tự động hóa trong các phép đo vật lý sử dụng kit Arduino, nghiên cứu này đặt ra mục tiêu: Thiết kế, chế tạo và chạy demo bộ thí nghiệm dựa trên bộ kit Arduino nhằm mô phỏng việc điều khiển các thiết bị, giao tiếp với các cảm biến thông dụng và truyền thông với máy tính

Trang 11

3 Nhiệm vụ nghiên cứu

- Nghiên cứu bộ vi xử lí và kit Arduino

- Nghiên cứu lập trình trên bộ kit Arduino và các ứng dụng của nó

- Nghiên cứu nhân firmware LINX trên Arduino và phần mềm Labview trên máy tính để giao tiếp Arduino với máy tính

- Thiết kế bộ thí nghiệm dùng bộ kit Arduino ứng dụng để điều khiển các thiết bị, cảm biến

- Thực nghiệm trên mô hình bộ kit cụ thể

4 Đối tượng và phạm vi nghiên cứu

4.1 Đối tượng nghiên cứu

Bộ kit Arduino và cách thức giao tiếp trong điều khiển thiết bị, các cảm biến thông dụng và truyền thông với máy tính

5 Phương pháp nghiên cứu

- Nghiên cứu và khảo sát các tài liệu về nguyên lý hoạt động và cách lập trình bộ kit Arduino cùng với các thiết bị kèm theo

- Nghiên cứu thực nghiệm phương thức truyền thông với máy tính thông qua phần mềm LabView và các nhân firmware

Trang 12

CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ BỘ KIT

ARDUINO VÀ PHẦN MỀM LABVIEW 1.1 Tổng quan về bộ kit Arduino

Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương tác

với nhau hoặc với môi trường được thuận lợi hơn Nói rõ hơn Arduino là một board mạch vi xử lý được dùng để lập trình tương tác với các thiết bị phần cứng như cảm biến, động cơ, đèn và các thiết bị khác

Phần cứng bao gồm một board mạch nguồn mở được thiết kế trên nền tảng vi

xử lý AVR Atmel 8bit, hoặc ARM Atmel 32-bit Những Model hiện tại được trang bị gồm 1 cổng giao tiếp USB, 6 chân đầu vào analog, 14 chân I/O kỹ thuật số tương thích với nhiều board mở rộng khác nhau

Ở đề tài khóa luận này, em sử dụng board mạch Arduino Mega2560 là một vi điều khiển sử dụng dòng vi xử lý 8-bit mega AVR của Atmel với chip ATmega2560

1.1.1 Thành phần của board Arduino Mega 2560

Arduino Mega 2560 là board mạch vi điều khiển, xây dựng dựa trên Atmega

2560 Nó có 54 chân I/O (trong đó có 15 chân có thể sử dụng làm chân ouput với chức năng PWM), 16 chân đầu vào Analog, 4 UART, 1 thạch anh 16MHz, 1 cổng USB, 1 jack nguồn, 1 header, 1 nút nhấn reset Nó chứa mọi thứ cần thiết hỗ trợ cho người lập trình vi điều khiển, đơn giản chỉ việc kết nối nó với máy tính bằng cable USB là có thể bắt đầu học tập Mach Arduino 2560 sử dụng tương thích với phần lớn các Shield của Arduino UNO

 16 chân vào analog (từ A0 đến A15)

 4 cổng Serial giao tiếp với phần cứng:

Trang 13

CỔNG SERIAL CHÂN RX CHÂN TX

Bảng 1.1: 4 cổng Serial giao tiếp với phần cứng

 1 thạch anh với tần số dao động 16 MHz

1.1.2 Thông số kỹ thuật

Điện áp đầu vào (đƣợc đề nghị) 7-12V

Điện áp đầu vào (giới hạn) 6-20V

Số lƣợng chân I / O 54 (trong đó có 15 cung cấp sản lƣợng PWM)

Số lƣợng chân Input Analog 16

Dòng điện DC mỗi I / O 20 mA

Dòng điện DC với chân 3.3V 50 mA

Bộ nhớ flash 256 KB, trong đó có 8 KB sử dụng bởi bộ nạp

Trang 14

1.1.3 Chi tiết về board mạch

Hình 1.1: Mặt trước và mặt sau của board mạch Arduino

Hình 1.2a

Trang 15

Hình 1.2b Hình 1.2: Chi tiết board mạch

1.1.4 Chức năng của mỗi khối:

Các dòng vi xử lý này cho phép lập trình các ứng dụng điều khiển phức tạp do được trang bị cấu hình mạnh với các loại bộ nhớ ROM, RAM và Flash, các ngõ vào ra digital I/O trong đó có nhiều ngõ có khả năng xuất tín hiệu PWM, các ngõ đọc tín hiệu analog và các chuẩn giao tiếp đa dạng như UART, SPI, TWI (I2C)

1.1.4.1 Đọc tín hiệu cảm biến cổng vào

1.1.4.1.1 Digital

Các board mạch Arduino đều có các cổng digital có thể cấu hình làm ngõ vào hoặc ngõ ra bằng phần mềm Do đó người dùng có thể linh hoạt quyết định số lượng ngõ vào và ngõ ra Tổng số lượng cổng digital trên mạch dùng Atmega2560 là 54

1.1.4.1.2 Analog

Các board mạch Arduino đều có trang bị các ngõ vào analog với độ phân giải bit (1024 phân mức, ví dụ với điện áp chuẩn là 5V thì độ phân giải khoảng 0.5mV) Số lượng cổng vào analog là 16 đối với Atmega2560 Với tính năng đọc analog, người dùng có thể đọc nhiều loại cảm biến như nhiệt độ, áp suất, độ ẩm, ánh sáng, …

Trang 16

10-1.1.4.2 Xuất tín hiệu điều khiển cổng ra

1.1.4.2.1 Digital output

Tương tự như các cổng vào digital, người dùng có thể cấu hình trên phần mềm để quyết định dùng ngõ digital nào là ngõ ra Tổng số lượng cổng digital trên mạch dùng Atmega2560 là 54

1.1.4.2.2 PWM output

Trong số các cổng digital, người dùng có thể chọn một số cổng dùng để xuất tín hiệu điều chế xung PWM Độ phân giải của các tín hiệu PWM này là 8-bit Số lượng cổng PWM đối với các board dùng Atmega2560 là 14 PWM có nhiều ứng dụng trong viễn thông, xử lý âm thanh hoặc điều khiển động cơ

1.1.4.3 Chuẩn Giao tiếp

1.1.4.3.1 Serial

Đây là chuẩn giao tiếp nối tiếp được dùng rất phổ biến trên các board mạch Arduino Mỗi board có trang bị một số cổng Serial cứng (việc giao tiếp do phần cứng trong chip thực hiện) Bên cạnh đó, tất cả các cổng digital còn lại đều có thể thực hiện giao tiếp nối tiếp bằng phần mềm (có thư viện chuẩn, người dùng không cần phải viết code) Mức tín hiệu của các cổng này là TTL 5V Lưu ý cổng nối tiếp RS-232 trên các thiết bị hoặc PC có mức tín hiệu là UART 12V Để giao tiếp được giữa hai mức tín hiệu, cần phải có bộ chuyển mức, ví dụ như chip MAX232 Số lượng cổng Serial cứng của Atmega2560 là 4 Với tính năng giao tiếp nối tiếp, các board Arduino có thể giao tiếp được với rất nhiều thiết bị như PC, touchscreen,…

1.1.4.3.2 USB

Các board Arduino tiêu chuẩn đều có trang bị một cổng USB để thực hiện kết nối với máy tính dùng cho việc tải chương trình Tuy nhiên các chip AVR không có cổng USB, do đó các bo Ardunino phải trang bị thêm phần chuyển đổi từ USB thành tín hiệu UART Do đó máy tính nhận diện cổng USB này là cổng COM chứ không phải là cổng USB tiêu chuẩn

1.1.4.3.3 SPI

Đây là một chuẩn giao tiếp nối tiếp đồng bộ có bus gồm có 4 dây Với tính năng này các board Arduino có thể kết nối với các thiết bị như LCD, bộ điều khiển video game, bộ điều khiển cảm biến các loại, đọc thẻ nhớ SD và MMC…

Trang 17

1.1.4.3.4 TWI (I2C)

Đây là một chuẩn giao tiếp đồng bộ khác nhưng bus chỉ có hai dây Với tính năng này, các board Arduino có thể giao tiếp với một số loại cảm biến như thermostat của CPU, tốc độ quạt, một số màn hình OLED/LCD, đọc real-time clock, chỉnh âm lượng cho một số loại loa…

1.1.4.3.5 Môi trường lập trình board mạch Arduino

Thiết kế board mạch nhỏ gọn, trang bị nhiều tính năng thông dụng mang lại

nhiều lợi thế cho Arduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phần mềm Ngôn ngữ lập trình của Arduino chính là C/C++, nhưng so với lập trình lập trình trực tiếp với vi điều khiển, lập trình với Arduino đơn giản hơn nhiều vì bạn chỉ phải giao tiếp với phần cứng thông qua các thư viện Và quan trọng là số lượng thư viện code được viết sẵn và chia sẻ bởi cộng đồng nguồn mở là cực kỳ lớn Có khá nhiều các library viết sẵn để điều khiển ngoại vi: LCD, sensor, motor nên việc bạn cần làm chỉ

là kết hợp chúng với nhau để tạo ứng dụng cho riêng bạn

1.1.5 Chương trình cơ bản của Arduino

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)

Một chương trình cơ bản bao gồm hai phần chính đó là setup() và loop()

- setup() là nơi bạn có thể khai báo các giá trị biến, khai báo thư viện, thiết đặt

thông số Nó sẽ chạy một lần duy nhất sau bạn cấp nguồn cho arduino, cho đến khi bạn reset lại hệ thống

- loop() sẽ khởi động sau khi khi setup() chạy xong, đây là nơi các chương trình

của bạn được lặp đi lặp lại cho đến khi bạn thôi cấp nguồn cho arduino Cần phải chạy vòng lặp đơn giản là để công việc được duy trì hoạt động và số liệu sẽ được cập nhật liên tục

Sơ đồ hoạt động:

Trang 18

1.2 Tổng quan về phần mềm LabView

– LabVIEW là ngôn ngữ lập trình rất khác với các ngôn ngữ lập trình khác như C, Java Bằng cách diễn đạt cú pháp thông qua hình ảnh, LabVIEW đã được gọi với tên là lập trình G- tức là lập trình đồ họa (viết tắt của Graphical: đồ họa)

– LabVIEW được ứng dụng trong nhiều lĩnh vực như tự động hóa, điều khiển, điện tử , điện tử y sinh, cơ điện tử ,…

1.2.1 Chức năng chính của phần mềm LabVIEW

 Thu thập tín hiệu từ các thiết bị bên ngoài như cảm biến nhiệt độ, hình ảnh từ webcam, vận tốc của động cơ,…

 Giao tiếp với các thiết bị ngoại vi thông qua nhiều chuẩn giao tiếp thông qua các cổng giao tiếp: RS232, RS485, USB, PCI, Ethernet

 Mô phỏng và xử lý các tín hiệu thu nhận được để phục vụ các mục đích nghiên cứu hay mục đích của hệ thống mà người lập trình mong muốn

 Xây dựng các giao diện người dùng một cách nhanh chóng và thẩm mỹ hơn nhiều so với các ngôn ngữ khác như Visual Basic, Matlab,

Cho phép thực hiện các thuật toán điều khiển như PID, Logic mờ (Fuzzy

Logic), một cách nhanh chóng thông qua các chức năng tích hợp sẵn trong LabVIEW

 Cho phép kết hợp với nhiều ngôn ngữ lập trình truyền thống như C, C++,…

1.2.2 Những khái niệm cơ bản được sử dụng trong phần mềm LabVIEW

1.2.2.1 VI (Vitual Instrument) – Thiết bị ảo

Lập trình LabVIEW được thực hiện trên cơ sở là các thiết bị ảo (VI) Các đối tượng tỏng các thiết bị ảo được sử dụng để mô phỏng các thiết bị thực, nhưng chúng được thêm vào bởi phần mềm Các VI tương tự như các hàm trong lập trình bằng ngôn ngữ

1.2.2.2 Front Panel và Block Diagram

Một chương trình trong LabVIEW gồm 2 phần chính: một là giao diện với người

sử dụng (Front Panel), hai là giao diện dạng sơ đồ khối cung cấp mã nguồn (Block Diagram) và các biểu tượng kết nối (Icon/Connector)

* Front Panel

Front panel là một panel tương tự như panel của thiết bị thực tế Ví dụ các nút bấm, nút bật, các đồ thị và các bộ điều khiển Từ Front Panel người dùng chạy và

Trang 19

quan sát kết quả có thể dùng chuột, bàn phím để đưa dữ liệu vào sau đó cho chương trình chạy và quan sát Front Panel thường gồm các bộ điều khiển (Control) và các bộ hiển thị (Indicator)

Control là các đối tượng được đặt trên Front Panel để cung cấp dữ liệu cho chương trình Nó tương tự như đầu vào cung cấp dữ liệu

Indicator là đối tượng được đặt trên Front Panel dùng để hiện thị kết quả, nó tương tự như bộ phận đầu ra của chương trình

Hình 1.3: Giao diện Front Panel của phần mềm LabVIEW

* Block Diagram

Block diagram của một VI là một sơ đồ được xây dựng trong môi trường LabVIEW, nó có thể gồm nhiều đối tượng và các hàm khác nhau để tạo các cấu trúc lệnh để chương trình thực hiện Block Diagram là một mã nguồn đồ họa của một VI Các đối tượng trên Front Panel được thể hiện bằng các thiết bị đầu cuối trên Block Diagram, không thể loại bỏ các thiết bị đầu cuối trên Block Diagram Các thiết bị đầu cuối chỉ mất đi sau khi loại bỏ đối tượng tương ứng trên Front panel Cấu trúc của một Block Diagram gồm các thiết bị đầu cuối (Terminal), nút (Node) và các dây nối (wire)

Trang 20

Hình 1.4: Block Diagram của phần mềm LabVIEW

1.2.2.3 Icon & Connector

Icon (biểu tượng): là biểu tượng của VI, được sử dụng khi từ một VI muốn sử dụng chức năng của một VI khác Khi đó VI đó được gọi là SubVI, nó tương đương như một chương trình con trong các ngôn ngữ khác

Connector (đầu nối): là một phần tử của Terminal dùng để nối các đầu vào và đầu ra của các VI với nhau khi sử dụng Mỗi VI có một Icon mặc định hiển thị trong bảng Icon ở góc trên bên phải cửa sổ Front Palette và Block Diagram

Khi các VI được phân cấp và module hóa thì ta có thể dùng chúng như các chương trình con Do đó để xây dựng một VI ta có thể chia thành nhiều VI thực hiện các chức năng đơn giản và cuối cùng kết hợp chúng lại với nhau thành một khối để thực thi những công việc cụ thể trong một chương trình

1.2.3 Các kỹ thuật lập trình trên LabVIEW

Khác với những ngôn ngữ lập trình khác, ngôn ngữ lập trình LabVIEW ngoài những menu quen thuộc giống như những ngôn ngữ khác LabVIEW còn sử dụng các bảng: Tools Palette, Controls Palette, Function Palette, chính những bảng này làm cho LabVIEW khác với các ngôn ngữ sử dụng những câu lệnh rườm rà khó nhớ Các bảng đó cung cấp các chức năng để người sử dụng có thể tạo và thay đổi trên Front Panel và Block Diagram bằng các biểu tượng, các hình ảnh trực quan giúp cho việc

sử dụng trở nên dễ dàng, linh động hơn

Trang 21

1.2.3.1 Tool palette

Tool Panel xuất hiện trên cả Font Panel và Block Diagram Bảng này cho phép người sử dụng có thể xác lập các chế độ làm việc đặc biệt của con trỏ chuột Khi lựa chọn một công cụ, biểu tượng của con trỏ sẽ được thay đổi theo biểu tượng của công cụ đó Nếu thiết lập chế độ tự động lựa chọn công cụ và người sử dụng di chuyển con trỏ qua các đối tượng trên Front Panel hoặc Block Diagram, LabVIEW sẽ

tự động lựa chọn công cụ phù hợp trên bảng Tool Palette

1.2.3.2 Controls Palette (bảng điều khiển)

Bảng điều khiển chỉ duy nhất xuất hiện trên Front panel Bảng điều khiển chứa các bộ điều khiển (control) và các bộ hiển thị (Indicator) Bảng điều khiển đầy đủ

được minh họa như hình bên đưới Để mở bảng controls palette ta vào menu View, chọn controls palette

Bảng điều khiển được sử dụng để người sử dụng thiết kế cấu trúc mặt hiển thị gồm các thiết bị ví dụ: các công tắc, các loại đèn, các loại màn hình hiển thị… Với bảng điều khiển này, người sử dụng có thể chọn các bộ thiết bị chuẩn do hãng sản xuất cung cấp ví dụ công tắc nhưng cũng có thể chọn các thiết bị do người sử dụng tự xây dựng Bảng điều khiển dùng để cung cấp dữ liệu đầu vào và hiển thị kết quả đầu

ra

Hình dưới đây là một số bộ điều khiển điển hình của LabVIEW

* Numeric controls / Indicators

Bộ công cụ này dùng để hiện thị và điều khiển dữ liệu dạng số trong chương trình LabVIEW

* Boollean controls /Indicators

Bộ công cụ này cung cấp hai giá trị là True và False Khi thực hiện chương trình

người sử dụng sử dụng chuột để điều khiển giá trị của thiết bị Việc thay đổi giá trị của các thiết bị chỉ có tác dụng khi các thiết bị đó được xác lập ở chế độ là các Control Còn nếu ở chế độ là các Indicator thì giá trị không thay đổi vì chúng chỉ là các thiết bị hiển thị

Trang 22

Hình 1.5: Controls palette

* String & Path

Các điều khiển này dùng để nhập và hiển thị các ký tự, nó cũng có thể được xác lập ở chế độ đầu vào hay đầu ra hoặc chỉ đường dẫn đến các file cần hiển thị

1.2.3.3 Function palette

Bảng Functions Palette chỉ xuất hiện trên Block Diagram Bảng này chứa các VI

và các hàm mà người sử dụng thiết kế để tạo dựng nên các khối lưu đồ Với bảng Function Palette, người lập trình thực hiện các lệnh khác nhau bằng các lưu đồ như: các phép tính số học, các biểu thức toán học, các vòng lặp, phép lựa chọn thông qua các nhóm hàm, chức năng đã được cung cấp bên cạnh đó bảng này có thể tạo ra và

sử dụng lại các hàm, chức năng mà người sử dụng tự xây dựng Các hàm toán học được minh họa thông qua các biểu tượng Khi muốn lựa chọn thực hiện một hàm nào

đó thì người sử dụng chọn biểu tượng thể hiện cho hàm đó và có thể kéo thả ở bất kỳ

vị trí nào trên Block Diagram sau đó xác định những đầu vào và đầu ra cần thiết

1.2.3.4 Các kiểu dữ liệu:

LabVIEW hỗ trợ cho tất cả các dạng dữ liệu Các kiểu dữ liệu dạng Boolean, bytes, string, array, file, text, cluster và dạng số có thể được chuyển đổi một cách dễ dàng sang các dạng cấu trúc

Trang 23

1.2.3.5 Các phép toán trog LabVIEW

LabVIEW là một môi trường lập trình cực kỳ đa dạng cho phép ta có thể thực thi gần như bất cứ phép toán, thuật toán nào với rất nhiều kiểu biến

Các phép toán cơ bản: Cộng, Trừ, Nhân, Chia, Cộng 1, Trừ 1, Bình phương, Đảo

dấu, Hàm Random, Dịch bit, …

 Các phép so sánh: So sánh bằng, không bằng, lớn hơn , nhỏ hơn, so sánh với 0…

 Các phép toán logic: Or, And, Not, …

Trang 24

Hình 1.7: Biểu diễn các phép toán cơ bản ở giao diện Block Diagram

Hình 1.8: Biễu diễn các phép toán tương ứng trên giao diện Front Panel

1.2.4 Chức năng của từng khối

Hình 1.9: Các khối cơ bản trong LabVIEW

Trang 25

1.2.4.1 Khối Init:

Hình 1.10: Các chân cơ bản của khối Init

Khối Init có rất nhiều chân ra Nhƣng để thiết lập cho việc kết nối ta chỉ quan tâm tới một vài chân Cụ thể là:

o Chân VISA resource là chân thiết lập cổng COM để giao tiếp giữa LabVIEW và

o Chân Arduino Resource để kết nối với các khối khác

o Một khối đƣợc chia làm 2 dãy chân dữ liệu: Các chân nằm bên trái của khối là các chân đƣa dữ liệu vào hoặc là các thiết lập ban đầu của tín hiệu Các chân bên phải là các chân đƣa dữ liệu ra hoặc các thành phần của tín hiệu đã tách đƣợc khi qua khối

o Để thiết lập bất kỳ chân nào của một khối ta làm nhƣ sau:

+ Đƣa con trỏ chuột tới chân cần thiết lập sao cho con trỏ chuột trở thành Wiring tool (hoặc có thể dùng Tool Palette)

+ Click Chuột phải, sau đó trỏ chuột vào Create chọn kiểu thiết lập Có 3 kiểu thiết lập: Constant(hằng số), Control(điều khiển), Indicator(hiển thị) tùy vào

mục đích để lựa chọn phù hợp

+ Chân Arduino Resource của khối này nối với chân Arduino Resource của

Trang 26

1.2.4.2 Khối Close:

Hình 1.11: Các chân cơ bản của khối Close

Là khối để dóng một chương trình giao tiếp với Arduino.Và chỉ gồm các chân

cơ bản là Arduino Resource, error in, error out

1.2.4.3 Khối Low Lever

Hình 1.12: Các khối cơ bản của khối Low Lever

Bao gồm các khối để đọc, ghi tín hiệu analog hoặc digital từ board Arduino Ngoài

ra còn có các khối phục vụ việc băm xung, bus

Trang 27

1.2.4.4 Khối Sensors

Bao gồm các khối VI sensor thường dùng như: Cảm biến nhiệt độ, cảm biến ánh sáng, LCD, led 7 thanh, led nhiều màu

Hình 1.13: Các khối cơ bản của khối Sensor

Ngoài các khối cơ bản kể trên, trong gói Arduino còn có thêm khối Example gồm

các ví dụ đã được thiết kế sẵn và khối Utility

1.3 Truyền thông với máy tính thông qua firmware Linx và phần mềm LabVIEW

Bằng phần mềm LabVIEW, ta có thể dễ dàng viết giao diện và truyền thông với board arduino thông qua 2 nhân LIFA (LabVIEW Interface for Arduino) hoặc LINX

- Khi máy tính đã cài sẵn phần mền LabVIEW, thì tiếp sau đó ta cài đặt phần mềm

VI Package Manager (VIPM) Đây là phần mềm quản lý cũng như giúp chúng ta

download các gói module VI của LabVIEW

- Sau khi cài đặt xong ta vào VIPM và tìm giao diện Arduino cho LabVIEW với từ

khóa “LabVIEW Interface for Arduino” Sau đó cài đặt LabVIEW Interface for

Trang 28

Hình 1.14: Giao diện của phần mềm VIPM

- Tiếp đến ta kết nối Arduino với máy tính qua cổng USB

- Nạp mã nguồn cho Arduino để có thể giao tiếp với LabVIEW theo đường dẫn sau:

C:\ProgramFiles(x86)\NationalInstruments\LabVIEW2017\vi.lib\LabVIEW interface for Arduino\Firmware\ LIFA_Base

Ngay sau đó, Trình dịch IDE Arduino sẽ tự hiển thị:

Hình 1.15 : Giao diện IDE Arduino hiển thị ngau sau khi được nạp mã nguồn

để giao tiếp với LabVIEW

1.3.1.2 Demo điều khiển LED trong Example làm ví dụ

Mở ví dụ "Arduino BlinkM.vi" trong thư mục "LabVIEW Interface for

Arduino" Có 4 đèn hiện thị trên board Arduino:

 Đèn báo Nguồn (Power LED)

Trang 29

1.3.1.3 Kết luận

Ta có thể thấy với nhân LIFA này, ta có thể giao tiếp với một số cảm biến thông dụng thông qua khối chương trình có sẵn trong LabView Toàn bộ hoạt động của Arduino đều là do máy tính điều khiển Hay nói cách khác, Arduino chỉ là một card mở rộng I/O cho máy tính Do đó nhân LIFA này chưa tận dụng được hết sức mạnh của bộ thư viện riêng trên Arduino và Arduino chỉ có thể hoạt động khi được điều khiển bằng máy tính chứ không chạy độc lập như một realtime-target Do đó ta

sẽ không đề cập đến nhân này

1.3.2 Nhân LINX

Đây cũng là module mở rộng của LabView do bên thứ ba là Digilent viết, dùng

để giao tiếp, truyền thông với Arduino một cách dễ dàng Nhưng với nhân này, ta tận dụng được các khối truyền thông có sẵn trên LabView để truyền số liệu cũng như điều khiển arduino, mặt khác vẫn có thể tùy chỉnh nhân LINX trên arduino bằng cách lập trình bằng chương trình Arduino IDE như thông thường Do đó ta có thể tận dụng được nguồn thư viện dồi dào của arduino, có thể làm Arduino này chạy độc lập hoàn toàn và cũng có thể giao tiếp với máy tính một cách dễ dàng

Cách cài module này cũng tương tự như LIFA: Ta có thể tải thông qua gói cài

đặt VI Package Manager

1.3.2.1 Đối với các ứng dụng cơ bản

Với các ứng dụng không cần đòi hỏi phải dùng với các cảm biến phức tạp không

có trong khối lập trình Labview, ta có thể lập trình trực tiếp trên Labview và nạp nhân firmware LINX gốc xuống cho arduino

- Trước hết, ta nạp nhân firmware LINX gốc xuống cho arduino

- Mở phần mềm Labview lên, chọn Tool\Maker Hub\LINX\LINX Firmware Wizard

Trang 30

- Ta chọn các thông số nhƣ sau rồi nhấn tiếp tục

Hình 1.16: Các thông số cần chọn khi cài đặt nhân LINX

- Tiếp tục chọn cổng Com kết nối với arduino

- Ta để mặc định nhƣ hình rồi chọn Next để nạp firm ware này xuống arduino Sau khi nạp firmware xong, ta chọn Launch Example để mở các bài tập mẫu

Hình 1.17: Bài tập ví dụ tự điều khiển nhấp nháy LED

- Ta phải chọn Serial Port:COM3, chọn chân Digital Output Channel : 13

- Kích chuột vào nút màu xanh LED Control, nếu nút đó sáng thì LED sáng và ngƣợc lại Từ đó ta sẽ tự điều khiển LED nhấp nháy, sáng tắt nhƣ ý muốn

Trang 31

Hình 1.18: Đoạn code của chương trình Manual Blink

1.3.2.2 Đối với các ứng dụng nâng cao

Đối với các ứng dụng nâng cao, cần tận dụng thư viện của Arduino IDE để giao tiếp với các cảm biến và truyền số liệu về, ta làm như sau:

Mở chương trình lập trình Arduino IDE, mở thư viện của Arduino và chọn file Arduino_Mega_2560_Serial trong mục LINX Một chương trình mẫu sẽ đươc mở ra với nội dung như sau:

/*********************************************************************

** This is example LINX firmware for use with the Arduino Mega 2560 with the serial

** interface enabled

**

** For more information see: www.labviewmakerhub.com/linx

** For support visit the forums at: www.labviewmakerhub.com/forums/linx

Trang 32

Để tùy biến, truyền số liệu về, ta thêm các hàm với cú pháp sau:

* Code trên Arduino

//Đính kèm tất cả các thƣ viện ngoại vi đƣợc sử dụng bởi LINX

// Viết code cho hàm tùy biến: myCustomCommand

int myCustomCommand(unsigned char numInputBytes, unsigned char* input, unsigned char* numResponseBytes, unsigned char* response)

//numInputBytes là số byte truyền từ máy tính xuống

//input là mảng 1 chiều chứa các byte truyền từ máy tính xuống

Trang 33

//numResponseBytes là số byte truyền lên máy tính

//response là mảng một chiều truyền lên máy tính

return 0; // hàm này có ý nghĩa lấy các số nhận được từ máy tính truyền xuống cộng thêm

5 rồi gửi ngược lại

}

Hình 1.19: Kết quả thu được khi thực hiện chương trình hàm tùy biến

* Code trên LabVIEW

Ta có thể đặt hàm giao tiếp với cảm biến để đọc giá trị ở vòng lặp loop(), sau đó

Trang 34

CHƯƠNG 2:

MỘT SỐ BÀI THÍ NGHIỆM THIẾT KẾ TRÊN BỘ KIT ARDUINO SỬ DỤNG CÁC CẢM BIẾN THÔNG DỤNG

VÀ TRUYỀN THÔNG VỚI MÁY TÍNH

Chương này giới thiệu một số bài thí nghiệm cụ thể cho bộ kit Arduino, sử dụng các cảm biến thông dụng kết hợp phương thức truyền thông với máy tính

Các bài thí nghiệm dưới đây sử dụng một số cảm biến thông dụng, hướng dẫn việc xây dựng các chương trình một cách cơ bản và cụ thể, do đó sinh viên có thể nghiên cứu và phát triển thêm ý tưởng của mình cho việc thực hiện một ứng dụng thực tiễn trong việc nghiên cứu các đề tài về điện tử

2.1 Sơ lược về các linh kiện điện tử

2.1.1 Điện trở (thường)

Hình 2.1: Hình ảnh điện trở 10kΩ và ký hiệu về điện trở

2.1.2 LED siêu sáng 5mm (LED đơn)

Hình 2.2: Hình ảnh và ký hiệu về LED siêu sáng 5mm

Trang 35

* Mô tả: Tụ gốm 104 là tụ điện có điện môi được chế tạo theo công nghệ gốm, 2

chân cắm của linh kiện được mạ thiếc Tụ gốm 104 là tụ không phân cực có giá trị nhỏ thường được dùng trong các mạch cao tần hoặc mạch lọc nhiễu

Trang 37

Hình 2.8: Sơ đồ nối chân của cảm biến

 Mô tả:

- Cảm biến DHT21 là cảm biến dùng để đo nhiệt độ và độ ẩm

- DHT21/AM2301 là mạch tích hợp đo nhiệt độ và độ ẩm Sản phẩm có độ chống nhiễu và độ chính xác cao, ngõ ra tín hiệu số và được giao tiếp với Vi điều khiển 8-bit thông qua 1 dây duy nhất (SDA) giúp tiết kiệm chân Vi điều khiển Thiết kế nhỏ gọn, tiêu thụ điện năng thấp, khoảng cách truyền dẫn tín hiệu lên đến 20m giúp việc lắp đặt dễ dàng hơn

2.1.7 Cảm biến siêu âm HY-SRF05 (đo khoảng cách)

Ứng dụng

Dùng đo khoảng cách, đo mực chất lỏng, robot dò đường, phát hiện các vết đứt gãy trong dây cáp

Trang 38

2 Trig(T) : digital input

3 echo (R): digital output

4 OUT

5 GND

Chức năng của các chân:

1 Vcc: cấp nguồn cho cảm biến

2 Trigger: kích hoạt quá trình phát sóng âm Quá trình kích hoạt khi một chu kì

điện cao / thấp diễn ra

3 Echo: bình thường sẽ ở trạng thái 0V, được kích hoạt lên 5V ngay khi có tín

hiệu trả về, sau đó trở về 0V

4 Gnd: nối với cực âm của mạch

5 OUT: không sử dụng

2.1.8 PIR sensor alarm Cảm biến phát hiện chuyển động

Hình 2.10: Mặt trước và mặt sau của cảm biến PIR

Ngày đăng: 08/05/2021, 16:27

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w