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.

Wednesday, January 6, 2016

Rozbudowa sieciowego lab-u

Ostatnimi czasy postanowiłem rozbudować mój domowy lab, który opisywałem już wcześniej w poście Domowy lab Cisco + MikroTik. W tamtym poście skupiłem się głównie na sprzęcie Cisco, ponieważ wtedy to właśnie z niego składał się mój domowy lab, ale wspominałem również o nowym tanim modelu MikroTik-a hAP lite. Tym razem poszedłem w stronę zakupu routerów MikrotTik, dokupiłem ich parę. Niestety (tak mi się wydawało na początku) teraz nie można już kupić hAP lite w leżącej obudowie, cóż zmienili design ale ta stojąca jest dobra i wcale się nie przewraca jak powpinamy wszystkie kable - pięknie stoi i prezentuje się. Warto byłoby napisać o tym jak wygląda taki MikroTik w środku, co ciekawe w leżącej obudowie jest inny chip niż w stojące, ale to różnica głównie producencka, bo architektura jest ta sama. Jako ciekawostkę mogę podać, iż w środku znajduje się tylko jeden chip, który robi za WiFi, Ethernet, Switching, USB, te ostatnie obsługiwane jest tylko jako zasilanie. Jednym słowem jest to bardzo lekka konstrukcja, dlatego jest zasilana przez port USB 5V, a wszystkie razem w moim labie pobierają 7.5W. Oczywiście ich procesory mają odpowiednio mniejszą moc, ale coś za coś. Odpaliłem je nawet z power banku.
Połączenie routerów MikroTik i switch-ów Cisco to piękne rozwiązanie. MikroTik daje Ci routing i wireless, zresztą wystarczy spojrzeć na stronę certyfikacyjną. Tak tak, MikroTik od jakiegoś czasu uruchomił fajny program certyfikacyjny z mapką gdzie najbliżej znajdziesz specjalistę do urządzeń MikroTik.
Więc teraz w swoim labie mam piękny routing, również z Cisco (switch 3550), wireless (czyli AP-ki MikroTik, które mają full opcji dla WiFi) oraz switching na Cisco. A teraz pochwale się jak pięknie wygląda mój lab.




A teraz przedstawię schemat sieci jaki zbudowałem.


Tu należy się trochę wyjaśnień, zresztą i tak chciałem poruszyć temat tego jak fajnie można wykorzystać przemądre switche Cisco Catalist 3550. Zauważ, iż wewnątrz siatki routerów (przeważnie kable czerwone) użyłem prawdziwych publicznych adresów IP, co wyraźnie odróżnia je jako routing WAN. Oczywiście na tej samej linii może być i WAN i LAN. Ale skupmy się na niebieskich przerywanych liniach, to LAN, sieci brzegowe. Tam użyłem adresacji prywatnej, ale połączone jest to z WiFi za pomocą VLAN-ów. Otóż od routera R1, R2 i R3 idzie kabel do jednego 3550, ale jest to tak skonfigurowane, jakby były to fizycznie inne switche w innej lokalizacji. W 3550 możemy robić porty tylko w L3 (routing), L2+L3 (VLAN + IP), oraz tylko L2 (VLAN bez IP) i tą ostatnią opcje zastosowałem. Dzięki temu iż te VLAN-y nie mają IP to nie mogą komunikować się z całym routingiem, który jednocześnie jest uruchomiony wewnątrz 3550. Gdybym ustalił adres IP dla tych VLAN-ów i włączył routing, to okazałoby się iż np. sieć 10.4.24.0/24 ma bezpośrednie połączenie z 22.22.22.254, a tak to wszystkie połączone urządzenia do tej sieci, czy to przez kabel za pomocą portów w 3550, czy przez WiFi do sieci 22.22.22.254 muszą przebyć drogę przez routing WAN. Podsumowując, tam gdzie są niebieskie przerywane linie, można na tym schemacie wstawić oddzielne switch za routerem i efekt będzie taki sam.


Sunday, January 3, 2016

Elektronika dla informatyka

Co daje wiedza nt. elektroniki dla informatyka, ale i nie tylko? Dla mnie to nic innego jak odpowiedź na pytanie "ale jak?". Mam tu na myśli zrozumienie jak coś działa w prawdziwym tego słowa znaczeniu, a że czego się informatyk nie dotknie to działa to na prąd, więc jest o czym mówić. Jeżeli jeszcze nie doceniłeś tego powiązania to polecam przeczytać mój wcześniejszy wpis Historia komputerów jakiej nie znałeś.
Teraz opowiem o jednym z przykładów, gdzie zastanawiałem się nad tym jak oni to robią, a odpowiedź znalazłem ucząc się elektroniki. Nie jest to taka prosta rzecz, więc muszę trochę wprowadzić w temat. Otóż, gdy studiowałem nowy standard 802.11ac i sieci WiFi miałem już odpowiedź niemal na każde pytanie. Mogłem obliczyć każdą przepustowość co do bita. Wiedziałem niemal wszystko o WiFi ale na poziomie wiedzy informatycznej, a że WiFi to nic innego jak radio i fala elektromagnetyczna, to tu zaczyna się nauka fizyki i elektroniki. Inaczej mówiąc, WiFi to nic innego jak np. logika 802.11n położona na fale elektromagnetyczną i z tą falą jest dużo problemów, dużo pytań. Mnie osobiście bardzo interesowało jak to działa, ale tak dokładnie, krok po kroku i tu nadziałem się na pytanie jak mój odbiornik radiowy (karta WiFi) oddziela od całego szumu elektromagnetycznego tylko ten sygnał, który go interesuje. Pewnie ktoś pomyśli, a dlaczego to takie istotne? Hy, to pytanie będzie dla Ciebie bardziej ciekawe gdy dowiesz się czym jest superpozycja. Jeżeli nie interesowałeś się wcześniej spektrum elektromagnetycznym to polecam obejrzeć co najmniej poniższy klik wideo.


