Is this Islam, Islam?

Do you believe in God?

If yes, what religion did you choose?

Mine is Islam. The religion taught by Muhammad saww. from around 1400 years ago. Thousands of years is not a short time. The information can be distorted. We can take an example in recent days. If you pick one trending topics in the world, mostly there are many versions of stories from the mass media.

Some complement each other. Some contradict the other.

But there is only one truth. Always one.

The same thing is happening to Islam (and other religions I think). It is been 1400 years since Prophet Muhammad left this world. Today, there are at least six large groups of sects in this religion: four large groups of Sunni (Hanafi, Syafi’i, Maliki, Hambali), Shia, and Wahhabi.

The variance is understandable. It has been more than one thousand years since the Prophet left us. For those of you who are wondering: yes, the purity of Alquran is guaranteed[1].

But, the guarantee only covers the original arabic text. Since the translations were made by humans – the source of wrongs – mistranslations can happen everywhere. If the translation is not guaranteed by God, how about the hidden meanings behind the verse (takwil)? How about the sunnah? How about the other parts of the teaching?

In a nutshell:

How can we make sure that our Islam is the same Islam that Prophet Muhammad saww. taught at 1400 years ago?

My journey for the last several years brings me the answer. I will share the story but not the conclusion. Because, it is your duty as a Muslim to find the truth.


[1] The Holy Quran (Al-Hijr verse 9)

اِنَّا نَحْنُ  نَزَّلْنَا الذِّكْرَ وَاِنَّا لَهٗ لَحٰـفِظُوْنَ

Sesungguhnya Kamilah yang menurunkan Al-Qur’an, dan pasti Kami (pula) yang memeliharanya. 

Avastory Part I: Bigger Ship

This article is about my journey. My perspective.

One year ago, two friends and I built a little raft we named Avara. I wanted this to go far with this baby. To reach the top. To give benefits for those around. They also had their own motivation.

We started sailing.

Several months later, the ocean was visible. We decided to develop a product to improve lives on islands in our nation. In the same time, one of us jump out of the ship. So the two of us continued sailing the sea. Things were great. All was great. The thing was real, and still is. The islands were visible, approachable, and docked-able. And still are. We were able to sail really well, without any pile of golds up front. We collected it while sailing. Amazing to the max.

After succeeding in one island, I wasn’t satisfied. I wanted more islands. I wanted more success. There was still rooms for product and team improvements. And the sea was blue. And still is. Too many islands to get for the two of us. He focused on developing the engine, while I helped him on it and also building the ship. And finding the islands. And navigating. And stirring the wheel. And looking for the fishes. And trying to catch them. And doing the kitchen stuffs. And getting betrayed. And this. And that.

Oh, I was so overwhelmed. So overloaded.

Then he came up on the idea to get a fisherman on board. His friend, and the reputation was quite good. I also came up on the idea to get someone else to help me lift the weight. We agreed on that. So we needed a bigger ship.

Then we get the ship. Bigger. Better. It has rooms for 10. We were four. And it’s worth all of our gold.

Then we continued sailing with two new crews.

To be continued..


This article was originally posted on Avara official blog at November 9, 2015 when one of our co-founders decided to left the gang.

As people said, turnover rate in startup companies is high. People come and go for many reasons. Earlier this month, we lost one of our family member for a consulting company. Farrell was working with us for about three months since August. He is one of the co-founding member along with Mahdan and me.

He is one of the most hard-working man I’ve ever known. He just cannot stay still. He will not feel good if there’s nothing to do. His abilities are related to enterprise-scale IT analysis. From business analysis to documenting projects. Unfortunately, there are little things to do in a just-starting-up company like Avara.

We highly regards documentation. It is a very important thing to have when we are going to scale. But his skills will be well developed if he work for a bigger company (especially consultant) because there will be much more experience and mentors to help him grow.
Best of luck, Farrell. We hope you will achieve great things there! Not everyone get opportunity like you, to work abroad and return home in regular basis. So, make the most of it! And if you’re tired of Singapore working style, maybe you can come back 🙂

P.S: If you’re in Bandung, don’t forget to come over to our office. Let’s play FIFA 🙂

From your family,
Aria & Mahdan

The Formation

This article was posted at September 6, 2015 on Avara official blog.

