Attack of The Bluetooth — Part 2

Ichsan Sholeh
ESP32 DEVKIT — AR Tech
6 min readMar 2, 2020

2 Maret 2020.

Halo! welcome back to tulisan medium gue yang kesekian. Tulisan ini gue buat ditengah kekeosan gue dengan tugas besar dan ujian yang sedang menghadang :). Jadi, doakan gue bisa survive dan bisa dapet indeks yang memuaskan ya guys hehe (re: A).

Kalo di postingan sebelumnya kita udah nyoba menghubungkan rangkaian DHT11 dan lampu LED dengan bluetooth pada smartphone, nah kali ini kita akan bermain-main lagi dengan bluetooth huehue. Penasaran, kan?

Jadi, untuk project kali ini, kita akan membuat rangkaian dengan display OLED (yang udah pernah gue bikin juga di postingan “The Force of ESP32”) yang nantinya kita dapat menuliskan sesuatu ke display tersebut menggunakan aplikasi serial bluetooth huehue.

Seperti biasa, sebelum kita memasuki ke tahap pengerjaan project kali ini, berikut adalah peralatan yang perlu kita siapkan:
1. Laptop
2. ESP32
3. HP Android
4. Arduino IDE
5. SSD1306 0.96 inch OLED Display
6. 5mm LED
7. Kabel jumper
8. Kabel micro USB
9. Breadboard
Berikut penampakannya:

Sama seperti project sebelumnya, sebenarnya project kali ini itu gak ribet-ribet amat.. asalkan.. kita bisa bikin potongan kodenya dengan benar aja nih huehue. Kenapa begitu? Karena pada tugas ini, kita juga gak punya file example atau sketch bawaan dari Arduino IDE-nya itu guys. Itu artinya, kita harus ngoding sendiri huehuehue.

Nah sekarang, mari kita lanjut ke bagian berikutnya!

Bluetooth Terminal Application

Untuk mengerjakan project kali ini kita akan membutuhkan aplikasi Bluetooth Terminal yang terinstall pada smartphone.

Salah satu aplikasi yang dapat kita gunakan adalah “Serial Bluetooth Terminal” yang bisa kita unduh pada play store.

Sumber: https://randomnerdtutorials.com/esp32-bluetooth-classic-arduino-ide/

Pin Wiring

Selanjutnya, kita perlu menyusun rangkaian sebelum mulai mempersiapkan kode untuk di-upload.

Sebenarnya dalam menghubungkan antara pin komponen ke pin ESP32, kita dapat memilih untuk menggunakan pin yang mana saja di ESP32 selama pin tersebut berfungsi sesuai komponennya.

Karena OLED Display yang akan kita gunakan akan menggunakan protokol I2C, maka kita harus menguhubungkan display ini dengan ESP32 menggunakan protokol I2C juga. Umumnya, pin I2C ESP32 adalah: (GPIO 22: SCL; GPIO 21: SDA). Lalu, untuk lampu LED akan gue hubungkan dengan GPIO25.

Berikut adalah penampakan skema rangkaian yang akan kita gunakan:

Sumber: https://randomnerdtutorials.com/esp32-esp8266-dht-temperature-and-humidity-oled-display/#more-85288

Kalo bingung kenapa di gambar itu ada DHT-nya, tenang aja. Itu gambar emang diambil dari project yang “The Force of ESP32”. Tujuan gue naro gambar itu supaya kebayang aja buat pin wiring untuk display OLED-nya hehe.

Menginstall Library

Sebelum mengupload kode, kita harus memastikan terlebih dahulu apakah library dari sensor dan display yang kita gunakan sudah terinstall pada Arduino IDE.

1. Installing SSD1306 OLED Library

Ada banyak library yang dapat kita gunakan untuk OLED display yangakan kita gunakan. Tetapi pada tugas kali ini kita akan menggunakan library dari Adafruit, yaitu: Adafruit_SSD1306 dan Adafruit_GFX library. Berikut langkah-langkah:

  1. Buka Arduino IDE dan pilih Sketch > Include Library > Manage Libraries. Selanjutnya Library Manager akan terbuka.
  2. Ketik “SSD1306” pada kolom pencarian dan install SSD1306 library dari Adafruit.

3. Setelah menginstall SSD1306 library from Adafruit, ketik “GFX” pada kolom pencarian dan install library tersebut.

