# Komunikasi GSM pada Board IKANKU Menggunakan Modul SIM800L

<center><small>Gambar 1. Keseluruhan Sistem</small></center>
## Board IKANKU

<center><small>Gambar 2. Tampak Atas Board Ikanku</small></center>
<br>
<div style="text-align: justify">
Board <strong>IKANKU</strong> merupakan sebuah board yang dirancang untuk melakukan pemantauan kondisi lingkungan dari sebuah kolam ternak ikan. Untuk melakukan pemantauan, digunakan beberapa sensor yang mengukur kondisi kolam tersebut. Data yang diterima ini dikirimkan ke pengguna melalui komunikasi LoRa. Board ini mendapat sumber tegangan dari 2 baterai VTC 3.7V yang dapat di-<em>charge</em> dengan solar panel. Sebagai pengembangannya, board IKANKU akan menggunakan modul tambahan SIM800L yang menggunakan komunikasi GSM.
</div>
## GSM SIM800L

<center><small>Gambar 3. Modul SIM800L
https://www.electroniclinic.com/arduino-sim800l-gsm-gprs-module-tutorial/</small>
</center>
<div style="text-align: justify;">
<strong>SIM800L</strong> merupakan salah satu modul keluaran SIMCOM yang mendukung fitur <strong>GSM</strong> (Global System for Mobile Communications) dalam mikrokontroler. GSM adalah jaringan seluler digital yang digunakan di seluruh belahan dunia yang mendukung keberadaan jaringan seluler atau dengan kata lain menyediakan frekuensi seluler. Artinya, dengan menggunakan jaringan seluler, modul SIM800L memiliki fitur-fitur seluler pada umumnya, seperti menerima dan mengirimkan panggilan serta SMS. Berikut adalah diagram cara kerja jaringan GSM. Modul SIM800L ini membutuhkan tegangan input <strong>3.7V hingga 4.2V</strong> agar dapat bekerja dengan optimal (supaya koneksi seluler stabil dan lebih aman).</p>
Pada Gambar 3, terlihat terdapat sebuah LED yang tujuannya adalah sebagai penanda terjalinnya koneksi antara modul SIM800L dengan jaringan. Jika LED menyala tiap 1 detik, chip SIM800L sudah berjalan tetapi belum terhubung ke jaringan seluler. Jika LED menyala tiap 2 detik, maka koneksi data GPRS yang diinginkan telah aktif. GPRS atau General Packet Radio Service sendiri merupakan standar komunikasi seluler yang beroperasi pada jaringan seluler 2G dan 3G untuk memungkinkan transfer data berkecepatan cukup tinggi menggunakan teknologi berbasis paket. Dan jika LED menyala tiap 3 detik, maka modul telah melakukan kontak dengan jaringan seluler dan dapat mengirim/menerima suara dan SMS.
<center><small>Tabel 1. Konsumsi Arus Sesuai Mode</small></center>
<div style="text-align: center;">
<table border="1" style="margin: auto;">
<thead>
<tr>
<th><center>Mode</center></th>
<th><center>Frekuensi</center></th>
<th><center>Konsumsi Arus</center></th>
</tr>
</thead>
<tbody>
<tr>
<td><center>Sleep Mode</center></td>
<td><center></center></td>
<td><center>60μA</center></td>
</tr>
<tr>
<td><center>Stand By</center></td>
<td><center></center></td>
<td><center>1 mA</center></td>
</tr>
<tr>
<td><center>Call</center></td>
<td><center>GSM850</center></td>
<td><center>199 mA</center></td>
</tr>
<tr>
<td><center>Call</center></td>
<td><center>EGSM900</center></td>
<td><center>216 mA</center></td>
</tr>
<tr>
<td><center>Call</center></td>
<td><center>DCS1800</center></td>
<td><center>146 mA</center></td>
</tr>
<tr>
<td><center>Call</center></td>
<td><center>PCS1900</center></td>
<td><center>131 mA</center></td>
</tr>
<tr>
<td><center>GPRS</center></td>
<td><center></center></td>
<td><center>453 mA</center></td>
</tr>
<tr>
<td><center>Transmission Burst</center></td>
<td><center></center></td>
<td><center>2A</center></td>
</tr>
</tbody>
</table>
</div>
</div>
<br />
<center><small>Gambar 4. Diagram Cara Kerja Jaringan GSM
https://www.spiceworks.com/tech/networking/articles/what-is-gsm/</small>
</center>
## LM2596
<center><img src="https://hackmd.io/_uploads/S1E-q09cR.png" width="360" height="300" alt="image"></center>
<center><small>Gambar 5. Peringatan yang Dikirim oleh SIM800L Melalui SMS
https://www.tokopedia.com/vccelektronik/lm2596-dc-to-dc-step-down-modul-penurun-tegangan-adjustable-converter</small></center>
<div style="text-align: justify;">
LM2596 merupakan buck converter DC-DC yang berfungsi untuk mengeluarkan tegangan output yang nilainya lebih rendah dari tegangan outputnya. Pada proyek ini, LM2596 digunakan untuk menurunkan tegangan keluaran dari board Ikanku yang bernilai 5V agar bisa menjadi tegangan input modul SIM800L. Spesifikasi modul LM2596 adalah sebagai berikut.
<center><small>Tabel 2. Spesifikasi LM2596</small></center>
<div style="text-align: center;">
<table border="1" style="margin: auto;">
<tbody>
<tr>
<td><center>Input Voltage</center></td>
<td><center>3V - 40V</center></td>
</tr>
<tr>
<td><center>Output Voltage</center></td>
<td><center>1.5V - 35 V</center></td>
</tr>
<tr>
<td><center>Output Current</center></td>
<td><center>Rated = 2A dan Max = 3A</center></td>
</tr>
</tbody>
</table>
</div>
</div>
## Table of Contents
[toc]
## Peserta Kerja Praktek
<center>
<small>Tabel 3. Daftar Peserta Kerja Praktek Topik <em>Water Quality</em></small>
</center>
<div style="text-align: center;">
<table border="1" style="margin: auto;">
<thead>
<tr>
<th>No</th>
<th><center>Nama</center></th>
<th><center>NIM</center></th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Maritza Humaira</td>
<td>13221026</td>
</tr>
<tr>
<td>2</td>
<td>Tjhan, Kevin Reagen Sugiarto</td>
<td>13221087</td>
</tr>
</tbody>
</table>
</div>
## Spesifikasi yang Diharapkan
<div style="text-align: justify">
* Fitur <em>Warning System</em>: Pengguna dapat menerima pesan peringatan terkait kondisi kolam melalui SMS saat bacaan sensor menunjukkan hasil yang melebihi atau kurang dari amang batas normal kolam untuk ikan.
* Fitur meminta data: Pengguna dapat meminta kondisi kolam secara real-time dengan mengirim pesan melalui SMS pada nomor Board Ikanku kemudian data yang diinginkan tersebut diterima oleh pengguna.
</div>
## Komponen yang Digunakan
<center><small>Tabel 4. Daftar Komponen yang Digunakan</small></center>
<div style="text-align: center;">
<table border="1" style="margin: auto;">
<thead>
<tr>
<th><center>Tipe</center></th>
<th><center>Nama</center></th>
<th><center>Keterangan</center></th>
</tr>
</thead>
<tbody>
<tr>
<td><center>Board</center></td>
<td><center>Ikanku</center></td>
<td><center>Versi 05-2023 Rev 3.3</center></td>
</tr>
<tr>
<td><center>Processor</center></td>
<td><center>ATMega328PA</center></td>
<td><center>Arduino MightyCore</center></td>
</tr>
<tr>
<td><center>Modul</center></td>
<td><center>SIM800L</center></td>
<td><center>Komunikasi GSM</center></td>
</tr>
<tr>
<td><center>Modul</center></td>
<td><center>LM2596</center></td>
<td><center>Buck Converter DC to DC</center></td>
</tr>
<tr>
<td><center>Sensor</center></td>
<td><center>DS18B20</center></td>
<td><center>Sensor Suhu Air</center></td>
</tr>
<tr>
<td><center>Sensor</center></td>
<td><center>-</center></td>
<td><center>Sensor TDS untuk board</center></td>
</tr>
<tr>
<td><center>Sensor</center></td>
<td><center>E-1 TDS&EC</center></td>
<td><center>Sensor TDS Industrial Grade untuk Kalibrasi</center></td>
</tr>
<tr>
<td><center>Sensor</center></td>
<td><center>CT-1001C</center></td>
<td><center>Sensor pH untuk board</center></td>
</tr>
</tbody>
</table>
</div>
## Flowchart
### **==Program Utama==**
<img src="https://hackmd.io/_uploads/SyihGppK0.png" width="1000" height="900" alt="image">
<center><small>Gambar 6. Diagram Alur Program Utama</small></center>
### **==Do Action==**
<center>
<img src="https://hackmd.io/_uploads/rktzXaTYR.png" width="500" height="450" alt="image">
</center>
<center><small>Gambar 7. Diagram Alur Fungsi DoAction()</small></center>
## Block Diagram
<img src="https://hackmd.io/_uploads/B13_4pTFA.png" width="750" height="500" alt="image">
<center><small>Gambar 8. Blok Diagram Sistem</small></center>
<br>
<center><small>Tabel 5. Koneksi Pin Ikanku - SIM800L </small></center>
<div style="text-align: center;">
<table border="1" style="margin: auto;">
<thead>
<tr>
<th>Board Ikanku</th>
<th>GSM SIM800L</th>
</tr>
</thead>
<tbody>
<tr>
<td>D1</td>
<td>RXD</td>
</tr>
<tr>
<td>D22</td>
<td>TXD</td>
</tr>
<tr>
<td>VCC</td>
<td>5V to 4V</td>
</tr>
<tr>
<td>GND</td>
<td>GND</td>
</tr>
</tbody>
</table>
</div>
## Skematik

