Official StoreTekan tombol di atas untuk membeli semua alat dan bahan eksperimen di web ini

Membuat Audio Frequency Meter dengan NodeMCU (ESP8266 ESP12) dan Sensor Suara Max4466

Pada artikel yang lalu sudah saya sajikan bagaimana membuat Audio Frequency Meter (alat pengukur frekuesi suara) dengan Arduino (Uno). Untuk mem-porting-nya ke NodeMCU ternyata tidak bisa lakukan, karena ada perbedaan karakteristik hardware yang didukung oleh library yang kita gunakan (FreqMeasure). Library ini secara khusus menggunakan special function input clock (CLK0) pada pin 8 Arduino untuk menghitung frekuensi yang masuk. Sayangnya, hardware NodeMCU (ESP8266 tipe ESP-12E) berbeda dengan arsitektur Arduino Uno yang berbasis mikrokontroller ATMEGA328. Jadi kita kita akan coba menggunakan pendekatan lain dengan library yang berbeda

Menghitung Frekuensi di NodeMCU dengan Library ArduinoFFT

Kali ini kita akan coba menghitung frekuensi menggunakan library ArduinoFFT (Fast Fourier Transform). Kelebihan menggunakan library ini adalah tidak terpakunya penggunaan pin I/O hardware agar library dapat bekerja. Metode dari library ini cukup menggunakan salah satu pin analog sebagai inputan untuk sinyal frekuensi yang akan diukur. Baik, silahkan diunduh dulu library ini di sini. Tambahkan library ke software Arduino IDE Anda melalui menu Sketch – Include Library – Add .Zip Library

Percobaan Audio frekuency meter NodeMCU ESP8266 ESP12

Alat dan bahan untuk percobaan membuat alat pengukur frekuensi dengan esp8266 (NodeMCU) ini yaitu:

  • NodeMCU ESP-12E, beli (Lolin) atau beli (Amica)
  • kabel jumper female to female, beli (20cm), beli (10 cm)
  • sensor suara (sound sensor) MAX4466, beli
  • buzzer aktif (opsional, hanya untuk generate frekuensi suara), beli

Setelah semua hardware siap, silahkan rangkai semuanya seperti gambar di bawah

Kemudian upload sketch/script berikut ke NodeMCU (ESP8266/ESP12E) Anda

#include "arduinoFFT.h"

#define SCL_INDEX 0x00
#define SCL_TIME 0x01
#define SCL_FREQUENCY 0x02
#define SCL_PLOT 0x03

arduinoFFT FFT = arduinoFFT();

const uint16_t samples = 64; //This value MUST ALWAYS be a power of 2
const double signalFrequency = 1000;
const double samplingFrequency = 5000;
const uint8_t amplitude = 100;
/*
These are the input and output vectors
Input vectors receive computed results from FFT
*/
double vReal[samples];
double vImag[samples];

void setup()
{
Serial.begin(115200);
Serial.println("Ready");
}

void loop()
{
/* Build raw data */
double cycles = (((samples-1) * signalFrequency) / samplingFrequency); //Number of signal cycles that the sampling will read
for (uint16_t i = 0; i < samples; i++)
{
vReal[i] = analogRead(0);
vImag[i] = 0.0; //Imaginary part must be zeroed in case of looping to avoid wrong calculations and overflows
}

FFT.Windowing(vReal, samples, FFT_WIN_TYP_HAMMING, FFT_FORWARD);
FFT.Compute(vReal, vImag, samples, FFT_FORWARD);
FFT.ComplexToMagnitude(vReal, vImag, samples);
double x = FFT.MajorPeak(vReal, samples, samplingFrequency);
Serial.print("Freq:");Serial.println(x, 6);
delay(1000);

}

Hasilnya dapat Anda lihat di Serial Monitor sebagai berikut

Bagi yang masih bingung bisa melihat video demo untuk percobaan di youtube, seperti pada video di bawah

Demikian sedikit tutorial bagaimana mengukur frekuensi audio menggunakan NodeMCU ESP8266 dan sensor suara Max4466. Alat ini rencananya saya gunakan untuk membuat semacam sensor jika kwhmeter PLN prabayar mulai berbunyi karena akan habis pulsanya. Jadi penggunanya nantinya akan dapat notifikasi melalui telegram jika pulsa/token kwhmeter mulai habis

0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x