Hệ thống nông nghiệp thông minh phiên bản Arduino

Sau một thời gian đi quảng cáo spam khắp nơi thì mình thấy hệ thống nông nghiệp thông minh được các bạn ủng hộ khá nhiều, nhưng với một số bạn không có TIVA mà lại sẵn Arduino thì quả là vất vả, giờ lại phải đi mua kit TIVA mà không có nhu cầu dùng tới thì hơi tốn kém. Do đó thì mình phải thay đổi code một chút để nó phù hợp hơn với Arduino, hi vọng nó là cái để mọi người có thể tham khảo và xây dựng riêng một hệ thống nông nghiệp thông minh đơn giản cho riêng mình.

Trong bài viết này mình chỉ tập trung vào chương trình và một số thay đổi, về phần giải thích thêm bớt các bạn có thể coi ở bài viết Hệ thống nông nghiệp thông minh đơn giản nhé.

Bài viết này nằm trong serie về Nông nghiệp thông minh

 

Chuẩn bị

Phần cứng

  • Arduino
  • ESP8266 v1 hoặc v7/v12 (mình dùng v1 có sẵn)
  • Cảm biến nhiệt độ, độ ẩm DHT22
  • Cảm biến ánh sáng (mình tự chế)
  • Modul Relay (2 relay)
  • LCD 16×2
  • Nút nhấn và LED (mình tận dụng có sẵn trên kit TIVA C)
  • Dây nối
  • Nguồn 3.3V
  • Testboard (Breadboard)

Phần mềm

  • Arduino IDE
  • Thư viện DHT22

 

DHT22

Mình thử kiểm tra DHT22 hoạt động xem sao, kết nối dây như hình dưới

Chương trình đọc nhiệt độ, độ ẩm hiển thị lên máy tính với tốc độ baud là 115200

Chương trình DHT22

Cảm biến ánh sáng

Mình vẫn giữ kết nối như cũ, thêm vào cảm biến ánh sáng với kết nối như hình

Chương trình đọc đồng thời cảm biến ánh sáng và DHT22, ở đây do Arduino ADC có 10 bit nên độ phân giải chỉ là 1024(0-1023)

Chương trình DHT22 và CB ánh sáng

Cảm biến độ ẩm đất

Cảm biến độ ẩm này mình chọn hình minh họa hơi khác một chút về thứ tự so với bản thực, nhưng cách kết nối thì khá dễ, chân A0 của cảm biến nối với chân A1 của Arduino,2 chân còn lại ta cấp nguồn. Bạn có thể xem thêm trong code.

Lưu ý các kết nối chân ở trên vẫn giữ như cũ nhé.

Chương trình đọc DHT22, cảm biến ánh sáng, độ ẩm đất

Chương trình

LCD 16×2

Đây là điểm khác biệt so với phiên bản TIVA, mình thay LCD này vì có 2 lý do

  • Phổ biến: dễ mua và dễ tìm.
  • Thư viện LCD Gphone sau khi build đã ăn mất 50% RAM, thêm linh tinh các chương trình khác nữa thì hết sạch RAM và chương trình không chạy được.

Tuy nhiên dùng LCD16x2 có nhược điểm là chỉ có 2 dòng hiển thị, trong khi đó thông tin mình cần hiển thị cần ít nhất 6 dòng (nhiệt độ, độ ẩm, ánh sáng, trạng thái 2 bơm), không sao cả mình khắc phục bằng cách hiển thị 2 dòng nhiệt độ, độ ẩm trước, sau đó là ánh sáng và độ ẩm đất

Đầu tiên là kết nối

Mình thử nạp chương trình và in dòng chữ hocarm.org xuống LCD

Chương trình kiểm tra LCD

Lưu ý nhỏ là nếu LCD không hiển thị thì bạn xoay từ từ biến trở sẽ hiện màn hình

Chương trình hiển thị các thông tin của cảm biến lên LCD

Chương trình

Relay và nút nhấn

Do Arduino không có 2 nút nhấn có sẵn như TIVA nên mình phải thêm 2 nút nhấn gắn ngoài vào, thêm một lưu ý nữa là nếu relay dùng nguồn ngoài thì cần nối chung GND với Arduino, kết nối vẫn giữ nguyên kết nối bên trên và thêm vào relay và nút nhấn nhé.

Giờ thì thêm chương trình đọc nút nhấn và điều khiển relay cho chế độ thủ công

Chương trình

Chế độ tự động

Giờ thì coi như phần cứng và các kết nối đã tạm ổn, lập trình thêm một chút để có thể tự điều khiển bơm khi độ ẩm quá thấp

Chương trình

Gửi dữ liệu lên thingspeak

Để gửi dữ liệu lên thingspeak thì cần có kết nối wifi và có modul ESP8266, mình sẽ minh họa kết nối với ESP8266 v1

Lưu ý quan trọng:

Nguồn cho ESP8266 phải là 3.3V, và nên lấy từ nguồn ngoài, lấy nguồn 3v3 từ Arduino nhiều lúc sẽ không hoạt động được do thiếu dòng.

