You are on page 1of 23

MỤC LỤC

Trang tựa Trang


LỜI CẢM ƠN ……………………………………………………………...…....…i
TÓM TẮT………………………………………………………………………… ii
MỤC LỤC ………………………………………………………………….……iii
KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT .……………………………………….....iv
DANH SÁCH CÁC HÌNH ………………………………………………..…..v
DANH SÁCH CÁC BẢNG …………….……………..………………...….......vi
Chƣơng 1:TỔNG QUAN .......................................................................................... 1
1.1. Đặt vấn đề. .......................................................................................................1
1.2. Đối tƣợng và phạm vi nghiên cứu: ................................................................1
1.3. Phƣơng pháp nghiên cứu: ..............................................................................1
1.4. Ý nghĩa khoa học và thực tiễn của đề tài: ....................................................1
Chƣơng 2: CƠ SỞ LÝ THUYẾT............................................................................. 2
2.1. Arduino Uno R3 ..............................................................................................2
2.2. Arduino Data Logging Shield ........................................................................3
2.3 C ng tắc t . ......................................................................................................4
2.4 Cảm i n BMP 1 0 ..........................................................................................5
Chƣơng 3: THIẾT KẾ VÀ THI CÔNG .................................................................. 6
3.1. Sơ đ ngu ên . ..............................................................................................6
3.2. Sơ đ khối. .......................................................................................................6
3.3. Chức năng và nhiệm vụ t ng khối. ...............................................................7
3.4. Lƣu đ giải thuật.............................................................................................8
3.5 ng ụng v i uđ Lapvi w ......................................................................9
3.6. K t cấu đo tốc đ gi ƣợng mƣa và hƣ ng gi . .......................................10
3.6.1. K t cấu đo tốc đ gi ..............................................................................10
3.6.2. K t cấu đo hƣ ng gi .............................................................................11
3.6.3. K t cấu đo ƣợng mƣa. ...........................................................................12
Chƣơng 4: KẾT LUẬN........................................................................................... 13
4.1. K t quả đạt đƣợc...........................................................................................13
4.2. Ƣu/khu t đi m. ............................................................................................13
4.3. Hƣ ng phát tri n của đề tài. ........................................................................13
TÀI LIỆU THAM KHẢO ...................................................................................... 14
PHỤ LỤC ................................................................................................................. 15

Trang 0
Trang iii
Trang 1
Trang 0
Chƣơng 1:TỔNG QUAN
1.1. Đặt vấn đề.
Khí hậu là một yếu tố quan trọng hàng đầu đối với vi c phát triển nông nghi p
ở Vi t Nam, một đất nước vẫn còn tới trên 70% dân số sống bằng nghề nông. Đặc
bi t, dưới tác động của biến đổi khí hậu hi n nay mà Vi t Nam sẽ là một trong 5
nước bị ảnh hưởng nghiêm trọng nhất, vi c phòng chống, cảnh báo và ứng phó với
những hi n tượng thời tiết bất thường, đảm bảo cho sự phát triển bền vững của
ngành nông lâm nghi p đóng vai trò rất quan trọng.
Tr m theo d i thời tiết có nhi m v lưu trữ các giá trị thời tiết như nhi t độ ,
lượng mưa, tốc độ gió, hướng gió và áp suất không khí theo chu k thời gian nhất
định và lưu giá trị với định d ng file excel theo ngày tháng và n m, thuận ti n cho
vi c thống kê thời tiết.
1.2. Đối tƣợng và phạm vi nghiên cứu:
Theo d i thời tiết, lưu trữ các thông số giá trị của thời tiết thông qua th nhớ
bằng file excel ti n lợi cho vi c thống kê. Các file được lưu theo thời gian thực và
tên theo ngày tháng, d dàng cho vi c chọn file và xuất biểu đ bằng abview.
Trên mức độ nghiên cứu và làm quen với khí tượng thu v n đề tài bao g m:
0 quặng đo lượng mưa, 01 thiết bị đo tốc dộ gió tự thiết kế, 01 thiết bị xác định
hướng gió, 01 cảm biến đo áp xuất và nhi t độ không khí.
1.3. Phƣơng pháp nghiên cứu:
Thực hi n đề tài bằng thực nghi m, tìm hiểu các cơ sở lí thuyết về lưu trữ dữ
li u trên sách báo, trên m ng internet. T đó nghiên cứu thiết kế ra sản phẩm thực
tế.
1.4. Ý nghĩa khoa học và thực tiễn của đề tài:
Với xu thế biến đổi khí hậu thế giới nói chung và Vi t Nam nói riêng, lưu
trữ thời tiết là một nhu cầu cấp thiết cho vi c theo d i và dự báo thời tiết, đ ng thời
phòng tránh thiên tai. Đối với nông nghi p thì có thể ch m sóc cây tr ng, vật nuôi
theo t ng điều ki n thời tiết hằng ngày dựa trên số li u thời tiết m i n m.
Có thể l p đặt t i nhà, vì giá thành r , s d ng các công t c t thay thế cho
các cảm biến đ t tiền.

