Tải bản đầy đủ (.pdf) (38 trang)

Cơ sở lập trình nhúng: Xây dựng hệ thống tưới tự động

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.83 MB, 38 trang )

ĐẠ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


TRƯỜ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


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


Lờ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!

4


Chươ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ữ
trong các chip bộ nhớ chỉ đọc (ROM - Read Only Memory) hoặc bộ nhớ flash chứ
5


khô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ế.
Một số ví dụ về hệ thống nhúng
Quanh ta có rất nhiều sản phẩm nhúng như: lò vi sóng, nồi cơm điện, điều hoà,
điện thoại di động, ôtô, máy bay, tàu thuỷ, các đầu đo cơ cấu chấp hành thông minh….
Ta có thể thấy hiện nay hệ thống nhúng có mặt ở mọi lúc mọi nơi trong cuộc sống của
chúng ta.
Các máy trả lời tự động, các thiết bị y tế, máy in, hệ thống dẫn đường trong không
lưu đều có tích hợp các hệ thống nhúng.

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
6


II. 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
7


III. 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
8


Chươ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 32bit. 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

9


Mộ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 onchip, 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
lập trình thông qua một kết nối RS-232, nhưng cách thức thực hiện lại tùy thuộc vào
đờ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.)
10


Board 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ỹ
thuật số, 6 trong số đó có thể tạo xung PWM (điều chế độ rộng xung) và 6 chân input
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
dụng plug-in cũng được thương mại hóa. Các board Arduino Nano, và Arduinocompatible 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.

Tên
Arduino
Diecimila
in Stoicheia
Arduino
Duemilanove (rev
2009b)

Các board Arduino mẫu
Ảnh
Tên
Arduino MEGA
2560 R3 (mặt
trước)
Arduino MEGA
2560 R3 (mặt
sau)

11

Ảnh



Arduino UNO

Arduino Nano

(AVR 8-bit
ATmega328P)

Arduino Due (nền
tảng ARM)

Arduino
Leonardo

Arduino Mega

LilyPad Arduino
(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
người thích tự làm lấy các ứng dụng cho riêng họ).

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
12


có 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
với một khe chứa thẻ nhớ
SD và chip clock Real-Time

Hình 7: Một số shield Arduino điển hình
Phần mềm
Arduino Software IDE
Phát triển bởi

Arduino Software

Repository


github.com/arduino/Arduino

Được viết bằng

Java, C và C++

Hệ điều hành

Cross-platform

Thể loại

Integrated development environment

Giấy phép

LGPL or GPL license

Trang mạng

arduino.cc
Bảng 1: Giới thiệu về phần mềm Arduino

Môi trường phát triển tích hợp (IDE) của Arduino là một ứng dụng crossplatform (nền tảng) được viết bằng Java, và từ IDE này sẽ được sử dụng cho Ngôn ngữ
lập trình xử lý (Processing programming language) và project Wiring. Nó được thiết kế
để 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ự
động brace matching, và tự động canh lề, cũng như compile(biên dịch) và upload
chương trình lên board chỉ với 1 cú nhấp chuột. Một chương trình hoặc code viết cho
Arduino được gọi là một sketch.


13


Các chương trình Arduino được viết bằng C hoặc C++. Arduino IDE đi kèm với
một thư viện phần mềm được gọi là "Wiring", từ project Wiring gốc, có thể giúp các
thao tác input/output được dễ dàng hơn. Người dùng chỉ cần định nghĩa 2 hàm để tạo
ra một chương trình vòng thực thi (cyclic executive) có thể chạy được:




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


#define LED_PIN 13







void setup () {
pinMode (LED_PIN, OUTPUT); // Đặt chân 13 làm đầu ra digital
}








