[TUTORIAL] Menggunakan Multiplekser pada ESP8266 (NodeMCU)
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
Komentar
sensor kedua tidak tebaca
sensor kedua tidak tebaca? di monitor serial tidak terjadi perubahan
Mas itu memang disambung ke
Mas itu memang disambung ke vin ya?
Punya saya kok gak terbaca nilai analog sensornya