środa, 8 października 2014

Niedrogi, szkolny zestaw mikroprocesorowy.

Nowy rok szkolny rozpędził się już na dobre, należy więc uzupełnić materiał szkoleniowy dla uczniów technikum elektronicznego, z którymi mam zajęcia dotyczące programowania układów mikroprocesorowych. Materiał ten, czyli zestaw artykułów prezentujących różne zastosowania prostego mikrokontrolera ATtiny 2313 oraz bardziej zaawansowanego ATmega, które popełniłem swego czasu, z oczywistych powodów nie jest przeznaczony wyłącznie dla wspomnianych uczniów - jeżeli ktoś uzna, że teksty te zawierają przydatne dla niego informacje, bardzo proszę korzystać z nich do woli. Wszystkie rozwiązania i kody źródłowe można kopiować bez konieczności uzyskiwania zezwolenia czy informowania autora.
Zanim na dobre wprowadzimy do użytku na zajęciach Arduino UNO i DUE (plany powoli się krystalizują, trwają rozmowy itd. ;-)), zachęcam uczniów do przygotowania sobie niewielkiego zestawu mikroprocesorowego, pozwalającego na szybką i bezbolesną naukę podstaw BASCOM-a (lub C/C++) i działania mikrokontrolerów. Sercem tego zestawu jest ATtiny2313 taktowany stabilizowanym zewnętrznie zegarem 4MHz. W skład zestawu wchodzą:
  • mikrokontroler ATtiny 2313;
  • sterownik mocy ULN2803;
  • rezonator kwarcowy 4MHz;
  • dwa kondensatory ceramiczne 22pF;
  • kondensator ceramiczny 100nF;
  • kondensator elektrolityczny 10μF;
  • rezystor 10kΩ;
  • osiem rezystorów 220Ω lub 470Ω;
  • osiem diod elektroluminescencyjnych (LED), najlepiej z soczewką dyfuzyjną;
  • trzy mikrostyki;
  • płytka stykowa i zestaw przewodów;
  • programator dla mikrokontrolerów AVR (polecam USBAsp).
Elementy należy połączyć - oczywiście na płytce stykowej - według schematu:



W tak przygotowanym zestawie, w przypadku użycia całkowicie nowego mikrokontrolera, należy jeszcze odpowiednio przestawić fusebity - chodzi o zapewnienie właściwej częstotliwości taktowania. Jak zmienić konfigurację fusebitów? Proszę zajrzeć do artykułu Po co mi to całe Arduino? oraz do dokumentacji technicznej ATtiny2313, dostępnej na stronach producenta.
Dlaczego własnie ATtiny 2313 i 4MHz? Powód jest prosty: na wyposażeniu pracowni znajdują się podręczniki, w których wszystkie przykłady oparto o zestaw edukacyjny AVT z tak własnie skonfigurowanym 2313. Chodzi po prostu o stuprocentową zgodność zadań.
Zachęcam uczniów do zmontowania układu i przynoszenia na zajęcia.

czwartek, 2 października 2014

Zainstalowałem Windows 10 Technical Preview - krótkie sprawozdanie.

Wczoraj, w godzinach popołudniowych, Microsoft udostępnił najnowszą odsłonę swojego flagowego produktu - systemu operacyjnego Windows 10 - w wersji Technical Preview. Wcześniej, 30 września, Windows 10 został zaprezentowany na specjalnie zorganizowanej konferencji w San Francisco - zainteresowani bez problemu znajdą zapis tej konferencji w serwisie YouTube.
Technical Preview powinniśmy traktować jako wersję mocno poglądową, przeznaczoną przede wszystkim dla testerów i deweloperów, zresztą producent zawarł na stronie preview.windows.com szereg zastrzeżeń i ostrzeżeń w tym względzie.
Z czystej ciekawości zarejestrowałem się w programie Insider i pobrałem sobie najnowsze "okienka" w wersji 32-bitowej, oczywiście w postaci obrazu ISO, z mocnym postanowieniem przeprowadzenia podczas zajęć pokazowej instalacji. Niestety, w żadnej z posiadanych wersji VirtualBoksa i na żadnym z komputerów (pracowym i potężnym potworze domowym) nie udało mi się wyjść poza ekran startowy, czyli czarne tło z bladobłękitnym logo Windows, mimo zastosowania się do wszystkich wskazówek przekazanych przez internautów, którym ta sztuka się udała. Zatem podobnie, jak to miało miejsce w przypadku instalacji pierwszej edycji poglądowej systemu Windows 8, użyłem pakietu QEMU/KVM.
Poniżej prezentuję krótką historyjkę obrazkową z pierwszych dwudziestu minut mojej przygody z Windows 10.

Rozpoczęcie instalacji



wtorek, 13 maja 2014

Gdy androidowemu urządzeniu ciężko idzie współpraca z linuksem (czy na odwrót?)...

Problem.

Podłączasz urządzenie z Androidem na pokładzie (przykład jednego ze smartfonów Samsunga) do komputera działającego pod kontrolą Xubuntu 13.10 lub 14.04, a urządzenie daje do wyboru tryb MTP ("urządzenie multimedialne")  lub PTP ("aparat fotograficzny"). Któregokolwiek trybu nie wybierzesz, komunikacja między komputerem a telefonem (przechodzenie przez katalogi, zaznaczanie plików do kopiowania itd.) odbywa się tak wolno, że aż prawie wcale...

