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.

STM32 dengan display LCD 20x4
STM32 dengan display LCD 20×4

Berikut ini blok diagram sistem

Pin I2C dapat dilihat pada daftar pin pada STM32F103 berikut ini.

 

 

STM32F103 Pinout Diagram

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

Pemrograman STM32 Blue Pill Dengan Arduino dan ST-LINK-V2

Berikut ini uraian untuk melakukan proses upload program menggunakan ST Link V2 dari Arduino IDE. Cara lain adalah menggunakan ST Link Utility.

Hardware

Siapkan hardware berupa board STM32F103C8T dan programmer ST-LINK-V2

Instalasi Arduino IDE

Proses instalasi software untuk board STM32duino dapat dilihat di sini: https://github.com/stm32duino/wiki/wiki/Getting-Started

Konfigurasi Arduino IDE

Pilih Board -> STM32 Boards (STM32duino.com) (in sketchbook) -> Generic STM32F103C series

Pilih variant 64k Flash .

Pilih Upload Method: Tools -> Upload method -> STLink

Pilih port COM yang sesuai. Jika dilihat di Device Manager, akan nampak sebagai “Maple Serial”.

Setelah itu coba jalankan software Blink (File -> Examples -> Basics -> Blink). Jika semuanya lancar, maka LED akan berkedip dengan frekuensi 0,5 Hz.

Referensi

Alternatif Board STM32

Berikut ini survey singkat tentang board STM32 yang dapat dipakai untuk belajar.

STM32 Blue Pill. ST Link V2 (clone), STM32F4 Discovery, STM32 Discovery
STM32 Blue Pill. ST Link V2 (clone), STM32F4 Discovery, STM32 Discovery

 

Alternatif #1 STM32 Blue Pill

STM32 Blue Pill dan STL LINK V2
STM32 Blue Pill dan STL LINK V2

Prosesornya adalah STM32F103C8T6 , board ini dikenal luas sebagai ‘Blue Pill’. Untuk memasukkan program dan debugging dapat menggunakan modul ST-Link-V2.

Harga:

  • Blue Pill: sekitar Rp 32 ribu
  • ST LINK V2: sekitar Rp 33 ribu

Artikel terkait:

Alternatif #2 STM32F Discovery

STM32F407G Discovery
STM32F407G Discovery

Resource: https://www.st.com/en/evaluation-tools/stm32f4discovery.html

Harga sekitar Rp 400 ribuan, kata kunci “STM32F Discovery Boards”

Alternatif #3 STM32VL  Discovery

STM32 Value Line Discovery
STM32 Value Line Discovery

Prosesor: STM32F100

Resource: https://www.st.com/en/evaluation-tools/stm32vldiscovery.html

Harga: barang susah dicari.

STM32F401

STM32F401
STM32F401
STM32F401CCU6
STM32F401CCU6

Belum pernah dicoba, harga Rp 60 ribuan.

Perlu ST-Link-V2 untuk upload software

STM32F411CEU6

STM32F411CEU6
STM32F411CEU6

Prosesor STM32F411CEU6, belum pernah dicoba.

Harga Rp 200 ribuan.

Perlu ST-Link-V2 untuk upload software

Saran

Solusi murah meriah adalah STM32 Blue Pill dengan ST-LINK-V2. Board ini banyak dipakai dan ada banyak versinya, banyak juga resourcenya.

Jika ingin performance yang lebih baik, bisa cari board STM32F4, kalau yang mahal adalah board buatan STM32. Enaknya support lebih jelas dibandingkan board STM32F4 yang 3rd party.

 

 

 

 

 

 

FreeRTOS Untuk Arduino AVR, ESP32 dan STM32F103 Blue Pill

Sistem operasi FreeRTOS dapat diaplikasikan pada berbagai mikrokontroler. Pada tulisan ini diulas SDK (IDE + compiler) yang dapat dipakai untuk menjalankan FreeRTOS pada Arduino (UNO+Nano), ESP32 dan STM32F103 (Blue Pill)

