Reading Requirement:

Pada project ini akan membahas tentang pengaplikasian Flex Sensor + Arduino dan Geeknesia sebagai Monitoring System. Smart Fishing Monitoring System adalah aplikasi yang dipasang pada sebuah alat pancing yang dimana pada saat memancing ikan akan memberikan sinyal berupa indikator Led, buzzer, dan status di Geeknesia.


Gambaran aplikasi


Pada gambar di atas terlihat sensor dipasang pada ujung alat pancing, jadi ketika alat pancing melengkung Flex Sensor pun ikut melengkung sehingga merubah nilai resistansi dari sensor, fungsi Led dan Buzzer untuk memberikan sinyal bahwa alat pancing bereaksi atau tertarik oleh ikan, maka ketika seseorang memancing dengan banyak alat pancing, orang tersebut akan sangat terbantu, dan bisa cepat mengambil tindakan karena orang tersebut akan tahu mana alat pancing yang bereaksi dan mana yang tidak, dengan acuan LED, Buzzer, dan Geeknesia. Pada project ini kontroler yang dipakai harusnya berukuran kecil, untuk menyesuaikan penempatan komponen pada alat pancing, bisa menggunakan Esp8266 atau kontroler lainnya, namun pada tutorial ini hanya memberikan contoh simulasi project yang dimaksud, dengan menggunakan Arduino UNO.


Alat dan Bahan yang diperlukan:

  • Arduino UNO + Ethernet Shield
  • Flex Sensor
  • Led
  • Buzzer
  • Resistor 220 ohm dan 3k3 ohm
  • Kabel LAN
  • Kabel Jumper

Arduino Uno

Ethernet Shield

Flex Sensor

Led

Buzzer

Resistor

Kabel LAN

Kabel Jumper


Flex Sensor Pinout



Ikuti Tahap-tahap berikut ini:


Tahap 1

Pastikan anda sudah membuat ProjectGateway, dan Device pada akun Geeknsia anda.


Tahap 2

Rangkai komponen yang telah disiapkan, seperti gambar di bawah ini:


Flex Sensor merupakan sensor analog, maka dari itu Flex Sensor dihubungkan ke pin Analog Input Arduino (A0), dikarenakan LED pada project ini intensitas cahayanya dikontrol oleh Analog Input dari Flex Sensor, jadi Led dihubungkan ke pin Digital Output (D5 PWM) , dan Buzzer dihubungkan ke Digital Output biasa (D2).

Tahap 3

Buatlah script Arduino seperti di bawah ini:

 

Script 

#include <SPI.h>
#include <Ethernet.h>
#include <PubSubClient.h>

const int ledPin = 5;   //pin 5 has PWM funtion
const int flexPin = A0; //pin A0 to read analog input
const int outpin = 2;
int value;
int value1;
String flag;

// Update these with values suitable for your network.
byte mac[]    = {  0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xDE };
byte ip[]     = { 192, 168, 2, 30 };
byte dns2[]   = { 8,8,8,8};
byte gateway[] = { 192, 168, 2, 1 };
char pubschar1 [20];
char message_buff[200];
EthernetClient ethClient;
PubSubClient client("geeknesia.com", 1883, callback, ethClient);
void callback(char* topic, byte* payload, unsigned int length) {
}
// device details
char *deviceId = "device-4407e1d312d262e32f03e1e66xxxxxxx";
char *deviceUsername = "e37fe287911430fe7312be64exxxxxxx";
char *devicePassword = "b75572b99c386b9a937bd7378xxxxxxx";
String deviceCredential = String(deviceUsername) + ":" + String(devicePassword);

void senddata(char* topic,String credential, char *var1, String nilai1 ){
  String pubString  = "{\"code\":\"";
  pubString += credential;
  pubString +="\",";
  pubString +="\"attributes\":{\"";
  pubString +=String(var1)+"\":\""+nilai1+"\"";
  pubString +="}}";
  char message_buff[pubString.length()+1];
  pubString.toCharArray(message_buff, pubString.length()+1);
  client.publish("iot/data",message_buff);    
}
void setup(){
  Ethernet.begin(mac, ip,dns2,gateway);
  pinMode(ledPin, OUTPUT);
  pinMode(outpin, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  client.publish("iot/live",deviceId);
  if (!client.connected()){
  client.connect(deviceId,NULL,NULL,"iot/will",2,64,deviceId);
  }
  value = analogRead(flexPin); 
  Serial.println(value);
  value1 = map(value, 700, 900, 0, 255);  //Map value 0-1023 to 0-255 (PWM)
  analogWrite(ledPin, value1);          //Send PWM value to led
  if (value>=950){
    flag="Fish ON";
    digitalWrite(outpin, HIGH);
  }
  else{
    flag="No Fish";
    digitalWrite(outpin, LOW);
  }
  senddata(deviceId,deviceCredential,"Pancingan", flag);
  delay(500);  
} 

  

Sesuaikan script di atas dengan data-data yang anda miliki.

Yang perlu diganti pada script di atas:

  • Ganti settingan koneksi seperti IP Address dan IP Gateway.
  • Masukan Device IDUsername, dan Password project Geeknesia anda.
  • Kemudian upload script yang telah dibuat ke arduino yang telah disiapkan.


Tahap 4

Buka kembali Geeknesia Project yang telah dibuat sebelumnya, kemudian lakukan lah pengetesan pada hardware atau sensor yang telah tehubung dengan Analog Input Arduino.


Tes pertama : Biarkan sensor atau hardware dalam posisi normal (tanpa disentuh).

Ini adalah gambar pada saat posisi normal.

Pada gambar di atas terlihat bahwa posisi sensor tegak, lampu Led menyala redup dan buzzer dalam kondisi off. Dan ini adalah status yang tertampil di Geeknesia pada saat posisi normal atau alat pancing tidak tertarik (melengkung).


Tes berikutnya : Tarik atau lengkungkan bagian sensor, yang mensimulasikan bahwa alat pancing tertarik oleh ikan, seperti gambar di bawah ini.

Ini adalah gambar ketika sensor ditarik atau dilengkungkan.

Ketika Flex Sensor dilengkungkan terlihat bahwa indikator Led menyala terang, Buzzer akan berbunyi, dan Status di Geeknesia akan berubah, dengan tujuan memberi tanda kepada pemancing untuk segera menggangkat alat pancing, dan ini adalah status ketika sensor melengkung atau alat pancing tertarik oleh ikan.


Catatan: 
Alarm atau status yang tertampil di Geeknesia bisa dikatakan "Fish ON" tergantung dari nilai resistansi yang dihasilkan Flex Sensor dan diterima oleh Arduino, maka jika ingin mensetting seberapa besar sudut lengkung Flex Sensor ketika memberikan sinyal atau alarm, anda bisa mensetting pada script Arduino yang telah dibuat.

Pin PWM Output Arduino => D3,D5,D6,D9,D10, dan D11.