1. Trang chủ
  2. » Thể loại khác

BÁO CÁO CUỐI KỲ LẬP TRÌNH NÂNG CAO ỨNG DỤNG TRONG ĐO LƯỜNG ĐIỀU KHIỂN

25 83 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

Tiêu đề Báo Cáo Cuối Kỳ Lập Trình Nâng Cao Ứng Dụng Trong Đo Lường Điều Khiển
Tác giả Dương Duy Anh, Trần Văn Công, Nguyễn Đức Cường
Người hướng dẫn T.S Đỗ Trần Thắng
Trường học Trường Đại Học Công Nghệ, Đại Học Quốc Gia Hà Nội
Chuyên ngành Lập Trình Nâng Cao Ứng Dụng Trong Đo Lường Điều Khiển
Thể loại Báo cáo cuối kỳ
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 25
Dung lượng 2,27 MB

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

Nội dung

Báo cáo Cuối Kỳ ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ BÁO CÁO CUỐI KỲ LẬP TRÌNH NÂNG CAO ỨNG DỤNG TRONG ĐO LƯỜNG ĐIỀU KHIỂN Mã lớp học phần EMA3129 21 Giảng viên hướng dẫn T S Đỗ Trần Thắng[.]

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

BÁO CÁO CUỐI KỲ LẬP TRÌNH NÂNG CAO ỨNG DỤNG TRONG

ĐO LƯỜNG ĐIỀU KHIỂN

Trang 2

1 Giới thiệu đồ án 4

1.1 Tên đồ án 4

1.2 Nội dung 4

2 Thiết kế phần cứng 4

2.1 Raspberry Pi 3 4

*Giới thiệu: 4

*Cấu trúc phần cứng: 5

*Thông số kỹ thuật chính: 6

2.2 Arduino Uno R3 7

*Giới thiệu: 7

*Thông số kỹ thuật: 8

2.3 Cảm biến đo nhiệt độ độ ẩm DHT22 10

*Giới thiệu: 10

*Thông số kỹ thuật: 10

*Sơ đồ chân của cảm biến: 11

*Sơ đồ nối dây: 12

3 Thiết kế phần mềm 12

3.1 Đọc dữ liệu từ cảm biến đo nhiệt độ độ ẩm DHT22 12

3.2 Đưa kết quả thu được lên cơ sở dữ liệu 15

3.3 Sử dụng dữ liệu từ Database để vẽ biểu đồ và hiển thị trên web 19

Trang 3

Danh sách hình ảnh

Hình 1: Raspberry Pi 3 5

Hình 2: Arduino Uno R3 7

Hình 3: Các kết nối của Arduino 8

Hình 4: Cảm biến DHT22 10

Hình 5: Sơ đồ chân của DHT22 11

Hình 6: Sơ đồ nối dây 12

Hình 7: Màn hình kết quả Serial Monitor 14

Hình 8: Kết quả chạy trên màn hình Terminal 18

Hình 9: Dữ liệu được lưu trên database 19

Hình 10: Giao diện chính của website 23

Hình 11: Giao diện hiển thị các nút ẩn cho các chức năng của website 23

Hình 12: Biểu đồ đo nhiệt độ 24

Hình 13: Biểu đồ đo độ ẩm 24

Hình 14: Bảng lịch sử các kết quả đo 25

Trang 4

Đầu tiên, ta sử dụng cảm biến DHT22 kết nối với Arduino để đo giá trị nhiệt độ

độ ẩm Những giá trị đấy sẽ được chuyển lên trên cơ sở dữ liệu ở trên Raspberry Pi và được lưu lại ở dạng bảng theo thời gian Sau đó, ta hiển thị những giá trị ấy trên

website ở dạng biểu đồ biến thiên theo thời gian

Raspberry Pi 1 (Model B thế hệ đầu tiên) ra đời vào năm 2012 và sớm nổi tiếng

về sự dễ sử dụng và tính sẵn có Tương tự, Raspberry Pi 2 được giới thiệu vào tháng 2

Trang 5

