Điện tử

Hệ thống nông nghiệp thông minh Esp8266

Trong dự án này, chúng tôi sẽ xây dựng Hệ thống nông nghiệp thông minh Esp8266 . Mục tiêu của dự án này là hỗ trợ nông dân lấy Dữ liệu Trực tiếp (Nhiệt độ, Độ ẩm, Độ ẩm của Đất, Nhiệt độ Đất) để giám sát môi trường hiệu quả nhằm giúp họ tăng năng suất và chất lượng tổng thể của sản phẩm. Nông nghiệp thông minh sử dụng hệ thống IoT được cung cấp bởi NodeMCU này bao gồm cảm biến DHT11, Cảm biến độ ẩm, Đầu dò cảm biến DS18B20, LDR, Máy bơm nước và dải đèn LED 12V. Khi hệ thống giám sát nông nghiệp dựa trên IoT khởi động, nó sẽ kiểm tra độ ẩm của đất, nhiệt độ, độ ẩm và nhiệt độ đất. Sau đó, nó sẽ gửi dữ liệu này đến đám mây IoT để giám sát trực tiếp. Nếu độ ẩm của đất xuống dưới một mức nhất định, nó sẽ tự động khởi động máy bơm nước. Hãy tham khảo với CDK nhé !

Hệ thống nông nghiệp thông minh Esp8266
Hệ thống nông nghiệp thông minh Esp8266

Sơ đồ mạch Hệ thống nông nghiệp thông minh Esp8266

Mạch này không khó lắm. Ở đây chúng tôi đã sử dụng 4 cảm biến tức là DHT11, đầu dò cảm biến DS18B20, LDR và ​​Cảm biến độ ẩm đất, một dải LED 12V, máy bơm nước 12V, bộ điều chỉnh điện áp 7805 và hai bóng bán dẫn TP122 để điều khiển dải Led và máy bơm nước. 7805 được sử dụng để lấy 5V được điều chỉnh từ bộ chuyển đổi 12V, cảm biến DHT11 được sử dụng để lấy các chỉ số nhiệt độ và độ ẩm. Đầu dò cảm biến DS18B20 được sử dụng để lấy nhiệt độ của đất và cảm biến độ ẩm của đất được sử dụng để đọc độ ẩm của đất để có thể tự động bật / tắt máy bơm nước.

Sơ đồ mạch Hệ thống nông nghiệp thông minh Esp8266
Sơ đồ mạch Hệ thống nông nghiệp thông minh Esp8266

Linh kiện cần có trong Hệ thống nông nghiệp thông minh Esp8266

  • NodeMCU ESP8266
  • Cảm biến độ ẩm của đất
  • Cảm biến DHT11
  • Đầu dò cảm biến nhiệt độ không thấm nước DS18B20
  • LDR
  • Máy bơm nước mini chìm
  • Dải đèn LED 12V
  • Bộ điều chỉnh điện áp 7805
  • Bóng bán dẫn 2 × TIP122
  • Điện trở (4,7K, 10K)
  • Tụ điện (0,1µF, 10 µF)

Thiết lập IO Adafruit Hệ thống nông nghiệp thông minh

Adafruit IO là một nền tảng dữ liệu mở cho phép bạn tổng hợp, trực quan hóa và phân tích dữ liệu trực tiếp trên đám mây. Sử dụng Adafruit IO, bạn có thể tải lên, hiển thị và giám sát dữ liệu của mình qua internet và làm cho dự án của bạn được kích hoạt IoT. Bạn có thể điều khiển động cơ, đọc dữ liệu cảm biến và tạo các ứng dụng IoT thú vị qua internet bằng Adafruit IO.

Để sử dụng Adafruit IO, trước tiên, bạn phải tạo một tài khoản trên Adafruit IO. Để thực hiện việc này, hãy truy cập trang web Adafruit IO và nhấp vào ‘Bắt ​​đầu miễn phí’ ở trên cùng bên phải của màn hình.

Thiết lập IO Adafruit Hệ thống nông nghiệp thông minh
Thiết lập IO Adafruit Hệ thống nông nghiệp thông minh

Sau khi kết thúc quá trình tạo tài khoản, hãy đăng nhập vào tài khoản của bạn và nhấp vào ‘View AIO Key’ ở góc trên cùng bên phải để lấy tên người dùng tài khoản và khóa AIO.

Khi bạn nhấp vào ‘AIO Key’, một cửa sổ sẽ xuất hiện với tên người dùng và tên người dùng Adafruit IO AIO Key. Sao chép khóa và tên người dùng này. Bạn sẽ cần nó sau này trong mã của mình.

