GPS Tracker MQTT. Part 1: Hardware – Sim808, Arduino Uno

GPS atau Global Positioning Sistem adalah suatu cara untuk mengetahui posisi koordinat di peta. Dengan GPS, kita bisa melacak posisi dari suatu alat, kendaraan, mobil, motor, bahkan kita sendiri di peta.

Satelit-satelit GPS yang mengitari bumi memancarkan sinyal yang dapat ditangkap di bumi dan dikalkulasi untuk menghitung posisi Lattitude dan Longitude serta kecepatan sebuaah alat penerima GPS.

Coba saja buka aplikasi Maps di handphone dan kita dapat mengetahui posisi di peta. Itu berkat teknologi GPS.

Pada project kali ini, kita akan mencoba membuat sebuah sistem end to end GPS tracker, mulai alat penerima GPS nya sampai dengan tampilan antar muka pengguna / user interface yang menampilkan titik lokasi alat tersebut.

Sistem ini terbagi menjadi 3 bagian besar, yaitu:

  1. Hardware / Device
    • Tugasnya menerima sinyal GPS dari satelit, kemudian mengirimkan data posisi device ke Backend
  2. Backend
    • Bertugas menerima data posisi dari device, mengatur antrian pesan, kemudian menyimpannya ke dalam database
  3. Frontend
    • Frontend ini yang akan mengatur tampilan dari posisi device ke peta

Pembahasan akan kita bagi menjadi beberapa bagian artikel agar tidak terlalu panjang. Pada bagian ini akan kita bahas tentang hardware

Perancangan Alat

Secara sederhana device atau alat yang akan kita bangun mempunyai tugas sebagai berikut:

  1. Menerima sinyal GPS dari satelit
  2. Mengolah data posisi device dari GPS
  3. Mengirimkan data posisi menggunakan protokol MQTT melalui GPRS

Hardware

Untuk menyelesaikan tugas tersebut, maka kita membutuhkan komponen-komponen hardware sebagai berikut:

  1. Modul Sim808
  2. Arduino Uno
  3. Li-Ion Baterai
  4. Kabel Jumper
  5. Sim Card aktif (disini kami coba dengan kartu three)

Antara Arduino Uno dan Modul GPS SIM808 berkomunikasi melalui Software Serial, jadi tinggal hubungkan pin serial Rx Tx antart Arduino dengan Modul GPS SIM808

Koneksinya sangat mudah dan simple sebagai berikut:

  • Pin 10 Arduino ke pin RX SIM808
  • Pin 11 Arduino ke pin TX SIM808
  • Pin VCC & GND Arduino ke VCC & GND SIM808
  • Hubungkan baterai Li-Ion ke pin di SIM808
GPS Tracker

Software

Agar hardware-hardware tersebut dapat bekerja sesuai keinginan kita, maka kita perlu memprogram hardware tersebut.

Otak dari alat kita adalah microcontroller yang ada di dalam Arduino Uno.

Untuk memprogram Arduino ini, maka kita membutuhkan PC atau Laptop dengan software yaitu

Sebenarnya bisa juga memprogram Arduino tanpa Laptop/PC, langsung dengan hanphone, tapi belum akan kita bahas disini

Firmware

Waktunya coding.. :D

Coding yang dibuat adalah firmware yang akan ditanamkan ke ATMega di Arduino Uno, yang merupakan controller dari sistem ini.

Secara garis besar, program yang akan kita buat ini sangatlah sederhana, yaitu

Mengirimkan Data Posisi Alat Setiap Menit

Namun untuk mengimplementasikannya juga tidak sesimple itu, :D

Kita akan bahas satu-persatu

AT-Command

Arduino Uno dan module GPS GPRS SIM808 adalah module yang terpisah.

Jadi, pertama yang perlu kita ketahui adalah bagaimana Arduino dapat berkomunikasi dengan SIM808, melalui apa? dan menggunakan bahasa apa?

Komunikasi antara Arduino dengan Modul GPS GPRS menggunakan komunikasi serial. Rx dan TX.

