- Dapatkan link
- X
- Aplikasi Lainnya
POSTINGAN
Penulis
ijajkeyboard
pada tanggal
- Dapatkan link
- X
- Aplikasi Lainnya
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)
-
Pakai lever arm pendek pada servo (mis. 2–3 cm) yang mengurangi stroke tapi meningkatkan torsi di poros tutup jika dipasangkan dengan rasio tuas.
-
Tambah counterweight di sisi lain tutup sehingga servo hanya mengatasi sebagian beban (kurangi beban vertikal).
-
Gunakan engsel bearing yang halus (kurangi gesekan).
-
Jika servo kecil tetap tidak cukup: ganti ke MG996R (torque ~9 kg·cm) atau gunakan gearbox.
-
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
, danDIST_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
Posting Komentar