Yeay! Selesai deh install library-nya. Sekarang, yuk ke bagian selanjutnya!

Kode program

Pada tahap ini kita akan membuat potongan program yang akan berfungsi untuk membuat apa yang kita ketikan pada serial bluetooth akan tercetak pada display OLED.

Seperti yang udah gue bicarakan tadi, pada project kali ini gue akan membuat potongan kode program tersebut sendiri dengan memanfaatkan potongan-potongan program yang sudah ada.

Eits, tapi tenang aja. Kalian jangan takut pusing. Karena, potongan kode program ini lagi-lagi akan gue berikan secara percuma. Iya. PERCUMA. Jadi, langsung aja. Berikut potongan kode programnya:

/*********
Ichsan Sholeh Abdurrahim
Complete project details at https://medium.com/@isansars
*********/
// Load libraries
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include "BluetoothSerial.h"
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// Check if Bluetooth configs are enabled
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
// Bluetooth Serial object
BluetoothSerial SerialBT;
// GPIO where LED is connected to
const int ledPin = 25;
// Handle received and sent messages
String message = "";
char incomingChar;
const long interval = 10000; // interval at which to publish sensor readingsvoid setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(115200);

// Bluetooth device name
SerialBT.begin("ESP32");
Serial.println("The device started, now you can pair it with bluetooth!");
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(2000);
display.clearDisplay();
display.setTextColor(WHITE);
}
void loop() {
delay(1000);
// clear display
display.clearDisplay();
// Read received messages (LED control command)
if (SerialBT.available()){
char incomingChar = SerialBT.read();
if (incomingChar != '\n'){
message += String(incomingChar);
}
else{
message = "";
}
display.setTextSize(2);
display.setCursor(0,0);
Serial.write(incomingChar);
display.print(message);
display.display();
}
// Check received message and control output accordingly
if (message =="on"){
digitalWrite(ledPin, HIGH);
}
else if (message =="off"){
digitalWrite(ledPin, LOW);
}
delay(20);
}

Selanjutnya, kita bisa mengkonfigurasi potongan kode tersebut sesuai dengan kreativitas kita masing-masing.

Melakukan Testing

Sekarang, jika sudah memastikan bahwa rangkaian yang kita buat sudah benar dan kode program yang kita buat sudah benar, kita dapat langsung meng-upload kode program ke ESP32.

Sekarang buka smartphone kita dan buka aplikasi “Serial Bluetooth Terminal”. Pastikan kita sudah mengaktifkan bluetooth tersebut.

Untuk menghubungkan bluetooth ke ESP32 pertama kali, kita perlu melakukan pairing terlebih dahulu.

Buka Devices. pilih ikon Settings dan pilih Pair new device. Selanjutnya kita akan mendapatkan list dari perangkat bluetooth yang akif, termasuk ESP32. Selanjutnya, lakukan pairing dengan ESP32.

Sekarang kembali ke Serial Bluetooth Terminal. Klik icon pada bagian atas untuk menghubungkan dengan ESP32. Nantinya kita akan mendapatkan pesan “Connected”.

Sumber: https://randomnerdtutorials.com/esp32-bluetooth-classic-arduino-ide/

Sekarang, kita dapat mulai mengetikkan tulisan yang kita inginkan, yang nantinya akan tercetak pada display OLED kita.

Sekarang, gue akan mencoba mengetikkan “Hello!” dan hasilnya…..

..

..

Voila! Tulisan “Hello!” pun muncul pada display huehue.

Selain itu, kita juga dapat mengetikkan pesan “on” dan “off” yang dapat mengontrol nyala atau tidaknya sebuah lampu LED.

Nah, gimana? Keren, kan? Gampang, kan? Hehe.

Jadi sebenarnya pada intinya, fungsi project ini adalah mengintegrasikan antara lampu LED, display OLED, dan juga fitur bluetooth pada ESP32.

Sekian dulu tulisan gue kali ini. Sekali lagi, doain gue ya supaya bisa survive dan bisa mendapatkan indeks yang bagus :)) aamiin. Well, semoga bermanfaat.

Enjoy!

--

--

Ichsan Sholeh
ESP32 DEVKIT — AR Tech

Information System and Technology Student at Bandung Institute of Technology