Kemudian bahasa yang digunakan juga harus sama, artinya jika Arduino mengirimkan suatu perintah, SIM808 harus dapat memahaminya. Maka digunakanlah perintah AT-COMMAND (sesuai standar modem).

Jika perintah itu dikenali oleh SIM808, maka akan mengembalikan jawaban atas AT-Command tersebut.

Contoh:

Kirimkan perintah

Jika komunikasi serial ok, SIM808 akan mengembalikan dengan 

Contoh:

Perintah untuk mengambil data GPS

Module GPS SIM808 akan mengembalikan dengan nilai 

Ada banyak lagi perintah AT command bisa dilihat dari dokumen masing-masing module sesuai serinya.

Library TinyGSM

Untuk mendapatkan data lokasi Lat Long pun tidak begitu saja mengirimkan satu command, ada beberapa rangkaian AT-Command yang perlu dikirimkan. Mulai dari mengecek status modem, cek sinyal, baru ambil posisi dan sebagainya.

Nah, dengan library TinyGSM, kita hanya cukup memanggil satu fungsi saja. Librari tersebut yang akan mengirimkan AT-Command ke SIM808.

Library ini juga mendukung pengiriman menggunakan protokol MQTT sehingga tidak perlu repot-repot menggunakan banyak Library.

MQTT

Selanjutnya, setelah didapatkan data posisi Lat Long dari modul GPS, maka data tersbut akan dikirimkan menggunakan GPRS ke server, dan proses pengirimannya akan menngunakan protokol MQTT.

Apa itu MQTT?

MQTT atau Message Queu Telemetry Transport adalah suatu protokol pengiriman data yang populer untuk pengiriman data-data sensor. Dengan MQTT akan sangat menghemat jumlah data yang dikirim dibandingkan http. Termasuk di dalamnya ada mekanisme antrian pesan sehingga tidak ada pesan yang hilang.

MQTT menggunakan konsep topic dengan publisher dan subcriber. Suatu topic dapat kita ikuti dengan melakukan subscribe, kita dapat juga mengirimkan data ke topic tertentu dengan malakukan publish.

Contoh dalam project ini, kita akan menpublish ke topik Posisi, Lat Long

Untuk lebih jelasnya tentang MQTT bisa dibaca disini.

Flow Program

Source code bisa dilihat di bawah.

Mungkin terlihat panjang, namun sebenarnya flow programnya cukup sederhana.

Bagian setup (dijalankan di awal, sekali):

  • setup komunikasi serial dengan modem sim808
  • setup & init GPRS
  • setup & init GPS

Bagian loop (dijalankan berulang-ulang):

  • cek koneksi dengan broker MQTT setiap 10 detik
  • mempublish data posisi Lat Long setiap 60 detik

dengan menggunakan library TinyGSM sangat mudah

Upload Program

Pertama perlu menambahkan beberapa library ke dalam Arduino IDE, yaitu:

Untuk menginstall Library dari Arduino IDE -> Tools -> Library Manager

Dan berikut source codenya:

Silahkan di download, jika ada yang belum terlalu paham bisa ditanyakan di kolom komentar.

Next

Part ini baru sepertiga part untuk seluruh sistem dapat berjalan.

Checkpoint untuk bagian ini adalah kita bisa mengirimkan data posisi dari alat penerima GPS ke Server

Untuk memproses data di server dan menampilkankannya di peta akan dilanjutkan di artikel selanjutnya.

Pastikan untuk subscribe untuk mengikuti update selanjutnya dari project ini.

Terimakasih, semoga bermanfaat…


Artikel ini dipersembahkan oleh rumahiot.id.
Gabung di channel telegram Rumah IoT Indonesia @rumahiot.id untuk berdiskusi dan update seputar teknologi Internet of Thing. https://t.me/rumahiotid

Febrianto

Penulis Senior Ndoware.com yang lagi suka ngulik Arduino dan IoT. Hoby bermain game baik itu di komputer, gadget maupun di dunia nyata :)

Tinggalkan Balasan

This site uses Akismet to reduce spam. Learn how your comment data is processed.