Pages

Subscribe Twitter Twitter

Sunday, August 18, 2019

Mengukur Jarak berbasis ESP32 dan Sensor Ultrasonik (Platform ThingsBoard)

Ide:

Idenya adalah mengukur jarak menggunakan sensor ultrasonik dimana ESP32 berperan sebagai pemproses data dan mengirimkan data yang telah diolah ke platform IoT. Platform ThingsBoard digunakan untuk menampilkan hasil data sensor ultrasonik dalam bentuk grafik

Alat & Bahan:

1. ESP32 & Kabel USB
2. Sensor Ultrasonik
3. Breadboard & Jumper

Scematic Rangkaian:



Program:

#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");
}
}

Cara Kerja Alat dan Hasil:

1. Buka ThingsBoard (www.thingsboard.io) dan buat device baru yang digunakan untuk memonitoring (Device> klik +> add new device). Buat nama device dan device type DEMO kemudian klik add.



2. Setelah itu copy token (klik device yang dibuat> details> copy access token) ke program Arduino IDE yang akan diupload ke ESP32. Jangan lupa untuk merubah nama WiFi dan password WiFi yang digunakan. Lalu upload program.


3. Buka serial monitor pada software arduino IDE (pastikan baud rate sudah sesuai dengan yang ditulis di program). Serial monitor akan menampilkan status koneksi WiFi dan jarak benda yang diukur.


4. Buka thingsboard dan data jarak benda akan di tampilkan di latest telemetry. Untuk memunculkan data dalam bentuk grafik maka harus membuat dashboard terlebih dahulu (Dashboard> Create New Dashboard> Add). Kembali ke devices yang telah dibuat> pada latest telemetry checklist last update time> klik show on widget> pilih current bundle sesuai yang diinginkan> klik add dashboard> pilih dashboard yang telah dibuat sebeumnya. Buka dashboard, maka akan muncul tampilan seperti ini:

1 comments:

Post a Comment