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, 12 Desember 2025

Panduan Lengkap Menghubungkan Sensor Anemometer ke ESP32/ESP8266 Menggunakan MicroPython

Pada artikel ini, Anda akan mempelajari cara mengintegrasikan anemometer untuk mengukur kecepatan angin menggunakan board ESP32 dan ESP8266 NodeMCU yang diprogram dengan MicroPython. Pembahasan mencakup cara menyediakan catu daya, menghubungkan sensor ke board ESP32 dan ESP8266, serta menulis kode sederhana untuk mendapatkan nilai kecepatan angin dalam berbagai satuan.

Mengenal Anemometer

Anemometer adalah perangkat yang digunakan untuk mengukur kecepatan angin dan merupakan komponen penting dalam sistem pemantauan cuaca. Penggunaan sensor ini relatif sederhana. Anemometer menghasilkan sinyal analog dengan tegangan yang berbanding lurus terhadap kecepatan angin yang terdeteksi. Pada panduan ini, kita menggunakan anemometer tipe three-cup (tiga mangkuk) seperti yang ditunjukkan pada gambar berikut.


Spesifikasi Teknis Anemometer

Setiap anemometer dapat memiliki karakteristik yang berbeda tergantung pada produsennya. Berikut adalah spesifikasi anemometer yang digunakan dalam panduan ini:

- Tegangan input: 12–24V DC

- Tegangan output: 0–5V

- Rentang pengukuran: 0–32,4 m/s

- Resolusi: ±0,3 m/s

Artinya, ketika sinyal analog berada pada 0V, kecepatan angin seharusnya bernilai 0 m/s. Namun, pada pengujian yang dilakukan, setelah sensor diberi catu daya dan melalui regulator tegangan, nilai output saat anemometer tidak bergerak terbaca sekitar 0,033V, bukan 0V.



Nilai tersebut kemudian dianggap sebagai pembacaan terendah ketika anemometer berada dalam kondisi diam. Anda juga disarankan melakukan hal yang sama dengan memeriksa nilai minimum yang terbaca dari sensor menggunakan multimeter.

 

Perlu diperhatikan bahwa karakteristik ini dapat berbeda tergantung produsen. Oleh karena itu, faktor tersebut harus dipertimbangkan saat mengonversi sinyal analog menjadi nilai kecepatan angin.

Pinout Anemometer

Anemometer ini memiliki tiga kabel utama:

 


Menghubungkan Anemometer ke ESP32 dan ESP8266

Anemometer memerlukan tegangan input minimal 12V, sehingga tidak dapat diberi catu daya langsung dari ESP32 maupun ESP8266. Oleh karena itu, diperlukan sumber daya eksternal untuk mengoperasikan sensor ini.



Sensor diberi catu daya menggunakan adaptor 12V yang terhubung ke anemometer melalui konektor power jack. Anda juga dapat menggunakan sumber daya lain yang sesuai dengan kebutuhan tegangan dan arus sensor.

Konversi Sinyal Data dari 5V ke 3.3V

Pada anemometer yang digunakan, sinyal keluarannya berada pada rentang 0–5V. Sementara itu, pin analog pada ESP32 dan ESP8266 hanya mampu membaca tegangan maksimum 3.3V. Karena itu, diperlukan konversi tegangan dari 5V menjadi 3.3V. Salah satu cara paling sederhana untuk melakukannya adalah dengan menggunakan rangkaian pembagi tegangan (voltage divider).

 

Catatan: Jika Anda menggunakan anemometer seperti produk dari Adafruit, langkah ini tidak diperlukan karena tegangan keluaran maksimalnya hanya sekitar 2V.

 

Pembagi tegangan adalah rangkaian sederhana yang berfungsi menurunkan tegangan input menjadi tegangan output yang lebih rendah. Dengan menggunakan dua buah resistor, kita dapat menghasilkan tegangan keluaran yang merupakan fraksi dari tegangan masuk. Rumus berikut dapat digunakan untuk menghitung nilai resistor yang diperlukan dalam rangkaian Anda:

 