void loop () {
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
code ở trên không thể đọc được bởi một compiler C++ chuẩn như là một chương trình
đú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
14


trê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.
Arduino IDE này sử dụng GNU toolchain và AVR Libc để biên dịch chương trình,
và sử dụng avrdude để upload chương trình lên board.
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

triển của Atmel, AVR Studio hoặc các phiên bản Atmel Studio mới hơn, cũng có thể
đượ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

15


Vi điều khiển

ESP8266EX

Điện áp hoạt động
3V3
I/O Digital Pin
11
Analog Pin
1 (Max input=3V2)
Xung clock
80MHz/160MHz
Flash
4Mb
Khối lượng
25g
Kích thước

68.6mmX53.4mm
Bảng 2: Thông số kỹ thuật
Sơ đồ pin digital

Hình 10: Sơ đồ Pin

16


Wemos D1 R2 PINs

ESP8266 PINs

D0
D1
D2
D3
D4
D5
D6
D7
D8

GPIO16
GPIO5 (SLC)
GPIO4 (SDA)
GPIO0
GPIO2 (Builtin LED)
GPIO14 (SCK)
GPIO12


Grove Arduino Base Shield
PINs
D2
D3
D4
D5
D6
D7
D8

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.

17


Chươ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
I. Thiết kế phần cứng
1. Các thiết bị sử dụng:
1. 1 Cảm biến độ ẩm đất

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


Thông số kỹ thuật:









Điện áp hoạt động: 3.3V-5V
Kích thước PCB: 3cm * 1.6cm
Led đỏ báo nguồn vào, Led xanh báo độ ẩm.
IC so sánh : LM393
VCC: 3.3V-5V
GND: 0V
DO: Đầu ra tín hiệu số (0 và 1)
AO: Đầu ra Analog (Tín hiệu tương tự)

18


Nguyê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í


19


1.3 Wemos D1 R2

Hình 14: Board Wemos D1 R2
Thông số kỹ thuật:
• 11 chân đầu vào / đầu ra kỹ thuật số, tất cả các chân có ngắt / pwm / I2C / một
dây được hỗ trợ (ngoại trừ D0 )
• 1 đầu vào tương tự (đầu vào tối đa 3.2V)
• Kết nối Micro USB
• Giắc cắm nguồn, ngõ vào nguồn 9-24V.
• Tương thích với Arduino ( thư viện IDE Arduino )
• Tương thích với máy chủ

20


1.4 Grove Arduino Base Shield PINs

Hình 15: Grove Arduino Base Shield
1.5 Grove - Relay

Hình 16: Grove Relay

21


1.6 Light Sensor


Hình 17: Light Sensor
1.7 Led

Hình 18: Led

22


2. Lắp đặt bảng mạch:
#define CB_NHIETDO_DOAM D0 // cảm biến nhiệt độ, độ ẩm không khí
#define CB_DOAM_DAT A0 // cảm biến độ ẩm đất
#define CB_ANHSANG D6 // cảm biến ánh sáng
#define RELAY_MAYBOM D5 // relay điều chỉnh máy bơm
#define RELAY_BONGDEN D3 // relay điều chỉnh bóng đèn
#define LED_MAYBOM D1 // đèn báo hiệu máy bơm bật-tắt
#define LED_BONGDEN D2 // đèn báo hiệu bóng điện bật-tắt

Hình 19: Bảng mạch

23


Hình 20: Giản đồ bảng mạch
II. Phần mềm và chương trình:
1. Phần mềm Arduino
Thiết kế bo mạch nhỏ gọn, trang bị nhiều tính năng thông dụng mang lại nhiều
lợi thế cho Arduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phần mềm. Môi
trường lập trình đơn giản dễ sử dụng, ngôn ngữ lập trình Wiring dễ hiểu và dựa trên
nền tảng C/C++ rất quen thuộc với người làm kỹ thuật. Và quan trọng là số lượng thư
viện code được viết sẵn và chia sẻ bởi cộng đồng nguồn mở là cực kỳ lớn.

Giao diện của phần mềm Arduino IDE có nhiều phần, tuy nhiên chúng ta chú ý
đến những phần quan trọng như được nêu ra trong hình trên. Chức năng của từng
phần như sau:

24


Hình 21: Giao diện của Arduino


Nút kiểm tra chương trình

Dùng để kiểm tra xem chương trình được viết có lỗi không. Nếu chương trình
bị lỗi thì phần mềm Arduino IDE sẽ hiển thị thông tin lỗi ở vùng thông báo thông tin.
• Nút nạp chương trình xuống board Arduino
Dùng để nạp chương trình được viết xuống mạch Arduino. Trong quá trình nạp,
chương trình sẽ được kiểm tra lỗi trước sau đó mới thực hiện nạp xuống mạch
Arduino.
• Hiển thị màn hình giao tiếp với máy tính
Khi nhấp vào biểu tượng cái kính lúp thì phần giao tiếp với máy tính sẽ được mở ra.
Phần này sẽ hiển thị các thông số mà người dùng muốn đưa lên màn hình. Muốn đưa
lên màn hình phải có lệnh Serial.print() mới có thể đưa thông số cần hiển thị lên màn
hình
• Vùng lập trình
Vùng này để người lập trình thực hiện việc lập trình cho chương trình của mình.
• Vùng thông báo thông tin
25



×