Trang 1
Chƣơng 2: CƠ SỞ LÝ THUYẾT
2.1. Arduino Uno R3

Hình 2.1: Arduino Uno R3


Arduino Uno R3 là lo i phổ biến và d s d ng nhất trong các dòng Arduino
hi n nay cũng như tương thích với nhiều lo i Arduino Shield nhất, Arduino UNO
có thể s d ng 3 vi điều khiển họ 8bit AVR là ATmega8, ATmega168,
ATmega328. Bộ não này có thể x lí những tác v đơn giản như: điều khiển đèn
ED nhấp nháy, x lí tín hi u cho xe điều khiển t xa, làm một tr m đo nhi t độ -
độ ẩm và hiển thị lên màn hình CD.
Thông số kỹ thuật:
 Chip điều khiển chính: ATmega328
 Chip n p và giao tiếp UART: ATmega 6U2
 Ngu n nuôi m ch: 5VDC t cổng USB hoặc ngu n ngoài c m t gi c tròn DC
(khuyên dùng 7-9VDC để đảm bảo m ch ho t động tốt. Nếu b n c m 2V thì
IC ổn áp rất d chết và gây hư hỏng m ch).
 Số chân Digital: 4 (h trợ 6 chân PWM)
 Số chân Analog: 6
 Dòng ra tối đa trên GPIO: 40mA
 Dòng ra tối đa trên chân cấp ngu n 3.3VDC: 50 mA

Trang 2
 Dung lượng bộ nhớ Flash: 32 KB, 0.5 KB used by bootloader.
 SRAM: 2 KB
 EEPROM: 1 KB
 Tốc độ th ch anh: 6 MHz
2.2. Arduino Data Logging Shield

Hình 2.2: Arduino Data Logging Shield


Arduino Data ogging Shield được s d ng với Arduino như một công c
lưu dữ li u thời gian thực với khe c m th nhớ tích hợp và bộ thời gian thực RTC
DS 307, thích hợp cho các ứng d ng lưu trữ dữ li u trên Arduino.
Thông số kỹ thuật:
 Giao tiếp th nhớ SD Card.
 Bộ thời gian thực RTC DS 307 lưu trữ l i thời gian ngay cả khi không kết nối
với arduino, đi kèm theo một c c pin đ ng h để lưu trữ thời gian.
 Có h trợ bộ thư vi n và các ví d mẫu với vi c giao tiếp với SD Card và RTC
giúp b n d dàng b t đầu với shield một cách nhanh chóng.
 Khu vực l trên Board có thể hàn thêm các m ch đi n, connector hoặc sensor,...

Trang 3
 Tương thích với Arduino Uno, eonardo, Mega 2560 R3, Mega ADK R3,...
2.3 C ng tắc t .
Công t c t lo i thường mở 4x2 mm . nó có kích thước nhỏ gọn và trọng
lượng nh có thể được l p đặt trong không gian h n chế, rất thích hợp cho các thiết
bị thu nhỏ.

Hình 2.3:

 Thông số kỹ thuật:
- Tổng Chiều Dài 44 mm.
- Chiều Dài càng kính: 14 mm.
- Thủy tinh Đường Kính 2 mm.
- Công suất tối đa 0 Wát.
- Đi n áp cao 250VDC.
- Chuyển đổi nhi t độ tối đa 0.5A.
- Tải trọng tối đa .0A.
- Thời gian hành động .0 ms.
- Độ nảy thời gian 0.6 ms.
- Thời Gian phát hành 0.4 ms.
- Đáp ứng tần số 4000Hz.

