Thiết kế mạch in

Một phần của tài liệu Simcom7670 nhiệt độ ẩm đất, simcom 7600 (Trang 43)

Mạch in sau khi được gia công:

Mạch bên trong Thiết bị Dataloger:

4.6 Thiết bị thực tế

4.7 Kết quả hiển thị lên web Thingspeak

Hình 4.8: Hình ảnh hiển thị lên WEB Thingspeak

4.9 Khảo nghiệm thiết bị 4.9.1 Các bước thực hiện

- Bước 1: Nạp code vào Arduino để chương trình hoạt động. - Bước 2: Cấp nguồn 9V cho mơ hình hoạt động.

- Bước 3: Chuẩn bị nhiệt kế thủy ngân.

- Bước 4: Tiến hình ghi dữ liệu của thiết bị và nhiệt kế thủy ngân.

4.9.2 Kết quả khảo nghiệm

Lần đo Nhiệt độ thiết bị (0C)

Nhiệt kế thủy ngân

(0C) Sai số 1 34.7 34.0 2.05% 2 29.6 30.0 1.33% 3 28.8 29.0 0.68% 4 24.3 25.0 1.20% 5 30.4 30.0 1.33% Sai số trung bình 1.318%

Bảng 4.3: Kết quả khảo nghiệm

4.9.3 Nhận xét

- Đo cùng lúc 2 giá trị của 2 loại cảm biến nhiệt độ và độ ẩm đất tại những thời điểm khác nhau.

- Hiền thị cùng lúc trên LCD và Web. - Hệ thống hoạt động tương đối ồn định. - Mơ hình nhỏ, gọn gàng, dễ sử dụng. .

Mạch hoạt động ổn trong nhiều trường hợp nhưng đôi lúc xảy ra lỗi kết nối dữ liệu từ mơ hình lên web do yếu tổ mạng dữ liệu không ổn định. Thời gian cập nhật đữ liệu đo từ cảm biến tối thiểu là 15 giây.

CHƯƠNG V:

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Sau nhiều tháng tìm hiểu nghiên cứu, em cũng đã hồn thành đề tài “THIẾT KẾ CHẾ TẠO THIẾT BỊ THU THẬP DỮ LIỆU DATA LOGGER nhiệt - ẩm đất giám sát qua Sim” đúng thời gian quy định. Về cơ bản đã giải quyết được vấn đề đặt ra về nội dung cũng như hình thức. Đây là đề tài mang tính tổng hợp bao gồm cả thiết kế thi cơng mạch và kỹ thuật lập trình.

Về phần cứng, em đã tổng quan về arduino, module SIMCOM 7670C, module SD Card, các linh kiện khác,..

Về phần mềm, em dùng phần mềm Arduino IDE để viết chương trình cho Arduino để đọc các giá trị khi nhận tín hiệu từ các cảm biến thơng qua module SIMCOM 7670C.

- Ưu điểm:

+ Có thể đo, hiển thị giá trị nhiệt độ và độ ẩm tại nhiều điểm đồng thời. + Hiền thị cùng lúc trên LCD 16x2 và Web.

+ Hệ thống hoạt động tương đối ồn định. + Mơ hình nhỏ, gọn gàng, dễ sử dụng.

+ Giao diện WEB Thingspeak đẹp, dễ truy cập cho mọi điện thoại và máy tính có kết nối mạng.

+ Lưu dữ liệu của cảm biến vào thẻ nhớ SD dưới file Notepad. + Hình thức tương đối tốt dễ dàng sử dụng.

- Nhược điểm:

+ Tín hiệu của bộ Module Sim vẫn cịn phụ thuộc vài chất lượng của sóng.

+ Bộ điều khiển chưa được sử dụng trong thời gian dài nên chưa đánh giá được sự ổn định của bộ điều khiển.

Do vấn đề về kinh tế nên đề tài sử dụng loại cảm biến nhiệt độ, độ ẩm cịn ít chính xác. Để có thể thương mại hóa thiết bị rộng rãi cần thay đổi loại cảm biến có độ chính xác cao hơn.

Vì vậy em có một vài ý kiến riêng trong mơ hình sau này để hiện đại hơn:

Hệ thống giám sát có thê phát triển thêm chức năng giám sát và điều khiển thơng qua điện thoại thơng minh. Chúng ta có thê lẫy dữ liệu đã được cập nhật lên Web để có thể tạo ra một App đề giám sát được dữ liệu mà chỉ cần thay đối chương trình Arduino.

