wtorek, 25 kwietnia 2017

Arduino czas zacząć cz.2

Program

Na razie powiedzieliśmy sobie o samym Arduino patrząc na nie od strony sprzętu. To co odróżnia mikrontroler (Atmega 328) od np. układu NE555, jest możliwość wykonywania programu, czyli ciągu instrukcji mówiących układowi co robić.
W przypadku naszych przygód z Arduino może zastosować dwa podejścia:

  1. Piszemy program na komputerze i wgrywamy go na mikrokontroler. Od tego momentu nasz układ zaczyna wykonywać instrukcje, nie potrzebując już tak naprawdę komputera.
  2. Na Arduino instalujemy specjalny program słuchający poleceń, zaś nasz program piszemy i wykonujemy na komputerze. Różnica jest taka, że Arduino samo z siebie nie będzie np. zapalać i gasić diody, będzie czekać aż przyjdzie odpowiedni rozkaz z komputera.

Oprogramowanie

Aby rozpocząć zabawę potrzebujemy oprogramowania, w którym będziemy tworzyć nasze programy. Na razie nie ma znaczenia, które podejście zastosujemy,  i tak musimy pobrać i zainstalować tzw. Arduino IDE. W zależności od systemu wybieramy odpowiednią wersję i instalujemy ją na komputerze. Po uruchomieniu, edytor wygląda następująco:



Poza standardowym edytorem dla Arduino, potrzebujemy również czegoś, co pozwoli nam pisać w scratchu :) i jednocześnie używać Arduino. Aplikację można pobrać ze strony projektu Snap4Arduino.
Po zainstalowaniu i uruchomieniu zobaczymy znajomy, choć nieco inny interfejs:

Zostawmy to na razie i wróćmy do Arduino IDE. Zaczniemy od drugiego sposobu "programowania" czy raczej używania Arduino. Aby to było możliwe musimy wgrać na Arduino program, który będzie nasłuchiwać komend wysyłanych ze "scratcha" i wykonywać je na mikrokontrolerze.

W menu "Plik" wybieramy "Przykłady > Firmata > StandardFirmata". Powinniśmy zobaczyć coś w tym stylu:
Na razie jedyne co możemy zrobić to klinąć w przycisk:
co spowoduję weryfikację programu.
Teraz podłączmy Arduino za pomocą przewodu do komputera. W Windows10 nie ma problemu i system wykrywa odpowiednie sterowniki; jeśli wystąpią problemy można spróbować pobrać i zainstalować sterowniki (wkrótce się pojawią ;) )
Jeśli wszystko przebiegło poprawnie, możemy teraz poinformować edytor, z jakiego  Arduino będziemy korzystać i gdzie jest podłączone, W menu "Narzędzia" dla opcji "Płytka" wybieramy "Arduino Nano", opcja |"Procesor" powiinna wskazywać pokazywać "ATmega328", zaś w opcji "Port" wybieramy ten, na którym jest podłączone Arduino, np. COM4:

Jeśli jest kilka portów COM, to odłączmy na chwilę Arduino - ten port który zniknął i pojawi się po ponownym podłączeniu będzie tym właściwym.
Ostatnim krokiem jest wgranie programu do mikrokontrolera, a czynimy to przyciskiem:
Jeśli niczego nie skno... zepsuliśmy, to edytor powinien po kolei informować nas, że trwa:
  • Kompilowanie szkicu....
  • Wgrywanie...
A na końcu ładnie nas powiadomić: "Ładowanie zakończone."
Od tego momentu Arduino słucha komend ze scratcha. Ale o tym w następnym odcinku.
PS. Wyłączcie już Arduino IDE. Chwilowo nie będzie potrzebne.



poniedziałek, 24 kwietnia 2017

Arduino czas zacząć cz.1

Na ostatnich zajęciach chłopcy rozpoczęli swoją przygodę z Arduino, czyli... Właśnie, może na początek parę słów wyjaśnienia, czym owo tajemnicze Arduino jest. Otóż Arduino to tak naprawdę nic innego jak bardzo mały komputer, który można wykorzystać w różnych projektach, urządzeniach które komunikują się z otoczeniem, sterują urządzeniami itd...

Wprowadzenie

