Panduan · 19 mnt baca

Cara Memberi Daya ke Arduino dengan Baterai: 9V, AA, 18650, dan Pin Vin

Cara memberi daya ke Arduino dengan baterai: USB vs DC jack (7–12 V), pin Vin dan 5V, pilihan 9V, AA, dan 18650, catu terpisah untuk servo, serta hitungan umur baterai.

Memberi daya ke Arduino dengan baterai adalah langkah pertama untuk membebaskan proyekmu dari kabel USB komputer dan mengubahnya menjadi mobil robot, sensor kebun, atau perangkat yang bisa dibawa di saku. Jawaban singkatnya: cara paling aman menjalankan Arduino Uno dengan baterai adalah menghubungkan paket 7–12 V (6×AA atau dua sel 18650 seri) ke DC barrel jack atau pin Vin, atau mencolokkan power bank ke port USB. Pin 5V hanya boleh dipakai dengan sumber 5 V bersih yang sudah kamu ukur dan atur, karena pin ini sepenuhnya melewati regulator dan proteksi board.

Daya yang buruk ada di balik banyak masalah misterius yang dialami pemula: board yang reset setiap kali servo bergerak, baterai 9V yang habis dalam beberapa jam, power bank yang mati setelah beberapa detik, atau regulator yang terlalu panas untuk disentuh. Di panduan ini kamu akan mempelajari semua input yang bisa dipakai untuk memberi daya ke Arduino, baterai mana yang masuk ke mana, kenapa motor butuh catu dayanya sendiri, dan cara menghitung konsumsi arus serta lama pemakaian. Di akhir, kita juga akan melihat apa bedanya memberi daya baterai ke ESP32 dan Raspberry Pi Pico.

Input daya Arduino Uno R3: USB, DC jack, dan pin daya
Arduino Uno R3: port USB-B dan DC jack hitam di kiri, serta header POWER dengan pin IOREF, RESET, 3.3V, 5V, GND, GND, dan Vin di sepanjang tepi bawah.

5 cara memberi daya ke Arduino

Di dalam Arduino Uno ada dua jalur daya yang terpisah. Tegangan 5 V dari USB melewati sekring 500 mA yang bisa pulih sendiri (polyfuse) dan sebuah saklar MOSFET kecil, lalu langsung masuk ke jalur 5 V board. Tegangan dari DC jack lebih dulu melewati dioda proteksi polaritas terbalik, muncul di pin Vin pada titik itu, lalu diturunkan ke 5 V oleh regulator LDO dari keluarga 1117. Tegangan 3,3 V dihasilkan dari jalur 5 V itu oleh regulator kedua yang lebih kecil. Sebuah komparator di board mengawasi Vin: begitu Vin naik di atas sekitar 6,6 V, komparator otomatis memutus suplai USB, jadi kedua sumber tidak saling bertabrakan walaupun adaptor dan USB tercolok bersamaan.

InputTeganganProteksiKapan dipakai
USB (tipe B)5 VPolyfuse 500 mAPengembangan di meja kerja, charger ponsel, power bank
DC jack (5,5×2,1 mm, tengah positif)Disarankan 7–12 V (batas 6–20 V)Dioda polaritas terbalik + regulator 5 VAdaptor dinding, 6×AA, paket Li-ion 2S
Pin Vin7–12 VAda regulator, tanpa proteksi polaritas terbalikKabel tempat baterai, shield
Pin 5VTerukur 4,8–5,2 VTanpa proteksi sama sekaliOutput buck/boost yang sudah diatur, sumber 5 V teregulasi
Pin 3.3VHanya outputTidak adaSensor 3,3 V sampai 50 mA
Kalau ragu, ikuti aturan ini: USB di meja kerja, paket baterai 7–12 V di DC jack di lapangan. Pin 5V hanya untuk sumber 5 V teregulasi yang sudah kamu cek dengan multimeter. Untuk letak pin di board, lihat pinout Arduino Uno.

Daya USB: batas 500 mA

USB adalah cara paling mudah dan paling terlindungi untuk memberi daya ke Arduino. Port USB 2.0 komputer memberi paling banyak 500 mA; polyfuse Uno memanas dan memutus rangkaian ketika total arus melebihi angka itu, lalu tersambung lagi dengan sendirinya setelah dingin. Board-nya sendiri memakai sekitar 45–50 mA, sehingga tersisa kira-kira 400 mA untuk dibagi sensor, LED, dan modulmu. Charger ponsel atau power bank bisa memakai port USB yang sama; bedanya hanya tegangan bisa turun ke 4,6 V pada kabel yang tipis dan panjang. Selama board berjalan dari USB, setiap miliampere yang kamu tarik dari pin 5V diambil dari jatah 500 mA itu. Karena itulah menggantungkan servo atau LED strip ke daya USB membuat sekringnya putus, dan port komputer juga bisa memutus koneksi untuk melindungi dirinya.

DC jack dan pin Vin: kenapa 7–12 V?

Regulator 5 V di board adalah LDO linear, dan agar bekerja dengan benar ia butuh tegangan input sekitar 1–1,2 V lebih tinggi daripada output-nya. Tambahkan jatuh tegangan 0,7–1 V dari dioda proteksi di jack, dan kamu butuh minimal 7 V di jack untuk 5 V yang stabil. Dengan sumber 6 V, jalur 5 V turun ke 4,2–4,5 V; board mungkin terlihat bekerja, tetapi pembacaan analog bergeser dan modul berperilaku aneh. Di batas atas, masalahnya panas: regulator linear mengubah kelebihan tegangan menjadi panas. Daya yang dibuangnya adalah P = (Vin − 5 V) × I. Sebagai patokan, jangan biarkan regulator membuang lebih dari 1 W; pada titik itu kemasan SOT-223 yang kecil jadi terlalu panas untuk disentuh dan akhirnya mematikan dirinya sendiri.

Tegangan VinPanas pada 100 mAPanas pada 300 mAPenilaian
7 V0,2 W0,6 WRentang paling efisien
9 V0,4 W1,2 WMepet di 300 mA
12 V0,7 W2,1 WHanya untuk beban ringan
20 V1,5 W4,5 WTidak disarankan, regulator kepanasan