Several months ago, my senior came to our basecamp and asked:

“Who’s leading and what’s the formation of your team?”

Then we saw each other’s face in three seconds and laughed. We never really talked about the roles, when other startups discussed about who will become the CEO, CTO, and C(you say)O. Yes, it is important. But why we didn’t talk about it?*


Continue reading

Cametreon: Mengetahui biaya penggunaan listrik rumah. Powered by Arduino

Proyek Akhir Mata Kuliah IMK


  • 18211004 – Subkhan Syarif
  • 18211008 – Aria Dhanang Dewangga
  • 18211015 – Fady Noor Ilmi
  • 18211035 – Raden Ryan Adi Wicaksana
  • 18211054 – Faris Taufiq Zakiy
  • 18211057 – Mekaputra Yudahandika

Latar Belakang

Proyek IMK yang kami buat kali ini diberi nama Cametreon (Catat Meter Real TIme Online). Kami membuat ini sebagai solusi untuk memudahkan penyedia jasa listrik rumah dalam mencatat penggunaan listrik. Saat ini untuk melakukan pencatatan penggunaan listrik rumah digunakan KWhmeter. Sayangnya pengumpulan data masih dilakukan secara manual, yaitu dengan mengirimkan petugas untuk terjun langsung datang ke rumah-rumah untuk mencatat nilai dari KWhmeter.

Produk yang Dibuat

Produk ini kami beri nama Cametreon. Fungsinya adalah untuk mencatat penggunaan listrik di rumah-rumah dan mengirimkannya langsung ke server milik PLN. Selain itu Cametreon juga menampilkan berapa biaya yang harus dibayar pelanggan.

Berikut adalah blok diagram Cametreon.

blok desain

Dalam tugas ini, pengiriman data disimulasikan melalui bluetooth yang dapat disambungkan ke komputer.

Prinsip Kerja

Cametreon dibagi menjadi dua fungsi utama yang diimplementasikan dengan dua buah Arduino Uno: reader dan logger.

1. Reader

arduino1 flowchart

