Wczoraj przyszło pocztą moje Arduino. O tym co to za ustrojstwo można poczytać w wielu miejscach w Internecie. Mi się wydaje, że jest to najprostszy sposób, aby ze świata komputerów i programowania przejść do świata elektroniki. Arduino to płytka elektroniczna, którą z jednej strony podłączamy do komputera przez USB, a z drugiej strony ma kilkanaście wejść/wyjść cyfrowych i analogowych, do których w prosty sposób możemy podłączyć dowolne elementy i układy elektroniczne (na przykład diody LED, wyświetlacze, czujniki temperatury, itd.) Ludzie robią z tym niesamowite rzeczy – roboty, gry telewizyjne, instrumenty muzyczne – a wszystko to w dość prosty sposób.
Moją płytkę kupiłem w sklepie nettigo w zestawie o nazwie starter kit. Oprócz samej płytki dostałem tzw. płytkę stykową (dzięki której można tworzyć swoje układy bez lutowania), kupę kabli (ku uciesze A.), 10 czerwonych diod świecących, jedną kolorową diodę RGB, czujnik temperatury, dwa guziki, czujnik światła (fotorezystor), tranzystor i układ scalony (tzw. rejestr przesuwny). Jednym słowem – wszystko co trzeba, aby zrobić z płytką milion ciekawych rzeczy.
Kiedy przyszła paczka, zdziwiłem się, że płytka jest tak mała – mieściła się w pudełku wielkości talii kart. Od razu zabrałem się za montowanie pierwszego układu – były to oczy Cylona. Ustawiłem 10 diod obok siebie, wspomogłem się artykułem z blogu związanego z w/w sklepem nettigo, połączyłem wszystko kolorowymi kabelkami i… pojawiły się problemy ze środowiskiem deweloperskim.
Twórcy Arduino stworzyli dość fajne środowisko, z edytorem i kompilatorem (pisze się w języku podobnym do C). Niestety, zmuszenie go do działania na 64-bitowym Linuksie wymagało nieco zachodu (dla zainteresowanych opisuję ten zachód na końcu artykułu).
W każdym razie udało się wszystko odpalić i mój Cylon zaczął złowieszczo się rozglądać. Po rozmowie z A. wpadłem jeszcze na pomysł, że Cylon powinien budzić się dopiero po zmroku – dodałem więc fotorezystor, zmieniłem kilka rzeczy w aplikacji i po 5 minutach przeróbka była gotowa. How cool is that?
Poniżej filmik, a pod filmikiem opis instalacji środowiska Arduino pod 64-bitowym Debianem.
Ogólnie podczas próby połączenia się z Arduino pod Linuksem napotkałem na 4 przeszkody:
- W repozytorium Debiana jest co prawda paczka arduino, jednak jest ona na tyle stara, że nie obsługuje nowego Arduino Uno.
- Można co prawda ściągnąć nową paczkę ze strony, ale obsługuje ona tylko 32-bitowe systemy.
- Gdy już uda się obejść problem 2, wówczas aplikacja nie wykrywa naszej płytki.
- Gdy w końcu wykryje, działa bardzo niestabilnie.
Można jednak uporać się z tymi wszystkimi problemami (choć niesmak pozostaje, bo pod Windowsem wszystko działa od ręki). Należy podjąć następujące kroki:
- ściągamy i rozpakowujemy ze strony najnowszą paczkę tgz dla 32-bitowego systemu,
- ściągamy bibliotekę rxtx w wersji na przykład 2.1-7,
- w rozpakowanym katalogu arduino-xxx/lib kasujemy pliki librxtxSerial.so oraz RXTXcomm.jar,
- szukamy tych dwóch plików w paczce rxtx i wrzucamy je do katalogu lib.
Te czynności powinny sprawić, że Arduino się uruchomi. Jednak w moim przypadku niewiele to dało, ponieważ opcja Tools / Serial port była zaciemniona – przez co wybranie portu utworzonego przez płytkę było niemożliwe. Aby opcja się pojawiła, należy utworzyć symboliczny link w katalogu /dev. Najlepiej dodać plik o nazwie np. 55-arduino.rules do katalogu /etc/udev/rules.d/ Plik powinien mieć następującą zawartość:
KERNEL=="ttyACM0", SYMLINK+="ttyS7"
Utworzenie takiego pliku sprawi, że system będzie tworzył link symboliczny o nazwie ttyS7 za każdym razem, kiedy zostanie utworzone urządzenie o nazwie /dev/ttyACM0. Po tej operacji (i ewentualnym ponownym podłączeniu płytki i uruchomieniu aplikacji) powinniśmy w końcu mieć możliwość wyboru portu i rodzaju układu (podmenu Board).
Cóż jednak z tego, kiedy próba uruchomienia Serial monitora kończy się crashem całego IDE? Aby poradzić sobie z tym problemem, należy zaktualizować firmware naszego wynalazku. W tym celu należy najpierw zainstalować program dfu-programmer
sudo apt-get install dfu-programmer
a następnie ściągnąć plik Arduino-usbserial-uno.hex. Następnie trzeba niestety przestawić naszą płytkę w tryb DFU. W tym celu należy wykorzystać dwa kabelki i poniższy rysunek:
Najpierw przytrzymujemy kabel 1 tak jak na rysunku i w tym czasie dotykamy na chwilę kablem 2 odpowiedniej nóżki rezystora pod diodą RX. Jedna z diod powinna błysnąć, a komputer wykryje nowe urządzenie. Teraz już możemy wykonać flash (koniecznie jako root):
dfu-programmer at90usb82 erase dfu-programmer at90usb82 flash --debug 1 Arduino-usbserial-uno.hex dfu-programmer at90usb82 reset
Po tych operacjach odłączamy na chwilę arduino. Po podłączeniu wszystko powinno w końcu działać jak należy.
Przesuwam Arduino o dwie pozycje do góry na mojej liście „zrobić sobie dobrze gadżetem”. Dzięki za raport.
Kurcze, az by sobie czlowiek to kupil, ale znajac zycie odechcialoby mi sie zabawy po paru dniach…
Też właśnie niedawno zakupiłem taki gadżet do swojej niewielkiej kolekcji krzemu i jestem nieziemsko zadowolony. Jako klepacz kodu nie mający zbyt wiele wspólnego z elektroniką nie wiem jeszcze do czego praktycznego mógłbym Arduino wykorzystać, ale może z czasem się czegoś nowego nauczę (takie są plany) – szczególnie chodziłoby o sprzętowy sposób myślenia i składania czegoś sensownego z podstawowych elementów bez uszkadzania tych elementów.
This does look priosimng. I’ll keep coming back for more.