Czas na opis kolejnej, małej płytki z mikrokontrolerem, którą łatwo zaprogramować. Mowa o digispark z 8 nóżkowym avr na pokładzie. Jest to dość ciekawa platforma – mała płytka, bardzo niska cena, łatwość programowania i całkiem niezła funkcjonalność. Poniżej krótka specyfikacja digisparka i opis konfiguracji środowiska umożliwiającego pisanie programów, kompilację i załadowanie do mikrokontrolera.
Digispark to płytka rozwojowa, opracowana przez digistump.com. Na pokładzie znajdziemy mikrokontroler AVR attiny85. Możemy kupić wersję z wtyczką usb w postaci płytki pcb:
Druga wersja posiada gniazdo microusb:
Płytka może być zasilana z gniazda USB, lub z zewnętrznego źródła o napięciu 7-35V – gdyż posiada stabilizator 5V o wydajności 500mA. Do dyspozycji mamy 6 portów I/O, z czego 4 mogą mierzyć napięcie wejściowe, 3 można wykorzystać do generowania sygnałów PWM. Jest dostępna sprzętowa magistrala I2C i SPI.
Attiny85 posiada pamięć flash o pojemności 8kB, ale 2kB zajmuje bootloader pozwalający na programowanie wprost z usb, więc mamy do dospozycji 6kB a to sporo jak na programowanie w C. Na jednej jak i drugiej płytce znajdziemy dwie diody LED – jedna sygnalizuje zasilanie, druga jest podłączona do portu P1. Schemat jest naprawdę prosty:
Jeśli dodamy do tego łatwość programowania za pomocą środowiska Arduino IDE i cenę za chińskiego klona na poziomie $1 to ciężko nie zwrócić na to uwagi. Do tego mamy do dyspozycji różne shieldy rozszerzające możliwości, które nakłada się na płytkę digisparka.
Dobrym ruchem twórców Digisparka, był wybór platformy do programowania. Zdecydowano się na bardzo popularne Arduino IDE, dzięki czemu bardzo szybko można ogarnąć kodowanie. Przed przystąpieniem do pisania programów, wymagana jest drobna konfiguracja, którą opisuję poniżej.
Tradycyjnie zaczynamy od pobrania środowiska Arduino IDE ze strony https://www.arduino.cc/en/main/software. Ja pracuję w linuksie i archiwum dla tego systemu pobieram dla siebie.
Po zainstalowaniu/rozpakowaniu (przydatny wpis na ten temat: Arduino IDE w linuksie) przechodzimy do Plik->Preferencje i w pole na dole okna ‘Dodatkowe adresy URL do menedżera płytek‘ wklejamy adres:
http://digistump.com/package_digistump_index.json
Teraz wchodzimy w Narzędzia->Płytka i wybieramy z góry listy Menedżer płytek, odnajdujemy pozycję Digistump AVR Boards i wciskamy [Instaluj]:
Zostanie pobranych i zainstalowanych kilkadziesiąt MB:
Na razie można zamknąć środowisko Arduino. Teraz musimy stworzyć plik dla udev, który pozwoli nam na komunikację bootloadera micronucleus, wgranego do digispark, z Arduino IDE. Najprościej zrobić to z terminala, czyli:
sudo vim /etc/udev/rules.d/49-micronucleus.rules
a zawartość pliku to:
# UDEV Rules for Micronucleus boards including the Digispark. # This file must be placed at: # # /etc/udev/rules.d/49-micronucleus.rules (preferred location) # or # /lib/udev/rules.d/49-micronucleus.rules (req'd on some broken systems) # # After this file is copied, physically unplug and reconnect the board. # SUBSYSTEMS=="usb", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666" KERNEL=="ttyACM*", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1" # # If you share your linux system with other users, or just don't like the # idea of write permission for everybody, you can replace MODE:="0666" with # OWNER:="yourusername" to create the device owned by you, or with # GROUP:="somegroupname" and mange access using standard unix groups.
Zamiast vim’a można użyć innego edytora tekstu, choćby popularnego nano, plik wygląda tak:
Przeładowanie udev:
sudo udevadm control --reload-rules
Uruchamiamy Arduino IDE, z menu Narzędzia->Płytka wybieramy Digispark (Default – 16.5mhz). Teraz z Plik->Przykłady->Digispark_Examples wbieramy program Start. Jest to mały kawałek kodu, który po kompilacji i załadowaniu po prostu zamiga diodą podłączoną pod port P1. Po wciśnięciu przycisku [Wgraj] mamy 60 sekund na wpięcie digisparka w port USB. Po podłączeniu, wypisywane są kolejne etapy wgrywania softu:
Jeśli digispark będzie włączony wcześniej, lub jest problem z dostępem do urządzenia (brak reguły dla udev opisanej wcześniej) to będzie niestety błąd jak niżej:
Dlaczego Digispark nie może być wpięty wcześniej? Bo po podłączeniu bootloader czeka tylko chwilę na załadowanie programu, a później wychodzi z tego trybu.
Warto sobie poszperać po przykładowych programach dla Digispark i przejrzeć dostępne shieldy. Mimo niepozornych wymiarów, digispark poradzi sobie z obsługą zegara RTC, różnych czujników, może też wyświetlać informacje na wyświetlaczu LCD z konwerter na I2C. Pewnie na stronie pojawi się jakiś układ z wykorzystaniem tej płytki.
Mega tanie, bezprzewodowe moduły Internet of Things na dobre zadomowiły się w naszych sieciach. Od…
Pewnie nie każdy posiadacz tytułowej stacji lutowniczej wie, że posiada ona możliwość aktualizacji firmware'u. Producent…
Jakiś czas temu, przeglądając Aliexpress natknąłem się na ciekawy shield do Arduino Nano. Według opisu…
W mailach i komentarzach kilka razy przewijała się prośba o ten wpis. Chodzi o aktualizację…
Dziś tematyka audio, a nawet audiofilska. Uznany wzmacniacz słuchawkowy Lehmann Black Cube Linear o dość…
Tradycyjnie w styczniu, publikuję podsumowanie minionego roku na stronie grylewicz.pl. Poniżej trochę liczb, lista najpopularniejszych…
Zobacz komentarze
wyciskamy??
Jedna literka, a jaka różnica ;). Poprawiłem, dzięki ;)
Artykuł fajny. Szkoda tylko, że autor zapomniał o użytkownikach Windowsa opisując tworzenie pliku dla udev. Komenda sudo to "program stosowany w systemach operacyjnych GNU/Linux, Unix i podobnych". A co ma robić użytkownik Windowsa?
Tam (w Windows) działa bez konieczności wprowadzania tych zmian.