电子与电脑
Monday, 20 May 2013 21:01

自制Digispark: 最小USB Arduino

Written by 
Rate this item
(1 Vote)
Digispark
Digispark是一个基于ATTINY85微控制器的开发板,体积小且价钱便宜,功能方面则没有Arduino般强大。代码与Arduino大同小異,也是使用Arduino IDE开发。
 
Digispark是Digistump LLC (digistump.com)版权所有,请使用者仔细阅读Digispark使用协议和版权声明
 
Digispark的特别之处是使用了USB与电脑沟通,省了USB至串口转换器。为此,Digispark必须占用2KB的快闪记忆体(Flash Memory)以便用来安装Bootloader。
 
 
Digispark的功能
打开Examples,大概知道Digispark的功能到达什么程度了。麻雀虽小,五脏俱全。
Arduino for Digispark Examples
 
 
规格与说明
  • 支持Arduino的IDE 1.0 +(现在是1.04)
  • 内置USB
  • 6个I / O引脚
  • 8K快闪记忆体(Bootloader占用了2KB。剩下约6KB)
  • I2C和SPI
  • 3个PWM
  • 4个ADC
  
下载与烧录Bootloader
  • 下载micronucleus tiny85 bootloader
  • 解压micronucleus-t85-master.zip(1.36MB)至任何文件夹
  • 去micronucleus-t85-master\firmware\releases查找Bootloader
以上文件包含了几个版本(从1.02至1.06)的Bootloader,其中jump表示开机没有等待(五秒),上载代码必须使用jumper(D5/reset引脚接地)。这里我使用micronucleus-1.06.hex
  • 使用AVR烧录器把micronucleus-1.06.hex烧录至ATTINY85
  • 这里使用AVRISP MKII烧录器,然後设定以下fuses
AVRISP MKII pinout
Fuses
完成Bootloader烧录後,接下来安装Digispark USB驱动
 

安装Digispark USB驱动
  • 由于Digispark是使用USB与电脑沟通,所以必须安装USB驱动。
  • 下载用于Digispark的Arduino 1.0.4,自带了Digispark USB驱动
  • 解压DigisparkArduino-Win32-1.0.4-March29.zip至任何文件夹
  • 运行DigisparkArduino-Win32\DigisparkWindowsDriver\InstallDriver.exe(只须安装一次)
  • 完成Digispark USB驱动安装后,可以连接Digispark至电脑了

 
Digispark电路图
下面第一张是官方Digispark电路图下面第二张电路图则是用于测试,5V电源来自电脑的USB通信口,使用非常容易又简单。建议使用外部USB Hub连接Digispark,以防万一电路出现问题而损坏电脑的USB通信口。
Digispark official schematic
 
 
Simplest Digispark schematic
 
连接与测试Digispark
  • Digispark插入电脑的USB通信口
  • 第一次使用时,将会侦察到新的USB设备,同时显示安装Digispark Bootloader,单击Next直至完成USB设备安装  
  • 运行DigisparkArduino-Win32\Digispark-Arduino-1.0.4\arduino.exe以便打开Arduino IDE
  • 单击Tools>Board>Digispark (Tiny Core),如图:
Arduino for Digispark Select Board
 
  
 
  • 单击Tools>Programmer>Digispark,如图
Arduino for Digispark Select Programmer
 
 
先测试一个Digispark Arduino自带的代码(Sketch)。单击File>Examples>Digispark_Example>Start
  1. // the setup routine runs once when you press reset:
  2. void setup() {
  3. // initialize the digital pin as an output.
  4. pinMode(0, OUTPUT); //LED on Model B
  5. pinMode(1, OUTPUT); //LED on Model A
  6. }
  7. // the loop routine runs over and over again forever:
  8. void loop() {
  9. digitalWrite(0, HIGH); // turn the LED on (HIGH is the voltage level)
  10. digitalWrite(1, HIGH);
  11. delay(1000); // wait for a second
  12. digitalWrite(0, LOW); // turn the LED off by making the voltage LOW
  13. digitalWrite(1, LOW);
  14. delay(1000); // wait for a second
  15. }
 
按照以下步骤上载代码(Sketch)至Digispark。上载代码有一点点麻烦,那就是每次上载前,Digispark必须与电脑断开,直至电脑显示插入Digispark时,才将之插回电脑。
Arduino for Digispark Upload sketch
ATTINY85引脚5(Digital 0)和引脚6(Digital 1)各连接一个330欧姆电阻器及LED 。开电测试,你会看到二粒LED间隔一秒的闪着。
 
Read 18013 times Last modified on Saturday, 09 July 2016 17:56

Leave a comment