Kabar Terkini

Sensor Kelembaban Tanah Soil Moisture Sensor dengan Arduino dan ESP8266

Model 1 - Soil Moisture Sensor


















 Model 2 - Soil Moisture Sensor









Cara mengakses Soil Moisture Sensor secara Online

Soil Moisture Sensor merupakan module untuk mendeteksi kelembaban tanah, yang dapat diakses menggunakan microcontroller seperti arduino, NodeMCU ESP8266.

Sensor kelembaban tanah ini dapat dimanfaatkan pada sistem pertanian, perkebunan, maupun sistem hidroponik mnggunakan hidroton.

Soil Moisture Sensor dapat digunakan untuk sistem penyiraman otomatis atau untuk memantau kelembaban tanah tanaman secara offline maupun online.

Sensor yang dijual pasaran mempunyai 2 module dalam paket penjualannya, yaitu sensor untuk deteksi kelembaban, dan module elektroniknya sebagai amplifier sinyal.

Soil Moisture sensor - paket penjualannya

 

Sensor ini mempunyai potensiometer yang digunakan untuk penyesuaian sensitivitas output digital (D0).

Selain itu terdapat output Analog atau tegangan analog jika ingin mengkonversi output tersebut menjadi data menggunakan ADC.

Bagian dari electronic module - Soil Moisture sensor

Bagaimana cara kerjanya?

Pada saat diberikan catudaya dan disensingkan pada tanah, maka nilai Output Analog akan berubah sesuai dengan kondisi kadar air dalam tanah.

Pada saat kondisi tanah :

  • Basah : tegangan output akan turun
  • Kering : tegangan output akan naik

Tegangan tersebut dapat dicek menggunakan voltmeter DC.

Dengan pembacaan pada pin ADC pada microcontroller dengan tingkat ketelitian 10 bit, maka akan terbaca nilai dari range 0 – 1023.

Sedangkan untuk Output Digital dapat diliat pada nyala led Digital output menyala atau tidak dengan mensetting nilai ambang pada potensiometer.

  • Kelembaban tanah melebihi dari nilai ambang maka led akan padam
  • Kelembaban tanah kurang dari nilai ambang maka led akan menyala

Contoh: Soil Moisture Sensor dengan Arduino dan i2c LCD

Dalam contoh ini, digunakan display i2c LCD yang akan menampilkan nilai output sensor analog dari pembacaan sensor kelembaban tanah ini.

Berikut rangkaian yang harus dirangkai :

Moisture Soil Sensor and Arduino + i2c LCD - nyebarilmu.com

Bahan –  bahan yang diperlukan :

  1. Arduino Uno
  2. Sensor kelembaban tanah Module
  3. I2C PCF8574
  4. LCD 16×2
  5. Kabel female to female secukupnya
  6. Kabel female to male secukupnya

Untuk wiring dapat diperhatikan rangkaian diatas.

Kode program

/* www.nyebarilmu.com */

#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>

LiquidCrystal_PCF8574 lcd(0x38); //dapat dicek menggunakan i2c finder

const int digital_input =  2;

void setup(){
  pinMode(digital_input,INPUT);
  Serial.begin(9600);
  
  lcd.begin(16,2);
  lcd.setBacklight(255);

  lcd.setCursor(00,00);
  lcd.print(" nyebarilmu.com ");
  lcd.setCursor(00,1);
  lcd.print(" -SoilMoisture- ");
  delay(2000);
  lcd.clear();
}

void loop(){
  int adc = analogRead(A0);
  float tegangan = adc * (5.0 / 1023.0);
  Serial.print("ADC:");
  Serial.print(adc);
  Serial.print(" | ");
  Serial.print("tegangan:");
  Serial.println(tegangan, 2);

  lcd.setCursor(00,00);
  lcd.print("ADC:");
  lcd.setCursor(4,00);
  lcd.print(adc);

  lcd.setCursor(9,00);
  lcd.print("V:");
  lcd.setCursor(11,00);
  lcd.print(tegangan,2);  

  int status_sensor = digitalRead(digital_input); 
  lcd.setCursor(00,1);
  lcd.print("Status:");
  Serial.print("status:");

  if (status_sensor == HIGH) {
  digitalWrite(13, HIGH);  //Led builtin Arduino
  lcd.setCursor(7,1);
  lcd.print("Kering");
  Serial.println("Kering");
  } 
  else {
  digitalWrite(13, LOW);
  lcd.setCursor(7,1);
  lcd.print("Basah ");  
  Serial.println("Basah");  
  }
  delay(2000);
   }

Digital output dapat diadjust dengan memutar potensiometer module elektroniknya sebagai nilai ambang pembacaan.

Hasil percobaan dari kode program diatas :

  1. Serial Monitor – Baut komunikasi

Serial monitor - trial sensor kelembaban tanah arduino

2. LCD 16×2

trial lcd display - ssensor kelembaban tanah arduino


Contoh 2: Soil Moisture Sensor dengan NodeMCU dan BLYNK

Untuk contoh kedua ini pembacaan sensor kelembaban tanah akan dibuat online melalui smartphone dengan aplikasi BLYNK.

Dimana aplikasi tersebut mudah digunakan dan gratis, serta stabil dalam pengiriman data dan pembacaan datanya.

Rangakaian Nodemcu dan soil moisture Sensor

Moisture Soil Sensor and Nodemcu

Bahan –  bahan yang diperlukan :

  1. NodeMCU ESP8266
  2. Sensor kelembaban tanah Module
  3. Smartphone android + install “BLYNK”
  4. Kabel female to female secukupnya

Kode program

/* www.nyebarilmu.com */

#include <ESP8266WiFi.h> //library esp8266
#include <BlynkSimpleEsp8266.h> //library BLYNK