năm 2015 với một chút cải tiến về thiết kế có thêm RAM so với phiên bản trước Được giới thiệu vào năm 2016, Raspberry Pi 3 Model B đi kèm với bộ xử lý lõi tứ cho thấy hiệu năng mạnh mẽ gấp 10 lần Raspberry Pi 1 Và tốc độ của Raspberry Pi 3 cao hơn 80% so với Raspberry Pi 2

Phần cứng Raspberry đã trải qua một số biến thể về hỗ trợ thiết bị ngoại vi và dung lượng bộ nhớ Mỗi bổ sung mới đều đi kèm với một chút cải tiến về mặt thiết kế trong đó các tính năng nâng cao được thêm vào trong thiết bị để nó có thể thực hiện càng nhiều chức năng càng tốt như một máy tính thông thường WiFi và Bluetooth

không có trong các phiên bản cũ hơn (Pi 1 và Pi 2), được thêm vào trong phần bổ sung mới của thiết bị này (Pi 3), cho phép duy trì kết nối với các thiết bị ngoại vi mà không cần sự tham gia của bất kỳ kết nối vật lý nào

*Cấu trúc phần cứng:

Hình 1: Raspberry Pi 3

Raspberry Pi 3 Model B đi kèm với bộ xử lý lõi tứ 64 bit, trên một board mạch với các tính năng WiFi và Bluetooth và USB Nó có tốc độ xử lý từ 700 MHz đến 1,4 GHz trong đó bộ nhớ RAM dao động từ 256 đến 1GB CPU của thiết bị này được coi

là bộ não của thiết bị chịu trách nhiệm thực thi các câu lệnh dựa trên hoạt động toán học và logic GPU (bộ xử lý đồ họa) là một chip tiên tiến khác được tích hợp trong

Trang 6

board mạch có chức năng tính toán hình ảnh Board mạch được trang bị cáp lõi video Broadcam chủ yếu được sử dụng để chơi các trò chơi video thông qua thiết bị

Pi 3 đi kèm với các chân GPIO (General Purpose Input Output) rất cần thiết để duy trì kết nối với các thiết bị điện tử khác Các chân đầu ra đầu vào này nhận lệnh và hoạt động dựa trên chương trình của thiết bị Cổng Ethernet được tích hợp trên thiết bị này để thiết lập một đường giao tiếp với các thiết bị khác Có thể kết nối cổng Ethernet với bộ định tuyến để duy trì kết nối cho internet Board có bốn cổng USB được sử dụng có thể sử dụng để kết nối với bàn phím, chuột hoặc có thể kết nối USB 3G để truy cập internet và thẻ SD được thêm vào để lưu trữ hệ điều hành

Đầu nối nguồn điện là một phần cơ bản của board mạch được sử dụng để cung cấp nguồn 5 V cho bo mạch Bạn có thể sử dụng bất kỳ nguồn nào để thiết lập nguồn cho board mạch, tuy nhiên, bạn ưu tiên kết nối cáp nguồn qua cổng USB của máy tính xách tay để cung cấp 5 V

Pi 3 hỗ trợ hai tùy chọn kết nối bao gồm HDMI và RCA Video Cổng HDMI được sử dụng để kết nối LCD hoặc TV, có thể hỗ trợ cáp phiên bản 1.3 và 1.4 Cổng RCA Video được sử dụng để kết nối các màn hình TV đời cũ sử dụng jack cắm 3,5mm

mà không hỗ trợ cổng HDMI Cổng USB được tích hợp trên board mạch được sử dụng

để khởi động thiết bị Vì RPi chạy hệ điều hành Linux, nên chỉ cần cắm bàn phím và chuột vào là có thể sử dụng mà không cần cài thêm driver

Trang 7

- 40 chân GPIO

- HDMI hỗ trợ phiên bản 1.3/1.4 và Composite RCA (PAL and NTSC)

- 10/100 BaseT Ethernet socket

- Camera interface (CSI), để kết nối với camera

- Display interface (DSI): được sử dụng để kết nối Raspberry Pi với màn hình cảm ứng

- Khe cắm thẻ microSD: đễ lưu trữ dữ liệu

- Micro USB power source

- VideoCore IV multimedia/3D graphics core @ 400MHz/300MHz

