Arduino szturmem zdobyło rynek i serca elektroników hobbystów. Dzięki tej platformie możliwe było rozpoczęcie przygody z mikrokontolerami. Są jednak zastosowania, gdzie moc dostarczana przez popularne UNO albo Leonardo jest za mała. Kuszącą alternatywą jest użycie procesora STM32 w ekstremalnie taniej wersji płytki developerskiej, znanej jako Blue Pill. Tak, nawet tańszej niż klony Arduino UNO, bo dostępnej na popularnym krajowym portalu aukcyjnym poniżej 20 złotych z dostawą.
Sercem modułu jest mikrokontroler STM32F103, o rewelacyjnych parametrach. Cechy wyróżniające ten układ to:
– 32-bitowa architektura ARM Cortex-M3,
– pracuje na częstotliwościach kilkudziesięciu MHz,
– posiada niemało pamięci: do 32 KB flash, do 10KB SRAM,
– mnóstwo interfejsów komunikacyjnych: USART, I2C, SPI, CAN, USB 2.0.
– 12-bitowe przetworniki A/D
– tryby niskiego poboru energii
i wiele innych.
Co będziemy potrzebowali ?
1. Komputer z systemem Windows. Poniższy poradnik opracowałem dla systemu Windows 10.
2. Blue Pill (koszt do 20 zł). Najlepiej wyszukiwać wpisując w wyszukiwarkę hasło: „stm32f103 blue pill”.
3. Konwerter USB-UART. Jeśli jeszcze żadnego nie posiadasz, to polecam zakup modułu opartego o układy FT232, ponieważ instalacja sterowników jest bardzo prosta. Tej instalacji nie omówiłem, ale jeśli będzie taka potrzeba to napisz do mnie i to uzupełnię. Aby nabyć taki moduł wpisz w wyszukiwarkę np. portalu aukcyjnego: „usb uart ft232”.
Dalsze kroki zakładają, że masz zainstalowane Arduino (w moim przypadku wersja 1.8.8), podłączony konwerter USB-UART i zainstalowane sterowniki konwertera.
Instalacja, konfiguracja i prosty program migający diodą
1. Konwerter odłączamy od komputera, aby nie uszkodzić żadnego z urządzeń.
2. Podłączamy Blue Pill do konwertera:
GND z konwertera -> GND na płytce Blue Pill
5V z konwertera -> 5V na płytce Blue Pill
TX na konwertera -> A10 na płytce Blue Pill
RX na konwertera -> A9 na płytce Blue Pill
3. Kolejnym krokiem będzie instalacja wsparcia dla STM32 w środowisku Arduino.
a) Zaczynamy od dodania dodatkowego adresu URL do menedżera płytek. Wchodzimy w „Plik” („File”), następnie wybieramy „Preferencje” („Preferences”) i w pole „Dodatkowe adresy URL do menedżera płytek” („Additional Boards Manager URLs”) wpisujemy:
http://dan.drown.org/arduino/package_STM32duino_index.json
Zatwierdzamy klikając „OK”.
b) Instalujemy wsparcie dla naszej płytki. Wchodzimy w „Narzędzia” („Tools”), rozwijamy submenu „Płytka” („Board”) i wybieramy „Menedzer płytek” („Boards Manager”). Niekiedy po uruchomieniu się okna managera należy poczekać chwilkę, aż zostaną zaktualizowane dane – na dole okna pojawi się pasek postępu.
Następnie, w pole wyszukiwania wpisujemy „STM32F1” i wybieramy pozycję STM32F1xx/GD32F1xx(…). Naciskamy „Instaluj” („Install”) i czekamy aż niezbedne pliki zostaną pobrane i zainstalowane.
Po tej operacji środowisko Arduino zamykamy i uruchamiamy ponownie.
4. Konfigurujemy Arduino do pracy z Blue Pill.
W menu „Narzędzia” („Tools”):
– jako „Płytka” wybieramy „Generic STM32F103C series”,
– „Variant” w naszym wypadku będzie ustawiony jako „STM32F103C8 (20k RAM, 64k Flash),
– „Upload” method ustawiamy jako „Serial”,
– „Port” ustawiamy na numer portu naszego konwertera. Zazwyczaj to będzie COM3 lub wyższy,
– „Programator” („Programmer”) ustawiamy jako „Parallel Programmer”.
5. Teraz czas na program. Oczywiście zaczniemy od migania diodą, w którą jest wyposażony Blue Pill.
W „Plik” („File”) wybieramy „Przykłady” („Examples”), następnie „01.Basics” i „Blink”. Tutaj musimy dokonac drobnej modyfikacji kodu, ponieważ stała LED_BUILDIN nie jest zadklearowana dla tej płytki.
Aby to naprawić, na początku kodu, zaraz pod blokiem komentarza na początku, deklarujemy:
#define LED_BUILTIN PC13
Kompetny kod (pomijając górny blok komentarza) wygląda następująco:
#define LED_BUILTIN PC13
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
6. Przed zaprogramowaniem płytki musimy przestawić zworkę BOOT0 na „1”. Zworka BOOT0 znajduje się bliżej listwy z pinami, dalej od przycisku RESET.
Następnie naciskamy przycisk RESET i ładujemy program do płytki. Od razu po załadowaniu dioda powinna zacząć migać. Teraz ustawiamy zworkę BOOT0 na „0”.
Gotowe !
W tej chwili możemy ponownie podłączyć naszego Blue Pilla do zasilania i powinniśmy zobaczyć migającą diodę.
UWAGA: Niektóre układy, kupowane bezpośrednio z „azjatyckiego” portalu mogą być zablokowane. Moduł przy którym spotkałem się z tym problemem odróżniał się od innych plastikowym przyciskiem RESET. Wspomniana blokada objawia się m.in. błędem podczas programowania z komunikatem „Can’t initiate chip erase!”. Taki układ wymaga wcześniejszego odblokowania, które wykracza poza zakres tego wpisu. Jeśli napotkałeś taki problem i potrzebujesz pomocy to daj mi znać, abym opublikował post z rozwiązaniem tego problemu.