#define BLYNK_PRINT Serial

BlynkTimer timer;

char auth[] = "d8ff16e65ff044d18f9b6c3ad1eaa87b"; //cek email masing2 setelah setting di aplikasi BLYNK

char ssid[] = "Blok21no12"; //nama wifi
char pass[] = "Komponen08"; //password wifi

void myTimerEvent()
{
int adc = analogRead(A0); //PIN ADC di NODEMCU
float tegangan = adc * (5.0 / 1023.0);
Blynk.virtualWrite(V0,  adc); //Virtual wire "0" untuk data pembacaan ADC
Blynk.virtualWrite(V1,  tegangan); //Virtual wire "1" untuk data pembacaan ADC
}

void setup()
{
  Serial.begin(115200); //baud serial monitor
  Blynk.begin(auth, ssid, pass);
  timer.setInterval(1000L, myTimerEvent); //1000L = 1 detik
}

void loop()
{
 Blynk.run();
 timer.run();
}

Hasil dari percobaan diatas

Trial BLYNK - Soil moisture Sensor

Terimakasih











Model 4 - Soil Moisture Sensor - Smart Garden








//
Relay + DHT 11 + Pompa + Moisture Sensor + HTML Remote
//


#include <ESP8266WiFi.h>
 #include "DHT.h"        // DHT11 temperature and humidity sensor Predefined library
 
#define DHTTYPE DHT11   // DHT 11
#define dht_dpin 0      //GPIO-0 D3 pin of nodemcu

int Raw       = A0;      //Analog channel A0 as used to measure temperature
int threshold = 16;      //Nodemcu digital pin water sensor read-GPIO16---D0 of NodeMCU
int Solenoid = D7;       // GPIO13---D7 of NodeMCU--Motor connection

const char* ssid = "irigasiBOt";
const char* password = "12345678";


DHT dht(dht_dpin, DHTTYPE); 
WiFiServer server(80);

void setup(void)
  dht.begin();
  Serial.begin(9600);
  delay(10);
  pinMode(threshold,INPUT_PULLUP); //Pin#13 as output-Activate pullup at pin 13
  pinMode(Solenoid, OUTPUT);       //D7 as output
  digitalWrite(Solenoid, LOW);     //Deactivate Solenoid
  // Connect to WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);     //Begin WiFi
  
 while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  // Start the server
  server.begin();
  Serial.println("Server started");
 
  // Print the IP address on serial monitor
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");    //URL IP to be typed in mobile/desktop browser
  Serial.print(WiFi.localIP());
  Serial.println("/");
}



void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
    
    
  if (!client) {
    return;
        
  } 
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();

 float h =0.0;  //Humidity level
 float t =0.0;  //Temperature in celcius 
 float f =0.0;  //Temperature in fahrenheit
 float percentage = 0.0; // Calculating percentage of moisture
 float reading    = 0.0; //Analog channel moisture read
 
  // Match the request
  int value = LOW;
    
    

    
  if (request.indexOf("/Up=ON") != -1)  {
     h = dht.readHumidity();    //Read humidity level
     t = dht.readTemperature(); //Read temperature in celcius
     f = (h * 1.8) + 32;        //Temperature converted to Fahrenheit
     reading = analogRead(Raw); //Analog pin reading output voltage by water moisture rain sensor
     percentage = (reading/1024) * 100;   //Converting the raw value in percentage

        
        // coding pompa otomatis
       
        
    if (reading<=110){  // If less mositure in soil start the motor otherwise stop
    digitalWrite(Solenoid, HIGH);
    value = HIGH;
    }
    else {
    digitalWrite(Solenoid, LOW);
    value = LOW;
    }
                
            
    
  }
    
 
    

  if (request.indexOf("/Solenoid=ON") != -1)  {   //Motor ON
    digitalWrite(Solenoid, HIGH);
    value = HIGH;
  }
  if (request.indexOf("/Solenoid=OFF") != -1)  {  //Motor OFF
    digitalWrite(Solenoid, LOW);
    value = LOW;
  }

  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<h1 align=center>Smart Garden - Weather Station</h1><br><br>");
  client.print("Temperature in Celsius =");
  client.println(t);
  client.println("<br>");
  client.print("Temperature in Fahrenheit =");
  client.println(f);
  client.println("<br>");
  client.print("Humidity =");
  client.println(h);
  client.print(" %");   
  client.println("<br>");  
  client.println();
  client.print("Moisture Level Percentage =");
  client.print(percentage);
  client.print("%");
 
  if(digitalRead(threshold)==HIGH){ // Read digital output of soil sensor
  client.println("Threshold Reached = Rain detected / Moisture exceeded / Water detected");
  }
  
  client.println("<br><br>");
  if(value == HIGH) 
    client.println("Motor/Pump Operational");
   else 
    client.print("Motor/Pump at Halt");
  
  client.println("<br><br>");
  client.println("<a href=\"/Up=ON\"\"><button>Update = Temperature  Humidity Moisture Values</button></a><br />"); 
  client.println("<a href=\"/Solenoid=ON\"\"><button>Motor Pump On </button></a>");
  client.println("<a href=\"/Solenoid=OFF\"\"><button>Motor Pump Off </button></a><br />"); 
  client.println("</html>");
  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");
}













No comments

Featured Post

INILAH 6 PROGRAM PRIORITAS Kemendikdasmen Versi Abdul Mu'ti, Usung Pendidikan Bermutu untuk Semua

INILAH 6 PROGRAM PRIORITAS Kemendikdasmen Versi Abdul Mu'ti, Usung Pendidikan Bermutu untuk Semua INILAH 6 PROGRAM PRIORITAS ...