Jika kita menggunakan resistor 1 kΩ (R1) dan 2 kΩ (R2), maka tegangan keluaran maksimum yang dihasilkan adalah sekitar 3.3V, sesuai dengan batas pembacaan maksimal pin analog pada ESP32.

Berikut adalah ilustrasi rangkaian pembagi tegangan, di mana 5V merupakan tegangan output maksimum dari pin data sensor:



Anda dapat menggunakan kombinasi nilai resistor lainnya, namun pastikan tegangan keluaran yang dihasilkan tetap berada dalam batas maksimum yang dapat diterima oleh mikrokontroler.

Perakitan Rangkaian: ESP32 dan ESP8266 dengan Anemometer


Komponen yang Dibutuhkan

Berikut adalah daftar perangkat yang diperlukan untuk mengikuti tutorial ini:

- Board ESP32 atau ESP8266

- Anemometer (Sensor Kecepatan Angin)

- Adaptor daya 12V DC

- DC power jack adapter

- Resistor 1 kΩ dan 2 kΩ

- Breadboard

- Kabel jumper

- Multimeter

Anda dapat menggunakan diagram berikut sebagai referensi untuk menghubungkan sensor ke board mikrokontroler. Pastikan seluruh pin GND terhubung secara bersama agar rangkaian bekerja dengan benar.

ESP32

Pada contoh ini, pin GPIO34 digunakan untuk membaca sinyal analog dari sensor. Namun, Anda dapat memilih pin analog lain yang sesuai pada ESP32.

 


ESP8266

Pada ESP8266 hanya tersedia satu pin analog, yaitu A0. Oleh karena itu, pembacaan sinyal analog dari anemometer wajib menggunakan pin A0 sebagai input.

 

 

Jika Anda menggunakan anemometer seperti produk Adafruit yang menghasilkan tegangan maksimum sekitar 2V, keluaran sensornya dapat dihubungkan langsung ke pin analog pada ESP tanpa memerlukan rangkaian pembagi tegangan.

 


ESP32 dengan Anemometer – Kode MicroPython untuk Mengukur Kecepatan Angin

Kode berikut berfungsi untuk membaca sinyal analog dari anemometer dan mengonversinya menjadi nilai kecepatan angin.

 

Anda dapat mengunggah kode ini ke ESP32. Pastikan untuk menyesuaikan beberapa variabel sesuai spesifikasi anemometer yang Anda gunakan.

 

# Rui Santos & Sara Santos - Random Nerd Tutorials

# Complete project details at https://RandomNerdTutorials.com/micropython-esp32-esp8266-anemometer-wind-sensor/

 

from machine import ADC, Pin

from time import sleep


# Constants

# GPIO pin connected to anemometer (ESP32)

anemometer_pin = 34

min_voltage = 0.033  # Voltage corresponding to 0 m/s

max_voltage = 3.3    # Voltage corresponding to 32.4 m/s (max speed when using voltage divider)

max_wind_speed = 32.4 # Maximum wind speed in m/s


# Conversion factors

mps_to_kmh = 3.6     # 1 m/s = 3.6 km/h

mps_to_mph = 2.23694 # 1 m/s = 2.23694 mph


# Set up the ADC

adc = ADC(Pin(anemometer_pin))

adc.atten(ADC.ATTN_11DB)  # Configure ADC to read full 3.3V range (11dB attenuation)

adc.width(ADC.WIDTH_12BIT)  # Set resolution to 12 bits (0-4095)


