Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor artykułu: mgr Jerzy Wałaszek
Konsultacje: Wojciech Grodowski, mgr inż. Janusz Wałaszek

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

Warsztat

Kurs Digispark

SPIS TREŚCI
Podrozdziały

Wstęp

Digispark jest jednym z najmniejszych modułów Arduino, które są przeznaczone do programowania przez hobbystów na całym świecie. Moduły Arduino są oparte na mikrokontrolerach produkowanych przez firmę Atmel (obecnie Microchip). Mikrokontroler jest pełnym, komputerem zawartym w jednym układzie scalonym. Posiada wszystkie niezbędne składniki: mikroprocesor, pamięć, układy wejścia wyjścia. Komputer kojarzy się uczniowi zwykle z dużą maszyną w stylu IBM PC. Jednak komputer wcale nie musi posiadać klawiatury, monitora oraz setki innych urządzeń, które spotyka się w świecie PC. Wszystko zależy od tego, do jakich zadań chcemy komputer zastosować.

Moduły Arduino możesz zatem traktować jak pełnoprawne komputery, ponieważ faktycznie nimi są. Na początek nauki dobrze jest wybrać coś w miarę prostego, aby nie przytłaczał nas ogrom opcji, jednakże nie polecam do tego celu Digisparka, lepszy będzie standardowy moduł Arduino Uno. Digispark wygląda następująco (jest kilka wersji, ale ich wygląd jest dosyć podobny):

obrazek

Płytka Arduino Digispark jest bardzo mała. Ma wymiary około 19 x 17,5 mm. Pomimo tego posiada dosyć duże możliwości jak na swój rozmiar i gwarantuję, że dostarczy wiele zabawy przy programowaniu.

W Digisparku zastosowano dwa układy scalone:

Układ programuje się z poziomu środowiska Arduino IDE poprzez port USB (może być potrzebny odpowiedni kabel USB). Jeśli chcesz się zająć programowaniem tego modułu, to najpierw zainstaluj na swoim komputerze odpowiednie środowisko programistyczne. Dokładną instrukcję znajdziesz tutaj. Dalej musisz opanować podstawowe zasady programowania w języku C. Zaopatrz się w kilka modułów Arduino Digispark (koszt jednego to około 7...9zł za chiński klon). Przylutuj do płytki goldpiny. Zdobądź płytkę stykową z zestawem przewodów. Każdy prezentowany tutaj układ elektroniczny został wcześniej uruchomiony i przetestowany.


Na początek:  podrozdziału   strony 

Parametry Digisparka

Moduł Digispark posiada 9 wyprowadzeń:

Komunikacja z komputerem PC odbywa się poprzez złącze USB. W niektórych modułach Digispark nie ma gniazda USB: moduł podpina się bezpośrednio do portu USB w komputerze PC:

obrazek

Do przesyłania danych pomiędzy komputerem PC a Digisparkiem wykorzystuje się sam mikrokontroler ATtiny 85, który jest sercem tego modułu. Takie rozwiązanie jest tanie, lecz wnosi pewne niedogodności, o których musisz wiedzieć.

Mikrokontroler ATtiny85 posiada 8KB pamięci Flash na programy użytkownika. Z tego około 2KB zajmuje program komunikacyjny, tzw. loader. Program ten przez 5 sekund po włączeniu zasilania modułu sprawdza, czy moduł nie jest podłączony do komputera PC przez port USB i czy komputer PC nie stara się przesłać nowego programu (patrz: procedura programowania Digisparka opisana tutaj). Jeśli przez 5 sekund nie zostanie nawiązana komunikacja z PC-tem, to loader uruchamia poprzednio załadowany do ATtiny85 program użytkownika. Dla programów użytkownika pozostaje zatem około 6KB pamięci. To całkiem sporo jak na takiego malucha. Mój pierwszy komputer w latach 80-tych ubiegłego wieku, ZX-81, miał tylko 1KB pamięci na moje programy.

Do obsługi komunikacji poprzez port USB wykorzystywane są porty P3 i P4. Jeśli ich używasz w swoim projekcie, to na czas programowania należy je odłączyć od reszty układu, aby nie powodować niepożądanych działań.

Parametry użytego mikrokontrolera ATtiny85 są następujące:

obrazek

Chociaż w nazwie modułu Digispark widnieje słowo Arduino, to jednak nie udostępnia on tych samych możliwości co "prawdziwe" moduły Arduino. Po pierwsze redukcja kosztów wymusiła oszczędności. Po drugie mikrokontroler ATtiny85 nie posiada tej samej mocy obliczeniowej, co mikrokontroler ATMega328P (słowo tiny w języku angielskim oznacza coś malutkiego, tyciego). Jeśli jesteś zupełnie początkujący, to powinieneś raczej rozpocząć naukę od tych większych modułów Arduino (Nano/Uno), gdzie nie ma tylu ograniczeń i do których można podłączyć tysiące gotowych układów. Digispark nadaje się natomiast do bardzo małych projektów i jest pewnego rodzaju wyzwaniem intelektualnym.

Po tych wstępnych informacjach, zapraszam do kursu programowania Digisparka.


Na początek:  podrozdziału   strony 

Port P5

