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

Báo cáo thực hành ghép nối máy tính và Điều khiển tự Động thực hành ghép nối máy tính và Điều khiển tự Động

17 1 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Thực Hành Ghép Nối Máy Tính Và Điều Khiển Tự Động
Tác giả Phan Duy Minh Thông, Nguyễn Thị Thùy Linh
Người hướng dẫn Giảng Viên: Phan Hải Phong
Trường học Trường Đại Học Khoa Học Khoa Điện-Điện Tử Và Công Nghệ Vật Liệu
Thể loại Báo cáo
Năm xuất bản 2024-2025
Thành phố Huế
Định dạng
Số trang 17
Dung lượng 1,86 MB

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

Nội dung

Yêu cầu chức năng của giao diện:  Khả năng kết nối: Giao diện phải hỗ trợ kết nối qua UART, giao tiếp với bo mạch Arduino thông qua cổng COM và tốc độ Baud...  Tính năng điều khiển: G

Trang 1

ĐIỆN-ĐIỆN TỬ VÀ CÔNG NGHỆ VẬT LIỆU

-o0o -BÁO CÁO THỰC HÀNH GHÉP NỐI MÁY

TÍNH VÀ ĐIỀU KHIỂN TỰ ĐỘNG

THỰC HÀNH GHÉP NỐI MÁY TÍNH VÀ ĐIỀU KHIỂN TỰ ĐỘNG - NHÓM 3

2024-2025.1.DTV4242.002

Giảng viên hướng dẫn : PHAN HẢI PHONG

Sinh viên thực hiện : phan duy minh thông

Nguyễn thị thùy linh

Mã sinh viên : 22T1050010

HUẾ, THÁNG 12 NĂM 2024

Trang 2

I TỔNG QUAN LÝ THUYẾT

1 GIAO DIỆN LẬP TRÌNH CHO BO MẠCH

Trong bo mạch, vi điều khiển Arduino Uno là một vi điều khiển

mạnh mẽ và dễ lập trình Việc lập trình Arduino Uno được thực hiện

thông qua phần mềm Arduino IDE với các tính năng:

 Ngôn ngữ lập trình Arduino: Ngôn ngữ tương tự C/C++.

 Môi trường phát triển tích hợp (IDE): Hỗ trợ biên dịch mã, tải

mã lên bo mạch, và theo dõi trạng thái hoạt động của bo qua Serial Monitor

 Thư viện mở rộng: Hỗ trợ các linh kiện như LCD, Motor, Servo,

cảm biến nhiệt độ và độ ẩm

Giao diện lập trình cho bo mạch với Arduino IDE.

 Các bước lập trình trên Arduino IDE:

B1: Cài đặt IDE và cấu hình môi trường: Tải và cài đặt Arduino

IDE, chọn cổng COM và loại bo mạch (Arduino Uno)

B2: Viết chương trình: Sử dụng các hàm cơ bản như setup() và loop() để cấu hình và điều khiển thiết bị.

B3: Nạp chương trình lên bo: Kết nối bo mạch với máy tính qua

cáp USB, biên dịch chương trình và tải mã lên bo

Trang 3

B4: Theo dõi hoạt động: Sử dụng Serial Monitor để kiểm tra tín

hiệu hoặc debug chương trình

2 LẬP TRÌNH THIẾT KẾ GIAO DIỆN ĐIỀU KHIỂN

Giao diện điều khiển được thiết kế bằng Visual Studio Community với ngôn ngữ lập trình C#, giúp người dùng thông quab nó giao tiếp

với bo mạch Arduino

Thiết kế giao diện điều khiển là bước quan trọng giúp người dùng tương tác trực quan với bo mạch và linh kiện phần cứng

Giao diện thiết kế trên Visual Studio Community.

 Mục tiêu thiết kế giao diện:

 Tạo môi trường giao tiếp đơn giản, hỗ trợ điều khiển và giám sát trạng thái của bo mạch Arduino và các linh kiện liên quan

 Đảm bảo giao diện dễ cài đặt, dễ sử dụng, phù hợp với người dùng không chuyên về kỹ thuật

Yêu cầu chức năng của giao diện:

 Khả năng kết nối: Giao diện phải hỗ trợ kết nối qua UART, giao

tiếp với bo mạch Arduino thông qua cổng COM và tốc độ Baud

Trang 4

 Tính năng điều khiển: Giao diện cần cung cấp các công cụ để

gửi lệnh và nhận dữ liệu từ bo mạch, cụ thể:

 Điều chỉnh các linh kiện như LCD, Motor, Servo

 Đọc và hiển thị giá trị từ cảm biến

 Trực quan và thân thiện: Giao diện cần chia thành các tab chức