Sercem tego komputera jest mikrokontroler Atmega328, który różni się od procesora w przeciętnym laptopie tym, że zawiera w sobie wiele dodatkowych elementów: pamięć, układy do komunikacji z otoczeniem itd. Wszystko w jednym scalaku. Oczywiście moc obliczeniowa jest o wiele mniejsza, ale wystarczy do naszych zastosowań. Aby zaprogramować mikroktroler, z reguły potrzebna była specjalistyczna wiedza, sprzęt - wszystko to utrudniało zaczęcie zabawy z tego typu układami.
Z Arduino jest łatwo, zresztą takie było zamierzenie twórców - wystarczy przewód USB, znajomość programowania i nieskomplikowany edytor kodu, by w zasadzie jednym kliknięciem wgrać program do układu. Chętnych odsyłam do strony projektu (w języku angielskim).

Komunikacja 

Jak już wspomniałem, Arduino komunikuje się z otoczeniem. By to było możliwe, potrzebny jest jakiś kanał do komunikacji. W przypadku tego układu mamy do czynienia z tzw. wejściami i wyjściami:
  • wejścia / wyjścia cyfrowe D1 - D13
  • wejścia analogowe A0 - A7
Czym się różni wejście od wyjścia? Z wejść mikrokontroler odczytuje wartości, a na wyjścia zapisuje. I teraz należy zapamiętać:
  • wejścia / wyjścia cyfrowe mają dwa stany - włączony i wyłączony, 1 i 0, jest napięcie - nie ma napięcia
  • wejścia analogowe pozwalają tak naprawdę na zmierzenie wartości napięcia (0-5V) na danym wejściu i przekształcenie tej wartości na pewną liczbę 

Wejście analogowe

Zrozumienie jak działa wejście analogowe nie jest trudne. Wyobraźmy sobie że mierzymy napięcie w zakresie od 0 do 5V.  Mikrokontroler nie będzie operować np wartością 2.4V, byłoby to niewygodne (mówiąc najogólniej). Zamiast tego sygnał z wejścia trafia na specjalny układ zamieniający sygnał analogowy na cyfrowy (przetwornik A/C). Zobaczmy na wykresie:
Załóżmy, że układ przetwornika może zmierzyć napięcie i zamienić je na liczby od 0 do 7 (dwójkowo na 3 bitach można zapisać właśnie takie liczby). Jeśli teraz na wejściu pojawi się napięcie 2.4 V układ przekaże dalej do mikrokontrolera liczbę 5 (011), zaś 4,9 dałoby wartość 7 (111). 

Wyjście analogowe (udawane)
Arduino nie posiada wyjść analogowych. Nie da się powiedzieć "ustaw na wyjściu X napięcie odpowiadające liczbie 7". Mikrokontroler nie posiada przetwornika cyfrowo-analogowego (C/A). Ale... Skoro jest tu taka sekcja, znaczy się sprawa nie jest beznadziejna. Arduino może nieco oszukać, a wykorzystuje do tego PWM  - sterowanie szerokością impulsu. Na niektórych wyjściach cyfrowych mikrokontroler może generować falę prostokątną (szybko włączać i wyłączać wyjście), z częstotliwością kilkuset Hz. Jeśli popatrzymy na drugi przypadek, sygnał wysoki (5V) pojawia się przez 25% czasu cyklu, kolejne 75% pozostaje w stanie niskim (0V). Gdybyśmy podłączyli miernik to pokazałby napięcie ok 1.25 V (1/4 z 5V).

Takich możliwych przypadków jest 256 (0 - 255), czyli rozdzielczość naszego wyjścia to 8 bit.

poniedziałek, 27 marca 2017

Od chaosu do...

Dziś na zajęciach chłopcy próbowali zaprogramować pewien algorytm. Prosty, wydawałoby się że bez większego sensu. Algorytm wygląda następująco:

Mamy trzy wierzchołki trójkąta {W1, W2, W2} i punkt (nazwijmy go skoczkiem). Nasz skoczek, an początku ulokowany wewnątrz trójkąta, w nieskończoność (bądź do przerwania programu przez użytkownika) wykonuje następujące kroki:
  1. Wybiera losowo jeden z wierzchołków.
  2. Skacze do połowy odległości pomiędzy nim a wybranym wierzchołkiem (oczywiście po linii prostej przechodzącej przez skoczka i wierzchołek)
  3. Rysuje punkt w miejscu, do którego skoczył

W graficzny sposób, uwzględniając to że będziemy programować w Scratchu, algorytm można przedstawić graficznie:

A program może wyglądać tak:

