Professional Documents
Culture Documents
HÀ NỘI, 2023
NGHIÊN CỨU KHOA HỌC SINH VIÊN
ĐỀ TÀI: THIẾT KẾ, CHẾ TẠO MODULE ĐO CÁC THÔNG SỐ NHIỆT
ĐỘ, ĐỘ ẨM, CƯỜNG ĐỘ UV CÓ KHẢ NĂNG GỬI DỮ LIỆU LÊN
INTERNET.
Nhóm, tên thành viên:
Trần Văn Thụ (Nhóm Trường) GVHD: Ths. Trịnh Tuấn Dương
Vũ Huy Tấn
Phạm Hoàng Anh
Nguyễn Hải Nam
Bùi Văn Thuần
1
MỤC LỤC
MỤC LỤC ......................................................................................................................2
MỞ ĐẦU .........................................................................................................................6
1.2 Mục đích, đối tượng, nội dung nghiên cứu. ........................................................................ 7
2.1.3 Chọn loại thiết bị truyền phát không dây và cơ sở lý thuyết : ................................ 18
2.2.1 Chuẩn bị các thiết bị cần thiết để lắp mạch phát cảm biến nhiệt độ, độ ẩm và
cường độ tia uv............................................................................................................................. 27
2.2.4 Tiến hành hoàn thiện bo mạch phát và nạp code cho mạch. ................................... 33
2.3 Tiến hành hoàn thiện bo mạch phát và tiến hành nạp code cho mạch: ......................... 40
2.4 Tiến hành kiểm tra, khảo sát mạch phát và thu. .............................................................. 42
2.4.1 Kiểm tra khảo sát mạch ở điều kiện trong phòng: ................................................... 42
2
CHƯƠNG 3 THIẾT KẾ CHẾ TẠO VỎ CHO MÔ HÌNH . ...............................44
3.1 Tìm hiểu về công nghệ in 3D .............................................................................................. 44
4.4 Tạo phần mềm hiển thị cảm biến nhiệt độ,độ ẩm và tia uv gửi từ Bluetooth bằng app
Inventor ............................................................................................................................................ 52
3
DANH MỤC CÁC HÌNH
Hình 1: Sơ đồ chân module HC 05 ...............................................................................18
Hình 2: Sơ đồ kết nối HC-05 .........................................................................................19
Hình 3: Cảm biến DHT21 .............................................................................................21
Hình 4: Cấu tạo DHT21 ................................................................................................22
Hình 5: Cảm biến tia UV ML8511.................................................................................23
Hình 6: Phần mềm Proteus ...........................................................................................24
Hình 7: hình ảnh mô phỏng Proteus cho mạch Arduino xuất ra màn hình LCD ..........25
Hình 8: mô phỏng thiết kế mạch đo nhiệt độ truyền phát không dây ...........................25
Hình 9: Sơ đồ khối mạch phát .......................................................................................26
Hình 10: Mạch phát đo nhiệt độ, độ ẩm, uv hiển thị lên LCD, truyền dữ liệu lên app. 29
Hình 11: Hình ảnh lắp đặt modul chuyển đổi I2C vào màn hình LCD. ........................30
Hình 12Modul IC2 và màn hình LCD ...........................................................................30
Hình 13: Lắp đặt màn hình led LCD thông qua bộ chuyển đổi vào Arduino ...............31
Hình 14: Sơ đồ lắp đặt cảm biến nhiệt độ độ ẩm DHT21 .............................................32
Hình 15: Lắp đặt cảm biến cường độ tia UV ML8511 ..................................................32
Hình 16: lắp đặt modul truyền phát tín hiệu bluetooth HC 05 .....................................33
Hình 17: Sơ đồ nguyên lý hoạt động của mạch.............................................................34
Hình 18: Mạch phát nhiệt độ, độ ẩm và cường độ tia UV sau khi nhập code ..............36
Hình 19: Nghiệm thu nhiệt độ so sánh độ chênh lệch so với thực tế trong phòng ........42
Hình 20: Nghiệm thu kiểm tra nhiệt độ so sánh độ chênh lệch so với thực tế ..............43
Hình 21: Tổng quát về vỏ hộp ......................................................................................46
Hình 22: Nắp hộp ..........................................................................................................47
Hình 23: Nắp pin ...........................................................................................................47
Hình 24: Vị trí lắp Arduino ..........................................................................................47
Hình 25: Vị trí lắp cảm biến DHT21 .............................................................................47
Hình 26: Vị trí lắp cảm biến UV ...................................................................................48
Hình 27: Vị trí lắp LED LCD 1602 ...............................................................................48
Hình 28: Sản phẩm sau khi hoàn thiện .........................................................................49
Hình 29: Trang quản lý dự án .......................................................................................51
Hình 30: Tạo một trang quản lý mới .............................................................................52
Hình 31: Cửa số giao tiếp với App Inventor. .................................................................52
Hình 32: Thiết kế giao diện ứng dụng ...........................................................................53
Hình 33: Giao diện ứng dụng mô phỏng khi hoàn thành .............................................54
Hình 34: Cửa sổ tạo chương trình cho ứng dụng .........................................................54
Hình 35: Thuộc tính của block ......................................................................................55
Hình 36: Phương thức của block...................................................................................55
Hình 37: Sự kiện của Block ...........................................................................................56
Hình 38: Hành động kết nối liên lục các bluetooth đã lưu ...........................................56
Hình 39: Hành động nút bấm chọn kết nối Bluetooth ...................................................57
Hình 40: Hành động kết nối Bluetooth cần chọn ..........................................................57
Hình 41: Hành động kết nối hiển thị data từ buletooth ................................................58
Hình 42: Cách cài đặt chương trình bằng mã quét QR và code ...................................59
4
DANH MỤC CÁC BẢNG
5
MỞ ĐẦU
Trong thời đại công nghệ số ngày nay, việc thu thập và giám sát thông tin môi
trường đã trở thành một phần quan trọng của cuộc sống hàng ngày. Cùng với sự phát
triển của công nghệ, chúng ta có khả năng kết nối và truyền dữ liệu từ các thiết bị đo
môi trường lên Internet một cách dễ dàng và nhanh chóng. Điều này mở ra cơ hội cho
việc tạo ra các thiết bị thông minh có khả năng đo nhiệt độ, độ ẩm và cường độ UV, và
gửi dữ liệu trực tiếp lên Internet để giúp chúng ta hiểu rõ hơn về môi trường xung quanh.
Mục tiêu của chúng em là thiết kế một thiết bị nhỏ gọn, hiệu quả và dễ sử dụng,
có khả năng đo các thông số môi trường quan trọng và truyền dữ liệu lên nền tảng trực
tuyến để có thể truy cập từ xa. Để đạt được mục tiêu này, chúng em sẽ sử dụng các cảm
biến để đo nhiệt độ, độ ẩm và cường độ UV. Module sẽ được thiết kế và lập trình sử
dụng một vi điều khiển nhúng, như Arduino, để điều khiển hoạt động và thu thập dữ
liệu. Chúng em sẽ tìm hiểu về các giao thức truyền thông, như Wi-Fi hoặc Bluetoot, để
kết nối module với Internet và gửi dữ liệu lên nền tảng đám mây.
Thông qua đề tài này, nhóm nghiên cứu chúng em hy vọng có thể đóng góp vào
việc phát triển các thiết bị đo môi trường thông minh và kết nối mạng. Việc thu thập và
phân tích dữ liệu môi trường từ xa sẽ mang lại nhiều lợi ích, từ việc quản lý và bảo vệ
môi trường đến ứng dụng trong các lĩnh vực như nông nghiệp, quản lý đô thị và y tế.
Tuy nhiên, chúng em nhận thức rằng đề tài này có những hạn chế và thách thức.
Sự đa dạng của môi trường và yêu cầu đa dạng của người dùng đòi hỏi sự linh hoạt và
đa năng của module. Chúng em rất mong nhận được sự hỗ trợ, đóng góp và góp ý từ các
thầy/cô giảng viên để hoàn thiện và nâng cao chất lượng của đề tài này. Chúng em cũng
xin chân thành cảm ơn thầy giáo Ths. Trịnh Tuấn Dương đã giúp đỡ chúng rất nhiều
trong quá trình tìm hiểu, thiết kế và hoàn thành đề tài nghiên cứu này.
6
CHƯƠNG 1: TỔNG QUAN
8
Gửi dữ liệu lên Internet: Xây dựng phần mềm hoặc ứng dụng để gửi dữ liệu đo
được từ module lên một máy chủ trên Internet và hiển thị dữ liệu môi trường một cách
trực quan và dễ sử dụng.
Tìm hiểu về công nghệ in 3D: Sử dụng công nghệ in 3D để tạo ra vỏ bảo vệ và
thiết kế ngoại hình cho module đo. Áp dụng kỹ thuật thiết kế 3D và sử dụng máy in 3D
để tạo ra các bộ phận cần thiết cho module. Đánh giá tính khả thi và hiệu quả của việc
sử dụng in 3D trong quá trình sản xuất module đo.
Đánh giá và kết luận: Đánh giá hiệu quả và tính ứng dụng của module trong việc giám
sát môi trường và rút ra kết luận về hiệu quả và tiềm năng của sản phẩm.
9
CHƯƠNG 2 THIẾT KẾ CHẾ TẠO MẠCH PHẦN CỨNG
10
2.1.1 Arduino UNO R3
11
các mạch Arduino tương thích. Hầu hết các mạch gồm bộ điều chỉnh tuyến tính 5V và
một thạch anh dao động 16MHz (Hoặc bộ cộng hưởng ceramic trong một vài biến thể).
Một vi điều khiển Arduino cũng có thể được lập trình sẵn với một boot loader cho phép
đơn giản là upload chương trình vào bộ nhớ flash on-chip. So với các thiết bị khác
thường phải cần một bộ nạp bển ngoài. Diều này giúp cho việc sử dụng Arduno được
trực tiếp hơn bằng cách cho phép sử dụng 1 máy tính gốc như là một bộ nạp chương
trình.
Board Arduino sẽ đưa hầu hết các chân I/O của vi điều khiển để sử dụng cho những
mạch ngoài, Diecimila, Duemilano, và bây giờ là Uno đưa ra 14 chân I/O kỹ thuật số, 6
trong số đó có thể tạo xung PWM (điều chế độ rộng xung) và 6 chân inpu annalog, có
thể sử dụng như là 6 chân I/O số. Một vài trong số đơ có chức năng tương đương với
Arduino và có thể sử dụng để thay thế qua lại. Nhiều mở rộng cho Arduno được thực
hiện bằng bằng cách thêm vào các drive đầu ra, thường sử dụng trong trường học dể đơn
giản hóa các cấu trúc của các “con rệp” và các robot nhỏ. Những board khác thường
tương đương về điện nhưng có các thay đổi về hình dạng đôi khi còn duy trì độ tương
thích với shield, đôi khi không, Vài biến thể sử dụng bộ vi xử lý haofnt oàn khác biệt,
với các mức độ tương thích khác nhau.
Các chức năng của chân cắm trong Arduino:
Nguồn (Giắc cắm USB / Thùng) : Mỗi bảng Arduino cần một cách để được kết nối
với nguồn điện. Arduino UNO có thể được cấp nguồn từ cáp USB đến từ máy tính hoặc
nguồn điện trên tường được kết thúc trong giắc cắm thùng. Trong hình trên, kết nối USB
được dán nhãn (1) và giắc cắm thùng được dán nhãn (2).
Kết nối USB cũng là cách sẽ tải mã lên bo mạch Arduino của mình. Điện áp được
đề nghị cho hầu hết các mô hình Arduino là từ 6 đến 12 Volts.
Chân (5V, 3.3V, GND, Analog, Kỹ thuật số, PWM, ISF) : Các chân trên Arduino
của bạn là nơi kết nối dậy để xây dựng mạch (có thể kết hợp với bảng mạch và một số
dây. Arduino UNO thường có 'đầu bằng nhựa màu đen cho phép cắm dây ngay vào
bảng, có một số loại chân khác nhau, mỗi loại được dán nhãn trên bảng và được sử dụng
cho các chức năng khác nhau.
GND (3): Viết tắt của ‘Ground. Có một số chân GND trên Arduino, bất kỳ trong số
đó có thể được sử dụng để nối đất mạch của bạn.
12
5V (4) & 3.3V (5): chân 5V cung cấp năng lượng 5 volt và chân 3,3V cung cấp 3,3
volt. Hầu hết các thành phần đơn giản được sử dụng với Arduino đều hoạt động tốt ở
mức 5 hoặc 3,3 volt.
Tương tự (6): Khu vực của các chân dưới nhãn ‘Tương tự In (A0 đến 45 trên UNO)
là các chân Tương tự. Các chân này có thể đọc tín hiệu từ một cảm biến tương tự (như
cảm biến nhiệt độ) và chuyển đổi thành một giá trị kỹ thuật số mà chúng ta có thể đọc
được.Kỹ thuật số (7): Trên khắp các chân tương tự là các chân kỹ thuật số (0 đến 13 trên
UNO). Các chân này có thể được sử dụng cho cả đầu vào kỹ thuật số (như cho biết nếu
nhấn nút) và đầu ra kỹ thuật số (như cấp nguồn cho đèn LED).
PWM (8): Bạn có thể đã nhận thấy dấu ngã (-) bên cạnh một số chân kỹ thuật số (3,
5, 6, 9, 10 và 11 trên UNO). Các chân này hoạt động như các chân kỹ thuật số thông
thường, nhưng cũng có thể được sử dụng cho một thứ gọi là điều chế độ rộng xung
(PWM).
DIỆN TÍCH (9): Viết tắt của Tham chiếu Tương tự được sử dụng để đặt điện áp
tham chiếu ngoài (trong khoảng từ 0 đến 5 Volts) làm giới hạn trên cho các chân đầu
vào tương tự.
Nút reset : Giống như Nintendo gốc, Arduino có nút đặt lại (10). Nhấn nó sẽ tạm
thời kết nối pin reset xuống đất và khởi động lại bất kỳ mã nào được tải trên Arduino.
Điều này có thể rất hữu ích nếu mã không lặp lại.
Đèn LED chỉ báo nguồn: Ngay bên dưới và bên phải của chữ UN UNO trên bảng
mạch, có một đèn LED nhỏ bên cạnh chữ (11). Đèn LED này sẽ sáng lên bất cứ khi nào
cắm Arduino vào nguồn điện. Nếu đèn này không bật, thì có một cơ hội tốt có gì đó
không ổn. Thời gian để kiểm tra lại mạch.
Đèn LED TX : TX là ngắn để truyền, RX là ngắn để nhận. Những dấu hiệu này xuất
hiện khá nhiều trong thiết bị điện tử để chỉ ra các chân chịu trách nhiệm truyền thông
nối tiếp. Trong trường hợp này, có hai vị trí trên Arduino UNO nơi TX và RX xuất hiện
- một lần bởi các chân kỹ thuật số 0 và 1, và lần thứ hai bên cạnh đèn LED chỉ báo TX
và RX (12). Các đèn LED này sẽ cung cấp một số chỉ dẫn trực quan đẹp bất cứ khi nào
Arduino nhận hoặc truyền dữ liệu.
IC chính : cục màu đen với tất cả các chân kim loại là IC, hoặc mạch tích hợp (13)
nó như bộ não của Arduino. IC chính trên Arduino hơi khác biệt so với loại bo mạch,
13
loại bo mạch chủ. Điều này có thể quan trọng, vì có thể cần biết loại IC trước khi tải lên
một chương trình mới từ phần mềm Arduino.
Điều chỉnh điện áp : Bộ điều chỉnh điện áp (14) không thực sự là loại có thể (hoặc
nên) tương tác với Arduino. Bộ điều chỉnh điện áp thực hiện kiểm soát lượng điện áp
được đưa vào bảng Arduino.
2.1.2 Phần mềm để lập trình cho Arduino:
Arduino IDE là phần mềm dùng để lập trình cho Arduino. Môi trường lập trình
Arduino IDE có thể chạy trên ba nền tảng phổ biến nhất hiện nay là Windows, Macintosh
OSX và Linux. Do có tính chất nguồn mở nên môi trường lập trình này hoàn toàn miễn
phí và có thể mở rộng thêm bởi người dùng có kinh nghiệm. Ngôn ngữ lập trình có thể
được mở rộng thông qua các thư viện C++. Và do ngôn ngữ lập trình này dựa trên nền
tảng ngôn ngữ C của AVR nên người dùng hoàn toàn có thể nhúng thêm code viết bằng
AVR vào chương trình nếu muốn.
Khi các chúng ta bắt điện bằng mạch Arduino, reset hay nạp chương trình mới,
hàm setup() sẽ được gọi đến đầu tiên. Sau khi xử lý xong hàm setup(). Arduino sẽ nhảy
đến hàm loop() và lặp vô hạn hàm này cho đến khi tắt điện board mạch Arduino. Chu
trình đó có thể mô tả trong hình dưới đây:
Arduino IDE sử dụng GNU toolchain và AVR libe để biên dịch chương trình và
sử dụng avrdude để tải lên các chương trình vào board mạch chủ. Do nền tăng Arduino
sử dụng vi điều khiển Atmel, môi trường phát triển của Atmel, AVR Studio hoặc Atmel
Studio mới hơn, cũng có thể được sử dụng để phát triển phan mềm cho các Arduino.
Arduino IDE là nơi để soạn thảo code, kiểm tra lỗi và upload code cho Arduino.
Lưu ý: Khi lập trình code cho để tài ta cần phải thêm thư viên cho bộ truyền phát HC-
05 và cảm biến độ ẩm DHT21 (Định kèm cùng file)
2.1.2.1 Lý thuyết code dùng trong lập trình arduino:
Cấu trúc:
14
1. Lệnh setup() và loop():
Những lệnh trong setup() sẽ được chạy khi chương trình của bạn khởi động. Có
thể sử dụng nó để khai báo giá trị của biển, khai báo thư viện, thiết lập các thông số,...
Sau khi setup() chạy xong, những lệnh trong loop() được chạy. Chúng sẽ lặp đi lặp lại
liên tục cho tới khi nào ngắt nguồn của board Arduino mới thôi.
Bất cứ khi nào bạn nhất nút Reset, chương trình của bạn sẽ trở về lại trạng thái
như khi Arduino mới được cấp nguồn.
Arduino được Setup() {//Lệnh Loop() {//Lệnh
cấp nguồn của bạn} của bạn}
2. Câu lệnh if
If([Biểu thức1][toán tử so sánh][Biểu thức 2] { //biểu thức điều kiện [câu lệnh 1]
} else {
[câu lệnh 2]
}
Nếu biểu thức điều kiện trả về giá trị TRUE, [câu lệnh 1] sẽ được thực hiện, ngược lại,
[câu lện 2] sẽ được thực hiện.
3. Switch/ Case:
Giống như if, switch/case cụng là một dạng lệnh nếu thì, nhưng được thiết kế chuyên
biệt để xử lý giá trị trên một biến chuyên biệt.
Ví dụ, có một biến là action sẽ nhận giá trị từ những module khác qua serial. Nhưng
action sẽ nằm trong một các giá trị nào đó thì lúc này nên sử dụng switch/case.
4. Lệnh for:
Hàm for có chức năng làm một vòng lặp. Hàm for lặp đi lặp lại một công việc có tính
chất chung nào đó. Chẳng hạn, khi bật tắt một con LED thì dùng digitalWrite xuất HIGH
deley rồi lại LOW rồi lại delay.
5. Lệnh While:
Vòng lặp while là một dạng vòng lặp theo điều kiện, không thể biết trước số lần lặp của
nó, nhưng có thể quản lý lúc nào thì nó ngừng lặp.
15
6. Lệnh return:
Return có nhiệm vụ trả về một giá trị (Cùng kiểu dữ liệu với hàm) được gọi.
7. cú pháp mở rộng:
“;” (dấu chấm phẩy) dùng để kết thúc dòng lệnh.
#define là một đối tượng của ngôn ngữ C/C++ cho phép đặt tên một hằng số nguyên hay
số thực.
#include: cho phép chương trình tải một thư viện đã được viết sẵn. Tức là có thể truy
xuất được những tài nguyên treong thư viện này từ chương trình của mình. Nếu có một
đoạn code và cần sử dụng nó trong nhiều chương trình, có thể dùng. #include dùng để
nạp đoạn code ấy vào chường trình, thay vì phải chép đi chép lại đoạn code đấy.
8. Toán tử số học:
=(Phép gán); + (phép cộng); - (phép trừ); * (Phép nhân); / (Phép chia); % (Phép chia
lấy số dư)
9. Toán tử so sánh:
== (So sánh bằng); != (Khác bằng); > (Lớn hơn); < (Bé hơn); >= (Lớn hơn hoặc bằng);
<= (Bé hơn hoặc bằng)
Giá trị:
1. Hằng số:
High: Trong lập trình trên Arduino, High là một hằng số có giá trị nguyên là 1. Trong
điện tử, High à một mức điện áp lớn hơn 0V. Giá trị của High được định nghĩa khác
nhau trong các mạch điện khác nhau, nhưng thường được quy. ước ở các mức như 1.8V,
2.7V, 3.3V 5V, 12V, ...
Low: Trong lập trình trên Arduino, LOW là một hằng số có giá trị nguyên là 0. Trong
điện tử, LOW là mức điện áp 0V hoặc gần bằng 0V, giá trị này được định nghĩa khác
nhau trong các mạch điện khác nhau, nhưng thường là 0V hoặc hơn một chút xíu.
Input, output,input_pullup
2. Kiểu dữ liệu:
Void là một từ khóa chỉ dùng trong việc khai báo một function. Những function
được khai báo với "void" sẽ không trả về bất kỳ dữ liệu nào khi được gọi.
Char: Kiểu dữ liệu này là kiểu dữ liệu biểu diễn cho 1 ký tự. Kiểu dữ liệu này
chiếm 1 byte bộ nhớ. Kiểu char chỉ nhận các giá trị trong bảng mã ASCII. Kiểu char
16
được lưu dưới dạng 1 số nguyên byte có số âm (có các giá trị từ -127 - 128), thay vì thiết
đặt một biến kiểu char có giá trị là 'A', bạn có thể đặt là 65.
Byte: Là một kiểu dữ liệu biểu diễn số nguyên nằm trong khoảng từ 0 đến 255.
Int: là kiểu số nguyên chính được dùng trong chương trình Arduino. Kiểu int
chiếm 2 byte bộ nhớ . Trên mạch Arduino Uno, int có đoạn giá trị từ -32,768 đến 32,767
(-215 đến 215-1) (16 bit).
Float: Để định nghĩa 1 kiểu số thực, bạn có thể sử dụng kiểu dữ liệu float. Một
biến dùng kiểu dữ liệu này có thể đặt một giá trị nằm trong khoảng 3.4028235E+38 đến
3.4028235E+38. Nó chiếm 4 byte bộ nhớ. Với kiểu dữ liệu float bạn có từ 6-7 chữ số
có nghĩa nằm ở bên mỗi bên dấu ".". Như vậy, có thể đặt một số thực dài đến 15 ký tự
(bao gồm dấu .).
Array: là mảng (tập hợp các giá trị có liên quan và được đánh dấu bằng những chỉ
số). Array được dùng trên Arduino chính là Array trong ngôn ngữ lập trình C.
3. Chuyển đổi kiểu dữ liệu:
Hàm char() có nhiệm vụ chuyển kiểu dữ liệu của một giá trị về kiểu char. Hàm byte()
có nhiệm vụ chuyển kiểu dữ liệu của một giá trị về kiểu byte.
Hàm int() có nhiệm vụ chuyển kiểu dữ liệu của một giá trị về kiểu int.
Hàm float() có nhiệm vụ chuyển kiểu dữ liệu của một giá trị về kiểu float.
Hàm:
1. Nhập xuất Digital (Digital I/O):
pinMode(): Cấu hình 1 pin quy định hoạt động như là một đầu vào (INPUT) hoặc
đầu ra (OUTPUT).
digitalWrite(): Xuất tín hiệu ra các chân digital, có 2 giá trị là HIGH hoặc là LOW.
Nếu một pin được thiết đặt là OUTPUT bởi pinMode(). Và khi dùng digitalWrite để
xuất tín hiệu thì điện thế tại chân này sẽ là 5V (hoặc là 3,3 V trên mạch 3,3 V) nếu được
xuất tín hiệu là HIGH, và OV nếu được xuất tín hiệu là LOW.
digitalRead(): Đọc tín hiệu điện từ một chân digital (được thiết đặt là INPUT). Trả
về 2 giá trị high hoặc low.
2. Nhập xuất Analog (Analog I/O):
analogReference(): có nhiệm vụ đặt lại mức (điện áp) tối đa khi đọc tín hiệu
analogRead.
17
analogRead(): là đọc giá trị điện áp từ một chân Analog (ADC). Trên mạch Arduino
UNO có 6 chân Analog In, được ký hiệu từ AO đến A5. Trên các mạch khác cũng có
những chân tương tự như vậy với tiền tố "A" đứng đầu, sau đó là số hiệu của chân.
analogWrite(): là lệnh xuất ra từ một chân trên mạch Arduino một mức tín hiệu analog
(phát xung PWM). Thường điều khiển mức sáng tối của đèn LED hay hướng quay của
động cơ servo bằng cách phát xung PWM.
2.1.3 Chọn loại thiết bị truyền phát không dây và cơ sở lý thuyết :
2.1.3.1 Module Bluetooth HC-05
Sau khi tìm hiểu và tham khảo chúng em quyết định chọn module Bluetooth HC-05 với
các ưu điểm sau :
- Module Bluetooth HC-05 là lựa chọn tối ưu cho nghiên cứu này vì:
- Giá thành rẻ hơn so với các Module khác, tốc độ hoạt động phù hợp với truyền dữ liệu
điều khiển thiết bị, dễ dàng mua ở thị trường Việt Nam, được nhiều người sử dụng và
đánh giá là rất ổn định.
- Module Bluetooth HC-05 cung cấp hai giao tiếp trong khoảng cách ngắn hơn với tốc
độ nhanh.
- Phạm vi giao tiếp lên đến 8-10m nhưng sẽ giảm xuống khi có vật cản.
- Có chân enale cho phép chuyển đổi giữa chế độ dòng lệnh và dữ liệu.
- Thiết bị sử dụng nguồn điện 5V
- Module có thể làm Master hoặc Slave
2.1.3.2 - Hỗ trợ nhiều tốc độ truyền ( 9600 19200 38400 115200 )
2.1.3.3 Sơ đồ chân của thiết bị truyền phát :
18
Chân VCC : Giống như mọi thiết bị khác, HC05 Modules cũng phụ thuộc vào
nguồn điện để hoạt động và chân VCC cấp nguồn điện từ bên ngoài.
Chân GND : Chân nối đất module.
Chân TX : Chân truyền dữ liệu giao thức UART
Chân RX : Chân nhận dữ liệu trong giao tiếp UART.
Chân State : Báo trạng thái kết nối của Bluetooth.
Chân Enable/key : Chân Enable / Key là chân thay đổi chế độ giữa chế độ dữ
liệu và chế độ dòng lệnh bằng cách cấp tín hiệu bên ngoài. Cấp logic cao sẽ chuyển sang
chế độ dòng lệnh và trạng thái logic thấp sẽ chuyển sang chế độ dữ liệu. Chế độ thiết bị
mặc định là chế độ dữ liệu.
Chân button : Các chế độ dữ liệu và lệnh có thể thay đổi thông qua một nút nhấn
có trên module.
Chân LED : Đèn LED hiển thị trạng thái của Module HC-05.2.2.3.3 Cách sử
dụng Bluetooth HC-05
- Module có hai chân giao tiếp dữ liệu nối tiếp, TX sẽ giao tiếp với RX của bộ điều
khiển và RX sẽ giao tiếp với TX của vi điều khiển.
- Dữ liệu sẽ được truyền với tốc độ truyền được xác định trong bộ vi điều khiển. Tốc
độ truyền 9600 là tốc độ dữ liệu mặc định nhưng nó cũng có thể thay đổi được.
- Có chân thứ ba (Key) dùng để chuyển đổi chế độ. Chế độ mặc định, khi không có tín
hiệu đầu vào được cấp vào chân Key, thiết bị sẽ hoạt động ở chế độ dữ liệu.
19
- Ở chế độ dữ liệu, sẽ chỉ có truyền dữ liệu từ thiết bị. Sau khi cấp tín hiệu đầu vào
logic vào chân này, thiết bị sẽ chuyển sang chế độ dòng lệnh.
Cách gửi dữ liệu :
1.Thiết lập kết nối Bluetooth: Kết nối thiết bị gốc (ví dụ: Arduino) với HC-05
bằng cách sử dụng chân TX (Transmit) của thiết bị gốc kết nối với chân RX (Receive)
của HC-05 và ngược lại.
2 . Cài đặt baud rate: Thiết lập baud rate (tốc độ truyền dữ liệu) cho HC-05 và
thiết bị gốc để đảm bảo hai thiết bị giao tiếp với cùng một tốc độ. Baud rate mặc định
của HC-05 thường là 9600.
3. Gửi dữ liệu: Sử dụng các hàm hoặc thư viện UART có sẵn trong ngôn ngữ lập
trình bạn đang sử dụng để gửi dữ liệu thông qua kết nối Bluetooth.
2.1.4 Cơ sở lý thuyết chung về cảm biến nhiệt độ , độ ẩm , tia UV :
Khái quát chung về cảm biến :
Cảm biến là thiết bị điệu tử cảm nhận những trạng thái hay quá trình vật lý hay
hoá học ở môi trường cần khảo sát , và biến đổi thành tín hiệu điện để thi thập thông tin
về tình trạng hay quá trình đó .
Thông tin được xử lý để rút ra tham số định tính hoặc định lượng của môi trường
, phục vụ các nhu cầu nghiên cứu khoa học ký thuật hay dân sinh và gọi ngắn gọn là do
đạc , phục vị trong truyền và xử lý thông tin hay trong các điều khiển các quá trình khác
.
Cảm biến có 2 loại chính :
- Cảm biến vật lý : Sóng điện tử , ánh sáng , tử ngoại , hồng ngoại , tia X , tia
gamma , hạt bức xạ , nhiệt độ , áp suất , âm thanh , rung động , khoảng cách ,
chuyển động ,….
- Cảm biến hoá học : độ ẩm , độ PH , khói ,….
- Phân loại theo nguyên lý hoạt động :
- Cảm biến điện trơ : hoạt động dự theo di chuyển con chạy hoặc góc quay của
biến trở , hoặc sự thay đổi điện trở do co giãn vật dẫn .
- Cảm biến điện dung : Sự thay đổi điện dung của cảm biến khi khoảng cách hay
góc đến vật thể kim loại thay đổi .
- Cảm biến từ trường : Cảm biến hiệu ứng Hall , cảm biến từ trường dùng vật liệu
sắt từ ,… dùng trog từ kế .
20
- Cảm biến nhiệt độ : cặp lưỡng cực hoặc dạng linh kiện bán dẫn ,…
Cảm biến nhiệt độ , độ ẩm :
Cảm biến nhiệt độ là 1 cặp nhiệt điện , 1 thiết bị điện gòm 2 dây dẫn điểm không
giống nhau tạo thành các mối nối ở các nhiệt độ khác khau , hoặc 1 máy dò nhiệt độ
kháng ( RTD) do nhiệt từ 1 nguồn cụ thể và biến đổi thông tin thu thấp được thành 1
dàn có cấu trúc, Cảm biến nhiệt độ thường được dùng trong hệ thống HV và hệ thống
điều khiển môi trường AC , trang bị y tế, cảm biến xử lý thực phẩm , xử lý hoá chất , hệ
thống điều khiển oto.
Hình ảnh các loại cảm biến :
Cảm biến đo cường độ tia UV :
Cảm biến tia UV một thiết bị hoặc một hệ thống được sử dụng để đo lường và
phát hiện mức độ tia tử ngoại (UV) trong môi trường xung quanh. Tia tử ngoại là một
phần của quang phổ từ mặt trời và các nguồn ánh sáng khác có bước sóng ngắn hơn ánh
sáng có thể nhìn thấy bằng mắt thường. Cảm biến UV đóng vai trò quan trọng trong việc
giám sát và bảo vệ sức khỏe của con người, đặc biệt là trong việc phát hiện và ngăn chặn
tác động tiêu cực của tia tử ngoại lên da và mắt.
2.1.4.1 Lựa chọn cảm biến
*Cảm biến nhiệt độ độ ẩm :Dựa trên các tài liệu , dữ kiện của các đề tài nghiên
cứu , Các ưu nhược điểm trình bày ở trên . Em quyết định chọn loại DHT21.
DHT 21 có những ưu điểm sau : Cảm biến độ ẩm, nhiệt độ DHT21 AM2301
Temperature Humidity Sensor được sử dụng để đo độ ẩm và nhiệt độ của không khí,
cảm biến có độ bền và độ ổn định cao, sử dụng giao tiếp 1-wire giao tiếp với Vi điều
21
khiển dễ dàng chỉ với 1 dây tín hiệu duy nhất, thích hợp với các ứng dụng cần đo độ ẩm,
nhiệt độ trong nông nghiệp, nhà thông minh,...
Cấu tạo của DHT 21:
22
Hình 6: Cảm biến tia UV ML8511
1. Đầu dò UV: Đầu dò UV của ML8511 có khả năng thu nhận tia UV từ môi trường. Nó
bao gồm một bề mặt phản xạ và các thành phần quang học như ống kính và bộ lọc để
tập trung vào tia UV.
2. Bộ chuyển đổi: Tín hiệu tia UV thu thập được từ đầu dò được chuyển đổi thành tín
hiệu điện tương ứng. Bộ chuyển đổi chủ yếu gồm các linh kiện điện tử như biến trở, tụ
điện và linh kiện bảo vệ.
3. Bộ xử lý: ML8511 có một bộ xử lý tích hợp để xử lý tín hiệu điện từ bộ chuyển đổi.
Bộ xử lý có nhiệm vụ calibra tín hiệu đo và chuyển đổi nó thành đơn vị đo mức độ tia
UV.
4. Giao diện: Cảm biến ML8511 có các chân giao tiếp để kết nối với vi điều khiển hoặc
hệ thống khác. Thông qua giao diện này, dữ liệu đo lường có thể được truyền và sử dụng
để hiển thị hoặc xử lý.
→Với cấu trúc đơn giản như vậy, ML8511 có thể dễ dàng tích hợp vào các ứng dụng đo
lường mức độ tia UV trong thực tế.
2.1.5 Phần mềm mô phỏng , thiết kế mạch Proteus:
2.1.5.1 Phần mềm Proreus:
Phần mềm Proteus là phần mềm cho phép mô phỏng hoạt động của mạch điện tử
bao gồm phần thiết kế mạch và vvieest chương trình điều khiển cho các họ vì
điều khiển như MCS-51 , PIC, AVR, ARDUINO ,…
23
Hình 7: Phần mềm Proteus
Phần mềm bao gồm 2 chương trình : ISIS cho phép mô phỏng mạch và ARES
dung để vẽ mạch in . Proteus là công cụ mô phỏng cho các loại Vi điều khiển khá tốt ,
nó hỗ trợ các dòng 8051, AVR ,PIC ,…các giao tiếp I2C , SPI , CAN ,USB ,.. ngoài ra
còn mô phỏng các mạch số , mạch tương tự một cách hiệu quả .
Proteus là công cụ chuyên về mô phỏng mạch điện tử .
Các tính năng của Proteus:
Có cơ sở dữ liệu 32 bit cho phép độ chính xác đến 10mm , độ phân giải góc 0,10
và kích thước board lớn nhất là -10m . ARES hỗ trợ mạch in 16 lớp. Làm việc thông qua
các menu ngữ cảnh tiện lợi.
File netlist từ phần mềm vẽ mạch nguyên lý ISIS . Tự động cập nhật ngược chỉ
số linh kiện , sự thay đổi chân , đổi cổng ở mạch in sang mạch nguyên lý . Công
cụ kiểm tra lỗi thiết kế.
Thư viện đầy đủ từ lỗ khoan mạch đến linh kiện dán.
Trước khi muốn thực hiện mô phỏng cho mạch , bắt buộc cần phải them thư viện
Arduino.
2.1.5.2 Hình ảnh thể hiện tính năng của Proteus trong thư viện thiết kế mạch:
Dưới đây là hình ảnh mô phỏng Proteus cho mạch Arduino xuất ra màn hình LCD
mà đã được hoàn thành .
Ảnh mô phỏng trên Proteus :
24
Hình 8: hình ảnh mô phỏng Proteus cho mạch Arduino xuất ra màn hình LCD
2.1.5.3 Tiến hành mô phỏng thiết kế mạch đo nhiệt độ truyền phát không dây
Mô phỏng thiết kế mạch sẽ như hình , nguyên lý hoạt động Arduino nhận nhiệt
độ, độ ẩm, tia UV và xuất ra màn hình LCD.
Sau khi thiết kế mô phỏng và nhập code vào Arduino. Màn hình LCD sẽ hiển thị
nhiệt độ đúng như ý muốn.
25
Nguyên lý hoạt động : Arduino sẽ nhận biết tín hiệu từ cảm biến nhiệt độ , độ ẩm
, cường độ tia UV. Bằng cách gửi tín hiệu đổ xuất lên Arduino sẽ hiển thị thông số nhiệt
độ, độ ẩm, cường độ tia UV.
2.2 Sơ đồ khối hệ thống ,thiết kế mạch nguyên lí.
2.2.1 Sơ đồ khối:
26
2.2.1 Chuẩn bị các thiết bị cần thiết để lắp mạch phát cảm biến nhiệt độ, độ ẩm
và cường độ tia uv.
2 Bảng board
3 Dây cắm
27
6 Cảm biến tia uv
Do trên phần mềm Proteus không có con cảm biến nhiệt độ, độ ẩm HDT21 nên ta thay
thế bằng con cảm biến nhiệt độ và độ ẩm DHT 11. Trong thư viện Protues không có con
cảm biến tia uv ML8511 nên phải vẽ mô hình để mô phỏng, hiển thị lên màn hình LCD
và truyền tín hiệu thông qua bluetoth lên app. Do chân cắm của Arduino không đáp ứng
được nhiều con cảm biến, modul cùng lúc nên ta cắm chân vcc 5V, 3.3V và GND của
Arduino vào board mạch để dễ dàng kết nối.
28
Hình 11: Mạch phát đo nhiệt độ, độ ẩm, uv hiển thị lên LCD, truyền dữ liệu lên app.
STT Chân cắm của LCD Chân cắm của modul I2C
1 VSS 1
2 VDD 2
3 VEE 3
4 RS 4
5 RW 5
6 E 6
7 D0 7
8 D1 8
9 D2 9
10 D3 10
11 D4 11
12 D5 12
13 D6 13
14 D7 14
15 A 15
16 K 16
29
Sơ đồ nguyên lí:
Hình 12: Hình ảnh lắp đặt modul chuyển đổi I2C vào màn hình LCD.
2.2.3.2 Tiến hành cắm các chân của modul chuyển đổi I2C.
30
Bảng 3: Bảng nguyên lí cắm chân từ modul chuyển đổi tới Arduino Uno.
STT Chân cắm của modul Chân cắm vào Arduino UNO
chuyển đổi I2C
1 GND GND của board mạch
2 VCC Nguồn 5V của board mạch
3 SDA A4
4 SCL A5
Sơ đồ nguyên lí:
Hình 14: Lắp đặt màn hình led LCD thông qua bộ chuyển đổi vào Arduino
2.2.3.3 tiến hành cắm các chân của cảm biến nhiệt độ, độ ẩm DHT21.
Bảng 4: Bảng nguyên lí cắm chân từ cảm biến về uno
STT Chân cắm của cảm biến Chân cắm của Arduino
nhiệt độ độ ẩm
1 VDD Nguồn 5V của board mạch
Chân GND của board
2 GND
mạch
Chân 6 Digital của
3 Data
Arduino UNO
31
Sơ đồ nguyên lí :
2.2.3.4 Tiến hành cắm các chân của cảm biến tia UV ML8511.
Bảng 5: Bảng nguyên lí cắm cảm biến tia UV ML8511 vào Arduino.
STT Chân cắm của cảm biến tia Chân cắm của Arduino
UV ML8511
Nối vào chân A1 và nguồn
1 EN
3.3 V của board mạch
2 OUT Chân A0 của Arduino
Nối vào chân GND của
3 GND
board mạch
Nối vào chân nguồn 3.3 V
4 3V3
của board mạch
Sơ đồ nguyên lí
32
2.2.3.5 Lắp đặt modul truyền phát Bluetooth HC 05.
Bảng 6: Bảng nguyên lí cắm modul truyền phát Bluetooth HC 05 vào Arduino.
Sơ đồ nguyên lí:
Hình 17: lắp đặt modul truyền phát tín hiệu bluetooth HC 05
2.2.4 Tiến hành hoàn thiện bo mạch phát và nạp code cho mạch.
Sau khi hoàn thiện các bước lắp đặt modul chuyển đổi I2C, màn hình led LCD, cảm
biến nhiệt độ và độ ẩm DHT 21, cảm biến cường độ tia UV ML8511 và modul truyền
phát tín hiệu bluetooth HC 05 thì ta sẽ được một bo mạch hoàn chỉnh:
33
Nguyên lí hoạt động:
Arduino nhận tín hiệu từ cảm biến, nhận biết nhiệt độ, độ ẩm và cưởng độ tia UV. Sau
đó hiển thị dữ liệu lên màn hình led LCD và phát tín hiệu để truyền dũ liệu đến mạch
thu.
Hình 19: Mạch phát nhiệt độ, độ ẩm và cường độ tia UV sau khi nhập code
36
2.2.5 Nguyên lí của mạch và giải thích code
Cách thức nhận tín hiệu của thiết bị cảm biến nhiệt độ, độ ẩm
Khi DHT phát hiện tín hiệu bắt đầu, nó sẽ gửi tín hiệu phản hồi ở mức điện áp
thấp, tín hiệu này kéo dài 80us. Sau đó chương trình của DHT thiết lập dữ liệu cấp điện
áp 1 bus từ thấp đến cao và giũ nó cho 80us để chuẩn bị cho DHT gửi dữ liệu. Khi Data
Single-Bus ở mức điện áp thấp, điều này có nghĩa DHT gửi phản hồi tín hiệu. Khi DHT
gửi tín hiệu phản hồi nó sẽ tăng điện áp và giữ nó trong 80us và chuẩn bị truyền dữ liệu.
Khi DHT gửi dữ liệu tới MCU, mọi bit dữ liệu bắt đầu với mức điện áp thấp 50us và độ
dài của tín hiệu của mức điện áp cao sau đây xác định xem bit dữ liệu là “0” hay “1”.
Như vậy, DHT gửi và nhận dữ liệu với một dây tín hiệu Data, với chuẩn dữ liệu
truyền 1 dây này, chúng ta phải đảm bảo sao ở chế độ chờ dây Data có giá trị ở mức cao,
nên trong mạch sử dụng DHT 21, day Data phải được mắc với một trở kéo bên ngoài
(thông thường giá trị là 4.7kΩ). Trích dẫn code:
Serial.print(" DO AM:");
Serial.print( humi );
Serial.println(" %" ); Serial.print(" NHIET DO C:");
Serial.print(tempC);
Serial.println(" oC ");
Dữ liệu truyền về DHT 21 gồm 40 bit dư liệu theo thứ tự: 8 bit biểu thị phần
nguyên của nhiệt độ,8 bit biểu thị phần thập phân của nhiệt độ, 8 bit biểu thị phần nguyên
của độ ẩm, 8 bit biểu thị phần thập phân của độ ẩm, 8bit còn lại check sum.
MCU thiết lập chân Data là output, kéo chân Data xuống 0 trong khoảng thời gian
>18ms. Khi đó DHT 21 sẽ hiểu MCU muốn đo nhiệt độ và độ ẩm.
B1: MCU đưa chân Data lên 1, sau đó thiết lập lại là chân đầu vào.
B2: sau khoảng 20-40 us, DHT21 sẽ kéo chân Data xuống thấp. Nếu >40 us mà
chân Data chưa được kéo xuống thấp nghĩa là giao tiếp được với DHT21.
B3: chân Data ở mức thấp <80us sau đó được DHT21 kéo lên 80us. Bằng việc
giám sát chân Data, MCU có thể biết được có thể giao tiếp với DHT21 được hay không.
Khi tín hiệu đo được DHT21 lên cao, khi đó hoàn thiện quá trình giao tiế giữa DHT21
với MCU.
Cách thức hoạt động của modul cảm biến tia UV ML8511.
37
Modul cảm biến tia UV ML8511 là cảm biến tia cực tím dễ sử dụng, hoạt động
bằng cách phát tín hiệu tương tự liên quan đến lượng ánh sáng UV được phát hiện. Cảm
biến này phát hiện ánh sáng từ 280 - 390nm.
Khu vực nhạy cảm là một phần của phổ UVB (tia cháy) và hầu hết phổ UVA (tia
rám nắng). Nó tạo ra một điện áp tương tự có liên quan tuyến tính với cường độ tia cực
tím đo được (mW / cm2). Thông qua vi điều khiển, có thể thực hiện chuyển đổi tín hiệu
tương tự sang tín hiệu số thì bạn có thể phát hiện mức độ UV.
Khi cấp điện hệ thống hoạt động, vi điều khiển hiển thị thông tin ban đầu. Lúc
này vi điều khiển chờ tín hiệu từ mạch đọc cảm biến đo tia uv ml8511 trong môi trường
trả về tín hiệu analog dùng để đo cường độ tia uv trong ánh nắng hoặc trong đèn tia cực
tím và kiểm tra mức tín hiệu, Khi nhận tín hiệu vi điều khiển tính toán, xử lý dữ liệu và
xuất tín hiệu giá trị thực tế.
Trích dẫn code:
// UV
light.enable();
float UV = light.getUV();
light.disable();
Serial.print( " CHI SO UV : ");
Serial.print(UV, 4);
Serial.println(" mW cm^2");
delay(1000);
Cách thức hoạt động của modul truyền phát tín hiệu bluetooth HC 05
Ở chế độ mặc định, HC-05 BT sẽ hoạt động như Slave. Bằng cách sử dụng mật
khẩu mặc định, thiết bị sẽ được kết nối.
Mật khẩu mặc định: 1234 hoặc 0000
Để sử dụng module như một Master, module phải ở chế độ dòng lệnh. Chế độ
master không phổ biến cho các module Bluetooth.
Chân key có thể giúp chuyển đổi các chế độ có thể điều khiển thông qua tín hiệu
digital nhưng module có sẵn một nút nhấn có thể sử dụng để chuyển đổi các chế độ.
Chức năng báo trạng thái:
Chân Đèn LED báo trạng thái cho người dùng và chân state báo tín hiệu trạng
thái cho bộ vi điều khiển. Chân sate sẽ ở mức logic cao trong trường hợp có kết nối để
38
thông báo cho bộ vi điều khiển thực hiện các lệnh khác. Đèn LED sẽ có các chức năng
khác nhau:
• Nếu nó tiếp tục nhấp nháy thì module đang đợi kết nối.
• Nhấp nháy một lần trong 2 giây sẽ cho biết rằng module đã chuyển sang chế
độ dòng lệnh.
Nhấp nháy hai lần trong một giây sẽ cho biết module đã chuyển sang chế độ dữ liệu.
Trích dẫn code:
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(2, INPUT);}
void loop() {
if (Serial.available() > 0 ) {
int data = Serial.read();
Serial.println("INCOMING DATA:");
Serial.print(data);}
// put your main code here, to run repeatedly:}
Giải thích code:
Code kiểm tra dữ liệu từ giao thức nối tiếp và in dữ liệu ra màn hình Arduino
COM.Sau khi giao tiếp với bo mạch HC-05, cần phải bật nguồn, sau đó kết nối với
module Bluetooth khác trên điện thoại di động hoặc máy tính xách tay. Trong quá trình
sử dụng kết nối, hãy nhập mật khẩu 1234 hoặc 0000.Sau đó, gửi bất kỳ dữ liệu văn bản
nào qua điện thoại di động. Để gửi dữ liệu, có rất nhiều ứng dụng di động. Trong trường
hợp gửi tệp phương tiện, có thể xảy ra lỗi do HC05 không hỗ trợ nó.
Như vậy, module sẽ hoạt động như một slave nhưng bằng cách sử dụng code sau,
nó có thể được chuyển đổi thành Master. Điều duy nhất chúng ta sẽ cần thay đổi là tốc
độ truyền, sử dụng lệnh sau:
void setup() {// put your setup code here, to run once:Serial.begin(38400); // just
change the baud rate from 9600 to 38400pinMode(2, INPUT);}Trong trường hợp thiết
bị là master, đầu kia phải có cùng tốc độ truyền để giao tiếp với nhau. Nó chỉ có thể
kết nối với một thiết bị duy nhất tại một thời điểm và nếu không có sự cho phép của
thiết bị, nó sẽ không thay đổi module master.Module hiệu quả hơn trong liên lạc giao
39
tiếp trong khoảng cách ngắn sau khi phát minh ra các phương pháp mới. Nó hoạt động
đảm bảo an toàn với tốc độ nhanh.
2.3 Tiến hành hoàn thiện bo mạch phát và tiến hành nạp code cho mạch:
Sau khi hoàn thiệt kết nối modul chuyển đổi I2C vớiLCD, modul thu phát bluetooth và
lắp cảm biến nhiệt độ, độ ẩm DHT 21 cùng với cảm biến cường độ tia UV ML8511 vào
Arduini UNO ta thu được mạch hoàn chỉnh:
Nguyên lí hoạt động : Arduino nhận dữ liệu từ modul truyền phát bluetooth HC05
xong sau đó hiển thị ra màn hình LCD.
Tiến hành nạp code cho mạch:
#include "DHT.h"
#define DHT21Pin 6
#define DHTType DHT21
#include <Arduino.h>
#include <ML8511.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#define ANALOGPIN A0
#define ENABLEPIN A1
ML8511 light(ANALOGPIN, ENABLEPIN); DHT dht(DHT21Pin,DHTType);
float humi ;
float tempC;
SoftwareSerial BTserial(10, 11); // RX | TX void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
BTserial.begin(9600);
dht.begin(); //Khởi động cảm biến lcd.init(); //Khởi động LCD
lcd.backlight(); //Mở đèn
lcd.setCursor(0,0);
lcd.print("UV:");
lcd.setCursor(0,1);
40
lcd.print("C|H:");
}
void loop() {
// put your main code here, to run repeatedly:
delay(1000);
humi = dht.readHumidity();
tempC = dht.readTemperature();
Serial.print(" DO AM:");
Serial.print( humi );
Serial.println(" %" ); Serial.print(" NHIET DO C:");
Serial.print(tempC);
Serial.println(" oC "); // UV
light.enable();
float UV = light.getUV();
light.disable();
Serial.print( " CHI SO UV : ");
Serial.print(UV, 4);
Serial.println(" mW cm^2");
delay(1000);
// LCD
// Kiểm tra cảm biến có hoạt động hay không
if (isnan(tempC) || isnan(humi) || isnan(UV))
{
Serial.println("Không có giá trị trả về từ cảm biến");
return;
} lcd.setCursor(4,0); //con trỏ vị trí số 7, hiện ô số 8
lcd.print(UV, 4);
lcd.setCursor(9,0); //Con trở ở vị trí 12, hiện ô 13
lcd.print("mW|cm^2");lcd.setCursor(4,1);
lcd.println(tempC);
lcd.setCursor(8,1);
lcd.print("C");
41
lcd.setCursor(9,1);
lcd.print("|");
lcd.setCursor(10,1);
lcd.print(humi);
lcd.setCursor(14,1);
lcd.print("%");
String data = String(tempC) + "," + String(UV) + "," + String(humi) ;// Tạo chuỗi dữ
liệu gồm nhiệt độ, độ ẩm và chỉ số UV
BTserial.println(data); // Gửi chuỗi dữ liệu đến MIT App Inventor qua Bluetooth
delay(5000);
Serial.println(data);
}
2.4 Tiến hành kiểm tra, khảo sát mạch phát và thu.
2.4.1 Kiểm tra khảo sát mạch ở điều kiện trong phòng:
Hình 20: Nghiệm thu nhiệt độ so sánh độ chênh lệch so với thực tế trong phòng
[ Time: 19:50 date: 29/05/2023 ]
42
Hình 21: Nghiệm thu kiểm tra nhiệt độ so sánh độ chênh lệch so với thực tế
43
CHƯƠNG 3 THIẾT KẾ CHẾ TẠO VỎ CHO MÔ HÌNH .
Để thiết kế 1 sản phẩm (part ) ta thực thiện các bước cơ bản sau :
45
3.2.2.2 Thực hiện tạo hình 3D cho chi tiết
Sau khi có được bản vẽ 2D , ta thực hiện tạo khối 3D cho bản vẽ :
46
Hình 24: Nắp pin
Hình 23: Nắp hộp
-
Hình 25: Vị trí lắp Arduino
47
Hình 27: Vị trí lắp cảm biến UV
48
chỉnh sửa các thiết lập in như kích thước, tỷ lệ, độ phân giải, hướng in, và kiểu
vật liệu. Gửi tệp in 3D đến máy in: Kết nối máy tính của bạn với máy in 3D thông
qua cáp USB hoặc qua mạng (nếu máy in 3D hỗ trợ).
3. Trong phần mềm điều khiển máy in 3D, sau khi bạn đã hoàn thành các
thiết lập, gửi tệp in 3D đến máy in để bắt đầu quá trình in.
4. Theo dõi và hoàn thành in 3D:
Máy in 3D sẽ bắt đầu xây dựng mô hình từ các lớp vật liệu liên tiếp. Theo
dõi quá trình in để đảm bảo rằng nó diễn ra một cách bình thường và không có
vấn đề gì xảy ra.
Khi in hoàn thành, lấy mô hình in 3D ra khỏi máy in và làm sạch (nếu cần
thiết).
49
CHƯƠNG 4 APP INVENTOR
Nền tảng App Inventor được đưa ra thông qua yêu cầu vào ngày 12 tháng 7 năm 2010
và được phát hành công khai vào ngày 15 tháng 12 năm 2010. Nhóm App Inventor được
dẫn dắt bởi Hal Abelson và Mark Friedman. Trong nửa sau của năm 2011, Google công
bố mã nguồn, chấm dứt máy chủ và cung cấp tài trợ cho việc thành lập Trung tâm Nghiên
cứu Điện thoại Di động MIT, do Hal Abelson và các giáo sư Eric Klopfer và Mitchel
Resnick sáng lập để duy trì hoạt động của App Inventor. Phiên bản MIT được ra mắt
vào tháng 3 năm 2012.
Hiện nay, mỗi tháng MIT App Inventor có hơn 400.000 người dùng đến từ 195 quốc gia
và đã tạo ra gần 22 triệu ứng dụng, MIT App Inventor đang thay đổi cách thế giới tạo ra
các ứng dụng và cách mà học sinh nhỏ tuổi bắt đầu học về máy tính.
Sử dụng nhiều tính năng trên điện thoại: Chụp ảnh, quay phim, chọn ảnh, bật video hoặc
audio, thu âm, nhận diện giọng nói, chuyển lời thoại thành văn bản, dịch. Hỗ trợ xây
dựng game bằng Components: Ball, Canvas, ImageSprite,
Cảm biến: đo gia tốc, đọc mã vạch tính giờ, con quay hồi chuyển, xác định địa điểm, đo
tốc độ, đo khoảng cách xa gần với vật thể. Kết nối: Danh bạ, email, gọi điện, chia sẻ
thông qua các ứng dụng mạng xã hội khác
50
trên thiết bị, nhắn tin,sử dụng Twitter qua API, bật ứng dụng khác, Bluetooth, bật trình
duyệt.
Cảm biến: đo gia tốc (AccelerometerSensor), đọc mã vạch, tính giờ, con quay hồi
chuyển (gyroscopeSensor), xác định địa điểm (locationSensor), NFC, đo tốc độ
(pedometer), đo khoảng cách.
Lưu trữ: đọc hoặc lưu tập txt, esv, tạo cơ sở dữ liệu đơn giản trên điện thoại hoặc trên
đám mây thông qua server tự tạo hoặc Firebase. Điều khiển robot thông qua Lego
Mindstorms.
Và rất nhiều mở rộng do các nhà lập trình hoạt động riêng liên tục thêm vào như là: Mua
bán ứng dụng, báo thức, cảm biến ảnh sáng, ...
4.3 Hướng dẫn sử dụng App Inventor
Để sử dụng được App Inventor, ta truy cập vào địa chỉ http://ai2.appinventor mit.edu.
Sau đó tiến hành đăng nhập bằng tài khoản Google để mở trang quản lí dự án.
51
4.4 Tạo phần mềm hiển thị cảm biến nhiệt độ,độ ẩm và tia uv gửi từ Bluetooth
bằng app Inventor
Bước 1: Tạo chương trình
Sau khi đăng nhập, tại cửa sổ chính (My Project), chọn Start new project sau đặt tên cho
chương trình muốn tạo
53
Hình 34: Giao diện ứng dụng mô phỏng khi hoàn thành
Bước 3: Lập trình chức năng
Sau khi thiết kế đc giao diện ứng dụng như trên ta tiến hành lập chương trình cho giao
diện hoạt động trong phần Tab “Block” nằm bên phải màn hình
54
Cửa số phần lập trình hiện lên, bên trái là các khối lệnh: Control, Logic, Math, Text...
và cá khối lệnh tương ứng với mỗi button. Để thực hiện một lệnh nào đó, ta kéo thả các
khối lệnh vào màn hình. Có 3 kiểu lệnh chính mà ta sử dụng là:
Thuộc tỉnh (properties):
55
Sự kiện(Event):
Code của chương trình app cảm biến nhiệt độ, độ ẩm và tia uv:
Hành động khi khởi chạy screen:
Tự động gọi Bluetooth khi thiết bị chưa bật, nếu bật rồi thì bắt đầu quét các địa chỉ
Bluetooth xung quanh và lưu trữ lại trong bộ nhớ ,với việc lưu lại như vậy sẽ giúp kiết
kiệm thời gian khi thoát app và mở lại lúc đó Bluetooth sẽ tự kết nối với địa chỉ trong
phần lưu trữ .
Hình 39: Hành động kết nối liên lục các bluetooth đã lưu
56
Hình 40: Hành động nút bấm chọn kết nối Bluetooth
57
Hình 42: Hành động kết nối hiển thị data từ buletooth
58
✓ Cách 2: Biên dịch ra file apk và cài đặt, bao gồm tùy chọn download file apk về
máy tính sau đó sao chép sang điện thoại để cách đặt hoặc biên dịch và tải online
thông qua mã QR code
Để thực hiện, bạn chọn Build — App (provide QR code for .apk).Sau khi biên dịch xong
sẽ xuất hiện một mã QR code, bạn sử dụng phần mềm quét QR code trên điện thoại để
tải file apk về và cài đặt.
Hình 43: Cách cài đặt chương trình bằng mã quét QR và code
59
KẾT LUẬN VÀ KIẾN NGHỊ
Cuối cùng, nhóm nghiên cứu khuyến nghị các cơ quan quản lý và chính phủ xem
xét việc tạo ra cơ chế và chính sách hỗ trợ phát triển và triển khai công nghệ này. Điều
này bao gồm việc thúc đẩy hợp tác giữa các đơn vị nghiên cứu, doanh nghiệp và tổ chức
quản lý để thúc đẩy sự ứng dụng và tận dụng tiềm năng của module đo trong các lĩnh
vực quan trọng.
Tóm lại, đề tài "Thiết kế, chế tạo module đo các thông số nhiệt độ, độ ẩm, cường
độ UV có khả năng gửi dữ liệu lên Internet" đã đạt được những kết quả đáng kể và có
tiềm năng ứng dụng rộng rãi. Các đóng góp mới của công trình này là cơ sở để tiếp tục
nghiên cứu và phát triển trong tương lai, cũng như đề xuất những biện pháp cần thiết để
ứng dụng kết quả nghiên cứu vào thực tiễn và đề xuất cơ chế, chính sách hỗ trợ phù hợp.
61
TÀI LIỆU THAM KHẢO:
Tiếng Anh:
- [1].Banzi.M, (2009), Getting Started with Arduino, O'Reilly Media.
- [2].Michael Margollis and Nicholas Weldin, (2011), Arduino Cookbook,
O'Reilly Media.
Tiếng Việt:
- [3] Arduino.vn
Trang wed:
- [4].Arduino.cc.
- [5].Arduino4projects.com.
- [6].Randomnerdtutorials.com.
- [7].Techshowvn.com.
- [8].rugged-circuits.com.
- [9].chat.openai.com.
62