Module thời gian thực RTC DS1307

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

Thơng số kỹ thuật:

IC chính: RTC DS1307 + EEPROM AT24C32 Nguồn cung cấp: 5VDC.

Giao tiếp: I2C

Lưu trữ và cung cấp các thông tin thời gian thực: ngày, tháng, năm, giờ, phút, giây,... Có pin backup duy trì thời gian trong trường hợp khơng cấp nguồn.

Có ngõ ra tần số 1Hz.

CHƯƠNG III :PHƯƠNG PHÁP NGHIÊN CỨU VÀ PHƯƠNG TIỆN NGHIÊN CỨU

3.1 Đối tượng nghiên cứu

Sinh viên tiến hành tìm hiểu về vi điều khiển Arduino UNO R3, nghiên cứu một số thiết bị đo nhiệt độ và độ ẩm, nguyên lý hoạt động cảm biến nhiệt ẩm SHT3X và cảm biến độ ẩm đất Soil Moisture Sensor, phương pháp truyền data vào thẻ nhớ SD, xây dựng giải thuật truyền tín hiệu đa kênh, viết chưng trình điều khiển thiết bị thu thập dữ liệu đa kênh.

3.2 Thiết bị nghiên cứu

- Arduino UNO R3.

- Module SIMCOM 7670C - Cảm biến nhiệt ẩm SHT3X.

- Cảm biến độ ẩm đất Soil Moisture Sensor. - SD Card Module.

- Module thời gian thực RTC DS1307. - Và các linh kiện khác..v.v,,,

3.3 Phương pháp thực hiện

Bước 1: Tìm hiểu mơ hình “Thiết bị thu thập dữ liệu Dataloger nhiệt - ẩm đất giám sát qua Sim” trong thực tiễn

Bước 2: Tìm hiểu về các kiến thức về kit Arduino Uno R3, ngơn ngữ lập trình Arduino IDE, nguyên lý hoạt động của cảm biến nhiệt ẩm SHT3X, cảm biến độ ẩm đất Soil Moisture Sensor.

Bước 3: Cài đặt phầm mềm, thư viện cần thiết để lập trình. Bước 4: Viết chương trình.

Bước 5: Thiết kế và thi cơng mơ hình.

CHƯƠNG IV: THỰC HIỆN ĐỀ TÀI

KẾT QUẢ NGHIÊN CỨU VÀ KHẢO NGHIỆM

4.1 Thực hiện đề tài4.1.1 Sơ đồ tổng quát: 4.1.1 Sơ đồ tổng quát:

Với đồ án “ Thiết kế chế tạo thiết bị thu thập dữ liệu DATALOGER nhiệt - ẩm đất giám sát qua Sim”, việc thiết kế phần cứng của mạch hệ thống cụ thể chia làm 5 khối cơ bản:

- Khối nguồn là khối cung cấp nguồn cho bộ điều khiển hệ thống và các khối mạch khác hoạt động ổn định. Yêu cầu đối với khối nguồn là tính ổn định và giá trị điện áp cung cấp phải phù hợp với các khối chức năng khác của bộ điều khiển. Ở đây sử dụng nguồn là Adapter 9V 2A.

- Khối điều khiển Arduino Uno R3 là khối xử lý trung tâm của hệ thống, thực hiện việc tiếp nhận tín hiệu từ cảm biến và truyền dữ liệu tới Sim.

- Khối cảm biến: có chức năng chuyển đổi giá trị cảm biến sang tín hiệu điện. - Khối hiển thị: có chức năng hiển thị kết quả ra LCD.

4.1.2 Lưu đồ giải thuật

Đầu tiên khởi tạo arduino cũng như thư viện của các module và giao tiếp Software Serial giữa arduino với SIMCOM 7670C. Sau đó ta khởi tạo các hàm LCD và kiểm tra xem các lệnh AT của module SIMCOM đã giao tiếp được chưa? Nếu được trả vẻ cài đặt hồn tất cịn nếu chưa thỉ quay lại hàm khởi tạo AT xem và kiểm tra lỗi.

Vào vịng lặp void loop thì lúc này các cảm biến sẽ được quét và kiểm tra liên tục có hoạt động khơng nếu hoạt động thì sẽ gửi đữ liệu lên LCD và ThingSpeaks Server. Cứ như vậy thì cảm biến sẽ lần lượt đọc thơng số dữ liệu của cảm biến và đưa lên LCD cũng như ThingSpeaks Server thơng qua SIMCOM7670C đã giao tiếp với Arduino trước đó đồng thời cập nhật thời gian và lưu dữ liệu vào thẻ SD Card.

4.2 Nguyên lý làm việc của thiết bị thu thập tín hiệu

Cảm biến gửi dữ liệu thu được vào Arduino UNO R3, Arduino UNO R3 xử lí, kiểm tra và gửi dữ liệu vào SD Card Module và được lưu vào SD Card dưới file Notepad.

Đồng thời hiển thị số liệu lên LCD 16x2 và gửi dữ liệu lên WEB Thingspeak.

4.3 Sơ đồ liên kết giữa Arduino với các linh kiện

4.4 Sơ đồ nguyên lý hệ thống thu thập dữ liệu

4.5 Thiết kế mạch

Sau khi chạy thử nghiệm trên test board, mạch hoạt động ổn định, tương đối chính xác, em tiến hành thiết kế mạch in bằng phần mềm Proteus.

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 36)

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

(58 trang)
w