Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

Do strony głównej I LO w Tarnowie

Materiały dla uczniów liceum

  Wyjście       Spis treści       Poprzedni       Następny  

©2018 mgr Jerzy Wałaszek
I LO w Tarnowie

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

 

 

Warsztat elektronika

Kurs Arduino Digispark

Wprowadzenie

 

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. 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. Digispark wygląda następująco (jest kilka wersji, ale ich wygląd jest dosyć podobny):

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:

  • ATTiny 85 – mikrokontroler
  • 7805 – stabilizator napięcia 5V.

Układ programuje się z poziomu 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.

 

Parametry Digisparka

Moduł Digispark posiada 9 wyprowadzeń:
  • P0...P5 to porty wejścia/wyjścia poprzez które realizowana jest komunikacja z otoczeniem. W oryginalnej płytce Arduino Digispark wszystkie porty są do twojej dyspozycji (z pewnymi ograniczeniami, o których powiemy później). W chińskich klonach P5 pełni funkcję resetowania i nie może być normalnie używany do komunikacji wejścia/wyjścia (co zostawia ci 5 portów od P0 do P5).
  • VIN, tutaj podłączasz + zasilania zewnętrznego (7...18V). Moduł posiada na pokładzie stabilizator 7805 (przy wyższym napięciu VIN układ ten może wymagać jakiegoś radiatora). Płytkę równie dobrze możesz zasilać poprzez USB z komputera PC.
  • GND to oczywiście masa układu.
  • 5V, tutaj pojawia się napięcie 5V przy zasilaniu poprzez VIN lub około 4,4V przy zasilaniu z USB (spadek 0,6V jest na diodzie zabezpieczającej). Możesz wykorzystać to napięcie do zasilania sterowanego układu, jeśli on tego wymaga. Pamiętaj jednak, że płytka Digispark nie posiada (ze względu na swoją prostotę) żadnych zabezpieczeń i przy zwarciu coś może ulec uszkodzeniu. Sprawdzaj swoje połączenia przed podłączeniem napięcia, to dobry nawyk dla twojej kieszeni.

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:

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 ATTiny 85 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 ATTiny 85 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 ATTiny 85 są następujące:

  • Szybkość wewnętrznego zegara: około 16MHz.
  • Pamięć programu: 8KB, dla użytkownika dostępne 6KB, 10 tysięcy cykli zapisu.
  • Pamięć EEPROM, 512B, 100 tysięcy cykli zapisu.
  • Pamięć RAM, 512B.
  • Posiada 2 8-bitowe liczniki/timery
  • Posiada 10 bitowy przetwornik analogowo-cyfrowy
  • Posiada komparator analogowy.
  • 6 linii portów wejścia/wyjścia.

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.

 

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. 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 włóż 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:

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 ATTiny 85 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 ATTiny 85 wymaga programatora wysokonapięciowego. Informacje znajdziesz w sieci.

Port P5 ma mniejszą wydajność prądową (tylko kilka miliamperów, to tzw. słaby port, 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 przeprogramowywać.

 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2018 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.