Anda di sini

Elektronika

[TUTORIAL] Menggunakan Multiplekser pada ESP8266 (NodeMCU)

Kusuma Wardana - 07 Juli 2017 18:49:59 2

Pendahuluan

Sebelumnya, kita telah membahas bagaimana menggunakan Multiplekser pada Arduino. Dasar teori multiplekser secara detail telah kita bahas pada tutorial tersebut. Agar mempermudah pemahaman kita, simak tutorialnya di sini bagi yang belum membaca.

Pada tutorial ini, kita akan menggunakan ESP8266 yang telah terintegrasi pada papan NodeMCU. NodeMCU (ESP8266) hanya dilengkapi dengan SEBUAH ADC, yang diletakkan di pin A0. Lihatlah Gambar 1 di bawah ini.

Gambar 1. NodeMCU pinout diagram

Kondisi ini mengindikasikan bahwa kita hanya dapat menggunakan sebuah sensor analog saja untuk NodeMCU. Untuk mengatasi masalah ini, penggunaan Multiplekser menjadi solusi terbaik. Karena tutorial sebelumnya kita telah membahas secara detail mengenail multiplekser, saat ini kita akan langsung saja melakukan percobaan.

Konfigurasi Hardware

Konfigurasilah hardware seperti pada Gambar 2. Amatilah bahwa IC4051 membutuhkan sumber tegangan pada pin VCC sebesar 5 Volt. Karena NodeMCU kita terhubung ke sumber luar melalui port MicroUSB ke port USB komputer (atau sumber eksternal lainnya), maka pin Vin juga akan bertegangan 5 Volt. Namun demikian, perlu diamati bahwa sumber tegangan potensiometer (yang bertindak sebagai sensor) harus memiliki referensi sebesar 3,3 Volt.

Gambar 2. Rangkaian hardware

Pemrograman NodeMCU

Bukalah IDE Arduino. Lakukanlah setting board dan Port COM yang digunakan. Pastikan papan NodeMCU yang dipilih. Kemudian, ketik dan unggahlah program berikut:

//sesuikan posisi pin select
int s0 = D3;
int s1 = D2;
int s2 = D1;
 
//gunakan A0 sebagai input
int analogPin = A0;
 
//variabel untuk menyimpan nilai input
int nilaiInput = 0;
 
void setup() {
  //jadikan pin select sebagai output
  pinMode(s0, OUTPUT);
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);
 
  //aktifkan komunikasi serial
  Serial.begin(9600);
}
 
void loop() {
  //memilih y0 sebagai input
  digitalWrite(s0,LOW);
  digitalWrite(s1,LOW);
  digitalWrite(s2,LOW);
  nilaiInput = analogRead(analogPin);
  Serial.print(nilaiInput);
  Serial.print(" ");
  delay(100);
    
  //memilih y1 sebagai input
  digitalWrite(s0,HIGH);
  digitalWrite(s1,LOW);
  digitalWrite(s2,LOW);
  nilaiInput = analogRead(analogPin);
  Serial.println(nilaiInput);
  delay(100);  
}

Amatilah hasilnya menggunakan Serial Plotter pada IDE Arduino. Bagi yang belum paham menggunakan Serial Plotter, simak tutorialnya di sini. Hasilnya diperlihatkan pada Gambar 3.

Gambar 3. Hasil yang ditampilkan pada Serial Plotter

Gambar di atas menampilkan dua jenis sensor yang diwakili oleh potensiometer. Hasil yang ditampilkan adalah posisi masing-masing potensiometer (tidak diputar-putar). Untuk melakukan uji coba, kita bisa memutar-mutar posisi setiap potensiometer.

Kita dapat memodifikasi koding di atas agar konfigurasi pin Select menjadi lebih mudah. Kita bisa menjadikan konfigurasi dari pin Select tersebut ke dalam sebuah fungsi. Kita dapat memilih input mana (y0-y7) yang ingin dimasukkan ke ESP kita.

Ketiklah program berikut, dan hasilnya akan sama dengan program sebelumnya.

//sesuikan posisi pin select
int s0 = D3;
int s1 = D2;
int s2 = D1;

//gunakan A0 sebagai input
int analogPin = 0;

//variabel untuk menyimpan nilai input
int nilaiInput = 0;

void setup() {
  //jadikan pin select sebagai output
  pinMode(s0, OUTPUT);
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);

  //aktifkan komunikasi serial
  Serial.begin(9600);
}

void loop() {
  inputMultiplekser(0);
  nilaiInput = analogRead(analogPin);
  Serial.print(nilaiInput);
  Serial.print(" ");
  
  inputMultiplekser(1);
  nilaiInput = analogRead(analogPin);
  Serial.println(nilaiInput);
  delay(100);
}


void inputMultiplekser(int y){
  if (y==0){
    digitalWrite(s0,LOW);
    digitalWrite(s1,LOW);
    digitalWrite(s2,LOW);
  }
  else if (y==1){
    digitalWrite(s0,HIGH);
    digitalWrite(s1,LOW);
    digitalWrite(s2,LOW);
  }
  else if (y==2){
    digitalWrite(s0,LOW);
    digitalWrite(s1,HIGH);
    digitalWrite(s2,LOW);
  }
  else if (y==3){
    digitalWrite(s0,HIGH);
    digitalWrite(s1,HIGH);
    digitalWrite(s2,LOW);
  }
  else if (y==4){
    digitalWrite(s0,LOW);
    digitalWrite(s1,LOW);
    digitalWrite(s2,HIGH);
  }
  else if (y==5){
    digitalWrite(s0,HIGH);
    digitalWrite(s1,LOW);
    digitalWrite(s2,HIGH);
  }
  else if (y==6){
    digitalWrite(s0,LOW);
    digitalWrite(s1,HIGH);
    digitalWrite(s2,HIGH);
  }
  else if (y==7){
    digitalWrite(s0,HIGH);
    digitalWrite(s1,HIGH);
    digitalWrite(s2,HIGH);
  }
  //jika input bukan 0-7, maka jadikan y0
  else {
    digitalWrite(s0,LOW);
    digitalWrite(s1,LOW);
    digitalWrite(s2,LOW);
  }
}

Demikian tutorial ini. Semoga bermanfaat Smile

33.221
Image

Kusuma Wardana

I Nyoman Kusuma Wardana, yang akrab dipanggil Kusuma, lahir dan besar di Bali. Ia tinggal di Desa Wisata Ubud, dan lebih banyak melaksanakan aktivitasnya di Denpasar. Profesinya adalah sebagai staf pengajar di Jurusan Teknik Elektro, Politeknik Negeri Bali. Saat ini Ia menjadi salah satu penulis di tutorkeren.com.

Artikel Menarik Lainnya

Komentar

sensor kedua tidak tebaca? di monitor serial tidak terjadi perubahan

Mas itu memang disambung ke vin ya?

Punya saya kok gak terbaca nilai analog sensornya

Mari Gabung

Halo Emo 51 , Ada yang ingin disampaikan? Jangan sungkan untuk gabung diskusi ini. Silahkan Login dulu atau Daftar baru.