Digispark ATtiny85 untuk Pemula: Pasang Board, Upload dan Butang Makro USB

Cartoon of a tiny black Digispark ATtiny85 board with a gold PCB-edge USB plug and a loose black header strip, approaching a laptop USB port

Untuk menghidupkan Digispark ATtiny85, pasang Digistump AVR Boards melalui URL board GitHub ArminJo (pautan lama digistump.com sudah mati), pilih Digispark dengan clock ditetapkan pada 16.5 MHz, klik Upload ketika board belum dicucuk, dan cucuk board hanya apabila IDE memintanya. Port COM memang tidak akan muncul langsung, dan itu normal. Anda berkorban pin dan memori β€” 6 pin I/O, kira-kira 6KB flash β€” tetapi mendapat satu kebolehan yang tiada pada Arduino Nano: menjadi papan kekunci USB yang sebenar.

Board Digispark ATtiny85 kami cuma sebesar kuku ibu jari, dengan palam USB yang dibentuk terus pada PCB itu sendiri. Panduan ini memasang board, mengelipkan LED, kemudian membina projek yang memang menjadi kepakaran board ini: butang makro satu kekunci untuk PC anda. Rancang satu sesi solder yang singkat dahulu β€” jalur pin header male dihantar longgar dan belum disolder.

Apa yang boleh dibuat oleh Digispark tetapi tidak oleh Arduino Nano?

Berbanding Arduino Nano V3, Digispark kalah dari segi pin, memori dan kemudahan debug, tetapi menang dari segi saiz dan satu helah istimewa yang tulen. Helah itu terletak pada cara setiap board berkomunikasi melalui USB: cip CH340 pada Nano ialah jambatan USB-ke-serial yang fungsinya tetap, jadi komputer hanya akan nampak port serial. ATtiny85 pula tiada perkakasan USB langsung β€” sebaliknya Digispark menjana protokol USB secara bit-bang dalam perisian (teknik V-USB) pada dua pinnya, jadi cip itu sendiri yang menentukan ia memperkenalkan diri sebagai apa. Perkenalkan dirinya sebagai papan kekunci, dan ia boleh menaip ke dalam mana-mana komputer tanpa perlu memasang apa-apa pada komputer itu.

Digispark ATtiny85 Arduino Nano V3
Pin I/O 6 (3 yang selesa β€” lihat bajet pin di bawah) 14 digital + 8 analog
Flash untuk sketch anda kira-kira 6KB kira-kira 30KB daripada 32KB
SRAM 512 bait 2KB
Serial Monitor tiada melalui palam USB ada, melalui CH340
Bertindak sebagai papan kekunci USB ya (USB perisian) tidak (jambatan serial tetap)
Cara upload cucuk apabila diminta, tiada port COM upload biasa melalui port COM
Saiz board β‰ˆ25 Γ— 19mm β‰ˆ45 Γ— 18mm

Parts list

ItemPriceQty
Arduino NANO Compatible NANO V3 - ATMEGA328P with C340G - Mini USB - Microcontroller ProjectArduino NANO Compatible NANO V3 - ATMEGA328P with C340G - Mini USB - Microcontroller ProjectNANOCH3RM22.90
Round Head LED 3mm / 5mm / 8mm - Red/Yellow/Blue/Green/White - 5mm LED (RED)Round Head LED 3mm / 5mm / 8mm - Red/Yellow/Blue/Green/White - 5mm LED (RED)5REDLEDRM0.10
400 pcs 1/4W Resistor Pack Resistor Kit 20 Common Value with 20 each400 pcs 1/4W Resistor Pack Resistor Kit 20 Common Value with 20 each400RPACRM7.95
80W Electronics Soldering Iron with LCD Display Ajustable Temperature Microconstroller Electronic Project80W Electronics Soldering Iron with LCD Display Ajustable Temperature Microconstroller Electronic ProjectASOIRONRM39.95
50g Soldering Wire Lead with Flux Core 1mm Diameter50g Soldering Wire Lead with Flux Core 1mm Diameter50SOTINRM9.90

Kit solder untuk kerja header yang dibuat sekali sahaja, LED dan pek perintang untuk langkah kelip LED luaran, serta Nano V3 untuk projek yang memerlukan lebih daripada enam pin.

Bagaimana nak pasang pakej board Digispark dalam Arduino IDE?

Tutorial Digispark yang lama gagal pada langkah pertama lagi: ia menyuruh IDE menggunakan URL pakej di digistump.com, sedangkan domain itu sudah mati. Pakej tersebut kini diteruskan sebagai fork DigistumpArduino oleh ArminJo: README-nya menandakannya tidak lagi disokong sejak 2023, tetapi ia masih berfungsi dengan Arduino IDE moden (2.x) dan disertakan bersama alat upload yang dikemas kini serta driver Windows.

