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.

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.
| Input | Tegangan | Proteksi | Kapan dipakai |
|---|---|---|---|
| USB (tipe B) | 5 V | Polyfuse 500 mA | Pengembangan 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 V | Adaptor dinding, 6×AA, paket Li-ion 2S |
| Pin Vin | 7–12 V | Ada regulator, tanpa proteksi polaritas terbalik | Kabel tempat baterai, shield |
| Pin 5V | Terukur 4,8–5,2 V | Tanpa proteksi sama sekali | Output buck/boost yang sudah diatur, sumber 5 V teregulasi |
| Pin 3.3V | Hanya output | Tidak ada | Sensor 3,3 V sampai 50 mA |
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 Vin | Panas pada 100 mA | Panas pada 300 mA | Penilaian |
|---|---|---|---|
| 7 V | 0,2 W | 0,6 W | Rentang paling efisien |
| 9 V | 0,4 W | 1,2 W | Mepet di 300 mA |
| 12 V | 0,7 W | 2,1 W | Hanya untuk beban ringan |
| 20 V | 1,5 W | 4,5 W | Tidak 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.
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.
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.

Pilihan baterai: 9V, AA, 18650, dan power bank
| Baterai | Tegangan | Kapasitas | Hubungkan ke | Lama pakai dengan Uno (~50 mA) |
|---|---|---|---|---|
| 9V alkaline | 9 V (cepat turun ke 7 V ketika dibebani) | 400–600 mAh | DC jack / Vin | 6–8 jam |
| 6×AA alkaline | 9 V | 2000–2500 mAh | DC jack / Vin | ~30 jam |
| 4×AA alkaline | 6 V (6,4 V ketika baru) | 2000–2500 mAh | Tidak disarankan | Terlalu rendah untuk jack, terlalu tinggi untuk pin 5V |
| 3×AA alkaline | 4,5 V | 2000–2500 mAh | Pin 5V | ~1 hari (tidak stabil menjelang habis) |
| 1×18650 + boost 5 V | 3,0–4,2 V → 5 V | 2000–3500 mAh | USB atau pin 5V | ~30 jam (3000 mAh) |
| 2×18650 seri (2S) | 7,4 V (6,0–8,4 V) | 2000–3500 mAh | DC jack / Vin | ~2 hari (3000 mAh) |
| Power bank 10000 mAh | 5 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.

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%.

- 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.

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.
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.
| Beban | Arus normal | Arus puncak | Catu yang disarankan |
|---|---|---|---|
| Servo mikro SG90 | 100–250 mA | 0,5 A atau lebih (ketika macet) | Satu: 5V Arduino; lebih: 5 V terpisah |
| Servo MG996R | 0,5–0,9 A | Sampai 2,5 A | 5–6 V terpisah, minimal 2–3 A per servo |
| Motor DC gear TT | 70–250 mA | ~1 A (start, macet) | L298N atau L9110S + paket 6–9 V terpisah |
| Stepper 28BYJ-48 | ~240 mA | ~240 mA | 5 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 mini | 100–200 mA | Beberapa kali lipat ketika start | Relay atau MOSFET + catu terpisah |
- 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).
- Hubungkan positif catu hanya ke kabel merah servo atau ke input daya driver motor; jangan hubungkan ke pin 5V Arduino.
- 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.
- Hubungkan negatif catu (GND) ke pin GND Arduino. Tanpa GND bersama, sinyal kendali tidak akan bekerja.
- 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.
- Tambahkan kapasitor elektrolit 470–1000 µF di catu servo, dekat dengan servo; perhatikan polaritasnya.
- 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.

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.
| Skenario | Arus rata-rata | Baterai | Perkiraan lama pakai |
|---|---|---|---|
| Uno + LCD I2C, selalu menyala | ~75 mA | 18650 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 mA | 18650 (3000 mAh) | ~3 bulan |
| Kode yang sama, dev board yang menarik 5 mA ketika tidur | ~6 mA | 18650 (3000 mAh) | ~18 hari |
| Pico + MicroPython, selalu menyala | ~25 mA | 3×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
- Selagi proyek berjalan dari USB, ukur arus rata-rata dan arus puncaknya dengan multimeter; ukur juga ketika servo atau motor sedang bergerak.
- Pisahkan beban berarus tinggi seperti motor, servo, dan LED strip, lalu rencanakan catu terpisah untuk semuanya.
- 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.
- Hitung kapasitas yang kamu butuhkan untuk lama pemakaian yang diinginkan, atau pakai kalkulator umur baterai.
- Tambahkan saklar on/off di jalur positif baterai; pastikan paket Li-ion punya board proteksi (BMS).
- Upload kode lewat USB, lalu cabut USB dan uji dengan baterai; cek tegangan di pin 5V dengan multimeter selagi servo bergerak.
- 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.
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.
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?.
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
| Gejala | Kemungkinan penyebab | Solusi |
|---|---|---|
| Board reset ketika servo bergerak | Arus servo membuat jalur 5 V anjlok | Beri daya servo secara terpisah, tambahkan GND bersama dan kapasitor 470–1000 µF |
| Baterai 9V habis dalam beberapa jam | Baterai 9V hanya berkapasitas 400–600 mAh | Pakai paket 6×AA atau 18650 2S |
| Power bank mati dalam 10–60 detik | Arus di bawah ambang mati otomatis | Mode arus rendah atau pulsa penjaga tetap menyala |
| Regulator jadi sangat panas | Tegangan input tinggi dan arus tinggi | Turunkan input ke 7–9 V atau buat 5 V dengan modul buck |
| Pembacaan analog bergeser ketika memakai baterai | Input di bawah 7 V, jalur 5 V turun | Naikkan tegangan paket atau pakai referensi internal 1,1 V |
| Board jadi panas atau tidak mau menyala | Polaritas terbalik, atau lebih dari 5,5 V di pin 5V | Cabut sumbernya, cek polaritas dan tegangan dengan multimeter |
| ESP32 reset ketika menghubungkan ke Wi-Fi | Catu tidak sanggup memberi arus puncak (brownout) | Kabel pendek dan tebal, kapasitor 470 µF, catu yang lebih kuat |
| Di Pico, baterai menghangat ketika USB tercolok | USB mendorong arus ke baterai lewat VSYS | Tambahkan dioda Schottky di jalur baterai |
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.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
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

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

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

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

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

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.

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.
Artikel lainnya
Aplikasi BlueGrays
Rakit rangkaian ini langkah demi langkah di ponselmu
Skema pengkabelan, kode, dan daftar komponen dalam satu layar. 200+ proyek Arduino, ESP32, dan Pico siap dibuat.
Pindai dengan ponselmu
Arahkan kamera ke kode ini dan toko aplikasi di ponselmu akan terbuka.
atau buka toko aplikasi