Co robi? Cóż, zobaczcie sami, a jeśli nie chce Wam się "pisać" programu samodzielnie, możecie pobrać go i uruchomić w Scratchu.
A na koniec, co jeszcze można zrobić?

  • dodać możliwość ustawiania wielkości punktu
  • dodać kolory (np. każdy wylosowany wierzchołek ma przypisany inny kolor)
  • zrobić kwadrat, zamiast trójkąta (tutaj uwaga: wtedy musimy mieć 8 punktów, nie 4)

sobota, 18 marca 2017

Klubik w marcu - Nawigacja (cz. 1)

Tym razem tematem przewodnim była nawigacja. Ze względów czasowych skupiliśmy się na użyciu kompasu z mapą, a że niestety aura nie dopisała, część terenowa też została ograniczona do minimum. Ale po kolei...

Budowa kompasu

Nim sięgniemy po kompas, warto zapoznać się z jego budową.



Niewątpliwie najważniejszym elementem, jest coś co wskazuje nam północ (południe), czyli igła magnetyczna (1). Jest to kawałek namagnesowanego metalu, osadzony w taki sposób, że może się swobodnie obrać w komorze, która często jest wypełniona płynem. W komorze powinniśmy również mieć strzałkę orientacyjną (2) i linie pomocnicze (3) do poprawnego pozycjonowania kompasu na mapie. W nieco lepszych kompasach znajdziemy również podziałkę deklinacji magnetycznej (4).
Na obracającej się komorze znajdziemy podziałkę w stopniach (5), z której możemy odczytać wartość azymutu. Strzałka kierunkowa (6) określa kierunek, a za pomocą podziałki (7) (która może być w skali) odczytamy odległości na mapie. Przy drobnych detalach pomocna może okazać się lupa (8).

Co wskazuje kompas?

Różne mogą być odpowiedzi, ale generalnie można je sprowadzić do tego, że kompas pokazuje "północ". No dobrze, ale czy na pewno i jaką północ? Na poniższej mapie Europy zielona linia wyznacza miejsca, gdzie igła kompasu pokazuje geograficzny biegun północny. W pozostałych miejscach wskazania kompasu są w mniejszym lub większym stopniu przekłamane.


Dzieje się tak dlatego, że rzeczywisty biegun północny nie pokrywa się z biegunem magnetycznym, którego obecna pozycja to w przybliżeniu 86.5°N 172.6°W, co pokazuje mapa poniżej.


Jak widać, dla Polski południk magnetyczny i geograficzny nie pokrywają się. Kąt pomiędzy nimi nazywamy deklinacją magnetyczną, a jej wartość dla Wrocławia obecnie to 4° 34' E. (wartość ta zmienia się od 4°E  na zachodzie kraju do 6° 37'E na wschodzie). O taki kąt nasza trasa będzie odbiegać na wschód od zamierzonej, jeśli będziemy podążać zgodnie ze wskazaniami kompasu.  
Idąc na północ, na odcinku 1 km zboczymy o prawie 80 m, przy 10 km ten błąd to już 800 m.
Jeśli chcemy być dokładni w naszych pomiarach, to albo musimy zaopatrzyć się w kompas z kompensacją błędu deklinacji, albo pamiętać, by od obranego azymutu odjąć wartość deklinacji (zakładając, że mówimy o Polsce).


Jaki kompas?

Odpowiedź: taki, jaki jest nam potrzebny :)
Poniżej możemy zobaczyć przykładowe kompasy, przy czym należy pamiętać, że jest to podział arbitralny, wielu kompasów tu nie ma i należy go potraktować z lekkim przymrużeniem oka (poza końcowym wnioskiem).

Kompas guzikowy. Guzikowy, bo raz że mały, dwa - tak naprawdę guzik nam pokaże, poza tym gdzie jest północ.
Cena: ~7 zł
Kompas wkomponowany w breloczek. Ciut lepszy niż guzikowy, ale do poważniejszych zastosowań średnio przydatny.
Cena: ~10 zł
Kompas "kieszonkowy". Do powieszenia sobie na sznurku. Ładnie wygląda (na tym sznurku) i nawet działa, przynajmniej do czasu gdy w komorze pojawią się pęcherzyki powietrza.
Cena: ~20-30 zł
Kompas "soczewkowy" (lensatic compass) - wzorowany na kompasie wojsk amerykańskich.
Dobry do określenia pozycji, do pracy z mapą już mniej, ze względu na nieprzeźroczystą komorę.
Wygląda czadersko i... i tyle.
Cena: ~20+ zł
Kompas płytkowy/płaski. Dobry do pracy z mapą.
Dodatkowo posiada linijkę i/lub podziałki w różnych skalach.
Cena: ~15 - kilkaset zł
Kompas płytkowy/płaski z lusterkiem.
Dodatkowo posiada linijkę i/lub podziałki w różnych skalach
Cena: ~30 - kilkaset zł