W czym więc jest problem (którego nie mają telefony dające do wyboru w miarę szybki, acz niewygodny i nielubiany przeze mnie tryb "USB storage")? 

Otóż kiedyś ktoś namieszał w linuksowych bibliotekach (albo ich ubunciakowych wersjach?) - głównie libmtp, mtpfs i fuse - czyniąc je szalenie wolno działającymi. I tutaj jest pies pogrzebany. Głównie.

Co trzeba zrobić?

Rzucić okiem na artykuł "Connect an Android 4.0+ phone/tablet to Ubuntu, the reliable way" i wykonać wszystkie opisane w nim czynności ;-)
Żeby zaś ułatwić sobie życie - nie każdy bowiem lubi wpisywać polecenia w konsoli - można wygenerować sobie skrypty zawierające komendy montujące:

go-mtpfs ~/MyAndroid &

oraz odmontowujące urządzenie:

fusermount -u ~/MyAndroid

i umieścić je  którymś z katalogów dostępnych "na ścieżce", np. /usr/local/bin.
W następnym kroku tworzymy dla tych skryptów aktywatory na pulpicie i - voila! Komunikacja z naszym androidowym młoteczkiem śmiga jak marzenie (widzimy w Thunarze urządzenie pamięci masowej o nazwie MyAndroid)... pod warunkiem, że jesteśmy rootem... Właśnie - w artykule nie wspomniano o jeszcze jednej rzeczy, niezbędnej żeby montowanie i odmontowywanie mógł przeprowadzać Zwykły Użytkownik. Niniejszym zatem uzupełniam artykuł.
Podwyższamy sobie uprawnienia (np. logujemy się na roota lub używamy sudo) i tworzymy plik:

/etc/udev/rules.d/51-android.rules

W pliku tym umieszczamy następującą linijkę:

SUBSYSTEM=="usb", ATTR{idVendor}=="XXXX", MODE="0666", GROUP="plugdev"

gdzie XXXX zastępujemy - że posłużę się pewnym uproszczeniem - identyfikatorem naszego urządzenia działającego w trybie MTP ("urządzenie multimedialne"). Zapisujemy plik, upewniamy się, że należymy do grupy "plugdev" (jeśli nie, to sudo adduser $USER plugdev) i restartujemy komputer.
Po ponownym uruchomieniu możemy się cieszyć z szybkiej współpracy androidofona z naszym ulubionym systemem operacyjnym :-)

Jeszcze tylko krótka informacja, skąd wziąć ów identyfikator urządzenia. Otóż jeśli podłączymy nasz telefon do komputera poprzez USB i wybierzemy telefonie tryb MTP, to identyfikator pozyskamy w prosty sposób, wydając w konsoli polecenie lsusb. Przykładowy wiersz (spośród zwykle kilku) wygenerowany przez to polecenie wygląda np. tak (moja klawiatura ;-)):

Bus 002 Device 002: ID 045e:07b9 Microsoft Corp.

Nasz idVendor w tym przypadku to 045e. Proste?

Powodzenia zatem przy zabawie w transfer plików między telefonem a komputerem :-)

czwartek, 16 stycznia 2014

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.

Pierwsza rzecz: wiem doskonale, że temat "Arduino bez Arduino" opisały już setki blogerów i pasjonatów, pozwoliłem sobie jednak przedstawić tutaj wyłącznie moje doświadczenia oraz pewien pogląd na temat owych włoskich (?) wynalazków. Zacznę od poglądu.

Płytka Arduino jest płytką prototypową. Oznacza to, że nie została ona - poza kilkoma konstrukcjami, które to przewidują - zaprojektowana do montażu w gotowych urządzeniach. Owszem, można, ale się to najnormalniej nie opłaca. ATmega328P kosztuje około 17 zł, a tak na prawdę tylko ona jest nam potrzebna. Ponadto zakładam, że każdy pasjonat AVR-ów posiada jakiś programator. A gdyby nie posiadał, to USBAsp kosztuje około 25 zł (i kupujemy go tylko raz). Dla porównania Arduino UNO kosztuje około 90 zł. Dla mnie wniosek był prosty: ponieważ bardzo wygodnie pisze się w C/C++ na Arduino i chciałoby się wykorzystać prototyp do wykonania wersji końcowej, należy znaleźć sposób przeniesienia programu z Arduino na "swobodną" ATmegę. Lub ATtiny - wszak nie zawsze potrzebujemy kobylastego układu do sterowania; czasem np. ATtiny85 jest w sam raz.
Sposób taki znalazłem - czyli pora na podzielenie się doświadczeniami. Od razu uprzedzam, że przykłady i screeny pochodzą ze środowiska linuksowego i dotyczą Arduino IDE w wersji 1.0.5, ale wszystko, co opisałem, zostało również przetestowane w systemie Windows (pozostaje jedynie kwestia ścieżek). A podejrzewam, że w MacOS-ach tradycyjnie już nie trzeba nic konfigurować ani testować, bo wszystko jest i działa... ;-) Oczywiście żart - z makówkami najprawdopodobniej działamy jak z linuksami (nie sprawdzałem w MacOS-ie).