Có thể nói trong nông học, ngoài những kỹ thuật trồng trọt, chăm sóc thì tưới nước và tăng thời gian quang hợp của cây là một trong các khâu quan trọng nhất của trồng trọt, để đảm bảo câ
TỔNG QUAN VỀ ĐỀ TÀ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.
1.1.2 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ứ 6 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ế.
1.1.3 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(), RAM(), và Flash memory().
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
Khái quát về hệ thống tưới tiêu tự động
Lắp đặt và sử dụng hệ thống tưới tiêu tự động 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 Việc 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
THỰC TIỄN VIỆC Á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
6 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 nước tự động
LẬP TRÌNH ARDUINO
Giới thiệu chung và Arduino
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.
Một mạch Arduino Uno chính thức với các mô tả về các cổng I/O.
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.
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
10 đượ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.)
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.
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
Arduino UNO (AVR 8-bit ATmega328P )
Phát triển bởi Arduino Software
Repository Github.com/arduino/Arduino Được viết bằng Java, C và C++
Thể loại Integrated development enviroment
Giấy phép LGPL hoặc GPL license
Ứng dụng 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.
Vi điều khiển ESP8266EX Điện áp hoạt động 3V3
Bảng 2: Thông số kỹ thuật
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.
Hình 13 Cảm biến nhiệt độ độ ẩm trong không khí
Hình 14 Board Wemons 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)
• 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ủ
Grove Arduino Base Shield PINs
Hình 15 Grove Arduino Base Shield
3.1.2 Sử dụng Button để điều khiển trạng thái của LED.
Mô |t số kiểu mắc mạch
//set pin numbers const int ledPin = 2 const int buttonPin = 4;
// variables will change int buttonState = ; 0 void setup() {
Serial begin (9600) ; pinMode( ledPin, OUTPUT ; ) pinMode( buttonPin, INPUT ; )
} void loop(){ buttonState = digitalRead( buttonPin ) ; buttonState == HIGH if ( ) { digitalWrite(ledPin, HIGH);
Hình 20 Giản đồ bảng mạch
3.3 Phần mềm và chương trình
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:
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 các 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 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
Có chức năng thông báo các thông tin lỗi của chương trình hoặc các vấn đề liên quan đến chương trình được lập.
Sử dụng một vào menu thông dụng
Có vài menu trong phần mềm IDE, tuy nhiên thông dụng nhất vẫn là menu File, ngoài những tính năng như mở một file mới hay lưu một file, phần menu này có một mục đáng chú ý là Example Phần Example (ví dụ) đưa ra các ví dụ sẵn để người lập trình có thể tham khảo, giảm bớt thời gian lập trình Hình bên dưới thể hiện việc chọn một ví dụ cho led chớp tắt (blink) để nạp cho mạch Arduino Ví dụ về led chớp tắt này thường được dùng để kiểm tra bo khi mới mua về
Hình 22 Một số menu thông dụng
Một menu thường được sử dụng khác là menu Tools Khi mới kết nối bo Arduino với máy tính ta click vào Tools->board để chọn loại board sử dụng Phần mềm chọn sẵn kiểu bo là bo Arduino Uno, nếu người dùng dùng kiểu bo khác thì chọn kiểu bo đang dùng.
Bên cạnh việc chọn bo thì một phần quan trọng nữa là chọn cổng COM Hình bên dưới minh họa cho việc chọn cổng COM Khi lần đầu gắn mạch Arduino vào máy tính, người sử dụng cần nhấn chọn cổng COM bằng cách vào Tools -> Serial Port (một số phiên bản dùng từ Port) sau đó nhấn chọn cổng COM, ví dụ như COM5 Những lần sau khi đưa chính board Arduino đó vào máy tính thì không cần chọn cổng COM, nếu đưa bo Arduino khác vào máy thì cần phải chọn lại cổng COM, quy trình thực hiện cũng tương tự
Môi trường lập trình Arduino IDE có thể chạy trên ba nền tảng phổ biến nhất hiện nay là Windows, Macintosh OSX và Linux Do có tính chất nguồn mở nên môi trường lập trình này hoàn toàn miễn phí và có thể mở rộng thêm bởi người dùng có kinh nghiệm
Ngôn ngữ lập trình có thể được mở rộng thông qua các thư viện C++ Và do ngôn ngữ lập trình này dựa trên nền tảng ngôn ngữ C của AVR nên người dùng hoàn toàn có thể nhúng thêm code viết bằng AVR C vào chương trình nếu muốn.
Sử dung Google Assistant và IFTTT (if this then that) để có thể điều khiển bằng âm thanh:
Tóm tắt nguyên lý hoạt động:
Khi nói, ứng dụng Google Assistant sẽ nhận diện dọng nói nếu giống giọng nói ta tạo trên trigger ở IFTTT, nó sẽ gửi giá trị ta muốn đặt vào server của blynk, server blynk sẽ đặt gán giá trị đó vào wemos và relay sẽ mở , lúc đó đèn sẽ sáng.
Hình 25 Nguyên lý hoạt động GG Assistant & IFTTT Minh họa:
Cài đặt câu nói vào Google Assistant trên IFTTT:
Hình 26 IFTTT Cài đặt dữ liệu và set giá trị trả về wemos:
Hình 27 Dữ liệu trả về Wemos
Source Code sản phẩm viết trên phần mềm Arduino:
//rgb_lcd lcd; // màn hình lcd
DHTesp dht; // độ ẩK m-nhiệt độ khống khí
#define CB_NHIETDO_DOAM D0 // ca Km biếB n nhiệt độ, độ ẩK m khống khí
#define CB_DOAM_DAT A0 // ca Km biếB n độ ẩK m đẩB t
#define CB_ANHSANG D6 // ca Km biếB n ánh sáng
#define RELAY_MAYBOM D5 // relay điếR u chỉ Knh máy bơm
#define RELAY_BONGDEN D3 // relay điếR u chỉ Knh bóng đèn
#define LED_MAYBOM D1 // đèn báo hiệu máy bơm bật-tắB t
#define LED_BONGDEN D2 // đèn báo hiệu bóng điện bật-tắB t const int ON = 1; const int OFF = ; 0
// Cài đặt mạng kếB t nốB i Blynk char auth[] = "56ae3e7fbdb248279a62aea5fd8f7dab"; char ssid[] = "Ho Ki nhà bến"; char pass[] = "Lamgicomabao";
// biếB n cục bộ float humidity = 0, temperature = 0; int doAmDat = 100 , light = , atRun = , dem = 1; 0 0 long duration = , startTime; 0
// Hàm đo nhiệt độ-độ ẩK m void readHumidityTemperature() { humidity = dht getHumidity (); // độ ẩK m temperature = dht.getTemperature(); // nhiệt độ
// Hàm đo độ ẩK m đẩB t int readSoilMoisture() { int value = analogRead(CB_DOAM_DAT) ;
; int percent = map( value, 1, 1024 0 100) , , // đốK i sang % return percent;
// Hàm đo ánh sáng int readLight() { int valueLight = digitalRead(CB_ANHSANG);
// Đọc giá trị đo được void ReadValue() { readHumidityTemperature(); doAmDat = readSoilMoisture() ; light = readLight() ;
// HiếK n thị lến Blynk void DisplayBlynk() {
! if ( isnan(humidity) && !isnan(temperature)) {
// hiếK n thị nhiệt độ-độ ẩK m
Serial printf("NhDo:%.0f|DoAm:%.0f", temperature, humidity);
// hiếK n thị độ ẩK m đẩB t
// XưK lý tự động void AutoRun() {
// XưK lý độ ẩK m đẩB t 60->70: bật - tắB t máy bơm tưới nước if (doAmDat < 60) { digitalWrite(RELAY_MAYBOM, ON); digitalWrite(LED_MAYBOM, ON ; ) led_TuoiNuoc on ();
Serial println("BAT tuoi nuoc");
} if (doAmDat > 70) { digitalWrite(RELAY_MAYBOM, OFF ; ) digitalWrite(LED_MAYBOM, OFF); led_TuoiNuoc off ();
Serial println("TAT tuoi nuoc");
// XưK lý độ ẩK m khống khí 55->65: bật - tắB t máy bơm phun sương
! if ( isnan(humidity)) { if (humidity < 55) { digitalWrite(RELAY_MAYBOM, ON); digitalWrite(LED_MAYBOM, ON ; )
Serial println("BAT phun suong");
34 digitalWrite(RELAY_MAYBOM, OFF ; ) digitalWrite(LED_MAYBOM, OFF);
Serial println("TAT phun suong");
// Nhiệt độ khống khí từ 15 -> 25 độ: SưK dụng điếR u hòa cống nghiệp cài ơ K
// Ánh sáng cho cẩy 10h/ngày
// Demo: 2p if (dem == 1 && light == 1) { startTime = millis() ; dem = ; 0
} else if (dem == && light == 0 0) { duration = millis() - startTime;
} if (duration != 0) { if (duration Include library -> Add ZIP library và chọn file vừa tải về.
3.3.1 Thiết lập Blynk trên máy tính: Đầu tiền truy cập vào https://blynk.cloud/ đăng nhập, nếu chưa có tài khoản thì chọn Create new account để đăng ký Các bạn nhập tên email vào, sau đó tích chọn Sign Up.
Hướng dẫn cài đặt và sử dụng Blynk New 2.0 trên Arduino IDE với ESP8266
Thiết kế, lập trình và cài đặt mạch
Lắp đặt bảng mạch
Hình 20 Giản đồ bảng mạch
3.3 Phần mềm và chương trình
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:
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 các 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 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
Có chức năng thông báo các thông tin lỗi của chương trình hoặc các vấn đề liên quan đến chương trình được lập.
Sử dụng một vào menu thông dụng
Có vài menu trong phần mềm IDE, tuy nhiên thông dụng nhất vẫn là menu File, ngoài những tính năng như mở một file mới hay lưu một file, phần menu này có một mục đáng chú ý là Example Phần Example (ví dụ) đưa ra các ví dụ sẵn để người lập trình có thể tham khảo, giảm bớt thời gian lập trình Hình bên dưới thể hiện việc chọn một ví dụ cho led chớp tắt (blink) để nạp cho mạch Arduino Ví dụ về led chớp tắt này thường được dùng để kiểm tra bo khi mới mua về
Hình 22 Một số menu thông dụng
Một menu thường được sử dụng khác là menu Tools Khi mới kết nối bo Arduino với máy tính ta click vào Tools->board để chọn loại board sử dụng Phần mềm chọn sẵn kiểu bo là bo Arduino Uno, nếu người dùng dùng kiểu bo khác thì chọn kiểu bo đang dùng.
Bên cạnh việc chọn bo thì một phần quan trọng nữa là chọn cổng COM Hình bên dưới minh họa cho việc chọn cổng COM Khi lần đầu gắn mạch Arduino vào máy tính, người sử dụng cần nhấn chọn cổng COM bằng cách vào Tools -> Serial Port (một số phiên bản dùng từ Port) sau đó nhấn chọn cổng COM, ví dụ như COM5 Những lần sau khi đưa chính board Arduino đó vào máy tính thì không cần chọn cổng COM, nếu đưa bo Arduino khác vào máy thì cần phải chọn lại cổng COM, quy trình thực hiện cũng tương tự
Môi trường lập trình Arduino IDE có thể chạy trên ba nền tảng phổ biến nhất hiện nay là Windows, Macintosh OSX và Linux Do có tính chất nguồn mở nên môi trường lập trình này hoàn toàn miễn phí và có thể mở rộng thêm bởi người dùng có kinh nghiệm
Ngôn ngữ lập trình có thể được mở rộng thông qua các thư viện C++ Và do ngôn ngữ lập trình này dựa trên nền tảng ngôn ngữ C của AVR nên người dùng hoàn toàn có thể nhúng thêm code viết bằng AVR C vào chương trình nếu muốn.
Sử dung Google Assistant và IFTTT (if this then that) để có thể điều khiển bằng âm thanh:
Tóm tắt nguyên lý hoạt động:
Khi nói, ứng dụng Google Assistant sẽ nhận diện dọng nói nếu giống giọng nói ta tạo trên trigger ở IFTTT, nó sẽ gửi giá trị ta muốn đặt vào server của blynk, server blynk sẽ đặt gán giá trị đó vào wemos và relay sẽ mở , lúc đó đèn sẽ sáng.
Hình 25 Nguyên lý hoạt động GG Assistant & IFTTT Minh họa:
Cài đặt câu nói vào Google Assistant trên IFTTT:
Hình 26 IFTTT Cài đặt dữ liệu và set giá trị trả về wemos:
Hình 27 Dữ liệu trả về Wemos
Source Code sản phẩm viết trên phần mềm Arduino:
//rgb_lcd lcd; // màn hình lcd
DHTesp dht; // độ ẩK m-nhiệt độ khống khí
#define CB_NHIETDO_DOAM D0 // ca Km biếB n nhiệt độ, độ ẩK m khống khí
#define CB_DOAM_DAT A0 // ca Km biếB n độ ẩK m đẩB t
#define CB_ANHSANG D6 // ca Km biếB n ánh sáng
#define RELAY_MAYBOM D5 // relay điếR u chỉ Knh máy bơm
#define RELAY_BONGDEN D3 // relay điếR u chỉ Knh bóng đèn
#define LED_MAYBOM D1 // đèn báo hiệu máy bơm bật-tắB t
#define LED_BONGDEN D2 // đèn báo hiệu bóng điện bật-tắB t const int ON = 1; const int OFF = ; 0
// Cài đặt mạng kếB t nốB i Blynk char auth[] = "56ae3e7fbdb248279a62aea5fd8f7dab"; char ssid[] = "Ho Ki nhà bến"; char pass[] = "Lamgicomabao";
// biếB n cục bộ float humidity = 0, temperature = 0; int doAmDat = 100 , light = , atRun = , dem = 1; 0 0 long duration = , startTime; 0
// Hàm đo nhiệt độ-độ ẩK m void readHumidityTemperature() { humidity = dht getHumidity (); // độ ẩK m temperature = dht.getTemperature(); // nhiệt độ
// Hàm đo độ ẩK m đẩB t int readSoilMoisture() { int value = analogRead(CB_DOAM_DAT) ;
; int percent = map( value, 1, 1024 0 100) , , // đốK i sang % return percent;
// Hàm đo ánh sáng int readLight() { int valueLight = digitalRead(CB_ANHSANG);
// Đọc giá trị đo được void ReadValue() { readHumidityTemperature(); doAmDat = readSoilMoisture() ; light = readLight() ;
// HiếK n thị lến Blynk void DisplayBlynk() {
! if ( isnan(humidity) && !isnan(temperature)) {
// hiếK n thị nhiệt độ-độ ẩK m
Serial printf("NhDo:%.0f|DoAm:%.0f", temperature, humidity);
// hiếK n thị độ ẩK m đẩB t
// XưK lý tự động void AutoRun() {
// XưK lý độ ẩK m đẩB t 60->70: bật - tắB t máy bơm tưới nước if (doAmDat < 60) { digitalWrite(RELAY_MAYBOM, ON); digitalWrite(LED_MAYBOM, ON ; ) led_TuoiNuoc on ();
Serial println("BAT tuoi nuoc");
} if (doAmDat > 70) { digitalWrite(RELAY_MAYBOM, OFF ; ) digitalWrite(LED_MAYBOM, OFF); led_TuoiNuoc off ();
Serial println("TAT tuoi nuoc");
// XưK lý độ ẩK m khống khí 55->65: bật - tắB t máy bơm phun sương
! if ( isnan(humidity)) { if (humidity < 55) { digitalWrite(RELAY_MAYBOM, ON); digitalWrite(LED_MAYBOM, ON ; )
Serial println("BAT phun suong");
34 digitalWrite(RELAY_MAYBOM, OFF ; ) digitalWrite(LED_MAYBOM, OFF);
Serial println("TAT phun suong");
// Nhiệt độ khống khí từ 15 -> 25 độ: SưK dụng điếR u hòa cống nghiệp cài ơ K
// Ánh sáng cho cẩy 10h/ngày
// Demo: 2p if (dem == 1 && light == 1) { startTime = millis() ; dem = ; 0
} else if (dem == && light == 0 0) { duration = millis() - startTime;
} if (duration != 0) { if (duration Include library -> Add ZIP library và chọn file vừa tải về.
3.3.1 Thiết lập Blynk trên máy tính: Đầu tiền truy cập vào https://blynk.cloud/ đăng nhập, nếu chưa có tài khoản thì chọn Create new account để đăng ký Các bạn nhập tên email vào, sau đó tích chọn Sign Up.
Hướng dẫn cài đặt và sử dụng Blynk New 2.0 trên Arduino IDE với ESP8266
Họ sẽ gửi mail về cho bạn, sau đó chọn Create Pasword để tạo mật khẩu Sau khi có tài khoản, bạn đăng nhập vào chọn New Template, nhập tên và chọn đầy đủ như hình dưới:
Hướng dẫn cài đặt và sử dụng Blynk New 2.0 trên Arduino IDE với ESP8266
Sau khi tạo xong sẽ hiện giao diện bên dưới, ta copy mã Template để dán vào code, link tải code mình sẽ để ở phần dưới.
Hướng dẫn cài đặt và sử dụng Blynk New 2.0 trên Arduino IDE với ESP8266
Tiếp theo, chọn Datastreams -> Virtual Pin -> nhập đầy đủ datastream của Pin -> Create
Hướng dẫn cài đặt và sử dụng Blynk New 2.0 trên Arduino IDE với ESP8266 Ở ví dụ này mình làm gửi dữ liệu cảm biến nhiệt độ, độ ẩm lên Blynk nên các bạn tạo tương tự một Pin V1 là độ ẩm, và tạo V3 là Pin điều khiển Led:
Hướng dẫn cài đặt và sử dụng Blynk New 2.0 trên Arduino IDE với ESP8266
Sau khi tạo Pin xong, ta chọn Web Dashboard, kéo các Gauge bên trái qua để hiển thị nhiệt độ và độ ẩm, Switch để làm công tắc bật tắt Led, một biểu đồ chart để để hiển thị nhiệt độ (bản free chỉ hiển thị được 1 biểu đồ), nhấn biểu tượng cài đặt để chọn từng Pin hiển thị phù hợp.
Hướng dẫn cài đặt và sử dụng Blynk New 2.0 trên Arduino IDE với ESP8266
Sau khi chọn xong ta ấn Save để lưu cài đặt:
Hướng dẫn cài đặt và sử dụng Blynk New 2.0 trên Arduino IDE với ESP8266
Tiếp theo, chọn biểu tượng Seach -> New Device để chọn thiết bị từ From template:
Hướng dẫn cài đặt và sử dụng Blynk New 2.0 trên Arduino IDE với ESP8266
Chọn tên template mà bạn đã tạo -> Create, sau đó xem kết quả:
Hướng dẫn cài đặt và sử dụng Blynk New 2.0 trên Arduino IDE với ESP8266
3.3.2 Thiết lập Blynk trên điện thoại:
Trên điện thoại sau khi tải app Blynk mới về, các bạn mở lên sau đó đăng nhập tài khoản đã tạo bên web, tên thiết bị bạn tạo lúc nãy trên web sẽ được hiển thị sẵn:
Hướng dẫn cài đặt và sử dụng Blynk New 2.0 trên Arduino IDE với ESP8266
Tương tự như bản cũ, các bạn chọn biểu tượng Button để điều khiển led, Value Display để hiển thị nhiệt độ, độ ẩm… nhớ chọn chân Pin cho từng mục:
Hướng dẫn cài đặt và sử dụng Blynk New 2.0 trên Arduino IDE với ESP8266
Thành quả sau khi tạo xong, các bạn có thể thay đổi màu, thiết kế giao diện cho từng dự án:
Hướng dẫn cài đặt và sử dụng Blynk New 2.0 trên Arduino IDE với ESP8266
Sơ đồ kết nối và code tham khảo
Các sản phẩm bạn cần cho ví dụ này:
Module Thu Phát Wifi ESP8266 NodeMCU Lua CP2102, ESP-12F Ai-Thinker x1 Module Cảm Biến Độ Ẩm Nhiệt Độ DHT22 x1
Module 1 Relay Với Opto Cách Ly Kích H/L (5VDC) x1
3.4.1 Sơ đồ kết nối mạch:
3.4.2 Code tham khảo https://drive.google.com/drive/folders/1VdOt5U214K7W3gcn_AGho4NL1z1oQUo2? usp=sharing
Kết quả: Ở app Blynk mới này các bạn có thể truy cập bằng trình duyệt web có thể xem data và điều khiển thiết bị như trên điện thoại, dữ liệu được đồng bộ cả hai, ví dụ khi bạn điều khiển đèn bằng điện thoại, trạng thái đèn cũng sẽ được cập nhật trên giao diện web và ngược lại