Scoutify : Smart GPS Tracker

by farrelnrt03 in Circuits > Microcontrollers

483 Views, 2 Favorites, 0 Comments

Scoutify : Smart GPS Tracker

Logo Scoutify Instructables.png

Anggota :

Farrel Zephaniah Lie (2540125390)

Jeremy Andre Muljono (2540128184)

Matthew Filbert Tander (2501994241)


Introduction

Dengan kemajuan teknologi pada era sekarang, banyak hal yang kita bisa lakukan dengan menggunakan smartphone. Seperti bermain game, berbisnis, komunikasi jarak jauh, berbagi lokasi, dan lain sebagainya. Dibalik segudang keunggulan smartphone, ada kelemahan yang dimiliki oleh alat segenggaman tangan tersebut, yaitu kebergantungan terhadap jaringan internet & baterai. Apa jadinya jika semisal kita sedang mengalami keadaan darurat (kecelakaan, kejadian kriminal, tersesat dan lain sebagainya) tetapi kita berada di daerah minim internet dan baterai smartphone kita sudah mau habis? Oleh karena itu, kami merancang dan mengembangkan sebuah alat bernama Scoutify. Scoutify merupakan alat pelacak portable yang berbasis pada Internet of Things (IoT). Alat ini menggunakan microcontroller Xiao Seeed ESP32C3 dan module A9G Board yang sudah include dengan module charging battery, GPS/BDS, GPRS, GSM, & microphone. Lewat “Scoutify” kita ingin memberikan kemudahan bagi :

  • Orang yang suka berpetualang ke daerah minim jaringan internet
  • Orang yang tinggal di daerah rawan kriminal
  • Orang yang sering meninggalkan barang tertentu