năng, có thanh trạng thái thông báo rõ ràng, và hiển thị thông tin theo thời gian thực

 Công cụ và kỹ thuật sử dụng:

 Ngôn Ngữ lập trình: C#: là ngôn ngữ lập trình mạnh mẽ trong

việc tạo ứng dụng giao diện đồ họa (GUI)

 Windows Forms: Tạo giao diện đồ họa (GUI) với các thành phần

như ComboBox, TrackBar, Button, và TextBox để hỗ trợ điều

khiển và nhập dữ liệu

 Thư viện SerialPort: Quản lý giao tiếp UART giữa máy tính và

Arduino

 Xử lý sự kiện: Sử dụng các event handlers như Button_Click

hoặc ComboBox_SelectedIndexChanged để xử lý các thao tác

người dùng Giao diện cần xử lý các sự kiện khi người dùng

nhấn nút hoặc thay đổi trạng thái

Giao diện lập trình cho từng thành phần.

Trang 5

 Quy trình lập trình giao diện:

 Thiết kế giao diện cơ bản: Sắp xếp các thành phần đồ họa,

thêm các tab như COM Setting, Display LCD,

 Kết nối UART: Giao diện cần đảm bảo người dùng có thể chọn

đúng cổng COM và tốc độ Baud

 Tích hợp các chức năng điều khiển: Mỗi linh kiện như Motor,

LCD, Servo được gán một tập lệnh điều khiển tương ứng

 Thử nghiệm và hoàn thiện: Kiểm tra các chức năng giao diện

bằng cách gửi và nhận dữ liệu, đảm bảo hoạt động chính xác

3 GIAO TIẾP UART

 Tổng quan về giao tiếp UART

Giao tiếp UART (Universal Asynchronous Receiver-Transmitter) là một trong những giao thức giao tiếp nối tiếp đơn giản và phổ biến

nhất để trao đổi dữ liệu giữa hai thiết bị UART hoạt động theo

nguyên lý truyền dữ liệu dưới dạng chuỗi bit nối tiếp (serial) thông qua hai dây truyền và nhận (TX và RX)

Giao tiếp giữa máy tính và Arduino.

 Đặc điểm chính của UART:

Trang 6

 Không đồng bộ: Không cần tín hiệu xung nhịp (clock), chỉ yêu

cầu cấu hình tốc độ Baud giống nhau giữa hai thiết bị

 Truyền nối tiếp: Dữ liệu được gửi đi từng bit, từ LSB (Least

Significant Bit) đến MSB (Most Significant Bit)

 Cấu trúc khung dữ liệu: Bao gồm bit start, các bit dữ liệu, bit

parity (nếu có), và bit stop

 Cách hoạt động của giao tiếp UART trong dự án

Trong hệ thống, giao tiếp UART được sử dụng để kết nối giữa bo mạch Arduino Uno và giao diện điều khiển trên Visual Studio Giao tiếp này cho phép:

 Gửi lệnh từ giao diện để điều khiển các linh kiện trên bo mạch

 Nhận dữ liệu phản hồi từ bo mạch, như thông số nhiệt độ, độ

ẩm từ cảm biến DHT11

 Cách giao diện gửi dữ liệu đến bo mạch:

 Cấu hình kết nối UART trên giao diện:

Người dùng chọn cổng COM và tốc độ Baud đúng với bo mạch

Arduino đã cấu hình

 Quá trình gửi dữ liệu từ giao diện:

Khi người dùng thực hiện một thao tác (ví dụ: nhấn nút điều khiển Motor), giao diện sẽ chuyển lệnh thành một chuỗi dữ liệu

Chuỗi dữ liệu được định dạng theo quy ước, ví dụ:

“mtr 50”: Điều khiển Motor quay cùng chiều kim đồng hồ với

tốc độ 50

“ln1 Hello”: Hiển thị chuỗi "Hello" lên dòng 1 của LCD.

Giao diện sử dụng thư viện SerialPort trong C# để truyền

chuỗi này qua UART

Trang 7

Ví dụ mã lệnh trong giao diện C#.

 Quá trình nhận dữ liệu từ bo mạch:

Arduino nhận chuỗi dữ liệu thông qua hàm Serial.read() hoặc

Serial.readString().

Dữ liệu được xử lý theo quy tắc: tách các phần trong chuỗi để xác định lệnh và tham số điều khiển

Bo mạch thực hiện hành động điều khiển linh kiện tương ứng