Pin Vin adalah input sekaligus output. Ketika board diberi daya lewat jack, Vin membawa tegangan jack dikurangi sekitar 0,7–1 V, jadi kamu bisa memberi daya ke beban kecil 9–12 V dari situ. Tetapi karena ada dioda proteksi 1 A di jalur arusnya, beban besar seperti motor sebaiknya diberi daya langsung dari sumber, bukan dari Vin. Ketika kamu menghubungkan tempat baterai ke pin Vin, dioda proteksi itu terlewati: regulatornya masih bekerja, tetapi kalau plus dan minus tertukar, tidak ada yang melindungi board. Pada Uno R4 Minima dan R4 WiFi yang lebih baru, jack dan Vin menerima 6–24 V dan memakai konverter switching (buck), bukan regulator linear, sehingga tidak kepanasan walaupun di 12 V. Untuk detailnya, lihat Arduino Uno R4.

Polaritas terbalik adalah cara tercepat merusak Arduino. Colokan DC jack harus tengah positif (+); beberapa adaptor lama justru sebaliknya. Sebelum menghubungkan tempat baterai ke pin Vin dan GND, jangan percaya warna kabelnya: cek polaritasnya dengan multimeter. Kalau kamu curiga board-nya rusak, jalankan pengecekan di Apakah Arduino-ku rusak?.

Pin 5V: kapan aman melewati regulator?

Pin 5V terhubung langsung ke jalur suplai ATmega328P dan chip lain di board. Memberi daya lewat pin ini melewati regulator, dioda polaritas terbalik, dan sekring USB. Karena itulah dokumentasi resmi Arduino tidak menyarankan memberi daya lewat pin 5V dan 3.3V. Namun, kalau dilakukan dengan benar, cara ini punya kelebihan: tidak ada jatuh tegangan regulator maupun panas yang terbuang, jadi baterai lebih awet dan modulmu bisa mendapat arus lebih besar. Syaratnya cuma satu: sumbernya harus teregulasi dan sudah diukur. ATmega328P dirancang untuk bekerja sampai 5,5 V, dan 6 V adalah batas maksimum absolutnya; melewatinya walau sekejap saja bisa merusak chip secara permanen.

  • Ukur dulu: cek output sumber dengan multimeter sebelum menghubungkannya ke Arduino; nilainya harus antara 4,8 dan 5,2 V.
  • Jangan baterai mentah: 4×AA alkaline yang masih baru mencapai 6,4 V dan melewati batas. Hubungkan ke pin 5V hanya output dari regulator, modul buck, atau modul boost.
  • Hati-hati dengan USB yang tercolok bersamaan: kalau kamu mencolokkan USB selagi memberi daya lewat pin 5V, dua sumber 5 V tersambung satu sama lain lewat board; mencabut catu eksternal selama upload adalah pilihan paling aman.
  • Tambahkan kapasitor: memasang kapasitor elektrolit 100–470 µF di jalur 5 V eksternal dekat board meredam penurunan tegangan ketika ada tarikan arus mendadak (apa itu kapasitor?).
  • Pilihan siap pakai: modul regulator berbasis 7805 (regulator tegangan 7805), LM2596 yang diatur ke 5,0 V, atau modul daya MB102 untuk breadboard, semuanya memberi 5 V yang bersih.
Modul buck dan boost yang bisa diatur sering dikirim bukan dalam kondisi 5 V, melainkan dengan tegangan acak (kadang di atas 12 V). Hubungkan baterai ke input modul lebih dulu, putar trimmer birunya sampai multimeter membaca 5,0 V di output, baru setelah itu hubungkan ke pin 5V Arduino.

Pin 3.3V: berapa arus yang bisa ditarik?

Pin 3.3V di Uno bukan input daya; pin ini adalah output dari regulator kecil, dan batas resminya 50 mA. Itu cukup untuk modul yang hanya memakai beberapa puluh miliampere, seperti BME280, MPU6050, atau pembaca RFID RC522. Namun, modul dengan arus puncak tinggi membebaninya terlalu berat: nRF24L01+PA+LNA dengan antena melewati 100 mA ketika memancar, modul Wi-Fi ESP-01 menarik arus puncak beberapa ratus miliampere, dan SIM800L butuh lonjakan sampai 2 A. Untuk nRF24L01+PA+LNA dan ESP-01, pakai modul regulator AMS1117 3,3 V terpisah yang disuplai dari jalur 5 V. Sementara itu, SIM800L bekerja di 3,4–4,4 V, bukan 3,3 V, dan melewati batas 1 A AMS1117; beri daya dari satu sel Li-ion atau dari modul buck yang diatur ke 4,0 V dan sanggup memberi minimal 2 A. Di Arduino Nano dan klonnya, pin 3.3V sering disuplai dari dalam chip USB-serial dan bahkan lebih lemah daripada di Uno, jadi di sana pun regulator terpisah adalah pilihan yang lebih aman. Penjelasan lebih lanjut tentang memberi daya ke modul nirkabel ada di panduan nRF24L01.

Modul regulator tegangan AMS1117 3,3 V
Modul regulator AMS1117 3,3 V: masukkan 5 V ke VIN dan ambil 3,3 V dari VOUT; modul ini memberi daya ke modul yang rakus arus seperti ESP-01 dan nRF24L01 tanpa membebani pin 3.3V Arduino.

Pilihan baterai: 9V, AA, 18650, dan power bank

BateraiTeganganKapasitasHubungkan keLama pakai dengan Uno (~50 mA)
9V alkaline9 V (cepat turun ke 7 V ketika dibebani)400–600 mAhDC jack / Vin6–8 jam
6×AA alkaline9 V2000–2500 mAhDC jack / Vin~30 jam
4×AA alkaline6 V (6,4 V ketika baru)2000–2500 mAhTidak disarankanTerlalu rendah untuk jack, terlalu tinggi untuk pin 5V
3×AA alkaline4,5 V2000–2500 mAhPin 5V~1 hari (tidak stabil menjelang habis)
1×18650 + boost 5 V3,0–4,2 V → 5 V2000–3500 mAhUSB atau pin 5V~30 jam (3000 mAh)
2×18650 seri (2S)7,4 V (6,0–8,4 V)2000–3500 mAhDC jack / Vin~2 hari (3000 mAh)
Power bank 10000 mAh5 V (USB)~6000 mAh (pada 5 V)USB~5 hari (kalau tetap menyala)

