[II2260 — Embedded System, 4th Project] ESP32 Sensor : External Sensor
— Pengantar
Setelah membuat project ketiga (ESP32 internal sensor), selanjutnya kita akan membahas tentang sensor eksternal menggunakan bmp180 (di sini saya juga menggunakan bmp280). Langsung saja kita mulai!
— Komponen
Komponen yang akan digunakan yaitu :
- ESP32 + Breadboard
2. Kabel micro USB
3. Sensor BMP180 / Sensor BMP280
4. Kabel jumper male to male
5. Lampu LED
6. Resistor dengan magnitudo yang disesuaikan
— Hands-On
- Sambungkan pin GPIO22 di esp32 ke pin SCL di BMP180
- Sambungkan pin GPIO21 di esp32 ke pin SDA di BMP180
- Sambungkan pin 3v3 di esp32 ke pin VCC di BMP180
- Sambungkan pin GND di esp32 ke pin GND di BMP180
5. Buka Arduino IDE kalian, dan silahkan install library Adafruit BMP085 Adafruit Unified Sensor, dan Adafruit BMP280 Library (untuk BMP280)
6. Setelah melakukan instalasi, salin dan upload code berikut pada Arduino IDE kalian
#include <Wire.h>
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;
void setup() {
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085/BMP180 sensor, check wiring!");
while (1) {}
}
}
void loop() {
Serial.print("Temperature = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bmp.readPressure());
Serial.println(" Pa");
// Calculate altitude assuming 'standard' barometric
// pressure of 1013.25 millibar = 101325 Pascal
Serial.print("Altitude = ");
Serial.print(bmp.readAltitude());
Serial.println(" meters");
Serial.print("Pressure at sealevel (calculated) = ");
Serial.print(bmp.readSealevelPressure());
Serial.println(" Pa");
// you can get a more precise measurement of altitude
// if you know the current sea level pressure which will
// vary with weather and such. If it is 1015 millibars
// that is equal to 101500 Pascals.
Serial.print("Real altitude = ");
Serial.print(bmp.readAltitude(102000));
Serial.println(" meters");
Serial.println();
delay(500);
}
7. Setelah berhasil diupload, lalu buka serial monitor kalian dan pilih 9600 baud dan hasilnya akan seperti video berikut.
— Extra Project
Setelah berhasil melakukan pembacaan pada sensor BMP180, kita akan memvariasikan hasil project kita dengan mengganti BMP180 menjadi BMP280 ditambah dengan komponen LED dan resistor. Adapun konsep project yang akan kita buat ialah ketika pembacaan suhu di atas 30 derajat celcius dan pembacaan tekanan di atas 92595 pascal, maka lampu kedua LED akan menyala. Kalian bisa menyesuaikan kondisinya sesuka kalian.
Adapun langkah-langkahnya seperti berikut :
- Sambungkan pin GPIO22 di esp32 ke pin SCL di BMP280
- Sambungkan pin GPIO21 di esp32 ke pin SDA di BMP280
- Sambungkan pin GND di esp32 ke pin GND di BMP280
- Sambungkan pin 3v3 di esp32 ke pin VIN di BMP280
- Sambungkan pin GPIO5 dan GPIO4 di esp32 ke pin positif di LED
- Sambungkan pin GND di BMP280 ke pin negatif di LED
7. Lalu salin dan upload code berikut
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BMP280.h>
#define BMP_SCK (13)
#define BMP_MISO (12)
#define BMP_MOSI (11)
#define BMP_CS (10)
Adafruit_BMP280 bmp; // I2C
//Adafruit_BMP280 bmp(BMP_CS); // hardware SPI
//Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);
void setup() {
Serial.begin(9600);
Serial.println(F("BMP280 test"));
if (!bmp.begin(0x76)) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
while (1);
}
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
/* Default settings from datasheet. */
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
Adafruit_BMP280::FILTER_X16, /* Filtering. */
Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
if (bmp.readTemperature()>30){ /* Ganti 30 dengan suhu sesuka kalian */
digitalWrite(4,HIGH);
}
else{
digitalWrite(4,LOW);
}
if (bmp.readPressure()>92595){ /* Ganti 92595 dengan tekanan sesuka kalian */
digitalWrite(5,HIGH);
}
else{
digitalWrite(5,LOW);
}
Serial.print(F("Temperature = "));
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print(F("Pressure = "));
Serial.print(bmp.readPressure());
Serial.println(" Pa");
Serial.print(F("Approx altitude = "));
Serial.print(bmp.readAltitude(1013.25)); /* Adjusted to local forecast! */
Serial.println(" m");
Serial.println();
delay(2000);
}
8. Setelah berhasil diupload, lalu buka serial monitor kalian dan pilih 9600 baud dan hasilnya akan seperti video berikut.
Dengan berhasilnya extra project merupakan akhir dari project keempat ini. Jika ada pertanyaan atau masalah, silahkan tulis di kolom komentar. Sekian dan terima kasih!