Zatem, jaki kompas? Jeżeli myślimy o pracy z mapą i poważnym wykorzystaniem kompasu, to niestety nie tani. W niedrogich kompasach niestety łatwo może dojść do rozmagnesowania igły, rozhermetyzowania komory, no i potrafią dłuuugo się stabilizować, co przy np biegu na orientację jest irytujące. Mi osobiście najlepiej pracuje się z płytkowymi (zwłaszcza z lusterkiem), a to już wydatek rzędu kilkudziesięciu i więcej złotych.


Azymut

Azymut, najogólniej mówiąc, jest to kąt między kierunkiem północnym a kierunkiem marszu. Azymut, liczony jest zgodnie z ruchem wskazówek zegara, począwszy od kierunku północy, a wartość jego podajemy w stopniach. Przykłady:








poniedziałek, 13 marca 2017

Pierwsza gra

Gdyby ktoś mnie zapytał, czy wolę "Star Trek" czy "Star Wars" odpowiedziałbym, że to pierwsze.
I może to sprawiło, że nasza pierwsza gra będzie się odnosić do przygód załogi statku Enterprise.
"Naszą pierwszą misją jest przelecieć przez rój asteroid, a że nasze pole siłowe jeszcze nie działa, nie możemy się z nimi zderzyć. Fazery nie działają, więc zostają nam torpedy fotonowe, których mamy ograniczoną ilość. Scotty, nasz mechanik, poinformował nas, że chwilowo nie możemy ani przyspieszać, ani zwalniać - zostaje nam manewrowanie na boki. Na szczęście, tych asteroid nie ma za wiele..."

Podsumowując założenia i zadania:
  • gra rozpoczyna się np. po kliknięciu w flagę
  • statek może poruszać się tylko na prawo i lewo (wzdłuż osi X)
  • statek nie może wylecieć za ekran
  • statek ma tylko 10 torped
  • asteroidy w liczbie sztuk 10 lecą na nas w losowych odstepach czasu
  • asteroidy poruszają się z różną predkością
  • asteroida trafiona torpedą rozpada się hukiem i błyskiem (aczkolwiek pamiętamy - w próżni tak naprawdę nie słychać wybuchów!)
  • torpeda po uderzeniu w asteroidę naturalnie ulega dezintegracji, nie leci dalej
  • uderzenie asteroidy w statek kończy grę

W pliku game.sb2 znajdują się potrzebne grafiki, by zacząć naszą przygodę :)

Grafika statku pochodzi z serwisu clipartfest.com

poniedziałek, 6 marca 2017

Plany po feriach

Ferie minęły, czas z nowu do szkoły. Na kółku robotycznym czeka nas też trochę nowych rzeczy.

Scratch

Pierwsze parę spotkań poświęcimy językowi programowania Scratch (https://scratch.mit.edu/)
Zachęcam do próbowania w domu wraz z dziećmi, na sieci można znaleźć mnóstwo materiałów instrukażowych (np. https://scratch.mit.edu/studios/1817151/).
Nie będziemy pisać kolejnego tutoriala o Scratchu w ramach tego bloga, gdyż nie jest naszym celem dogłębne poznanie tego języka. Chłopcy powinni zrozumieć podstawowe pojęcia z programowania, tak byśmy mogli przejść do....


Arduino

Ten mały układ może nie stał się rewolucyjnym produktem, ale dokonał jednego - programowanie mikrokontrolerów dotarło pod strzechy, co więcej, przeciętny Malinowski może się tego nauczyć.
Tak wygląda nasz układ:



A co można zrobić z arduino? A choćby i to (choć do takiego projektu dalsza droga):

(układ mierzy odległość i podaje ją w centymetrach)

środa, 22 lutego 2017

Animacja - film nr 012

Ponownie praca z techniką animacji plastelinowej. Tym razem zajęcia były tematyczne, inspirowane prelekcją o pracy na Antarktydzie pana Piotra Horzeli, który wcześniej odwiedził szkołę.