Automatic Fish Feeder & Monitoring System

Wiring Diagram & Arsitektur Sistem Berbasis ESP32 & LoRa

Berikut adalah rancangan wiring diagram dan skema sistem untuk kontrol pemberian pakan ikan otomatis (fish feeder) yang dilengkapi dengan sensor deteksi sisa pakan di dalam kontainer, berbasis ESP32 dan komunikasi LoRa (modul SX1276 / SX1262) untuk pemantauan jarak jauh.

Karena sistem ini menggunakan LoRa, arsitektur dibagi menjadi dua bagian utama[cite: 5]:

  • Node Transmitter (Kandang/Kolam): ESP32, Sensor sisa pakan, Motor penggerak pakan (Servo / Stepper / DC Motor), dan Modul LoRa[cite: 5].
  • Node Receiver (Ruang Kontrol/Rumah): ESP32/ESP8266 penerima dan Modul LoRa untuk monitoring jarak jauh (bisa dihubungkan ke Blynk/MQTT jika ada internet, atau layar OLED lokal)[cite: 5].

1. Skema / Wiring Diagram Hardware (Node Utama / Kontainer Pakan)

Berikut adalah sambungan kabel antar komponen pada sisi Kandang/Kontainer Pakan[cite: 5]:

Komponen ESP32 Komponen Eksternal Pin ESP32 (Contoh) Keterangan / Fungsi
SPI (LoRa SX1276) Modul LoRa - NSS / CS GPIO 5[cite: 5] Chip Select LoRa[cite: 5]
Modul LoRa - RESET GPIO 14[cite: 5] Reset LoRa[cite: 5]
Modul LoRa - DIO0 / IRQ GPIO 2[cite: 5] Interrupt Request[cite: 5]
Modul LoRa - SCK GPIO 18[cite: 5] SPI Clock[cite: 5]
Modul LoRa - MISO GPIO 19[cite: 5] SPI Master In Slave Out[cite: 5]
Modul LoRa - MOSI GPIO 23[cite: 5] SPI Master Out Slave In[cite: 5]
Sensor Sisa Pakan Ultrasonic (HC-SR04) - Trigger GPIO 13[cite: 5] Mengukur ketinggian pakan di kontainer[cite: 5]
Ultrasonic (HC-SR04) - Echo GPIO 12[cite: 5] (Gunakan pembagi tegangan resistor 5V ke 3.3V)[cite: 5]
Aktuator Pakan Servo Motor (MG996R/SG90) - PWM GPIO 25[cite: 5] Mengatur buka-tutup katup / baling-baling pakan[cite: 5]
Power Supply Step Down Converter (LM2596) Vin / 5V[cite: 5] Sumber daya 5V untuk ESP32 & Servo (Jangan ambil 5V dari ESP32 jika pakai motor besar)[cite: 5]

2. Ilustrasi Skema Blok Wiring (Tekstual)

[ BATERAI / ADAPTOR 12V ]
          │
          ▼
  [ STEP DOWN (LM2596) ] ──( Turunkan ke 5V )──┐
          │                                    │
          ├──────────────────────┐             │
          │                      │             │
          ▼                      ▼             ▼
  [ ESP32 3V3 / GND ]    [ SERVO / MOTOR ]  [ SENSOR ULTRASONIC HC-SR04 ]
          │                      │             │
          ├─ SPI (GPIO 18,19,23) ┼─────────────┴─ [ MODUL LORA SX1276 ]
          ├─ NSS (GPIO 5)        │                (Untuk Kirim Data Jarak Jauh)
          └─ Trigger/Echo (13,12)┘

3. Penjelasan Komponen & Tips Perakitan

  • Sumber Daya (Power Supply): Gunakan catu daya eksternal yang memadai (misalnya adaptor 12V yang diturunkan ke 5V menggunakan Step Down LM2596)[cite: 5]. Jangan menyuplai motor servo atau aktuator langsung dari pin 5V ESP32 karena arus bisa tidak stabil dan membuat ESP32 restart (brownout)[cite: 5].
  • Sensor Sisa Pakan (Ultrasonic HC-SR04 / Infrared):
    • Jika menggunakan Ultrasonic, posisikan sensor di bagian atas tutup kontainer menghadap ke bawah ke arah permukaan pakan[cite: 5]. Semakin kecil jarak yang dibaca sensor, semakin penuh kontainer tersebut (sisa pakan banyak)[cite: 5]. Sebaliknya, jarak besar menandakan pakan hampir habis[cite: 5].
    • Catatan: Pin Echo Ultrasonic mengeluarkan logika 5V, sedangkan ESP32 bekerja di 3.3V[cite: 5]. Gunakan resistor pembagi tegangan (voltage divider: resistor 1k Ohm dan 2k Ohm) pada pin Echo sebelum masuk ke GPIO ESP32 agar tidak merusak pin[cite: 5].
  • Komunikasi LoRa: Modul LoRa berkomunikasi menggunakan protokol SPI[cite: 5]. Pastikan jalur MOSI, MISO, SCK, dan NSS terhubung dengan benar[cite: 5]. Gunakan antena eksternal (antena pigtail 433MHz / 915MHz sesuai frekuensi modul Anda) agar jangkauan jarak jauh optimal[cite: 5].

4. Contoh Kerangka Kode Program (ESP32 Sender)

Cuplikan kode dasar menggunakan library SPI, LoRa, dan ESP32Servo untuk mengirimkan data sisa pakan[cite: 5]:

#include <SPI.h>
#include <LoRa.h>
#include <ESP32Servo.h>

// Definisi Pin LoRa (SPI)
const int ss = 5;
const int rst = 14;
const int dio0 = 2;

// Definisi Pin Sensor Ultrasonic (Sisa Pakan)
const int trigPin = 13;
const int echoPin = 12;

Servo pakanServo;

void setup() {
  Serial.begin(115200);
  while (!Serial);

  // Inisialisasi Servo
  pakanServo.attach(25);
  pakanServo.write(0); // Posisi tertutup

  // Inisialisasi Sensor Ultrasonic
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

  // Inisialisasi LoRa
  LoRa.setPins(ss, rst, dio0);
  if (!LoRa.begin(433E6)) { // Sesuaikan frekuensi (433E6 / 915E6)
    Serial.println("Gagal menginisialisasi LoRa!");
    while (1);
  }
  Serial.println("LoRa Berhasil Dimulai!");
}

void loop() {
  // 1. Baca Sensor Sisa Pakan (Ultrasonic)
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duration = pulseIn(echoPin, HIGH);
  int jarakPakan = duration * 0.034 / 2; // dalam cm

  Serial.print("Jarak Sisa Pakan: ");
  Serial.print(jarakPakan);
  Serial.println(" cm");

  // 2. Kirim Data via LoRa ke Penerima Jarak Jauh
  LoRa.beginPacket();
  LoRa.print("JarakPakan:");
  LoRa.print(jarakPakan);
  LoRa.endPacket();

  // 3. Logika Kontrol Pakan (Opsional)
  // pakanServo.write(90); // Buka pakan
  // delay(1000);
  // pakanServo.write(0);  // Tutup pakan

  delay(10000); // Kirim data setiap 10 detik
}
BLDC Motor
DIRECT TECHNICAL INQUIRY CHANNELS
Email Tech. Support