Buka File β†’ Preferences β†’ Additional boards manager URLs dan tampal:

https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json

Dalam Tools β†’ Board β†’ Boards Manager, cari Digistump dan pasang Digistump AVR Boards (versi 1.7.5 dipasang tanpa masalah). Pilih Tools β†’ Board β†’ Digistump AVR Boards β†’ Digispark, kemudian tukar Tools β†’ Clock daripada tetapan lalainya 16 MHz – No USB kepada 16.5 MHz – For V-USB. USB kelajuan rendah menghantar 1.5 juta bit sesaat, dan 16.5 MHz memberikan tepat 11 kitaran clock bagi setiap bit β€” pemasaan yang menjadi asas kod V-USB, yang kitarannya dikira satu per satu dengan tangan. Clock No USB masih boleh upload, kerana bootloader sentiasa berjalan pada 16.5 MHz-nya sendiri, tetapi sketch papan kekunci yang dibina dengan tetapan itu akan dikompil tanpa sebarang ralat lalu tidak pernah muncul sebagai papan kekunci.

Windows memerlukan driver sekali sahaja, kerana bootloader memperkenalkan dirinya sebagai peranti USB khusus vendor (vendor-specific), bukan kelas yang sudah sedia dikendalikan oleh Windows seperti papan kekunci atau serial. Driver itu sudah ada di dalam pakej: jalankan post_install.bat (ia melancarkan pemasang driver DPinst64.exe yang disertakan, atau DPinst.exe pada Windows 32-bit) dari folder Digistump_Drivers di bawah %LOCALAPPDATA%\Arduino15\packages\digistump\tools\micronucleus\2.6\ (tampal laluan itu ke bar alamat File Explorer). macOS tidak memerlukan apa-apa; pada Linux, tambah peraturan udev micronucleus supaya upload boleh berjalan tanpa sudo.

Kenapa tiada port COM?

Semua perkara pelik tentang board ini berpunca daripada satu fakta: USB hanya wujud selagi ada kod pada cip yang sedang menjananya secara bit-bang, dan sebaik board dihidupkan β€” iaitu ketika setiap upload berlaku β€” kod itu ialah bootloader. Bootloader tersebut, micronucleus, berjalan selama kira-kira lima hingga enam saat pertama selepas board dihidupkan, mengiklankan board sebagai peranti USB kecil β€” bukan port serial β€” kemudian menyerahkan cip kepada sketch anda. Melainkan sketch itu menjalankan library USB-nya sendiri, tiada apa yang menjawab komputer selepas itu, namun pull-up 1–1.5kΞ© masih mengumumkan kehadiran peranti, jadi Windows mungkin memaparkan USB device not recognized β€” memang dijangka dan tidak memudaratkan apa-apa untuk sketch blink.

Alat upload dibina mengikut tetingkap masa itu, jadi turutannya terbalik. Klik Upload ketika board belum dicucuk; IDE akan mengkompil, kemudian memaparkan “Please plug in the device (will time out in 60 seconds) …”; cucuk board; bootloader menerima sketch, menulisnya ke flash dan terus menjalankannya.

Kartun board Digispark hitam bergerak ke arah port USB laptop sementara skrin laptop memaparkan bar kemajuan dan sebuah jam randik terapung di antara keduanya
Upload terbalik: IDE mengkompil dahulu dan memulakan kiraan detik, dan anda hanya mencucuk board apabila diminta β€” bootloader menangkap upload itu dalam beberapa saat pertamanya.

Tiga kesan ini kelihatan seperti kerosakan kali pertama anda melihatnya. Tools β†’ Port kekal kelabu β€” memang tiada port untuk dipilih, sampai bila-bila. Tiada Serial Monitor biasa melalui palam USB: ATtiny85 tiada UART perkakasan, palam itu hanya membawa apa-apa peranti USB yang sedang ditiru oleh kod yang berjalan, dan library serial-melalui-USB yang disertakan (DigiCDC) sendiri memberi amaran bahawa ia berkemungkinan gagal pada Windows yang lebih baharu daripada XP dan pada kernel Linux moden. Dan setiap kali dihidupkan, sketch anda bermula kira-kira lima saat lewat, kerana bootloader sentiasa mengambil gilirannya dahulu.

Bagaimana nak kelipkan LED onboard?

