Blog Archive

Arduino Indonesia. Gambar tema oleh Storman. Diberdayakan oleh Blogger.

Supported by Electronics 3 in 1

1. Jasa pencetakan PCB single layer dengan harga paling murah.

(Metode Pembuatan dengan Transfer Toner)
>PCB design sendiri (siap cetak) : Rp.150,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

(Metode Sablon Full Masking dan Silk Screen minimal pemesanan 100 Pcs)
>PCB design sendiri (siap cetak) : Rp.200,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

2. Jasa perancangan, perakitan, dan pembuatan trainer pembelajaran elektronika untuk SMK dan Mahasiswa.

3. Jasa perancangan, perakitan, dan pembuatan berbagai macam kontroller, sensor, aktuator, dan tranduser.
>Design Rangkaian / Sistem Elektronika
>Design Rangkaian / Sistem Instrumentasi
>Design Rangkaian / Sistem Kendali
>Kerjasama Riset (data atau peralatan)
>Kerjasama Produksi Produk-Produk KIT Elektronika
>Produksi Instrumentasi Elektronika

4. Jasa Pembuatan Proyek, Tugas Akhir, Tugas Laboratorium, PKM, Karya Ilmiah, SKRIPSI, dll

Like My Facebook

Popular Posts

Jumat, 09 Januari 2026

Tutorial MicroPython ESP32/ESP8266 - Membaca Input Analog (ADC)

Pada artikel ini, Arduino Indonesia akan membahas tentang cara membaca nilai analog dengan papan ESP32 dan ESP8266 menggunakan firmware MicroPython. Sebagai contoh, kami akan membaca nilai dari sebuah potensiometer.

Pembacaan Analog – ESP8266

ESP8266 hanya memiliki satu pin analog bernama A0. Pin analog ESP8266 memiliki resolusi 10-bit. Pin ini membaca tegangan dari 0 hingga 3.3V dan memberikan nilai antara 0 hingga 1023.

Catatan: Beberapa versi ESP8266 hanya dapat membaca maksimum 1V pada pin ADC. Pastikan Anda tidak melebihi tegangan maksimum yang direkomendasikan untuk papan Anda.

Pembacaan Analog – ESP32

Ada beberapa pin pada ESP32 yang dapat berfungsi sebagai pin analog – ini disebut pin ADC. Semua GPIO berikut dapat menjadi pin ADC: 0, 2, 4, 12, 13, 14, 15, 25, 26, 27, 32, 33, 34, 35, 36, dan 39.

 

Pin ADC ESP32 secara default memiliki resolusi 12-bit. Pin-pin ini membaca tegangan antara 0 hingga 3.3V dan mengembalikan nilai antara 0 hingga 4095. Resolusi ini dapat diubah melalui kode. Misalnya, Anda mungkin ingin menggunakan resolusi 10-bit untuk mendapatkan nilai antara 0 hingga 1023.



Tabel berikut menunjukkan beberapa perbedaan antara pembacaan analog pada ESP8266 dan ESP32.


 

Baca juga: MicroPython ESP32 & ESP8266 - Cara Menggunakan Sensor BME280 (Tekanan, Suhu, Kelembaban)

Rangkaian

Cara kerja pembacaan analog berbeda antara ESP32 dan ESP8266. Terdapat rangkaian dan kode program yang berbeda untuk masing-masing papan.

 

Untuk mengikuti tutorial ini, Anda perlu menghubungkan sebuah potensiometer ke papan ESP8266 atau ESP32 Anda.

Komponen yang Diperlukan

Berikut daftar komponen untuk merakit rangkaian:

- ESP32 atau ESP8266

- Potensiometer

- Breadboard

- Kabel jumper

Diagram Rangkaian – ESP32

Gunakan diagram skematik berikut sebagai panduan jika Anda menggunakan papan ESP32:



Dalam contoh ini kami menggunakan GPIO 34 untuk membaca nilai analog dari potensiometer, namun Anda dapat memilih GPIO lain yang mendukung ADC.

Diagram Rangkaian – ESP8266

Gunakan diagram skematik berikut sebagai panduan jika Anda menggunakan papan ESP8266:



ESP8266 hanya mendukung pembacaan analog pada pin A0.

Kode Program

Terdapat beberapa perbedaan dalam pembacaan analog antara ESP32 dan ESP8266 terkait kodenya. Anda harus menulis kode program yang sedikit berbeda tergantung pada papan yang digunakan. Pastikan Anda mengikuti kode untuk papan spesifik Anda.

Kode Program – ESP32

Kode program berikut untuk ESP32 membaca nilai analog dari GPIO 34.

 

from machine import Pin, ADC

from time import sleep


pot = ADC(Pin(34))

pot.atten(ADC.ATTN_11DB)       #Full range: 3.3v