TÀI LIỆU THAM KHẢO  https://advancecad.edu.vn/tai-lieu-huong-dan-arduino-free/  https://www.simcom.com/product/A7670X.html  https://123docz.net//document/333214-dong-ho-thoi-gian-thuc-dung-ds- 1307.htm  http://linhkienagv.com/lap-trinh-arduino-sd-card/  https://epcb.vn/blogs/news/cam-bien-nhiet-do-do-am-so-sht3x  http://arduino.vn/bai-viet/917-cam-bien-dat-va-nhung-ung-dung-hay-cua-no  https://www.youtube.com/watch?v=ob4-WuTBH_Y

PHỤ LỤC CODE ARDUINO #include <stdio.h> #include <string.h> #include <Wire.h> #include "RTClib.h" RTC_DS1307 rtc; #include <SPI.h> #include <SD.h> File myFile;

#include <Wire.h>// i2c

#include <LiquidCrystal_I2C.h> // i2c LCD

LiquidCrystal_I2C lcd(0x27, 16, 2); // địa chỉ LCD #include <SoftwareSerial.h> // thư viện uart mềm SoftwareSerial gprsSerial(2, 3); // RX TX của SIM #include "SHT31.h" // thư viện STH31

#define SHT31_ADDRESS 0x44 // địa chỉ SHT SHT31 sht; // dat tên cho SHT 31

unsigned long timewait;

#define DEBUG true int sensorValue; void setup() {

Serial.begin(115200); gprsSerial.begin(115200);

Wire.begin();// bắt đầu I2C rtc.begin();

sht.begin(SHT31_ADDRESS); lcd.init();

lcd.backlight();// bat den nền LCD sht.read();

lcd.setCursor(1, 0);

lcd.print("TL TOT NGHIEP "); lcd.setCursor(3, 1);

lcd.print("DATALOGGER ");

Serial.println("WAIT");

sendData("AT+CRESET", 3000, DEBUG);// RESET SIM delay(25000);

lcd.clear();

Serial.println("Test Begin!");

sendData("AT", 1000, DEBUG); // test nhận module SIM sendData("AT+CPIN?", 1000, DEBUG);

sendData("AT+NETOPEN", 1000, DEBUG);// bật 4G

sendData("AT+HTTPINIT", 1000, DEBUG);// bật chế độ HTTP Serial.println("4G HTTP Test Begin!");

lcd.clear();// xóa màn hình LCD delay(1000); sht.read(); sensorValue = map(analogRead(A0), 1024, 350, 0, 100); timewait = millis(); }

lcd.setCursor(0, 0); lcd.print("NHIET DO: "); lcd.setCursor(10, 0); lcd.print(sht.getTemperature(), 1); lcd.setCursor(14, 0); lcd.print("*C"); lcd.setCursor(0, 1); lcd.print("AM DAT: "); lcd.setCursor(8, 1); lcd.print(" "); lcd.setCursor(8, 1); lcd.print(sensorValue); lcd.print("%"); } void loop() { int Year; int Month; int Date; int Hour; int Minute; int Second;

DateTime now = rtc.now(); Year = now.year();

Month = now.month(); Date = now.day(); Hour = now.hour(); Minute = now.minute();

Second = now.second(); sht.read();// đọc nhiệt độ

sensorValue = map(analogRead(A0), 1024, 350, 0, 100); // chuyển đổi sang % mainscreen();

myFile = SD.open("data.txt", FILE_WRITE);// mở file if (myFile) { myFile.print(Year); myFile.print("/"); myFile.print(Month); myFile.print("/"); myFile.print(Date); myFile.print(" "); myFile.print(Hour); myFile.print(":"); myFile.print(Minute); myFile.print(":"); myFile.print(Second); myFile.print("_Nhiet do_"); myFile.print(sht.getTemperature()); myFile.print(" "); myFile.print("_Do am_"); myFile.println(sensorValue); myFile.close(); } String http_str = "AT+HTTPPARA=\"URL\",\"https://api.thingspeak.com/update? api_key=QRR8MPG3NDZO4BI6&field1=" + String(sht.getTemperature(), 1) +

}

String sendData(String command, const int timeout, boolean debug) {

String response = "";

gprsSerial.println(command);

long int time = millis();

while ( (time + timeout) > millis()) { while (gprsSerial.available()) { char c = gprsSerial.read(); response += c; } } if (debug) { Serial.print(response); } return response; }

Một phần của tài liệu Simcom7670 nhiệt độ ẩm đất, simcom 7600 (Trang 43)

Tải bản đầy đủ (DOCX)

(58 trang)
w