Hình 3.12: IDE menu File menu: Hình 3.13: File menu 3 2 4 1
Trang 31 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
Trong file menu chúng ta quan tâm tới mục Examples đây là nơi chứa code mẫu ví dụ như: cách sử dụng các chân digital, analog, sensor,…
Hình 3.14: Examples menu
Sketch menu:
Verify/ Compile: chức năng kiểm tra lỗi code. Show Sketch Folder: hiển thị nơi code được lưu. Add File: thêm vào một Tap code mới.
Import Library: thêm thư viện cho IDE
Trang 32 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
Edit menu:
Hình 3.16: Edit menu
Tool memu:
Hình 3.17: Tool menu
Trong Tool menu ta quan tâm các mục Board và Serial Port
Mục Board: cần phải lựa chọn bo mạch cho phù hợp với loại bo sử dụng nếu là Arduino Mega 2560 thì phải chọn như hình:
Trang 33 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
Hình 3.18: Board Arduino sử dụng
Hình 3.19: Hiển thị Board và Serial Port
Nếu sử dụng loại board khác thì phải chọn đúng loại board mà mình đang có nếu sai thì code Upload vào chip sẽ bị lỗi.
Serial Port: đây là nơi lựa chọn cổng Com của Arduino. Khi chúng ta cài đặt driver thì máy tính sẽ hiện thông báo tên cổng Com của Arduino là bao nhiêu, ta chỉ việc vào Serial Port chọn đúng cổng Com để nạp code, nếu chọn sai thì không thể nạp code cho Arduino được.
Trang 34 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
CHƯƠNG IV: THIẾT KẾ VÀ THI CÔNG 4.1. Phân tích yêu cầu điều khiển
Trong các thiết bị điện thông thường ngày nay như tivi, hệ thống nghe nhìn, máy tính, đèn chiếu sáng, rèm cửa và điện thoại di động, ngày càng trở nên dễ sử dụng và đa năng hơn, nhưng mỗi thiết bị hoạt động độc lập với các bộ điều khiển dùng riêng. Điều này có nghĩa là có rất nhiều bộ điều khiển, nút chỉnh làm cho cuộc sống thêm phức tạp.
Với ý nghĩa của việc điều khiển thiết bị từ xa, các thiết bị nói trên sẽ được tích hợp trong một hệ thống đồng nhất, cung cấp các chức năng của từng loại thiết bị nhưng được điều khiển tập trung từ bộ điều khiển trung tâm. Như vây, các thiết bị điện rời rạc trước đây giờ đây là các thành phần cấu thành nên một hệ thống được điều khiển tập trung.
Phân tích các thiết bị điện cần điều khiển, ta nhận thấy các thiết bị điện chủ yếu là các biến logic, chỉ có 2 trạng thái tắt hoặc mở ví dụ như quạt, điều hòa, tivi, bóng đèn… Song bên cạnh đó cũng có một số biến có dạng số nguyên, số thực như nhiệt độ phòng, mức nước trong bể, độ mở của rèm cửa… Với những biến kiểu logic, ta chỉ cần xác định trạng thái của thiết bị và yêu cầu điều khiển để bật hoặc mở thiết bị khi có yêu cầu. Còn với những biển kiểu số nguyên, số thực như nhiệt độ, mức nước trong bể… thì ta cần có cảm biến đo để xác định được giá trị của biến ở thời điểm hiện tại. Ví dụ, muốn hệ thống tự động bật điều hòa khi nhiệt độ phòng cao thì ta cần ta cần có một cảm biến nhiệt độ để xác định nhiệt độ phòng tại thời điểm hiện tại. Nếu nhiệt độ phòng cao hơn một giá trị ta định trước thì hệ thống sẽ tự động điều khiển để bật điều hòa lên, và khi nhiệt độ hạ thấp giá trị ta định trước thì hệ thống sẽ điều khiển để tắt điều hòa đi.
Yêu cầu điều khiển được đặt ra đối với hệ thống là người dùng có thể sử dụng máy tính có nối mạng, hoặc điện thoại, máy tính bảng thực hiện truy cập vào Web Server để đưa ra yêu cầu điều khiển từ xa. Bộ điều khiển nhận lệnh, xử lý rồi sau đó đưa ra tín hiệu điều khiển thích hợp, sau khi điều khiển xong thì thông báo ngược lại cho người sử dụng biết trạng thái của thiết bị hiện thời.
Điều khiển thiết bị trong toà nhà là một đề tài mở với rất nhiều các ứng dụng, các tiện ích có thể áp dụng nhằm phục vụ nhu cầu ngày càng nâng cao của con người. Chính vì vậy mà giới hạn trong đồ án tốt nghiệp em không thể giải quyết được hết các bài toán trên thực tế. Trước mắt, em sẽ thi công một bộ điều khiển có khả năng giao tiếp truyền thông qua mạng Internet, từ đó người sử dụng có thể đưa ra yêu cầu điều khiển để đóng hoặc mở một số thiết bị điện từ xa, ngoài ra bộ điều khiển còn có khả năng nhận tín hiệu từ cảm biến nhiệt độ và cập nhật liên tục lên Web Server cho người sử dụng biết nhiệt độ trong phòng tại các tầng.
Trang 35 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
Về hướng đi trong tương lai, em sẽ mở rộng và phát triển thêm nhiều module, nâng cao khả năng giao tiếp của thiết bị, tăng tính tương tác với người sử dụng hơn nữa.
4.2. Tổng quan chương trình chính
Giải thuật tổng quan:
Hình 4.1: Giải thuật tổng quan
Bắt đầu
Cấu hình
Khai báo biến
Thiết lập
Chương trình chính (vòng lặp)
Trang 36 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
Giải thuật chương trình chính:
Hình 4.2: Giải thuật chương trình chính
Xuất giao diện Admin Bắt đầu
Gửi lệnh nhận nhiệt độ
Kết thúc Tạo kết nối giữa Client và Server
Có kết nối Client Xây dựng HTML và CSS
Xuất giao diện điều khiển
Trạng thái mức cao Thông tin Admin
Đọc chỉ số chân và trạng thái chân Mở thiết bị Thời gian > 60s Tắt thiết bị Ngắt kết nối Server 2s
Lưu trạng thái output vào EEPROM Đ Đ Đ Đ S S S S
Trang 37 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
4.3. Thiết kế và thi công Web Server 4.3.1. Thiết kế giao diện web 4.3.1. Thiết kế giao diện web
Ta có dùng một số công cụ như Notepad++, Adobe Dreamweaver,… để xây dựng giao diện Web Server trước khi code với Arduino IDE.
Trong đồ án này, em không chèn bất kỳ hình ảnh, hoặc liên kết đến hình ảnh từ internet. Giao diện Web được xây dựng bằng HTML5 và CSS3.
Trang 38 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
Trang 39 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
4.3.2. Giám sát trên Web
Nhiệm vụ đặt ra là làm thế nào để biết được trạng thái các biến hệ thống và kiểm tra các trạng thái này thường xuyên trên Web Server?
Trên Arduino board sau khi tạo một thiết lập các biến chức năng, khởi tạo và thiết lập các giá trị ban đầu, hàm loop() sẽ thực hiện chính xác những giá trị các biến đã khởi
tạo ban đầu, và các vòng lặp được thực hiện liên tục lúc này Web Server luôn được làm mới, cho phép chương trình thay đổi và cập nhật mới nhất về trạng thái hệ thống trong đó gồm giá trị các cảm biến nhiệt độ và trạng thái tắt mở thiết bị.
Tại Website chúng ta cập nhật trạng thái hệ thống bằng cách thực hiện auto refresh bằng thẻ meta được đặt trong thẻ <head></head> của code HTML.
<meta http-equiv="refresh" content="15">(ở đây refresh với thời gian 15s/lần)
Sau đây, chúng ta sẽ đi vào một ví dụ cụ thể là đưa giá trị nhiệt độ đo được từ cảm biến nhiệt độ lên trình duyệt.
Hình 4.5: Từ cảm biến nhệt độ lên trình duyệt 4.3.3. Điều khiển trên Web
Công việc tiếp theo là làm cách nào để điều khiển thiết bị thông qua trình duyệt? Trước hết chúng ta tìm hiểu về thẻ <form>, cách đọc nó trong HTML code và phương pháp truyền tin được sử dụng trong đồ án này.
Web forms cho phép Web Server nhận dữ liệu từ người dùng thông qua mạng. Dữ liệu này có thể dùng để điều khiển một đầu ra hoặc một vùng nhớ của hệ thống. Chúng ta sẽ lấy một ví dụ là vi điều khiển nhận lệnh “On/Off” từ trang web và điều khiển trạng thái của một bóng đèn tương ứng.
Trang 40 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
Hình 4.6: Vi điều khiển nhận lệnh từ Web và điều khiển
Giống như bất kỳ phần nào trong HTML, web forms có thể nhận ra thông qua cặp thẻ <form></form>. Trong cặp thẻ này sẽ có các thẻ <input> với các kiểu tương tác người dùng (nút bấm, dạng check,…)
Phương pháp truyền dữ liệu: Sử dụng phương pháp GET để truyền dữ liệu điều khiển, dữ liệu được đặt ngay sau URL (ví dụ: /form.html?ten1=giatri1&ten2=giatri2). Tuy nhiên ở đây phương pháp GET được sử dụng bằng cách không gán method và action tại thẻ <form></form> mà sử dụng link đến URL bằng lệnh onClick để truyền dữ liệu
được đặt trong <form></form> tại các thẻ <input>. Code ví dụ tầng 1 và tầng 2 của toà nhà: <form>
<table border="0" align="center"> <tr>
<td></td> <td></td>
<td><h4 style="margin: 0 0 0 -5.9em;color: #0181eb;">TOÀ NHÀ</h4></td> <td></td></tr><tr class="floor">
<td><h4>Tầng 1</h4></td>
<td></td><td></td><td><h4 class="temper">Nhiệt độ: 30.25 °C</h4></td> </tr><tr>
<td><h4>1. Đèn cửa chính</h4></td>
<td><input type="button" value="ON " onClick="parent.location='/?H0'"></td> <td><div class='blue-circle'><div class='glare'></div></div></td>
<td><input type="button" value="OFF" onClick="parent.location='/?L0'"></td> </tr>
<tr>
<td><h4>2. Đèn sảnh lớn</h4></td>
Trang 41 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
<td><div class='blue-circle'><div class='glare'></div></div></td>
<td><input type="button" value="OFF" onClick="parent.location='/?L1'"></td> </tr>
<tr>
<td><h4>3. Quạt sảnh</h4></td>
<td><input type="button" value="ON " onClick="parent.location='/?H2'"></td> <td><div class='blue-circle'><div class='glare'></div></div></td>
<td><input type="button" value="OFF" onClick="parent.location='/?L2'"></td> </tr>
<tr>
<td><h4>4. Đèn lối đi</h4></td>
<td><input type="button" value="ON " onClick="parent.location='/?H3'"></td> <td><div class='blue-circle'><div class='glare'></div></div></td>
<td><input type="button" value="OFF" onClick="parent.location='/?L3'"></td> </tr>
<tr>
<td><h4>5. Đèn cầu thang</h4></td>
<td><input type="button" value="ON " onClick="parent.location='/?H4'"></td> <td><div class='blue-circle'><div class='glare'></div></div></td>
<td><input type="button" value="OFF" onClick="parent.location='/?L4'"></td> </tr>
<tr> <td></td>
<td><input class="all" type="button" value="ON All " onClick=" parent.location='/?H0H1H2H3H4'"></td>
<td></td>
<td><input class="all" type="button" value="OFF All" onClick=" parent.location='/?L0L1L2L3L4'"></td> </tr> <tr class="floor"> <td><h4>Tầng 2</h4></td> <td></td><td></td><td><h4 class="temper">Nhiệt độ: 30.25 °C</h4></td> </tr><tr> <td><h4>1. Đèn cửa trước</h4></td>
<td><input type="button" value="ON " onClick="parent.location='/?H5'"></td> <td><div class='blue-circle'><div class='glare'></div></div></td>
Trang 42 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
</tr> <tr>
<td><h4>2. Đèn phòng A</h4></td>
<td><input type="button" value="ON " onClick="parent.location='/?H6'"></td> <td><div class='grey-circle'><div class='glare'></div></div></td>
<td><input type="button" value="OFF" onClick="parent.location='/?L6'"></td> </tr>
<tr>
<td><h4>3. Đèn phòng B</h4></td>
<td><input type="button" value="ON " onClick="parent.location='/?H7'"></td> <td><div class='blue-circle'><div class='glare'></div></div></td>
<td><input type="button" value="OFF" onClick="parent.location='/?L7'"></td> </tr>
<tr>
<td><h4>4. Tivi phòng B</h4></td>
<td><input type="button" value="ON " onClick="parent.location='/?H8'"></td> <td><div class='blue-circle'><div class='glare'></div></div></td>
<td><input type="button" value="OFF" onClick="parent.location='/?L8'"></td> </tr>
<tr>
<td><h4>5. Đèn cầu thang</h4></td>
<td><input type="button" value="ON " onClick="parent.location='/?H9'"></td> <td><div class='grey-circle'><div class='glare'></div></div></td>
<td><input type="button" value="OFF" onClick="parent.location='/?L9'"></td> </tr>
<tr> <td></td>
<td><input class="all" type="button" value="ON All " onClick=" parent.location='/?H5H6H7H8H9'"></td>
<td></td>
<td><input class="all" type="button" value="OFF All" onClick=" parent.location='/?L5L6L7L8L9'"></td>
</tr> </table> </form>
Trang 43 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
4.4. Thiết kế phần cứng mạch chính
Nguồn cung cấp:
Hình 4.7: Sơ đồ nguyên lý nguồn cung cấp cho toàn mạch
Khối nguồn: dùng IC ổn áp LM7805 để ổn định điện áp làm việc, các tụ để lọc điện áp ra. - Thông số kỹ thuật:
+ Vi = 9V ÷ 12V + Vo = 4.75V ÷ 5.25V + Imax = 1A
+ Pmax = 5.25W - Thông số linh kiện:
+ Cầu chỉnh lưu B1: diode cầu 1A. + Tụ C31 = 1000uF/16V: tụ lọc nguồn.
+ Tụ C32 = 1uF: tụ chống xung kim cho IC 7805. + Tụ C32 = 0.1uF: tụ chống xung kim cho IC 7805.
Trang 44 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
Khối điều khiển – Arduino Mega 2560
Hình 4.8: Khối điều khiển – Arduino Mega 2560
- Cấp nguồn: nguồn được cấp vào board hoạt động tại chân Vin hoặc qua jack 2.1mm - Lấy tín hiệu:
+ Các chân từ 22 đến 41: lấy tín hiệu ra điều khiển 15 thiết bị. + Chân 2: lấy tín hiệu vào từ các cảm biến nhiệt độ.
Khối giao tiếp mạng – Arduino Ethernet Shield
Hình 4.9: Khối giao tiếp mạng – Arduino Ethernet Shield
- Cấp nguồn: nguồn hoạt động được cấp tại chân Vin thông qua board Mega 2560. - Lấy tín hiệu: kết nối với router mạng qua cổng RJ45 để truyền tín hiệu điều khiển.
Trang 45 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
Khối cảm biến nhiệt độ:
Hình 4.10: Sơ đồ nguyên lý khối cảm biến nhiệt độ
Khối cảm biến nhiệt độ: sử dụng giao thức OneWire nghĩa là tất cả các cảm biến cùng truyền tín hiệu trên một dây.
- Thông số kỹ thuật:
+ Nhiệt độ định mức: -55 ÷ 125°C (-67°F ÷ 257°F) + Độ phân giải: 9 ÷ 12 bit
+ Độ chính xác: ± 0.5°C từ -10°C ÷ 85°C + Thời gian truy vấn: < 750ms
+ Hoạt động: 3.0V ÷ 5.5V - Thông số linh kiện:
+ Cảm biến: DS18B20
Trang 46 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
Khối công suất:
Trang 47 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
Khối công suất:
- Thông số kỹ thuật: + Vi = 5V
+ Dòng kích relay tối thiểu: 15 ÷ 20mA. - Thông số linh kiện:
+ Relay 5VDC: AC250VAC 7A; 24VDC 12A.
+ Điện trở R22 = R25 = R27 = R29 = 220Ω: tạo dòng qua led (I = 13.7mA). + Điện trở R21 = R24 = R26 = R28 = 2K2: tạo dòng bật transistor (I = 2.27mA). + Transistor T6, T7, T8, T9: transistor 2N2222 dùng kích relay.
+ Diode D8, D9, D10, D11: diode 1N4148 bảo vệ relay. + Led: báo trạng thái nguồn và trạng thái relay.
Trang 48 SVTH: NGUYỄN HỮU HẬU LỚP: L12CQVT02-N
CHƯƠNG V: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1. Kết luận
Qua thời gian nghiên cứu, thi công đồ án đã cơ bản được hoàn thành. Bằng sự nỗ lực cố gắng của cá nhân phân phối công việc hợp lý, chặt chẽ, đúng tiến độ đã đề ra, bên cạnh đó còn là sự hướng dẫn nhiệt tình, tận tâm của thầy Phan Thanh Toản, đồ án này đã được hoàn thành đúng thời gian như đã định và đã đạt được yêu cầu đặt ra là thiết kế và thi công hệ thống điều khiển các thiết bị trong toà nhà qua mạng Internet. Trong quá trình thực hiện đề tài, em đã thu được những kết quả nhất định như sau:
- Mạch điện với các module trên mạch được thiết kế, thi công hoàn chỉnh và đã được thử nghiệm nhiều lần và đã hoạt động ổn định trong thực tế.
- Xây dựng được mô hình toà nhà thu nhỏ để ứng dụng điều khiển các thiết bị và tạo thành một hệ thống thống nhất.
Hệ thống điều khiển thiết bị điện trong toà nhà qua mạng Internet được thực hiện như trong đề tài là một hệ thống với các chức năng đạt được như sau:
Hệ thống của thể điều khiển được thiết bị điện từ xa thông qua mạng Internet: - Người dùng có thể dùng máy tính đăng nhập vào Web Server và thực thi điều
khiển thiết bị ngay trên giao điện Web.
- Trạng thái của thiết bị được cập nhật ngay trên giao diện Web.
- Hệ thống có khả năng được bảo vệ tốt, nghĩa là người sử dụng phải có tên đăng nhập và mật khẩu thì mới đăng nhập được vào hệ thống.
Hệ thống có tính năng đo và cập nhật nhiệt độ tại các tầng:
- Khối cảm biến đo nhiệt độ DS18B20 được kết nối tới vi điều khiển cho biết nhiệt độ phòng.
- Luôn cập nhật nhiệt độ về Web Server.
Để thực hiện được các chức năng nêu trên, em đã tìm hiểu, nghiên cứu các vấn đề có liên quan tới đề tài như: truyền thông SPI, giao thức TCP/IP, Board Arduino Mega 2560, Arduino Ethernet Shield, mạng Ithernet, tập lệnh dành cho Arduino, và các vấn đề khác liên quan tới đề tài. Trong đó, đặc biệt quan tâm đến ứng dụng Arduino, Arduino ngày càng phổ biến trên toàn thế giới, với giới công nghệ nó có những ứng dụng thật vượt trội và tiện dụng. Arduino thuộc dạng mã nguồn mở, rất dễ dàng code và phát triển ứng