(3 kategori diatas memiliki asumsi bahwa kekuatan internet paling rendah (E/H)


Function

Berikut adalah cara kerja dari Scoutify. Ketika switch dinyalakan maka Scoutify akan langsung mencari koneksi internet. Dalam waktu yang bersamaan, Scoutify juga langsung menarik data latitude dan longitude jika sinyal GPS sudah ditemukan. Penarikan data ini bisa dilakukan secara automatic maupun secara manual. Secara default, Scoutify akan otomatis menarik data latitude longitude dari GPS setiap interval waktu 2 menit dan mengirimkannya ke firebase. Penarikan data secara manual bisa dilakukan via button. Ketika button 1 ditekan maka Scoutify akan menarik data dari GPS lalu mengirimkan SMS yang berisi link google maps + latitude + longitude ke nomor Handphone yang dituju. Selain mengirim SMS, Scoutify juga akan mengirimkan data ke firebase dan akan ditarik oleh Scoutify App untuk menampilkan pop-up Sos. Sebagai fungsi tambahan, ketika button 2 ditekan maka Scoutify akan menampilkan indikator baterai. Hal ini kami buat agar user lebih mudah melakukan kalkulasi dan estimasi penggunaan Scoutify. Selain hardware, Scoutify memiliki software berupa mobile application (Scoutify App) yang dibuat menggunakan flutter dan berbasiskan pada Firebase . Di dalam Application tersebut akan ada fitur seperti, Live tracking yang terupdate berdasarkan interval waktu 2 menit (seperti yang sudah disebutkan sebelumnya), History Live Tracking, dan device ID untuk mengetahui device Scoutify mana yang sedang melakukan koneksi dengan database. Pada menu device ID, pengguna dapat melihat nomor telepon yang digunakan oleh Scoutify. Jika nomor tersebut ditekan maka Scoutify App akan melakukan direct ke phonebook. Dari phonebook, user dapat melakukan telepon ke Scoutify secara diam-diam.

Supplies

Untuk membuat Scoutify kami menggunakan :

Alat :

  • Solder
  • Penghisap Timah
  • Wire Stripper
  • Tang potong
  • Cutter
  • Amplas
  • Kikir
  • Bor
  • Mata bor 0.8mm, 1mm, 5mm
  • Super Glue
  • 3D printer
  • Multimeter
  • Setrika


Bahan :

Mikrokontroller

  • Xiao Seeed Studio ESP32C3
  • Ai-Thinker A9G Board (Untuk GPRS/SIM, GPS/BDS, Mic)


Module & Komponen

  • ST7735 TFT Display full color 80x160 (0.96")
  • MT3608 DC to DC Boost Converter (3,7v to 5v)
  • GPS antenna 1575.42MHz dengan SMA Male / Ceramic GPS Antenna
  • Internal circuit Antenna (WiFi)
  • 1 pcs Li-po Battery 3,7v 550 mAh
  • 2 pcs Resistor SMD 10kΩ
  • 2 pcs Resistor 220kΩ
  • 2 pcs kapasitor 10nF
  • 2 pcs Silent button
  • 1 pcs Switch on/off
  • 1 pcs double side PCB FR4


Bahan lainnya :

  • Kabel Jumper
  • Kabel Coaxial dengan jack SMA Male & SMA Female (Optional)
  • Kabel IPEX gen 1/U.FL to SMA female (Optional)
  • PLA untuk 3D print
  • Timah


Software :

  • Visual Studio Code (Platform.io)
  • Arduino IDE
  • EasyEDA (Schematic & PCB Design)
  • Solid Works (3D Case Design)
  • Firebase (Realtime Database

Blok Diagram

Blok Diagram Instructables.png

Metodologi

Blok diagram diatas menunjukkan bagaimana alur kerja dari "Scoutify". "Scoutify" memiliki 2 bagian yaitu Hardware dan Software. Dari sisi Hardware kami menggunakan Xiao Seeed Studio ESP32C3 sebagai microcontroller utama dan Ai-Thinker A9G Board sebagai microcontroller "all in one" module. Untuk sumber daya kami mengambil dari baterai li-po 3,7v 550mAh yang ditingkatkan tegangannya menggunakan MT3608 DC to DC Boost Converter. Untuk menampilkan logo dan indikator baterai kami menggunakan ST7735 TFT Display full color 80x160 (0.96"). Semua data (latitudem longitude, timestamp, device id) yang akan dikirimkan ke Scoutify App pada Smartphone user akan diolah oleh Xiao Seeed ESP32C3 dan disimpan di firebase. Satu-satunya pengiriman data langsung ke Smartphone user adalah melalui SMS. pengiriman ini hanya bisa diaktifkan melalui Silent button. Scoutify App Smartphone user juga tidak bisa mengirimkan data kembali kepada Xiao Seeed ESP32C3, satu"nya yang bisa mengirimkan data kembali adalah lewat fitur call ke Ai-Thinker A9G Board. Data yang didukung lewat fitur call hanya data audio.


Dari sisi software kami menggunakan Flutter berbasis Dart untuk membuat Scoutify App. Untuk media penyimpanan dan media monitoring kami menggunakan Google Firebase RTDB. Sesuai dengan blok diagram diatas, Scoutify App dapat melakukan koneksi 2 arah dengan Firebase. Selain menarik data dari firebase, Scoutify App dapat melakukan proses management pada Firebase. Jika data yang dikirimkan oleh Scoutify tidak sesuai format yang sudah diatur, maka child path dari data tersebut akan secara otomatis dihapus oleh Scoutify App. Hal ini bertujuan untuk meningkatkan efisiensi penggunaan firebase dan juga untuk memudahkan kami melakukan monitoring.

Schematic

Schematic Scoutify.png

Gambar diatas merupakan skematik dari "Scoutify". Untuk membuat skematik kami menggunakan EasyEDA. Skematik kami buat dengan koneksi "wire" yang seminimum mungkin. Hal ini dilakukan untuk mempermudah kami melakukan checking dan routing semisal terjadi kesalahan pada Skematik.

PCB Design

PCB Scoutify (White).png

Setelah skematik dibuat, kami membuat design PCB untuk di print dan di-etching. Design PCB ini kami buat dengan ukuran sekecil mungkin dengan model double-layer PCB. Selain itu untuk menghemat tempat, kami menggunakan jalur paling besar 0,8mm dan paling kecil 0,4mm.

Print & Etching

Screenshot EasyEDA (Edited).png

Setelah PCB selesai di-design, kami mencetak design PCB tersebut menggunakan kertas foto. Disini layer yang kami cetak ada 2, yaitu top layer dan bottom layer. Karena model PCB yang kami rancang adalah model double-layer, maka kami harus memotong papan PCB sesuai dengan ukuran Design PCB yang dicetak. Ukuran harus tepat, tidak boleh kurang, tidak boleh lebih. Hal ini meminimalisir ketidaktepatan "hole" antara top layer dan bottom layer. Setelah PCB dipotong, kami setrika terlebih dahulu sisi top layer. Proses setrika memakan waktu sekitar 10-15 menit. Setelah itu kami setrika sisi yang lain untuk bottom layer.


Setelah selesai disetrika, kami dinginkan papan PCB sekitar 10 menit. Lalu, kertas foto kami angkat. Jika proses setrika dilakukan secara benar, maka tinta hitam yang ada kertas foto akan menempel secara sempurna. Semisal tinta pada kertas foto ada yang belum menempel dengan sempurna, bisa kita tebalkan dengan spidol OHP. Setelah itu kita bisa melakukan etching. Untuk etching PCB Scoutify, kami menggunakan bahan kimia dengan komposisi 20ml HCL 20ml H2O2 dan 80ml Aquades atau Air. Setelah melakukan etching kami melakukan pengeboran pada PCB sesuai dengan hole yang telah dibuat.

Guide Measurement Untuk 3D Case Design

CorelDraw Instructables-04.png

Selain membuat papan PCB, kami juga membuat 3D Design untuk case Scoutify. Sebelum kami buat 3d Design casenya, kami membuat guide measurement terlebih dahulu di corelDraw. Hal ini kami lakukan agar meminimalisir adanya ketidakakuratan ukuran dan human error saat mendesign 3D case nanti.

3D Case Design

Solidworks Instructables-05.png

Setelah Guide measurement dibuat, barulah kami buat case Scoutify dalam bentuk 3D Design. Untuk File .STL dan .SLDPRT (Solidworks File) Case Scoutify bisa di download pada attachment dibawah ini

3D Print

Ultimaker Instructables.png

Buka Cura dan pilih printer yang akan digunakan. Kemudian pilih logo folder dan Pilih File STL yang sudah dikonversi dari Aplikasi design 3d sebelumnya. Kami menggunakan 4 file stl yaitu part1.STL hingga part4.STL. Pilih ke 4 file tersebut dan klik open. Untuk part 3 dan 4 yaitu button dan penahan PCB nya dan kita open lagi, Untuk part 3 1 kali lagi dan part 4 3 kali lagi. Kemudian atur sesuai dengan ketentuan yang pas. Kemudian pilih quality nya menjadi standar dan jika ingin mengubah infill dan yang lain boleh diubah sesuai dengan keinginan. Untuk alat ini kami menggunakan infill grid. Temperature harus sesuai dengan filamen yang digunakan. Kami menggunakan bed temp 62°C dan 205°C untuk nozzle. Lalu kami tambahkan support. Kemudian slice dan preview. Setelah itu barulah kita print.

Setup & Upload Code

Platform Programming yang kita gunakan untuk "Scoutify" adalah Visual Code Studio (VCS). Untuk Hardware kami menggunakan platform.io pada VCS. Untuk Software kami menggunakan extension flutter & dart pada VCS.

Di dalam main.cpp kita harus menambahkan beberapa header dan variable

#include "WiFi.h"
#include "NTPClient.h"
#include "WiFiUdp.h"
#include <Firebase_ESP_Client.h>
#include "TFT_eSPI.h"
#include "Logo_Scoutify.h"
#include "addons/TokenHelper.h"
#include "addons/RTDBHelper.h"
#define WIFI_SSID "TEKDUS"
#define WIFI_PASSWORD  "08116605951"
#define API_KEY "AIzaSyDlHt2E6aaTFxda9JuQnYqqhEZqUGBlMYg"
#define DATABASE_URL "https://scoutify-iot-default-rtdb.asia-southeast1.firebasedatabase.app/"
#define SOS D2
#define BATTERYTRIGGERDISPLAY D1

WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP);
TFT_eSPI tft= TFT_eSPI();
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;
FirebaseJson json;


int screenW=160;
int screenH=80;
int sendCount = 1;
bool signupOK = false;
bool manual;
bool manualtemp;
String formattedDate;
String dayStamp;
String timeStamp;
String databasePath;
String parentPath;
String combinepath;
String uid;
String latPath = "/latitude";
String longPath = "/longitude";
String manualPath = "/manual";
String manualtempPath = "/manual temp";
String uidPath = "/user id";
String timePath = "/timestamp";
String lat;
String longi;

String SOS_NUM = "+6285811096232";
boolean stringComplete = false;
String inputString = "";
String fromGSM = "";
bool CALL_END = 1;
char* response = "";
String res = "";
int c = 0;

int batteryLevelDisplay = 0;
int batteryLevel = 0;
unsigned long previousMillis = 0;
unsigned long interval = 10000;
unsigned long sendDataPrevMillis = 0;
unsigned long timerDelay = 90000;

Full Code Hardware dapat di-download atau di-clone dari Attachment di bawah ini

Full Code Hardware + Library & Full Code Software Scoutify App dapat di-download atau di-clone dari link Github pada Instructable ini

Hardware : https://github.com/ScoutifyIoT/Scoutify-Smart-GPS-Tracker

Software : https://github.com/jrmyandre/flutter_gps_maps_project



Soldering, Building & Hardware Testing

Hardware Instructables.png

Soldering

Setelah PCB sudah dietching dan case sudah diprint, maka kami bisa lanjut ketahap berikutnya yaitu Soldering. Di tahap ini perlu diperhatikan bahwa saat menyolder kita tidak boleh menahan di posisi yang sama dalam 1 waktu. Hal tersebut dapat menyebabkan kerusakan pada tembaga PCB. Pemberian timah juga tidak boleh terlalu banyak. Penyolderan dilakukan sampai kaki komponen dan through-hole tertutup timah. Usahakan hasil penyolderan membentuk seperti payung tidak membulat seperti bola. Karena model design kami untuk PCB adalah double layer, kami harus menggunakan kaki komponen untuk menjumper solder pad dari sisi bottom layer ke sisi top layer.


Building

Setelah semua komponen selesai disolder di atas PCB, barulah kami bisa memasukkan PCB ke dalam case. Sebelum itu, kami harus membaut TFT Display terlebih dahulu. Selain itu kami juga harus memberikan lem pada switch agar menempel pada case. Setelah dua komponen tersebut "duduk" dengan baik di dalam casing, barulah kami bisa memasukkan papan PCB. Setelah PCB "duduk" di dalam casing, barulah kami bisa memasang cover penutup pada Scoutify


Hardware Testing

Setelah semua tahap-tahap diatas selesai, kami melakukan uji coba terhadap Scoutify, apakah Scoutify berjalan dengan baik atau tidak.


Video Demonstrasi & Penjelasan Cara Kerja

Video Demonstrasi &amp; Penjelasan Cara Kerja

Video Demonstrasi tambahan + poster bisa diakses juga pada link google drive berikut :

https://drive.google.com/drive/folders/1q-V2yV_hLaRtEqv9YtlYfV7M_saZZjlG?usp=sharing

Saran

  • Fitur Untuk Initial Setup no Telepon via Wifi
  • Perkecil ukuran hardware
  • Konektivitas 3G