Ujian pertama Digispark tidak memerlukan sebarang komponen. Daripada dua LED kecil pada board, satu ialah lampu kuasa yang sentiasa menyala; satu lagi disambung pada P1 bagi board rev3 “model A” seperti board ini β€” pakej board itu sendiri mentakrifkan LED_BUILTIN sebagai P1. Klon daripada sumber lain ada versi kedua dengan LED pada P0, jadi sketch ini menyimpan nombor pin dalam satu pemalar; menukarnya kepada 0 ialah semakan pertama yang standard jika hanya lampu kuasa yang menyala.

// Blink pertama Digispark - LED onboard pada P1 (board rev3 "model A").
// Jika tiada yang berkelip, tukar LED_PIN kepada 0: sesetengah klon menyambung LED ke P0.
const uint8_t LED_PIN = 1;

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(500);
  digitalWrite(LED_PIN, LOW);
  delay(500);
}

Klik Upload ketika board belum dicucuk, cucuk apabila diminta, dan LED terus berkelip sebaik upload selesai, kerana sketch baharu terus bermula. Pada 16.5 MHz ia dikompil kepada 582 bait, kurang daripada sepersepuluh bajet.

Pin mana antara enam itu yang benar-benar boleh digunakan?

“Enam pin I/O” pada Digispark memang benar, tetapi tiga daripadanya sudah ada tugas tetap. P3 dan P4 membawa talian data USB, jadi apa-apa yang disambung di situ akan bertembung dengan trafik USB β€” malah ketika USB tidak aktif, pull-up 1–1.5kΞ© menarik P3 ke arah 5V manakala diod zener pelindung mengehadkan kedua-dua talian sekitar paras isyarat 3.3V USB. P5 pula ditetapkan melalui fuse untuk bertindak sebagai reset pada kebanyakan board: tarik ia ke LOW dan cip akan but semula. Yang tinggal ialah P0, P1 dan P2 sebagai pin kerja yang selesa:

Pin Tahap keselesaan Nota
P0 bebas PWM; SDA I2C jika anda tambah sensor kemudian
P1 bebas PWM; membawa LED onboard, jadi paling sesuai sebagai output
P2 bebas input analog (ADC1); SCL I2C
P3 elakkan USB Dβˆ’ dengan pull-up 1–1.5kΞ© pada board
P4 elakkan USB D+; analog ADC2 hanya dalam projek tanpa USB
P5 anggap tidak boleh digunakan bertindak sebagai reset pada kebanyakan board

Untuk langkah LED luaran: sebiji LED merah 5mm, kaki panjang ke arah P0, melalui perintang 330Ξ© daripada pek perintang ke GND, dengan sketch blink ditukar ke pin 0. LED menurunkan kira-kira 2V, jadi 3V Γ· 330Ξ© β‰ˆ 9mA β€” cukup terang dan jauh di bawah had pin. Pada perintang biru lima jalur ini, 330Ξ© dibaca oren-oren-hitam-hitam-perang. Kuasa datang daripada 5V port USB; jauh dari komputer, bekalkan 7–12V ke VIN dan regulator 78M05 berbentuk tab perak akan menghasilkan 5V β€” jika kedua-duanya disambung serentak, diod pada talian bekalan USB board menghalang 5V daripada regulator mengalir balik ke komputer anda.

Bagaimana nak bina butang makro satu kekunci?

Sekarang projek Digispark yang tidak boleh ditiru oleh Nano: butang yang menaip. Sekali tekan menghantar satu baris ayat yang anda taip berulang kali setiap hari β€” balasan khidmat pelanggan, penutup e-mel, pautan mesyuarat β€” ke dalam mana-mana tetingkap yang sedang aktif pada komputer anda sendiri, kerana komputer melihatnya sebagai papan kekunci biasa.

Mulakan di meja solder: patahkan jalur header yang longgar kepada satu bahagian enam pin dan satu bahagian tiga pin, kemudian solder ke lajur P5–P0 dan baris 5V/GND/VIN (besi solder, wayar timah solder, dan panduan solder pin header kami untuk tekniknya). Cuba masukkan board yang belum disolder ke port USB anda dahulu, perhatikan muka mana yang menghadap ke atas, dan solder pin supaya menghala ke atas dari muka itu: port laptop hanya meninggalkan kira-kira satu sentimeter ruang di bawah board, tidak cukup untuk pin yang menghala ke bawah berserta housing jumper. Letakkan besi solder yang panas pada tapaknya setiap kali selesai satu sambungan.

