2020-06-30

Kai trūksta vietos - Digispark ATTiny85

Šis trumpas blogo įrašas apie mikrovaldiklio plokštę, kuri sutelpa vos į 2.5 x 2cm dydžio matmenis (arba 18 x 19 mm apkarpius) ir pasižymi gana nebloga funkcijų aibe. Aš kalbu apie Digispark ATTiny85. Ji gali pagelbėti, kai montavimo vieta ypač ribota, o mikrovaldiklio funkcijų reikia nesudėtingiems darbams atlikti (LED PWM valdymui ar pan.). Be abejo, kaip ir su visais dalykais - yra tam tikrų niuansų arba velnias slypi detalėse. Pažvelkime, ką mums siūlo šis Digispark kūrinys.







I. Lustas

ATTiny85 yra Atmel (dabar Microchip) įmonės sukurtas mikrovaldiklis sutelpantis į SOP-8 įpakavimą (t.y. turintis iš viso 8 išvadus ir 6 iš jų gali būti panaudoti naudingiems dalykams kontroliuoti). 8KB flash atminties mažoms programoms yra visai neblogai (jeigu naudosime Arduino bootloader programą, tai liks tik 6KB), o 16.5 MHz lusto veikimo dažnis yra vertas dėmesio net ir greičio mėgėjams. 


Aišku, nereikia labai apsidžiaugti, kad naudojant vidinį RC rezonatorių bus pasiektas kvarcinio kristalo tikslumas, bet vis gi, kaip tokiam mažam daiktui - neblogai. Taigi, turime 6 skaitmenines įvestis (GPIO), 4 iš jų gali išvesti PWM signalą bei 3 priima įvedimui analoginį (ADC) signalą. Žodžiu, priedo dar gauname SPI ir I2C komunikacijai. Problematiškiausia turbūt, parinkti funkcijas tiems 6 išvadams (sutilpti į juos). Na, ir viską galime nesunkiai valdyti su Arduino, kas išties palengvina greitą prototipavimą.

II. Plokštės formatas

Įdomiausia dalis turbūt ne pats mikrovaldiklis, bet Digispark plokštė, kuri gana plačiai paplitusi interneto platybėse ir lengvai randama prekyboje. Plokštė yra stora (2.5mm), tad gali būti jungiama tiesiai į USB lizdą ir jame kuo puikiausiai laikosi. USB jungtis taip pat palengvina maitinimo ir UART komunikacijos klausimą - tačiau apie didesnį USB funkcionalumo palaikymą neverta net galvoti. 



Vis gi, ant plokštės turime tiesinį 5V (0.5A) įtampos reguliatorių (LDO) 78M05, tad teoriškai maitinti įmanoma nuo 7-35V (bet realiai gal tik iki 16V). Iki pilnos laimės trūksta tik LED lemputės, kuri irgi yra, kad galėtume paleisti tipinį "mirksiuką" (Arduino Blink sketch).

III. Niuansai - gaivinimas

Pradėti dirbti su šia plokšte gali kilti keblumų. Ypač, jeigu tai ne originalas, o kinietiška kopija pirkta e-bay, aliexpress ar dar kitur. Įkišus plokštę į USB lizdą ji kas porą sekundžių persikrauna, USB prievadas taipogi nefunkcionuoja kaip priklauso (vyksta pakartotinė USB re-enumeracija). Iš pradžių gali pasirodyti, jog tai defektas, mikrovaldiklio neįmanoma bus perprogramuoti, reikės mesti plokštę į šiukšliadėžę. 
Vis gi, neverta nusiminti. Tai - ne techninės įrangos defektas, o tiesiog prasta programinė įranga (software), kurią gavote iš Kinijos gamintojų. Iš kas blogiausia, kad visos plokštės gali būti su tokiu pačiu defektu. Ką daryti? Išeitis yra - perrašyti Arduino programą (sketch), net jeigu ir plokštė persikrauna kas kelios sekundės. Laimei to trumpo laiko pakanka, kad būtų galima greitai sutvarkyti (perrašyti) defektą. Žingsniai tokie:
  1. Pasileidžiame Arduino IDE
  2. Instaliuojame Digistump draiverį:
    https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip
  3. Arduino IDE: File > Preferences nustatome kitą Boards Manager URL:
    https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json
  4. Instaliuojame Digistump plokštes:
    Arduino IDE: Tools > Board > Board Manager > Install "Digistump"
  5. Pasirenkame "Digispark" plokštę:
    Arduino IDE: Tools > Board > Digispark (Default - 16.5mhz)
  6. Parašome naują kodą (sketch):
    --

    --
  7. Spaudžiame Sketch > Upload mygtuką
  8. Įkišame plokštę į USB lizdą, kai to prašo konsolėje
  9. Voila! Mikrovaldiklio kodas perrašomas ir plokštė pradeda veikti!
Kai viskas sėkmingai Arduino IDE turime matyti:


Tuomet ir USB įrenginys kompiuteryje atvaizduojamas teisingai:


Pastaba. Priklausomai nuo geležies, OS nustatymų ar įrašytos firmware trūkumų, modulis nebūtinai gali būti atpažįstamas OS, net jeigu perrašysime firmware. Atpažinimas savaime nėra problema, nes tikslas yra galimybė programuoti (naudoti), o ne matyti gražų "Digispark" pavadinimą įrenginių sąraše.

Atnaujinimas:
Kita dažnai sutinkama problema, jog moduliui naudojamas neteisingas USB draiveris (biblioteka), todėl perprogramuoti modulio niekaip neišeina. Laimei yra geras įrankis Zadig, kuris leidžia kiekvienam USB įrenginiui pakeisti naudojamą USB biblioteką. Po šio triuko perprogramavimas tampa įmanomas ir Arduino IDE įrankiai sugeba susišnekėti su plokšte.



IV. Reziumė

Štai tokia ta pažintis su Digispark. Kai plokštė veikia - laikas kūrybai. Pasiraitoti rankoves ir suprogramuoti kažką su ja gero. Iki sekančio karto!

Komentarų nėra:

Rašyti komentarą