2.2 Arduino Uno R3

*Giới thiệu :

Hình 2: Arduino Uno R3

Trang 8

Arduino Uno R3 là một board mạch vi điều khiển được phát triển bởi

Arduino.cc, một nền tảng điện tử mã nguồn mở chủ yếu dựa trên vi điều khiển AVR Atmega328P

Arduino Uno R3 được kết nối trực tiếp với máy tính thông qua USB để giao tiếp với phần mềm lập trình IDE, tương thích với Windows, MAC hoặc Linux

Systems, tuy nhiên, Windows thích hợp hơn để sử dụng Các ngôn ngữ lập trình như C

và C ++ được sử dụng trong IDE

- Dòng Max Chân I/O : 30mA

-14 Chân Digital I/O (6 chân PWM)

-6 Chân Analog Inputs

Trang 9

- Đèn LED : Arduino Uno đi kèm với đèn LED tích hợp được kết nối thông qua chân

13 Cung cấp mức logic HIGH tương ứng ON và LOW tương ứng tắt

- Vin : Đây là điện áp đầu vào được cung cấp cho board mạch Arduino Khác với 5V được cung cấp qua cổng USB Pin này được sử dụng để cung cấp điện áp toàn mạch thông qua jack nguồn, thông thường khoảng 7-12VDC

- 5V : Chân 5V được sử dụng để cung cấp điện áp đầu ra Arduino được cấp nguồn bằng ba cách đó là USB, chân Vin của bo mạch hoặc giắc nguồn DC

- USB : Hỗ trợ điện áp khoảng 5V trong khi Vin và Power Jack hỗ trợ dải điện áp trong khoảng từ 7V đến 20V

- GND : Chân mass chung cho toàn mạch Arduino

- Reset : Chân reset để thiết lập lại về ban đầu

- IOREF : Chân này rất hữu ích để cung cấp tham chiếu điện áp cho Arduino

- PWM : PWM được cung cấp bởi các chân 3,5,6,9,10, 11 Các chân này được cấu hình

để cung cấp PWM đầu ra 8 bit

- SPI : Chân này được gọi là giao diện ngoại vi nối tiếp Các chân 10 (SS), 11 (MOSI),

12 (MISO), 13 (SCK) cung cấp liên lạc SPI với sự trợ giúp của thư viện SPI

- AREF : Chân này được gọi là tham chiếu tương tự, được sử dụng để cung cấp điện áp tham chiếu cho các đầu vào tương tự

- TWI : Chân Giao tiếp TWI được truy cập thông qua thư viện dây Chân A4 và A5 được sử dụng cho mục đích này

- Serial Communication :Giao tiếp nối tiếp được thực hiện thông qua hai chân 0 (Rx)

Trang 10

2.3 Cảm biến đo nhiệt độ độ ẩm DHT22

*Giới thiệu:

Hình 4: Cảm biến DHT22

DHT22 là cảm biến nhiệt độ và độ ẩm với các tính năng rất gần với độ chính xác cao Điều đó cho phép bạn không phải phụ thuộc vào cảm biến nhiệt độ và cảm biến độ ẩm riêng biệt mà có thể tích hợp mọi thứ trong cùng một thiết bị Cảm biến này chứa một con chip thực hiện chuyển đổi tương tự sang kỹ thuật số và phát ra tín hiệu

kỹ thuật số với nhiệt độ và độ ẩm Điều này làm cho nó rất dễ sử dụng với bất kỳ bộ vi điều khiển nào

*Thông số kỹ thuật:

Trang 11

Độ phân giải Độ ẩm: 0.1%

Nhiệt độ: 0,1ºC

*Sơ đồ chân của cảm biến:

Hình 5: Sơ đồ chân của DHT22

2 Chân truyền dữ liệu(nên kết nối qua 1 điện trở tối đa là 10 Ohm)

Trang 12

*Sơ đồ nối dây:

Hình 6: Sơ đồ nối dây

-Chân Vcc của cảm biến nối với nguồn 5V trên Arduino

-Chân GND nối với chân GND trên Arduino