Baterai 9V klasik adalah pilihan yang paling sering disarankan berkat kabel jepit dengan colokan barrel-nya, tetapi juga yang paling tidak efisien. Di dalamnya ada enam sel kecil, jadi kapasitasnya hanya sekitar 400–600 mAh dan hambatan dalamnya tinggi; tambahkan servo atau beberapa LED ke 50 mA milik Uno dan tegangannya segera jatuh di bawah 7 V, lalu board mulai reset. Pada board dengan regulator linear, rating mAh baterai langsung menentukan lama pemakaian, dan kelebihan voltnya hanya berubah menjadi panas. Itulah sebabnya tempat baterai 6×AA, yang memberi 9 V yang sama, bertahan sekitar empat kali lebih lama daripada baterai 9V. Satuan kapasitas kami jelaskan secara rinci di Apa Arti mAh?.

Baterai AA murah dan mudah ditemukan di mana saja, tetapi jumlah selnya harus dipilih dengan benar. Kesalahan yang paling umum adalah memakai 4×AA: 6 V tidak cukup untuk jack, karena setelah jatuh tegangan dioda dan regulator hanya sekitar 4,2 V yang sampai ke jalur 5 V, sementara menghubungkan paket yang sama ke pin 5V berarti 6,4 V dengan sel baru, yang melewati batas. Kombinasi yang benar adalah paket 6×AA (9 V) ke DC jack, dan paket 3×AA (4,5 V) langsung ke pin 5V. Uno yang berjalan di 16 MHz dengan 3×AA mulai tidak stabil begitu tiap sel turun di bawah 1,25 V, jadi kapasitas penuhnya tidak bisa dimanfaatkan. Sel NiMH isi ulang memberi 1,2 V per sel, jadi 4×NiMH (4,8 V) juga pilihan populer untuk pin 5V, tetapi sel yang baru diisi bisa melewati 5,5 V selama beberapa menit pertama.

Tempat baterai AA dengan kabel
Tempat baterai AA tersedia dalam versi 1, 2, 3, 4, dan 6 sel; tempat 6 sel adalah pilihan yang tepat untuk DC jack Arduino Uno, dan tempat 3 sel untuk pin 5V. Kabel merah positif, kabel hitam negatif.

Sel Li-ion 18650 dan konverter boost

18650 adalah sel lithium-ion isi ulang berdiameter 18 mm dan panjang 65 mm yang dipakai di baterai laptop dan power bank. Tegangan nominalnya 3,7 V; terukur 4,2 V ketika penuh dan sekitar 3,0 V ketika kosong. Kapasitas sebenarnya antara 2000 dan 3500 mAh; sel berlabel 6800 atau 9900 mAh hampir selalu palsu. Satu sel 18650 bisa dipakai dengan Arduino dengan dua cara: menaikkan 3,7 V menjadi 5 V dengan konverter boost (misalnya modul MT3608 atau board power bank 18650 siap pakai) lalu menyuplai USB atau pin 5V, atau menghubungkan dua sel secara seri dan mencolokkan paket 2S (7,4 V) ke DC jack. Cara kedua adalah pilihan paling seimbang untuk Uno: mulai dari 8,4 V, tegangannya tetap di rentang nyaman regulator sampai turun ke 3,5 V per sel (total 7 V). Ketika memakai konverter boost, ingat bahwa arus yang ditarik dari baterai lebih tinggi daripada di output: rangkaian yang butuh 200 mA pada 5 V menarik sekitar 307 mA dari sel 3,7 V dengan efisiensi 88%.

Baterai Li-ion isi ulang 18650
Sel Li-ion 18650: nominal 3,7 V, 4,2 V ketika penuh. Di proyek Arduino, satu sel dipakai dengan konverter boost, atau dua sel seri (2S, 7,4 V) lewat DC jack.
  • Proteksi wajib: mengosongkan sel Li-ion di bawah 3,0 V memperpendek umurnya dan bisa berbahaya. Pakai sel yang sudah terproteksi atau board proteksi (BMS).
  • TP4056 untuk satu sel: modul TP4056 hanya mengisi satu sel (1S) sampai 4,2 V. Jangan pernah mengisi paket seri 2S dengan TP4056; pakai rangkaian pengisian BMS 2S atau balance charger. Detail pengkabelannya ada di modul charger TP4056.
  • Waspadai korsleting: 18650 bisa mengalirkan puluhan ampere ke korsleting; jangan biarkan ada kabel telanjang, dan tambahkan sekring serta saklar di jalur baterai.
  • Pengaturan boost: jangan hubungkan modul yang bisa diatur seperti MT3608 ke Arduino sebelum output-nya diatur ke 5,0 V.
  • Jangan campur sel: di paket seri, pakai sel dengan merek, kapasitas, dan tingkat pengisian yang sama.
Modul charger Li-ion TP4056 dengan proteksi (USB-C)
Modul TP4056 dengan proteksi: sel 18650 dipasang di B+ dan B−, konverter boost atau beban di OUT+ dan OUT−. Modul ini mengisi sel sampai 4,2 V dari input USB-C.

Kenapa power bank-ku mati sendiri?

Power bank adalah paket siap pakai yang berisi sel lithium, charger, proteksi, dan boost 5 V, jadi inilah cara paling praktis menjalankan Arduino dengan baterai: cukup colokkan kabel USB. Namun, kebanyakan power bank memantau arus output supaya bisa mati sendiri ketika ponselmu sudah penuh, dan memutus output dalam 10–60 detik begitu arusnya turun di bawah 50–100 mA. Nano yang menarik 20 mA atau Uno yang menarik 50 mA berada di bawah ambang itu, jadi board berjalan sebentar lalu diam-diam mati. Ada dua cara mengatasinya: pilih power bank yang punya mode arus rendah (di beberapa model, mode ini diaktifkan dengan menekan tombolnya dua kali), atau buat Arduino menarik beban singkat secara berkala. Untuk cara kedua, hubungkan resistor 47 Ω, 1 W dari jalur 5V ke kolektor transistor NPN (BC337 atau 2N2222), emitor ke GND, dan basis ke pin D7 lewat resistor 1 kΩ. Ketika transistor menyala, resistor menarik sekitar 5 V / 47 Ω ≈ 106 mA dan power bank melihat ada beban. Nilainya bisa kamu cek sendiri dengan kalkulator hukum Ohm.

