1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn môn ứng dụng máy tính trong đo lường và điểu khiển giám sát nhiệt độ , độ ẩm môi trường, độ ẩm đất và điều khiển thiết bị trong nông nghiệp

41 94 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giám sát nhiệt độ , độ ẩm môi trường, độ ẩm đất và điều khiển thiết bị trong nông nghiệp
Tác giả Đào Thành Lộc, Phạm Văn Lực, Nguyễn Thị Nga
Người hướng dẫn GVHD: Hoàng Văn Mạnh
Trường học Đại học Quốc gia Hà Nội
Chuyên ngành Công nghệ
Thể loại Bài tập lớn
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 41
Dung lượng 4,57 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hiện nay, cách mạng công nghiệp 4.0 đang là xu thế phát triển trên thế giới, đi cùng với đó lĩnh vực IOT (Vạn vật internet - Internet of things) là thành phần không thể thiếu. Đối với các nước phát triển, nền công nghiệp của họ đã có thể được quản lý, giám sát và hoạt động hầu hết bằng máy móc mà chỉ tốn rất ít nhân công. Dần dần, lĩnh vực tưởng chừng chỉ phù hợp với các ngành công nghiệp này đã lan sang cả các ngành nông nghiệp. Ở nhiều nước, nền nông nghiệp của họ đã đi theo một hướng phát triển mới đó là nông nghiệp chính xác hoặc canh tác chính xác, đó là kỹ thuật áp dụng đúng số lượng đầu vào (nước, phân bón, thuốc trừ sâu…) vào đúng vị trí và thời điểm để tăng cường sản xuất và nâng cao chất lượng nông sản. Ở Việt Nam, nông nghiệp chủ yếu vẫn phụ thuộc 90% vào thời tiết, khí hậu tức là vẫn thụ động trước những biến cố mà thiên nhiên gây ra cho cây trồng của mình. Nhận thức được vấn đề đó, chúng em đã lựa chọn đề tài “Nghiên cứu, tích hợp hệ thống mạng cảm biến trong nông nghiệp” với hi vọng sẽ có thể sẽ phát triển một hệ thống nông nghiệp thông minh công nghệ cao.

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI ĐẠI HỌC CÔNG NGHỆ

BÀI TẬP LỚN

ỨNG DỤNG MÁY TÍNH TRONG ĐO LƯỜNG VÀ ĐIỀU

KHIỂN

ĐỀ TÀI : Giám sát nhiệt độ , độ ẩm môi trường, độ ẩm đất

và điều khiển thiết bị trong nông nghiệp

Sinh viên

thực hiện:

Hà Nội, năm 2021

Trang 2

NHIỆM VỤ TỪNG THÀNH VIÊN

thành

Đào Thành Lộc Thiết kế cơ sở dữ liệu, giao diện điềukhiển qua máy tính, lập trình điều

khiển cho thiết bị

100%

Phạm Văn Lực Thiết kế mạch nguyên lý, mạchPCB, đấu nối phần cứng 100%

Nguyễn Thị Nga Thiết kế ứng dụng điều khiển quathiết bị di động (Smartphone) 100%

ĐÁNH GIÁ ĐIỂM TỪNG THÀNH VIÊN

- Điểm giảng viên đánh giá:

- Nhận xét của giảng viên:

- Điểm từng thành viên:

+ Đào Thành Lộc: + Phạm Văn Lực: + Nguyễn Thị Nga:

Giảng viên

Hoàng Văn Mạnh

Trang 3

MỤC LỤC

NHIỆM VỤ TỪNG THÀNH VIÊN 2

ĐÁNH GIÁ ĐIỂM TỪNG THÀNH VIÊN 2

LỜI MỞ ĐẦU 5

PHẦN 1: CƠ SỞ LÝ THUYẾT LIÊN QUAN 6

1.1 Vi điều khiển ATMEGA16 6

1.1.1 Kiến trúc vi điều khiển 6

1.1.2 Giới thiệu vi điều khiển Atmega 16 6

1.2 Cơ sở dữ liệu Firebase 7

1.3 Lập trình giao diện với ngôn ngữ C # 8

