Embedded System Project : Communication & Bus Interface (Part 6)

Galuh Dipa Bharata
2 min readMar 19, 2021

--

Halo! kembali lagi di embedded system project, mari kita lanjutkan project ini. (edited)

Kemarin kita udah belajar gimana pakai eksternal sensor, dan kemarin juga kita udah belajar bagaimana kita menggunakan display. Nah sekarang itu gimana kita bisa menampilkan hasil dari eksternal sensor ke display nya.

Jadi ini alat-alat yang dibutuhkan :

Alat yang digunakan

Ada ESP32, OLED display 0.96", BME 280. Male-to-female jumper, dan tentunya Micro USB.

Alat nya udah ada, lalu schema buat sambungin semuanya, kurang lebih seperti ini:

Schema

Dapat dilihat kita pakai SDA dan SDI di line yang sama, padahal address dari Oled dan BME 280 berbeda, tapi hal ini gapapa, aman-aman aja. Jadi di aturnya di codenya, yaitu merujuk ke alamat masing-masing.

Nah itu adalah bagian ‘referensi langsung ke alamat oled dan BME nya’

Nah sebenernya masih belum terlalu paham sama kodenya, kurang lebih kodenya seperti ini.

/*
Rui Santos
Complete project details at https://RandomNerdTutorials.com/esp32-i2c-communication-arduino-ide/

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files.

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*/

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#define I2C_SDA 33
#define I2C_SCL 32

#define SEALEVELPRESSURE_HPA (1013.25)

TwoWire I2CBME = TwoWire(0);
Adafruit_BME280 bme;

unsigned long delayTime;

void setup() {
Serial.begin(115200);
Serial.println(F("BME280 test"));
I2CBME.begin(I2C_SDA, I2C_SCL, 100000);

bool status;

// default settings
// (you can also pass in a Wire library object like &Wire2)
status = bme.begin(0x76, &I2CBME);
if (!status) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}

Serial.println("-- Default Test --");
delayTime = 1000;

Serial.println();
}

void loop() {
printValues();
delay(delayTime);
}

void printValues() {
Serial.print("Temperature = ");
Serial.print(bme.readTemperature());
Serial.println(" *C");

// Convert temperature to Fahrenheit
/*Serial.print("Temperature = ");
Serial.print(1.8 * bme.readTemperature() + 32);
Serial.println(" *F");*/

Serial.print("Pressure = ");
Serial.print(bme.readPressure() / 100.0F);
Serial.println(" hPa");

Serial.print("Approx. Altitude = ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(" m");

Serial.print("Humidity = ");
Serial.print(bme.readHumidity());
Serial.println(" %");

Serial.println();
}

Nah sebenarnya ada sedikit eror, hanya karna kurang library saja, setelah download librarinya akhirnya aman, kurang lebih berikut alatnya setelah di run:

https://youtu.be/u1yceZ_gXeU

Terimakasih, semoga bermanfaat!

Galuh Dipa Bharata
18219100

--

--