POSTINGAN

Laporan Riset Mengenai Peluang Pembuatan Mesin Waktu

tempat sampah buka-tutup otomatis (ukuran agak besar)

 



1 — Komponen (what to buy / use)

Komponen yang sudah kamu punya

  • Arduino Uno (sudah)

  • Sensor ultrasonik HC-SR04 (sudah)

  • Servo (sudah) — catatan: tipe servo kecil (SG90) mungkin tidak kuat untuk tutup besar. Baca bagian mekanik & upgrade.

Komponen yang disarankan (wajib/kuatkan proyek)

  • Servo torsi tinggi (rekomendasi: MG996R, MG995, atau metal-gear high-torque) — jika tutup besar pakai ini.

  • Power supply portable: 1 × baterai lithium 18650 (3400 mAh) + modul proteksi / holder, atau power bank kecil.

  • Modul pengisian LiPo via panel surya: Adafruit Solar LiPo Charger (atau modul solar charger berbasis CN3065 / MT3608+TP4056 + regulator stabil) — jangan sambungkan panel langsung ke TP4056 tanpa regulator solar charger.

  • Step-up booster 5V (mis. MT3608 atau modul boost) jika baterai 3.7V dibutuhkan menjadi 5V untuk Arduino + servo.

  • Diode blokade (mis. Schottky) dan fuse (opsional) untuk keamanan.

  • Kabel power terpisah (servo harus punya sumber 5V terpisah atau sangat stabil).

  • Struktur bin: papan kayu/ acrylic / kotak plastik ukuran yang kamu mau; engsel kuat; poros/lever; baut; karet peredam.

  • Baut/rod/lever untuk menghubungkan servo ke tutup; atau link arm 3D printed.

Saran alternatif mekanik

  • Untuk tutup lebih besar: gunakan servo torsi tinggi atau motor DC dengan gearbox + limit switches dan H-bridge. Tapi tetap pakai servo jika lid ringan atau dengan counterweight.


2 — Desain mekanik singkat (cara supaya tutup bin agak besar masih bisa dibuka oleh servo kecil)

  1. Pakai lever arm pendek pada servo (mis. 2–3 cm) yang mengurangi stroke tapi meningkatkan torsi di poros tutup jika dipasangkan dengan rasio tuas.

  2. Tambah counterweight di sisi lain tutup sehingga servo hanya mengatasi sebagian beban (kurangi beban vertikal).

  3. Gunakan engsel bearing yang halus (kurangi gesekan).

  4. Jika servo kecil tetap tidak cukup: ganti ke MG996R (torque ~9 kg·cm) atau gunakan gearbox.

  5. Pastikan pemasangan servo ke kotak kokoh (plat aluminium atau printed mount). Pakai penguat di titik sambungan.


3 — Skematik wiring sederhana

Asumsi: Arduino Uno, HC-SR04, 1 servo, baterai 3.7V + boost ke 5V.

[BATTERY 3.7V] --> [Solar Charger Module] --> [Battery pack]
Battery pack --> [Boost converter 5V] --> +5V rail
+5V rail --> VIN (atau 5V pin on Arduino)  (lebih aman: ke 5V pin jika regulator sudah dipakai)
GND (common) --> Arduino GND

HC-SR04:
VCC --> +5V
GND --> GND
Trig --> Arduino digital pin 9
Echo --> Arduino digital pin 8

Servo:
VCC (red) --> +5V rail (jangan sambungkan servo langsung ke 5V dari Arduino USB)
GND (brown) --> GND
Signal (orange) --> Arduino digital pin 10

(Opsional) Push-button for manual open close --> Arduino digital pin 7 (pull-down or use INPUT_PULLUP)

Catatan penting listrik

  • Pastikan GND semua modul di-common-kan (battery, boost, Arduino, servo).

  • Servo dapat menyebabkan spike — gunakan capacitor (1000 µF) di +5V dekat servo untuk menstabilkan tegangan.

  • Jika servo menarik arus besar, pertimbangkan supply terpisah untuk servo (tetap common GND).


4 — Kode Arduino (siap upload)

Kode ini menggunakan HC-SR04 untuk mendeteksi objek/hand, membuka tutup dengan servo, dan menutup kembali setelah delay. Juga menggunakan attach/detach servo supaya mengurangi konsumsi sedikit.

#include <Servo.h>