và có thể gửi phản hồi lại giao diện

 Ưu điểm của giao tiếp UART:

 Giao tiếp UART đơn giản, dễ cấu hình và phù hợp với các ứng dụng điều khiển nhỏ

 Truyền nhận dữ liệu linh hoạt, hỗ trợ gửi các chuỗi lệnh phức tạp để điều khiển nhiều linh kiện cùng lúc

 Khả năng mở rộng, cho phép giao diện không chỉ gửi lệnh mà còn nhận dữ liệu từ bo mạch để hiển thị trạng thái hoạt động

 Nhược điểm của giao tiếp UART:

 Độ trễ khi truyền dữ liệu: Tốc độ truyền phụ thuộc vào cấu hình

tốc độ Baud, có thể gây chậm trễ trong quá trình điều khiển

 Xung đột dữ liệu: Khi hai thiết bị cùng gửi dữ liệu đồng thời, có

thể xảy ra xung đột làm gián đoạn truyền thông

Trang 8

II LẬP TRÌNH GIAO TIẾP GIỮA GIAO DIỆN ĐIỀU KHIỂN

VÀ BO MẠCH

1 LẬP TRÌNH CHO BO MẠCH ĐIỀU KHIỂN TỰ ĐỘNG

a) TỔNG QUAN VỀ BO MẠCH

Bo mạch thực hành ghép nối máy tính và điều khiển tự động như hình dưới đây

Bo mạch thực hành.

 Bo mạch bao gồm:

 1 vi điều khiển Arduino Uno có thể lập trình được

 1 màn hình LCD 16x2 để hiển thị thông tin

 1 Motor, 1 Servo được điều khiển bởi 1 Arduino Motor Shield L293D

 1 cảm biến nhiệt độ và độ ẩm DHT11

Trang 9

b) LẬP TRÌNH CHO BO MẠCH

 Thư viện và khai báo

 #include <Adafruit_Sensor.h>, #include <DHT.h>, #include

<DHT_U.h>: Các thư viện dùng để làm việc với cảm biến DHT (đo nhiệt độ và độ ẩm)

 #include <Wire.h>: Thư viện hỗ trợ giao tiếp I2C cho các thiết bị như màn hình LCD

 #include <Servo.h>: Thư viện điều khiển servo motor

 #include <LiquidCrystal_I2C.h>: Thư viện điều khiển màn hình LCD qua giao tiếp I2C

 #include <AFMotor.h>: Thư viện điều khiển motor DC (đặc biệt

là với các module động cơ AFMotor)

 Khai báo các biến và đối tượng

 #define DHTPIN 2: Khai báo chân kết nối với cảm biến DHT11 là chân số 2

 AF_DCMotor motor4(12): Khai báo đối tượng motor4 đại diện cho motor DC, kết nối với chân 12

 DHT dht(DHTPIN, DHTTYPE): Khai báo đối tượng cảm biến DHT,

sử dụng chân 2 và cảm biến DHT11

 LiquidCrystal_I2C lcd(0x27, 16, 2): Khai báo đối tượng LCD sử dụng giao tiếp I2C với địa chỉ 0x27, kích thước màn hình 16x2

 Servo myservo: Khai báo đối tượng điều khiển servo motor

 Các hàm chính

controlServo(): Hàm này có thể được dùng để điều khiển servo

motor

readSensor_DisplayLCD(): Hàm này đọc dữ liệu từ cảm biến

DHT (nhiệt độ và độ ẩm), sau đó hiển thị trên màn hình LCD và gửi dữ liệu qua Serial

processString(String xau): Hàm xử lý chuỗi nhận được từ giao

tiếp Serial Tùy thuộc vào nội dung của chuỗi, chương trình sẽ thực hiện các hành động khác nhau

Trang 10

display_lcd(String chuoi): Hàm này dùng để hiển thị chuỗi lên

màn hình LCD,

 Chức năng của setup()

 myservo.attach(9): Gắn servo vào chân số 9 của Arduino

 Serial.begin(9600): Khởi động giao tiếp Serial với tốc độ 9600 bps

 pinMode(2, OUTPUT): Đặt chân 2 (cảm biến DHT) là chân xuất (mặc dù trong thực tế, chân này là đầu vào)

 motor4.setSpeed(150): Đặt tốc độ motor DC ban đầu là 150 (từ

0 đến 255)

 lcd.init() và lcd.backlight(): Khởi động màn hình LCD và bật đèn nền

 dht.begin(): Khởi động cảm biến DHT11

 Sau khi cấu hình, chương trình in ra một số hướng dẫn trên

Serial và gọi hàm readSensor_DisplayLCD() để hiển thị thông tin cảm biến ban đầu

 Chức năng của loop()

 if (Serial.available() > 0): Kiểm tra xem có dữ liệu nào đến từ