Nếu bạn có mua mới ESP8266 thì nên mua bản V7 hoặc V12 để có nhiều IO và làm được nhiều việc khác hơn. Như học ESP8266 không kết hợp với Uno hay TIVA gì cả

Do Arduino không có Serial1 nên mình phải sử dụng thư viện có sẵn để cấu hình chân giao tiếp với ESP8266 là SoftwareSerial.h trên 2 chân 10,11

SoftwareSerial Serial1(10, 11); // RX, TX

Chương trình tổng hợp các chức năng đọc dữ liệu, hiển thị LCD, điều khiển thủ công, tự động và gửi thông tin lên cloud

Code

Source code của 2 phiên bản bạn có thể tải tại đây

Tạm kết

Vậy là mình đã hướng dẫn từng bước để các bạn có thể kiểm tra từng cảm biến và kết hợp nó với nhau, tạo thành một hệ thống nông nghiệp đơn giản. Nhược điểm của Arduino Uno đã bộc lộ khi mình làm kết hợp nhiều thứ, thiếu RAM, có thể khắc phục bằng nhiều cách như tối ưu chương trình, nâng cấp lên bản Mega, hoặc dùng TIVA,… Nếu bạn cần tìm hiểu thêm kỹ hơn 1 chút có thể xem lại bài viết về nông nghiệp với TIVA mình có đề cập ở trên.

29
Leave a Reply

avatar
11 Comment threads
18 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
15 Comment authors
Lê ThắngschảiTongkhangteAnh Dũng Recent comment authors

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

  Subscribe  
newest oldest most voted
Notify of
tunv
Guest
tunv

Anh ơi em mắc và nạp code,điền vào các vị Trí như API, tên wifi và mật khẩu,nạp code xong em mở serial nó thông báo ESP8266 Connected
rồi xong không làm gì nữa,như vậy là lỗi sao anh,mong được anh giúp đỡ

Tu
Guest
Tu

Mình cũng cùng thắc mắc !

Tu
Guest
Tu

Mình cũng thắc mắc chỗ đó

hải
Guest
hải

cho mình hỏi API là gì vậy ạ..làm thế nào để biết API

hưng
Guest
hưng

cho mình hỏi với ạ . nếu làm như này thì khi mình k ở trong vùng wifi mà đăng ký ở code thì mình có thể đọc thông báo của nhiệt độ , độ ẩm k ạ

hưng
Guest
hưng

cho mình hỏi ạ . mình dùng arduino thì có thể điều khiển từ xa qua blynk được k ạ

Sang
Guest
Sang

có ai biết code điều khiển bằng aduino, esp và blynk không ạ.

Tân
Guest
Tân

ReadDHT22_Lumen_Soil_LCD_relay_bt_auto_thingspeak:36: error: conflicting declaration ‘SoftwareSerial Serial1’ SoftwareSerial Serial1(10, 11); // RX, TX ^ In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:232:0, from C:\Users\nguye\AppData\Local\Temp\arduino_build_293765\sketch\ReadDHT22_Lumen_Soil_LCD_relay_bt_auto_thingspeak.ino.cpp:1: C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h:147:25: note: previous declaration as ‘HardwareSerial Serial1’ extern HardwareSerial Serial1; ^ Lỗi này là lỗi gì vậy các anh

Vinh
Guest
Vinh

Hi ad!
Thay vì gửi lên blynk mình muốn gửi lên webserver của còn esp có thể tự cập nhật được thì phải làm như thế nào vậy ad?

Khang
Guest
Khang

Xin ad hướng dẫn mình code khi mình kết nối Arduino Mega giao tiếp với module ESP8266 sau đó gửi dữ liệu và điều khiển qua Blynk.
Cám ơn ad!!!

Lê Phương Nam
Guest
Lê Phương Nam

ad cho e hỏi cái nà ak!.E dùng esp8266mod ,khi kết nối cùng với con arduino uno r3 để gửi dữ liêu lên thingspeak thì kết nối vào các cổng của esp8266mod như nào ak.E thấy esp8266v1 khác với esp8266mod ak

Thắng
Guest
Thắng

Hi bạn! cho mình hỏi hệ thống này của bạn ko có hệ thống tưới ạ? Nếu có code điểu khiển máy bơm bạn cho mình để tham khảo với nha. Cảm ơn bạn.

Tongkhangte
Guest
Tongkhangte

cho mình hỏi là mình kết nối như sơ đồ LCD với arduino nhưng LCD chỉ sáng mà không hiện chữ (mình đã kiểm tra kĩ các kết nối, đã thay đổi giá trị của biến trở, đã lắp thêm biến trở vào chân 15 nhưng vẫn không được). Bạn có lời khuyên nào giúp mình không? Nếu được xin cảm ơn

trackback

[…] bản trước, mình đã giới thiệu với các bạn về hệ thống sử dụng TIVA / Arduino và ESP8266, tuy nhiên nó vẫn còn bộc lộ nhiều yếu […]