Xã hội ngày càng phát triển, công nghệ kỹ thuật với sự tiến bộ thần tốc đã mangđến nhiều tiện ích cho con người, từ công việc văn phòng, xây dựng, nội trợ cho đếnnhững công việc về nuôi trồng nông lâm thủy – hải sản. Đặc biệt là trong lĩnh vựcnông nghiệp. Công nghệ tin học đã giúp con người tiết kiệm sức lao động, thuận lợitrong chăm sóc và đạt năng suất cao trong thu hoạch.Công nghệ “Nhà trồng thông minh” đã tạo ra các sản phẩm trái mùa, giúp ngườidân có thực vật ăn quanh năm dù không phải chính vụ, tạo ra các sản phẩm nông nghiệptại những vùng có điều kiện khắc nghiệt mà cây trồng khó thể sinh tồn. Trong đó, hệthống tưới tiêu tự động là một phần quan trọng không thể thiếu trong hệ thống “Nôngnghiệp thông minh” nói chung và “Nhà trồng thông minh” nói riêng.Hệ thống tưới tự động được xây dựng trên nền tảng Arrduino và Arduino IDEđã đảm bảo được hầu hết các chức năng cần thiết cho hệ thống, bên cạnh đó là giá thànhrẻ và dễ dàng sử dụng. Nó đáp ứng được tiêu chí “Ngon Bổ Rẻ” của người sủ dụng.Dưới đây là bài báo cáo về việc xây dựng một hệ thống tưới nước tự động trongnhà trồng thông minh với đầy đủ các điều kiện về độ ẩm đất, độ ẩm và nhiệt độ trongkhông khí và ánh sáng trong môi trường trồng cây sử dụng các thiết bị phần cứng củaArduino và phần mềm lập trình trên nền tảng Arduino IDE. Nhóm đã xây dựng sảnphẩm dựa trên các kiến thức đã học được qua môn “Cơ Sở Lập Trình Nhúng”.
Trang 1ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
Khoa Công nghệ thông tin
-o0o -
Bài báo cáo môn: Cơ sở lập trình nhúng
Đề tài: Xây dựng hệ thống tưới tự động
Giáo viên: Phạm Văn Hà Nhóm: 5
Lớp: ĐH KTPM3 - K10
Hà Nội, 2018
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
Bài báo cáo môn: Cơ sở lập trình nhúng
Đề tài: Xây dựng hệ thống tưới tự động
Giáo viên: Phạm Văn Hà Sinh viên thực hiện:
Nguyễn Thành Nam
La Ngân Quang Bùi Hữu Quý
Lớp: ĐH KTPM3 – K 1 0
Hà Nội, 2018
Trang 3
MỤC LỤC
Lời nói đầu 4
Chương I: Giới thiệu chung 5
I Lập trình nhúng 5
II Khái quát về nhà trồng thông minh 7
III Thực tiễn áp dụng Arduino 8
Chương II: Arduino và lập trình Arduino 9
I Giới thiệu chung về Arduino 9
II Làm quen với KIT ESP8266 Wemos D1 R2 15
Chương III: Thiết kế, lập trình và cài đặt mạch 18
cho hệ thông tưới nước tự động 18
I Thiết kế phần cứng 18
II Phần mềm và chương trình: 24
Kết luận 38
Trang 4Lời nói đầu
Xã hội ngày càng phát triển, công nghệ kỹ thuật với sự tiến bộ thần tốc đã mang đến nhiều tiện ích cho con người, từ công việc văn phòng, xây dựng, nội trợ cho đến những công việc về nuôi trồng nông - lâm - thủy – hải sản Đặc biệt là trong lĩnh vực nông nghiệp Công nghệ tin học đã giúp con người tiết kiệm sức lao động, thuận lợi trong chăm sóc và đạt năng suất cao trong thu hoạch
Công nghệ “Nhà trồng thông minh” đã tạo ra các sản phẩm trái mùa, giúp người dân có thực vật ăn quanh năm dù không phải chính vụ, tạo ra các sản phẩm nông nghiệp tại những vùng có điều kiện khắc nghiệt mà cây trồng khó thể sinh tồn Trong đó, hệ
thống tưới tiêu tự động là một phần quan trọng không thể thiếu trong hệ thống “Nông nghiệp thông minh” nói chung và “Nhà trồng thông minh” nói riêng
Hệ thống tưới tự động được xây dựng trên nền tảng Arrduino và Arduino IDE
đã đảm bảo được hầu hết các chức năng cần thiết cho hệ thống, bên cạnh đó là giá thành
rẻ và dễ dàng sử dụng Nó đáp ứng được tiêu chí “Ngon - Bổ - Rẻ” của người sủ dụng
Dưới đây là bài báo cáo về việc xây dựng một hệ thống tưới nước tự động trong nhà trồng thông minh với đầy đủ các điều kiện về độ ẩm đất, độ ẩm và nhiệt độ trong không khí và ánh sáng trong môi trường trồng cây sử dụng các thiết bị phần cứng của Arduino và phần mềm lập trình trên nền tảng Arduino IDE Nhóm đã xây dựng sản phẩm dựa trên các kiến thức đã học được qua môn “Cơ Sở Lập Trình Nhúng”
Nhóm sinh viên thực hiện!
Trang 5Chương I: Giới thiệu chung
I Lập trình nhúng
Hệ thống nhúng là gì?
Hệ thống nhúng (Embedded system) là một thuật ngữ để chỉ một hệ thống có khả năng tự trị được nhúng vào trong một môi trường hay một hệ thống mẹ Đó là các hệ thống tích hợp cả phần cứng và phần phềm để thực hiện một hoặc một nhóm chức năng chuyên biệt cụ thể
Hệ thống nhúng (HTN) thường được thiết kế để thực hiện một chức năng chuyên biệt nào đó Khác với các máy tính đa chức năng, chẳng hạn như máy tính cá nhân, một
hệ thống nhúng chỉ thực hiện một hoặc một vài chức năng nhất định, thường đi kèm với những yêu cầu cụ thể và bao gồm một số thiết bị máy móc và phần cứng chuyên dụng mà ta không tìm thấy trong một máy tính đa năng nói chung Vì hệ thống chỉ được xây dựng cho một số nhiệm vụ nhất định nên các nhà thiết kế có thể tối ưu hóa nó nhằm giảm thiểu kích thước và chi phí sản xuất Các hệ thống nhúng thường được sản xuất hàng loạt với số lượng lớn HTN rất đa dạng, phong phú về chủng loại Đó có thể là những thiết bị cầm tay nhỏ gọn như đồng hồ kĩ thuật số và máy chơi nhạc MP3, hoặc những sản phẩm lớn như đèn giao thông, bộ kiểm soát trong nhà máy hoặc hệ thống kiểm soát các máy năng lượng hạt nhân Xét về độ phức tạp, hệ thống nhúng có thể rất đơn giản với một vi điều khiển hoặc rất phức tạp với nhiều đơn vị, các thiết bị ngoại vi
và mạng lưới được nằm gọn trong một lớp vỏ máy lớn
Các thiết bị PDA hoặc máy tính cầm tay cũng có một số đặc điểm tương tự với
hệ thống nhúng như các hệ điều hành hoặc vi xử lý điều khiển chúng nhưng các thiết
bị này không phải là hệ thống nhúng thật sự bởi chúng là các thiết bị đa năng, cho phép
sử dụng nhiều ứng dụng và kết nối đến nhiều thiết bị ngoại vi
Các đặc điểm của hệ thống nhúng
Hệ thống nhúng thường có một số đặc điểm chung như sau:
• Các hệ thống nhúng được thiết kế để thực hiện một số nhiệm vụ chuyên dụng chứ không phải đóng vai trò là các hệ thống máy tính đa chức năng Một số hệ thống đòi hỏi ràng buộc về tính hoạt động thời gian thực để đảm bảo độ an toàn và tính ứng dụng
Một số hệ thống không đòi hỏi hoặc ràng buộc chặt chẽ, cho phép đơn giản hóa
hệ thống phần cứng để giảm thiểu chi phí sản xuất • Một hệ thống nhúng thường không phải là một khối riêng biệt mà là một hệ thống phức tạp nằm trong thiết bị mà nó điều khiển
• Phần mềm được viết cho các hệ thống nhúng được gọi là firmwarevà được lưu trữ
Trang 6không phải là trong một ổ đĩa Phần mềm thường chạy với số tài nguyên phần cứng hạn chế: không có bàn phím, màn hình hoặc có nhưng với kích thước nhỏ, bộ nhớ hạn chế
Hình 1: Cấu trúc bên trong Router
Router là một ví dụ của hệ thống nhúng Các hệ thống nhúng trong mô hình Router bao gồm: Microprocessor(4), RAM(6), vàFlash memory(7)
Các thiết bị trên các tàu vũ trụ được tích hợp rất nhiều các hệ thống nhúng
Hình 2: Tàu thăm dò Sao Hỏa
Trang 7II Khái quát về nhà trồng thông minh
Hệ thống làm nhà trồng thông minh ngày càng được phổ biến trong vài năm trở lại đây tại Việt Nam Lắp đặt và sử dụng hệ thống nhà trồng thông minh sẽ giúp các sản phẩm nông nghiệp như rau, củ, hoa, quả… được chăm sóc đầy đủ góp phần tăng năng suất và cho chất lượng sạch Nhà trồng thông minh trồng rau sẽ giúp cho nguồn rau tránh bị các loại sâu bệnh và thời tiết xấu ngoài ra còn giúp xoay vụ nhanh hơn
Việt Nam là một nước có thế mạnh về các loại nông sản nông nghiệp, nhiều năm qua các sản phẩm nông nghiệp của Việt Nam đã đi ra rất nhiều thị trường trên thế giới với các sản phẩm chất lượng Điều này đã thúc dục bà con nông dân sử dụng công nghệ hiện đại để tăng năng suất và chất lượng sản phẩm vì sự kiểm tra nghiêm ngặt khi vào nước bạn
Hình 3: Hình ảnh về nhà trồng thông minh
Trang 8III Thực tiễn áp dụng Arduino
Ứng dụng của Arduino về mô hình hệ thống tự động sử dụng một cảm biến độ
ẩm và nhiệt độ kết nối với một Arduino và điều khiển động cơ tạo ra hệ thống tưới tiêu
tự động Tất cả mọi việc đều tự động diễn ra trong quá trình cài đặt sẵn và qua các cảm biến để điều tiết việc tưới cây hợp lí trong mọi thời tiết Từ ví dụ thực tiễn cùng với sự giúp đỡ của giáo viên hướng dẫn, nhóm đã lựa chọn và phát triển đề tài theo hướng sử dụng kid Arduino để thực hiện đề tài của mình
Ứng dụng đơn giản qua thao tác nút bấm cài đặt thời gian hẹn giờ để tưới cây và làm việc thông minh qua các cảm biến Trước hết về cảm biến nhiệt độ và độ ẩm được
áp dụng với khí hậu thời tiết nhiệt đới ẩm gió mùa với 4 mùa rõ rệt vậy nên cảm biến nhiệt độ độ ẩm có tầm quan trọng trong khâu tự động Đo được các mức nhiệt độ cần thiết đáp ứng cho cây trồng cũng là ưu tiên hàng đầu trong ứng dụng
Hệ thống đảm bảo về mảng thời gian cài đặt, đảm bảo về nhiệt độ thay đổi qua mùa, độ ẩm theo khí hậu tất cả được kết hợp tạo thành hệ thống thông minh đáp ứng đúng yêu cầu người trồng cây Vì vậy việc tưới tiêu cây trồng với con người trong công nghệ này đã thay thế hoàn toàn cho sức lao động của con người
Một hệ thống trồng thông minh đáp ứng về thời tiết kết hợp việc cài đặt thời gian tưới phù hợp cây trồng tất cả chỉ trong một thiết bị vi điều khiển Arduino Phù hợp với người bận công việc, phù hợp với việc sản xuất nông nghiệp cao đưa ra chất lượng cây trồng tốt
Hình 4: Hệ thống tưới tự động
Trang 9Chương II: Arduino và lập trình Arduino
I Giới thiệu chung về Arduino
1 Giới thiệu về Arduino và Arduino IDE
Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương tác với nhau hoặc với môi trường được thuận lợi hơn Phần cứng bao gồm một board mạch nguồn mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặc ARM Atmel 32-bit Những Model hiện tại được trang bị gồm 1 cổng giao tiếp USB, 6 chân đầu vào analog, 14 chân I/O kỹ thuật số tương thích với nhiều board mở rộng khác nhau
Được giới thiệu vào năm 2005, Những nhà thiết kế của Arduino cố gắng mang đến một phương thức dễ dàng, không tốn kém cho những người yêu thích, sinh viên và giới chuyên nghiệp để tạo ra những thiết bị có khả năng tương tác với môi trường thông qua các cảm biến và các cơ cấu chấp hành Những ví dụ phổ biến cho những người yêu thích mới bắt đầu bao gồm các robot đơn giản, điều khiển nhiệt độ và phát hiện chuyển động Đi cùng với nó là một môi trường phát triển tích hợp (IDE) chạy trên các máy tính cá nhân thông thường và cho phép người dùng viết các chương trình cho Aduino bằng ngôn ngữ C hoặc C++
Giá của các board Arduino dao động xung quanh €20 - $27, nếu được "làm giả" thì giá có thể giảm xuống thấp hơn $9 Các board Arduino có thể được đặt hàng ở dạng được lắp sẵn hoặc dưới dạng các kit tự-làm-lấy Thông tin thiết kế phần cứng được cung cấp công khai để những ai muốn tự làm một mạch Arduino bằng tay có thể tự mình thực hiện được (mã nguồn mở) Người ta ước tính khoảng giữa năm 2011 có trên
300 ngàn mạch Arduino chính thức đã được sản xuất thương mại, và vào năm 2013 có khoảng 700 ngàn mạch chính thức đã được đưa tới tay người dùng
Phần cứng
Một mạch Arduino Uno chính thức với các mô tả về các cổng I/O
Trang 10Một board Arduino đời đầu gồm một cổng giao tiếp RS-232 (góc phía trên-bên trái)
và một chip vi xử lý Atmel ATmega8 (màu đen, nằm góc phải-phía dưới); 14 chân
I/O số nằm ở phía trên và 6 chân analog đầu vào ở phía đáy
Hình 5: Phần cứng Arduino
Một mạch Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ sung giúp dễ dàng lập trình và có thể mở rộng với các mạch khác Một khía cạnh quan trọng của Arduino là các kết nối tiêu chuẩn của nó, cho phép người dùng kết nối với CPU
của board với các module thêm vào có thể dễ dàng chuyển đổi, được gọi là shield Vài
shield truyền thông với board Arduino trực tiếp thông qua các chân khách nhau, nhưng nhiều shield được định địa chỉ thông qua serial bus I²C-nhiều shield có thể được xếp chồng và sử dụng dưới dạng song song Arduino chính thức thường sử dụng các dòng chip megaAVR, đặc biệt là ATmega8, ATmega168, ATmega328, ATmega1280, và ATmega2560 Một vài các bộ vi xử lý khác cũng được sử dụng bởi các mạch Aquino tương thích Hầu hết các mạch gồm một bộ điều chỉnh tuyến tính 5V và một thạch anh dao động 16 MHz (hoặc bộ cộng hưởng ceramic trong một vài biến thể), mặc dù một vài thiết kế như LilyPad chạy tại 8 MHz và bỏ qua bộ điều chỉnh điện áp onboard do hạn chế về kích cỡ thiết bị Một vi điều khiển Arduino cũng có thể được lập trình sẵn với một boot loader cho phép đơn giản là upload chương trình vào bộ nhớ flash on-chip, so với các thiết bị khác thường phải cần một bộ nạp bên ngoài Điều này giúp cho việc sử dụng Arduino được trực tiếp hơn bằng cách cho phép sử dụng 1 máy tính gốc như là một bộ nạp chương trình
Theo nguyên tắc, khi sử dụng ngăn xếp phần mềm Arduino, tất cả các board được
đời phần cứng Các board Serial Arduino có chứa một mạch chuyển đổi giữa RS232 sang TTL Các board Arduino hiện tại được lập trình thông qua cổng USB, thực hiện thông qua chip chuyển đổi USB-to-serial như là FTDI FT232 Vài biến thể, như Arduino Mini và Boarduino không chính thức, sử dụng một board adapter hoặc cáp nối USB-to-serial có thể tháo rời được, Bluetooth hoặc các phương thức khác (Khi sử dụng một công cụ lập trình vi điều khiển truyền thống thay vì ArduinoIDE, công cụ lập trình AVR ISP tiêu chuẩn sẽ được sử dụng.)
Trang 11Board Arduino sẽ đưa ra hầu hết các chân I/O của vi điều khiển để sử dụng cho những mạch ngoài Diecimila, Duemilanove, và bây giờ là Uno đưa ra 14 chân I/O kỹ
analog, có thể được sử dụng như là 6 chân I/O số Những chân này được thiết kế nằm phía trên mặt board, thông qua các header cái 0.10-inch (2.5 mm) Nhiều shield ứng
Arduino-compatible Bare Bones Board và Boarduino có thể cung cấp các chân header đực ở mặt trên của board dùng để cắm vào các breadboard
Có nhiều biến thể như Arduino-compatible và Arduino-derived Một vài trong
số đó có chức năng tương đương với Arduino và có thể sử dụng để thay thế qua lại Nhiều mở rộng cho Arduino được thực thiện bằng cách thêm vào các driver đầu ra,
thường sử dụng trong các trường học để đơn giản hóa các cấu trúc của các 'con rệp' và các robot nhỏ Những board khác thường tương đương về điện nhưng có thay đổi về hình dạng-đôi khi còn duy trì độ tương thích với các shield, đôi khi không Vài biến thể
sử dụng bộ vi xử lý hoàn toàn khác biệt, với các mức độ tương thích khác nhau
Các board chính thức
Phần cứng Arduino gốc được sản xuất bởi công ty Italy tên là Smart Projects Một vài board dẫn xuất từ Arduino cũng được thiết kế bởi công ty của Mỹ tên là SparkFun Electronics Sáu phiên bản phần cứng của Arduino cũng đã được sản xuất thương mại tính đến thời điểm hiện tại
Các board Arduino mẫu
Trang 12(rev 2007)
Hình 6: Một số board Arduino mẫu
Shield (Bo mạch mở rộng)
Các board Arduino và Arduino-compatible sử dụng các shield— các board mạch
in mở rộng được dùng bằng cách cắm vào các chân header của Arduino Các shield có thể là module điều khiển cho động cơ, GPS, ethernet, LCD, hoặc cũng có thể là breadboard Một số lượng lớn các shield cũng có thể được chế tạo bởi DIY (những
Các shield Arduino điển hình
Nhiều shield có thể được xếp chồng lên nhau Trong
ví dụ này shield ở trên cùng
Shield Adafruit Motor với
Trang 13có chứa một breadboard chưa hàn
các đầu domino dùng để kết
nối với động cơ
Shield này sử dụng các đầu domino bắt vít dùng để đấu các đầu dây vào
Shield Adafruit Datalogging
Hình 7: Một số shield Arduino điển hình
Phần mềm
Arduino Software IDE
Bảng 1: Giới thiệu về phần mềm Arduino
để dành cho những người mới tập làm quen với lĩnh vực phát triển phần mềm Nó bao gồm một chương trình code editor với các chức năng như đánh dấu cú pháp, tự
Arduino được gọi là một sketch
Trang 14Các chương trình Arduino được viết bằng C hoặc C++ Arduino IDE đi kèm với
• setup(): hàm này chạy mỗi khi khởi động một chương trình, dùng để thiết lập các cài đặt
• loop(): hàm này được gọi lặp lại cho đến khi tắt nguồn board mạch
Một chương trình điển hình cho một bộ vi điều khiển đơn giản chỉ là làm cho một bóng đèn Led sáng/tắt Trong môi trường Arduino, ta sẽ phải viết một chương trình giống như sau
Hình 8: Đèn LED tích hợp với chân 13
• digitalWrite (LED_PIN, HIGH); // Bật LED on
• delay (1000); // chờ trong 1 giây (1000 mili giây)
• digitalWrite (LED_PIN, LOW); // Tắt LED off
• delay (1000); // chờ trong 1s+
Một đặc điểm của hầu hết các board Arduino là chúng có một đèn LED và điện trở nối giữa chân 13 với đất; một đặc điểm thuận tiện cho nhiều ứng dụng đơn giản Đoạn
đúng, vì vậy khi ta click vào nút "Upload to I/O board" trong IDE này, một bản copy của đoạn code này sẽ được ghi vào một file tạm với một extra include header ở phía
Trang 15trên cùng và một hàm main () đơn giản nằm ở phía đáy, để làm cho thàn một chương trình C++ khả dụng
Vì nền tảng của Arduino là các vi điều khiển của Atmel, cho nên môi trường phát
được sử dụng để làm phần mềm phát triển cho Arduino
II Làm quen với KIT ESP8266 Wemos D1 R2
WEMOS D1 R2 là kit phát triển phiên bản mới nhất từ WeMos, kit được thiết kế với hình dáng tương tự Arduino Uno nhưng trung tâm lại là module wifi Soc ESP8266EX được build lại firmware để có thể chạy với chương trình Arduino Kit thích hợp và dễ dàng thực hiện các ứng dụng thu thập dữ liệu và điều khiển qua Wifi
Hình 9: Wemos D1 R2
Trang 16Vi điều khiển ESP8266EX
Điện áp hoạt động 3V3
Analog Pin 1 (Max input=3V2) Xung clock 80MHz/160MHz
Trang 17Wemos D1 R2 PINs ESP8266 PINs Grove Arduino Base Shield
Bảng 3: Bảng chuyển đổi chân KIT sang Shield
Lí do cần có bảng này là để dễ dàng trong việc viết code Bởi khi viết code nếu muốn xuất tín hiệu HIGH cho pin số 3 trên kit thì ta ko thể viết "digitalWrite(3, HIGH);" mà phải viết là "digitalWrite(0, HIGH);" (Theo trên bảng thì chân D3 trên kit là chân 0 của ESP) Hay nói cách khác là ta phải điều khiển chân trên ESP8266
Và khi ta code xuất chân D3 mức HIGH thì chân D15 cũng được xuất HIGH, lí do là vì: các chân từ D11=>D15 là các chân "giả" để kit trông giống arduino hơn (ESP chỉ
có 11 pin digital), vì vậy các pin D11=>D15 được nối lần lượt với D7=>D3
Trang 18Chương III: Thiết kế, lập trình và cài đặt mạch
cho hệ thông tưới nước tự động
• DO: Đầu ra tín hiệu số (0 và 1)
• AO: Đầu ra Analog (Tín hiệu tương tự)
Trang 19Nguyên lý hoạt động:
Hình 12: Sơ đồ nguyên lý hoạt động
1.2 Grove Temperature & Humidity Sensor
Hình 13: Cảm biến nhiệt độ độ ẩm trong không khí