Arduino

Arduino Nano
Arduino Nano

Espressif ESP32

ESP32 Lolin Wemos
ESP32 Lolin Wemos

STM32F103C8T6 (Blue Pill)

STM32F103C8T Blue Pill
STM32F103C8T Blue Pill

Mikroprosesor untuk FreeRTOS

FreeRTOS adalah suatu sistem operasi untuk membuat sistem real time berbasis mikroprosesor. Sistem operasi ini cocok untuk sistem-sistem yang kecil dan sederhana. Untuk sistem yang lebih kompleks, diperlukan sistem operasi real-time yang lebih besar seperti eCOS, embedded Linux (or Real Time Linux) ataupun uCLinux.

Berikut ini beberapa mikroprosesor yang cocok untuk menjalankan sistem operasi FreeRTOS.

Prosesor di gambar di atas adalah sebagai berikut:

  • NXP LPCXpresso LPC1769
  • Espressif ESP8266
  • Esperssif ESP32
  • Arduino Nano (clone)
  • ST Micro STM32F103C8T dan programmernya ST-LINK-V2

Barang-barang yang ditampilkan di sini adalah prosesor yang ada di laboratorium dan sempat dicoba. Masih banyak lagi prosesor yang dapat menjalankan FreeRTOS yang belum dicoba.

Arduino Nano dapat menjalankan FreeRTOS mengingat porting FreeRTOS untuk Atmel AVR tersedia di situs FreeRTOS. Namun kemampuannya terbatas, mengingat memori di ATMega328 sangat terbatas.

Arduino Nano
Arduino Nano

Selanjutnya adalah board LPCXPresso dengan prosesor NXP LPC1769. Kemampuan prosesor ini cukup tinggi.

LPCXpresso dengan prosesor NXP LPC1769

STM32F103 kemampuannya menengah saja, tidak terlalu tinggi, namun kelebihan utama dari prosesor ini adalah tersedia dengan harga murah dari berbagai vendor. Artikel tentang modul ini banyak di Internet sehingga lumayan memudahkan bagi pemula.

Modul STM32F103C8T “Blue Pill”

STM32F103 dapat diisi proram dengan berbagai cara, namun yang paling mudah adalah menggunakan modul ST-LINK-V2 berikut ini.

ST-LINK-V2 untuk upload program ke STM32

Daya tarik utama dari ST-LINK-V2 adalah harganya yang murah, karena banyak versi clone / KW-nya.

Berikutnya adalah prosesor ESP8266 dan ESP32 dari Espressif. Porting FreeRTOS untuk prosesor ini banyak tersedia.

ESP8266
ESP8266
Modul ESP32 LOLIN32

Berikut ini tabel perbandingan kekuatan dari prosesor yang dipakai, dilihat dari clock, flash memory dan static RAM.

ModelClockFlash MemoryStatic RAM
ATMega32816 MHz32 kB2 kB
STM32F103C8T72 MHz64 kB20 kB
LPC1769100 MHz512 kB64 kB
ESP32240 MHzexternal (typical 4 MB)520 kB
ESP8266160 MHzexternal80 kB

Perbandingan clock kurang lebih mewakili kecepatan, walaupun sebenarnya perbandingan kecepatan tidak dapat hanya dibandingkan dari clock saja, namun juga mesti melihat arsitektur masing-masing mikroprosesor.

Referensi ports dan demo untuk FreeRTOS adalah sebagai berikut:

Upload Program ke STM32F103CBT6 Blue Pill Dengan ST-LINK V2 Dan ST-LINK Utility

Artikel ini berisi percobaan menggunakan perangkat ST-LINK V2 untuk menyambungkan STM32F103CBT6 ke komputer pengembangan.

Interkoneksi antara ST-LINK dengan STM32 menggunakan 3 buah kabel sebagai berikut.

  • ST-LINK SWCLK <->Blue Pill DCLK (SWCLK)
  • ST-LINK SWDIO <-> Blue Pill DIO (SWDIO)
  • ST-LINK GND <-> Blue Pill GND

