Jobsheet 10 Dan 11
Jobsheet 10 Dan 11
JOBSHEET : 10 dan 11
2. JUDUL : DASAR PEMROGRAMAN ESP32 UNTUK
DAN DIGITAL
3. TUJUAN
1) Mahasiswa dapat memahami dan mengoperasikan GPIO pada ESP32.
2) Mahasiswa dapat memahami dan melakukan pengolahan data untuk
input/output analog dan digital.
3) Mahasiswa dapat melakukan optimalisasi pembacaan sensor analog
menggunakan metode regresi linear.
4. ALAT DAN BAHAN
1) ESP32 5) Sensor Capacitive Soil Moisture
2) Breadboard 6) LED (5) dan Push Button (3)
3) Kabel jumper 7) Multimeter
4) Potensiometer 10k Ohm (1) 8) Resistor 330,1K, 10K Ohm (@ 3)
5. TEORI SINGKAT
Gambar 5.1 merupakan susuan pin pada modul ESP32. Pada pin out tersebut
terdiri dari :
Pin analog pada ESP32 (dan mikrokontroller lain pada umumnya) dapat
digunakan sebagai input dan output digital. Hanya saja pin analog memiliki fitur
untuk dapat mengubah sinyal analog yang masuk menjadi nilai digital yang
mudah diukur. Pin digital hanya dapat mengenali sinyal 0 volt sebagai nilai LOW
dan 3,3 volt sebagai nilai HIGH. Sedangkan pin analog dapat mengenali sinyal
pada rentang nilai voltase tersebut.
Kondisi HIGH adalah kondisi ketika sinyal berada di atas grafik (3,3V) dan
LOW adalah ketika sinyal berada di bawah (0V). Duty cycle adalah persentasi
panjang pulsa HIGH dalam satu periode sinyal. Ketika duty cycle 0% atau sinyal
LOW penuh, maka nilai analog yang dikeluarkan adalah 0V atau setara dengan
GND. Jika pulsa HIGH muncul selama setengah dari periode sinyal, maka duty
cycle yang dihasilkan adalah 50% yang berarti sinyal analog yang dihasilkan
sebesar setengah dari tegangan analog maksimal yaitu 1/2 dari 3,3 V atau sama
dengan 1,65 V. Ketika duty cycle 100% atau sinyal penuh maka sinyal yang
dikeluarkan adalah 3.3V.
Regresi dapat dibedakan menjadi tiga jenis, yaitu regresi linier, regresi multi
linier dan regresi tak linier. Di dalam model regresi linier terdapat dua jenis
variabel yaitu variabel bebas atau input tegangan (X) dan variabel tak bebas atau
output sensor (Y). Dalam bentuk yang paling sederhana, regresi linier
direpresentasikan pada persamaan (5.1).
𝑌 = 𝐴 + 𝐵𝑥 (5.1)
Di mana 𝐴 disebut sebagai sumbu awal dan 𝐵 adalah koefisien arah atau
koefisien beta.
6. LANGKAH PERCOBAAN
A. Instalasi Board ESP32 pada Arduino IDE
1. Buka Arduino IDE
2. Kemudian klik Menu File > Preferences
3. Pada kolom Additional ... yang ada dibawah, tambahkan link berikut
https://dl.espressif.com/dl/package_esp32_index.json
4. Klik menu Tools > Board: > Pilih Boards Manager ...
5. Pada kolom pencarian tulis ESP32 kemudian install dan tunggu sampai
selesai.
void setup() {
Serial.begin(115200);
// initialize the pushbutton pin as an input
pinMode(buttonPin, INPUT);
// initialize the LED pin as an output
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the state of the pushbutton value
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH
if (buttonState == HIGH) {
// turn LED on
digitalWrite(ledPin, HIGH);
} else {
// turn LED off
digitalWrite(ledPin, LOW);
}
}
4. Tambahkan 1 LED dan 1 push button pada rangkaian, kemudian kembangkan
program agar ketika push button ke-2 ditekan, LED akan melakukan blink
setiap 500 ms sekali. Kemudian dokumentasikan hasilnya.
5. Tambahkan 3 LED dan 1 push button pada rangkaian, kemudian kembangkan
program agar ketuka push button ke-3 ditekan, LED akan menyala menjadi
running led (menyala bergantian dari kiri ke kanan). Setelah itu
dokumentasikan hasilnya.
2) PWM
1. Buatlah rangkaian seperti pada gambar di bawah ini.
void setup(){
// configure LED PWM functionalitites
ledcSetup(ledChannel, freq, resolution);
void loop(){
// increase the LED brightness
for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){
// changing the LED brightness with PWM
ledcWrite(ledChannel, dutyCycle);
delay(15);
}
3. Upload program tersebut, kemudian amati dan analisis apa yang terjadi serta
dokumentasikan hasilnya.
4. Buatlah program lanjutan seperti pada script berikut ini.
void setup(){
// configure LED PWM functionalitites
ledcSetup(ledChannel, freq, resolution);
void loop(){
// increase the LED brightness
for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){
// changing the LED brightness with PWM
ledcWrite(ledChannel, dutyCycle);
delay(15);
}
void setup() {
Serial.begin(115200);
delay(1000);
}
void loop() {
// Reading potentiometer value
potValue = analogRead(potPin);
Serial.println(potValue);
delay(500);
}
3. Putar potensiometer secara perlahan agar mendapatkan nilai 0 hingga 4095
pada tampilan serial monitor. Analisis apa yang terjadi dan dokumentasikan
hasilnya.
4. Buatlah program seperti pada script berikut ini.Tambahkan LED pada GPIO
5.
// These constants won't change. They're used to give names to the pins used:
const int analogInPin = 34; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 5; // Analog output pin that the LED is attached to
void setup() {
Serial.begin(115200); // initialize serial communications at 115200 bps:
void loop() {
sensorValue = analogRead(analogInPin); // read the analog in value:
outputValue = map(sensorValue, 0, 4095, 0, 255); // map it to the range of the analog out:
analogWrite(analogOutPin, outputValue); // change the analog out value:
// print the results to the Serial Monitor:
Serial.print("sensor = ");
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.println(outputValue);
int inputPin = 2;
void setup() {
// initialize serial communication with computer:
Serial.begin(9600);
// initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings[thisReading] = 0;
}
}
void loop() {
// subtract the last reading:
total = total - readings[readIndex];
// read from the sensor:
readings[readIndex] = analogRead(inputPin);
// add the reading to the total:
total = total + readings[readIndex];
// advance to the next position in the array:
readIndex = readIndex + 1;
int inputPin = 2;
void setup() {
// initialize serial communication with computer:
Serial.begin(9600);
// initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings[thisReading] = 0;
}
}
void loop() {
// subtract the last reading:
total = total - readings[readIndex];
// read from the sensor:
readings[readIndex] = analogRead(inputPin);
// add the reading to the total:
total = total + readings[readIndex];
// advance to the next position in the array:
readIndex = readIndex + 1;
vs = (3.3/4095)* average;
Serial.println(vs);
}
7. Catat keluaran dari vs.
8. Masukkan semua data pada tabel Excel menggunakan format berikut ini.
3 Way
Meter ADC V out Vs
int inputPin = 2;
void setup() {
// initialize serial communication with computer:
Serial.begin(9600);
// initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings[thisReading] = 0;
}
}
void loop() {
// subtract the last reading:
total = total - readings[readIndex];
// read from the sensor:
readings[readIndex] = analogRead(inputPin);
// add the reading to the total:
total = total + readings[readIndex];
// advance to the next position in the array:
readIndex = readIndex + 1;
vs = (3.3/4095)* average;
moisture = ax + b;
Serial.println(vs);
Serial.println(moisture);
}