Bây giờ, sau đó, bạn cần tạo một nguồn cấp dữ liệu. Để tạo nguồn cấp dữ liệu, hãy nhấp vào ‘Nguồn cấp dữ liệu.’ Sau đó nhấp vào ‘Tác vụ‘, bạn sẽ thấy một số tùy chọn, từ chúng, hãy nhấp vào ‘Tạo nguồn cấp dữ liệu mới.’

Sau đó, một cửa sổ mới sẽ mở ra, nơi bạn cần nhập Tên và Mô tả cho nguồn cấp dữ liệu của mình. Viết mô tả là tùy chọn.

Nhấp vào ‘Tạo,’; sau đó, bạn sẽ được chuyển hướng đến nguồn cấp dữ liệu mới được tạo của bạn.

Đối với dự án này, chúng tôi đã tạo tổng cộng tám nguồn cấp dữ liệu cho Máy bơm nước, Dải đèn LED, dữ liệu độ ẩm, Nhiệt độ, Độ ẩm, Dữ liệu thời tiết và Nhiệt độ đất. Làm theo quy trình tương tự như trên để tạo phần còn lại của nguồn cấp dữ liệu.

Sau khi tạo nguồn cấp dữ liệu, bây giờ chúng ta sẽ tạo một bảng điều khiển IO Adafruit để hiển thị tất cả các nguồn cấp dữ liệu này trên một trang duy nhất. Đối với điều đó, trước tiên hãy tạo một trang tổng quan và sau đó thêm tất cả các nguồn cấp dữ liệu này vào trang tổng quan đó.

Để tạo trang tổng quan, hãy nhấp vào tùy chọn Trang tổng quan và sau đó nhấp vào ‘Hành động’, sau đó nhấp vào ‘Tạo Trang tổng quan mới.’

Trong cửa sổ tiếp theo, nhập tên cho trang tổng quan của bạn và nhấp vào ‘Tạo’.

Khi trang tổng quan của chúng tôi được tạo, bây giờ chúng tôi sẽ thêm các Block vào trang tổng quan. Để thêm Block, hãy nhấp vào ‘Bánh răng’ ở góc trên cùng bên phải và sau đó nhấp vào ‘Tạo Block mới’.

Đầu tiên, chúng tôi sẽ thêm hai Block nút bật tắt để BẬT / TẮT Dải đèn LED và Máy bơm nước theo cách thủ công, sau đó bốn thanh trượt để hiển thị Nhiệt độ, Độ ẩm, Nhiệt độ đất và Giá trị độ ẩm và cuối cùng, hai Block Biểu đồ để hiển thị Độ ẩm 30 ngày qua và Dữ liệu nhiệt độ đất. Để thêm một nút trên trang tổng quan, hãy nhấp vào Block Chuyển đổi.

Trong cửa sổ tiếp theo, nó sẽ yêu cầu bạn chọn nguồn cấp dữ liệu, vì vậy hãy nhấp vào nguồn cấp dữ liệu LED.

Sau đó, hãy làm theo quy trình tương tự để thêm phần còn lại của các Block. Sau khi thêm tất cả các Block, trang tổng quan của tôi trông như thế này:

Khởi tạo API OpenWeatherMap

Như đã đề cập trước đó, chúng ta cũng sẽ hiển thị dự báo thời tiết trên bảng điều khiển Adafruit IO và để làm điều đó, chúng tôi sẽ sử dụng API OpenWeatherMap để yêu cầu dự báo thời tiết trong ngày cho vị trí đã chọn. OpenWeatherMap cung cấp các sản phẩm thời tiết rất dễ nhận biết giúp làm việc với dữ liệu thời tiết dễ dàng hơn. Dữ liệu này có thể được truy cập thông qua các API , tuân theo các tiêu chuẩn của ngành và tương thích với các loại hệ thống doanh nghiệp khác nhau. OpenWeatherMap cung cấp cả gói trả phí và miễn phí và ở đây trong dự án này, chúng tôi sẽ sử dụng gói miễn phí của nó để lấy dữ liệu dự báo thời tiết.

Bây giờ để có được khóa API, bạn cần phải đăng ký trên nền tảng của họ, vì vậy trước tiên hãy tạo một tài khoản và sau khi tài khoản của bạn được tạo, bạn sẽ được chuyển hướng đến trang tổng quan như được hiển thị bên dưới. Từ đó nhấp vào Tên của bạn và sau đó nhấp vào ‘Khóa API của tôi’ và bạn sẽ được cung cấp một khóa API duy nhất để lấy thông tin từ trang web.