<center><small>Gambar 9. Skematik Rangkaian</small></center>
## Kalibrasi Sensor TDS dan Sensor pH
<center><img src="https://hackmd.io/_uploads/BJnGm0aKA.png" width="350" height="300" alt="image"></center>
<center><small>Gambar 10. Gambar Sensor TDS yang Digunakan</small></center>
<br>
<center>
<img src="https://hackmd.io/_uploads/Hkwr7CptC.png" width="350" height="300" alt="image"></center>
<center><small>Gambar 11. Gambar Sensor pH yang Digunakan</small></center>
<br>
<div style="text-align: justify">
<p>Sensor yang digunakan pada Board Ikanku memerlukan sebuah persamaan agar hasil bacaan analognya sesuai dengan satuan pengukuran. Persamaan ini didapatkan dari kalibrasi terhadap sensor. Namun tiap board dan tiap sensor memiliki tegangan dan arus yang bervariasi antar pinnya, sehingga diperlukan kalibrasi sensor pada tiap board.</p>
Kalibrasi sensor TDS dilakukan dengan membandingkan bacaan TDS meter industrial grade dengan bacaan tegangan sensor TDS pada board untuk 4 jenis cairan (cairan 100 ppm, 300 ppm, 500 ppm, dan 700 ppm). Perbandingan nilai tersebut dibuat dalam bentuk persamaan dengan metode Regresi Linear. Koefisien yang didapatkan dari persamaan tersebutlah yang digunakan pada fungsi bacaan sensor Board Ikanku.
Hal yang sama dilakukan pada kalibrasi sensor pH, yaitu membuat persamaan menggunakan metode Regresi Linear berdasarkan perbandingan nilai bacaan sensor dengan nilai pH larutan buffer (pH 4.01 dan pH 9.18). Koefisien dari persamaan itu jugalah yang digunakan pada fungsi bacaan sensor Board Ikanku.
</div>

