Test Data Sensor Kelembaban Tanah Arduino

Oke, ceritanya saya penasaran dengan pola dari sensor kelembaban tanah yang biasa digunakan di microcontroller Arduino. Jadi saya melakukan pengujian ke alat tersebut, untuk alat sendiri saya menggunakan Arduino mega 2560. dan Sensor yang digunakan sensor kelembaban tanah biasa yang ada pada gambar di bawah. Saya menguji berdasarkan 3 sensor yang sama, untuk sensor sendiri bisa dilihat seperti pada gamabar di bawah.
Sensor Kelembaban Tanah Source: Bukalapak

Skema  dan Source Code Arduino

Dengan skema di bawah, tiap sensor mengambil data kelembaban dari tiap tanah tersebut.

Variabel yang diukur adalah nilai yang dihasilkan dari sensor tanah tersebut. Variabel yang menjadi pengaruh adalah air dengan cara ditambahkan 5 ml per jam. Sehingga dengan code Arduino berikut :
/*Sufyan Saori
xsufyan@gmail.com
Log Data Moisture Sensor V.0.001*/
#include <TimeLib.h>
#define PIN1 A0
#define PIN2 A1
#define PIN3 A2
#define PIN4 A3
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(PIN1, INPUT);
pinMode(PIN2, INPUT);
pinMode(PIN3, INPUT);
pinMode(PIN4, INPUT);
}
int waktu = 0;
void loop() {
// put your main code here, to run repeatedly:
int nilai1 = analogRead(PIN1);
int nilai2 = analogRead(PIN2);
int nilai3 = analogRead(PIN3);
int nilai4 = analogRead(PIN4);
setTime(waktu);
cetakWaktu(nilai1, nilai2, nilai3, nilai4);
delay(1000);
waktu += 1;
}
void cetakWaktu(int nilai1, int nilai2, int nilai3, int nilai4) {
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.print(" ");
Serial.print(nilai1);
Serial.print(" ");
Serial.print(nilai2);
Serial.print(" ");
Serial.print(nilai3);
Serial.print(" ");
Serial.print(nilai4);
Serial.println();
}
void printDigits(int digits) {
Serial.print(":");
if (digits < 10) {
Serial.print('0');
}
Serial.print(digits);
}

Data Hasil dari Arduino

Didapatkan data yang bisa dilihat seperti berikut :
Struktur data tersebut sebagai berikut: jam:menit:detik; nilaiSensor1; nilaiSensor2; nilaiSensor3; Suhu; KelembabanUdara; RandomNumber.Untuk data lebih lengkap ada di : https://pastebin.com/Y7ePCNkZ

Kelola Data Menggunakan Python

setelah data didapat kemudian dengan menggunakan bahasa pemrograman python 3.6, data dikelola sehingga lebih mudah dilihat dan disimpulkan, Terlebih dahulu kita simpan data  dengan nama "hasil1.1.txt". Kemudian data yang disimpan tadi kita kelola dengan source code berikut:
'''
Source Code For Make Graph from data sensor
xsufyan@gmail.com / github.com/lol97
'''
import matplotlib.pyplot as plt
import numpy as np
time,s1,s2,s3,t,ku,ic = np.loadtxt('hasil1.1.txt',dtype='str',delimiter=';',unpack=True)
s1 = s1.astype(np.int)
s2 = s2.astype(np.int)
s3 = s3.astype(np.int)
timeList = []
s11=[]
s21=[]
s31=[]
rata1 =[]
rata2 =[]
rata3 =[]
for x in time :
timeList.append(int(x[0]))
x = 0
while (timeList[x]==0):
s11.append(s1[x])
s21.append(s2[x])
s31.append(s3[x])
x+=1
rata1.append(int(sum(s11)/len(s11)))
rata2.append(int(sum(s21)/len(s21)))
rata3.append(int(sum(s31)/len(s31)))
s12=[]
s22=[]
s32=[]
y = x+0
while (timeList[y]==1):
s12.append(s1[y])
s22.append(s2[y])
s32.append(s3[y])
y+=1
rata1.append(int(sum(s12)/len(s12)))
rata2.append(int(sum(s22)/len(s22)))
rata3.append(int(sum(s32)/len(s32)))
s13=[]
s23=[]
s33=[]
z = y+0
while (timeList[z]==2):
s13.append(s1[z])
s23.append(s2[z])
s33.append(s3[z])
z+=1
rata1.append(int(sum(s13)/len(s13)))
rata2.append(int(sum(s23)/len(s23)))
rata3.append(int(sum(s33)/len(s33)))
s14=[]
s24=[]
s34=[]
x = z+0
while (timeList[x]==3):
s14.append(s1[x])
s24.append(s2[x])
s34.append(s3[x])
x+=1
rata1.append(int(sum(s14)/len(s14)))
rata2.append(int(sum(s24)/len(s24)))
rata3.append(int(sum(s34)/len(s34)))
s15=[]
s25=[]
s35=[]
y = x+0
while (timeList[y]==4):
s15.append(s1[y])
s25.append(s2[y])
s35.append(s3[y])
y+=1
rata1.append(int(sum(s15)/len(s15)))
rata2.append(int(sum(s25)/len(s25)))
rata3.append(int(sum(s35)/len(s35)))
plt.subplot(3,1,1)
plt.plot([0,5,10,15,20],rata1)
plt.title("Data Sensor Kelembaban Tanah 1,2,3")
plt.ylabel("Value Sensor 1")
plt.xlabel("tambahan air ml")
plt.subplot(3,1,2)
plt.plot([0,5,10,15,20],rata2)
#plt.title("Data Sensor 2")
plt.ylabel("Value Sensor 2")
plt.xlabel("tambahan air ml")
plt.subplot(3,1,3)
plt.plot([0,5,10,15,20],rata3)
#plt.title("Data Sensor 3")
plt.ylabel("Value Sensor 3")
plt.xlabel("tambahan air ml")
plt.show()
print(rata3)
Sehingga dihasil grafiknya sebagai berikut:

Kesimpulan

Dengan menlihat data tersebut nilai sensor tinggi untuk kadar air yang rendah dan nilai sensor rendah untuk kadar air tinggi.

credit: Sufyan Saori (xsufyan@gmail.com)

Komentar

Posting Komentar