Khởi tạo API OpenWeatherMap
Khởi tạo API OpenWeatherMap

Bây giờ chúng tôi sẽ sử dụng API dữ liệu dự báo 5 ngày / 3 giờ. API này bao gồm dữ liệu dự báo thời tiết với khoảng cách 3 giờ và dữ liệu dự báo có sẵn ở định dạng JSON hoặc XML. Để nhận dữ liệu thời tiết cho vị trí bạn đã chọn, hãy nhập URL bên dưới với các phần trong dấu ngoặc nhọn được thay thế bằng thành phố và khóa API duy nhất của bạn:

api.openweathermap.org/data/2.5/forecast?q={city name} & appid = {API key}

Ví dụ: URL API của chúng tôi sẽ là:

api.openweathermap.org/data/2.5/forecast?q=Jaipur&appid=e8b22b36da932dce8f31ec9be9cb68a3

Dán URL này vào thanh tìm kiếm của trình duyệt và nó sẽ cung cấp cho bạn một loạt thông tin tương ứng với thông tin dự báo thời tiết địa phương của bạn.

Bây giờ chúng ta đã có dữ liệu JSON, bước tiếp theo sẽ là tạo mã mà qua đó chúng ta có thể đọc dữ liệu JSON và diễn đạt nó theo nhu cầu của chúng ta. Đối với điều đó, hãy chuyển đến Trợ lý ArduinoJson và trong bước đầu tiên chọn loại bộ xử lý, Chế độ và Loại đầu vào.

Sau đó, trong phần tiếp theo, hãy dán dữ liệu JSON.

Sau đó, ở bước cuối cùng, bạn sẽ nhận được mã để đọc dữ liệu dự báo thời tiết. Chúng tôi sẽ không sử dụng mã hoàn chỉnh do Trợ lý tạo.

Lập trình Hệ thống Nông nghiệp Thông minh

Mã hoàn chỉnh cho Hệ thống giám sát nông nghiệp dựa trên IoT được đưa ra ở cuối tài liệu. Ở đây chúng tôi đang giải thích một số phần quan trọng của mã. Mã sử ​​dụng các thư viện DallasTempether , OneWire, Adafruit_MQTT, ArduinoJson và DHT.h. Adafruit_MQTT.h và DHT11.h có thể được tải xuống từ các liên kết nhất định, phần còn lại của thư viện có thể được tải xuống trực tiếp từ trình quản lý thư viện Arduino IDE.

Sau khi cài đặt các thư viện vào Arduino IDE, hãy bắt đầu mã bằng cách bao gồm các tệp thư viện được yêu cầu.

#include <ESP8266WiFi.h>
#include <DallasTempeosystem.h>
#include <OneWire.h>
#include "DHT.h"
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include <ArduinoJson.h>

Sau đó, nhập thông tin xác thực IO Wi-Fi và Adafruit mà bạn đã sao chép từ máy chủ IO Adafruit. Chúng sẽ bao gồm máy chủ MQTT, Số cổng, Tên người dùng và Khóa AIO.

const char *ssid =  "Wi-Fi Name";    
const char *pass =  "Wi-Fi password";
#define MQTT_SERV "io.adafruit.com"
#define MQTT_PORT 1883
#define MQTT_NAME "Adafruit IO Username"
#define MQTT_PASS "AIO Key"

Sau đó, thiết lập các nguồn cấp IO của Adafruit để lưu trữ dữ liệu cảm biến và điều khiển đèn LED và máy bơm nước. Trong trường hợp của tôi, tôi đã xác định bốn nguồn cấp dữ liệu để lưu trữ các dữ liệu cảm biến khác nhau, đó là: Nhiệt độ đất, Nhiệt độ, Độ ẩm và Độ ẩm, một nguồn cấp dữ liệu để hiển thị dữ liệu Thời tiết và hai nguồn cấp dữ liệu để điều khiển Dải đèn LED & Máy bơm nước.

Adafruit_MQTT_Client mqtt(&client, MQTT_SERV, MQTT_PORT, MQTT_NAME, MQTT_PASS);
Adafruit_MQTT_Publish Moisture = Adafruit_MQTT_Publish(&mqtt,MQTT_NAME "/f/Moisture"); 
Adafruit_MQTT_Publish Temperature = Adafruit_MQTT_Publish(&mqtt,MQTT_NAME "/f/Temperature");
Adafruit_MQTT_Publish Humidity = Adafruit_MQTT_Publish(&mqtt,MQTT_NAME "/f/Humidity");
Adafruit_MQTT_Publish SoilTemp = Adafruit_MQTT_Publish(&mqtt,MQTT_NAME "/f/SoilTemp");
Adafruit_MQTT_Subscribe LED = Adafruit_MQTT_Subscribe(&mqtt, MQTT_NAME "/f/LED");
 Adafruit_MQTT_Subscribe Pump = Adafruit_MQTT_Subscribe(&mqtt, MQTT_NAME "/f/Pump");

