Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.44 MB, 15 trang )
<span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">
Dưới đây là hình ảnh mơ t các thi t b ph n c ng : ả ế ị ầ ứRaspberry Pi 3
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">Arduino Uno R3
Cảm biến nhiệt độ và độ ẩm DHT11
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">Cá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)
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6"><b>3. Thi t k ph n m m </b>ế ế ầ ề
<b>3.1 S d</b>ử ụng Arduino để<b>đọc nhi</b>ệt độ và độ<b>ẩm từ cảm bi n </b>ế
Để đọ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 ệ
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">Ta 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. ố ệ
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">Ta thu được kết quả trên màn hình Serial Monitor như hình dưới:
<b>3.2 Đưa kết quả đã thu được lên cơ sở ữ liệu d</b>
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 ế ố ớ
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">Thư 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 ề ữ ệ
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">Biế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
<b>3.3 S d ng d li u trên database v b</b>ử ụ ữ ệ <b>ẽ ảng và bi</b>ểu đồ<b> nhi</b>ệt độ độ ẩ<b> m theo th i </b>ờ
<b>gian th</b>ực đượ<b>c hi n tr trên web </b>ể ị
Để 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
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">Sau 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 ạ ụ
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12"><b>3.4. Thi t k website </b>ế ế
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
<b>4. K t qu </b>ế ả
<b>4.1 Ph n c ng c</b>ầ ứ <b>ủa chương trình </b>
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13"><b>4.2 K t qu c a ph n m</b>ế ả ủ ầ <b>ềm </b>
Gmail cảnh báo được gửi về
Nhiệt độ và độ ẩm được thống kê theo thời gian th c ự
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="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)
<b>5. Đánh giá 5.1. Ưu điểm </b>
- Đã ứ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 hồn thi n khá t t ệ ố
<b>5.2. Y</b>ếu điể<b>m </b>
<b>- Tính th c t </b>ự ế 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 ự ế
</div>