while True:

    # Read analog value from anemometer (ADC value between 0-4095)

    adc_value = adc.read()

    

    # Convert ADC value to voltage

    voltage = (adc_value / 4095.0) * 3.3

    

    # Ensure the voltage is within the anemometer operating range

    if voltage < min_voltage:

        voltage = min_voltage

    elif voltage > max_voltage:

        voltage = max_voltage

    

    # Map the voltage to wind speed

    wind_speed_mps = ((voltage - min_voltage) / (max_voltage - min_voltage)) * max_wind_speed


    # Convert wind speed to km/h and mph

    wind_speed_kmh = wind_speed_mps * mps_to_kmh

    wind_speed_mph = wind_speed_mps * mps_to_mph


    # Print wind speed

    print("Wind Speed:")

    print("{:.2f} m/s".format(wind_speed_mps))

    print("{:.2f} km/h".format(wind_speed_kmh))

    print("{:.2f} mph".format(wind_speed_mph))

    print() 

    

    sleep(1)

 

Kode untuk ESP8266 memiliki sedikit perbedaan. Scroll ke bawah untuk melihat contoh kode MicroPython yang telah disesuaikan.

ESP8266 NodeMCU dengan Anemometer – Kode MicroPython untuk Mengukur Kecepatan Angin

Kode berikut memiliki fungsi yang sama seperti pada ESP32, namun telah diadaptasi khusus untuk board ESP8266 NodeMCU.

 

# Rui Santos & Sara Santos - Random Nerd Tutorials

# Complete project details at https://RandomNerdTutorials.com/micropython-esp32-esp8266-anemometer-wind-sensor/

 

from machine import ADC, Pin

from time import sleep


# Constants

min_voltage = 0.033  # Voltage corresponding to 0 m/s

max_voltage = 3.3    # Voltage corresponding to 32.4 m/s (max speed when using voltage divider)

max_wind_speed = 32.4 # Maximum wind speed in m/s


# Conversion factors

mps_to_kmh = 3.6     # 1 m/s = 3.6 km/h

mps_to_mph = 2.23694 # 1 m/s = 2.23694 mph


# Set up the ADC

adc = ADC(0)


while True:

    # Read analog value from anemometer (ADC value between 0-1023)

    adc_value = adc.read()

    

    # Convert ADC value to voltage

    voltage = (adc_value / 1023.0) * 3.3

    

    # Ensure the voltage is within the anemometer operating range

    if voltage < min_voltage:

        voltage = min_voltage

    elif voltage > max_voltage:

        voltage = max_voltage

    

    # Map the voltage to wind speed

    wind_speed_mps = ((voltage - min_voltage) / (max_voltage - min_voltage)) * max_wind_speed


    # Convert wind speed to km/h and mph

    wind_speed_kmh = wind_speed_mps * mps_to_kmh

    wind_speed_mph = wind_speed_mps * mps_to_mph


    # Print wind speed

    print("Wind Speed:")

    print("{:.2f} m/s".format(wind_speed_mps))

    print("{:.2f} km/h".format(wind_speed_kmh))

    print("{:.2f} mph".format(wind_speed_mph))

    print() 

    

    sleep(1)

 

Cara Kerja Kode

Pertama, kita mengimpor modul-modul yang diperlukan. Kelas ADC dan pin dari modul machine digunakan untuk mengonfigurasi GPIO sebagai pin ADC.

 

from machine import ADC, Pin

from time import sleep

 

Selanjutnya, tentukan pin yang digunakan untuk membaca data sensor, nilai tegangan minimum dan maksimum yang dihasilkan sensor, serta nilai kecepatan angin maksimum. Pada contoh penggunaan ESP32, pembacaan sinyal analog dari anemometer dilakukan melalui pin GPIO34.

 

# GPIO pin connected to anemometer (ESP32)

anemometer_pin = 34

min_voltage = 0.033  # Voltage corresponding to 0 m/s

max_voltage = 3.3    # Voltage corresponding to 32.4 m/s (max speed when using voltage divider)

max_wind_speed = 32.4 # Maximum wind speed in m/s

 

Untuk ESP8266, satu-satunya pin analog yang tersedia adalah A0. Karena itu, pin tersebut harus diteruskan ke objek ADC() pada bagian kode berikutnya, seperti contoh berikut:

 