giao tiếp Serial không

 String xau = Serial.readString(): Đọc chuỗi ký tự từ Serial

 processString(xau): Gọi hàm processString() để xử lý chuỗi vừa nhận và thực hiện hành động tương ứng

 Chức năng của processString()

 Hàm này xử lý chuỗi ký tự nhận được từ Serial và thực hiện các tác vụ sau:

lcd: Nếu chuỗi bắt đầu bằng "lcd", chương trình sẽ hiển thị

chuỗi còn lại (sau "lcd") lên màn hình LCD

ser: Nếu chuỗi bắt đầu bằng "ser", chương trình sẽ đọc giá trị số

sau "ser", chuyển đổi nó thành giá trị nguyên và điều khiển vị trí servo motor theo giá trị này

mtr: Nếu chuỗi bắt đầu bằng "mtr", chương trình sẽ điều khiển

Trang 11

dht: Nếu chuỗi bắt đầu bằng "dht", chương trình sẽ gọi hàm

readSensor_DisplayLCD() để đọc dữ liệu từ cảm biến DHT11 và hiển thị thông tin nhiệt độ và độ ẩm lên màn hình LCD

 Chức năng của readSensor_DisplayLCD()

 Hàm này thực hiện các bước sau:

 Đọc dữ liệu từ cảm biến DHT11 (nhiệt độ và độ ẩm)

 Kiểm tra xem dữ liệu có hợp lệ không (isnan(humidity) ||

isnan(temperature))

 Nếu dữ liệu hợp lệ, gửi thông tin nhiệt độ và độ ẩm qua Serial

và hiển thị chúng lên màn hình LCD

 Nếu có lỗi khi đọc cảm biến, chương trình sẽ hiển thị thông báo

"Sensor Error" trên màn hình LCD

 Hoạt động tổng quan

 Khi chương trình chạy:

 Người dùng có thể gửi các lệnh qua Serial Monitor của Arduino IDE để điều khiển các thiết bị:

o "lcd": Hiển thị thông tin trên LCD.

o "ser": Điều khiển vị trí của servo motor (sử dụng giá trị số

sau "ser")

o "mtr": Điều khiển tốc độ motor DC (sử dụng giá trị số sau

"mtr")

o "dht": Đọc và hiển thị thông tin từ cảm biến DHT11 (nhiệt

độ và độ ẩm)

2 LẬP TRÌNH GIAO DIỆN ĐIỀU KHIỂN CHO BO MẠCH

a) YÊU CẦU ĐỂ THIẾT KẾ

Về mặt kết nối, giao diện cần có chức năng kết nối với vi điều

khiển trên bo mạch qua giao tiếp UART bằng cổng nối tiếp với 2

thông số là tên cổng COM và tốc độ Baud Mỗi vi điều khiển có 1 tên

Trang 12

cổng COM riêng, tốc độ baud được cấu hình ngay trong quá trình lập trình cho bo mạch Vì vậy cần đảm bảo giao diện kết nối gọi đúng tên các thông số để có thể kết nối thành công với bo mạch

Về mặt giao diện, 1 cửa số chính gồm nhiều Tab phụ:

 COM Setting → kết nối với bo mạch

 Display LCD → điều khiển hiển thị LCD

 DHT11 Sensor → đọc giá trị nhiệt độ, độ ẩm từ cảm biến và vẽ

đồ thị

 Motor Control → điều khiển Servo, Motor

 Fan Mode -> Chế độ hoàn chỉnh cho ứng dụng quạt thông minh

 1 thanh trạng thái để thông báo trạng thái kết nối cũng như

hành động điều khiển

b)THIẾT KẾ GIAO DIỆN KẾT NỐI

Giao diện kết nối với bo mạch.

Hình là giao diện kết nối cho bo mạch, gồm 2 comboBox để hiện 1 danh sách các cổng COM có thể kết nối, các tốc độ Baud thường

dùng

Trang 13

2 nút nhấn Connect và Disconnect để kết nối và ngắt kết nối với

bo mạch

c) THỬ NGHIỆM ĐIỀU KHIỂN CHO TỪNG LINH KIỆN

 Các bước thử nghiệm linh kiện trên bo mạch:

 LCD:

Gửi chuỗi lệnh hiển thị, như ln1 Hello để in dòng chữ "Hello"

lên dòng 1

Thử nghiệm lệnh xóa nội dung bằng lcd clear.

 Motor và Servo:

Sử dụng giao diện để điều chỉnh tốc độ Motor với các mức khác nhau

Kiểm tra chế độ quay của Servo bằng cách gửi các góc quay cụ

