STM32 #1 – pierwsze kroki w środowisku mbed (STM32F429I-DISC1), czyli IoT na blogu

Jestem oczarowany możliwościami środowiska STM32. Oprócz IDE, które są udostępniane nieodpłatnie, istnieje również platforma ARMmbed, która udostępnia system operacyjny, środowisko programistyczne oraz narzędzia społecznościowe dla programistów. W zasadzie po kilku kliknięciach otrzymuje się gotowe i działające programy.

W poprzednim wpisie pisałem o prostym miganiu diodą na podobnym do niniejszego zestawie – również opartego o mikrokontroler STM32F429ZI – tym razem w innym ujęciu pobieram wartości z bufora żyroskopu i rzucam je na LCD. Do niniejszego projektu wykorzystałem gotowy przykład pokazujący możliwości ekranu dotykowego.

stm32f429i-disc1

Praca w środowisku ARMmbed

W zasadzie niewiele jest tutaj do napisania – narzędzie jest mega proste i intuicyjne, choć w pierwszym momencie można odnieść wrażenie, że wszędzie dużo. Co należy zrobić, żeby móc z tego korzystać?

  1. zarejestrować się na https://www.mbed.com/en/
  2. zweryfikować czy się posiada jedną z obsługiwanych płytek: https://developer.mbed.org/platforms/
  3. w przypadku STM32 po podłączeniu pojawia się wirtualny dysk z linkiem identyfikującym urządzenie (screen poniżej)
  4. otworzyć środowisko programistyczne (prawy róg ekranu: COMPILER)
  5. zaimportować/stworzyć nowy program
  6. po zakończeniu pracy kliknąć COMPILE – wygeneruje się plik .bin, który wystarczy przeciągnąć na wspomniany wcześniej wirtualny dysk
  7. oglądać efekty swojej pracy 🙂

TIP: kilka razy zdarzyło mi się, że x razach wgrywania nowych wersji programu płytka STM32 przywieszała się – np wyświetlacz wywalał błąd inicjalizacji. Reset nie pomagał (prawdopodobnie nie działa na wyświetlacz / rejestry wyświetlacza). Skuteczne było odłączenie płytki prototypowej od zasilania i ponowne podłączenie.

mbed-dysk

(wspomniany wyżej wirtualny dysk, plik dodający płytkę prototypową do clouda mbed oraz treść tego pliku)

oryginalne-mbed

(widok IDE w cloudzie na ARMmbed)

Pakiet ARMmbed w chmurze

Niezłym sposobem na spopularyzowanie platformy jest też dodanie mechanizmów społecznościowych oraz repozytoriów kodu. Kilkoma klikami można ‚wkomitować’ zmiany, podejrzeć changeloga czy też opublikować efekty swojej pracy. Przykład, który opisuję w niniejszym wpisie robi dwie rzeczy – po kliknięciu w ekran wyświetla współrzędne kliku oraz aktualne wartości w rejestrach żyroskopu. Można go pobrać (zaimportować) stąd:

https://developer.mbed.org/users/auditlog/code/DISCO-F429ZI_LCDTS_and_GYRO_test/

oryginalne-mbed2

Udanych testów i zabawy.

przedświąteczne porządki i mały konkurs (rozdaję LaunchPad’y)

Cześć,

przed Świętami zabrałem się za porządki i inwentaryzację swojego warsztatu. Okazało się, że sporo mam na magazynie zamienników Arduino, a jeszcze więcej oryginalnych Launchpad’ów od TI.com. Ponieważ wiem, że i tak z wszystkiego nie skorzystam, to chciałbym Wam 1-2 sztuki oddać. Oczywiście w dobre ręce. Konkurs jest bardzo prosty i oparty o kreatywność:

Napisz w komentarza do niniejszej notki dlaczego akurat Ty chcesz dostać wybraną płytkę lub opisz co ciekawego na takowej zbudujesz (najlepiej z wykorzystaniem platformy, którą opisujesz) lub udostępnij niniejszy wpis u siebie na facebooku, google plus, twitterze i w komentarzu poniżej zostaw linka do tego wpisu (koniecznie musi być publiczny, żebym miał okazję go zobaczyć).

Konkurs trwa do końca dnia 14 grudnia 2014 roku – żeby zwycięzca lub zwyciężczyni mieli szansę otrzymać przesyłkę jeszcze przed świętami.