Wyjście P5 na płytce Digisparka jest połączone z końcówką nr 1 układu mikrokontrolera ATtiny85. Na końcówce tej występuje sygnał RESET, który zeruje mikrokontroler oraz jest wykorzystywany do programowania mikrokontrolera poprzez złącze ISP (sygnały RESET, SCK, MISO i MOSI). Więcej na ten temat znajdziesz w kursie programowania mikrokontrolerów AVR. Digispark nie używa normalnie sygnału RESET. Jeśli zakupiłeś oryginalną płytkę Digispark, to port P5 pełni funkcję zwykłego portu wejścia/wyjścia. Producent po załadowaniu do mikrokontrolera programu ładującego odpowiednio konfiguruje port P5, tak aby nie pełnił już funkcji RESET, lecz stał się zwykłym portem wejścia/wyjścia. Z takim modułem problemu nie będzie. Jednak tanie klony Digisparka produkowane w Chinach nie mają ustawionego portu P5 na funkcje wejścia/wyjścia. Ma to złe i dobre strony: złe, bo nie możesz portu P5 używać w swoich projektach do sterowania i zostają ci porty P0...P4, a dobre, bo możesz wymienić program ładujący (loader) na inny lub nawet zupełnie przeprogramować cały mikrokontroler (tylko wtedy stracisz zwykle zalety programowania w Arduino). Jak to zrobić opisujemy w kursie programowania mikrokontrolerów AVR (Digispark posiada taki właśnie mikrokontroler).

Funkcje portu P5 można przeprogramować za pomocą programatora ISP ustawiając tzw. fusebity (bity bezpiecznikowe) Ponieważ wymaga to pewnych umiejętności (nieumiejętne postępowanie może doprowadzić do zablokowania mikrokontrolera), umawiamy się, że w projektach dotyczących Digisparka nie będziemy korzystać z portu P5.

Jak sprawdzić, czy masz chiński klon? Bardzo prosto.

Zaopatrz się w dwa przewody z żeńskimi wtykami po obu stronach.

Podepnij jeden przewód do P5, drugi do GND.

Do wtyków po drugiej stronie podłącz opornik 220...470Ω.

Podłącz Digisparka do portu USB.

Jeśli P5 pełni funkcję RESET, to w Windows od razu usłyszysz dźwięk rozłączanego urządzenia USB. Jeśli pomimo opornika Digispark się uruchomi, to masz oryginalną płytkę i możesz używać P5 do sterowania.

Jeśli już masz pewne doświadczenie w programowaniu mikrokontrolerów AVR za pomocą programatora ISP i programu AVRDude, to możesz sam odpowiednio przeprogramować fusebity, tak aby port P5 stał się zwykłym portem wejścia/wyjścia.

Podaję instrukcję wyłączenia funkcji RESET na P5 na twoje własne ryzyko. Jeśli zrobisz coś źle, to Digispark może przestać działać i do naprawy będzie konieczny programator wysokonapięciowy. Zatem zupełnie początkującym odradzam wykonanie tej operacji.

Do przeprogramowania Digisparka będziesz potrzebował programatora oraz programu avrdude. Zobacz tutaj, jak to zainstalować.

Programator musisz połączyć z płytką Digispark w sposób następujący:

obrazek

Uruchom terminal (w Windows przejdź do katalogu, w którym znajduje się program avrdude.exe).

Najpierw sprawdzimy komunikację z mikrokontrolerem.  Wpisz polecenie:
avrdude -c usbasp -p t85

Jeśli masz inny programator niż usbasp, to za parametrem -c wpisz jego nazwę.

Gdy programator nawiąże kontakt z mikrokontrolerem ATtiny85 na płytce Digispark, pojawi się informacja zwrotna:
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x1e930b (probably t85)

avrdude: safemode: Fuses OK (E:FE, H:DD, L:E1)

avrdude done.  Thank you.

W tym momencie wszystko jest gotowe do przeprogramowania mikrokontrolera. Musimy zmienić stan fusebitu RSTDISBL (poszukaj informacji w sieci). W terminalu wpisz:
avrdude -c usbasp -p t85 -U hfuse:w:0x5D:m

Otrzymasz informację zwrotną:
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x1e930b (probably t85)
avrdude: reading input file "0x5D"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0x5D:
avrdude: load data hfuse data from input file 0x5D:
avrdude: input file 0x5D contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified

avrdude: safemode: Fuses OK (E:FE, H:5D, L:E1)

avrdude done.  Thank you.

Uwaga: od tego momentu port P5 nie pełni już roli RESET i można go używać jako portu wejścia/wyjścia P5. Przeprogramowanie układu za pomocą programatora również przestaje być możliwe. Programowanie przez USB z poziomu Arduino IDE przebiega normalnie. Przeprogramowanie ATtiny85 wymaga programatora wysokonapięciowego. Informacje znajdziesz w sieci.

Port P5 ma mniejszą wydajność prądową (tylko kilka miliamperów, to tzw. słaby port we/wy, ang. weak i/o port) od portów PB0...PB4. W swoich projektach musisz to wziąć pod uwagę.

Aby nie komplikować układów, w tym kursie nie korzystamy zupełnie z portu P5, nie musisz go zatem przeprogramowywać.


Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2024 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.