<center><small>Gambar 12. Proses Kalibrasi</small></center>
## Testing Komunikasi GSM
<center><img src="https://hackmd.io/_uploads/BJgIqlAYR.jpg" width="400" height="550" alt="image"></center>
<center><small>Gambar 13. Testing Komunikasi GSM</small></center>
### ==Fitur Warning System==
<center><img src="https://hackmd.io/_uploads/rkI-rl0FR.png" width="400" height="230" alt="image"></center>
<center><small>Gambar 14. Peringatan yang Dikirim oleh SIM800L Melalui SMS</small></center>
<div style="text-align: justify">
<br>Saat nilai baterai, nilai pH, dan nilai suhu air melewati batas normal, Board Ikanku telah dapat mengirimkan pesan bahaya melalui SMS beserta nilai terukurnya.</br></div>
### ==Fitur meminta data==
<center><img src="https://hackmd.io/_uploads/BJUUVe0KR.png" width="400" height="200" alt="image"></center>
<center><small>Gambar 15. Data yang Dikirimkan Melalui SMS Saat Pengguna Meminta Parameter Daya</small></center>
<div style="text-align: justify">
<br>Saat pengguna meminta nilai tegangan pada board dengan mengirimkan pesan "DAYA", Board Ikanku telah dapat mengirimkan pesan berisi nilai tegangan baterai dan solar cell di waktu tersebut.</br></div>
<center><img src="https://hackmd.io/_uploads/SkG48gRKR.png" width="400" height="250" alt="image"></center>
<center><small>Gamba 16. Data yang Dikirimkan Melalui SMS Saat Pengguna Meminta Parameter Kondisi Air</small></center>
<div style="text-align: justify">
<br>
Saat pengguna meminta kondisi air kolam dengan mengirimkan pesan "KONDISI", Board Ikanku telah dapat mengirimkan pesan berisi nilai suhu air, TDS, pH, dan DO.</div></br>
## Kendala
<div style="text-align: justify">
Pada saat pengerjaan proyek ini, ada beberapa kendala, di antaranya:
1. Beberapa Provider Tidak Stabil
Kekuatan dari sinyal milik kartu SIM tertentu sangat bergantung pada daerah tertentu pula. Pada kasus ini, sinyal milik provider XL hanya stabil ketika berada di kantor Xirka tetapi tidak di gedung PAU, berbeda dengan provider Simpati yang stabil di kedua tempat.
2. Pesan Tidak Terkirim
Pada saat program dirancang untuk membaca semua sensor sekaligus (kompleksitas kode), SMS yang dikirimkan oleh SIM800L selalu kosong atau tidak ada karakter apapun yang dikirimkan. Maka dari itu, sensor suhu dan kelembaban udara dinonaktifkan dikarenakan parameter udara tidak terlalu signifikan dalam penentuan kualitas kolam ikan.
3. Pesan Terpotong
Salah satu kelemahan dari SMS adalah adanya batas karakter yang berjumlah 160 karakter. Jika pesan yang diinginkan lebih dari 160 karakter, harus dipisah menjadi dua atau lebih SMS yang mengakibatkan biaya tambahan.
4. Bacaaan TDS Tidak Stabil
Pada saat melakukan kalibrasi TDS, perbedaan posisi yang sangat kecil bahkan tidak terlalu signifikan-pun menyebabkan bacaan nilai TDS berbeda lumayan jauh.
</div>
## Kesimpulan
<div style="text-align: justify">
Ada tiga buah kesimpulan yang dihasilkan setelah proyek ini berhasil dilaksanakan yaitu:
1. Pengguna berhasil meminta data kondisi yang dikirimkan melalui SMS dengan provider SIMPATI dan XL,
2. SIM800L dapat mengirimkan data permintaan ataupun Warning System melalui SMS dengan provider SIMPATI, dan
3. Kalibrasi telah dilakukan pada 12 buah sensor TDS dan 6 buah sensor pH
</div>
## Saran
<div style="text-align: justify">
Bagi pembaca yang ingin melanjutkan proyek ini, ada empat buah saran yang dapat diaplikasikan untuk memudahkan keberjalanan proyek:
1. Pilih provider yang tepat sesuai dengan daerah pemasangan board
2. Riset lebih lanjut mengenai kompleksitas kode yang terkait dengan terpotongnya karakter SMS
3. Gunakan kapasitor 1000 µF antara VCC dan GND pada modul SIM800L
4. Gunakan antena 3 dBi untuk modul SIM800L, jangan bawaan semata
5. Sebaiknya, selalu ingat untuk mengimplementasikan wdt.reset() supaya board tidak reset terus-menerus.
</div>
## Referensi
https://hackmd.io/@u8vSad2ZTymSI_F7VUdhig/SyeqOu3iT
## More Info
Video demo penjelasan sistem secara umum dapat dilihat pada link berikut: [Google Drive](https://drive.google.com/file/d/1QJH0wXYCODc5JU6ZBCj3-Wc34mXQo3_u/view?usp=drive_link)