STM32F103C8T Blue Pill Dengan Display LCD 20×4 (I2C)
STM32F103C8T Blue Pill Dengan Display LCD 20×4 (I2C)
Berikut ini percobaan menghubungkan STM32F103C8T dengan display LCD 20×4. Antar muka menggunakan komunikasi serial I2C. LCD 20×4 menggunakan protokol serial, sehingga perlu modul I2C. STM32 menggunakan tegangan 3,3 volt, sedangkan LCD 20×4 menggunakan tegangan 5 volt, sehingga perlu level converter antara I2C di ESP32 dan I2C di modul PCF8752. Pada LCD 20×4 dipasang modul serial to paralel PCF8574 untuk menghubungkan protokol I2C ke paralel input/output pada LCD.
Berikut ini blok diagram sistem
Pin I2C dapat dilihat pada daftar pin pada STM32F103 berikut ini.
Komunikasi I2C
Pin I2C yang dipakai adalah PB6 (SCL1) dan PB7 (SDA1).
Tegangan I2C dari STM32 adalah 3,3 volt, sedangkan PCF8574 perlu 5 volt. Untuk itu perlu komponen bi directional logic level converter di antara keduanya.
Power Supply
Pada board Blue Pill sudah terdapat output 5 volt, jadi tegangan 5 volt untuk LCD dapat diambil dari situ.
Software
#include <LiquidCrystal_I2C.h>
// https://circuitdigest.com/microcontroller-projects/stm32-stm32f103c8-i2c-communication-tutorial
// Include the libraries:
// LiquidCrystal_I2C.h: https://github.com/johnrickman/LiquidCrystal_I2C
#include <Wire.h> // Library for I2C communication
#include <LiquidCrystal_I2C.h> // Library for LCD
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 20, 4);
void setup() {
Wire.begin();
// Initiate the LCD:
lcd.init();
lcd.backlight();
Serial.begin(115200);
Serial.println("\nLCD Test");
pinMode(LED_BUILTIN, OUTPUT);
}
int counter = 0;
void loop() {
lcd.setCursor(0, 0);
lcd.print("Elektrologi");
lcd.setCursor(0, 1);
lcd.print("IPTEK.WEB.ID");
lcd.setCursor(0, 2);
lcd.print("STM32F103C8T BluePill");
lcd.setCursor(0, 3);
lcd.print("31 Januari 2021");
lcd.setCursor(12, 0);
lcd.print(counter);
Serial.print("Send data: ");
Serial.println(counter);
delay(500);
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(LED_BUILTIN, LOW);
counter++;
}
Referensi
- https://circuitdigest.com/microcontroller-projects/stm32-stm32f103c8-i2c-communication-tutorial
Apakah harus menggunakan bidirectional ? adakah cara lainnya tanpa menggunakan bidirectional?
Protokol komunikasi I2C sifatnya bidirectional, jadi memang harus pakai bidirectional converter kalau tegangan di mikroprosesor tidak sama dengan tegangan di komponen I2Cnya.