Po włączeniu zasilania, Digispark „czeka” około 6 sekund zanim rozpocznie wykonywanie właściwego programu. Te 6 sekund należy do bootloadera Digisparka – micronucleus’a. W tym czasie bootloader upewnia się, czy przypadkiem na porcie USB nie czeka nowy program. Takie oczekiwanie może być praktyczne podczas tworzenia oprogramowania, ale nie w gotowym produkcie. Czy można ten czas skrócić?
Archiwum kategorii: Digispark
Digispark: zmiana częstotliwości PWM
Ten post jest częścią serii o budowie komponentu multimedialnego.
Mój komponent mediany dostał całkiem fajne podświetlenie. Niestety po pierwszym uruchomieniu… z głośników zaczęły dobiegać piski! Po lekturze internetów okazało się, że układ w którym generowanie jest PWM z pewną częstotliwością może rezonować… Jednym ze sposobów na wyeliminowanie tego zjawiska jest ograniczenie częstotliwości PWM (przy niezmienionym stopniu wypełnienia sygnału.
Digispark, Raspberry Pi 3 (OSMC) i sterowanie paskami LED
Ten post jest częścią serii o budowie komponentu multimedialnego.
Mój komponent multimedialny ma podświetlany front. Podświetlenie informuje o jego stanie – np. kolor czerwony – stan oczekiwania, zielony – odtwarzanie itp. Do podświetlenia użyłem pasków LED RGB. Paski te sterowane są Digispark’iem. W szczególności:
- Paski LED umieściłem na panelu przednim komponentu,
- Digispark generuje sygnał PWM do sterowania paskami (przez tranzystory),
- Digispark’a podłączyłem do Raspberry za pomocą portu szeregowego,
- Polecenia sterujące wysyłam z Raspberry.
Brzmi ciekawie, prawda?
Czytaj dalej Digispark, Raspberry Pi 3 (OSMC) i sterowanie paskami LED
Sterowanie wentylatorem z Digispark
Komponent multimedialny wymaga dodatkowego chłodzenia. W środku jest zasilacz, Raspberry Pi, wzmacniacz audio, pasek LED. Wszystkie te elementy będą generowały ciepło – które trzeba jakoś odprowadzić.
Wykorzystam do tego wentylator umieszczony w tylnym panelu komponentu. Wentylatorem tym będę sterował za pomocą niewielkiego Digispark’a.
Digispark i klony – kilka słów o portach (kompendium)
Digispark to niewielka płytka w stylu Arduino. W odróżnieniu do UNO, opiera się na kontrolerze AtTiny85. Porty AtTiny85 wyprowadzono na wygodne piny. Płytka zawiera też stabilizator napięcia.
Ale najciekawszy jest taki trochę „oszukany” USB. Nie ma tu, jak w Arduino, osobnego czipa w stylu CH340 (jak w chińskich klonach UNO). Kombinacja rezystorów i diod wykorzystująca pewne właściwości USB sprawia, że Digispark’a można programować przez USB.
Zanim jednak zaczniecie wykorzystywać Digisparka w swoich projektach, warto przyglądnąć się kilku właściwościom jego portów. Momentami mogą… zaskoczyć.
Czytaj dalej Digispark i klony – kilka słów o portach (kompendium)
Digispark i programowanie przez ISP
Dziwne błędy przy próbie wgrywania programu na Digispark’a? Konieczna wymiana lub naprawa bootloadera? Czasami nie ma rady – i trzeba użyć programator ISP. Płytki jak Arduino UNO mają już wlutowane piny – wystarczy nałożyć wtyczkę od programatora. W przypadku Digispark jest trochę trudniej. Żeby sobie ułatwić – zbudowałem prostą płytkę, która znacznie ułatwia programowanie.
Digispark (klon): prosty robot mobilny
W świecie płytek typu Arduino, łatwo jest realizować pojedyncze doświadczenia. Mruganie diodami, kilkakrotne obrócenie serwem, bipniecie buzzerem – do podstawowych eksperymentów wystarczy garść kabelków połączeniowych i kilka linijek kodu.
„Schody” zaczynają się, gdy chcemy zrealizować jakieś konkretne zadanie, która wymaga połączenia kilku bloków funkcjonalnych. Wtedy wychodzą na jaw problemy z zasilaniem, dogadywaniem się niektórych elementów, poziomami logiki, niewystarczającą liczbą pinów oraz „hackami” w bibliotekach.
Dlatego właśnie postanowiłem sprawdzić klona Digisparka w warunkach bojowych.
Digispark i micronucleus: crash
W pewnym momencie jeden z moich Digispark’ów przestał odpowiadać. Nie – nie tak jak jak zwykle, kiedy trzeba go było wkładać do portu USB kilka razy. Całkiem. udevadm monitor
milczał jak zaklęty, nie wykrywał włożenia ani wyciągnięcia urządzenia USB.
Co gorsza: Digispark zaczął się zachowywać tak jakby… zniknął mu bootloader. Zwyczajowe 5 sekund zwłoki przy starcie, skurczyło się do góra 1/2 sekundy…
Digispark: słowo o debuggowaniu po UART
Do czego właściwie przydaje się komunikacja szeregowa między Digispark’iem a hostem (komputerem, do którego jest podłączony)? Jednym z podstawowych przypadków zastosowania takiej wymiany danych jest tzw. debuggowanie (brzydko brzmi ale polskie „odpluskwianie” jeszcze paskudniej:)). Oznacza to po prostu szukanie błędów w Waszym programie.
Poniższe instrukcje ćwiczyłem na Digispark’u. Z powodzeniem możecie je jednak zastosować dla Arduino!
Czytaj dalej Digispark: słowo o debuggowaniu po UART
Digispark: port szeregowy UART (Windows)
W poprzednim poście przećwiczyliśmy wykorzystanie Digispark pod Windows jako akcesorium USB z komunikacją szeregową. Cóż – muszę przyznać, że połączenie takie jest dość kapryśne. Digisparka musiałem czasami kilkakrotnie włączać i wyłączać – i nie zawsze „zaskakiwał”.
Oprócz tego, Digispark do obsługi USB wykorzystuje piny 3 i 4 – i nie można tego zmienić. Transmisja po USB może wymagać odłączenia tych pinów od reszty budowanego układu.
Jest jednak inne rozwiązanie, które możecie użyć do komunikacji z Digispark: transmisja szeregowa po UART. Minusem jest to, że będziecie potrzebowali jakoś wprowadzić sygnał UART do swojego komputera. Potrzebny będzie dodatkowy konwerter UART2USB. W tej roli możecie też użyć Arduino.
Po stronie plusów należy zaliczyć prostotę obsługi, możliwość użycia dowolnych pinów Digisparka oraz mniejszą ilość wymaganej pamięci niż w przypadku DigiCDC.
Czytaj dalej Digispark: port szeregowy UART (Windows)