Implementasi Magnetic Sensor pada Warung Pintar

Irwan Syarifudin
4 min readMay 2, 2021

--

Jadi alat ini diterapin diwarung supaya bisa mendeteksi kapan warung itu lagi buka atau lagi ditutup. Karena itu, dimanfaatkan sensor magnet sebagai salah satu indikator yang akan memberikan status operasional warung (buka/tutup).

Magnetic Sensor

Contoh jenis magnetic sensor yang digunakan untuk warung

Magnetic Sensor ini bekerja dengan cara membaca nilai tegangan yang dihasilkan dari GPIO Raspi. Apabila dua keping sensor magnetic saling terbuka maka akan menghasilkan tegangan pull_up atau bernilai 1 (HIGH). Jika berhimpit tegangan akan pull_down atau 0. Dalam keadaan terbuka atau kedua keping sensor berjauhan nilai default tegangan bernilai HIGH, jika merapat atau kedua keping saling bertemu maka nilai default tegangan bernilai LOW.

Pada sensor ini nilai LOW menandakan bahwa warung sedang “Buka”, jika HIGH warung sedang “Tutup”.

Cara kerja Magnetic Sensor

Sesuai prinsip kerjanya, apabila dua buah plat dalam sensor bertemu (closed) akan menghasilkan tegangan (HIGH), jika terbuka kan menghasilkan tegangan (LOW).

Magnetic sensor terdiri dari dua output kabel yaitu vcc(+) dan ground(-). Untuk kabel vcc(+) dari sensor bisa disambungkan langsung ke pin GPIO 25 raspberry pi dan kabel ground disambungkan ke ground raspberry. Nilai sensor akan bernilai valid dan menyatakan kondisi sebenarnya dari warung selama sensor tersambung dengan pin GPIO raspberry yang masih dalam keadaan menyala.

Wiring magnetic sensor pada raspberry

Sebenarnya, untuk menghasilkan nilai tegangan saat sensor ini bekerja dibutuhkan sebuah resistor. Namun, pin GPIO cukup canggih dan lewat fasilitasi library Rpi.GPIO sudah dapat di set pin untuk melakukan pull up dan pull_down tegangan.

Dibawah ini contoh inisialiasi untuk setup GPIO beserta pengaturan tegangan up and down nya.

GPIO.setup(25, GPIO.IN, pull_up_down=GPIO.PUD_UP)

Implementasi

In case, implementasi magnetic sensor dilakukan pada raspberry yang sudah terdaftar dalam firebase dengan mac_address b8:27:eb:16:51:df. Sensor magnetic ini dikoneksikan pada pin gpio 25 Raspberry. Kalo belum hafal letak GPIO dan penomorannya bisa lihat link ini https://pinout.xyz .

Selanjutnya, lakukan instalasi library Rpi.GPIO untuk raspberry.

sudo apt-get install python-dev python-rpi.gpio

Terdapat 4 file yang akan digunakan untuk pengujian sensor magnetic, yaitu:

  • just_read_sensor.py : digunakan hanya untuk menguji nilai output dari fungsi kerja sensornya saja, apakah bernilai HIGH atau LOW ketika dua keping sensor terbuka atau dihimpitkan.
  • read_sensor.py : Ini kodingan versi lengkap untuk menguji dan mengirim data nilai yang terbaca sensor kemudian dikirim ke firebase.
  • .env : berfungsi untuk mengambil konfigurasi dengan kunci yang tidak bisa dibaca lagi sama orang lain, dari sisi keamanan dengan adanya file ini cukup penting.
  • key.json : Untuk mengirim nilai sensor yang terbaca ke firebase kita perlu melakukan autentikasi untuk akses firebase terlebih dahulu. Hal ini bisa dilakukan dengan cara menambahkan beberapa key-parameter dalam file key.json. Berikut contoh konfigurasi file key.json yang digunakan :

Parameter yang ada dalam key.json disesuaikan dengan setting-an yang ada difirebase kalian.

Pengujian pertama, kita uji fungsi kerja sensor dengan script yang cukup sederhana berbasis Python. Yaitu untuk mendeteki apakah nilai tegangan (HIGH atau LOW) yang dihasilkan sensor bekerja pada pin GPIO.

Pengujian kedua, kita mencoba mengirim nilai hasil pendeteksian sensor ke firebase. Variabel yang akan ter-update pada firebase diantaranya sensor_value, time_operational, dan operational_status.

Fungsi submit_sensor() yang berada dalam script read_sensor.py yakan mengganti nilai dari 3 variable diatas.

  • sensor_value =memberikan output high / low
  • time_operational =memberikan keterangan tanggal dan waktu
  • operational_status = memberikan status warung buka atau tutup

Jika pengiriman data ke firebase berhasil akan muncul keterangan ‘Push data sensor success !’ apabila gagal muncul keterangan“Fail !’’. Keterangan tersebut dijalankan oleh fungsi update_sensor() yang terdapat dalam script read_sensor.py. Berikut penampakan scriptnya :

Selanjutnya, coba kita lihat perubahan nilai dari 3 variable sensor yaitu sensor_value, time_operational, dan operational_status yang dikirim ke firebase tiap kali magnetic sensor bekerja.

Hasilnya seperti berikut:

*Bagian blok warna biru abaikan saja, itu informasi sensitive :D

Sesuai gambar diatas status operasional “Warung lagi ditutup” dikarenakan dua buah keping magnet berhimpit sehingga menghasilkan output tegangan HIGH.

Sekian dari saya. Selamat bereksperimen !

--

--