Korzystając z kącika testerów przetestowałem zestaw NUCLEO-F411RE oraz shield KA-Nucleo-Weather. Cała akcja odbywa się dzięki uprzejmości firmy KAMAMI, która udostępniła wszystkie moduły. Swoje boje z tymi układami zacząć od teorii – krótkiego omówienia płytek, co na nich się znajduje oraz w jakim środowisku będziemy je programować. Przy okazji odejdziemy trochę od formy wrzucania treści całych programów do wpisów, ale skorzystamy z GITa i repozytorium na Bitbucket, wytłumaczę krótko jaka jest tego idea, jak utworzyć własne repozytorium i pobrać z niego aktualne wersje programów – sam dopiero odkrywam te narzędzia, więc tu będzie opis tylko niezbędnych rzeczy, może w przyszłości zrobię do tego osobny kursik jak się bardziej zapoznam. Chciałbym też zaznaczyć moje założenie, że czytelnik bawił się wcześniej mikrokontrolerami, więc nie będę od zera tłumaczył pojęć typu przerwanie, i2c itp.
Zobaczmy najpierw co mamy do dyspozycji na płytce NUCLEO- F411RE – znajduje się tam mikrokontrolerek STM32F411RE. Taki mały potworek z rdzeniem M4, sprzętową obsługą liczb zmiennoprzecinkowych, taktowany do 100MHz. Poniżej dokładniejszy opis:
STM32F411RET6 in LQFP64 package
- • ARM®32-bit Cortex®-M4 CPU with FPU
• 100 MHz max CPU frequency
• VDD from 1.7 V to 3.6 V
• 512 KB Flash
• 128 KB SRAM
• GPIO (50) with external interrupt capability
• 12-bit ADC with 16 channels
• RTC
• Timers (8)
• I2C (3)
• USART (3)
• SPI (5)
• USB OTG Full Speed
• SDIO
Więcej możemy dowiedzieć się ze strony: http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f4-series/stm32f411/stm32f411re.html
Ładnie opisany pinout znajduje się tutaj: https://developer.mbed.org/platforms/ST-Nucleo-F411RE/
Warto zajrzeć ile mamy dostępnych do niego dokumentacji – prawie większość peryferii jest opisana dodatkowo w postaci osobnej noty.
Ogólnie NUCLEO to nazwa rodziny płytek developerskich od ST posiadających header zgodny z arduino – więc pasują wszystkie shieldy, które operują na 3,3V (w przypadku 5V trzeba dokładniej sprawdzić) oraz wbudowanym programatorem ST-LINK/v2, więc po wyjęciu z opakowania możemy już zacząć pracę/zabawę. Dodatkowo z racji tego, że złącze arduinowskie oferuje do dyspozycji o wiele mniej pinów niż jest w mikrokontrolerze, mamy też złącze ST-Morpho. I jedna mega zaleta w prównaniu do zestawów Discovery – dłuższe goldpiny na górze układu! W Discoverkach często przewody wyskakują z nich, trzeba kombinować od spodu, bardzo irytujące to było/jest
W czym to możemy programować?
Mamy tutaj dużo możliwości – zacznijmy od platformy mbed.org (https://developer.mbed.org/) – w skrócie jest to takie arduino IDE w wersji online z masą dostępnych bibliotek/płytek itp. Posiada wszystkie zalety ( dostęp do bibliotek, duża społeczność ) jak i wady zwykłego arduino ( ja osobiście nie lubię nadmiarowości kodu i tego, że nie wiem co się dokładnie dzieje w programie od strony sprzętowej – dla niektórych może to być zaleta – kwestia gustu).
W wersji offline możemy wybrać sobie darmowe środowisko spośród:
- Eclipse (odpowiednio skonfigurowany)
- CooCoox (odpowiednio skonfigurowany)
- AC6 – oficjalne środowisko do ST do programowania ich mikrokontrolerów – w praktyce jest to eclipse z nakładką, nie musimy nic konfigurować
- Atollic True Studio – też odpowiednio skonfigurowany eclipse, możliwość programowania wielu rodzin mikrokontrolerów, wersja darmowa ma tylko ograniczenie odnośnie zaawansowanych opcji debugowania
Ja w tym kursie będę korzystał z AC6, na co dzień też korzystam z Atollica do programowania STMek.
Dodatkowo będziemy wykorzystywać CubeMX – umożliwia on „wyklikanie” konfiguracji peryferii mikrokontrolera oraz STMstudio – program umożliwiający podgląd danych z mikrokontrolera.
Przewinie się naprawdę dużo różnych programów
Co do kwestii „stylu” programowania – możemy to robić bezpośrednio na rejestrach, lub wykorzystywać bibliotekę HAL.
NUCLEO można znaleźć w KAMAMI: https://kamami.pl/stm-nucleo-64/233338- ... 2f411.html cena to 59 zł. W porównaniu z arduino UNO, które oryginalne kosztuje podobnie – miażdży go możliwościami.
Przejdźmy teraz do płytki KA-Nucleo-Weather.
Posłużę się tu gotowym opisem ze strony KAMAMI:
- • Zgodność z systemami NUCLEO i Arduino
• Wbudowany sensor ciśnienia MEMS (LPS331):
- o Zakres pomiarowy 260 do 1260 mbar
o Częstotliwość pomiarów (ODR) 1 Hz do 25 Hz
o Rozdzielczość ADC 24 bity
o Interfejs SPI/I2C (użyty I2C)
- o Zakres pomiarowy 0 to 100% (wilgotność względna)
o Częstotliwość pomiarów (ODR) 1 do 12,5 Hz
o Rozdzielczość ADC 16 bitów
o Interfejs SPI/I2C (użyty I2C)
- o Zakres pomiarowy –55°C do +125°C
o Czas konwersji ADC <150 ms
o Zintegrowany programowany termostat
o Rozdzielczość ADC 9 bitów
o Interfejs SMbus/I2C
- o Charakterystyka czułości zbliżona od oka ludzkiego
o Zintegrowane wzmacniacze analogowe o programowanym wzmocnieniu
o Dwa kanały pomiarowe
o Zintegrowany programowany komparator
o Dynamika pomiaru 45000000:1
o Maksymalne natężenie światła 60000 lux
o Rozdzielczość ADC 16 bitów
• Wbudowany joystick 5-stykowy
• Przedłużone złącza szpilkowe
Shield umożliwia nam kompleksowe przetestowanie różnych sensorów niezbędnych np. w małej stacji pogodowej zanim zaprojektujemy swój układ z ich wykorzystaniem.
Możemy go kupić na stronie: https://kamami.pl/kamod-kamami/333318-k ... iatla.html
Polecam pobrać z niej dokumentacje zrobione przez KAMAMI – wszystkie są zawsze bardzo przejrzyste i trzymają się tego samego szablonu, znanego m. in. Z MAXimatora.
W kolejnej części zajmiemy się połączeniem AC6 z CubeMX, utworzymy pierwszy projekt standardowo z migającymi diodkami, następnie zainstalujemy GITa, utworzymy repozytorium, wszystko „zcommitujemy” i udostępnimy wszystkim do pobrania