Real Project Example

Last updated: January 30 th, 2017

Geeknesia Microcontroller & IOT Starter Kit

Geeknesia Kit

Sebuah Starter Kit Lengkap dari Geeknesia untuk mempelajari IOT dan Micro Controller dengan mudah melalui praktek secara langsung.
Starter Kit ini menyediakan development board ESP 8266 tipe WeMos D1 yang compatible dengan board arduino sehingga mudah dipahami, muda diperlajari, dan mudah dimengerti. Dalam kit ini tersedia komponen elektronik lengkap untuk berbagai keperluan tutorial dan project real.

Read More or Buy Now !

Flood Monitoring

Reading Requirement:

Tutorial ini akan membahas tentang cara membuat aplikasi Pendeteksi Banjir menggunakan Geeknesia sebagai Media Informasi, pada aplikasi ini sensor yang digunakan yaitu Ultrasonic Sensor. Berikut alat dan bahan yang dibutuhkan :

 

  • Arduino + Ethernet Shield
  • Ultrasonic Sensor
  • Kabel LAN
  • Kabel Jumper
  • Proto board

 

Arduino UNO

Ethernet Shield

Ultrasonic Sensor

Kabel LAN

Proto Board

Kabel Jumper

 

Berikut ini adalah pin out Ultrasonic Sensor

 

Tahap 1

Pastikan sudah membuat Project,Gateway dan Device pada akun Geeknesia anda, buatlah project dengan judul "Sensor Banjir", kemudian buatlah Gateway dengan nama "Sensor Banjir" dan buatlah Device dengan nama "Pendeteksi Banjir".

 

Tahap 2

Pada tahap berikutnya rangkailah Ultrsonic Sensor ke arduino board, ikuti tabel wiring di bawah ini:

Ultrasonic SensorArduino
Vcc 5vVcc 5v
TriggerPin 8
EchoPin 7
GndGnd

 

  

Pasangkan atau tumpukan Ethernet Shield yang telah disediakan ke arduino board, kemudian rangkailah Vcc ultrasonic sensor ke Vcc 5v Arduino, Ground dari Ultrasonic Sensor ke Ground arduino, Pin Trigger ke Pin 8 arduino dan Pin Echo ke Pin 7 arduino, untuk pin 7 dan pin 8 dari arduino bisa diganti dengan pin lain dengan cara setting pada script arduino, misalnya pin yang digunakan pin 11 dan pin 12 maka di set sesuai dengan program arduino.

 

Tahap 3

Sebelum  membuat script arduino, download library Ultrasonic Sensor terlebih dahulu ikuti link Ultrasonic Library, kemudian include library, Klik Sketch => Include Library => Add,ZIP Library => Pilih file library. 

 

 

Tahap 4  

Buatlah script seperti di bawah ini :

 

Script  

#include 
#include 
#include 
#include 


#define TRIGGER_PIN 8 // Arduino pin tied to trigger pin on the ultrasonic sensor.

#define ECHO_PIN 7



// Arduino pin tied to echo pin on the ultrasonic sensor.

#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.



NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.



// Update these with values suitable for your network.

byte mac[] = {  0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xDE };

byte ip[] = { 192, 168, 2, 30 }; //your ip

byte dns2[] = { 8,8,8,8};

byte gateway[] = { 192, 168, 2, 1 }; //Your ip gateway

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);

  Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.

}



void loop() {

  client.publish("iot/live",deviceId);

  if (!client.connected()){

     client.connect(deviceId,NULL,NULL,"iot/will",2,64,deviceId);

  }

  delay(100); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.

  unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS).

  unsigned int flag=(uS / US_ROUNDTRIP_CM);

  String flagS;



  if (flag<=5){

    Serial.println("Banjir");

    flagS = "Banjir";

  }

  else{

    Serial.println("Normal");

    flagS = "Normal";

  }

  senddata(deviceId,deviceCredential,"Kondisi", flagS);

}
 

Pada script di atas bagian #define TRIGGER_PIN 8 dan #define ECHOPIN 7  bisa diganti menggunakan pin lain, misal:   

#define TRIGGER_PIN 12 //Trigger pin menggunakan pin 12

#define ECHOPIN 11 //Echo pin menggunakan pin 11

 

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 5

Buka kembali project yang telah dibuat pada akun Geeknesia anda. Jika hardware telah terhubung dengan Geeknesia, maka tampilan akan seperti gambar di bawah ini.

 

Kondisi saat tidak banjir, status Current Output (Normal).

 

 

Kemudian tes sensor yang telah di rangkaikan ke arduino board seperti gambar di bawah ini.

 

Berikut, kondisi ketika jarak antara penghalang (permukaan air) dan sensor berjarak 5 cm atau kurang dari 5 cm.

 

Gambar di bawah ini adalah gambaran dari aplikasi pada project pendeteksi banjir yang telah dibuat.

Gambar ketika kondisi Normal dalam kata lain tidak terjadi banjir.

 

 

Dan ini adalah gambar ketika kondisi Banjir, pada project ini, kondisi dapat dinyatakan banjir ketika jarak antara permukaan air dengan sensor berjarak 5 cm atau kurang dari 5 cm, jika ingin diatur lebih jauh atau dekat kita bisa merubah script program pada arduino.