poniedziałek, 1 lutego 2016

Nucleo (L152RE na przykład) – wygodna w obsłudze płytka prototypowa z mikrokontrolerem ARM.

Nowy rok to nowe zabawki, chciałoby się powiedzieć. W każdym razie zainspirowany dyskusją, którą prowadziliśmy w Google+ w związku ze zmianą właściciela marki Atmel i przyszłością rodziny AVR, sięgnąłem po niedrogą płytkę prototypową firmy STMicroelectronics, zawierającą mikrokontroler tegoż producenta, z rdzeniem w architekturze ARM. Wybór – całkowicie przypadkowy, bo chodziło o najtańszą ofertę w serwisie aukcyjnym – padł na Nucleo L152RE. Dane dotyczące platformy i tego konkretnego modelu znajdziecie na stronie producenta, więc nie będę ich tutaj powielał (dbajmy o ten nasz biedny internet). Tam też znajdziecie serię instruktaży wideo, pokazujących, jak zacząć pracę z płytkami Nucleo i jak ją z powodzeniem kontynuować. Tutaj zatem będzie krótko, na zachętę.

Zacznę od końca. Jestem pod ogromnym wrażeniem tej platformy. Bo tak: 
  • żeby pisać programy i ładować je do układu nie jest potrzebne żadne oprogramowanie instalowane na naszym komputerze – wystarczy w miarę świeża przeglądarka WWW i połączenie z internetem;
  • żeby podłączyć płytkę Nucleo do komputera, potrzebujemy port USB; w systemie Windows potrzebne są jeszcze sterowniki – znajdziemy je na stronie producenta, zalinkowanej wcześniej;
  • co do programowania, powinniśmy znać język C/C++ i – rzecz jasna – topologię wyprowadzeń płytki, nazwy jej elementów zaimplementowane w bibliotece dla C/C++ itp.
Bierzemy zatem naszą płytkę Nucleo, podłączamy do komputera, instalujemy sterowniki (jeśli to konieczne, aktualizujemy firmware – patrz: linki na stronie producenta) i oczom naszym ukazuje się napęd USB o nazwie "NUCLEO". 
Wchodzimy teraz – za pomocą przeglądarki ;-) – na stronę mbed.org (lub od razu developer.mbed.org), czytamy sobie zawarte tam informacje (niecierpliwi mogą ten krok pominąć, aczkolwiek...), zakładamy konto, łączymy je sobie z twitterem, githubem i z czym tam jeszcze chcemy (możemy też nie łączyć) i zaglądamy na nasz dysk USB "NUCLEO". Znajdziemy tam plik "mbed.htm". Przeciągamy go "na przeglądarkę" – zostaniemy przekierowani na stronę, która pozwoli nam dodać posiadaną i podłączoną do komputera płytkę prototypową do naszego konta (czyli powiązać płytkę z kontem). Pozwalamy na to i od tego momentu możemy spokojnie używać online'owego IDE z kompilatorem, produkującym kod wynikowy specjalnie dla naszego mikrokontrolera i naszej płytki :-) W serwisie mbed.org znajdziemy również bardzo przydatną, praktycznie niezbędną w dalszej pracy charakterystykę wspieranych platform (strona poświęcona mojej płytce).
Program, po skompilowaniu, wysyłany jest na nasz komputer w postaci binarnego wsadu. Kopiujemy (lub przenosimy) ten wsad do naszego dysku "NUCLEO" i... gotowe! Mikrokontroler zaprogramowany! Dociekliwi zauważą, że po odświeżeniu dysk "NUCLEO" zawiera tylko plik "mbed.htm", wsad zniknął :-)
Prawda, że cudownie proste?
Dla zabawy i porównania z Arduino pozwoliłem sobie przeportować na Nucleo przykładowy program, wyświetlający tablicę kodów ASCII w oknie terminala portu szeregowego PC. Ale to nie było żadne wyzwanie (działa jak w Arduino), zatem komputer PC zastąpiłem moim modułem sterownika LCD z komunikacją przez port szeregowy. Owszem, Nucleo ma wadę – jak praktycznie każdy ARM, pracuje w logice 3,3V, więc w celu wymiany danych z urządzeniami pracującymi w logice 5V (TTL) musimy użyć konwertera poziomów (lub konwersji poziomów logicznych w ogólności).
Kod źródłowy programu i efekt działania zarejestrowany ukrytą kamerą smartfona zaprezentowane zostały poniżej.
  • Kod: 
  • Film demonstracyjny:
 

Myślę, że płytki z serii Nucleo mogą być całkiem niezłą alternatywą dla Arduino, również Arduino Due (tam też jest ARM). Mam nadzieję, że przyszłość przyniesie wiele ciekawych inspiracji i projektów zrealizowanych z wykorzystaniem tej platformy (chodzi tu głównie o mnie ;-))