Bây giờ bên trong hàm setup () , khởi chạy Serial Monitor với tốc độ truyền là 9600 cho mục đích gỡ lỗi. Đồng thời Khởi tạo cảm biến DHT và cảm biến DS18B20 bằng chức năng begin () .

void setup()
{
  Serial.begin(9600);
  delay(10);
  dht.begin();
  sensors.begin();
………………..
}

Bây giờ đến vòng lặp void () . Đây là nơi tất cả các tác vụ được thực hiện. Vì vậy, trong vòng lặp này, đầu tiên chúng ta sẽ lấy dữ liệu dự báo thời tiết từ API OpenWeatherMap, sau đó chúng ta sẽ đọc dữ liệu cảm biến và ở bước cuối cùng, chúng ta sẽ xuất bản tất cả dữ liệu này trên bảng điều khiển Adafruit IO.

Đọc Dự báo Thời tiết:

Để đọc dữ liệu dự báo thời tiết từ API OpenWeatherMap, chúng tôi sẽ sử dụng các đoạn mã mà chúng tôi đã tạo bằng Trợ lý ArduinoJson. Ở đây trong vòng lặp void, chúng tôi sẽ chỉ gọi API sau một khoảng thời gian cụ thể để chúng tôi không vượt quá giới hạn hàng ngày của mình.

if (millis() - lastConnectionTime > postInterval) {
    // note the time that the connection was made:
    lastConnectionTime = millis();
    makehttpRequest();
  }

Đọc dữ liệu cảm biến: 

Bây giờ sau khi nhận được dữ liệu thời tiết, tiếp theo chúng ta sẽ đọc tất cả dữ liệu cảm biến. Ở đây chúng tôi đang sử dụng DHT11, DS18B20, LDR và ​​Cảm biến độ ẩm đất. Dữ liệu cảm biến độ ẩm đất và LDR sẽ được sử dụng để tự động hóa dải đèn LED và máy bơm nước. Vì vậy, đầu tiên chúng ta sẽ đọc trạng thái LDR và ​​nếu số đọc LDR nhỏ hơn 200, thì đèn LED sẽ tự động được bật. Tương tự, nếu độ ẩm của đất nhỏ hơn 35, thì máy bơm nước sẽ được bật.

int ldrStatus = analogRead(ldrPin);
    if (ldrStatus <= 200) {
       digitalWrite(ledPin, HIGH);
    }
    else {   
      digitalWrite(ledPin, LOW);     }   
  moisturePercentage = ( 100.00 - ( (analogRead(moisturePin) / 1023.00) * 100.00 ) );  
if (moisturePercentage < 35) {
  digitalWrite(motorPin, HIGH);        
}
temperature = dht.readTemperature(); 
 humidity = dht.readHumidity();
sensors.requestTemperatures();
soiltemp = sensors.getTempCByIndex(0);

Xuất bản Dữ liệu trên IO Adafruit: 

Bây giờ khi chúng tôi đã thu thập tất cả dữ liệu, đã đến lúc xuất bản dữ liệu này trên trang tổng quan IO của Adafruit, để chúng tôi có thể theo dõi nó từ bất cứ đâu. Tại đây, chúng tôi sẽ xuất bản các dữ liệu cảm biến khác nhau lên các nguồn cấp dữ liệu tương ứng của chúng.

if (currentTime - previousTime >= Interval) {
    if (! Moisture.publish(moisturePercentage))
    if (! Temperature.publish(temperature))
    if (! Humidity.publish(humidity))
    if (! SoilTemp.publish(soiltemp))
    if (! WeatherData.publish(icon))
}

Video Hệ thống nông nghiệp thông minh Esp8266

CDK - CĐ Văn Hóa Nghệ Thuật Và Du Lịch Nha Trang

Trường Cao đẳng Văn hóa Nghệ thuật & Du lịch Nha Trang CDK chính thức được thành lập. Năm 2005, nhà trường được vinh dự đón nhận phần thưởng cao quý của Nhà nước : Huân chương Lao động Hạng Ba.

Related Articles

Trả lời

Email của bạn sẽ không được hiển thị công khai.

Back to top button