-Chân Data nối với bất kỳ chân kỹ thuật số nào của Arduino

3 Thiết kế phần mềm

3.1 Đọc dữ liệu từ cảm biến đo nhiệt độ độ ẩm DHT22

Để có thể đo được nhiệt độ và độ ẩm bằng cảm biến DHT22, ta cần phải thiết kế code để nạp vào trong Arduino được kết nối với cảm biến theo sơ đồ nối dây ở phần trên Ở đây, chúng ta sử dụng phần mềm Arduino IDE để có thể thiết kế, cũng như nạp code vào trong Arduino để thực hiện chương trình

#include "DHT.h"

#define DHTPIN 7

#define DHTTYPE DHT22

Trang 13

Để sử dụng thư viện này, ta cũng cần cài đặt thư viện Adafruit Unified Sensor Sau đó,

ta khai báo vị trí chân kết nối của chân Data của cảm biến nối với chân kỹ thuật số của Arduino (ở đây là chân số 7) và khai báo loại cảm biến được sử dụng trong chương trình này (DHT22)

Trong hàm setup(), ta khởi chạy baudrate (tốc độ truyền) là 9600 với mục đích

gỡ lỗi và kết nối với database Và khởi tạo cảm biến DHT bằng phương thức begin()

void setup ()

{

Trang 14

dht begin ();

}

Việc đọc nhiệt độ và độ ẩm từ cảm biến vô cùng đơn giản Để lấy độ ẩm, ta

dùng phương thức readHumidity trên đối tượng dht Tương tự đối với nhiệt độ là

phương thức readTemperature Các giá trị được trả về ở kiểu float Sau đó, ta in lên

màn hình Serial Monitor bằng lệnh Serial.print()

Trang 15

3.2 Đưa kết quả thu được lên cơ sở dữ liệu

Sau khi đã có được kết quả đo từ cảm biến, việc cần làm tiếp theo là đưa những

dữ liệu đó lên cơ sở dữ liệu (database), từ đó tạo lập thành 1 bảng thống kê kết quả đo theo thời gian thực

connection.php

Trước hết, ta sử dụng 4 thư viện bao gồm: serial, mysql.connector, datetime và time Thư viện serial cung cấp công cụ dùng để kết nối với Arduino Trong khi đó, thư viện mysql.connector là một thư viện dùng để giao tiếp với cơ sở dữ liệu (ở đây là

MySQL) Vì ta đang đo nhiệt độ và độ ẩm trong thời gian thực nên để có thể hiện thị ta cần thêm 2 thư viện datetime và time

Trang 16

Việc đầu tiên cần làm chính là tạo bảng và cơ sở dữ liệu Phương thức connect() của module mysql.connector được sử dụng để tạo đối tượng connection kết nối giữa cơ

sở dữ liệu và python Trong đối tượng này truyền 4 thông tin bao gồm:

- Hostname

- Username

- Password

- Database(sau khi đã tạo)

Tiếp đến, ta tạo một đối tượng con trỏ, một khía cạnh quan trọng trong việc thực hiện các truy vấn cơ sở dữ liệu Nó tạo điều kiện cho ta có nhiều môi trường làm việc riêng biệt thông qua cùng một kết nối với cơ sở dữ liệu Để làm việc đó, ta gọi hàm cursor() từ đối tượng connection

Ta sử dụng 2 lệnh là CREAT DATABASE và CREAT TABLE Như tên của chúng, 2 lệnh này dùng để tạo cơ sở dữ liệu và tạo bảng để hiển thị kết quả đo trong thời gian thực Trong bảng của ta bao gồm:

- Số thứ tự

- Giờ phút giây đo (kiểu TEXT)

- Nhiệt độ (kiểu TEXT)

- Độ ẩm (kiểu TEXT)

- Ngày tháng năm (kiểu TEXT)

Việc cuối cùng ta cần làm là ghi những giá trị cần thiết lên bảng ta đã tạo lập Khi đã xong, ta đóng bảng bằng lệnh close()

Trang 17

Ta kết nối với Arduino trong read_data() Như ở trên ta đã set baudrate của