C++ (Arduino IDE)
1// Powerbank uyanık tutma / powerbank keep-alive
2// D7 -> 1 kΩ -> NPN beyzi, kolektör -> 47 Ω -> 5V / D7 -> 1 kΩ -> NPN base, collector -> 47 Ω -> 5V
3const int LOAD_PIN = 7;
4const unsigned long PERIOD_MS = 8000;  // her 8 saniyede bir / every 8 seconds
5const unsigned long PULSE_MS = 300;    // 300 ms yük / 300 ms of load
6
7unsigned long pulseStart = 0;
8bool loadOn = false;
9
10void setup() {
11  pinMode(LOAD_PIN, OUTPUT);
12  digitalWrite(LOAD_PIN, LOW);
13}
14
15void loop() {
16  unsigned long now = millis();
17  if (!loadOn && now - pulseStart >= PERIOD_MS) {
18    digitalWrite(LOAD_PIN, HIGH);   // ~106 mA çek / draw ~106 mA
19    loadOn = true;
20    pulseStart = now;
21  }
22  if (loadOn && now - pulseStart >= PULSE_MS) {
23    digitalWrite(LOAD_PIN, LOW);    // yükü kapat / switch the load off
24    loadOn = false;
25  }
26  // projenin kodu burada, delay() kullanmadan / your project code here, without delay()
27}

Karena kodenya memakai millis(), bukan delay(), bagian lain proyekmu tidak terblokir; pendekatan ini kami jelaskan secara rinci di millis() vs delay(). Menarik 106 mA selama 300 ms setiap 8 detik hanya menambah rata-rata sekitar 4 mA. Kalau power bank-mu masih mati juga, perpendek periodenya menjadi 5 detik atau perpanjang pulsanya menjadi 500 ms; setiap model memakai ambang dan batas waktu yang berbeda.

Daya terpisah untuk motor dan servo, GND bersama

Motor dan servo adalah beban yang paling sering bikin masalah ketika Arduino diberi daya baterai. Servo menarik lonjakan arus beberapa ratus miliampere tepat ketika mulai bergerak, dan motor DC menarik arus beberapa kali lipat dari arus normalnya ketika start atau ketika macet. Lonjakan itu bisa membuat jalur 5 V anjlok sejenak; kalau tegangannya turun cukup jauh, deteksi brown-out ATmega328P aktif dan board reset sendiri. Selain itu, derau sikat dari motor mengacaukan pembacaan sensor. Aturannya sederhana: beri daya paling banyak satu servo kecil dari pin 5V Arduino, dan jalankan motor lainnya dari catu terpisah. Untuk cara kerja servo dan motor DC, lihat motor servo dan kendali motor DC dengan L298N.

BebanArus normalArus puncakCatu yang disarankan
Servo mikro SG90100–250 mA0,5 A atau lebih (ketika macet)Satu: 5V Arduino; lebih: 5 V terpisah
Servo MG996R0,5–0,9 ASampai 2,5 A5–6 V terpisah, minimal 2–3 A per servo
Motor DC gear TT70–250 mA~1 A (start, macet)L298N atau L9110S + paket 6–9 V terpisah
Stepper 28BYJ-48~240 mA~240 mA5 V terpisah ke board ULN2003
LED WS2812B (per buah)~20 mA (kecerahan sedang)60 mA (putih penuh)5 V terpisah di atas 30 LED
Pompa air celup mini100–200 mABeberapa kali lipat ketika startRelay atau MOSFET + catu terpisah
  1. Pilih catu terpisah untuk motor: 5–6 V untuk servo (4×AA NiMH atau LM2596 yang diatur ke 5–6 V), dan paket yang sesuai dengan tegangan motor untuk motor DC (misalnya 18650 2S).
  2. Hubungkan positif catu hanya ke kabel merah servo atau ke input daya driver motor; jangan hubungkan ke pin 5V Arduino.
  3. Beri daya ke Arduino lewat input-nya sendiri: paket 2S yang sama juga boleh kamu hubungkan ke DC jack, asalkan arus motor tidak mengalir lewat regulator Arduino.
  4. Hubungkan negatif catu (GND) ke pin GND Arduino. Tanpa GND bersama, sinyal kendali tidak akan bekerja.
  5. Hubungkan kabel sinyal servo yang berwarna oranye atau kuning ke salah satu pin digital Arduino (misalnya D9); library Servo juga bekerja di pin tanpa tanda PWM.
  6. Tambahkan kapasitor elektrolit 470–1000 µF di catu servo, dekat dengan servo; perhatikan polaritasnya.
  7. Kalau kamu memakai L298N, masukkan catu motor ke terminal 12V; kalau catunya di atas 12 V, lepas jumper 5V-EN dan beri daya ke Arduino dari sumbernya sendiri.
Modul regulator tegangan step-down (buck) LM2596
Modul step-down LM2596: menurunkan tegangan yang lebih tinggi, seperti paket Li-ion 2S atau adaptor 12 V, secara efisien menjadi 5–6 V yang diatur dengan trimmer, tanpa jadi panas; cara paling praktis membuat jalur catu terpisah untuk servo dan LED strip.
Begini logika GND bersama: tegangan selalu diukur di antara dua titik. Ketika pin sinyal Arduino mengeluarkan 5 V, itu 5 V terhadap GND Arduino, sementara servo mengukur terhadap GND catunya sendiri. Kalau kedua ground tidak disatukan, servo melihat sinyal itu sebagai tegangan yang tidak bermakna, lalu bergetar atau tidak bergerak sama sekali. Untuk detailnya, lihat Apa Itu GND?, dan untuk membuat jalur 5–6 V terpisah, panduan pengaturan LM2596.

Bagaimana cara menghitung arus dan lama pemakaian?