ps: Jeśli konkurs załapie i będzie dużo fajnych zgłoszeń, to postaram się regularnie rozdawać kawałki swojego warsztatu, które zalegają mi w szufladach.

ps2: Większość zestawów jest nowa lub np. 1-2 razy uruchomiona / podłączona do zasilania. W zestawach 430g2 jeśli procek był przeze mnie używany, to wymienię przed wysyłką na nowy.

Zestawy, które m.in. posiadam (oparte o procki):

– msp430g2xxx,
– msp430fr5969,
– msp430f5529,
– lm4f120x,
– tm4c123g…

Pamiętajcie, że LaunchPad’y mają swoje środowisko programistyczne Energia identyczne z Arduino IDE. Dostępne jest pod tym adresem: http://energia.nu/

ps4: Ponieważ regularnie użytkownicy próbują spamować w komentarza reklamując jakieś badziewie, to komentarze są moderowane – wszystkie czytam i te, które nie zawierają reklamy własnych produktów akceptuję.

Powodzenia!

AKTUALIZACJA (w dniu publikacji wpisu)

Zapomniałem dodać: ceny większości w/w zestawów wahają się w przedziale $10-$25 + najważniejsze: jeśli osoba/osoby, które wygrają zbudują i opublikują u siebie lub wyślą do mnie do publikacji (obojętnie) notkę z wykorzystaniem wygranego zestawu, to doślę (wg mnie ciekawszemu projektowi) moduł LCD 430BOOST-SHARP96 – wart $20!

spark core (lepsza wersja arduino z wifi)

spark_io

Spark Core wpadł mi w ręce już dość dawno. Zbudowałem nawet na nim półautomatykę do akwarium, ale trochę się tam marnował – płytka stworzona jest do dużo wyższych celów, niż decydowanie czy rybki powinny mieć już widno lub pokazywanie jaką mają temperaturę wody poprzez stronę www.

Czy jest Spark Core?

Spark Core to w pełni funkcjonalne środowisko projektowe dla początkujących, jak i zaawansowanych konstruktorów. Projekt rozwinięty został dzięki pomocy Kickstartera, gdzie osiągnął spektakularny sukces.

System jest kompatybilny z Arduino, posiada sieć wifi w standardzie 802.11 b/g, przyjazne API, kompatybilność z płytkami stykowymi i możliwość programowania przez wifi. Ostatnia funkcjonalność jest o tyle ciekawa, że w module można podmieniać program w dowolnej lokalizacji – ważne, żeby był podłączony do internetu.

Parametry techniczne to:
– 32-bitową jednostkę STM32 taktowaną zegarem 72MHz na architekturze ARM Cortex M3
– 128KB pamięci flash i 20KB pamięci RAM
– zintegrowany moduł Texas Instruments SimpleLink CC3000 Wi-Fi
– EEPROM (przeznaczony dla konfiguracji CC3000)
– 2MB zewnętrznej pamięci flash,
– zasilanie 3.3V (wbudowany regulator zasilania)
– typowy pobór prądu na poziomie 50mA
– maksymalny pobór prądu (w peaku) 300mA (np podczas zdarzeń transmisji danych)
– może być programowany i zasilany przez kabel micro USB
– posiada 8 pinów I/O
– posiada 4 kanały (piny) PWM
– posiada 8 pinów I/O analogowych
– obsługuje UART (Serial), SPI i I2C sprzętowo
– zasięg Wi-Fi to 30-100m

spark core

Jak zaprogramować Spark Core?

Pierwsze, co jest inne, to że IDE jest w wersji webowej. Trzeba wejść na stronę projektu, zalogować się, wejść w ustawienia i za pierwszym razem skonfigurować połączenie z urządzeniem. W tym momencie niezbędne jest podłączenie fizyczne. Wymaga tego konfiguracja poprzez terminal – trzeba uzyskać token, który następnie dodajemy w IDE oraz skonfigurować sieć (ręcznie podaje się nazwę sieci, kodowanie i hasło). Następnie system się resetuje i to wszystko. Od razu działa.

Jak to jest z kompatybilnością z Arduino?