thể, ví dụ: ser 45 để quay Servo đến góc 45 độ.

 Cảm biến DHT11:

Kích hoạt đọc dữ liệu từ cảm biến, hiển thị giá trị lên giao diện

và vẽ biểu đồ theo thời gian thực

 ĐIỀU KHIỂN HIỂN THỊ CHUỖI LÊN LCD

Giao diện để nhập 1 chuỗi hiển thị lên LCD như sau:

Trang 14

Giao diện để nhập chuỗi lên LCD.

Giao diện cho phép hiển thị chuỗi lên dòng 1, dòng 2 hoặc đồng thời hiển thị trên cả 2 dòng của LCD bằng cách chọn Line 1, Line 2

 ĐỌC DỮ LIỆU TỪ CẢM BIẾN

Giao diện để đọc giá trị từ cảm biến DHT11 như sau:

Giao diện để đọc giá trị từ cảm biến.

Gồm 2 khối đọc giá trị từ cảm biến, giá trị sau khi đọc được sẽ

được hiển thị ra

 ĐIỀU KHIỂN SERVO VÀ MOTOR

Giao diện điều khiển Servo và Motor như sau:

Trang 15

Giao diện điều khiển Servo và Motor.

2 nhóm riêng biệt để điều khiển cho Servo, Motor Đối với Motor

có thể điều khiển quay cùng chiều hoặc ngược chiều kim đồng hồ Có

2 thanh TrackBar để chọn góc và tốc độ cho từng nhóm

III KẾT QUẢ ĐẠT ĐƯỢC

 Đối với bo mạch điều khiển:

 Bo mạch Arduino Uno nhận và xử lý chuỗi dữ liệu qua giao tiếp UART thành công

 Các linh kiện trên bo mạch như LCD, Motor, Servo và cảm biến DHT11 hoạt động ổn định, đúng với mục tiêu thiết kế ban đầu

 Cảm biến DHT11 đo nhiệt độ và độ ẩm cho kết quả chính xác, có thể hiển thị qua màn hình LCD 16x2 hoặc gửi dữ liệu lên giao diện điều khiển

 Motor và Servo điều chỉnh linh hoạt các chế độ quay và góc

quay dựa trên lệnh từ giao diện

 Đối với giao diện điều khiển trên máy tính:

Kết nối bo mạch qua UART ổn định, hỗ trợ các tốc độ

Baud

Trang 16

Trang 17

KẾT LUẬN

Dự án Thực hành ghép nối máy tính và điều khiển tự động đã được thực hiện

thành công, đáp ứng các yêu cầu đề ra Thông qua việc lập trình giao tiếp giữa bo

mạch Arduino Uno và giao diện điều khiển trên Visual Studio, nhóm đã hoàn thiện một mô hình quạt thông minh (Fan Mode) với các chức năng: điều chỉnh tốc độ, chế

độ xoay, hiển thị nhiệt độ và độ ẩm, cùng khả năng hẹn giờ bật/tắt.

Kết quả đạt được thể hiện rõ ràng qua:

Sự đồng bộ và ổn định giữa các thành phần phần cứng và phần mềm.

Giao diện điều khiển trực quan, dễ sử dụng, tích hợp đầy đủ các tính năng Chức năng Fan Mode cho phép ứng dụng thực tế cao, đặc biệt trong việc mô phỏng các thiết

bị gia dụng thông minh.

Tuy nhiên, dự án vẫn còn một số hạn chế như độ trễ trong xử lý dữ liệu và phạm vi

sử dụng giới hạn trong nền tảng Windows Đây là những điểm nhóm sẽ cải tiến trong các dự án tiếp theo.

Nhìn chung, quá trình thực hiện dự án không chỉ giúp nhóm hiểu sâu hơn về giao tiếp giữa máy tính và vi điều khiển mà còn rèn luyện các kỹ năng lập trình, thiết kế giao diện, và xử lý dữ liệu thời gian thực Đây là tiền đề quan trọng để phát triển các ứng dụng IoT phức tạp hơn trong tương lai.

Ngày đăng: 10/04/2025, 16:18

HÌNH ẢNH LIÊN QUAN

Hình là giao diện kết nối cho bo mạch, gồm 2 comboBox để hiện 1  danh sách các cổng COM có thể kết nối, các tốc độ Baud thường - Báo cáo thực hành ghép nối máy tính và Điều khiển tự Động thực hành ghép nối máy tính và Điều khiển tự Động
Hình l à giao diện kết nối cho bo mạch, gồm 2 comboBox để hiện 1 danh sách các cổng COM có thể kết nối, các tốc độ Baud thường (Trang 12)

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