Pertanyaan sebenarnya di proyek bertenaga baterai adalah “berapa lama bertahannya?”. Rumus dasarnya sederhana: Lama pakai (jam) = Kapasitas baterai (mAh) × 0,85 / Arus rata-rata (mA). Faktor 0,85 memperhitungkan bahwa baterai tidak pernah memberikan kapasitas rating-nya secara penuh: kapasitas turun pada arus tinggi dan dalam suhu dingin, rangkaian berhenti sebelum baterai benar-benar habis, dan konverter menambah rugi-rugi. Untuk baterai yang tegangannya cepat turun, seperti 9V, memakai 0,7 lebih realistis. Kalau proyekmu lebih banyak tidur, hitung dulu arus rata-ratanya: Arus rata-rata = (Arus aktif × waktu aktif + Arus tidur × waktu tidur) / waktu total. Daripada menghitung manual, kamu bisa memakai kalkulator umur baterai; masukkan kapasitas, arus ketika aktif dan ketika tidur, serta interval bangun, dan alat itu memberi lama pemakaian dalam jam, hari, atau bulan.

SkenarioArus rata-rataBateraiPerkiraan lama pakai
Uno + LCD I2C, selalu menyala~75 mA18650 2S (3000 mAh)~34 jam
Nano + sensor + penjaga power bank tetap menyala~29 mA (25 + 4)Power bank 10000 mAh (~6000 mAh, 5 V)~7 hari
Modul ESP32: bangun 5 dtk setiap 10 menit (120 mA), 150 µA ketika tidur~1,15 mA18650 (3000 mAh)~3 bulan
Kode yang sama, dev board yang menarik 5 mA ketika tidur~6 mA18650 (3000 mAh)~18 hari
Pico + MicroPython, selalu menyala~25 mA3×AA NiMH (2000 mAh)~68 jam

Mengukur selalu lebih baik daripada menebak. Pindahkan multimeter ke rentang arus (mA) dan hubungkan secara seri di antara baterai dan rangkaian untuk melihat konsumsi sebenarnya; caranya kami tunjukkan di Cara Memakai Multimeter. Kalau angkanya lebih tinggi dari perkiraanmu, lihat dulu konsumsi board-nya sendiri: di Uno, chip USB-serial (ATmega16U2), LED power, dan regulator menarik lebih dari 30 mA walaupun ATmega328P sedang tidur. Karena itulah proyek yang butuh umur baterai panjang lebih memilih board tanpa chip USB, seperti Arduino Pro Mini; Pro Mini yang LED power dan regulatornya dilepas bisa turun sampai mikroampere dalam mode sleep.

Langkah demi langkah: jalankan proyekmu dengan baterai

  1. Selagi proyek berjalan dari USB, ukur arus rata-rata dan arus puncaknya dengan multimeter; ukur juga ketika servo atau motor sedang bergerak.
  2. Pisahkan beban berarus tinggi seperti motor, servo, dan LED strip, lalu rencanakan catu terpisah untuk semuanya.
  3. Pilih input board: untuk Uno, paket 7–12 V ke DC jack atau 5 V teregulasi ke USB atau pin 5V; untuk Pico, 1,8–5,5 V ke VSYS.
  4. Hitung kapasitas yang kamu butuhkan untuk lama pemakaian yang diinginkan, atau pakai kalkulator umur baterai.
  5. Tambahkan saklar on/off di jalur positif baterai; pastikan paket Li-ion punya board proteksi (BMS).
  6. Upload kode lewat USB, lalu cabut USB dan uji dengan baterai; cek tegangan di pin 5V dengan multimeter selagi servo bergerak.
  7. Pantau tegangan baterai di kode dan beri peringatan ketika turun di bawah nilai tertentu (kode di bawah).

Mengukur tegangan baterai dengan Arduino

Daripada menebak kapan baterai habis, kamu bisa mengukur tegangannya. Input analog Arduino hanya bisa membaca paling tinggi 5 V, jadi paket 2S yang mencapai 8,4 V tidak bisa langsung dihubungkan ke A0; kamu butuh pembagi tegangan. Dua resistor 100 kΩ dan 10 kΩ membagi tegangannya dengan 11: 8,4 V menjadi sekitar 0,76 V di A0. Karena jalur 5 V board bisa bergeser ketika baterai melemah, lebih akurat mengukur terhadap referensi internal 1,1 V, yang tidak bergantung pada tegangan suplai. Nilai resistor untuk paketmu sendiri bisa kamu pilih dengan kalkulator pembagi tegangan dan baca selengkapnya di pembagi tegangan.

C++ (Arduino IDE)
1// 2S Li-ion paket gerilimini ölçme / measuring a 2S Li-ion pack voltage
2// Pil+ -> 100k -> A0 -> 10k -> GND / pack+ -> 100k -> A0 -> 10k -> GND
3const int BAT_PIN = A0;
4const int LED_PIN = 13;      // pil zayıf uyarısı / low-battery warning
5const float R1 = 100000.0;   // üst direnç / top resistor
6const float R2 = 10000.0;    // alt direnç / bottom resistor
7const float VREF = 1.1;      // dahili referans, multimetreyle düzelt / internal reference, calibrate with a multimeter
8const float LOW_V = 6.6;     // 2S için alt sınır (3,3 V/hücre) / low limit for 2S (3.3 V per cell)
9
10void setup() {
11  Serial.begin(9600);
12  pinMode(LED_PIN, OUTPUT);
13  analogReference(INTERNAL);   // 1,1 V referans (Uno/Nano) / 1.1 V reference (Uno/Nano)
14  analogRead(BAT_PIN);         // ilk ölçümü at / discard the first reading
15  delay(10);
16}
17
18void loop() {
19  long sum = 0;
20  for (int i = 0; i < 16; i++) {   // 16 ölçümün ortalaması / average of 16 readings
21    sum += analogRead(BAT_PIN);
22    delay(2);
23  }
24  float pinV = (sum / 16.0) * VREF / 1024.0;
25  float batV = pinV * (R1 + R2) / R2;
26
27  Serial.print("Pil / Battery: ");
28  Serial.print(batV, 2);
29  Serial.println(" V");
30
31  digitalWrite(LED_PIN, batV < LOW_V ? HIGH : LOW);   // zayıfsa LED yanar / LED on when low
32  delay(2000);
33}