Trang 4
- Tối đa tần số ho t động 500Hz.
2.4 Cảm i n BMP 1 0
Cảm biến áp suất BMP 80 đo áp suất của môi trường s d ng áp kế số. Bằng
cách chuyển đổi áp suất thành độ cao tương ứng, b n có thể dùng cho vi c xác định
độ cao của robot, máy bay hay một vật thể được phóng lên cao.
Cảm biến BMP 80 có thể đo được áp suất trong dải 300 ~ 00hPa, thiết bị
chỉ ho t động với dòng đi n nhỏ khoảng 0.3uA thích hợp cho các thiết bị s d ng
Pin.
Cảm biến đi kèm bộ hi u chỉnh và sẵn sàng cho vi c s d ng. Giao tiếp
chuẩn I2C đã có trở kéo lên sẵn trên Board thuận ti n cho vi c s d ng. S d ng
I2C, thiết bị cung cấp áp suất và nhi t độ lên đến 6bits.

Hình 2.4: BMP 180


Thông số kỹ thuật.
- Đi n áp cung cấp: .8 ~ 3.6V
- Công suất tiêu th thập: 0.5uA t i Hz
- Giao tiếp chuẩn I2C
- Tốc độ I2C max: 3.5MHz
- Độ nhi u rất thấp lên đến 0.02hPa ( 7cm)
- Có sẵn bộ hiểu chỉnh bên trong.
- Dải đo áp suất: 300hPa ~ 00hPa (+9000m đến -500m)
- Trọng lượng: . 8g
- Kích thước: 2 mm x 8mm

Trang 5
Chƣơng 3: THIẾT KẾ VÀ THI CÔNG
3.1. Sơ đ ngu ên .

Hình 3.1:
3.2. Sơ đ khối.

Khối Ngu n

Khối
Cảm biến Khối x lí trung tâm Khối lưu trữ

Hình 3.2. k ố.

Trang 6
3.3. Chức năng và nhiệm vụ t ng khối.
 Khối ngu n:
- Điều khiển t t mở ngu n.
- Ổn định ngu n và cung cấp ngu n cho các tải tiêu th .
- Ngu n 5V dòng tối đa 3A đảm bảo đủ tải cho toàn bộ mô hình.
 Khối cảm biến:
- Duy trì và truyền tín hi u về khối x lí trung tâm.
- Khối bao g m cảm biến BMP 180.
 Khối x lí trung tâm .
- Giao tiếp với các khối còn l i.
- Nhận tín hi u t khối cảm biến.
- X lí và truyền vào khối lưu trữ.

Trang 7
3.4. Lƣu đ giải thuật.

B t đầu chương trình

Khởi ch y RTC

Khởi động Thất b i


th SD

Thành công

T o file

Thất b i

Đọc giá trị


cảm biến

Thành công

ưu vào file
Kết thúc
ngày

Kiểm tra thời gian ch y

Hình 3.3. Lư ậ.
Giải thích:
- Khi chương trình ho t động Arduino sẽ kiểm tra m ch thời gian thực và th
nhớ SD. Nếu th SD chưa được c m vào thì d ng chương trình , sau khi th SD

Trang 8
khởi động xong sẽ tiến hành t o file. File được t o có tên là N- -T- - với phía sau N
là thời gian ngày và tháng ch y theo thời gian thực. Khi quá trình tiến hành hết 0
ngày sẽ tự động Reset.
- Khi file đã được t o xong và sẵn sàng để lưu dữ li u Arduino sẽ tiến hành
đọc giá trị của cảm biến. Nếu quá trình đọc giá trị cảm biến thất b i chương trình sẽ
quay l i bước đọc giá trị cảm biến, ngược l i khi giá trị cảm biến được di n ra hoàn
tất thì b t đầu lưu dữ li u vào file đã t o trước đó.
- Chu k đọc, lưu giá trị cảm biến được thực hi n 5 giây lần.
3.5 ng ụng v i uđ Lapvi w .
Để thuận ti n cho vi c theo dỏi thời tiết thì biểu đ là một trong những công c
quan trọng cho vi c đó, vì vậy ra đời ứng d ng vẽ biểu đ là một nhu cầu cấp thiết cho
cho người quan sát theo d i thời tiết.
Vận d ng các kiến thức đã học ở học kì môn điều khiển và đo lường bằng máy
tính ứng d ng vẽ biểu đ là sản phẩm để vẽ biểu đ theo ngày tháng và theo các cột
trong file excel được arduino lưu l i.

Hình 3.4:

Trang 9
3.6. K t cấu đo tốc đ gi ƣợng mƣa và hƣ ng gi .
3.6.1. K t cấu đo tốc đ gi