Berikut daftar pin pada STM32F103. Pin-pin untuk sambungan ke ST-LINK sudah dikumpulkan terpisah di bagian bawah sehingga cukup memudahkan.

STM32F103 Pinout Diagram

Daftar pin pada ST-LINK V2 sudah tertulis pada casingnya, jadi cukup mudah untuk mengikutinya.

ST-LINK V2 dapat dikendalikan dari komputer dengan berbagai cara. Salah satunya adalah dengan menggunaan software ST-LINK Utility dari ST Micro.
Software ST-LINK Utility dapat diunduh di https://www.st.com/en/development-tools/stsw-link004.html . URLnya ada di bagian paling bawah, dengan subjudul ‘GET SOFTWARE’

Untuk mendapatkan software itu, mesti login ke situs ST.COM atau cukup dengan mengisi nama dan email. URL untuk pengunduhan akan dikirim ke email tersebut.

Setelah dijalankan, maka softwer STM-32 ST-LINK Utility secara otomatis akan berusaha mendeteksi adanya programmer ST-LINK . Kondisi sambungan dapat dicek pada menu “Target” -> “Settings”. Berikut ini tampilan “Settings” jika belum berhasil mendeteksi ST-LINK. Pada ‘Serial Number’ akan muncul pesan ‘No ST-LINK detected!’

ST-LINK tidak terdeteksi

Jika sudah berhasil mendeteksi ST-LINK maka akan muncul keterangan pada bagian ‘Serial Number’

ST-LINK terdeteksi

Jika STM32F103 Blue Pill tidak langsung terdeteksi, maka perlu klik pada button ‘Refresh’.

Jika STM32F103 Blue Pill masih tidak terdeteksi, maka “Mode” diubah ke ke “Connect Under Reset”, kemudian klik pada “Refresh” berbarengan dengan mereset board Blue Pill. Jika waktunya tepat, maka sambungan akan terjadi.


Jika sambungan berhasil, maka akan muncul tipe STM32 target yang dipakai pada bagian “STM32 Target Information”

Sambungan antar ST-LINK dengan STM32 berhasil

Setelah tersambung seperti ini, maka dapat dilanjutkan untuk melakukan proses upload ataupun download software firmware STM32.

Referensi

  • Skema BLue Pill https://wiki.stm32duino.com/index.php?title=File:Bluepillpinout.gif
  • Penjelasan teknis Blue Pill https://wiki.stm32duino.com/index.php?title=Blue_Pill
  • https://primalcortex.wordpress.com/2017/06/13/building-a-black-magic-debug-probe/
  • ST LINK V2 Utility https://www.st.com/en/development-tools/st-link-v2.html

Upload Program ke STM32F103 Blue Pill Melalui Port USB di Windows

Mikrokontroler STM32F103 Blue Pill yang masih baru hanya dapat diprogram melalui bootloader USART, yaitu menggunakan port serial di pin A9 dan A10. Untuk dapat diprogram melalui USB, maka kita mesti memasang dulu bootloader yang dapat mengenali proses upload melalui port USB.

Berikut ini adalah konfigurasi port serial untuk melakukan pemrograman dengan bootloader USART:

konfigurasi port serial untuk pemrograman
konfigurasi port serial untuk pemrograman

Koneksi ke PC menggunakan modul USB to Serial dengan tegangan 3,3 volt. Modul USB to Serial ini banyak dijual dengan berbagai tipe. Untuk mudahnya, bisa pakai yang menggunakan chipset FTDI, karena driver FTDI sudah ada di Windows, jadi mudah dikenali. Konverter USB-Serial dengan chipset CH340 ataupun Prolific PL2303 biasanya lebih murah, namun agak sedikit kompleks karena perlu instalasi driver.

Berikut ini STM32F103 yang sudah terhubung dengan konverter USB-Serial.