Hubungkan ujung atas pembagi ke positif baterai setelah saklar on/off, supaya pembagi tidak menguras baterai ketika perangkat mati. Referensi internal 1,1 V bisa berbeda sekitar ±10% dari satu chip ke chip lain: bandingkan tegangan baterai yang kamu ukur dengan multimeter dengan angka di Serial Monitor, lalu koreksi VREF (misalnya menjadi 1.08). Pembagi menarik sekitar 76 µA terus-menerus, yang praktis tidak berpengaruh pada umur baterai. Kodenya untuk Uno dan Nano; di Mega referensinya bernama INTERNAL1V1. Ambang 6,6 V setara dengan 3,3 V per sel; pada titik itu selnya hampir kosong, dan turun di bawah 3,0 V per sel akan merusaknya. Kalau paketnya menyuplai DC jack, jalur 5 V mulai turun di sekitar 7 V, jadi mengatur LOW_V ke 7.0 juga masuk akal.

Memberi daya baterai ke ESP32

Board pengembangan ESP32 bekerja di 3,3 V dan bisa diberi daya dengan tiga cara: port USB, pin 5V (VIN di beberapa board), atau langsung lewat pin 3V3. Espressif dengan jelas menyatakan bahwa pilihan-pilihan ini tidak boleh dipakai bersamaan dan hanya satu yang boleh dipilih. Tegangan yang diberikan ke pin 5V melewati regulator LDO 3,3 V di board (AMS1117 di kebanyakan klon), sedangkan pin 3V3 hanya menerima 3,0–3,6 V yang sudah teregulasi. Ketika memancar lewat Wi-Fi, ESP32 menarik arus puncak sampai 240 mA, jadi butuh catu yang sanggup memberi minimal 500 mA; kalau tidak, ESP32 reset dengan error “Brownout detector was triggered” (detailnya di error brownout). Jangan hubungkan satu sel 18650 langsung ke pin 3V3: dengan 4,2 V ketika penuh, sel itu melewati batas. Pin 5V juga kurang cocok, karena AMS1117 butuh jatuh tegangan sekitar 1,1 V, sehingga ketika tegangan sel turun, output-nya jatuh di bawah 3,3 V. Pilihan yang tepat adalah 18650 dengan boost 5 V ke pin 5V, regulator 3,3 V low-dropout yang sanggup memberi minimal 500 mA, atau board ESP32 dengan charger Li-ion bawaan. Namun, yang benar-benar menentukan umur baterai adalah ESP32 menghabiskan sebagian besar waktunya dalam deep sleep; chip-nya menarik sekitar 10 µA dalam mode ini, tetapi chip USB-serial, LED, dan regulator di dev board bisa mendorong angkanya sampai ke kisaran miliampere. Dari situlah selisih antara 3 bulan dan 18 hari di tabel di atas berasal; untuk detailnya, lihat deep sleep ESP32.

C++ (Arduino IDE)
1// ESP32: 18650 gerilimini ölç, sonra derin uykuya geç / measure the 18650, then deep sleep
2// Pil+ -> 100k -> GPIO34 -> 100k -> GND / cell+ -> 100k -> GPIO34 -> 100k -> GND
3const int BAT_PIN = 34;                         // yalnız giriş, ADC1 / input-only, ADC1
4const uint64_t SLEEP_US = 60ULL * 1000000ULL;   // 60 saniye / 60 seconds
5
6void setup() {
7  Serial.begin(115200);
8  uint32_t mv = 0;
9  for (int i = 0; i < 16; i++) {
10    mv += analogReadMilliVolts(BAT_PIN);        // kalibre milivolt / calibrated millivolts
11  }
12  float batV = (mv / 16.0) * 2.0 / 1000.0;      // bölücü yarıya indirir / the divider halves it
13  Serial.printf("Pil / Battery: %.2f V\n", batV);
14
15  if (batV < 3.3) {
16    Serial.println("Pil zayif / Battery low");  // işi atla, pili koru / skip the work, protect the cell
17  } else {
18    // sensörü oku, Wi-Fi ile gönder / read the sensor, send over Wi-Fi
19  }
20
21  esp_sleep_enable_timer_wakeup(SLEEP_US);      // 60 sn sonra uyan / wake up after 60 s
22  Serial.flush();
23  esp_deep_sleep_start();                       // loop() hiç çalışmaz / loop() never runs
24}
25
26void loop() {
27}

Setiap kali bangun, kode mengukur tegangan baterai, mengerjakan tugasnya, lalu tidur lagi dengan timer 60 detik; karena ESP32 yang bangun dari deep sleep menjalankan ulang program dari awal, loop() tidak pernah dijalankan. GPIO 34 adalah pin ADC1 yang hanya bisa jadi input dan tetap bekerja ketika Wi-Fi menyala, sedangkan pin ADC2 tidak bisa dipakai bersamaan dengan Wi-Fi. analogReadMilliVolts() memakai kalibrasi pabrik chip untuk langsung mengembalikan nilai dalam milivolt. Pembagi 100 kΩ + 100 kΩ menurunkan 4,2 V menjadi 2,1 V dan hanya menarik 21 µA; kalau pembacaannya berisik, tambahkan kapasitor 100 nF di antara GPIO 34 dan GND. Untuk langkah pertamamu dengan ESP32, Apa Itu ESP32? adalah tempat yang bagus untuk mulai.

Memberi daya baterai ke Raspberry Pi Pico

Raspberry Pi Pico adalah salah satu board yang paling mudah dijalankan dengan baterai, karena alih-alih regulator linear, ia punya regulator switching buck-boost. Beri pin VSYS tegangan berapa saja antara 1,8 dan 5,5 V, dan board mengubahnya secara efisien menjadi 3,3 V; board tetap bekerja walaupun input-nya turun di bawah 3,3 V. Artinya, 2 atau 3 sel AA, satu 18650, atau LiPo satu sel bisa langsung dihubungkan di antara VSYS dan GND tanpa modul tambahan. Satu-satunya yang perlu diperhatikan adalah pemakaian bersama USB: 5 V USB (VBUS) terhubung ke VSYS lewat dioda Schottky, jadi kalau baterai disambung langsung ke VSYS lalu kamu mencolokkan USB, USB akan mencoba mendorong arus ke baterai. Solusi yang disarankan Raspberry Pi adalah menghubungkan baterai ke VSYS lewat dioda Schottky-nya sendiri (misalnya 1N5817). Pin 3V3 bisa memberi paling banyak sekitar 300 mA ke rangkaian eksternal, dan menarik pin 3V3_EN ke GND akan mematikan regulator, sekaligus seluruh board. Untuk gambaran umum board-nya, lihat Apa Itu Raspberry Pi Pico?.