PHẦN 2: NỘI DUNG THỰC HIỆN 10

2.1 Thành phần hệ thống 10

2.1.1 Vi điều khiển Atmega16 10

2.1.2 Node MCU8266 11

2.1.3 Cảm biến độ ẩm đất và bộ chuyển đổi 12

2.1.4 Cảm biến nhiệt độ, độ ẩm DHT11 13

2.2 Thiết kế mạch hệ thống 14

2.2.1 Khối vi điều khiển 15

2.2.2 Khối nguồn 15

2.2.3 Khối relay 16

2.2.4 Khối nút nhấn 16

2.2.5 Mạch mô phỏng 3D và mạch thực tế: 16

2.3 Chương trình nạp cho Vi điều khiển 18

2.4 Giao diện giám sát và điều khiển trên máy tính: 26

2.5 Code giao tiếp UART giữa Atmega16 với ESP8266 29

2.6 Giao diện giám sát và điều khiển trên điện thoại: 35

PHẦN 3: KẾT LUẬN, ĐÁNH GIÁ ĐỀ TÀI VÀ HƯỚNG PHÁT TRIỂN 37

Trang 4

3.1 Kết luận 37

3.2 Đánh giá 37

3.2.1 Ưu điểm 37

3.2.2 Nhược điểm 37

3.3 Hướng phát triển thiết bị trong tương lai 37

Trang 5

để tăng cường sản xuất và nâng cao chất lượng nông sản.

Ở Việt Nam, nông nghiệp chủ yếu vẫn phụ thuộc 90% vào thời tiết, khí hậu tức là vẫn thụ động trước những biến cố mà thiên nhiên gây ra cho cây trồng của mình Nhậnthức được vấn đề đó, chúng em đã lựa chọn đề tài “Nghiên cứu, tích hợp hệ thống mạng cảm biến trong nông nghiệp” với hi vọng sẽ có thể sẽ phát triển một hệ thống nông nghiệp thông minh công nghệ cao

Trang 6

PHẦN 1: CƠ SỞ LÝ THUYẾT LIÊN QUAN1.1 Vi điều khiển ATMEGA16

1.1.1 Kiến trúc vi điều khiển

AVR là họ vi điều khiển 8 bit theo công nghệ mới, với những tính năng rấtmạnh được tích hợp trong chip của hãng Atmel theo công nghệ RISC, nó mạnhngang hàng với các họ vi điều khiển 8 bit khác như PIC, Pisoc Do ra đời muộn hơnnên họ vi điều khiển AVR có nhiều tính năng mới đáp ứng tối đa nhu cầu của người

sử dụng, so với họ 8051 89xx sẽ có độ ổn định, khả năng tích hợp, sự mềm dẻotrong việc lập trình và rất tiện lợi

*Tính năng mới của họ AVR

- Giao diện SPI đồng bộ

- các đường dẫn vào ra (I/O) lập trình được

- Giao tiếp I2C

- Bộ biến đổi ADC10 bit

- Các kênh băm xung PWM

- Các chế độ tiết kiệm năng lương như sleep…

- Một bộ định thời Watchdog

- 3 bộ timer/Counter 16 bit

- 1 bộ so sánh analog

- Bộ nhớ EEPROM

- Giao tiếp USART/VV

1.1.2 Giới thiệu vi điều khiển Atmega 16

Atmelga16 có đầy đủ tính năng của họ AVR, về giá thành so với các loại khácthì giá thành là vừa phải khi nghiên cứu và làm các công việc ứng dụng tới vi điềukhiển Tính năng:

- Bộ nhớ 16 K (flash) – 512 byte (EEPROM) – 1 K (SRAM)

- Đóng vỏ 40 chân , trong đó có 32 chân vào ra dữ liệu chia làm 4 PORT A,B,C,D.Các chân này đều có chế độ pull_up resistors

- Giao tiếp SPI – Giao tiếp I2C – Có 8 kênh ADC 10 bit

- 1 bộ so sánh analog – 4 kênh PWM

Trang 7

- 2 bộ timer/ counter 8 bit.1 bộ timer/counter1 16 bit

- 1 bộ định thời WatchDog

