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]:
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] |
[ 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)┘
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
}