Hình 3.5: ậ ố
- Với kết cấu 3 muổng hứng gió được cách đều nhau t o thành hướng quay
cố định chỉ theo chiều khi có gió tác động. Bán kính t tâm đến muổng là 0.065
mét, thời gian lấy mẫu m i 5 giây lần, mô hình đo gió với công thức:
V(km h) số vòng x bán kính x 2pi x 2 x 60 ÷ 000 x (sai số)
- Phần thiết kế cơ khí bằng nhựa in 3D nh kết hợp với vòng bi siêu nhỏ
giảm tối đa lực ma sát.
- Sai số là hằng số chênh l ch giữa máy đo gió thực tế với mô hình, độ chính
xác của mô hình tương đương máy đo Hot-Wire Air Velocity Meter.

Trang 10
Hình 3.6
3.6.2. K t cấu đo hƣ ng gi

Hình 3.7: ậ ư
- Với 8 công t c t chia đều theo hình tr đứng bên trong. Đảm bảo khi nam
châm ở giữa hai công t c cả 2 sẽ bật, đều này sẽ t o được 6 trường hợp ứng với 6
hướng gió.

Trang 11
Hình 3.8 ư
3.6.3. K t cấu đo ƣợng mƣa.

Hình 3.9 ư ư
- Bộ phận đo lượng mưa được chia thành 2 phần với thể tích bằng nhau. Thể
tích chứa nước m i lần bậc là 0ml. Tiết di n hứng nước trên bề mặt quặng là
56.7cm2. Công thức tính mực nước mưa:
H (cm) Số lần bậc x 0 ÷ 56.7

Trang 12
Chƣơng 4: KẾT LUẬN
4.1. K t quả đạt đƣợc.
- Tìm hiểu và s d ng được cơ bản cách lưu dữ li u.
- Hiểu được chức n ng và ứng d ng của cảm biến nhi t độ và áp suất
BMP180.
- Tìm hiểu và thiết kế được mô hình.
- ập trình trên labview t o giao di n vẽ biểu
- H thống ho t động đúng yêu cầu đặt ra.
4.2. Ƣu/khu t đi m.
 Ưu điểm:
- Mô hình ho t động ổn định.
- Vận d ng linh ki n cơ bản để t o mô hình phức t p.
- Thiết kế các mô hình đo bằng nhựa t máy in 3D độ bền cao.
- H thống có thể tháo lấp d dàng.
- Mô phỏng được quá trình ho t động của một h thống theo d i thời tiết.
- Có phần giao di n vẽ biểu đ ti n lợi trong vi c quan sát theo d i.
 Khuyết điểm:
- Chưa có độ chính xác tuy t đối, gió là đ i lượng vật l rất tương đối khó
kiểm chứng.
- Phần giao di n vẽ biểu đ chưa vẽ được trung bình của tháng.
4.3. Hƣ ng phát tri n của đề tài.
- Cải thi n thiết kế cơ khí để giống với h thống thực bên ngoài.
- Nâng cao độ chính xác.
- Kết hợp thêm nhiều cảm biến để nâng cấp như một khí tượng thu v n.
- àm thêm đưa dữ li u lên web để ti n cho vi c theo d i t xa.

Trang 13
TÀI LIỆU THAM KHẢO

[1] tưởng tr m theo d i thời tiết: https://www.thingiverse.com/thing:2849562


[2]Code tham khảo mô hình tr m thực tế: http://cactus.io/projects/weather/arduino-
weather-station-web-server-basic
[3] Viết code Arduino bằng giao di n kéo thả:http://easycoding.tn
4 Tham khảo h thống thực: https://baotainguyenmoitruong.vn/tu-van-phap-
luat/cong-trinh-khi-tuong-thuy-van-gom-nhung-gi-1255158.html
5 Viết giao di n labview giao tiếp với file excel
https://www.youtube.com/watch?v=W CTiOHc5kXA
6 Viết giao di n labview giao tiếp với file excel :
https://www.youtube.com/watch?v=qIWcMPuDvBU

Trang 14
PHỤ LỤC