Arduino là 9600 nên ở trong Serial(), ta cũng khai báo là 9600 để code có thể kết nối được với nhau Ta cần khai báo thêm cả cổng kết nối với Arduino (COM4) và độ trễ để chương trình có thể hoạt động trơn tru Sau đấy, ta dùng một hàm while để lấy giá trị liên tục Ta cần giải mã dữ liệu bằng phương thức decode() ra mã ascii Nếu dữ liệu ta thu được có độ dài string lớn hơn 0 thì mới trả về kết quả dữ liệu để tránh xảy ra các lỗi trong quá trình chạy chương trình

Cuối cùng, ta dùng 1 hàm while để in và ghi kết quả liên tục trên database ta đã tạo ở trên Ở đây sử dụng hàm split(‘,’) để mỗi khi xuất hiện dấu “,” ở dữ liệu thì sẽ ghi thêm giá trị mới vào hàng tiếp theo trong bảng Để hiện thị thời gian thực, ta sử dụng thêm hàm strftime() có tác dụng trả về một chuỗi biểu diễn giá trị thời gian bằng cách

sử dụng các đối tượng datetime và time

Trang 18

Sau cùng, ta thu được kết quả trên Terminal và trên phần mềm MySQL

Benchmark như sau:

Hình 8: Kết quả chạy trên màn hình Terminal

Trang 19

Hình 9: Dữ liệu được lưu trên database

3.3 Sử dụng dữ liệu từ Database để vẽ biểu đồ và hiển thị trên web

Việc đầu tiên cần làm là kết nối Database với Server Ở đây, ta khai báo 4 thuộc tính bao gồm:

Trang 20

Sau đó, ta dùng HTML (Hypertext Markup Language), để xây dựng và cấu trúc các thành phần của website, để tạo trang web.HTML sẽ hiển thị nội dung cho người truy cập Trong trang web chính sẽ bao gồm các heading, footer, content, các liên kết cho các mục của website, tạo nút bấm để quay lại trang web…

index (2).php

Sau ấy, ta bắt đầu tạo biểu đồ để hiển thị các giá trị ta đã đo được và lưu lại trên

cơ sở dữ liệu Với nhiệt độ, ta tạo kết nối với Database, sau khi đọc dữ liệu nếu phù hợp sẽ tiếp tục chương trình Ở đây, ta sử dụng hàm json_encode() có tác dụng chuyển

Trang 21

1 hay nhiều mảng trong PHP sang chuỗi json Sau khi giá trị đã thỏa mãn, ta bắt đầu thêm vào biểu đồ và cập nhật các giá trị mỗi 2s Biểu đồ hiện thị lên gồm 2 trục là giá trị nhiệt độ và thời gian đo

tempchart.php tempchart-info.php

Ta cũng làm điều tương tự đối với biểu đồ độ ẩm:

humichart.php humichart-info.php

Trang 22

Ta tạo thêm 1 bảng để hiển thị lịch sử những giá trị đo đã lấy được từ Database

table.php

Để web có được sự bắt mắt, thu hút người truy cập, ta sử dụng CSS (Cascading Style Sheets ), một ngôn ngữ dùng để tìm và định dạng lại các phần tử được tạo ra bởi

Trang 23

HTML CSS giúp chúng ta thêm style vào các phần tử HTML như thay đổi bố cục,

màu sắc trang, đổi màu chữ, font chữ, thay đổi background…

Khi chạy chương trình, ta thu được kết quả web như sau:

Hình 10: Giao diện chính của website

Cuộn xuống bên dưới là các nút ấn để hiện các biểu đồ nhiệt độ, độ ẩm và bảng lịch sử:

Hình 11: Giao diện hiển thị các nút ẩn cho các chức năng của website

Trang 24

Khi click vào ô Temperature ta thu được biểu đồ như sau:

Hình 12: Biểu đồ đo nhiệt độ

Tương tự với ô Huminity:

Hình 13: Biểu đồ đo độ ẩm

Trang 25

Bảng History hiển thị các giá trị đã đo được theo thời gian:

Hình 14: Bảng lịch sử các kết quả đo

Ngày đăng: 25/06/2023, 13:10

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