#define TRIG_PIN 9
#define ECHO_PIN 8
#define SERVO_PIN 10
#define MANUAL_BTN 7  // optional

Servo lidServo;

// tunable parameters
const int OPEN_ANGLE = 85;      // sudut buka (ubah sesuai rig)
const int CLOSED_ANGLE = 10;    // sudut tutup
const unsigned long KEEP_OPEN_MS = 3000; // berapa lama terbuka setelah mendeteksi (ms)
const long DIST_THRESHOLD_CM = 20; // jarak trigger (cm)

unsigned long lastOpenTime = 0;
bool isOpen = false;

void setup() {
  Serial.begin(9600);
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  pinMode(MANUAL_BTN, INPUT_PULLUP); // optional: tombol ground saat ditekan

  lidServo.attach(SERVO_PIN);
  lidServo.write(CLOSED_ANGLE);
  delay(500);
  lidServo.detach(); // detach to reduce current draw when idle
}

long readDistanceCM() {
  // send pulse
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  long duration = pulseIn(ECHO_PIN, HIGH, 30000); // timeout 30ms
  if (duration == 0) return 9999; // no echo

  long distanceCm = duration / 58; // speed of sound conversion
  return distanceCm;
}

void openLid() {
  lidServo.attach(SERVO_PIN);
  for (int a = CLOSED_ANGLE; a <= OPEN_ANGLE; a += 3) {
    lidServo.write(a);
    delay(20);
  }
  lastOpenTime = millis();
  isOpen = true;
  lidServo.detach();
}

void closeLid() {
  lidServo.attach(SERVO_PIN);
  for (int a = OPEN_ANGLE; a >= CLOSED_ANGLE; a -= 3) {
    lidServo.write(a);
    delay(20);
  }
  isOpen = false;
  lidServo.detach();
}

void loop() {
  // manual override button (active LOW)
  if (digitalRead(MANUAL_BTN) == LOW) {
    openLid();
    delay(200);
  }

  long dist = readDistanceCM();
  // Serial.println(dist);

  if (!isOpen && dist <= DIST_THRESHOLD_CM) {
    openLid();
  }

  if (isOpen && (millis() - lastOpenTime > KEEP_OPEN_MS)) {
    closeLid();
  }

  delay(150); // main loop delay
}

Catatan kode

  • Ubah OPEN_ANGLE, CLOSED_ANGLE, dan DIST_THRESHOLD_CM sesuai jarak/rig kamu.

  • Servo attach/detach mengurangi konsumsi saat idle.

  • Jika kamu tambahkan LED indikator atau buzzer, beri pin dan logika tambahan.


5 — Perhitungan baterai & panel surya (langkah demi langkah)

Aku jelaskan asumsi & perhitungan digit-per-digit supaya jelas.

Asumsi konsumsi:

  • Arduino Uno: 50 mA @ 5 V.
    Power = V × I = 5 × 0.05 = 0.25 W.
    Energi per hari = 0.25 W × 24 h = 6 Wh.

  • HC-SR04: 15 mA @5 V.
    Power = 5 × 0.015 = 0.075 W.
    Energi per hari = 0.075 W × 24 h = 1.8 Wh.

  • Servo (rata-rata, puncak saat bergerak): 500 mA @5 V saat bergerak.
    Power = 5 × 0.5 = 2.5 W.
    Waktu bergerak per cycle kira-kira 4 detik (buka + tutup).
    Waktu per cycle dalam jam = 4 s / 3600 = 0.001111... h.
    Energi per cycle = 2.5 W × 0.001111... h = 0.002777... Wh.
    Jika 50 cycle/hari → energi servo = 0.002777... × 50 = 0.138888... Wh ≈ 0.14 Wh.

Total energi sehari (belum efisiensi):

  • Arduino 6 Wh

  • HC-SR04 1.8 Wh

  • Servo 0.14 Wh
    Total = 6 + 1.8 + 0.14 = 7.94 Wh ≈ 8 Wh per hari

Tambahkan margin & kerugian (konverter, charger inefficiency)
Ambil faktor keamanan/kerugian 40%:
Energi yang perlu disediakan = 8 Wh × 1.4 = 11.2 Wh → bulatkan ke 12 Wh per hari.