Podobnie jak w samym Arduino. Niby standard, ale płytki typu Uno, Yun czy Mega średnio do siebie pasują (zgodnością pinów). Biblioteki pod różnymi platformami sprzętowymi nie zawsze w ten sam sposób się zachowują. Podobnie jest w projekcie Energia.no, gdzie głównie chodzi o zachowanie zgodności składni, a nie 100% przenoszalność bibliotek.

spark-pinout

Co jeszcze jest w tym ciekawego?

Poza możliwością zdalnego programowania przez sieć i kompaktowości rozwiązania (płytka jest chyba mniejsza niż Arduino mini) wyróżnia się ponadprzeciętna intuicyjność oraz bardzo dobra dokumentacja.
Zbudowana społeczność rośnie, autorzy nie zapomnieli o wzorowym wsparciu w postaci not dokumentacji i narzędzi do komunikacji pomiędzy uczestnikami projektu (forum, etc).
Dodatkowo można kupić shieldy dla Spark Core i w bardzo prosty sposób rozbudować go o kilka przekaźników czy zasilanie bateryjne. Jest też shield shield – płytka, która jest shieldem dla Sparka i Arduino jednocześnie – dzięki niej można wykorzystać już posiadane moduły od 8-bitowego starszego brata (ważne, żeby tylko sprawdzić kompatybilność i wykorzystanie wyprowadzeń).

Jeśli ktoś byłby zainteresowany zakupem, to proszę dać znać (namiar w KONTAKT) – może razem zamówimy i podzielimy koszty transportu po równo.

kurs embedded: ARM (Cortex M4) od TI.com i edX

Bardzo lubię wszelkiego rodzaju rozwiązania płytek od TI.com – są rewelacyjnym środowiskiem do nauki programowania wielu różnych architektur na często zbliżonych lub wspólnych płytka rozwojowych. Tym razem TI i platforma edukacyjna edX zaproponowały kurs nauki programowania systemów typu embedded.

ek-tm4c123gxl

Czyli #CzasNaNauke:

Opis kursu dostępny jest pod poniższym linkiem (początek 22 stycznia 2014 roku, czas trwania 15 tygodni, przewidywany czas nauki to 10 godzin tygodniowo). Za jakiś czas pewnie niniejszy post straci na aktualności, ale warto poszukać na edX – dużo kursów jest tam cyklicznie powtarzanych.

https://www.edx.org/course/utaustinx/utaustinx-ut-6-01x-embedded-systems-1172

Kurs jest darmowy (odpłatny jest certyfikaty tylko – nie trzeba go wykupywać). System embedded oparty jest na:

http://www.ti.com/tool/ek-tm4c123gxl (~40zł – TI nie liczy kosztów transportu)

Na stronie edX znajduje się link z precyzyjniejszym opisem kursu:

http://users.ece.utexas.edu/~valvano/edX/

Mikrokontroler to:

http://www.ti.com/product/tm4c123gh6pm

32-bit ARM® Cortex™-M4 80-MHz processor core with System Timer (SysTick), integrated Nested Vectored Interrupt Controller (NVIC), Wake-Up Interrupt Controller (WIC) with clock gating, Memory Protection Unit (MPU), IEEE754-compliant single-precision Floating-Point Unit (FPU), Embedded Trace Macro and Trace Port, System Control Block (SCB) and Thumb-2 instruction set

On-chip memory, featuring 256 KB single-cycle Flash up to 40 MHz (a prefetch buffer improves performance above 40 MHz), 32 KB single-cycle SRAM; internal ROM loaded with TivaWare™ for C Series software; 2KB EEPROM

Ja już zamówiłem zestaw. Mam nadzieję, że zdąży przyjść w okolicy rozpoczęcia kursu.

Do kursu rekomendowana jest książka:

Embedded-Systems-Introduction-CortexTM-M-Microcontrollers-ebook

aczkolwiek z doświadczenia (innych kursów na edX) wiem, że ilość materiałów do lekcji dostarczana jest na tak wysokim poziomie, że można pominąć (w chwili pisania tego postu książka w wersji papierowej i ebook kosztuje ~$40).

<edit: 15.01.2014r.>

Znalazłem ciekawą porównywarkę cenową dla amazonowych książek – w chwili pisania update można na amazon.co.uk kupić (w przeliczeniu) za 86zł w/w książkę:

https://pricenoia.com/embedded-systems-introduction-to-arm-cortextm-m-microcontrollers