while True:

  pot_value = pot.read()

  print(pot_value)

  sleep(0.1)

 

Penjelasan Kode

Untuk membaca input analog, impor kelas ADC di samping kelas Pin dari modul machine. Kami juga mengimpor metode sleep.

 

from machine import Pin, ADC

from time import sleep

 

Kemudian, buat objek ADC bernama pot pada GPIO 34.

 

pot = ADC(Pin(34))

 

Baris berikut mendefinisikan bahwa kita ingin dapat membaca tegangan dalam rentang penuh.

 

pot.atten(ADC.ATTN_11DB)

 

Artinya kita ingin membaca tegangan dari 0 hingga 3.3V. Ini sesuai dengan pengaturan rasio atenuasi sebesar 11dB. Untuk itu, kami menggunakan metode atten() dan memberikan argumen: ADC.ATTN_11DB.

Metode `atten()` dapat menerima argumen berikut:

- `ADC.ATTN_0DB` - rentang tegangan penuh: 1.2V

- `ADC.ATTN_2_5DB` - rentang tegangan penuh: 1.5V

- `ADC.ATTN_6DB` - rentang tegangan penuh: 2.0V

 `ADC.ATTN_11DB` - rentang tegangan penuh: 3.3V

Di dalam perulangan while, baca nilai pot dan simpan dalam variabel pot_value. Untuk membaca nilai dari pot, cukup gunakan metode read() pada objek pot.

 

pot_value = pot.read()

 

Kemudian, cetak nilai potensiometer.

 

print(pot_value)

 

Di akhir, tambahkan jeda 100 ms.

 

sleep(0.1)

 

Saat Anda memutar potensiometer, Anda mendapatkan nilai dari 0 hingga 4095 – ini karena pin ADC memiliki resolusi 12-bit secara default. Anda mungkin ingin mendapatkan nilai dalam rentang lain. Anda dapat mengubah resolusi menggunakan metode width() sebagai berikut:

 

ADC.width(bit)

 

Argumen bit dapat berupa salah satu dari parameter berikut:

- `ADC.WIDTH_9BIT`: rentang 0 hingga 511

- `ADC.WIDTH_10BIT`: rentang 0 hingga 1023

- `ADC.WIDTH_11BIT`: rentang 0 hingga 2047

- `ADC.WIDTH_12BIT`: rentang 0 hingga 4095

Contoh:

 

ADC.width(ADC.WIDTH_12BIT)

 

Ringkasan:

1. Untuk membaca nilai analog, Anda perlu mengimpor kelas ADC.

2. Untuk membuat objek ADC, cukup gunakan `ADC(Pin(GPIO))`, di mana GPIO adalah nomor GPIO yang ingin Anda baca nilai analognya.

3. Untuk membaca nilai analog, cukup gunakan metode `read()` pada objek ADC.

Kode Program – ESP8266

Kode program berikut untuk ESP8266 membaca nilai analog dari pin A0.

 

from machine import Pin, ADC

from time import sleep


pot = ADC(0)


while True:

  pot_value = pot.read()

  print(pot_value)

  sleep(0.1)

 

Penjelasan Kode

Untuk membaca input analog, impor kelas ADC di samping kelas Pin dari modul machine. Kami juga mengimpor metode sleep.

 

from machine import Pin, ADC

from time import sleep

 

Kemudian, buat objek ADC bernama pot pada pin A0.

 

pot = ADC(0)

 

Catatan: ADC0 (A0) adalah satu-satunya pin pada ESP8266 yang mendukung pembacaan analog.

Di dalam perulangan, baca nilai pot dan simpan dalam variabel pot_value. Untuk membaca nilai dari pot, gunakan metode read() pada objek pot.

 

pot_value = pot.read()

 

Kemudian, cetak nilai `pot_value`.

 

print(pot_value)

 

Di akhir, tambahkan jeda 100 ms.

 

sleep(0.1)

 

Ringkasan:

1. Untuk membaca nilai analog, gunakan kelas ADC.

2. Untuk membuat objek ADC, cukup panggil ADC(0). ESP8266 hanya mendukung pembacaan ADC pada pin A0.

3. Untuk membaca nilai analog, gunakan metode read() pada objek ADC.

Demonstrasi

Setelah menyimpan kode ke papan ESP Anda menggunakan Thonny IDE atau uPyCraft IDE, putar potensiometer.



Periksa shell IDE MicroPython Anda untuk membaca nilai dari potensiometer. Jika menggunakan ESP32, Anda akan mendapatkan pembacaan antara 0 dan 4095 - atau pembacaan antara 0 dan 1023 dengan ESP8266.



Baca juga: Tutorial MicroPython ESP32/ESP8266 - Cara Menggunakan OLED Display (SSD1306)

Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.

0 on: "Tutorial MicroPython ESP32/ESP8266 - Membaca Input Analog (ADC) "