Konversi kapasitas baterai (mAh)
Jika pakai baterai 3.7 V (typical Li-ion 18650):
mAh = (Wh / V) × 1000
= (12 Wh / 3.7 V) × 1000
= 3.243243... × 1000 mAh ≈ 3243 mAh

→ Jadi 1 × 18650 3400 mAh (nilai komersial ~3300–3500 mAh) cukup untuk beban ini sehari (dengan asumsi manajemen charging yang baik). Untuk cadangan cuaca buruk, pakai 2 × 18650 di parallel.

Panel surya sizing
Asumsi Peak Sun Hours ≈ 4 jam/hari (Indonesia bagus, pakai 3–5; aku pakai 4).
Asumsi sistem efisiensi = 70% (kerugian charger, kabel, dll).
Panel watt yang diperlukan = Energi harian / (sun hours × efisiensi)
= 12 Wh / (4 h × 0.7)
= 12 / 2.8
= 4.2857 W

→ Pilih panel komersial sedikit lebih besar: 6 W – 10 W panel (misal panel 6W atau 10W 6V) + solar charger yang sesuai.

Ringkasan rekomendasi listrik

  • Battery: minimum 1 × 18650 ~3400 mAh (lebih baik 2 in parallel untuk redundancy).

  • Solar panel: pilih 6W atau 10W untuk charge handal.

  • Solar charge controller: gunakan modul charger khusus LiPo/solar (contoh: Adafruit Solar LiPo Charger) + step-up 5V untuk Arduino.


6 — Tips untuk kestabilan & keamanan

  • Jangan tarik power servo dari Arduino 5V regulator (Uno onboard) — gunakan supply 5V terpisah/boost.

  • Tambah capacitor elektrolitik 1000 µF di dekat servo power untuk meredam drop tegangan.

  • Gunakan fuse 1A pada jalur +5V sebagai proteksi.

  • Gunakan modul charger yang dirancang untuk panel surya (mengatasi variasi tegangan panel).

  • Pertimbangkan sensor tambahan (limit switch) untuk mengetahui posisi tutup jika memakai motor DC.


7 — Struktur file README / isi ZIP (copy-paste-ready)

# Tempat Sampah Otomatis (Arduino + Solar)
Proyek: Tempat sampah buka-tutup otomatis menggunakan Arduino Uno, HC-SR04, servo, dan tenaga surya (panel + baterai).

## Fitur
- Otomatis membuka tutup saat ada objek/hand pada jarak tertentu.
- Menutup otomatis setelah delay.
- Ditenagai oleh baterai Li-ion yang di-charge oleh panel surya.
- Mekanik diperkuat untuk ukuran bin yang agak besar (gunakan servo torsi tinggi dan counterweight).

## Komponen
- Arduino Uno
- HC-SR04 ultrasonic
- Servo torsi tinggi (rekom: MG996R)
- 18650 Li-ion 3400 mAh + holder + protection
- Solar panel 6W - 10W
- Solar LiPo charger (Adafruit Solar Charger atau setara)
- Boost converter 5V
- Kapasitor 1000µF, diode, fuse
- Kabel, baut, engsel, plat mounting

## Wiring
(Lihat file wiring.txt atau diagram pada folder)

## Code
File: `trash_bin.ino` (kode utama Arduino)

## Mekanik
Panduan mounting, lever arm, dan counterweight. (Lihat folder mechanical/)

## Perhitungan daya
Asumsi & perhitungan dimasukkan di docs/power_calc.txt

## Cara Pakai
1. Pasang sensor di bibir tutup, pastikan sudut tidak memantul ke lantai.
2. Hubungkan power sesuai wiring.
3. Upload `trash_bin.ino` ke Arduino.
4. Letakkan panel di lokasi terkena sinar matahari.

## Catatan keamanan
- Jangan sambungkan panel langsung ke TP4056 tanpa solar charger.
- Pastikan semua koneksi rapi dan ada fuse.

## Lisensi
MIT

8 — Opsional: upgrade & fitur tambahan (ide)

  • Mode hemat daya: gunakan Arduino Pro Mini 3.3V (lebih rendah draw) dan deep sleep — untuk mengurangi ukuran battery.

  • Tambah LED indikator baterai dan pengukur voltase (voltage divider + ADC).

  • Tambah sensor cahaya LDR untuk hanya aktif di siang/malam tertentu.

  • Tambah Wi-Fi (ESP32) untuk monitoring status baterai & log buka/tutup.



Komentar