Kartun pandangan terurai jalur header hitam yang longgar terapung di sebelah pad emas board Digispark hitam, bersebelahan besi solder hitam dan gelendong wayar solder putih
Kerja sekali sahaja: jalur yang longgar dipatahkan kepada bahagian enam pin dan tiga pin, lalu disolder ke pad emas board dengan pin menghala ke atas mengikut kedudukan board dalam port anda.

Keunikan susun aturnya: Digispark tidak pernah diletakkan di atas breadboard ketika berjalan, kerana seluruh board berada di dalam port USB. Hanya butang yang diletakkan pada mini breadboard 170 lubang, dihubungkan dengan dua jumper male-ke-female β€” hujung female pada pin baharu board, hujung male ke dalam breadboard. Pasang butang tactile 6Γ—6mm merentangi alur tengah dan sambungkan dua kaki yang bertentangan secara pepenjuru: keempat-empat kaki itu sebenarnya dua pasangan yang bersambung di dalam suis, dan bucu yang bertentangan sentiasa berada pada pasangan yang berbeza, jadi hanya tekanan butang yang menyambungkannya (panduan butang tekan kami menerangkan pasangan ini dengan lebih lanjut):

Dari Ke Jumper
Kaki butang (satu bucu) Digispark P2 Jumper M-F, hujung female pada pin P2
Kaki butang (bucu pepenjuru) Digispark GND Jumper M-F, hujung female pada pin GND

Tiada perintang diperlukan: sketch menghidupkan pull-up dalaman ATtiny85 β€” perintang terbina dalam bernilai beberapa puluh kΞ© yang menahan P2 pada 5V β€” jadi pin dibaca HIGH sehinggalah butang memintaskannya ke GND. Bahagian papan kekunci pula menggunakan library DigiKeyboard, yang sudah sedia ada di dalam pakej board:

// Butang makro satu kekunci Digispark: tekan = menaip baris yang disimpan ke tetingkap aktif.
// Butang antara P2 dan GND. P2 guna pull-up dalaman cip, jadi tiada perintang.
#include "DigiKeyboard.h"

const uint8_t BUTTON_PIN = 2;      // P2 - jauh daripada pin USB P3/P4
bool wasPressed = false;

void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);  // HIGH ketika rehat, LOW apabila ditekan
}

void loop() {
  bool isPressed = (digitalRead(BUTTON_PIN) == LOW);
  if (isPressed && !wasPressed) {        // cetus sekali setiap tekanan, bukan setiap loop
    DigiKeyboard.sendKeyStroke(0);       // laporan kosong: sesetengah PC lama tercicir aksara pertama
    DigiKeyboard.print(F("Thank you for your order. We will share the tracking number shortly."));
  }
  wasPressed = isPressed;
  DigiKeyboard.delay(20);  // debounce DAN terus menjawab polling USB daripada PC
}

Tiga baris memikul keseluruhan mekanismenya. Semakan tepi (isPressed && !wasPressed) mencetus sekali bagi setiap tekanan, bukan sekali bagi setiap pusingan loop β€” jika tidak, butang yang ditahan akan terus menaip semula baris itu sehingga anda melepaskannya. sendKeyStroke(0) menghantar laporan kosong tanpa sebarang kekunci terlebih dahulu; contoh library itu sendiri menyatakan bahawa sesetengah komputer lama terlepas aksara pertama selepas lama terbiar. Dan loop berakhir dengan DigiKeyboard.delay(20), bukan delay() biasa, kerana V-USB mesti melayan setiap permintaan daripada komputer dalam masa kira-kira 50ms, jika tidak komputer akan berputus asa dengan papan kekunci itu β€” delay milik library ini terus menjawab sambil menunggu, dan 20ms itu juga berfungsi sebagai debounce. Keseluruhan sketch dikompil kepada 2,860 bait pada 16.5 MHz, 43% daripada bajet.

Satu nota tentang set aksara: papan kekunci USB menghantar kedudukan kekunci, bukan huruf, dan tetapan susun atur (layout) pada komputer yang menentukan apa yang ditaip oleh setiap kedudukan. Library ini menganggap susun atur US secara lalai, jadi komputer yang ditetapkan pada susun atur lain akan mendapat simbol yang salah. Kebanyakan PC di Malaysia menggunakan susun atur US; jika PC anda berbeza, tambah baris #define LAYOUT_... yang sepadan di atas baris include β€” kira-kira dua dozen susun atur disertakan bersama library ini.