Rangkaian pemrograman USART bootloader
Rangkaian pemrograman USART bootloader

Mesti dipastikan bahwa tegangan output TTLnya adalah 3.3 volt. Ada konverter USB Serial yang dapat diset di 5 volt maupun 3.3 volt. Mesti hati-hati jangan sampai salah, karena bisa rusak.

Konverter USB to Serial FTDI
Konverter USB to Serial FTDI

Program yang dipakai untuk melakukan pemrograman adalah “Flash Loader Demonstrator”, yang dapat diunduh di situs ST Micro : STM32 Flash loader demonstrator.

Untuk melakukan pemrograman, jumper BOOT0 dipindah ke “1”, sedangkan jumper BOOT1 tetap di “0”.

 

Boot 0 pada posisi 1
Boot 0 pada posisi 1

 

Boot 0 pada posisi 0
Boot 0 pada posisi 0

Untuk percobaan ini digunakan bootloader USB yang kompatibel dengan Arduino (STM32duino-bootloader) , dapat diambil di situs https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/binaries.

Board Bluepill yang saya pakai menggunakan PC13 sebagai LED indikator, jadi binary yang diambil adalah generic_boot20_pc13.bin. Jika LED indikator menggunakan port lain, maka file binary yang diambil mesti disesuaikan.

Setelah file binary itu diupload dengan “Flash Loader Demonstrator”, kembalikan posisi jumper ke posisi 0, kemudian restart board tersebut. Jika sukses , mestinya akan muncul port serial baru di device manager.

Untuk pemrograman dengan Arduino, perlu beberapa tahap instalasi di Arduino, sesuai dengan petunjuk di https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Installation

Referensi

 

Board ARM STM32F103CBT6

Berikut ini beberapa foto terkait STM32F103. Nantinya akan dilengkapi dengan hasil-hasil percobaan dengan STM32F103

STM32F103
Board STM32F103 “Blue Pill”

Layout PCB STM32F103
Layout PCB STM32F103

STM32F103 Pinout Diagram

STM32F103 Pinout Diagram

Pemrograman

Upload program ke STM32F103 dapat dilakukan dengan 3 cara:

  • Menggunakan bootloader internal yang dapat diaktifkan dengan mengubah setting pin BOOT0 menjadi 1. Pada mode ini program dapat dimasukkan menggunakan port serial yang terhubung pada PA9 dan PA10. Port serial pada STM32F103 menggunakan level TTL 3.3 volt, sehingga perlu konverter USB to serial 3V3 supaya dapat dihubungkan ke PC/Laptop.
  • Menggunakan pin SWD (Serial Wire Debugging). Untuk programming cara ini mesti menggunakan modul ST LINK V2
  • Menggunakan bootloader USB. Bootloader dapat menggunakan port USB untuk memasukkan program sehingga lebih praktis dibandingkan bootloader internal. Bootloader USB ini mesti dimasukkan menggunakan bootloader internal ataupun SWD.

Upload program ke STM32F103
Upload program ke STM32F103

Bootloader

  • Serial (TX1/RX1, atau pin PA9 dan PA10) : Built in bootloader yang tersambung ke port serial 1 di STM32F103
  • SWD (DIO/DCLK, atau pin JT): STLink v2
  • USB (D+/D- atau pin PA11 dan PA12)Custom boot loader, yang dapat dihubungkan ke USB

Untuk memasukkan software dari Windows menggunakan bult in bootloader, dapat menggunakan software Flash Demonstrator dari STMicro http://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/flasher-stm32.html

Salah satu custom boot loader yang sering dipakai adalah STM32duino bootloader, yang memungkinkan pemrograman STM32F103 dengan menggunakan IDE Arduino. Petunjuk instalasinya ada di https://github.com/rogerclarkmelbourne/STM32duino-bootloader

Pengembangan

Pembuatan software untuk STM32 ini dapat dilakukan dengan berbagai cara:

Links: