Skip to content
This repository has been archived by the owner on Oct 18, 2024. It is now read-only.

Latest commit

 

History

History
578 lines (377 loc) · 20 KB

File metadata and controls

578 lines (377 loc) · 20 KB

Open Source Love License: MIT GitHub last commit Project Type

Aquaponic-pH-Control-Monitoring-with-Type-2-Fuzzy-Method-Based-on-IoT-Bot

Dokumentasi Skripsi - Informatika UPN Veteran Jatim

Sistem akuaponik adalah sistem pertanian gabungan antara ikan dengan sayuran yang saling menguntungkan. Di sisi lain, gagal panen juga dapat menjadi kekhawatiran bagi para petani akuaponik karena hal ini dapat terjadi kapan saja. Kegagalan panen dapat dipengaruhi oleh banyak faktor, namun biasanya disebabkan oleh ketidakjelasan pH air yang tinggi di sekitar ruang lingkup budidaya. Para petani akuaponik khawatir jika gagal panen terus berlanjut akan membahayakan ketahanan pangan mereka. Proyek ini dibuat dengan harapan dapat mengatasi masalah pH tersebut. Proyek ini telah dilaksanakan dan memakan waktu kurang lebih 1 tahun. Sistem yang dibuat dapat mengontrol dan memonitoring perubahan pH air setiap saat. Sistem ini berbasis Internet of Things (IoT), dengan menggunakan MQTT sebagai protokol komunikasinya. Sistem ini juga dilengkapi dengan kecerdasan buatan, yang menggunakan IT2FL (Interval Type-2 Fuzzy Logic) sebagai pendukung keputusannya. Selain itu, antarmuka sistem menggunakan Telegram Bot, sehingga memudahkan pengguna untuk berinteraksi.



Kebutuhan Proyek

Bagian Deskripsi
Papan Pengembangan DOIT ESP32 DEVKIT V1
Papan Pendukung Arduino Uno R3
Editor Kode Arduino IDE
Dukungan Aplikasi • Bot Telegram
• Matlab R2020
Driver CP210X USB Driver
Platform IoT io-t.net
Protokol Komunikasi • Inter Integrated Circuit (I2C)
• Message Queuing Telemetry Transport (MQTT)
• MTProto
Arsitektur IoT 4 Lapisan
Matlab Fuzzy Interface System
Bahasa Pemrograman C/C++
Pustaka Arduino • WiFi (bawaan)
• Wire (bawaan)
• PubSubClient
• LiquidCrystal_I2C
• CTBot
• ArduinoJson
• RTClib
Aktuator • Submersible pump aquarium (x1)
• Pneumatic solenoid valve (x2)
• Piezoelectric (x1)
Sensor • pH Sensor (x1)
• RTC (x1)
Layar LCD I2C (x1)
Objek Percobaan • Benih sawi pakcoy
• Benih lele dumbo
Komponen Lainnya • Kabel USB Mikro - USB tipe A (x1)
• Kabel jumper (1 set)
• Switching power supply 12V 1A (x1)
• Electrical relay 2 channel (x1)
• Saklar bulat (x1)
• Papan ekspansi ESP32 (x1)
• PCB Dot Matrix (x1)
• Terminal PCB block screw (x10)
• Socket female jack DC (x1)
• Connector male jack DC (x3)
• Probe Elektroda pH (x1)
• Pipa (1 set)
• Netpot (1 set)
• Rockwool (1 set)
• Kain flanel (1 set)
• Saringan air (x1)
• Gelas dop (1 set)
• Botol (x2)
• Tatakan beroda akuarium (x1)
• Akuarium (x1)
• Kotak casing (x1)
• Skun (1 set)
• Plat galvanis (x1)
• Baut plus (1 set)
• Mur (1 set)



Unduh & Instal

  1. Arduino IDE

    https://www.arduino.cc/en/software
    

  2. CP210X USB Driver

    https://bit.ly/CP210X_USB_Driver
    

  3. Matlab R2020

    https://bit.ly/Matlab_R2020a_Installer
    



Rancangan Proyek

Diagram Ilustrasi Desain Prototipe Desain Wadah Utama
pictorial-diagram prototype-design mainBox-design
Sistem Antarmuka Fuzzy IT2FL Variabel Masukan IT2FL Variabel Keluaran IT2FL
fis-it2fl varin-it2fl varout-it2fl



Memindai Alamat I2C Yang Ada Pada LCD

#include <Wire.h>

void setup() {
  Wire.begin();
  Serial.begin(115200);
  while (!Serial); // Tunggu monitor serial
  Serial.println("\nI2C Scanner");
}

void loop() {
  int nDevices = 0;
  Serial.println("Scanning...");

  for (byte address = 1; address < 127; ++address) {
    // i2c_scanner menggunakan nilai balik dari Wire.endTransmission
    // Untuk melihat apakah sebuah perangkat memang mengakui alamat tersebut
    Wire.beginTransmission(address);
    byte error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.print(address, HEX);
      Serial.println("  !");

      ++nDevices;
    } else if (error == 4) {
      Serial.print("Unknown error at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0) {
    Serial.println("No I2C devices found\n");
  } else {
    Serial.println("done\n");
  }
  delay(5000); // Tunggu 5 detik untuk pemindaian berikutnya
}


Kalibrasi Sensor pH

Sensor pH dapat di kalibrasi dengan menggunakan hasil perhitungan regresi linear. Persamaan regresi linear dapat anda lihat sebagai berikut.

I

$\ Y = a+b.X $


Penjelasan dari simbol-simbol yang ada di persamaan I, dapat anda lihat selengkapnya pada tabel berikut.

Simbol Keterangan
𝑌 nilai buffer pH
𝑋 nilai tegangan yang diperoleh berdasarkan Y
𝑎 dan 𝑏 nilai ketetapan regresi linear

Nilai ketetapan regresi linear (a dan b) dapat diperoleh melalui persamaan II dan III.

II

$\ a = \frac{\sum Y.\sum X^{2}-\sum X.\sum XY}{n.\sum X^{2}-(\sum X)^{2}} $

III

$\ b = \frac{n.\sum XY-\sum X.\sum Y}{n.\sum X^{2}-(\sum X)^{2}} $


Contoh kalibrasi sensor pH: Klik Disini



Kalibrasi Sensor RTC

Sensor RTC ini dapat di kalibrasi dengan menggunakan kode program berikut :

#include <RTClib.h> // Memanggil pustaka RTC
RTC_DS3231 rtc; // Konstruktor

void setup(){
   RTCinit(); // Memanggil metode RTCinit
}

void loop(){}

void RTCinit(){
   // Memulai RTC
   rtc.begin();

   // Pengaturan Tanggal dan Waktu
   rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

   // Atur Waktu Sekarang
   // Jika sudah di kalibrasi, silakan tutup dengan komentar
   rtc.adjust(DateTime(YYYY,MM,DD,HH,MM,SS));
}


Pengaturan Arduino IDE

  1. Buka Arduino IDE terlebih dahulu, kemudian buka proyek dengan cara klik File -> Open :

    PH_IT2FL.ino


  2. Isi Url Pengelola Papan Tambahan di Arduino IDE

    Klik File -> Preferences -> masukkan Boards Manager Url dengan menyalin tautan berikut :

    https://dl.espressif.com/dl/package_esp32_index.json
    

  3. Pengaturan Board di Arduino IDE

    Cara mengatur board DOIT ESP32 DEVKIT V1

    • Klik Tools -> Board -> Boards Manager -> Instal esp32.

    • Kemudian klik Tools -> Board -> ESP32 Arduino -> DOIT ESP32 DEVKIT V1.

    • Board Arduino Uno yang ada di proyek ini hanya digunakan sebagai filter atau pembagi tegangan.

    • Anda tidak perlu melakukan konfigurasi pada board Arduino Uno, cukup hanya berfokus pada ESP32 saja.


  4. Ubah Kecepatan Papan di Arduino IDE

    Klik Tools -> Upload Speed -> 115200


  5. Instal Pustaka di Arduino IDE

    Unduh semua file zip pustaka. Kemudian tempelkan di: C:\Users\Computer_Username\Documents\Arduino\libraries


  6. Pengaturan Port di Arduino IDE

    Klik Port -> Pilih sesuai dengan port perangkat anda (anda dapat melihatnya di Device Manager)


  7. Ubah Nama WiFi, Kata Sandi WiFi, dan sebagainya sesuai dengan apa yang anda gunakan saat ini.

  8. Sebelum mengunggah program, silakan klik: Verify.

  9. Jika tidak ada kesalahan dalam kode program, silakan klik: Upload.

  10. Beberapa hal yang perlu anda lakukan saat menggunakan board ESP32 :

    • Informasi Arduino IDE: Uploading... -> segera tekan dan tahan tombol BOOT.

    • Informasi Arduino IDE: Writing at .... (%) -> lepaskan tombol BOOT.

    • Tunggu sampai muncul pesan: Done Uploading -> Program langsung dioperasikan.

    • Tekan tombol EN (RST) lalu Restart untuk menangani board ESP32 yang tidak bisa memproses SC.

    • Jangan tekan tombol BOOT dan EN secara bersamaan karena hal ini bisa beralih ke mode Unggah Firmware.


  11. Jika masih ada masalah saat unggah program, maka coba periksa pada bagian driver / port / yang lainnya.



Pengaturan io-t.net

  1. Memulai io-t.net :

    • Buka situs resminya di tautan berikut : io-t.net.

    • Jika anda belum memiliki akun, silakan Daftar terlebih dahulu -> aktivasi akun melalui email.

    • Jika anda sudah memiliki akun, silakan Masuk untuk dapat mengakses layanan io-t.net.


  2. Buat node :

    • Masuk ke menu Instance -> Atur Node.

    • Lalu berikan nama yang unik pada node yang anda gunakan.


  3. Buat device :

    • Masuk ke menu Devices.

    • Pilih Tambah Devices -> isi bagian Client ID, Access, Topic sesuai dengan kebutuhan. Contohnya :

    • Client ID -> Phiotnet_v1.

    • Access -> Publish & Subscribe.

    • Topic -> detect.



Pengaturan Bot Telegram

  1. Buka @BotFather.

  2. Ketik /newbot.

  3. Ketik nama bot yang diinginkan, contoh: phiotnet_bot.

  4. Ketik nama pengguna bot yang diinginkan, contoh: phiotnet_bot.

  5. Lakukan juga untuk pengaturan gambar bot, deskripsi bot, dan lain sebagainya menyesuaikan dengan kebutuhan anda.

  6. Salin API token bot telegram anda -> lalu tempelkan pada bagian #define BOTtoken "YOUR_API_BOT_TOKEN".

    Contohnya yaitu :

    #define BOTtoken "2006772150:AAE6Fdjk3KbiySkzV6CLbd6ClJDzgTfJ5y0"



Pengaturan Matlab

  1. Buka Matlab.

  2. Buka kotak dialog Set Path menggunakan perintah :

    pathtool
    

    set-path-matlab

  3. Pilih Add Folder... -> cari folder FIS-IT2FLS-Toolbox-MATLAB -> Select Folder.

  4. Klik Save dan kemudian klik Close.

  5. Buka IT2FL Toolbox menggunakan perintah :

    fuzzyt2
    

    it2fl-toolbox

  6. Selebihnya tinggal anda atur sesuai dengan kebutuhan anda.



Memulai

  1. Unduh dan ekstrak repositori ini.

  2. Pastikan anda memiliki komponen elektronik yang diperlukan.

  3. Pastikan komponen anda telah dirancang sesuai dengan diagram.

  4. Konfigurasikan perangkat anda menurut pengaturan di atas.

  5. Selamat menikmati [Selesai].



Demonstrasi Aplikasi

Via Telegram: @phiotnet_bot



Sorotan

Produk Sistem Pendukung Keputusan (SPK) IT2FL Bot Telegram
product it2fl-spk telegram-bot

Informasi lebih lanjut:

• Skripsi: Klik Disini

• Jurnal tipe SINTA: Klik Disini

• Jurnal tipe Non SINTA: Klik Disini



Kekurangan

  1. Hardware:

    • Arus bocor listrik disebabkan oleh penggunaan PSU yang tidak standar atau kurangnya isolator yang digunakan.

    • Kurangnya sirkulasi udara yang ada di main box dapat menyebabkan panas.

    • NO (Normally Open) yang diterapkan pada relay mengakibatkan solenoid valve menjadi panas.

    • Kurangnya arus listrik mengakibatkan LCD tidak kuat menyala.

    • Penggunaan Arduino Uno sebagai filter atau pembagi tegangan itu dinilai tidak efisien.

    • Probe sensor pH tidak memiliki proteksi.


  2. Firmware:

    • Waktu tunda yang ada di setiap method dinilai berlebihan, seharusnya menggunakan fungsi millis() agar tidak mengganggu method lainnya.

    • Penggunaan io-t.net dinilai kurang maksimal karena diketahui penggunaannya baru sebatas publish.

    • Fitur keamanan yang ada pada bot telegram dirasa belum baik.


  3. Lainnya:

    • Pengisian galon pH dan pemberian AB Mix itu masih dilakukan secara manual sehingga menyulitkan pengguna.

    • Pemberian pakan ikan masih dilakukan secara manual.

    • Sawi Pakcoy kurang mendapatkan asupan sinar matahari secara teratur, sehingga setelah pemindahan lahan, perkembangannya tidak secepat sebelumnya.

    • Pengurasan dan pengisian air akuarium ini masih menggunakan cara manual, sehingga sangat merepotkan bagi pengguna.



Kelebihan

• Antarmuka sistem melalui bot telegram, sehingga pemberian perintah sekaligus upaya pemantauan dapat dilakukan kapan saja dan dimana saja.

• Dengan IT2FL, akurasi sensor menjadi lebih akurat.

• Sistem ini secara otomatis dapat mengambil keputusannya sendiri dan juga dapat dikendalikan secara manual oleh pengguna.

• Sistem ini telah dilengkapi dengan fitur pewaktuan.



Di Masa Depan

• Perlunya peningkatan arus listrik. Anda dapat menggunakan PSU 3A.

• Perlunya mengubah NO (Normally Open) menjadi NC (Normally Close) pada relay agar perangkat yang dialiri listrik itu dapat terhindar dari kerusakan.

• Perlunya pembagian tegangan dan arus listrik. Anda dapat menggunakan step down.

• Perlunya peningkatan fitur keamanan pada bot telegram.

• Perlunya peningkatan keamanan pada sensor pH.

• Perlunya penambahan perangkat re-fill galon pH dan AB mix yang dibuat secara otomatis.

• Perlunya penambahan perangkat yang dapat melakukan pengukuran suhu air dan amonia.

• Perlunya penambahan perangkat dalam pemberian pakan ikan secara otomatis.

• Perlunya penambahan perangkat yang dapat memancarkan sinar hangat sebagai pengganti sinar matahari.

• Perlunya penambahan perangkat yang dapat melakukan pengurasan dan pengisian air akuarium.

• Perlunya penambahan perangkat yang dapat melakukan pendinginan secara optimal pada bagian main box.

• Lahan tanam hidroponik yang ada pada penelitian ini mungkin kedepannya perlu dikembangkan lagi. Selain itu, media tanam rockwool dapat diganti dengan media tanam lain yang lebih mencukupi kebutuhan tanaman, misalnya : arang sekam maupun cocopeat.



Apresiasi

Jika karya ini bermanfaat bagi anda, maka dukunglah karya ini sebagai bentuk apresiasi kepada penulis dengan mengklik tombol ⭐Bintang di bagian atas repositori.



Penafian

Aplikasi ini merupakan hasil karya saya sendiri dan bukan merupakan hasil plagiat dari penelitian atau karya orang lain, kecuali yang berkaitan dengan layanan pihak ketiga yang meliputi: pustaka, kerangka kerja, dan lain sebagainya.



LISENSI

LISENSI MIT - Hak Cipta © 2022 - Devan C. M. Wijaya, S.Kom

Dengan ini diberikan izin tanpa biaya kepada siapa pun yang mendapatkan salinan perangkat lunak ini dan file dokumentasi terkait perangkat lunak untuk menggunakannya tanpa batasan, termasuk namun tidak terbatas pada hak untuk menggunakan, menyalin, memodifikasi, menggabungkan, mempublikasikan, mendistribusikan, mensublisensikan, dan/atau menjual salinan Perangkat Lunak ini, dan mengizinkan orang yang menerima Perangkat Lunak ini untuk dilengkapi dengan persyaratan berikut:

Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus menyertai semua salinan atau bagian penting dari Perangkat Lunak.

DALAM HAL APAPUN, PENULIS ATAU PEMEGANG HAK CIPTA DI SINI TETAP MEMILIKI HAK KEPEMILIKAN PENUH. PERANGKAT LUNAK INI DISEDIAKAN SEBAGAIMANA ADANYA, TANPA JAMINAN APAPUN, BAIK TERSURAT MAUPUN TERSIRAT, OLEH KARENA ITU JIKA TERJADI KERUSAKAN, KEHILANGAN, ATAU LAINNYA YANG TIMBUL DARI PENGGUNAAN ATAU URUSAN LAIN DALAM PERANGKAT LUNAK INI, PENULIS ATAU PEMEGANG HAK CIPTA TIDAK BERTANGGUNG JAWAB, KARENA PENGGUNAAN PERANGKAT LUNAK INI TIDAK DIPAKSAKAN SAMA SEKALI, SEHINGGA RISIKO ADALAH MILIK ANDA SENDIRI.