Teknik Elektro LinksBarrier-Gate & Turnstile Interface, Thermostat, Relay Driver, Microcontroler Board

WIFI-2KEYS – Modul Inputan Dua Tombol Dengan Koneksi Wi-Fi

Eksperimen lagi, yuk? Kali ini saya akan membuat sebuah modul sederhana yakni WIFI-2KEYS.

Baca juga: Display Nomor Antrian 3-Digit Dengan Koneksi Wi-Fi

WIFI-2KEYS adalah modul inputan 2 tombol (push-button) dengan koneksi Wi-Fi. Modul ini dapat diaplikasikan pada sistem antrian wireless sebagai unit tombol call/recall.

Eksperimen ini tidak melibatkan banyak komponen, eksperimen ini hanya membutuhkan beberapa komponen saja, yakni antara lain:

  • board ESP8266 – saya menggunakan board D1 Mini yang berbasis ESP-12
  • 2 buah tombol (merah dan hijau) + 2 resistor sebagai resistor pull-up
  • 1 buah LED + resistor
  • beberapa kabel jumper

Berikut ini adalah foto sistemnya.

wifi2keys_proto

Sebagai pin untuk membaca status tombol, saya dedikasikan pin D2 (GPIO4) untuk TOMBOL-1 dan D1 (GPIO5) untuk TOMBOL-2. Dan untuk mengontrol LED, saya dedikasikan pin D0 (GPIO16).

Prinsip Kerja

Skenario atau prinsip kerja modul WIFI-2KEYS adalah sebagai berikut:

  • kontroler membaca status penekanan tombol secara kontinyu
  • jika tombol ditekan, maka kontroler akan mengalakan LED dan menunggu sampai tombol dilepas
  • setelah tombol dilepas, kontroler akan mengirimkan data ke client yang terhubung, adapun datanya adalah sebagai berikut:
    • “:WIFI2KEYS-00-PB1;” jika TOMBOL-1 aktif
    • “:WIFI2KEYS-00-PB2;” jika TOMBOL-2 aktif
  • 00 merupakan alamat dari unit WIFI-2KEYS, hal ini penting untuk membedakan unit mana yang mengirimkan data (tombolnya diaktifkan). Contoh aplikasinya adalah sebagai unit tombol/keypad Call dan Recall pada sistem antrian.

Kode Program

Pada eksperimen ini, Forth masih menjadi andalan saya. Berikut adalah cuplikan kode program WIFI-2KEYS, yakni bagian (task) task-timer dan task-led yang berfungsi mengedipkan LED pada board WeMos D1 Mini secara berkala, dan bagian (task) terpenting yakni tombol-handler yang memonitor penekanan tombol dan mengirim data/pesan sesuai dengan tombol yang ditekan oleh user.

variable: cntr
0 cntr !
0 task: task-led
0 task: task-timer

: timer-led
  activate
  begin
    1 cntr +!
    5 ms
    pause
    again
  deactivate
;

: imalive
  activate
  begin
    cntr @
    2 <= if 2 1 gpio-write then
    cntr @
    20 > if 2 0 gpio-write then
    cntr @
    22 > if 0 cntr ! then
    pause
  again
  deactivate
;

0 task: task-tombol
: tombol-handler
  activate
  begin
    4 gpio-read
    0= if
      16 0 gpio-write
      50 ms
      begin 4 gpio-read until
      println: ":WIFI2KEYS-00-PB1;"
      16 1 gpio-write
    then

    5 gpio-read
    0= if
      16 0 gpio-write
      50 ms
      begin 5 gpio-read until
      println: ":WIFI2KEYS-00-PB2;" 
      16 1 gpio-write
    then
    pause
  again
  deactivate
;

: blink ( -- )
  200 16 1 200 16 0 gpio-write ms gpio-write ms
;

: PING ( -- )
  blink blink blink
  println: ":WIFI2KEYS-00-PONG;"
;

task-timer timer-led
task-led imalive
task-tombol tombol-handler

Penjelasan Kode Program

tombol-handler adalah task yang secara kontinyu melakukan pengecekan terhadap kondisi pin GPIO4 dan GPIO5. Jika tombol ditekan, maka akan terjadi perubahan logika pada pin-pin tersebut dari HIGH menjadi LOW.

Jika user menekan tombol, maka LED status akan menyala dan akan tetap menyala selama tombol belum dilepas. Sesaat setelah tombol dilepas, maka LED akan mati dan WIFI-2KEYS akan mengirimkan data kepada client yang terhubung melalui TCP Socket.

Modul WIFI-2KEYS juga menyediakan fungsi PING yang berfungsi untuk mengecek koneksi. Fungsi ini dapat diaktifkan client dengan mengirimkan perintah PING (string “PING” diakhiri dengan CRLF).

Jika fungsi ini dipanggil, maka modul akan mengedipkan LED status 3 kali dan mengirimkan balasan kepada client: “:WIFI2KEYS-00-PONG;”.

Pengujian

Pengujian saya lakukan dengan melakukan koneksi ke modul WIFI-2KEYS melalui komputer dengan menggunakan program aplikasi Hyperterminal dan juga menggunakan program aplikasi sederhana yang saya buat menggunakan VB.NET.

Nah, berikut ini adalah screenshot pengujian WIFI-2KEYS menggunakan Hyperterminal.

wifi2keys_term

WIFI-2KEYS VB.NET

Dan berikut ini adalah kode program pengujian WIFI-2KEYS versi VB.NET beserta screenshot program ketika running.

Public Class Form1

 Private Sub AxWinsock1_DataArrival(ByVal sender As System.Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent) Handles AxWinsock1.DataArrival
 Dim s As String

 AxWinsock1.GetData(s, vbString, 100)
 TextBox2.Text = TextBox2.Text & s
 End Sub

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 AxWinsock1.Connect()
 End Sub

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 AxWinsock1.SendData("PING" & vbCrLf)
 End Sub

 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
 Close()
 End Sub
End Class

Ketika dijalankan, program akan langsung melakukan koneksi ke modul WIFI-2KEYS melalui alamat IP 192.168.1.100 dengan port 2017.

Selanjutnya, program akan menunggu data yang diterima dari modul WIFI-2KEYS dan menampilkannya pada TextBox.

wifi2keys_vbnet

Kesimpulan

Dari hasil pengujian yang alhamdulillaah sangat baik, maka dapat saya simpulkan bahwa modul WIFI-2KEYS yang berfungsi sebagai tombol/keypad wireless (Wi-Fi) telah bekerja dengan baik.

Modul ini dapat diaplikasikan sebagai unit Wi-Fi Remote atau sebagai unit Wi-Fi Keypad untuk tombol CALL / RECALL pada sistem antrian.

Modul dapat dikembangkan lebih lanjut sesuai kebutuhan aplikasi. Contoh pengembangan yang saat ini sedang saya lakukan adalah sebagai Wi-Fi Sensor.

Baca juga: Eksperimen Monitoring Suhu Dengan Koneksi Wi-Fi

Nah, semoga laporan singkat eksperimen WIFI-2KEYS ini bermanfaat.

Selamat berkarya.

 

Add a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>