Code arduino:
#include <LiquidCrystal.h>
#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include "RTClib.h"
#include <Adafruit_BMP085.h>
const int chipSelect = 10;
File logfile;
RTC_DS1307 RTC;
int e,g,c,show = 0,error = 0,pointer = -1,revolutions = 0,rps = 0;
byte direct = 1;
char* compass[] = {"N ", "NNE", "NE ", "NEE", "E ", "SEE", "SE ",
"SSE", "S ", "SSW", "SW ", "SWW", "W ", "NWW", "NW ",
"NNW","???"};
float radius = 0.065,rainfall2,kmph;
double rainfall = 0;
const unsigned long CHU_KY_1 = 5000UL;
unsigned long chuky1 = 0;
double temperature = 0.0;
double barometer = 0.0;
Adafruit_BMP085 bmp;
void setup()
{ pinMode( 4, INPUT_PULLUP);
pinMode( 5, INPUT_PULLUP);
pinMode( 6, INPUT_PULLUP);
pinMode( 7, INPUT_PULLUP);
pinMode( 8, INPUT_PULLUP);

Trang 15
pinMode( 9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
pinMode(2, INPUT_PULLUP);
attachInterrupt(0, rps_fan, FALLING);
pinMode(3, INPUT_PULLUP);
attachInterrupt(1, tipbuckets, FALLING);
bmp.begin();
Serial.begin(9600);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()){
RTC.adjust(DateTime(__DATE__, __TIME__));}
pinMode(SS, OUTPUT);
if (!SD.begin(chipSelect)) {
delay(3000);
asm volatile ( "jmp 0"); }
DateTime now = RTC.now();
c = (now.minute());
e = c/2 +1;
g = (now.hour());
char filename[] = "N00T00.csv";
filename[1] = (e/10)+'0';
filename[2] = (e%10)+'0';
filename[4] = (g/10)+'0';
filename[5] = (g%10)+'0';
if (!SD.exists (filename))
{ logfile = SD.open(filename, FILE_WRITE);
logfile.print(" ");

Trang 16
logfile.println("Date,Time,Nhietdo(C),Tocdogio(m/s),Huonggio,Luongmua(
ml),Apsuat(Pa)" );}
else {logfile = SD.open(filename, FILE_WRITE);}
Serial.println(filename);
}
void loop() {
String dataString = "";
DateTime now = RTC.now();
if (e == now.minute()/2)
{ asm volatile ( "jmp 0");}
if (millis() - chuky1 > CHU_KY_1) {
rps = revolutions;
revolutions = 0;
chuky1 = millis();
direct = (((PINB & B00001111) << 4) | ((PIND & B11110000) >> 4)) ^
B11111111;
switch (direct) {
case 1://00000001
pointer = 0;
break;
case 3://00000011
pointer = 1;
break;
case 2://00000010
pointer = 2;
break;
case 6://00000110
pointer = 3;
break;

Trang 17
case 4://00000100
pointer = 4;
break;
case 12://00001100
pointer = 5;
break;
case 8://00001000
pointer = 6;
break;
case 24://00011000
pointer = 7;
break;
case 16://00010000
pointer = 8;
break;
case 48://00110000
pointer = 9;
break;
case 32://00100000
pointer = 10;
break;
case 96://01100000
pointer = 11;
break;
case 64://01000000
pointer = 12;
break;
case 192://11000000
pointer = 13;
break;

Trang 18
case 128://10000000
pointer = 14;
break;
case 129://10000001
pointer = 15;
break;
default:
pointer = 16;//???
break;
}
if (rps != -1) { //Update every 5 seconds, this will be equal to reading
frequency (Hz)x5.
kmph = rps * 3.1414 * 2 * radius * 12 * 60 / 1000; // sô
vong*2pi*r*12*60 van toc km/h
temperature = (double)bmp.readTemperature(); //internal temperature
barometer = (double)bmp.readPressure() / 100.0; //Pa reduced to mBar
logfile.print(" ");
logfile.print(now.year(), DEC);
logfile.print('-');
logfile.print(now.month(), DEC);
logfile.print('-');
logfile.print(now.day(), DEC);
logfile.print(",");
logfile.print(now.hour(), DEC);
logfile.print('-');
logfile.print(now.minute(), DEC);
logfile.print('-');
logfile.print(now.second(), DEC);
logfile.print(",");
logfile.print(temperature,1);

Trang 19
logfile.print(',');
logfile.print(kmph,2);
logfile.print(',');
logfile.print(compass[pointer]);
logfile.print(',');
logfile.print(rainfall2,2);
logfile.print(',');
logfile.print(barometer,0);
logfile.print(',');
logfile.println(dataString);
logfile.flush();
}}}
void rps_fan() {
revolutions++;}
void tipbuckets() {
rainfall++;//the tich moi lan bac la 10ml
rainfa ll2 = rainfall*10/56.7;}

Trang 20

You might also like