Wednesday, August 21, 2019

PROJECT THINGSBOARD

PROJECT THINGSBOARD


Pada project kali ini akan  memonitoring jarak benda yang berada di depan sensor, menggunakan sensor ultrasonik dengan platform Thingsboard, melalui ESP32 yang terkoneksi dengan internet. Sebelum membuat project ini  siapkan alat-alat yang diperlukan sebagai berikut:
  • ESP32
  • Sensor ultrasonik
  • Breadboard
  • Jumper male-male (4 buah)

Selanjutnya rangkai rangkaian seperti pada gambar dibawah ini:

ultrasonik%2Besp

Setelah terhubung dengan baik sesuai dengan gambar, buka aplikasi Arduino IDE. Apabila belum pernah menginstall dan mengupload program menggunakan Arduino IDE bisa pelajari terlebih dahulu dalam postingan sebelumnya disini.

Download library Thingsboard, PubSub, ArduinoHttpCLient, Arduinojson. Apabila blm pernah download dan memasukkan library ke arduino IDE bisa pelajari disini.

Arduino%2Bhttp%2Bclient

arduino%2Bjson

PubSub

thingsboard

Buka http://demo.thingsboard.io menggunakan web browser, apabila belum mempunyai akun thingsboard buat akun terlebih dahulu. Setelah masuk ke thingsboard buat devices baru yang akan digunakan untuk monitoring dengan cara klik Devices >>tombol +>>add new device, seperti pada gambar dibawah ini:
thingsboard7


buat nama device baru sesuai dengan keinginan dan pilih device type DEMO, setelah itu klik add. 
thingsboard8


Untuk mengirim data dari esp32 ke thingsboard memerlukan token devices thingsboard. untuk mendapatkan token  klik nama device yang telah dibuat>>details>>copy access token. token tersebut yang akan dipaste ke program yang telah dibuat diarduino IDE.

thingsboard2

setelah selesai membuat device pada thingsboard upload sketch berikut ini pada arduino IDE ke ESP32. 
.
.
#include <WiFi.h> // WiFi control for ESP32
#include <ThingsBoard.h> // ThingsBoard SDK
// Helper macro to calculate array size
#define COUNT_OF(x) ((sizeof(x)/sizeof(0[x])) / ((size_t)(!(sizeof(x) % sizeof(0[x])))))
int quant = 20;
// WiFi access point
#define WIFI_AP_NAME "rea"
// WiFi password
#define WIFI_PASSWORD "rearamada12"
int send_passed = 0;
// See https://thingsboard.io/docs/getting-started-guides/helloworld/ 
// to understand how to obtain an access token
#define TOKEN "token"
// ThingsBoard server instance.
#define THINGSBOARD_SERVER "demo.thingsboard.io"
int send_delay = 2000;
// Baud rate for debug serial
#define SERIAL_DEBUG_BAUD 115200
const int trigPin = 2;
const int echoPin = 5;
bool subscribed = false;
// defines variables
long duration;
int distance;

// Initialize ThingsBoard client
WiFiClient espClient;
// Initialize ThingsBoard instance
ThingsBoard tb(espClient);
int status = WL_IDLE_STATUS;

void setup() {
// Initialize serial for debugging
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
Serial.begin(SERIAL_DEBUG_BAUD);
Serial.print("Connecting to: "); Serial.println(WIFI_AP_NAME);
WiFi.begin(WIFI_AP_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected\n");
}
void loop() {
send_passed += quant;
delay(quant);
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);

// Calculating the distance
distance= duration*0.034/2;

// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
if (WiFi.status() != WL_CONNECTED) {
return;
}
if (!tb.connected()) {
subscribed = false;

// Connect to the ThingsBoard
Serial.print("Connecting to: ");
Serial.print(THINGSBOARD_SERVER);
Serial.print(" with token ");
Serial.println(TOKEN);
if (!tb.connect(THINGSBOARD_SERVER, TOKEN)) {
Serial.println("Failed to connect");
return;
}
}

if (send_passed > send_delay) {
Serial.println("Sending data...");

// Uploads new telemetry to ThingsBoard using MQTT. 
// See https://thingsboard.io/docs/reference/mqtt-api/#telemetry-upload-api 
// for more details

tb.sendTelemetryFloat("distance", distance);
send_passed = 0;
}
// Process messages
tb.loop();
}
void InitWiFi()
{
Serial.println("Connecting to AP ...");
// attempt to connect to WiFi network

WiFi.begin(WIFI_AP_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to AP");
}

void reconnect() {
// Loop until we're reconnected
status = WiFi.status();
if ( status != WL_CONNECTED) {
WiFi.begin(WIFI_AP_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to AP");
}
}
.


ubah WIFI_AP_NAME "rea" WIFI_PASSWORD "rearamada12" sesuai dengan nama dan password hotspot yang akan digunakan. ubah "token" sesuai dengan token yang sudah di copy pada saat membuat device sebelumnya. Selanjutnya upload sketch tersebut ke ESP32.

Buka serial monitor pada Arduino IDE. sesuaikan baud rate yang digunakan pada program tadi, apabila ESP32 sudah connect ke wifi akan muncul tampilan seperti gambar dibawah ini:

thingsboard6

buka devices thigsboard yang telah dibuat tadi, kemudian klik latest telemetry, disini dapat dilihat  data jarak dari ESP32 akan masuk. 
thingsboard3

Apabila ingin memunculkan pada dashboard pada thingsboard, buat dashboard terlebih dahulu. selanjutnya klik devices yang telah dibuat, pada latest telemetry checklist last update time, pilih current bundle sesuai yang diinginkan, dan klik add dashboard. pilih dashboard yang telah dibuat sebeumnya.
thingsboard4

buka dasboard yang telah dibuka, maka akan muncul dara jarak benda seperti pada gambar dibawah ini:
thingsboard1

No comments:

Post a Comment