- 1 bộ truyền nhận UART lập trình được

Mô tả các chân

- VCC và GND 2 chân cấp nguồn cho vi điều khiển hoạt động

- Reset đây là chân reset cứng khởi động lại mọi hoạt động của hệ thống

- 2 chân XTAL1,XTAL2 các chân tạo bộ dao động ngoài cho vi điều khiển, cácchân này được nối với thạch anh (haysuwr dụng lạo 16 M ), tụ gốm (22p)

- Chân Vret thường nối lên 5V(VCC), nhưng khi sử dụng bộ ADC thì chân nàyđược sử dụng làm điện thế so sánh, khi chân này phải cấp cho nó điện áp cố địnhPhần mềm lập trình Atmelstudio

1.2 Cơ sở dữ liệu Firebase

Cụ thể là những giao diện lập trình ứng dụng API đơn giản Mục đích nhằmtăng số lượng người dùng và thu lại nhiều lợi nhuận hơn

Đặc biệt, còn là dịch vụ đa năng và bảo mật cực tốt Firebase hỗ trợ cả hai nềntảng Android và IOS Không có gì khó hiểu khi nhiều lập trình viên chọn Firebaselàm nền tảng đầu tiên để xây dựng ứng dụng cho hàng triệu người dùng trên toànthế giới

- Firebase Realtime Database:

Khi đăng ký một tài khoản trên Firebase để tạo ứng dụng, bạn đã có một cơ sở

dữ liệu thời gian thực Dữ liệu bạn nhận được dưới dạng JSON Đồng thời nó cũngluôn được đồng bộ thời gian thực đến mọi kết nối client

Đối với các ứng dụng đa nền tảng, tất cả các client đều sử dụng cùng một cơ sở

dữ liệu Nó được tự động cập nhật dữ liệu mới nhất bất cứ khi nào các lập trình viên

Trang 8

phát triển ứng dụng Cuối cùng, tất cả các dữ liệu này được truyền qua kết nối antoàn SSL có bảo mật với chứng nhận 2048 bit.

Trong trường hợp bị mất mạng, dữ liệu được lưu lại ở local, vì thế khi có mọi

sự thay đổi nào đều được tự động cập nhật lên Server của Firebase Bên cạnh đó,đối với các dữ liệu ở local cũ hơn với Server thì cũng tự động cập nhật để được dữliệu mới nhất

Hình 1:Reatime Database

- Ưu điểm khi dùng Firebase là gì?

Từ các cách thức hoạt động phía trên, chắc hẳn bạn đã nhận thấy sơ lược những lợiích mà Firebase mang lại cho cộng đồng lập trình nói chung và các lập trình viênxây dựng ứng dụng nói riêng

Cụ thể hơn, các lợi ích này bao gồm:

Triển khai ứng dụng nhanh chóng

Bảo mật

Sự ổn định

- Nhược điểm của Firebase là gì?

“Firebase” chính là phần Realtime Database, đúng hơn chỉ là phần Database

Cơ sở dữ liệu của họ được tổ chức theo kiểu trees, parent-children, không phải làkiểu Table nên những ai đang quen với SQL có thể sẽ gặp khó khăn từ mức đôi chúttới khá nhiều

Trang 9

1.3 Lập trình giao diện với ngôn ngữ C #

- C# là ngôn lập trình hướng đối tượng được phát triển bởi Microsoft,Microsoftphát triển C# dựa trên C++ và java C# được miêu tả là ngôn ngữ có sự cân bằnggiữa C++.Visual Basic Delphi và java

- C# được thiết kế chủ yếu bởi Anders kiến trúc sư phần mềm nổi tiếng với cácsản phẩm Turbo Pascal, Delphi,J++.WFC

- C# theo một hướng nào đó là ngôn ngữ lập trình phản ánh trực tiếp nhất đếnNET Framework mà tất cả chương trình.NET chạy và nó phụ thuộc mạnh mẽ vàoFramwork này.Mọi dữ liệu cơ sở đều là đối tượng được cấp phát và hủy bỏ bời trìnhdọn rác và nhiều kiểu trừu tượng khác nhau như calss… phản ánh rõ rang những đặctrung của.Net runtime

