Chương 1: Tổng Quan Tổng quan, lí do lựa chọn đề tài, mục tiêu và giới hạn đề tài, đối tượng và phạm vi nghiên cứu. Chương 2: Tính toán và thiết kế phần cứng hệ thống 2 do an Chương này mô tả chi tiết về phần cứng hệ thống, sơ đồ khối, sơ đồ mạch, giải thích mạch nguyên lý, các phương pháp tính toán và lựa chọn linh kiện cho phần cứng hệ thống. Chương 3: Thiết kế phần mềm Chương 3 trình bày và giải thích giải thuật của các chương trình chính, chương trình con phần mềm hệ thống. Chương 4: Kết quả, hướng dẫn sử dụng, kiểm tra, đánh giá, nhận xét Chương 4 trình bày hình ảnh kết quả mạch và mô hình của hệ thống.
Kiểm tra, đánh giá và nhận xét hệ thống. Chương 5: Kết luận và hướng phát triển Chương 5 trình bày kết luận và hướng phát triển của đồ án. 3 do an CHƯƠNG 2: TÍNH T ÁN VÀ THIẾT KẾ PHẦN CỨNG HỆ THỐNG Chương này trình bày về mô tả khái quát hệ thống, sơ đồ khối, nguyên lý hoạt động của hệ thống và tính toán, thiết kế phần cứng hệ thống. Mô tả hệ thống Hệ thống được thiết kế có các tính năng sau: Cho phép người dùng tùy chỉnh hẹn giờ tự động bật tắt đèn hồ cá, lọc nước, cho cá ăn, bật máy sủi oxi.
Đo độ pH, nhiệt độ nước bằng cảm biến và hiển thị lên LCD cho người dùng theo dõi. Tự động gửi tin nhắn cảnh báo cho người dùng nếu nhiệt độ nước và độ pH vượt cao quá hoặc xuống mức cho phép. Tự động bật tắt quạt làm mát và que sưởi để kiểm soát nhiệt độ nước ở mức thích hợp. Ngưỡng nhiệt độ nước và độ pH có thể được cài đặt qua nút nhấn và giao diện LCD.
Cho phép người dùng điều khiển các thiết bị qua hệ thống nút nhấn gắn trên hồ cá. Sơ đồ khối của hệ thống Hệ thống được thiết kế gồm có 7 phần chính được mô tả như hình 2. Khối xử lý trung tâm: board Arduino Mega 2560 xử lý tín hiệu nhận được từ khối cảm biến, giao tiếp với Module Sim800L và Khối thời gian thực, hiển thị dữ liệu xử lý lên LCD và gửi tín hiệu cho Khối kích relay điều khiển thiết bị. Khối cảm biến: gồm 2 cảm biến là cảm biến nhiệt độ nước DS18B20 và cảm biến pH của hãng DFRobot.
Khối thời gian thực: là mạch IC thời gian thực DS1307 cung cấp thời gian thực cho board Arduino để so sánh với thời gian hẹn giờ được cài đặt bởi người dùng. 4 do an Khối nút nhấn và hiển thị LCD Khối cảm biến Khối Khối thời Khối xử lí Nguồn gian thực trung tâm Khối giao tiếp từ xa Khối kích Relay điều khiển thiết bị Hình 2.1 Sơ đồ khối hệ thống Khối giao tiếp từ xa: gồm Module Sim800L và Điện thoại di động của người dùng, có chức năng: gửi tin nhắn cảnh báo về dữ liệu cảm biến tới điện thoại của người dùng, gửi tin nhắn cảnh báo mất điện. Khối kích relay điều khiển thiết bị: mạch nhận tín hiệu điều khiển từ board Arduino kích hoạt cho các thiết bị hoạt động. Khối nguồn: gồm mạch nguồn sử dụng IC LM2576 để cho ra điện áp +4.5V DC - dòng 3A, mạch chuyển nguồn Pin khi mất điện và mạch báo mất điện.
Nguyên lý hoạt động của hệ thống Khi được cấp nguồn, board xử lý Arduino Mega 2560 lập tức đọc dữ liệu gửi về từ cảm biến nhiệt độ nước DS18B20 và cảm biến pH, hiển thị lên LCD. Khi người dùng thực hiện cài đặt hẹn giờ bật tắt cho các thiết bị, bằng cách tương tác qua nút nhấn và giao diện LCD, board xử lý sẽ lưu lại giờ hẹn vào các biến, khi so sánh thấy thời gian hẹn giờ bằng với thời gian thực đọc được từ IC thời gian thực DS1307, board xử lý ra tín hiệu cho Khối kích relay điều khiển thiết bị như mong muốn, điều này cũng xảy ra khi người dùng bật tắt thủ công các thiết bị ngay lập tức bằng các nút nhấn trên mạch. Đồng thời, board xử lý cũng kiểm tra trạng thái hoạt động của các thiết bị và hiển thị lên LCD cho người dùng theo dõi. 5 do an Bên cạnh đó, board xử lý thường xuyên kiểm tra nhiệt độ nước và độ pH hiện tại của nước.
Nếu giá trị này vượt quá hoặc xuống quá ngưỡng cho phép thì sẽ phát tín hiệu cho Module Sim800L thực hiện gửi tin nhắn cảnh báo cho người dùng, đồng thời tự động bật/tắt quạt làm hoặc que sưởi để kiểm soát nhiệt độ nước ở mức thích hợp cho cá. Tính toán, thiết kế các khối 2. Khối xử lí trung tâm Vi điều khiển là bộ não xử lý trung tâm của hệ thống nên việc lựa chọn vi điều khiển thích hợp là điều rất quan trọng. Nhóm đã chọn board Arduino Mega 2560 cho đề tài dù trước đó có nhiều phương án cho vị trí này như: PIC, board ARM, board Raspberry Pi.
Vi điều khiển PIC là họ vi điều khiển giá thành thấp, dễ tiếp cận, tuy nhiên lại hạn chế về số lượng các cổng giao tiếp. Trong khi PIC16F887A chỉ có 1 cổng UART thì Arduino có tới 4 cổng UART, đề tài đã sử dụng 1 cổng UART cho Module Sim, do đó nếu muốn sử dụng thêm một số module hay cảm biến kết nối qua UART thì Arduino rõ ràng là một sự lựa chọn tốt hơn. Hơn nữa, đề tài của nhóm sử dụng khá nhiều thiết bị cũng như cảm biến (7 thiết bị, 3 cảm biến, LCD,.), do đó nếu sử dụng PIC thì đề tài sẽ không thể có đủ cổng giao tiếp ngoại vi để sử dụng. Board ARM hay Raspberry Pi cũng là các phương án lí tưởng cho đề tài.
Tuy nhiên, 2 board này có giá thành rất cao (gấp nhiều lần Arduino) và do đó, nó được thiết kế có sẵn rất nhiều cổng giao tiếp ngoại vi mà đề tài không dùng đến, gây ra sự lãng phí không cần thiết, với Arduino thì chúng ta chỉ cần mua các shield mạch giao tiếp cần thiết và gắn trực tiếp lên trên board Arduino. Hơn nữa, board ARM lại khó tiếp cận và lập trình hơn so với Arduino vì các thư viện phần mềm cho board này là không nhiều, người dùng phải tự viết hoặc chỉnh sửa rất nhiều từ các thư viện khác. Các thư viện phần mềm mà nhà xản xuất hay cộng đồng Arduino tạo ra là vô cùng lớn và đa dạng, chúng ta có thể sử dụng các thư viện này để hỗ trợ lập trình giao tiếp cảm biến, điều khiển động cơ,… mà không cần phải tìm hiểu từ đầu, giúp tiết kiệm thời gian lập trình cho các dự án đề tài lớn. 6 do an Hình 2.
Arduino Mega 2560 Arduino Mega 2560 (hình 2.2) là Board vi xử lý sử dụng chip Atmega2560, gồm có các chân giao tiếp như sau: 5 Chân GND, 3 chân +5V, 1 chân +3.3V 1 nút reset 16 chân analog 4 chân UART 54 chân digital (trong đó có 15 chân có thể được sử dụng như những chân PWM là từ chân số 2 → 13 và chân 44, 45, 46). 6 ngắt ngoài: chân 2 (interrupt 0), chân 3 (interrupt 1), chân 18 (interrupt 5), chân 19 (interrupt 4), chân 20 (interrupt 3), và chân 21 (interrupt 2). 16 chân vào analog (từ A0 đến A15). 6 Chân lập trình ISP và nhiều thành phần khác.
7 do an Hình 2. Khối xử lý trung tâm Arduino Mega 2560 2. Khối kích relay điều khiển thiết bị Hình 2. Sơ đồ kết nối Khối kích relay Khối kích relay sử dụng transistor C1815 để kích cho relay hoạt động (xem hình 2.
Chức năng của các linh kiện trong mạch như sau: Điện trở 10K có tác dụng ổn định cực B của transistor C1815. 8 do an Led D2 có tác dụng báo tín hiệu điều khiển từ Arduino, vừa có tác dụng cách ly dòng điện sự cố trả về gây hư hỏng mạch Arduino. Ở đây ta không cần mắc điện trở hạn dòng cho Led vì dòng tín hiệu ngõ ra Arduino có giá trị rất nhỏ. Diode 1N4007 được song song với cuộn dây relay để dập xung ngược, bảo vệ transistor đóng mở dòng cho relay.
Khi cuộn dây relay bị ngắt dòng điện sẽ phát sinh dòng điện cảm ứng cùng chiều với dòng ban đầu, dòng điện này sẽ được diode dập do nó được phân cực thuận, do đó mối nối CE của transistor không bị phá hủy bởi dòng điện cảm ứng. Khối cảm biến Hình 2. Cảm biến DS18B20 DS18B20 (hình 2.9) là cảm biến kĩ thuật số đo nhiệt độ nước giao tiếp theo chuẩn 1 dây (1-wire), có chức năng cảnh báo nhiệt độ nước khi vượt ngưỡng và có thế cấp nguồn từ chân data (chế độ parasite power), không bị suy hao tín hiệu đường dây dài. Cảm biến nhiệt độ nước DS18B20 có mã nhận diện lên đến 64-bit, vì vậy ta có thể đo nhiệt độ nước với nhiều con DS18B20 mà chỉ dùng 1 dây dẫn duy nhất để giao tiếp với các IC này.
Ứng dụng: đo nhiệt độ nước bên trong các tòa nhà, thiết bị, máy móc, hệ thống giám sát; đo những nơi cách xa board điều khiển, hoặc trong môi trường ẩm ướt. Thông số kỹ thuật: + Điện áp cấp: 3~5v. 9 do an + Dải đo: Có thể đo nhiệt độ nước trong khoảng -55 -> +125°C. Với khoảng nhiệt độ nước là -10°C to +85°C thì độ chính xác là ±0.0625°C theo số bit cấu hình.
+ Cung cấp nhiệt độ nước với độ phân giải 9, 10, 11, 12 bit, tùy theo sử dụng. Trong trường hợp không cài đặt thì nó tự động đo ở chế độ 12 bit. + Chuẩn giao tiếp 1 Wire. + Thời gian chuyển đổi nhiệt độ nước tối đa là 750ms cho mã hóa 12 bit.
+ Kích thước: 90cm - đường kính đầu cảm biến: 4mm. + Dòng tiêu thụ tại chế độ nghỉ rất nhỏ. Sơ đồ kết nối cảm biến DS18B20 Sơ đồ kết nối cảm biến nhiệt độ nước với Board Arduino được cho như hình 2. Trên thị trường có các loại cảm biến nhiệt độ nước như LM35, TMP36,… nhưng để đo nhiệt độ nước nước và so sánh về độ ổn định thì DS18B20 là phương án tối ưu nhất cho hệ thống, sai số chỉ 0.
Hơn nữa, 2 cảm biến LM35 và TMP36 giao tiếp qua analog, DS18B20 lại dùng cơ chế truyền tín hiệu 1-wire, cơ chế này cho phép chúng ta đọc nhiều con DS18B20 trên cùng 1 dây. Ta cần mắc 1 con điện trở kéo lên 4.