Przejdź do głównej zawartości

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 ;-))

Komentarze

  1. A co to za język ten C/C++ ? Czyżby to jakaś nowość w świecie języków programowania?

    OdpowiedzUsuń
    Odpowiedzi
    1. O, to bardzo dobre pytanie - już odpowiadam. Otóż geneza pisania w różnych opracowaniach "C/C++" jest, jak się domyślam, prosta. Twórcy - bo obecnie można już tak to ująć - języka C++ od początku (od Bjarne) nie narzucili jednoznacznego stylu programowania w tym języku (jest to język obiektowy, ale programista nie jest zobowiązany do ubierania swojego programu w klasy i tworzenia obiektów), pozwolili jednak wykorzystywać dobrodziejstwa C++ w programach o strukturze zbliżonej do klasycznego C (ANSI C itp.), dbając o wsteczną kompatybilność, czy też chcąc pozyskać sobie przychylność programistów piszących dotychczas w C. Znam kilku koderów, którzy do obsługi operacji wejścia-wyjścia preferują klasyczne funkcje znane im z stdio.h itp. (choć już dawno przepisane i zmodyfikowane, ale jednak) mimo, że program tworzą w pełni obiektowy. Idąc dalej, kod źródłowy programów dla Arduino czy choćby Nucleo ma często strukturę programu w języku C, mimo, że znakomita większość bibliotek dla Arduino jest obiektowa.
      Tak więc używam - ja i wielu innych publikujących teksty o programowaniu - zlepka "C/C++", żeby podkreślić płynne połączenie programowania obiektowego (C++) i strukturalnego (C) w danym projekcie.
      Mam nadzieję, że moje wyjaśnienia nie są zbyt zawiłe i były pomocne.

      Usuń
    2. Dziękuję za wyjaśnienie. Chociaż nie od dziś programuję w C++, a co za tym idzie również w C, muszę przyznać że nie podchodziłem do takiego zapisu w ten sposób, a wręcz taki zapis raził mnie w oczy. W programowaniu mikrokontrolerów "problem" pisania proceduralnego wykorzystując język C++, a więc język obiektowy, mocno się rozmywa. Właściwie ludzie często nie mają pojęcia, że ich środowisko wykorzystuje język C++, jak to jest chociażby we frameworku Arduino. Tutaj często mówi się, również w publikacjach drukowanych, o jakimś tajemniczym, nienazwanym języku, który jest podobny do C. U początkujących użytkowników Arduino może to powodować spore zamieszanie i strach przed przesiadką na czysty C.

      Usuń
    3. Tak, też w przypadku publikacji związanych z Arduino spotkałem się ze sformułowaniami typu "język podobny do C" – całkowicie niepotrzebna asekuracja moim zdaniem.

      Usuń

Prześlij komentarz

Popularne posty z tego bloga

Niesamowicie prosty czujnik zmierzchowy.

Tym razem zero programowania, będzie natomiast nostalgiczno-wspomnieniowy układzik, lekko zmodyfikowany.
Otóż kilka dni temu rozmawialiśmy w gronie znajomych o różnego rodzaju czujnikach zmierzchowych i czujnikach ruchu. Ponieważ należę do tych wariatów, co to hołdują jeszcze owej przestarzałej i kompletnie odrealnionej dziś zasadzie: "po co kupować, gdy można zrobić", stwierdziłem, że poskładam takie coś (czujnik zmierzchowy; sensor ruchu faktycznie lepiej nabyć, choćby ze względu na rozmiary ;)) i być może podłączę do jakiegoś mikrokontrolera. Przypomniało mi się też przy okazji, że znalazłem ostatnio w elektronicznych śmieciach stary fotorezystor (dla niewtajemniczonych: element zmieniający rezystancję, czyli opór elektryczny, pod wpływem działania strumienia światła) RPP130, jeden z kilku pozostałych po montowanych wieki temu układach tranzystorowych do zdalnego sterowania pracą urządzeń za pomocą latarki... No OK, nie było to specjalnie rozbudowane zdalne sterowanie ;)

Android i zewnętrzny moduł GPS

Od kilku dni jestem w posiadaniu smyrfona z Androidem 4.1.1 na pokładzie. Kwestie związane z wyborem systemu roztrząsałem już na G+, a ten artykuł tutaj ma konkretny temat, więc nie będę wyjaśniał po raz n-ty. Po prostu zwyciężyły popularność i ekosystem oraz przywiązanie do produktów sieciowych Google. Mniejsza.

Zbliża się sezon urlopowy :-) Moi podopieczni już mają wakacje, a ja wyjeżdżam wkrótce. W każdym bądź razie wakacje to podróże - samochodem, rowerem, na piechotę, żaglówką, motorówką, samolotem... Zaawansowane urządzenia mobilne przyzwyczaiły nas już do usług lokalizacyjnych, z których najważniejszą jest GPS (na dalszym planie mamy A-GPS, lokalizacje w oparciu o sieci WiFi itp.). Często korzystamy z programów, które w coraz ciekawszy sposób wiążą naszą lokalizację, pobraną z np. GPS-a, z przeróżnymi danymi, nieraz ocierając się o AR.
Każdy współczesny smartfon, a przynajmniej znakomita ich większość, wyposażona jest we wbudowany odbiornik sygnału lokalizacyjnego (GPS, GLONASS…

Po co mi to całe Arduino?

Oczywiście tytuł ma być jedynie prowokacją. Chociaż nie do końca - artykuł jest właśnie poświęcony pracy w Arduino IDE z mikrokontrolerami, ale bez płytek Arduino.
Czym jest Arduino - wiemy wszyscy, zarówno początkujący fani programowania elektroniki, jak i zaawansowani mikrokontrolerowcy. Jeśli jednak nie do końca wiemy, zachęcam do odwiedzenia strony domowej projektu (link 5 na końcu artykułu) oraz zerknięcia np. w poradnik (link 4).

Jakiś czas temu, przełamując się i zmieniając zdanie ("o 180 stopni" ;-)) nabyłem sobie Arduino Leonardo, głównie w celu jego "obwąchania" i zapoznania się z bogatym zbiorem bibliotek dostępnych dla tej platformy. Zgoda, różne biblioteki są dostępne niezależnie od Arduino, ale i tak się zdecydowałem. Dlaczego Leonardo? Otóż miałem ochotę przyrządzić dwie pieczenie na jednym ogniu - mieć Arduino i przetestować ATmegę 32u4. Dziś doskonale zdaję sobie sprawę, że żeby pobawić się Arduino nie trzeba go w ogóle posiadać... Ale po kolei.

Pi…