MicroPython
1from machine import ADC, Pin
2import time
3
4vsys = ADC(29)            # VSYS/3 ölçer (Pico) / measures VSYS/3 (Pico)
5usb = Pin(24, Pin.IN)     # USB takılıysa 1 / 1 when USB is connected
6CONV = 3.3 / 65535        # ham değeri volta çevir / raw value to volts
7
8while True:
9    total = 0
10    for _ in range(16):   # 16 ölçümün ortalaması / average of 16 readings
11        total += vsys.read_u16()
12    volts = total / 16 * CONV * 3   # kart içindeki bölücü 3'e böler / on-board divider divides by 3
13    source = "USB" if usb.value() else "Pil / Battery"
14    print("{}: VSYS = {:.2f} V".format(source, volts))
15    if not usb.value() and volts < 3.3:   # 3xAA ya da 18650 için alt sınır / low limit for 3xAA or a 18650
16        print("Pil zayif! / Battery low!")
17    time.sleep(5)

Di Pico, GP29 mengukur sepertiga VSYS lewat pembagi di board, sedangkan GP24 membaca 1 ketika USB terhubung. Jadi tanpa komponen tambahan, kamu bisa mengetahui tegangan baterai sekaligus apakah board berjalan dari USB atau dari baterai. Kalau baterai kamu hubungkan lewat dioda Schottky sesuai saran, VSYS terbaca sekitar 0,2–0,3 V di bawah tegangan baterai. Pembacaan ini menganggap referensi ADC adalah 3,3 V; berkat regulator buck-boost, referensi itu tetap stabil walaupun baterai melemah. Di Pico W, GP29 dan GP24 dipakai bersama chip nirkabel, jadi kode ini tidak bisa langsung dipakai; di sana, status USB dibaca dengan Pin("WL_GPIO2"). Untuk memperpanjang umur baterai, pakai machine.lightsleep(), bukan time.sleep(), di antara pembacaan.

Ide proyek bertenaga baterai

  • Mobil robot kendali Bluetooth: beri daya ke motor sekaligus Arduino dari paket 18650 2S; detailnya di Mobil Robot Arduino.
  • Robot penghindar rintangan: cegah reset dengan memberi daya ke motor lewat L298N di jalur terpisah dan ke Arduino dari DC jack (Robot Penghindar Rintangan).
  • Voltmeter dengan indikator baterai: tampilkan nilai yang kamu ukur lewat pembagi tegangan di LCD (membuat voltmeter Arduino).
  • Stasiun kelembapan kebun: biarkan ESP32 dalam deep sleep, ukur kelembapan tanah sekali setiap jam, dan jalankan selama berbulan-bulan dengan satu 18650.
  • GPS logger portabel: rekam rute pendakianmu dengan GPS NEO-6M dan power bank.
  • Lampu tidur Pico bertenaga baterai: Pico yang disuplai 3 sel AA lewat VSYS menyalakan LED ketika ruangan mulai gelap.

Kesalahan umum dan cara memperbaikinya

GejalaKemungkinan penyebabSolusi
Board reset ketika servo bergerakArus servo membuat jalur 5 V anjlokBeri daya servo secara terpisah, tambahkan GND bersama dan kapasitor 470–1000 µF
Baterai 9V habis dalam beberapa jamBaterai 9V hanya berkapasitas 400–600 mAhPakai paket 6×AA atau 18650 2S
Power bank mati dalam 10–60 detikArus di bawah ambang mati otomatisMode arus rendah atau pulsa penjaga tetap menyala
Regulator jadi sangat panasTegangan input tinggi dan arus tinggiTurunkan input ke 7–9 V atau buat 5 V dengan modul buck
Pembacaan analog bergeser ketika memakai bateraiInput di bawah 7 V, jalur 5 V turunNaikkan tegangan paket atau pakai referensi internal 1,1 V
Board jadi panas atau tidak mau menyalaPolaritas terbalik, atau lebih dari 5,5 V di pin 5VCabut sumbernya, cek polaritas dan tegangan dengan multimeter
ESP32 reset ketika menghubungkan ke Wi-FiCatu tidak sanggup memberi arus puncak (brownout)Kabel pendek dan tebal, kapasitor 470 µF, catu yang lebih kuat
Di Pico, baterai menghangat ketika USB tercolokUSB mendorong arus ke baterai lewat VSYSTambahkan dioda Schottky di jalur baterai
Kalau kamu membuat proyek permanen dengan baterai lithium, tambahkan sekring (misalnya 2 A) dan saklar di jalur baterai, taruh sel di dalam wadah tertutup yang tetap berventilasi, dan jangan pernah meninggalkan proyek tanpa pengawasan ketika sedang diisi. Sel yang menggembung, penyok, atau terasa hangat harus segera berhenti dipakai.

Daya yang baik adalah separuh dari kunci proyek yang berjalan andal: pilih input yang tepat, beri daya motor secara terpisah, satukan ground, dan hitung umur baterai sejak awal. Kalau kamu sudah siap membuat proyek bertenaga baterai, coba proyek “Mobil Kendali Bluetooth dengan L298N”, “Robot Penghindar Rintangan”, “Stasiun Penyiraman Pintar”, “Voltmeter Digital dengan Layar LCD”, dan “Deep Sleep ESP32: Hemat Baterai” di aplikasi BlueGrays; masing-masing memandumu langkah demi langkah melewati skema rangkaian, pengkabelan, dan kodenya.

Pertanyaan umum

Bisakah Arduino berjalan dengan baterai 9V?

Bisa, baterai 9V bisa dihubungkan ke DC jack atau pin Vin Arduino Uno, dan board berjalan dengan nyaman di rentang 7–12 V. Namun, baterai 9V alkaline hanya berkapasitas 400–600 mAh, jadi sendirian ia menjalankan Uno sekitar 6–8 jam, dan jauh lebih singkat begitu kamu menambahkan servo atau motor. Untuk proyek yang berjalan lama, 6×AA atau dua sel 18650 seri adalah pilihan yang lebih baik.