- So sánh với C và C++ Ngôn ngữ C# bị giới hạn và được nâng cao ở một vàiđặc điểm nào đó , nhưng không bao giờ gồm các giới hạn sau

Các con trỏe chỉ có thể được sử dụng trong các chế độ không an toàn Hầu hếtcác đối tượng được tham chiếu an toàn và các phép tính đề được kiểm tratràn bộ đệm.Các con trỏe được gọi bằng cách tham chiếu

Các đối tượng không thể được giải phóng tường minh

Chỉ có đơn khế thừa, nhưng có thể cài đặt nhiều interface trừu tượng Chứcnăng này làm đơn giản hóa sự thực thi của thời gian thực thi

Trang 10

PHẦN 2: NỘI DUNG THỰC HIỆN2.1 Thành phần hệ thống

2.1.1 Vi điều khiển Atmega16

gỡ lỗi Thiết bị hỗ trợ thông lượng của 16 MIPS ở 16 MHz và hoạt động giữa 5,5 volt

4,5-Vi điều khiển ATMEGA16 thực hiện hướng dẫn trong một chu kỳ đồng hồ duynhất, các thiết bị đạt được thông lượng gần 1 MIPS mỗi MHz, cân bằng điện năngtiêu thụ và tốc độ xử lý

Trang 11

Hình 2: Sơ đồ chân Atmega16

2.1.2 Node MCU8266

- Giới thiệu Node Mcu8266

ESP8266 là một mạch vi điều khiển có thể giúp chúng ta điều khiển các thiết bị điện

tử Thêm vào đó nó được tích hợp wi-fi 2.4GHz có thể dùng cho lập trình

Hình 3: ESP8266 NODE MCU

Trang 12

- Thông số kỹ thuật

 WiFi: 2.4 GHz hỗ trợ chuẩn 802.11 b/g/n

 Điện áp hoạt động: 3.3V

 Điện áp vào: 5V thông qua cổng USB

 Số chân I/O: 11 (tất cả các chân I/O đều có Interrupt/PWM/I2C/One-wire, trừchân D0)

 Số chân Analog Input: 1 (điện áp vào tối đa 3.3V)

 Bộ nhớ Flash: 4MB

 Giao tiếp: Cable Micro USB ( tương đương cáp sạc điện thoại )

 Hỗ trợ bảo mật: WPA/WPA2

 Tích hợp giao thức TCP/IP

 Lập trình trên các ngôn ngữ: C/C++, Micropython,…

2.1.3 Cảm biến độ ẩm đất và bộ chuyển đổi

- Cảm biến độ ẩm đất: Hai đầu đo của cảm biến được cắm vào đất để phát hiện độ

ẩm Dùng dây nối giữa cảm biến và module chuyển đổi Thông tin về độ ẩm đất sẽđược đọc về và gởi tới module chuyển đổi

Trang 13

Hình 4: Cảm biến độ ẩm đất

- Bộ chuyển đổi: Module chuyển đổi có cấu tạo chính gồm một IC so sánhLM393, một biến trở , 4 điện trở dán 100 ohm và 2 tụ dán Biến trở có chức năng địnhngưỡng so sánh với tín hiệu độ ẩm đất đọc về từ cảm biến Ngưỡng so sánh và tín hiệucảm biến sẽ là 2 đầu vào của IC so sánh LM393 Khi độ ẩm thấp hơn ngưỡng địnhtrước, ngõ ra của IC là mức cao (1), ngược lại là mức thấp (0)

Hình 4: Cảm biến độ ẩm đất

- Đặc điểm:

- Điện áp hoạt động: 3.3V-5V

- Kích thước PCB: 3cm * 1.6cm

- Led báo hiệu

 Led đỏ báo nguồn

 Led xanh báo mức độ ẩm ở pin DO

Mô tả các pin trên module:

Trang 14

Pin Mô tả

AO Đầu ra tín hiệu tương tự

- Ứng dụng: Cảm biến độ ẩm đất có thể được sử dụng cho các ứng dụng nông nghiêp, tưới nước tự động cho các vườn cây khi đất khô, hoặc dùng trong các ứng dụng của hệ thống nhà thông minh

