Halo, apa kabar semuanya? Perkenalkan kembali saya Muhammad Vito Ibrahim. Pada kesempatan kali ini saya akan mencoba display OLED i2c dan sensor BMP180 yang dihubungkan dengan ESP32
Nah , project kali ini juga merangkap sebagai rekam jejak atau laporan saya untuk mata kuliah ( II2260 Sistem Embedded ). Agar lebih detail kali ini saya akan mencoba menampilkan hasil bacaan sensor BMP180 ke layar OLED. Selain BMP180, sensor lainnya yang sejenis misalnya BME280 juga dapat digunakan.Display OLED dan BMP180 pada ESP32
Perangkat dan komponen yang digunakan:
1. Mikrokontroler ESP32 Development Board
2. Arduino IDE
3. Laptop/Desktop dengan USB port
4. Kabel micro usb to USB A ( kabel data/charger biasanya )
5. Breadboard ( Dapat digunakan maupun tidak)
6. Kabel Jumper ( siapkan ketiga jenis model kabel yaitu F-F, F-M, dan M-M untuk antisipasi)
7. OLED 128x64 i2c
8. Sensor BMP180
Penjelasan beberapa perangkat dan komponen:
1. Mikrokontroler adalah sebuah komputer kecil yang dikemas dalam bentuk chip IC (Integrated Circuit) dan dirancang untuk melakukan tugas atau operasi tertentu.
2. ESP-32 Development Board adalah adalah mikrokontroler chip dengan rangkaian sistem hemat biaya dan rendah daya pada dilengkapi Wi-Fi yang terintegrasi dan Bluetooth.
3. Arduino IDE (Integrated Development Environment) adalah software yang di gunakan untuk memprogram di arduino, dengan kata lain Arduino IDE sebagai media untuk memprogram board Arduino. Pada kali ini bisa juga digunakan untuk memprogram mikrokontoler lainnya yaitu ESP32 dengan konfigurasi tambahan.
4. Breadboard adalah papan tempat komponen elektronik tanpa harus disolder.
5. Kabel jumper adalah kawat listrik, atau kabel, dengan konektor atau pin di setiap ujungnya, yang biasanya digunakan untuk menghubungkan komponen pada breadboard.
6. OLED adalah layar yang memiliki panel.
7. BMP180 adalah sensor yang mendeteksi ketinggian, suhu, dan tekanan.
Pendahuluan :
Kali ini saya akan mencoba menggunakan sensor BMP180 agar menampilkan hasil deteksi atau bacaan pada display OLED dengan menggunakan mikrokontroler ESP32 untuk memprogram dan menghubungkan kedua komponen tersebut.
Langkah pengerjaan :
a. wiring dan menghubungkan sensor BMP180 dan display OLED ke ESP32.
Hubungkan pin 3.3 V ESP32 ke VIN BMP180
Hubungkan pin GND 3.3 V ESP32 ke GND BMP180
Hubungkan pin GPIO 22 ESP32 ke SCL BMP180
Hubungkan pin GPIO 21 ESP32 ke SDA BMP180
Hubungkan pin VIN BMP180 ke VCC OLED
Hubungkan pin GND BMP180 ke GND OLED
Hubungkan pin SCL BMP180 ke SCL OLED
Hubungkan pin SDA BMP180 ke SDA OLED
b. menulis kode program, serta compile dan run di Arduino IDE
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_BMP085.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.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)
// The pins for I2C are defined by the Wire-library.
// On an arduino UNO: A4(SDA), A5(SCL)
// On an arduino MEGA 2560: 20(SDA), 21(SCL)
// On an arduino LEONARDO: 2(SDA), 3(SCL), ...
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3D ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
#define NUMFLAKES 10 // Number of snowflakes in the animation example
#define LOGO_HEIGHT 16
#define LOGO_WIDTH 16
Adafruit_BMP085 bmp;
void setup() {
Serial.begin(115200);
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
// Show initial display buffer contents on the screen --
// the library initializes this with an Adafruit splash screen.
display.display();
delay(2000); // Pause for 2 seconds
// display.display() is NOT necessary after every single drawing command,
// unless that's what you want...rather, you can batch up a bunch of
// drawing operations and then update the screen all at once by calling
// display.display(). These examples demonstrate both approaches...
// Clear the buffer
display.clearDisplay();
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
while (1) {}
}
}
void loop() {
printValues();
}
void printValues(){
display.setTextSize(1);
display.setTextColor(WHITE);
display.print(F("Suhu = "));
display.print(bmp.readTemperature());
display.println(F(" *C"));
display.setTextSize(1);
display.setTextColor(WHITE);
display.print(F("Tekanan = "));
display.print(bmp.readPressure());
display.println(F(" Pa"));
display.setTextSize(1);
display.setTextColor(WHITE);
display.print(F("Ketinggian = "));
display.print(bmp.readAltitude());
display.println(F(" meter"));
delay(1000);
display.display();
}Penjelasan kode di atas :
menambahkan library BMP180 dan OLED
pada void setup menginisialisasi BMP180 dan OLED
pada void loop menampilkan bacaan ke layar
c. hasil
Kompilasi video pengerjaan :
Error dan troubleshooting:
Saya sempat mengalami kendala gagal menampilkan bacaan ke layar OLED, karena salah wiring ke sensor BMP180. Solusinya adalah pastikan wiring ke antar komponen sudah benar dan sesuai.
Kesimpulan:
Menampilkan hasil bacaan dan deteksi dari sensor BMP180 pada layar OLED yang berupa teks dengan menuliskan baris kode di ESP32 untuk menghubungkan kedua komponen perangkat tersebut.
Referensi :
1. randomnerdtutorials.com
2. wikipedia





0 Komentar