Digispark – programowanie w Arduino IDE

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 – co to takiego?

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:

Digispark z wtykiem usb

Druga wersja posiada gniazdo microusb:

Digispark z gniazdem 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.

Piny w digispark usb

Piny w digispark microusb

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:

Digispark - schemat

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.

Digispark w Arduino IDE

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.

Arduino IDE pobieranie

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

Arduino Preferencje

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]:

Arduino menedżer płytek

Zostanie pobranych i zainstalowanych kilkadziesiąt MB:

Arduino IDE instalowanie digistump

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:

Plik dla udev digispark

Przeładowanie udev:

sudo udevadm control --reload-rules

udev - przeładowanie reguł

Wgrywanie programu do Digispark

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:

Digispark - wgrywanie 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:

Digispark - błąd w Arduino

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.

Podsumowanie

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.

Możesz również polubić…

4 komentarze

  1. SpeX pisze:

    wyciskamy??

  2. Stefan pisze:

    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?

Leave a Reply

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.