2.1.4 Cảm biến nhiệt độ, độ ẩm DHT11

DHT11 Là cảm biến rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệuthông qua giao tiếp 1-wire (giao tiếp digital 1-wire truyền dữ liệu duy nhất) Cảm biếnđược tích hợp bộ tiền xử lý tín hiệu giúp dữ liệu nhận về được chính xác mà không cầnphải qua bất kỳ tính toán nào

Hình 5: Cảm biến nhiệt độ DHT11

Thông số kỹ thuật

- Điện áp hoạt động: 3V - 5V (DC)

- Dãi độ ẩm hoạt động: 20% - 90% RH, sai số ±5%RH

- Dãi nhiệt độ hoạt động: 0°C ~ 50°C, sai số ±2°C

- Khoảng cách truyển tối đa: 20m

Nguyên lý hoạt động: Để có thể giao tiếp với DHT11 theo chuẩn 1 chân vi xử lýthực hiện theo 2 bước:

- Gửi tin hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại

Trang 15

- Khi đã giao tiếp được với DHT11, Cảm biến sẽ gửi lại 5 byte dữ liệu vànhiệt độ đo được.

2.2 Thiết kế mạch hệ thống

Trong đề tài lần này chúng em sử dụng phần mềm Altium để thiết kế mạch vàtạo file PCB phục vụ cho việc in mạch theo các khối như sau:

Trang 16

2.2.1 Khối vi điều khiển

Hình 6: Khối vi điều khiển 2.2.2 Khối nguồn

Hình 7: Khối nguồn

Trang 18

Altium ngày nay đang là một trong những phần mềm vẽ mạch điện tử mạnh và được ưa chuộng ở Việt Nam.Ngoài việc hỗ trợ tốt cho hoạt động vẽ mạch,Altium còn

hỗ trợ tốt trong việc quản lý mạch,trích xuất file thống kê linh kiện

Altium Designer cung cấp một ứng dụng kết hợp tất cả công nghệ và chức năngcần thiết cho việc phát triển sản phẩm điện tử hoàn chỉnh, như thiết kế hệ thống ở mức

bo mạch và FPGA, phát triển phần mềm nhúng cho FPGA và các bộ xử lý rời rạc, bố trí mạch in (PCB)… Altium Designer thống nhất toàn bộ các quá trình lại và cho phép bạn quản lý được mọi mặt quá trình phát triển hệ thống trong môi trường tích hợp duy nhất Khả năng đó kết hợp với khả năng quản lý dữ liệu thiết kế hiện đại cho phép người sử dụng Altium Designer tạo ra nhiều hơn những sản phẩm điện tử thông minh, với chi phí sản phẩm thấp hơn và thời gian phát triển ngắn hơn

- Mô phỏng mạch 3D:

Trang 19

Hình 10: Hình ảnh 3D của mạch điều khiển

Trang 20

- Mạch thực tế:

Hình 11: Hình ảnh thực tế của mạch đk

2.3 Chương trình nạp cho Vi điều khiển

#define F_CPU 16000000UL

Trang 21

void UART_init( long USART_BAUDRATE )

UCSRB |= (1 << RXEN ) | (1 << TXEN ) | (1<< RXCIE );/* Turn on transmission and reception */

UCSRC |= (1 << URSEL ) | (1 << UCSZ0 ) | (1 << UCSZ1 );/* Use 8-bit

unsigned char UART_RX()

while (!( UCSRA &(1<< RXC )));

return UDR ;

void UART_TxChar( char ch )

while (! UCSRA (1<< UDRE ))); /* Wait for empty transmit buffer*/

void Request() /* Microcontroller send start

pulse/request */

DDRD |= (1<< DHT11_PIN );

PORTD &= ~(1<< DHT11_PIN ); /* set to low pin */

_delay_ms(30); /* wait for 20ms */

Trang 22

PORTD |= (1<< DHT11_PIN ); /* set to high pin */

if ( PIND (1<< DHT11_PIN ))/* if high pulse is greater than 30ms */

c <<1)|(0x01); /* then its logic HIGH */

else /* otherwise its logic LOW */