Sisi lainnya: butang ini berfungsi kerana komputer mempercayai papan kekunci sepenuhnya, jadi apa sahaja yang memperkenalkan diri sebagai papan kekunci boleh menaip dengan kebenaran penuh akaun pengguna anda. Itulah sebabnya anda patut melabel gajet anda sendiri dan jangan sekali-kali mencucuk peranti USB yang tidak dikenali ke komputer anda β€” ia bukan teknik untuk digunakan pada komputer orang lain.

Kartun board Digispark hitam dicucuk ke port USB laptop, disambung dengan dua wayar jumper ke butang tactile hitam pada mini breadboard putih kecil, dengan kekunci papan kekunci kosong terapung di atas laptop
Butang makro yang siap: Digispark duduk di dalam port USB dan hanya dua jumper keluar daripadanya β€” butang diklik, komputer pun menaip.

Kesilapan biasa yang kami lihat

Board sudah dicucuk ketika Upload diklik. Bootloader hanya mengiklankan dirinya dalam beberapa saat pertama selepas dihidupkan, jadi board yang sudah sedia berada dalam port tidak kelihatan dan IDE terus mengira detik sehingga tamat masa. Cabut, klik Upload, cucuk apabila diminta β€” port di panel hadapan PC atau kabel sambungan USB menjadikan rutin ini jauh lebih mudah.

Membiarkan clock pada tetapan lalai. Blink berfungsi pada 16 MHz – No USB, tetapi butang makro pula tidak akan muncul sebagai papan kekunci. Pilih 16.5 MHz dan upload semula.

Sudah cucuk tepat pada masanya tetapi masih tamat masa. Pada Windows, pastikan dahulu driver yang disertakan sudah dipasang. Kemudian cuba port lain: isyarat USB yang dijana perisian oleh V-USB berada hampir di hujung had pemasaan USB, dan sesetengah port USB 3 menolaknya sedangkan port atau hub USB 2.0 boleh menerimanya.

Menyambung projek ke P3, P4 atau P5. Simptomnya mengelirukan β€” upload gagal, papan kekunci hilang, cip but semula apabila input berubah β€” kerana pin-pin itu ialah talian data USB dan reset. Kekalkan butang dan sensor pada P0–P2.

Soalan Lazim

Kenapa Digispark saya tidak muncul dalam senarai port Arduino IDE?

Kerana ia bukan peranti serial. Bootloader menjana USB secara bit-bang sebagai peranti kecil bukan-serial selama kira-kira lima saat selepas dicucuk β€” itulah tetingkap masa yang ditunggu oleh alat upload. Tiada port COM dan menu Port yang kelabu adalah perkara normal.

Bolehkah Digispark menggantikan Arduino Nano?

Untuk satu kerja kecil, boleh β€” sebiji butang, satu kesan LED, satu sensor, gajet papan kekunci USB. Debug menggunakan Serial print, keperluan lebih daripada tiga pin yang selesa atau library yang lebih besar lebih sesuai dibuat pada Nano V3; projek Wi-Fi pula patut bermula dengan panduan ESP32-C3 Super Mini kami.

Bagaimana nak debug tanpa Serial Monitor?

Gunakan corak kelipan pada LED P1 untuk mengetahui keadaan secara kasar, dan β€” keistimewaan board ini β€” DigiKeyboard.print() nilai pemboleh ubah anda sambil editor teks dibuka dan aktif, supaya board menaip log debug-nya sendiri. Logik yang memerlukan output serial berterusan lebih mudah dibangunkan pada Nano dahulu, kemudian dipindahkan.

Berapa banyak flash yang sebenarnya diperoleh sketch Digispark?

8,192 bait flash pada ATtiny85 dikongsi dengan bootloader, jadi sketch hanya mendapat baki yang ditinggalkan oleh micronucleus: 6,650 bait dengan bootloader pakej board terkini, atau kira-kira 6,012 pada board yang masih membawa bootloader kilang yang lebih lama β€” itulah sebabnya upload kadang-kadang mengadu sketch terlalu besar walaupun saiznya sudah diterima oleh IDE.

Adakah butang makro memerlukan perisian dipasang pada komputer?

Tidak β€” itulah kelebihan USB HID. Setiap sistem pengendalian desktop sudah disertakan dengan sokongan papan kekunci generik, jadi komputer menerima Digispark sebagai papan kekunci standard sebaik sahaja ia dikenal pasti (enumerate); langkah driver tadi hanya untuk upload pada komputer pembangunan Windows anda. Butang mula berfungsi kira-kira lima saat selepas dicucuk, sebaik bootloader menyerahkan kawalan.

Kemas kini terakhir November 2026. Tersangkut? Chat dengan kami di WhatsApp.

Leave a Reply

Your email address will not be published. Required fields are marked *