HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNGKHOA CÔNG NGHỆ THÔNG TIN 1 o0o BÁO CÁO BÀI TẬP LỚN Hệ thống giám sát và tưới tự động dựa trên độ ẩm đất - ESP8266 Môn học: Xây dựng các hệ thống nh
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1
o0o
BÁO CÁO BÀI TẬP LỚN
Hệ thống giám sát và tưới tự động dựa trên độ ẩm
đất - ESP8266
Môn học: Xây dựng các hệ thống nhúng
Số thứ tự nhóm: 16
Đoàn Văn Bình MSSV: B19DCCN066 Bùi Khắc Phong MSSV: B19DCCN497
Giảng viên hướng dẫn: Đinh Xuân Trường
Trang 2LỜI CẢM ƠN
Lời đầu tiên, xin chân thành gửi lời cảm ơn đến thầy Đinh Xuân Trường, người đãluôn tận tình hướng dẫn và chỉ bảo chúng em trong suốt quá trình học tập môn họcXây dựng các hệ thống nhúng Nhờ sự hướng dẫn của thầy, từ những hiểu biết mơ
hồ về môn học, chúng em biết thế nào là hệ thống nhúng, cách thức hoạt động, vàcách xây dựng chúng Và để cụ thể hóa những kiến thức đã học từ môn học này,nhóm em có xây dựng bài tập lớn Do trong quá trình vừa học vừa làm, kiến thứccủa chúng em vẫn còn hạn chế và nhiều bờ ngỡ Do vậy, những thiếu sót là điềuchắc chắn không thể tránh khỏi, em rất mong nhận được những ý kiến đóng gópcủa thầy và các bạn để kiến thức của em được hoàn thiện hơn
Xin cảm ơn Học viện Công nghệ Bưu chính Viễn Thông cùng toàn thể các thầy cốtrong học viện đã đưa môn học đầy bổ ích này vào giảng dạy
Và cũng xin gửi lời cảm ơn đến các thành viên trong nhóm, những người đã cùngnhau nỗ lực và phối hợp để hoàn thành bài tập lớn này
Xin chân thành cảm ơn!
Trang 3MỤC LỤC
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI 1
1.1 Đặt vấn đề 1
1.2 Các giải pháp hiện tại và hạn chế 1
1.3 Mục tiêu và định hướng giải pháp 2
1.4 Đóng góp của bài tập lớn 3
1.5 Bố cục bài tập lớn 3
CHƯƠNG 2. NỘI DUNG ĐỀ TÀI 5
2.1 Yêu cầu của hệ thống 5
2.2 Thành phần phần cứng 5
2.3 Thành phần phần mềm 9
2.4 Các bước xây dựng, thiết kế một hệ thống nhúng 10
CHƯƠNG 3. THIẾT KẾ HỆ THỐNG 13
3.1 Lập bảng dữ liệu 13
3.2 Xây dựng server Blynk 13
3.3 Giao diện hệ thống 14
3.4 Mô hình mạch và mạch điện thực tế 15
3.5 Nạp mã nguồn cho arduino esp8266 15
CHƯƠNG 4. KẾT LUẬN 24
4.1 Kết luận 24
4.2 Hướng phát triển trong tương lai 24
TÀI LIỆU THAM KHẢO 26
Trang 5DANH MỤC HÌNH VẼ
Hình 2.1 ESP8266 5
Hình 2.2 Board test 8
Hình 2.3 Relay 8
Hình 2.4 Cảm biến độ ẩm 9
Hình 2.5 Blynk 10
Hình 3.1 Thông tin Server 14
Hình 3.2 Virtual Pin DataStream Cảm biến 14
Hình 3.3 Virtual Pin DataStream Chế độ tự động 15
Hình 3.4 Virtual Pin DataStream Ngưỡng độ ẩm trên 15
Hình 3.5 Virtual Pin DataStream Ngưỡng độ ẩm dưới 16
Hình 3.6 Virtual Pin DataStream trạng thái 16
Hình 3.7 Virtual Pin DataStream chế độ đặt lịch 17
Hình 3.8 Virtual Pin DataStream Relay 17
Hình 3.9 Virtual Pin DataStream Led1 18
Hình 3.10 Virtual Pin DataStream Led2 18
Hình 3.11 Hình 1.Giao diện hệ thống trên Blynk Server 19
Hình 3.12 Hình 1.Giao diện hệ thống trên Blynk App 19
Hình 3.13 Hình 1.Mô hình mạch 20
Hình 3.14 Hình 1.Mạch điện thực tế 20
Hình 3.15 Định nghĩa kết nối đến Blynk Server 21
Hình 3.16 Cấu hình mạng 21
Hình 3.17 Khai báo biến 21
Hình 3.18 Khai báo mã nguồn 22
Hình 3.19 Ánh xạ giá trị biến 22
Hình 3.20 Đoạn mã xử lý độ ẩm trên ngưỡng trên 22
Hình 3.21 Đoạn mã xử lý độ ẩm dưới ngưỡng dưới 23
Hình 3.22 mã nguồn bật tắt Relay 23
Trang 6DANH MỤC BẢNG BIỂU
Trang 7DANH MỤC THUẬT NGỮ VÀ TỪ VIẾT TẮT
Thuật ngữ Ý nghĩa
API Giao diện lập trình ứng dụng
(Application Programming Interface)CPU Bộ xử lý trung tâm (Central Processing
Unit)HTN Hệ thống nhúngHTTP Giao thức Truyền tải Siêu Văn Bản
(Hyper Text Transfer Protocol)
IC Mạch tích hợp (Integrated Circuit)IDE là môi trường tích hợp dùng để phát
triển phần mềm giúp bạn lập trình tốthơn(Integrated Development
Environment)
Trang 8CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
1.1 Đặt vấn đề
Là một nước đi lên từ nông nghiệp và hiện nay nông nghiệp vẫn chiếm mộtphần không nhỏ trong GDP của nước nhà Nước ta đang hướng đến phát triển nôngnghiệp theo hướng hiện đại hóa, nhưng ứng dụng khoa học kỹ thuật vào sản xuất
ở nhiều nơi vẫn còn rất hạn chế Rất nhiều các quy trình kỹ thuật trong trồng trọt,chăm sóc được tiến hành chủ yếu theo những kinh nghiệm mà ông cha ta để lại haytheo cách rất chủ quan, không đảm bảo được đúng yêu cầu
Trong nông nghiệp, ngoài những kỹ thuật trồng trọt thì việc đảm bảo độ ẩm chođất là một trong các khâu tối quan trọng, giúp cây sinh trương và phát triển khỏemạnh Tưới đúng và tưới đủ nước sẽ giúp cây phát triển tốt, chống chịu được phầnnào sâu bệnh phá hoại, từ đó hạn chế được lượng thuốc trừ sâu, cho ra những sảnphẩm từ cây trồng đáp ứng tốt hơn về an toàn vệ sinh thực phẩm kèm theo năngsuất và hiệu quả cao
Cũng chính vì tầm quan trọng của độ ẩm đất trong sinh trưởng và phát triểncủa cây, tưới nước đúng lúc và đúng lượng là một trong những tiêu chí quan trọng.Chính vì thế một hệ thống nhận biết và kiểm soát bằng máy móc, công nghệ sẽđem lại hiệu quả tốt hơn Nhằm giải quyết vấn đề đó, dựa vào các kiến thức đã học,nhóm em quyết định xây dựng "Hệ thống giám sát và cảnh báo độ ẩm đất" Hệthống này sẽ theo dõi độ ẩm đất dựa trên cảm biến,tưới nước tự động kết hợp theodõi từ xa thông qua điện thoại
Ngoài tăng sự chính xác, Hệ thống tưới nước tự động kết hợp theo dõi từ xa còntiết kiệm sức lao động và chi phí nhân công Mong rằng ý tưởng này của nhóm cóthể ứng dụng vào thực tế và hỗ trợ vào nền nông nghiệp nước nhà
1.2 Các giải pháp hiện tại và hạn chế
+ Tổng quan về các công nghệ xây dựng cho hệ thống
Hệ thống sử dụng Esp8266 là NodeMCU được phát triển dựa trên chip wifiEsp8266 bên trong module esp-12e để kết nối với wifi Board tích hợp IC CP2102giúp kết nối với máy tính thông qua cổng USB
Để đo độ ẩm đất, hệ thống sử dụng một cảm biến độ ẩm với điện áp 3.3 –12VDC Tín hiệu đầu ra Analog theo điện áp cấp nguồn tương ứng hoặc Digital(High hoặc Low) có thể điều chỉnh độ ẩm mong muốn bằng biến trở thông quamạch so sánh tích hợp
Để xây dựng logic cho hệ thống hoạt động, nhóm sử dụng arduino IDE để giúp
Trang 9CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀIcho việc giao tiếp với esp8266 trở nên đơn giản hơn
Để giao tiếp, điều khiển từ xa trên điện thoại, hệ thống sử dụng Blynk Server:nhận thông tin và gửi/nhận yêu cầu từ điện thoại và gửi yêu cầu thực thi lại choNodeMCU Blynk cung cấp API và giao diện người dùng tương tự cho tất cả cácthiết bị và phần cứng được hỗ trợ
+ Hạn chế
Hệthóngmớichỉđượcxâydựngởmứcmôhìnhđểkiểmthửcáchthứchoạtđộng
1.3 Mục tiêu và định hướng giải pháp
Bài tập lớn hướng đến việc xây dụng được mô hình cảnh báo độ ẩm đất kết hợpvới hệ thống tưới nước Hệ thống bao gồm các hoạt động như:
Cung cấp cho người dùng thông tin về độ ẩm đất( cần cảm biến để đo độ ẩmđất, nhận dữ liệu từ cảm biến độ ẩm thông qua esp8266 và hiển thị cho người dùngtrên ứng dụng điện thoại)
Bật tắt hệ thống tưới nước thông qua điện thoại( Ứng dụng trên điện thoại cócác nút cho phép bật tắt hệ thống tưới nước theo yêu cầu người quản lý, để bật tắt
hệ thông tưới nước cần có relay cho phép điều khiển quá trình hoạt động của máybơm, relay cần liên kết với Esp8266)
Hiển thị thông báo hoạt động của máy bơm(nếu relay ở trạng thái tắt hiển thị lêngiao diện người dùng trạng thái OFF, ngược lại hiển thị trạng thai ON)
Cho phép đặt ngưỡng độ ẩm cho việc tưới nước tự động( bao gồm đặt ngưỡng
- Nếu độ ẩm đất cao hơn ngưỡng độ ẩm cao nhất, trên ứng dụng di động sẽ gửicảnh báo độ ẩm cao, đồng thời bật màu cảnh báo vàng,cùng với đó trên hệ thốngđèn LED vàng sẽ sáng lên
- Nếu độ ẩm đất nằm trong ngưỡng độ ẩm thấp nhất và độ ẩm cao nhất, trên ứngdụng di động sẽ gửi thông báo độ ẩm bình thường, đồng thời bật màu thông báoxanh,cùng với đó trên hệ thống đèn LED xanh sẽ sáng lên
Hệ thống tự động tưới nước(Khi ngưỡng độ ẩm của đất nhận về từ cảm biến nhỏhơn ngưỡng độ ẩm thấp nhất do người quản lý đã đặt, hệ thống sẽ bật máy bơmbằng cách khởi động relay Hệ thống sẽ tiếp tục bơm, đồng thời cập nhật độ ẩm đất
Trang 10CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀIhiển thị trên đèn LED- đối với hệ thống, màu sắc - đối với ứng dụng, khi độ ẩm đạtđến ngưỡng độ ẩm bình thường thì sẽ dừng máy bơm lại)
Đặt lịch cho hệ thống tự động tưới theo khoảng thời gian, sau một khoảng thờigian được cài đặt sẽ tự động bật và tưới trong 10 phút(mặc định) Để hệ thống cóthể hoạt động theo lịch trình, cần bật chức năng schedule trên ứng dụng
1.4 Đóng góp của bài tập lớn
Bài tập lớn này có các đóng góp chính như sau:
1 Đưa ra các thông tin tìm hiểu về 1 số công nghệ và phần cứng: Esp8266,Blynk, arduino
2 Khảo sát, tìm hiểu, phân tích công nghệ về xây dựng hệ thống giám sát vàcảnh báo độ ẩm đất
3 Đưa ra các phương pháp thực hiện, các bước tiến hành cài đặt hệ thống
1.5 Bố cục bài tập lớn
Bố cục của bài báo cáo bài tập lớn của nhóm:
Trước khi bắt tay vào xây dựng hệ thống, chúng ta cần biết cần làm gì trong
hệ thống, từ đó xây dựng hệ thống theo đúng yêu cầu đặt ra Chính vì thế ở trongchương 2, sẽ trình bày về các yêu cầu của hệ thống, tìm hiểu về các thành phầnphần cứng, phần mềm Phần yêu cầu hệ thống nêu ra tất cả các chức năng có trong
hệ thống Hệ thống sử dụng board mạch điều khiển NodeMCU được phát triển dựatrên Chip WiFi ESP8266 bên trong Module ESP-12E dễ dàng kết nối WiFi vớimột vài thao tác Board còn tích hợp IC CP2102 Phần mềm chính được sử dụng
là Blynk app cho phép điều khiển phần cứng từ xa, nó có thể hiển thị dữ liệu cảmbiến, lưu trữ dữ liệu, ảo hóa và làm nhiều thứ khác Trong phần cuối chương làphương pháp thực hiện phát triển hệ thống gồm 6 bước cơ bản: phần cứng, yêu cầuthị trường, mẫu mô tả hệ thống, các cấu trúc, phân tích đánh giá kiến trúc, viết tàiliệu Chương này đã phân tích chi tiết nội dung nguyên lý hoạt động của hệ thống,các phần cứng, phần mềm sửa dụng trong hệ thống và đề ra các bước phát triển
Từ đó chúng ta dễ dàng triển khai thiết kế hệ thống Phần này được trình bày trongchương tiếp theo - Chương 3
Trong chương 2 đã trình bày khá chi tiết về hệ thống và đề ra các phương phápthực hiện Chương 3, chúng ta sẽ tiến hành thiết kế hệ thống Trước khi thiết kế
hệ thống chúng ta cần lập bảng dữ liệu về các chức năng trên Blynk App và trênNodeMCU.Sau đó thiết kế sơ đồ mạch điện và trình bày lưu đồ thuật toán Tiếptheo chúng ta sẽ thiết kế ứng dụng trên điện thoại thông minh, và cuối cùng là viếtcode cho chương trình điều khiển Chương này nêu rõ trong các bước chúng ta sẽ
Trang 11CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀIlàm gì, kết hợp với các hình ảnh trực quan để thể hiện rõ kết quả thực hiện Sau đókết quả sẽ được tóm tắt, tổng hợp lại ,chúng ta sẽ đưa ra những kết luận và địnhhướng phát triển trong chương cuối - Chương 4.
Trong chương 4 sẽ tổng hợp lại kết quả, nhận xét về kết quả đạt được, về ưuđiểm, nhược điểm Từ đó đề xuất hướng phát triển trong tương lai
Trang 12CHƯƠNG 2 NỘI DUNG ĐỀ TÀI
2.1 Yêu cầu của hệ thống
Hệ thống thực hiện chính xác ba chức năng có trong hệ thông tưới:
• Bật tắt hệ thống tưới nước theo yêu cầu của người sử dụng thông qua ứng dụngtrên điện thoại: Người dùng có thể trực tiếp điều khiển bật hoặc tắt Relay thôngqua ứng dụng trên điện thoại di động
• Hệ thống tự động điều chỉnh các chế độ bật hoặc tắt dựa vào độ ẩm thực tế thuđược: bật relay nếu độ ẩm nhỏ hơn ngưỡng dưới, tắt relay nếu nằm trong ngưỡngtrung bình và thông báo độ ẩm cao khi độ ẩm thu được lớn hơn ngưỡng trên
• Đặt lịch cho hệ thống tự động tưới theo khoảng thời gian, sau một khoảng thờigian được cài đặt sẽ tự động bật và tưới trong 10 phút
2.2 Thành phần phần cứng
Các thành phần phần cứng sử dụng gồm có:
- Esp8266: là nodeMCU được phát triển dựa trên Chip Wifi esp8266 bên trongmodule esp-12e để kết nối với wifi Board tích hợp IC CP2102 giúp kết nối vớimáy tính thông qua cổng USB Qua đó, người phát triển hệ thống nhúng dễ dàng
sử dụng thông qua kết nối Wifi
Trang 13CHƯƠNG 2 NỘI DUNG ĐỀ TÀITrong esp8266 số GPIO không khớp với các nhãn được in trên bo mạchNhãn D0(GPIO16) input: không gián đoạn, output không hỗ trợ PWM hoạc12C, ở mức cao khi khởi động, sử dụng để đánh thức khi ngủ sâu
Nhãn D1(GPIO5) input: OK, output OK, thường được sử dụng như SCL(12C)Nhãn D2(GPIO4) input: OK, output OK, thường được sử dụng như SDA(12C)Nhãn D3(GPIO0) input: pulled up, output OK, kết nối với nút Flash, khởi độngkhông thành công nếu pulled LOW
Nhãn D4(GPIO2) input: pulled up, output OK, mức cao khi khởi động, kết nốivới đèn led trên bo mạch, khởi động không thành công nếu pulled LOW
Nhãn D5(GPIO14) input: OK, output OK, SPI(SCLK)Nhãn D6(GPIO12) input: OK, output OK, SPI(MISG)Nhãn D7(GPIO13) input: OK, output OK, SPI(MOSI)Nhãn D8(GPIO15) input: pulled to GND, output OK,SPI(CS), khởi động khôngthành công nếu pulled up
Nhãn RX(GPIO3) input: OK, output chân RX, mức cao khi khởi độngNhãn TX(GPIO1) input: chân TX, output OK, mức cao khi khởi động, đầu ra
gỡ lỗi khi khởi động, khởi động không thành công nếu pulled LOW
Nhãn A0(ADC0) input: analog input, output không hỗ trợLưu ý:
GPIO6 tới GPIO11 thường được sử dụng để kết nối với flash chip trong các boESP8266 Vì vậy, những chân này không được khuyến khích sử dụng cho các mụcđích khác
Có thể ngăn cản quá trình Boot xẩy ra trên ESP8266 nếu một trong các chân sauđược thiết lập ở mức LOW hoặc HIGH Danh sách sau miêu tả trạng thái các chântrong quá trình BOOT
• GPIO16: chân ở mức high trong quá trình BOOT
• GPIO0: Boot lỗi nếu chân ở mức LOW
• GPIO2: chân ở mức high trong quá trình BOOT, boot lỗi nếu chân ở mức LOW
• GPIO15: boot lỗi nếu chân ở mức HIGH
• GPIO3: chân ở mức high trong quá trình BOOT
• GPIO1: chân ở mức high trong quá trình BOOT, boot lỗi nếu chân ở mức LOW
• GPIO10: chân ở mức high trong quá trình BOOT
• GPIO9: chân ở mức high trong quá trình BOOT
Các chân ở mức HIGH trong quá trình BOOT
• GPIO16
• GPIO3
• GPIO1
Trang 14CHƯƠNG 2 NỘI DUNG ĐỀ TÀI
• GPIO10
• GPIO9Ngoài ra, các chân GPIO khác, ngoại trừ GPIO5 và GPIO4, có thể phát ra tínhiệu điện áp thấp trong qua trình boot Điều này có thể gây ra những vấn đề rắc rốinếu những chân này kết nối tới các transistor hoặc relay
Analog InputESP8266 chỉ hỗ trợ đọc tín hiệu analog trên một chân GPIO Chân GPIO nàyđược gọi là ADC0 và nó thường được gắn nhãn là A0 Điện áp đầu vào lớn nhất củachân ADC0 từ 0 tới 1V nếu bạn đang sử dụng chip ESP8266 để trần (Chip chưa gắncác linh kiện bổ trợ) Nếu bạn đang sử dụng một bo phát triển như như ESP826612-E NodeMCU, điện áp đầu vào sẽ vào khoảng từ 0 tới 3.3V bởi vì những bo này
đã chứa một bộ phân chia điện áp bên trong cho chip
LED tích hợp trên boHầu hết các bo phát triển của ESP8266 có một LED đã được tích hợp sẵn LEDnày thường được kết nối tới chân GPIO2 LED được kết nối tới một điện trở pull-down, vì vậy khi bạn gửi một tín hiệu mức HIGH, LED sẽ tắt
Chân RSTKhi chân RST được thiết lập ở trạng thái LOW, ESP8266 sẽ reset Điều nàytương đượng với việc bạn ấn nút RESET được tích hợp trên các bo phát triển.GPIO0
Khi chân GPIO0 được thiết lập ở trạng thái LOW, nó sẽ kích hoạt chế độbootloader cho ESP8266 Điều này tương đương với việc bạn ấn nút FLASH/BOOTđược tích hợp trên các bo phát triển
GPIO16GPIO16 có thể được sử dụng để đánh thức ESP8266 khi nó đang ở trạng tháideep sleep (ngủ sâu) Để đánh thức ESP8266 từ chế độ deep sleep, GPIO16 nênkết nối tới chân RST
I2CESP8266 không hỗ trợ về mặt phần cứng cho giao thức I2C, tuy nhiên chúng
ta có thể lập trình cho nó bằng phần mềm Vì vậy bạn có thể sử dụng bất cứ chânGPIO nào cho I2C Thông thường các chân sau được sử dụng như là các chân I2C:GPIO5: SCL GPIO4: SDA
SPINhững chân được sử dụng như là các chân SPI: GPIO12: MISO GPIO13: MOSIGPIO14: SCLK GPIO15: CS
Các chân PWMESP8266 cho phép lập trình PWM bằng phần mềm trên tất cả các chân I/O:
Trang 15CHƯƠNG 2 NỘI DUNG ĐỀ TÀIGPIO0 tới GPIO16 Các tín hiệu PWM trên ESP8266 có độ phân giải 10 bit.Các chân Interrupt (Ngắt)
ESP8266 hỗ trợ các chế độ interrupt trên bất cứ chân GPIO nào, trừ chânGPIO16
- Board test: sử dụng để cắm các thành phần phần cứng
Hình 2.2: Board test
- Relay: là một công tắc điện từ để điều khiển bật tắt máy bơm Nếu hệ thống tắtthì Relay báo đèn đỏ, nếu hệ thống báo bật thì relay báo đèn xanh Relay được sửdụng để thông báo trạng thái bật tắt nên tiện cho người phát triển quan sát
Hình 2.3: Relay
- Đèn Led: Led để hiển thị chế độ của hệ thống đang hoạt động: độ ẩm thấp, trung
Trang 16CHƯƠNG 2 NỘI DUNG ĐỀ TÀIbình, cao Hệ thống sử dụng ba đèn để hiển thị ba mức độ ẩm, thuận tiện cho ngườiphát triển quan sát.
- Cảm biến độ ẩm: cảm biến đo độ ẩm đất hoạt động với điện áp 3.3 – 12VDC.Tín hiệu đầu ra Analog theo điện áp cấp nguồn tương ứng hoặc Digital (High hoặcLow) có thể điều chỉnh độ ẩm mong muốn bằng biến trở thông qua mạch so sánhtích hợp Cảm biến giúp đo độ ẩm đất và gửi về bộ xử lý
– Điều khiển, giám sát thiết bị ở bất kì đâu thông qua internet với khả năng đồng