c <<1);

while ( PIND (1<< DHT11_PIN ));

////////////////////////////////////////////////////////////////////////////// ////////////////////////

void ADC_Init()

//DDRA = (1<<PA0); /* Make ADC port as input */

ADCSRA 0x87; /* Enable ADC, fr/128 */

Trang 23

int ADC_Read()

ADMUX 0x40; /* Vref: Avcc, ADC channel: 0 */

ADCSRA |= (1<< ADSC ); /* start conversion */

while (( ADCSRA &(1<< ADIF ))==0); /* monitor end of conversion interrupt flag */

ADCSRA |=(1<< ADIF ); /* set the ADIF bit of ADCSRA register */

void controlsw()

if (( PIND &(1<< PIND3 ))==0)

while (( PIND &(1<< PIND3 ))==0);

PORTA ^=(1<< PA5 );

if (( PIND &(1<< PIND4 ))==0)

while (( PIND &(1<< PIND4 ))==0);

PORTA ^=(1<< PA6 );

if (( PIND &(1<< PIND5 ))==0)

while (( PIND &(1<< PIND5 ))==0);

PORTA ^=(1<< PA7 );

if (( PIND &(1<< PIND6 ))==0)

while (( PIND &(1<< PIND6 ))==0);

Trang 24

D_RH =Receive_data(); /* store next eight bit in D_RH */

I_Temp =Receive_data(); /* store next eight bit in I_Temp */

D_Temp =Receive_data(); /* store next eight bit in D_Temp */

CheckSum =Receive_data();/* store next eight bit in CheckSum */

int main( void )

Trang 25

moisture adc_value *5*100.00)/1023.00; /* Calculate moisture in

Trang 27

PORTA |=(1<< PA6 );

break ; case '3':

_delay_ms(50);

PORTA &=~(1<< PA7 );

break ; case '4':

_delay_ms(50);

PORTA |=(1<< PA7 );

break ; case '5':

_delay_ms(50);

PORTD &=~(1<< PD7 );

break ; case '6':

Trang 28

TCNT0 130;

dem ++;

dem1 ++;

2.4 Giao diện giám sát và điều khiển trên máy tính:

Hình 14: giao diện máy tính 0- 1

Code giao diện:

Trang 31

private async void timer2_Tick( object sender, EventArgs e)

-

this chart1.Series["doammt"].Points.AddXY(DateTime.Now.Minute, obj1.NhietDo);

-

this chart1.Series["doamdat"].Points.AddXY(DateTime.Now.Minute, obj1.DoAmDat);

#define FIREBASE_HOST "loc2020.firebaseio.com"

#define FIREBASE_AUTH "niZWnZkq4bynzwlKi4hpbLGZQEMiR436quRNEUuu"

#define WIFI_SSID "ngangao"

#define WIFI_PASSWORD "meoconconmeo"

char giatrinhietdo1[5];

char giatridoamkk1[5];

Trang 32

// put your setup code here, to run once:

Serial.begin(9600); //khởi tạo serial uart

// WiFiManager wifiManager;

// wifiManager.autoConnect("Wireless Sensor Network");

Trang 34

kiemtra2 = sscanf(data1, "N2,%d,%d,%d,%d#", &nhietdo2, &doamkhongkhi2,

&doamdat2,&xyz); //Nếu đủ cả 3 thông số thì biến kiemtra1 sẽ được set lên 3, tương tự các biến còn lại

kiemtra1 = sscanf(data1, "N1,%d,%d,%d,%d#", &nhietdo1, &doamkhongkhi1,

&doamdat1,&abc); //đọc dữ liệu từ mảng đã chuyển là "N1,<nhiệt độ tại node 1>,<độ ẩm không khí tại node 1>,<độ ẩm đất>"

if (kiemtra1 == 4) //nếu kiemtra1 = 3 tức là nhận hết các thông số thì thực hiện các câu lệnh bên dưới

Firebase.setString("firebase/Node1/tt1", tt1);

memset( data1, 0, sizeof(data1)); //xóa chuỗi data1

// ESP.restart();

}

Ngày đăng: 25/07/2021, 01:58

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w