Otóż fala elektromagnetyczna składa się z dwóch składowych, pola magnetycznego i energii elektrycznej. Nas będzie interesowała teraz tylko ta druga, która tak samo jak pierwsza ma postać sinusoidy. Z powyższego klipu dowiedziałeś się, że wszystkie emitowane fale wokół nas mieszają się ze sobą. Dla przykładu, gdy włączysz radio to zaczyna ono grać, czyli odbiera falę o danej częstotliwości. Wniosek z tego taki, iż ta fala otacza Ciebie cały czas. Gdy ktoś do ciebie napisze SMS-a to też Twój telefon komórkowy go odbierze, więc fale GSM również Cię otaczają. Hy, w końcu gdy czytasz ten tekst prawdopodobnie łącząc się przez domowy router z WiFi również odbierasz jego fale. I teraz sobie wyobraź, że wszystkie te fale emitowane jednocześnie mieszają się ze sobą - i to jest właśnie superpozycja.




Spójrzmy na to w matematyczny sposób - jako wykres.


Mamy tutaj dwie fale (zielona i niebieska) o różnych częstotliwościach i amplitudach. Natomiast ich sumą jest fala czerwona. Tak to wygląda z matematycznej perspektywy, a teraz dodajmy do tego trzeci wymiar i spójrzmy na to w bardziej praktyczny sposób.


W powyższym przykładzie te same fale rozchodzą się z dwóch przeciwległych narożników przedstawianej przestrzeni 3D. Więc fale te tworzą zupełnie inną superpozycję niż na wcześniejszym wykresie 2D. przyglądając się sumie tych fal w 3D możemy zrozumieć co "widzi" odbiornik WiFi.

Więc nasz laptop, a konkretnie jego karta WiFi widzi tylko sumę wszystkich emitowanych fal w jego zasięgu i potrafi wyłuszczyć z niej ten sygnał, który go interesuje. Jak on to robi? Wydawać by się mogło, iż to będzie bardzo skomplikowana matematyka w algorytmie karty sieciowej, ale nic bardziej mylnego. Tego typu problem mogą rozwiązać tylko dwa precyzyjnie dobrane elementy elektroniczne. Oczywiście w karcie WiFi jest to bardziej skomplikowane, ale zasada jest podobna. Znalazłem bardzo prosty przykład, jak to działa - stary filtr DSL.

Otóż zapewne wiesz, iż dostawca telekomunikacji potrafi przez jeden kabel dostarczyć dwie różne usługi, połączenie telefoniczne i internetowe. Tu w odróżnieniu medium jest kabel, a nie przestrzeń, ale na naszym poziomie rozważań to nie ma większego znaczenia. Więc po tym samym kablu płyną dwa sygnały o różnych częstotliwościach, gdyż głos ludzki to również określona częstotliwość. Sygnał DSL jest przeznaczony do modemu, ale przed telefonem należy go odfiltrować za pomocą wspomnianego filtra DSL[1]. Dokładny opis podziału częstotliwości linii DSL znajdziecie tu.





Jak widać filtr DSL składa się z trzech komponentów elektronicznych, ale tak naprawdę działają tylko dwa, cewka i kondensator, a dwie cewki są po to aby działał niezależnie od tego jak się go podłączy (tak przypuszczam).  Taki układ nazywa się low-pass filter lub po polsku filtr dolnoprzepustowy. Oto jego schemat.


Wystarczy dobrać odpowiednie wartości tych dwóch elementów, aby otrzymać prosty low-pass filter na określone częstotliwości. W internecie znajdziecie mnóstwo kalkulatorów takich filtrów. Oczywiście w przypadku WiFi od którego zacząłem potrzebny jest filtr częstotliwości Band-Pass filter, coś takiego jak opisano tu.

Skoro już poruszyłem temat superpozycji i elektroniki to nie mogę oprzeć się aby pokazać przykład superpozycji, która ma miejsce w drucie. Ciekawym przykładem jest obwód z dwoma źródłami napięcia, podobnie jak wcześniej z dwiema falami, tylko tu napięcie będzie stałe, więc na wykresie to będzie linia prosta. Ale zasada działania pozostaje ta sama.


Na czerwono zaznaczyłem kierunki przepływu prądu, jak widać przez środkowe połączenie pobiegnie suma dwóch prądów, tego z prawego i lewego obwodu i to właściwie jest prawo Kirchhoffa.

[1] http://brooketel.ca/internet/high-speed-dsl-frequently-asked-questions/