Bisakah aku memberi daya ke Arduino dengan power bank?

Bisa; cukup colokkan power bank ke port USB Arduino dengan kabel USB, dan board terlindungi oleh sekring USB-nya. Masalahnya, banyak power bank tidak mendeteksi beban di bawah 50–100 mA dan mematikan output-nya setelah waktu singkat. Kamu bisa memilih model dengan mode arus rendah, atau menambahkan rangkaian penjaga yang membuat Arduino menarik beban singkat setiap beberapa detik.

Bisakah aku memberi daya ke Arduino dengan adaptor 12V?

Bisa, 12 V adalah batas atas rentang 7–12 V yang disarankan untuk Uno dan aman lewat DC jack. Tetapi karena regulator linear di board mengubah kelebihan 6–7 V menjadi panas, regulator akan kepanasan kalau kamu menarik lebih dari sekitar 150 mA dari jalur 5 V. Kalau butuh arus lebih besar, pakai adaptor 9 V atau buat 5 V dengan modul buck terpisah; Uno R4 berjalan tanpa masalah sampai 24 V.

Bisakah aku memberi daya ke Arduino lewat pin 5V?

Bisa, tetapi pin 5V melewati regulator, dioda polaritas terbalik, dan sekring USB board, jadi tidak ada proteksi sama sekali. Hubungkan hanya sumber teregulasi yang sudah kamu ukur dengan multimeter dan tetap di antara 4,8 dan 5,2 V (misalnya LM2596 atau modul boost yang diatur ke 5,0 V). Sumber di atas 5,5 V, atau yang terpasang terbalik, bisa langsung merusak ATmega328P.

Bisakah Arduino berjalan dengan baterai Li-ion 3,7V?

Uno tidak berjalan andal langsung dari 3,7 V: tegangan itu terlalu rendah untuk DC jack dan tidak cukup untuk pin 5V. Kamu perlu menaikkan satu sel ke 5 V dengan konverter boost lalu menyuplai USB atau pin 5V, atau menghubungkan dua sel secara seri dan mencolokkan paket 7,4 V ke DC jack. Sebaliknya, Pro Mini 3,3 V (lewat pin RAW) dan Raspberry Pi Pico (lewat VSYS) berjalan nyaman langsung dari satu sel, begitu juga ESP32 dengan regulator 3,3 V low-dropout.

Berapa lama Arduino bisa berjalan dengan baterai?

Lama pemakaian didapat dengan membagi kapasitas dengan arus rata-rata: kapasitas (mAh) × 0,85 / arus rata-rata (mA). Misalnya, Uno yang menarik 50 mA berjalan sekitar 50 jam dengan paket 18650 2S 3000 mAh. ESP32 yang memakai deep sleep bisa bertahan berbulan-bulan dengan kapasitas yang sama; kalkulator umur baterai di BlueGrays juga memperhitungkan arus tidur.

Lihat semua proyek
Voltmeter Digital dengan Layar LCD
#56Menengah
Premium

Voltmeter Digital dengan Layar LCD

Cari tahu berapa tegangan yang diberikan baterai atau adaptor daya dengan alat ukur buatanmu sendiri. Pembagi dari dua resistor menurunkan tegangan tinggi ke tingkat yang bisa dibaca board, dan Arduin

4.5(27)
36
Menggunakan Motor Servo
#35Pemula
Premium

Menggunakan Motor Servo

Lengan motor servo kecil berputar ke tiga posisi bergantian: penuh ke awal, tepat ke tengah, dan penuh ke akhir, menunggu dua detik di setiap perhentian. Arduino memberi tahu motor sudut mana yang har

4.7(48)
67
Mobil Kendali Bluetooth dengan L298N
#80Mahir
Premium

Mobil Kendali Bluetooth dengan L298N

Jadikan ponselmu remote dan kendarai mobil robotmu sendiri. Arduino menerima perintah dari aplikasi remote control di ponselmu lewat modul Bluetooth dan memutar roda dengan driver motor; mobil maju, m

5.0(38)
65
Robot Penghindar Rintangan
#81Mahir
Premium

Robot Penghindar Rintangan

Bagaimana kalau membuat kendaraan pintar yang mencari jalannya sendiri? Robot Penghindar Rintangan terus memindai sekelilingnya berkat sensor ultrasonik di depannya. Ketika menemui rintangan, robot be

5.0(38)
49
Stasiun Penyiraman Pintar
#83Mahir
Premium

Stasiun Penyiraman Pintar

Tukang kebun yang menyiram tanamanmu sendiri, supaya tanaman tidak kering ketika kamu berlibur. Sensor kelembapan tanah mengukur seberapa basah tanahnya; ketika kering, Arduino menyalakan pompa air be

5.0(42)
57
Deep Sleep ESP32: Hemat Baterai (OLED + Penghitung RTC RAM)
#135Mahir
Premium

Deep Sleep ESP32: Hemat Baterai (OLED + Penghitung RTC RAM)

Mode Deep Sleep ESP32 menurunkan konsumsi arus hingga ~10 µA dengan mematikan CPU dan sebagian besar periferal, sehingga sangat penting untuk perangkat IoT bertenaga baterai. Di proyek ini, kita memakai tiga sumber bangun yang berbeda: timer (15 detik), pin eksternal (EXT0, tombol GPIO 33), dan sentuhan (T0/GPIO 4). Variabel yang ditandai RTC_DATA_ATTR dipertahankan selama deep sleep; penghitung boot, penghitung bangun karena timer, dan penghitung bangun karena tombol terus dilacak.

4.3(10)
16
Motor Servo ESP32 (Kendali Potensiometer)
#118Menengah
Premium

Motor Servo ESP32 (Kendali Potensiometer)

Di proyek ini, kita mengendalikan motor servo SG90 memakai potensiometer. Kita mengatur sudut servo dengan memetakan nilai analog yang dibaca dari potensiometer ke rentang 0–180 derajat. Library ESP32Servo menghasilkan sinyal servo di pin GPIO ESP32 yang sesuai dan bisa menjadi output; proyek ini memakai GPIO 18. Ini metode kendali dasar untuk lengan robot, gimbal kamera, dan mekanisme pintu otomatis.

4.3(29)
42