Tuesday, January 12, 2016

Arduino do nauki elektroniki

W sieci jest wiele tekstów i opinii na temat, czy Arduino jest dobre dla kogoś, kto chce nauczyć się elektroniki od podstaw. Oczywiście ja przedstawię tu swoją pozytywną opinię ale muszę przyznać, że w tych negatywnych też jest trochę prawdy. Wynika to z tego, iż co innego gdy ktoś bierze się za programowanie mikrokontrolera nie mając pojęcia ani o elektronice ani o programowaniu. Gdy zna się na programowaniu to jest o połowę prościej - tak mi się wydaje. Wtedy można skupić się tylko na elektronice i sprzęcie, bo "rozmawia" się przecież w ojczystym języku :) Dlatego uważam, że Arduino jest bardzo dobrym rozwiązaniem dla informatyka, ale i nie tylko.

Nagrałem nawet dwa projekty, które gdzieś tam w wolnym czasie sklepiłem na szybko. Pierwszy to nic innego jak pewnego rodzaju analogia do wyświetlacza w sprzęcie muzycznym, który wskazuje natężenie dźwięku - niestety nie miałem jak puścić tego dźwięku jednocześnie aby było go słychać.
Drugi to zdalna kontrola diodą RGB za pomocą pilota. Chciałem zrobić sterowanie TV z Arduino poprzez przechwycenie kodu mojego pilota (co mi się udało) i wysłanie go z diody IR, którą mam, ale nie znalazłem biblioteki do niej, a nie miałem czasu zagłębiać się w temat.



Teraz trochę opowiem o tym sprzęcie i jego jakiś głównych cechach. Otóż Arduino Uno Rev 3 ma mikrokontroler ATmega328p firmy Atmel, najlepiej w obudowie DIP, gdyż z takiej sam mikrokontroler można wyjąć lub wymienić go. Można również wybrać taki mikrokontroler w obudowie SMD, ale wtedy to już lepiej Arduino Leonardo. ATmega328p jest to mikrokontroler typu AVR w architekturze RISC, czyli tak jak ARM (RISC), które często mamy w telefonach i tabletach. Jeżeli mówimy o nauce elektroniki od podstaw to chyba warto wspomnieć czym właściwie różni się mikrokontroler od procesora. Najprościej wytłumaczyć to w ten sposób - jeżeli wiesz, że komputer składa się z wielu podzespołów złożonych razem takich jak CPU, RAM, HDD, Mainboard, to mikrokontroler jest tym wszystkim w jednym kawałku krzemu. Oczywiście wtedy jego komponenty mają inny charakter, jak np. dysk twardy, wtedy to jest pewna odmiana pamięci flash i dlatego taki mikrokontroler różni się sposobem połączenia tych wszystkich elementów, co zwie się architekturą. Taki mikrokontroler ma w sobie zintegrowany CPU ale nie ma on takich wydajności jak typowe procesory choćby w laptopach. Dokładnie to we wspomnianym modelu jest to 20 MHz.

Warto również poruszyć temat programatora, bo Arduino samo w sobie, tak naprawdę jest "płytką prototypową" jak to jego producenci określają. A co należy rozumieć przez płytkę prototypową? A no, to nic innego jak płytka z zintegrowanym mikrokontrolerem (tym zajmuje się drugi mikrokontroler do USB na płytce w obudowie SDM) i niezbędnym obwodem do pracy głównego mikrokontrolera. Gdyby nie to, to potrzebowałbyś oddzielnego mikrokontrolera i oddzielnego obwodu z głównym mikrokontrolerem, co wyglądałoby jak kupa kabli i nie byłoby tak wygodne jak gotowa elegancka płytka. W sieci znajdziecie wiele poradników jak złożyć samemu taką płytkę na płytce stykowej jeżeli kogoś to interesuje tak jak mnie interesowało :).

