Arduino Uno R3 Cảm biến nhiệt độ và độ ẩm DHT11... Ta khai báo thư viện DHT.h, một thư viện từ Adafruit.. Sau đó khởi động cảm bi n b ng begin ế ằTa dùng phương thức readHumidity trên đố
Trang 1
Bá Báo c o c o cáo áo áo Cu Cu ố ốiiiii K K ỳỳỳỳỳ
Tr ần Văn Cao
Trang 2M ục l c ụ
1 Gi i thi u ớ ệ
2 Ph n c ng c a bài t p ầ ứ ủ ậ
3 Thi t k ph n m m ế ế ầ ề
4 K t qu ế ả
5 Đánh giá chung
Trang 31 Gi i thi u ớ ệ
Đọc nhiệt độ ừ t cảm bi n DHT11 b ng Arduino và hi n th trên web b ng ế ằ ể ị ằ Raspberry Pi và 1 s ng d ng liên quan t i môn h c ố ứ ụ ớ ọ
2 Ph n c ng cầ ứ ủa bài t p ậ
Để ự th c hi n toàn b ệ ộ chương trình ta cần chuẩn bị:
- Raspberry Pi 3
- Arduino Uno R3
- C m bi n DHT11 ả ế
- Đèn Led
Dưới đây là hình ảnh mô t các thi t b ph n c ng : ả ế ị ầ ứ
Raspberry Pi 3
Trang 4Arduino Uno R3
Cảm biến nhiệt độ và độ ẩm DHT11
Trang 5Cách nối như sau:
- 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 ( ủ ở đây là chân số 4)
Trang 63 Thi t k ph n m m ế ế ầ ề
3.1 S dử ụng Arduino đểđọc nhiệt độ và độẩm từ cảm bi n ế
Để đọc d liệu t c m bi n g i v ta s dữ ừ ả ế ử ề ử ụng Arduino IDE cũng như nạp code để thực hi n ệ
Trang 7Ta khai báo thư viện DHT.h, một thư viện từ Adafruit Thư viện này có thể sử dụng cho 3 lo i c m biạ ả ến: DHT11, DHT21, DHT22 Sau đó, ta khai báo vị trí chân kết n i c a cố ủ ảm bi n vế ới chân kĩ thuật số của Arduino ( ở đây sử ụ d ng chân s 4) và ố cảm biến đượ ử ụng trong chương trình ( DHT11) c s d
Trong hàm setup(), ta kh i ch y v i baudrate (tở ạ ớ ốc độ truyền) là 9600 Sau đó khởi động cảm bi n b ng begin() ế ằ
Ta dùng phương thức readHumidity trên đối tượng dht để ấy độ ẩm Tương tự l đối với nhiệt độ là phương thức readTemperature D li u tr v là d ng chu i (float) ữ ệ ả ề ạ ỗ nên ta ép ki u v ể ề int để dễ dàng sử dụng s li u sau này ố ệ
Trang 8Ta thu được kết quả trên màn hình Serial Monitor như hình dưới:
3.2 Đưa kết quả đã thu được lên cơ sở ữ liệu d
Như đã nói ở trên các s liố ệu ta thu được không phải vô mục đích, ta sẽ ập 1 đồ l thị
so sánh nhiệt độ và độ ẩm theo thời gian th c Viự ệc đầu tiên cần làm là đưa những
dữ liệu này lên cơ sở dữ liệu (database)
Ta s d ng nhử ụ ững thư viện như hình bao gồm: Serial, time, os, firebase_admin, smtplib, ssl, datetime, email.mime.multipart, email.mime.text
Trong đó :
Thư viện Serial cung cấp phương thức để kết nối với Arduino
Thư viện Datetime và Time để ta cập nhật được theo thời gian th c ự
Thư viện OS để ta có th làm vi c v i tể ệ ớ ệp thư mục
Thư viện firebase_admin dùng k t n i v i firebase realtime database ế ố ớ
Trang 9Thư viện smtplib tạo kết nối với máy chủ smtp
Thư viện ssl mã hóa theo port 465
Thư viện email.mime g i nhiđể ử ều định d ng body email ạ
Thư viện getpass giúp n m t khẩ ậ ẩu khi người dùng tiến hành nh p ậ
Ta kh i t o bi n today là bi n th i gian hi n t i, bi n Arduino cở ạ ế ế ờ ệ ạ ế ổng COM8 băng thông 9600
Ta kh i t o bi n thông tin database, c p quy n qu n tr viênở ạ ế ấ ề ả ị Để truy c p vào ậ Firestore và admin tool t ng d ng ta c n ph i t o 1 server account t ừ ứ ụ ầ ả ạ ừ đó ta có file serviceAccountKey.json
Sau khi kh i t o nhở ạ ững biến cần thi t ta cho chế ạy Arduino, đọc d li u t Arduino ữ ệ ừ gửi lên, gi i mã chúng và ép kiả ểu để ử ụng s li u v s d ố ệ ới 2 đối tượng là nhietdo và doam Hàm update() được sử dụng để truy n d li u lên database ề ữ ệ
Trang 10Biến child1 lưu trữ thông tin về nhiệt độ theo thời gian thực được database gửi về
Ta khai báo máy ch SMTP, b o m t SSL, c ng PORT ( ủ ả ậ ổ ở đây là cổng 465), gmail gửi mật khẩu và gmail người nhận, cũng như set up nội dung cho gmail
Khi ng t trình biên d ch, Arduino s d ng hoắ ị ẽ ừ ạt động
3.3 S d ng d li u trên database v bử ụ ữ ệ ẽ ảng và biểu đồ nhiệt độ độ ẩ m theo th i ờ
gian thực được hi n tr trên web ể ị
Để có được biểu đồ chạy theo thời gian th c ta kh i t o các biự ở ạ ến và mảng như hình
Trang 11Sau khi tham chi u các d li u t database ta s t o 1 b ng ế ữ ệ ừ ẽ ạ ả cũng như biểu đồ ố th ng
kê ch y liên t c ạ ụ
Trang 123.4 Thi t k website ế ế
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 bao gồm các heading, footer, content, các liên kết cho các mục của website, …
Ta có k t qu ế ả như mục 4 dưới đây
4 K t qu ế ả
4.1 Ph n c ng cầ ứ ủa chương trình
Trang 134.2 K t qu c a ph n mế ả ủ ầ ềm
Gmail cảnh báo được gửi về
Nhiệt độ và độ ẩm được thống kê theo thời gian th c ự
Trang 14Đèn Led được nối với chân 13 của Arduino sẽ phát sáng nếu nhiệt độ > 29 độ C, ngượ ạc l i nếu =< 29 độ ẽ s không phát sáng ( ch y th c nghi m v i nhiạ ự ệ ớ ệt độ phòng)
5 Đánh giá
5.1 Ưu điểm
- Đã ứng dụng được Raspberry Pi vào ph n cầ ứng như yêu cầu của bài t p l n ậ ớ
- H th ng ệ ố ổn định và có tính hoàn thi n khá t t ệ ố
5.2 Yếu điểm
- Tính th c t ự ế chưa được cao
- Các tính năng của hệ thống vẫn còn ít, chưa đa dạng hay có tính th c t cao ự ế