adc = ADC(0)

 

Selanjutnya, ditentukan faktor konversi yang digunakan untuk mengubah satuan kecepatan angin dari m/s ke km/jam dan mph.

 

# Conversion factors

mps_to_kmh = 3.6     # 1 m/s = 3.6 km/h

mps_to_mph = 2.23694 # 1 m/s = 2.23694 mph

 

Buat objek ADC pada GPIO yang digunakan untuk membaca sinyal analog dari sensor. Contohnya pada ESP32 adalah sebagai berikut:

 

adc = ADC(Pin(anemometer_pin))

 

Dan untuk ESP8266, konfigurasi objek **ADC** dilakukan dengan cara berikut:

 

adc = ADC(0)

 

Saat menggunakan ESP32, kita juga perlu menambahkan dua baris kode berikut.

 

Baris pertama mengatur agar pembacaan tegangan berada pada rentang 0 hingga 3.3V, yang dicapai dengan menetapkan rasio atenuasi sebesar 11 dB.

 

Baris kedua mengonfigurasi resolusi ADC menjadi 12-bit, sehingga nilai yang dibaca pada pin analog berada dalam kisaran 0 hingga 4095.

 

Setelah itu, program memasuki while loop yang akan mengambil nilai kecepatan angin setiap satu detik.

 

Langkah pertama dalam loop adalah membaca nilai ADC, kemudian mengonversinya menjadi nilai tegangan. Pada ESP32, nilai maksimum 4095 mewakili tegangan sebesar 3.3V.

 

while True:

    # Read analog value from anemometer (ADC value between 0-4095)

    adc_value = adc.read()

 

Dengan demikian, nilai ADC tersebut dapat dikonversi menjadi tegangan menggunakan baris kode berikut:

 

# Convert ADC value to voltage

voltage = (adc_value / 4095.0) * 3.3

 

Selanjutnya, terdapat kondisi yang digunakan untuk memastikan bahwa nilai yang terbaca berada dalam rentang yang telah ditentukan.

 

# Ensure the voltage is within the anemometer operating range

if voltage < min_voltage:

    voltage = min_voltage

elif voltage > max_voltage:

    voltage = max_voltage

 

Selanjutnya, tegangan hasil pembacaan dapat dipetakan dengan mudah ke nilai kecepatan angin menggunakan rumus berikut:

 

# Map the voltage to wind speed

wind_speed_mps = ((voltage - min_voltage) / (max_voltage - min_voltage)) * max_wind_speed

 

Kemudian, nilai kecepatan angin tersebut dikonversi ke dalam satuan km/jam dan mph.

 

 # Convert wind speed to km/h and mph

 wind_speed_kmh = wind_speed_mps * mps_to_kmh

 wind_speed_mph = wind_speed_mps * mps_to_mph

 

Terakhir, hasil perhitungan tersebut ditampilkan (dicetak) ke output.

 

# Print wind speed

print("Wind Speed:")

print("{:.2f} m/s".format(wind_speed_mps))

print("{:.2f} km/h".format(wind_speed_kmh))

print("{:.2f} mph".format(wind_speed_mph))

print() 

 

Demonstrasi

Jalankan atau unggah kode ke board Anda menggunakan Thonny IDE.

 


Pada MicroPython Shell, Anda akan melihat data kecepatan angin yang berhasil dibaca oleh sistem.



Anda mungkin perlu melakukan kalibrasi tambahan pada sensor untuk memperoleh hasil pengukuran yang lebih akurat.

 

 

 

 

 

 

 

 

 

Siap Untuk Membuat Proyek Impianmu Menjadi Kenyataan?

Klik di sini untuk chat langsung via WhatsApp dan dapatkan dukungan langsung dari tim ahli kami! 

 

0 on: "Panduan Lengkap Menghubungkan Sensor Anemometer ke ESP32/ESP8266 Menggunakan MicroPython"