Fungsi dari Arduino reader adalah untuk membaca penggunaan listrik. Caranya adalah dengan membaca putaran piringan (yang akan berputar sesuai dengan penggunaan. Pembacaan dilakukan dengan menggunakan sensor infra merah.

rangkaian cametreon.png

Pemutaran disc disimulasikan secara manual menggunakan tangan karena dalam tahap ini pengembangan Cametreon masih prototipe, belum dihubungkan ke listrik rumah sesungguhnya.

Besar listrik yang digunakan tergantung dengan berapa putaran piringan tersebut berputar. Kami menggunakan asumsi setiap penggunaan 1KW disc harus berputar 900 kali. Sehingga satu putaran akan dihitung sebagai 1KW/900 atau 0.0011KW.

Kemudian data yang didapatkan dikirimkan ke Arduino logger melalui koneksi kabel.

Ini adalah source code dari program Arduino reader.

#include <Wire.h>

int pd=2;                      //Photodiode to digital pin 2
int lamp=13;                   //piezo lamper to digital pin 13
int senRead=0;                 //Readings from sensor to analog pin 0
int limit=990;                 //Threshold range of an obstacle
byte x=0;

void setup()
digitalWrite(pd,HIGH);       //supply 5 volts to photodiode
digitalWrite(lamp,LOW);      //set the lamplamper in off mode (initial condition)
Serial.begin(9600);          //setting serial monitor at a default baund rate of 9600
void loop()


int val=analogRead(senRead);  //variable to store values from the photodiode

Serial.println(val);          // prints the values from the sensor in serial monitor
if(val <= limit)              //If obstacle is nearer than the Threshold range
//digitalWrite(lamp,HIGH);     // lamper will be in ON state
else if(val > limit)          //If obstacle is not in Threshold range
//digitalWrite(lamp,LOW);      //lamper will be in OFF state


2.  Logger

Fungsi utama dari Arduino ini adalah menerima input data penggunaan listrik dari Arduino reader kemudian menampilkan biaya penggunaan melalui layar LCD.  Arduno ini selanjutnya mengirimkan data melalui bluetooth ke komputer yang sudah di-pair dengan sensor HC-05 yang tetempel di board Arduino.

arduino2 flowchart

Untuk menghitung harga digunakan harga Rp1.352 / KWh.

Berikut adalah kode program Arduino logger.

#include <Wire.h>
#include <LiquidCrystal.h>

//Buat LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const byte ROWS = 2; //four rows
const byte COLS = 16; //four columns

int fromArduino1=2;                      //Photodiode to digital pin 2
int lamp=13;                   //piezo buzzer to digital pin 13
int x=0;

//Buat ngitung kWh
int put = 0;
double kWh = 0.00;
double harga = 0.00;

// Buat Bluetooth
char val;  // Variable untuk menerima data dari bluetooth

void setup()

//Buat LCD


Serial.begin(9600);          //setting serial monitor at a default baund rate of 9600
void loop()
harga = put*1.5022;
if(x == 1){
digitalWrite(lamp, HIGH);

// Ngitung

lcd.print("Tagihan Listrik:");
lcd.setCursor(0, 1);
lcd.print("Rp ");

digitalWrite(lamp, LOW);

lcd.print("Tagihan Listrik:");
lcd.setCursor(0, 1);
lcd.print("Rp ");


void receiveEvent(int howMany)
x =;    // receive byte as an integer
Serial.println(x);         // print the integer

Alat dan Bahan yang Digunakan


Berikut adalah rangkaian kedua Arduino dan komponen lainnya.

rangkaian hardware


Cametreon berhasil dibuat. Sayangnya kami kurang mendokumentasikan. Sebelum ingat untuk memfoto produk ini kami malah membongkarnya 🙂

rangkaian cametreon.png

Ini adalah screenshot dari hasil pengiriman penggunaan listrik melalui bluetooth.

Screen Shot 2014-05-13 at 9.49.43


  • Sensor Optocoupler medelak saat pertama kali dicoba. Hal ini terjadi karena kekurangtelitian kami dalam memasang rangkaian.
  • Lama mengerjakan bluetooth. Ternyata masalahnya ada di pin Tx dan Rx yang tertukar di program..
  • Membuat produk jadi indah, enak dipandang. Tidak enak juga menyebut rangkaian dan perkabelan sebagai sebuah produk, tanpa casing. Sehingga kami membuatkan casing dari kardus dan dibungkus oleh kertas warna.

Kalkulator Arduino!

Kembali lagi bersama seri Arduino, kali ini kami membuat kalkulator sederhana menggunakan keypad.

Ini dia videonya:

Source code:

const int numRows = 4; // number of rows in the keypad
const int numCols = 4; // number of columns
const int debounceTime = 20; // number of milliseconds for switch to be stable

const int keymap[numRows][numCols] = {
{ 1, 2, 3, -2} , // -2: penambahan, -3: pengurangan, -4: perkalian, -5: pembagian, -6: =
{ 4, 5, 6, -3} ,
{ 7, 8, 9, -4} ,
{ 999, 0, -6, -5}

const int rowPins[numRows] = { 5,4,3,2 }; // Rows 0 through 3
const int colPins[numCols] = { 9,8,7, 6 }; // Columns 0 through 2

void setup()

for (int row = 0; row < numRows; row++)
pinMode(rowPins[row],INPUT); // Set row pins as input
digitalWrite(rowPins[row],HIGH); // turn on Pull-ups
for (int column = 0; column < numCols; column++)
pinMode(colPins[column],OUTPUT); // Set column pins as outputs
digitalWrite(colPins[column],HIGH); // Make all columns inactive

int angka1 = 0;
int angka2 = 0;
char operation;
boolean isOpSet = false;
void loop(){
int key = getKey();
if( key != -1) { // if the character is not 0 then
if(key != -2){
if(key != -3){
if(key != -4){
if(key != -5){
if(key != -6){
if(angka1 == 0){ //check apakah angka pertama sudah di isi belum. jika belum, mengisi angka pertama
angka1 = key;
//Serial.print("angka pertama kepencet");
if(isOpSet == false){
angka1 = concatenate(angka1,key);
if(angka2 == 0){
angka2 = key;
//Serial.println("angka kedua kepencet");
}else if(key != -6){
angka2 = concatenate(angka2,key);
Serial.print(" = ");
Serial.println(hitung(angka1, operation, angka2));
angka1 = 0;
isOpSet = false;
operation = ':';
isOpSet = true;
operation = '*';
isOpSet = true;
operation = '-';
isOpSet = true;
operation = '+';
isOpSet = true;

int hitung(int a1, char op, int a2){
if(op == '+'){
return a1+a2;
}else if(op == '-'){
return a1-a2;
}else if(op == '*'){
return a1*a2;
}else if(op == ':'){
return a1/a2;

unsigned concatenate(unsigned x, unsigned y) {
unsigned pow = 10;
while(y >= pow)
pow *= 10;
return x * pow + y;

// returns with the key pressed, or 0 if no key is pressed
int getKey(){
int key = -1; // 0 indicates no key pressed
for(int column = 0; column < numCols; column++){
digitalWrite(colPins[column],LOW); // Activate the current column.
for(int row = 0; row < numRows; row++){
if(digitalRead(rowPins[row]) == LOW){
delay(debounceTime); // debounce
while(digitalRead(rowPins[row]) == LOW); // wait for key to be released
key = keymap[row][column]; // Remember which key

digitalWrite(colPins[column],HIGH); // De-activate the current column.
return key; // returns the key pressed or 0 if none

Screen Shot 2014-03-26 at 0.10.31

Ini dia foto-fotonya:

Foto1224 Foto1228 Foto1230 Foto1231 Foto1232 Foto1233

UTS: Membuat Termometer + LCD dengan Arduino

Salaam, kembali lagi bersama tugas kuliah Human-Machine Interaction & Interface! Kali ini tugasnya agak berbeda, karena dinilai untuk UTS (Ujian Tengah Semester). Asik juga ya ujiannya ngeblog, tidak ujian tulis seperti kebanyakan ujian di jurusan lain.

Tugas (ujian) kali ini melanjutkan tugas yang lalu (membuat termometer). Namun ternyata nilai suhu yang ditangkap oleh sensor LM350 tidak sesuai dengan aslinya (lebih tinggi/lebih rendah) sehingga harus dilakukan kalibrasi.

Alat & Bahan

Alat dan bahan masih sama seperti posting sebelumnya, yang spesial kali ini adalah penambahan alat baru: LCD (dan kabelnya makin banyak).


Source Code

Screen Shot 2014-03-18 at 17.45.59

Kode program kali ini mengubah sedikit kode program sebelumnya (termometer). Kode yang diubah adalah bagaimana si Arduino memberikan output suhu (sebelumnya melalui serial monitor) ke layar LCD.

#include  // mengimpor library untuk output LCD

const int numRows = 2; // jumlah baris LCD (16x2)
const int numCols = 16; // jumlah kolom LCD (16x2)
const int inPin = 0; // input pin analog

// inisialisasi pin LCD yang dipasang ke Arduino
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
lcd.begin(numCols, numRows); // inisialisasi LCD
lcd.print("suhu sekarang : "); // output tulisan ke LCD
void loop()
int value = analogRead(inPin); // membaca input dari sensor suhu
float millivolts = (value / 1024.0) * 5000; // input sensor dalam satuan mV
float celsius = (millivolts / 10) - 0.18; // konversi mV ke C + kalibrasi (10mV/Celcius)
lcd.print(celsius); // tambahkan nilai Celcius ke LCD
lcd.print("C "); // tambahkan "C" ke LCD
lcd.print( (celsius * 9)/ 5 + 32 ); // tambahkan hasil konversi celcius ke fahrenheit
lcd.print("F "); // tambahkan "F" ke LCD
delay(1000); // tunggu 1 detik
// set kursor LCD ke (0,1) agar teks "suhu sekarang: " tidak tertimpa
lcd.setCursor(0, 1);


Awalnya kami cukup bingung bagaimana cara mengkalibrasi sensor ini karena tidak ada yang memiliki termometer. Akhirnya sambil hujan-hujanan kami berjalan ke LFD (lab fisika dasar). Di sana ada termometer ruangan.

Setelah sampai sana, kami bingung lagi karena termometer ruangannya jadul (kuno), sehingga akurasinya patut dipertanyakan 🙂 Tapi ya sudahlah kami percaya saja.

Perbedaan termometer Arduino kami dengan termometer ruangan itu 0.18˚C. Arduino lebih tinggi 0.18˚C. Karena itu kami mengurangi nilai celcius suhu dari sensor dengan 0.18˚C.