Na rynku dostępnych jest wiele podobnych rozwiązań, zwłaszcza osoby interesujące się systemem GNU/Linux powinny kojarzyć projekt Raspberry Pi. Więc czym różni się Arduino od Raspberry Pi? Podstawowa różnica to możliwości mikrokontrolera, o ile można go tak nazwać. Z założenia nim jest, ale nie wszystko ma zintegrowane w środku, potrafi korzystać z zewnętrznych kości pamięci ale ogólnie jest zintegrowany. Za możliwościami idzie oprogramowanie, w Arduino jest relatywnie prosty procesor, więc i do nauki jest w sam raz. Z kolei w Raspberry Pi procesor umożliwia już uruchamianie zaawansowanych systemów wielozadaniowych (tak tak to GNU/Linux) i jednocześnie oferuje jeszcze piny I/O ale nie są one już dostępne bezpośrednio jak w Arduino. W Raspberry Pi pinami I/O sterujemy za pomocą odpowiedniej biblioteki, najczęściej w Pythonie. jeżeli nie wyraziłem się dość jasno to polecam obejrzeć to wideo. Więc dla mnie jako weterana z GNU/Linux generowanie sygnałów 5V z systemu Linux za pomocą skryptów Pythona to mało pouczające, zwłaszcza dla takiej osoby. Ponadto gdy weźmie się cenę Raspberry Pi to tym bardziej się nie opłaca.

Powiem słów parę jeszcze o modułach do Arduino, które są sprzedawane wraz z nim lub osobno. Cóż większość z nich jest drugiej jakości, dla przykładu taki czujnik dźwięku, który testowałem jest tak czuły, iż odróżnia chyba tylko dwa stany natężenia dźwięku: wybuch bomby z 1 i 10 metrów :) Chociaż do zrobienia czegoś takiego może i by się nadał :) No ale skoro ma być tanio to i tak nie taki zły kompromis, ponieważ nauczysz się jak działają takie urządzenia, a czujnik zawsze można kupić lepszy jeżeli będzie potrzebny. Oczywiście nie wszystkie moduły są takie lipne, są też i dobre.

Ostatnią rzeczą jaką chcę nadmienić, jest to, że Arduino ma przeważnie gotowe biblioteki do wielu modułów. Nie zawsze ale i tak to jest lepsze niż to, z czym ja miałem do czynienia na studiach, czyli płytką Texas Instruments, z którą aby cokolwiek zrobić trzeba było ustawić dziesięć flag. Oczywiście, gdyby zabrać z Arduino biblioteki to tu również będzie taka sytuacja, ale nie jest.

Wypada jeszcze dodać, że w pewnym sensie Arduino i temu podobne są przygrywką do tzw. IoT, czyli Interentu rzeczy. Zapewne słyszałeś już o inteligentnych domach, który zapala światło gdy przychodzisz, spuszcza wodę gdy wychodzisz ;) To wszystko jest realizowane na bazie małych minikomputerów do których podłączona jest masa czujników i przełączników. Oczywiście inteligentne domy to tylko przykład, ja podam swój, który mnie bardziej interesuje. Chodzi o moduł Arduino Ethernet Shield, który również sobie zakupiłem i możliwość monitorowania parametrów np.... Na przykład w szafce sieciowej, gdzie w lato może być naprawdę gorąco możemy wsadzić Arduino, które będzie za pomocą czujnika temperatury sprawdzać czy nie jest za gorąco i odpowiednio włączać jakieś urządzenie chłodzące poprzez przełącznik 230V. Bardzo prosty projekt do wykonania i bardzo przydatny. Można go również zlutować na stałe gdy konstrukcja się sprawdzi i urządzenie gotowe.

Na koniec jako inspirację podsunę projekt, który również można wykonać z Arduino, a jest nim LED Cube.

1 comment:

  1. Bardzo ciekawa koncepcja jeśli chodzi o projektowanie elektroniki

    ReplyDelete