Raspberry_Pi_cz6.pdf

(1130 KB) Pobierz
Na warsztacie
Raspberry Pi:
Arduino Nano jako
alternatywne rozwiązanie
W ostatnich odcinkach tej serii zajmowaliśmy się wyłącznie Raspberry Pi.
Warto teraz przyjrzeć się innym rozwiązaniom. Wybrałem Arduino Nano: jeden
z mniejszych zestawów z całej rodziny Arduino. Sprawdźmy, czy można go
zastosować do zadań, które dotychczas powierzaliśmy Raspberry Pi.
Środki i cele
Stare porzekadło mówi: „mierz siły na zamiary”.
W dziedzinie inżynierii można je przetłumaczyć
na: „dobieraj środki do celów”. Jest to bardzo ważne
zagadnienie. Młody inżynier często patrzy na posta-
wione przed nim zadanie najpierw przez pryzmat
znanych mu technologii. Oznacza to, że nie próbuje
rozwiązać problemu, tylko dopasowuje go do już
znanych mu rozwiązań technicznych. W skrajnych
przypadkach robi to na siłę. I zazwyczaj kończy się
to źle, zarówno dla samego procesu tworzenia, jak
i produktu końcowego.
Doświadczony inżynier najpierw patrzy na to,
co ma być zrobione. Dopiero później rozważa, jak
to wykonać. Różnica jest fundamentalna. W tym
podejściu
priorytetem jest cel,
efekt końcowy.
To on steruje całym projektem. Zawsze powinniście
patrzeć przed siebie i zadawać sobie pytanie, jak
podejmowane przez Was decyzje wpłyną na końco-
we rozwiązanie. Jasny i konkretny cel pozwoli Wam
szybko weryfikować pomysły i odrzucać te, które
do niego nie prowadzą.
Zdefiniowanie celu nie jest wcale takie łatwe.
W jednym z poprzednich tekstów („Młody Technik”
10/2014) podałem
metodę SMART.
Nazwa SMART
to akronim pochodzący od angielskich słów
specific
(specyficzne, konkretne),
measurable
(mierzalne,
dające się określić),
achievable
(możliwe do osiąg-
nięcia),
reasonable
(sensowne, skutkujące postępem,
innowacją) i timeable (ograniczone czasowo, mające
swój koniec w określonym czasie). W praktyce ozna-
cza to wybieranie celów konkretnych, wymiernych,
możliwych do realizacji w określonym czasie i wno-
szących coś nowego – czy to do Waszego doświad-
czenia, czy – a jakże! – do historii świata.
Gdy cel jest priorytetem, droga do niego wcale nie
staje się mniej ważna. Jest wiele dróg do rozwiązania
każdego problemu. Jedne są prostsze, drugie bardziej
kręte – co wcale nie musi przesądzać o ich popraw-
ności. Jeżeli za cel postawimy sobie zbudowanie
rozwiązania uniwersalnego – droga do niego będzie
bardziej skomplikowana. Rozważenie wielu przy-
padków, również tych skrajnych (ang.
corner cases),
zapewne wydłuży czas wykonania. Ale na końcu
otrzymamy rozwiązanie, które zastosujemy jeszcze
wielokrotnie. I możemy być pewni, że nie zawie-
dzie podczas prezentacji. Czasami jednak celem
jest coś, co inżynierowie nazywają POC: ang.
proof
of concept.
W tym przypadku nie chodzi o pełne
rozwiązanie problemu czy dostarczenie stabilnego
rozwiązania, które będzie używane przez pokolenia.
Chodzi o sprawdzenie pewnych możliwości, ogólne
udowodnienie, że cele są w ogóle realizowalne (ang.
achievable).
W związku z powyższym,
nie bójcie się poszuki-
wać nowych rozwiązań.
Zanim zaczniecie pracę,
poświęćcie trochę czasu na dokładne określenie celu.
Zmieniajcie swoje podejście do problemu, oceniaj-
cie nowe pomysły pod kątem ich wpływu na efekt
końcowy. Szacujcie czas, koszty, ryzyko kolejnych
pomysłów. Postarajcie się oceniać je w kategoriach
liczbowych. W takim rachunku uwzględnijcie rów-
nież inne potencjalne zyski – zdobyte doświadcze-
nie, możliwość jego ponownego wykorzystania. I nie
bójcie się wyzwań!
Poziom tekstu: średnio trudny
SZKOŁA
David i Goliat
Raspberry Pi (RPi) oraz Arduino Nano to zawodnicy
dwóch skrajnych wag. Są na tyle różne, że porówny-
wanie ich może wydać się niecelowe.
RPi
to minikomputer. Można do niego podłączyć
klawiaturę, mysz, monitor HDMI i pracować jak
na zwykłym PC z Linuksem jako systemem operacyj-
nym. Ma wystarczająco dużo mocy obliczeniowej,
aby służyć jako domowe centrum multimediów,
włącznie z odtwarzaniem filmów w formacie HD.
Linuks, wspierany przez całą gamę aplikacji i biblio-
tek, ułatwia tworzenie złożonych rozwiązań w ję-
zykach programowania, takich jak Java czy Python.
Umożliwia łączenie z multimediami, stawianie
84
m.technik
- www.mt.com.pl
1. Raspberry Pi oraz Arduino Nano
serwerów WWW i tym podobne. To taki
komputer
w skali karty kredytowej.
Nano
to całkiem inny świat. Napędza go typo-
wy mikrokontroler. Nie działa na nim Linuks, nie
da rady zrobić z niego biurkowego komputera.
Miniaturowe rozmiary (ok. 4,3x1,7 cm; podczas gdy
RPi: 8,5x5,6 cm), minimalny pobór prądu w czasie
pracy (~20 mA) i łatwe programowanie sprawiają,
że jego
domeną są projekty typowo elektroniczne.
RPi i Nano łączą wspólne cechy: kompaktowa
budowa oparta na jednej płytce oraz porty, których
można użyć do kontrolowania innych elementów
elektronicznych (np. diód, czujników). Czy pamięta-
cie ciężarówkę wykonaną z klocków lego, sterowaną
przez Rpi, przedstawioną w artykule z listopadowego
numeru „Młodego Technika”? Wnioski z tego projek-
tu sugerowały, że RPi nie był dla niego najlepszym
wyborem. Długi start systemu, cały bagaż Linuksa
z mnogością wymaganych bibliotek, problemy
z kartą SD – wszystko to podpowiada, że platforma
RPi była zbyt „ciężka”. Spróbujmy więc przyjrzeć
się Nano jako alternatywnej metodzie rozwiązania
naszego „problemu ciężarówkowego”.
powoli budowanie z klocków. W tym sposobie liczą
się inwencja, innowacja, kreatywność. Wszystko
leży na stole – i od Was zależy, jak to połączycie!
To wyjątkowy i niespotykany wcześniej ruch, przez
niektórych określany wręcz mianem III rewolucji
przemysłowej. Każdy, nawet dysponujący mini-
malnymi umiejętnościami, może stworzyć własny
projekt nie tylko do zastosowań domowych. Dzięki
serwisom typu KickStarter komercjalizacja pomy-
słu nie jest już żadnym problemem. Droga do bycia
przedsiębiorcą jest otwarta – od Was zależy, czy
zechcecie nią podążyć!
Plug&… pray?
Open Source
Zanim przejdziemy do szczegółów, warto zwrócić
uwagę na to, że Raspberry Pi i Arduino są projektami
bardzo mocno wspieranymi przez międzynarodową
społeczność. Ich twórcy zdecydowali się na mak-
symalne „otwarcie” swoich produktów. Na bazie
wolnych licencji udostępnili dosłownie wszystko
– od schematów elektrycznych, projektów płytek
PCB, środowisk do programowania i bibliotek.
Większość z tych elementów, które zazwyczaj chroni
się patentami i licencjami, jest dostępnych za darmo
do wykorzystania i modyfikowania. Efekt takiego
postępowania to przechodząca
wszelkie oczekiwa-
nia popularność.
Miliony ludzi na świecie budują
urządzenia oparte o Raspberry i Arduino, dzielą się
wynikami swoich doświadczeń, pomagają innym
entuzjastom w tworzeniu ich własnych projektów
(zob. [1]). Okazję zauważyły też firmy komercyjne.
Dostarczają wiele komponentów, z których można
łatwo budować swoje projekty.
Shield’y
dla Arduino,
rozszerzenia GPIO czy nadchodzący standard
HAT
dla Raspberry – tworzenie z nich przypomina
Z poprzednich tekstów tej serii wiecie już, że tworze-
nie środowiska dla Raspberry Pi nie jest specjalnie
skomplikowane – ale też nie takie znowu trywialne.
Praca z RPi wymaga kilku peryferiów (np. zasila-
cza, karty SD, klawiatury, monitora, przejściówki
UART-do-USB), być może zmian w konfiguracji
domowego rutera (np. ustawianie RPi stałego adresu
IP). Wymaga też pewnego zasobu wiedzy w temacie
Linuksa (ang.
learning curve).
Oczywiście w zamian
otrzymujemy bardzo uniwersalny zestaw umożli-
wiający wiele różnych eksperymentów – nie tylko
amatorskich. Ale czy można prościej?
W przypadku Nano całe peryferia sprowadzają się
do… kabla miniUSB. Za jego pomocą podłącza się
Nano bezpośrednio do komputera. Odpowiedzialny
za komunikację szeregową układ FTDI na większości
systemów operacyjnych nie wymaga instalacji żad-
nych dodatkowych sterowników. Programy piszemy
z użyciem aplikacji „Arduino IDE”, dostępnej nieod-
płatnie na stronie
http://goo.gl/yOz5J7.
Jej instalacja
nie powinna nastręczać żadnych problemów. Jedyną
trudność może sprawić zidentyfikowanie numeru
wirtualnego portu szeregowego (ang.
Virtual COM
Port,
VCP), tworzonego przez system operacyjny
po podłączeniu Nano do komputera. W tym celu:
podłączcie Nano do komputera (2);
otwórzcie Menedżera Urządzeń;
w wyświetlonym drzewku rozwińcie element
„Porty (COM & LPT)”;
odszukajcie „USB Serial Port (COMx)”
gdzie ‚x’ będzie numerem portu, np. 5
2. Arduino Nano podłączone do portu USB
komputera
85
Na warsztacie
SZKOŁA
5. Programatory ICSP (msx-elektronika.pl)
3. Szeregowy port VCP utworzony po podłączeniu
– zapamiętajcie go, będzie potrzebny za
chwilę (3).
Następnie w aplikacji Arduino:
w menu „Tools/Serial Port” ustawcie COMx;
w menu „Tools/Board” wybierzcie model
Nano, np. „Arduino Nano w/ ATMega 328”.
Arduino IDE wykorzysta port szeregowy VCP żeby
,
przesłać tworzony przez Was program do Nano. Żeby
przetestować połączenie, otwórzcie przykładowy pro-
jekt: „File/Examples/01. Basics/Blink” i wciśnijcie ikonkę
„Upload” (z poziomą strzałką). Jeżeli wszystko dobrze
podłączyliście i ustawiliście, przykład zostanie skompi-
lowany (tzn. przetłumaczony na instrukcje zrozumiałe
dla procesora Atmel napędzającego Nano) i wysłany
przez port USB na Wasz mikrokontroler. Po chwili Wasze
oczy ucieszy regularnie mrugająca diodka. Brawo, Wasz
pierwszy program na Nano zaliczony!
Zauważyłem jednak, że port miniUSB jest stosun-
kowo delikatny. Podczas któregoś z eksperymentów
udało mi się go uszkodzić na tyle skutecznie, że pro-
gramy muszę teraz ładować przez UART (z użyciem
konwertera UART-do-USB, omawianego w listopado-
wym „Młodym Techniku”) lub poprzez wyspecjalizo-
wany programator ICSP (5).
Konwerter UART-do-USB (4) należy podłączyć
w następujący sposób (niektóre konwertery mogą
mieć trochę inne oznaczenia):
odłączcie kabel z gniazda USB Nano; układ
zasilimy teraz przez konwerter UART-do-USB;
zworkę konwertera UART-do-USB przełączcie
tak, aby zewrzeć pin opisany 5 V i środkowy;
jeżeli na konwerterze nie ma takiej zworki,
upewnijcie się, że działa on na logice 5 V;
podłączcie pin RxD Nano do pinu TxD
konwertera;
podłączcie pin TxD Nano do pinu RxD
konwertera;
4. Konwerter UART-do-USB (msx-elektronika.pl)
podłączcie pin 5V Nano do pinu PWR
konwertera;
podłączcie pin GND Nano do pinu GND
konwertera;
odnajdźcie port szeregowy przyporządkowa-
ny konwerterowi (jak dla połączenia Nano
kablem USB powyżej);
w programie „Arduino” ustawcie odpowiedni
port szeregowy;
załadujcie kod na Nano jak poprzednio.
Potrzebujecie razem cztery kable żeńsko-żeńskie
(RTS i CTS konwertera nie muszą być podłączone).
Zauważcie, że piny
danych są łączone na krzyż
– RxD z TxD.
Kolejna uwaga dotyczy klonów Arduino. Jak
wspomniałem powyżej, Arduino to otwarty projekt.
Na podstawie dostarczonych przez twórców mate-
riałów, każdy producent może stworzyć własną jego
wersję. Ba – możecie to nawet zrobić sami! Problem
polega na tym, że niektórzy producenci nie przy-
kładają się do pracy dostatecznie lub tworzą własne
wersje, wykorzystując trochę inne komponenty
np. do komunikacji. Zdarzają się klony, gdzie FTDI
zastępowane są np. przez tańszy CH340G. Układy
takie wymagają samodzielnej instalacji sterowników.
Często nie obsługują wszystkich systemów operacyj-
nych (np. Win8) i nie gwarantują bezproblemowego
użytkowania. Zwróćcie na to uwagę, zanim skusi
Was znacznie niższa cena.
Poziom tekstu: średnio trudny
Karta SD a wewnętrzny Flash
Pamiętacie, ile problemów przysporzyła karta SD?
Wszystko skończyło się dobrze, wadliwy adapter
został wymieniony, ale ile to kosztowało nerwów?
A wszystko przez to, że RPi
nie ma wbudowanej
pamięci nieulotnej.
Pamięć nieulotna (ang.
non-vola-
tile)
to taka, której zawartość „przeżyje” wyłączenie
zasilania. RPi używa do tego celu karty SD. Tam
właśnie zapisywany jest system operacyjny i system
plików. Niestety, karta bywa kapryśna. Z drugiej
strony, takie rozwiązanie ma wiele zalet – jest tanie,
proste a przede wszystkim elastyczne. Zmiana RPi
z komputerka do nauki Scratch’a w multimedialny
kombajn (np. XBMC/Kodi) sprowadza się do wymia-
ny jednej karty na drugą. W razie kłopotów można
odtworzyć cały system z obrazu (kopia zapasowa).
Pamiętajmy również o Raspberry Pi model B+,
gdzie pełnowymiarowa karta SD została zamieniona
na micro-SD i już prawie nie wystaje spoza płytki.
86
m.technik
- www.mt.com.pl
Wymieniono także sam czytnik na metalowy, dużo
solidniejszy.
Nano nie ma czytnika kart SD. Wyposażono go
za to w pamięć
typu flash i EEPROM.
Flash jest
przeznaczony do przechowywania kodu progra-
mu. To bardzo popularna technologia, stosowana
np. w pendrive’ach. Taka pamięć jest wbudowana
w Nano – nie ma możliwości jej uszkodzenia przez
wkładanie/wyjmowanie. Moja wersja ma 32 kB.
Wersje z procesorem ATMega168 o połowę mniej.
2 KB flasha zajmuje tzw. bootloader – specjalny
kod startujący układ i ładujący Wasze programy.
Przy 16 GB karty SD w moim RPi, 32 kB to niewiele
(jakieś 524 288 razy mniej), ale wbrew pozorom...
najczęściej w zupełności wystarcza. Taka ilość
pamięci pozwala na zapisanie całkiem pokaźnego
kawałka programu wraz z bibliotekami. Przykładowy
kod „Blink”, który wysłaliście na Nano w poprzed-
niej sekcji, zajmuje ok. 1 KB.
EEPROM jest kolejnym rodzajem wbudowanej
pamięci nieulotnej obecnej na pokładzie Nano. Jak
wspominałem, pamięć flash służy jedynie do przecho-
wywania programów. Z poziomu kodu nie można jej
zapisać (np. stworzyć w niej pliku). Wyobraźmy sobie
jednak, że chcielibyśmy zapamiętać wyniki pomiarów
temperatury i mieć do nich dostęp nawet w przypad-
ku restartu lub wyłączenia prądu. Dla RPi możemy
to osiągnąć, tworząc plik na karcie. W przypadku Nano
mamy do dyspozycji 1 KB EEPROM. Jak na obecne cza-
sy nie jest to ilość oszałamiająca (1024 bajtów), ale przy
odrobinie wysiłku wystarczy na wiele (zob. [2]).
Kwestia priorytetów
Wyniki pomiarów zapisane w pamięci EEPROM
wyobrażam sobie jako binarne rekordy, gdzie począt-
kowa liczba (1 bajt) to pierwsza zmierzona tempera-
tura dnia, a następne to tzw. delty, różnice w tem-
peraturze w stosunku do poprzedniego rozmiaru.
Temperatura może rosnąć lub maleć – zarezerwuję
na to jeden bit (‚1’ to zmiana na plus, ‚0’ na minus).
Na 3 bitach mogę zapisać 8 liczb (binarnie 000, 001,
010, 011, 100, 110 i 111, dziesiątkowo: 0, 1, 2, 3, 4,
5, 6, 7), co odpowiada zmianie temperatury w ciągu
godziny o 7 stopni (gdybym użył 2 bity: 00, 01, 10,
11 – o 3 stopnie). Nie jestem meteorologiem, ale
wydaje mi się że to wystarczająca rozdzielczość.
W pierwszej godzinie zapisuję 1 bajt, następne zmia-
ny połówkami bajtów – po 24 godzinach mam rekord
o rozmiarze 13 bajtów (temperatura początkowa i 23
pomiary pół bajtu). Ostatnie 4 bity mogą służyć jako
warunek końca rekordu, np. „1000” („0000” to brak
zmiany). W ten sposób na 1024 bajtach EEPROM
zmieszczę: 1024/13 = 78 dni. Jestem pewien, że wy-
myślicie jeszcze inne, znacznie sprytniejsze sposoby
upakowania danych. Czy tak samo rozwiązałbym
ten problem w przypadku RPi? Ponieważ RPi nie
ma EEPROMu, raczej zdecydowałbym się na zapi-
sywanie danych w pliku, najlepiej w formacie XML.
Mógłby on wyglądać tak:
<?xml version=”1.0” encoding=”UTF-8”?>
<temperatura czujnik=”ds1820” id=”51”>
<dzien>
<dzisiaj>22.08.2002</dzisiaj>
<pomiary>
<odczyt>
<godzina>21:00</godzina>
<stan>23</stan>
</odczyt>
<odczyt>
<godzina>22:00</godzina>
<stan>20</stan>
</odczyt>
//...
</pomiary>
</dzien>
</temperatura>
Na cały dzień pewnie ze 2 KB zejdzie... Ale za
to łatwo napisać transformację XSLT, zamieniając
„surowe” dane w ładną stronę WWW, z komputera
wpisać adres IP mojego RPi i obserwować wykresy
przebiegów zmian.
Termometr nie był kluczowym elementem naszej
budowanej z lego ciężarówki. Proszę jednak zwrócić
uwagę na różnice w podejściu do zagadnienia.
W przypadku Nano liczymy każdy bit zasobów.
Dla
RPi nie jest to wcale krytyczne. 10 kB czy 100 kB
– w skali karty SD różnica jest niewielka. Dla Nano
będziemy nawet optymalizowali ilość zapisów/od-
czytów z EEPROMu. Na RPi zrobi to za nas system
operacyjny (zarządzanie plikami), odpowiednie bi-
blioteki (dostęp do elementów drzewa XML) czy całe
aplikacje (Apache serwujący stronę html). W przy-
padku układów jak Nano jesteśmy blisko sprzętu,
musimy liczyć się z bardzo ograniczonymi zasobami.
Za to mamy pełną władzę nad wykonaniem progra-
mu. W przypadku maszynek jak RPi – wiele ułatwia
system i biblioteki, ale należy pożegnać się z pełną
kontrolą. Raspbian (najbardziej popularna dystry-
bucja Linuksa dla RPi) domyślnie nie jest systemem
czasu rzeczywistego. Może się zdarzyć, że jakiś
ważniejszy proces przejmie na chwilę kontrolę i nasz
pomiar nie odbędzie się dokładnie w przewidzianym
momencie. Oczywiście w przypadku temperatury
50 milisekund różnicy nie zrobi. Co jednak, gdy
sterujemy wypełnieniem sygnału PWM do kontroli
serwomechanizmu (zobacz poniżej)? Albo kontro-
lujemy silnik krokowy w drukarce 3D? Oczywiście
można obejść takie problemy, ale znowu – zakres
wymaganej wiedzy rośnie eksponencjalnie.
Pisanie oprogramowania w Pythonie RPi jest
stosunkowo łatwe, wręcz intuicyjne. Dostępne biblio-
teki oferują potężną funkcjonalność. Co więcej – kod
piszemy i wykonujemy od razu na samej Raspberry.
Najpierw jednak trzeba wszystko zainstalować
i skonfigurować, upewnić się, że spełniono zależ-
ności itp. W przypadku niektórych bibliotek może
to być nielichym wyzwaniem. Za przykład niech
posłuży moduł „lirc”, który użyliśmy do interpretacji
87
Na warsztacie
Tabela 1. RPi i Arduino Nano – podstawowe dane
Raspberry Pi B
CPU (ang. Central Procesor
Broadcom, ARM11, 700 MHz
Unit)
GPU (ang. Graphical
Tak
Processing Unit)
Rozmiar
85×56×21 mm
Pamięć operacyjna
512 MB
Wbudowana pamięć
programu flash
Wbudowana pamięć danych
EEPROM
Karta SD
Uniwersalne wyjścia/wyjścia
cyfrowe
Wejścia analogowe
PWM sprzętowy
Napięcie zasilania
Karta SD
Karta SD
Tak
17 (+9 dla B+)
0
1
5 V przez microUSB,
5 V przez pin 2 (back-power,
ostrożnie!)
SZKOŁA
Arduino Nano
Atmel 328P; 16 MHz
Nie
Uwagi
Procesor centralny
Osobny układ graficzny,
np. dekodujący filmy HD
Poziom tekstu: średnio trudny
18×43×8 mm (bez pinów)
1 kB
Pamięć, w której wykonują się
programy
32 kB
Pamięć, w której zapisuje się
programy
1 kB
Pamięć dla danych
Nie
22
8
6
5 V przez USB
5 V przez pin PWR
6-20 V (przez Vin),
wewnętrznie stabilizowane
ok. 20 mA
40 mA
Nie
Nie
Dodatkowe funkcje, jak UART,
I
2
C, SPI
Np. konwerter analog do cyfrowy,
do pomiaru naładowania LiPo
Generowanie sygnału
do sterowania serwami
Prąd zasilania
Prąd dostarczany na pin
HDMI
Wewnętrzny zegar RTC
System operacyjny
Orientacyjna cena
co najmniej 400 mA
20 mA
Tak
Nie,
usługi ’fake-hwclock’ lub NTP
gdy podłączony do Internetu
Linuks
Brak
150 zł (+wymagane akcesoria) 35 zł
Bez obciążeń
Jako dodatkowe akcesorium
sygnałów z odbiornika podczerwieni. Przyznam się,
że poprawne skonfigurowanie pilota do ciężarówki
zajęło mi kilka dobrych wieczorów (łącznie z do-
czytaniem dokumentacji). W przypadku Arduino
podłączenie, dodanie odpowiedniej biblioteki
i odebranie pierwszych kodów z pilota trwało… nie
więcej niż 15 minut. Linuks może być zbawieniem,
ale i przeszkodą.
Kwestią otwartą pozostaje, czy nastolatki, które
zbudowały ciężarówkę, lepiej poradziłyby sobie z ję-
zykiem C Arduino (właściwie językiem stworzonym
na bazie C) niż np. Pythonem RPi (lub innym, który
można użyć na tej platformie). Python ma niewiel-
ki narzut składniowy, daje natychmiastowe efekty
(jest interpretowany), łatwo znaleźć błędy. I przede
wszystkim jest o wiele bardziej wyrozumiały... A jak
coś nie idzie w Pythonie, zawsze można przerzucić
się na Scratcha, Javę czy coś równie efekciarskiego.
W przypadku C Arduino kompilacja jednak trochę
trwa, potem następuje ładowanie kodu na kontroler
i dopiero można patrzeć na logi z portu szeregowego.
Oczywiście jeżeli wcześniej zaopatrzyliśmy nasz
kod w odpowiednie linijki typu Serial.println(...)
drukujące wartości odpowiednich zmiennych czy
kroków programu. Dodatkowo trzeba pamiętać
o zamknięciu aplikacji monitora portu (wbudowany
lub np. Putty), zanim zaczniemy ładować kod. Coś za
coś. Oczywiście możemy zaopatrzyć się w bardziej
zaawansowane narzędzia i oprogramowanie (np.
Atmel Studio, dostępne za darmo), ale skala wyzwa-
nia wtedy rośnie.
Linuks czy nie Linuks?
W naszym projekcie jednym z większych
problemów
RPi był stosunkowo długi czas startu.
Zanim system
się załadował i uruchomił właściwy skrypt obsługi
ciężarówki, mijały kolejne minuty. Podczas prezenta-
cji w klasie, dzieci nerwowo naciskały przyciski pilo-
ta, a ciężarówka uparcie stała w miejscu. Zaczynała
odpowiadać dopiero po dłuższej chwili. W tym
czasie my z napięciem wpatrywaliśmy się w diodę
ACT (oznacza pracę urządzenia), czy przypadkiem
nie zgaśnie lub nie zacznie dziwnie migać (czytaj: re-
gularnie, co oznacza awarię).
W przypadku Arduino,
minuty potrzebne na start zamieniają się w części
sekundy.
Program startuje bez zauważalnej zwłoki,
co jest niewątpliwą zaletą w wielu zastosowaniach.
Oczywiście nie warto porównywać pracy, jaką
wykonują RPi i Nano przy starcie. Nano nie ma
nawet systemu operacyjnego! Program w języku C
88
m.technik
- www.mt.com.pl
Zgłoś jeśli naruszono regulamin