佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 4251|回复: 17

自制Digispark: 最小USB Arduino

[复制链接]
发表于 21-5-2013 06:35 PM | 显示全部楼层 |阅读模式
这是各位最喜欢看到的:
Open Source Hardware, Firmware, and Software
Digispark也


如果没有记错,好像是去年八月,Digispark开始在kickstarter募资时,曾经有人问为何没有公开代码,作者则说因为在募资阶段,还没有赚到钱。

要不是看到淘宝出售Digispark(不是原装),差点忘记有这东东的存在。进去Digispark网站走了一趟,发现代码公开了,很多东西齐全了,其中包括硬件(shield)与软件(Arduino IDE)。

什么是 Digispark
Digispark是一个基于ATTINY85微控制器的USB开发板,体积小且价钱便宜,功能方面则没有Arduino般强大。代码与Arduino大同小異,更可贵的是使用Arduino IDE来开发。

Digispark是Digistump LLC (digistump.com)版权所有,请使用者仔细阅读Digispark使用协议和版权声明

Tiny Arduino 相比,Digispark多了三粒电阻器和两粒zener diode。与其说多了几个小元件,不如说是少了一个更昂贵的USB至串行转换器。因此,有了Digispark,在没有使用烧录器(Programmer)及转换器下,通过USB 通信口,直接从电脑上载代号(Sketch)。

Arduino的粉丝们,如果不去认识Digispark,将是一大損失。

规格与说明
  • 支持Arduino的IDE 1.0 +(现在是1.04)
  • 内置USB
  • 6个I / O引脚
  • 8K快闪记忆体(Bootloader占用了2KB。剩下约6KB)
  • I2C和SPI(VIS USI)
  • 3个PWM(不知道为什么会有三个PWM)
  • 4个ADC

天呀,连Reset引脚也动用了,使之变成IO。

预算允许的话,可以去Digispark网站购买现成的产品。一个Digispark要价美金8.95,然後再加运输费等等。如果你像西门庆般,贫穷到需要政府救済,那就得自己动手自制Digispark了。

Digispark与Arduino一样,使用前必须把Bootloader烧录至ATTIN85微控制器。此 Bootloader将占用2KB快闪记忆体(Flash memory),使仅有8KB快闪记忆体的 ATTIN85,最后只剩下6KB可以使用。

下载与烧录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



Fuses设定很重要,别搞錯!

完成Bootloader烧录後,接下来安装Digispark USB驱动

安装Digispark 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
  • 把Digispark插入电脑的USB通信口
  • 第一次使用时,将会侦察到新的USB设备,同时显示安装Digispark Bootloader,单击Next直至完成USB设备安装
  • 运行DigisparkArduino-Win32\Digispark-Arduino-1.0.4\arduino.exe以便打开Arduino IDE
  • 单击Tools>Board>Digispark (Tiny Core),如图:


单击Tools>Programmer>Digispark,如图


先测试一个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时,才将之插回电脑。


将ATTINY85引脚5(Digital 0)和引脚6(Digital 1)各连接一个330欧姆电阻器及LED 。开电测试,你会看到二粒LED间隔一秒的闪着。
Digispark with 2 LED.jpg
恭喜你,大功告成

Digispark能做些什么呢?
打开Examples,大概知道Digispark的功能到达什么程度了。麻雀虽小,五脏俱全。



本帖最后由 西门庆33 于 2-6-2013 11:51 AM 编辑

回复

使用道具 举报


ADVERTISEMENT

发表于 21-5-2013 10:24 PM | 显示全部楼层
那个USB接口是直接接USB吗?是普通I/O吗? 里面有内置USB 接收器?还是用软驱?看起来很简单也挺方便。。

回复

使用道具 举报

 楼主| 发表于 21-5-2013 10:41 PM | 显示全部楼层
sougisyou 发表于 21-5-2013 10:24 PM
那个USB接口是直接接USB吗?是普通I/O吗? 里面有内置USB 接收器?还是用软驱?看起来很简单也挺方便。。
...

那是真真旳USB接口,是软驱USB。
如果上载了以下代码,就变成了USB键盘。
  1. #include "DigiKeyboard.h"

  2. void setup() {
  3.   // don't need to set anything up to use DigiKeyboard
  4. }


  5. void loop() {
  6.   // this is generally not necessary but with some older systems it seems to
  7.   // prevent missing the first character after a delay:
  8.   DigiKeyboard.sendKeyStroke(0);
  9.   
  10.   // Type out this string letter by letter on the computer (assumes US-style
  11.   // keyboard)
  12.   DigiKeyboard.println("Hello Digispark!");
  13.   
  14.   // It's better to use DigiKeyboard.delay() over the regular Arduino delay()
  15.   // if doing keyboard stuff because it keeps talking to the computer to make
  16.   // sure the computer knows the keyboard is alive and connected
  17.   DigiKeyboard.delay(5000);
  18. }
复制代码
上面代码模拟键盘形成USB HID(USB human interface device),每五秒输入Hello Digispark!字串至电脑。使用此方式可以很快设计data logger设备


回复

使用道具 举报

 楼主| 发表于 21-5-2013 10:48 PM | 显示全部楼层
各位不防设计一个来玩玩,反正一个ATTINY85微控制器才售价RM3.87
回复

使用道具 举报

发表于 21-5-2013 10:54 PM | 显示全部楼层
西门庆33 发表于 21-5-2013 10:41 PM
那是真真旳USB接口,是软驱USB。
如果上载了以下代码,就变成了USB键盘。上面代码模拟键盘形成USB HID( ...

很有趣,我一直以为USB接口需要很严格没有专门的晶片是做不到。不知道你有关于如何写软驱USB的资料吗?我想实验如何做软驱USB。。



回复

使用道具 举报

发表于 21-5-2013 11:09 PM | 显示全部楼层
西门庆33 发表于 21-5-2013 10:48 PM
各位不防设计一个来玩玩,反正一个ATTINY85微控制器才售价RM3.87

有机会也想试试看,尤其是对那个软驱USB非常感兴趣。 ,我对于高级语言有一定的困难。。 手上还有ARM7,Cortex M3还没学好。 因为我坚强用assembly写 ARM 。还搞不好呢。。只要任何AVR都可以做arduino吗?还是有一些可以?我之前好像有买一些AVR MCU没用到,忘了是什么型号。



回复

使用道具 举报

Follow Us
 楼主| 发表于 21-5-2013 11:18 PM | 显示全部楼层
sougisyou 发表于 21-5-2013 10:54 PM
很有趣,我一直以为USB接口需要很严格没有专门的晶片是做不到。不知道你有关于如何写软驱USB的资料吗?我 ...

请看V-USB,基于AVR微控制器的USB软驱编程
http://www.obdev.at/products/vusb/index.html

回复

使用道具 举报

 楼主| 发表于 21-5-2013 11:25 PM | 显示全部楼层
sougisyou 发表于 21-5-2013 11:09 PM
有机会也想试试看,尤其是对那个软驱USB非常感兴趣。  ,我对于高级语言有一定的困难。。 手上还有AR ...

不是所有AVR可以做Arduino,从ATTINY45,ATTINY85,ATTINY2313至ATMEGA都可以做Arduino。具体可参考Arduino products
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 21-5-2013 11:30 PM | 显示全部楼层
sougisyou 发表于 21-5-2013 11:09 PM
有机会也想试试看,尤其是对那个软驱USB非常感兴趣。  ,我对于高级语言有一定的困难。。 手上还有AR ...

为了快速完成设计,也是时候多学一种高级语言吧?
回复

使用道具 举报

发表于 22-5-2013 06:22 PM | 显示全部楼层
sougisyou 发表于 21-5-2013 11:09 PM
有机会也想试试看,尤其是对那个软驱USB非常感兴趣。  ,我对于高级语言有一定的困难。。 手上还有AR ...

也许这会帮到你,关于 USB signaling 的讯号。
http://www.denali.com/forums/attachment.php?s=4d7827c6e79f8ad43cc2fee22410123a&attachmentid=24&stc=1&d=1226453687



回复

使用道具 举报

发表于 22-5-2013 06:26 PM | 显示全部楼层
西门庆33 发表于 21-5-2013 10:48 PM
各位不防设计一个来玩玩,反正一个ATTINY85微控制器才售价RM3.87

西门庆33你有卖吗?
如果想学ATTiny,从哪里开始?
下载器是如何的。
回复

使用道具 举报

 楼主| 发表于 22-5-2013 08:44 PM | 显示全部楼层
Chrous 发表于 22-5-2013 06:26 PM
西门庆33你有卖吗?
如果想学ATTiny,从哪里开始?
下载器是如何的。

这要看你熟悉那一种语言。其中比较多人使用的语言有

以上Compiler最终目的是把代码编辑成hex文件,然後用烧录器(Programmer)将hex文件烧录至微控制器。无论如何,你必须拥有一个ISP Programmer

ISP Programmer有很多种,其中
  • 便宜的有AVR USBASP Programmer(RM 39.00)
  • 西门庆用的是AVRISP MKII,带有AVR Studio软件(RM 132.03)
  • Arduino也可以当成Programmer


当然初学者可以学习Arduino编程,用 Arduino IDE编程,然後产生hex文件,最后把hex文件Burn去微控制器。

Digispark是最容易使用的了,第一次把Bootloader Burn去 ATTINY85,以後再也不需要使用烧录器了。

更新:22/05/13 11.11pm
西门庆没有卖Digispark, 去Element14买一个ATTINY85,跟着上面步骤自己动手做
本帖最后由 西门庆33 于 22-5-2013 11:12 PM 编辑

回复

使用道具 举报

发表于 22-5-2013 10:18 PM | 显示全部楼层
Chrous 发表于 22-5-2013 06:22 PM
也许这会帮到你,关于 USB signaling 的讯号。
http://www.denali.com/forums/attachment.php?s=4d7827c ...

还是看不懂啊。。 不过还是谢谢你。。
回复

使用道具 举报

 楼主| 发表于 22-5-2013 11:30 PM | 显示全部楼层
sougisyou 发表于 22-5-2013 10:18 PM
还是看不懂啊。。 不过还是谢谢你。。

看得懂V-USB软驱吗?其中usbdrv文件夹里有一个文件(usbdrvasm.S)使用asm的
回复

使用道具 举报

 楼主| 发表于 23-5-2013 11:20 AM | 显示全部楼层
#1更新了。使用Fritzing,画了一张面包板电路图。
回复

使用道具 举报

 楼主| 发表于 28-5-2013 12:29 AM | 显示全部楼层
根据Digispark的Infrared例子,使用了Sharp的GP1UX511QS photo diode来测试了红外。按遥空器的任何键都会开灯,一秒后关灯。
  1. int irPin=2;

  2. void setup()
  3. {
  4. pinMode(irPin,INPUT);
  5. pinMode(0,OUTPUT);
  6. //Serial.begin(9600);
  7. digitalWrite(0,HIGH);
  8.      //Serial.println("You pressed a button");
  9.      delay(1000);
  10.      digitalWrite(0,LOW);
  11. }

  12. void loop()
  13. {

  14.   if(pulseIn(irPin,LOW))
  15.   {
  16.      //button pressed
  17.      delay(100);
  18.      digitalWrite(0,HIGH);
  19.      //Serial.println("You pressed a button");
  20.      delay(1000);
  21.      digitalWrite(0,LOW);
  22.   }
  23.   
  24. }
复制代码
Digisnap Infrared.jpg
接下来是对红外解码,按不同的键控制不同的事件。也可以用来遥空电脑,用来点唱karaoke。

不妨实说。以上已经测试完毕,但也浪费了许多时间。有空放出来让大家研究。


回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 30-5-2013 09:40 PM | 显示全部楼层
炫耀一下
我在instructables发了这个Digispark文章,昨天收到三封email

这是instructables的第一封email
Congratulations, your Step by Step Instructable "Digispark DIY: The smallest USB Arduino" was just featured by one of our editors!
Look for it in the Technology category.
Being featured means we think you are awesome. Keep up the great work!

这是第二封email
Your Step by Step Instructable "Digispark DIY: The smallest USB Arduino" just became popular on Instructables!
Being popular means that tons of people are checking out your Step by Step Instructable and telling us they really like it. Keep up the great work!

第三封email给了三个月Pro会员
"Digispark DIY: The smallest USB Arduino" has been featured to the Instructables homepage! Being featured by our editors means your Instructable stands out and represents one of the best we have.


Projects like yours make Instructables a great place, and we really appreciate your time and effort. As a thank you, we'd like to give you a 3 Month Pro Membership to Instructables. You can use this yourself, or pass it on to anyone else you want by just giving them the gift code and the URL to use it.

回复

使用道具 举报

 楼主| 发表于 2-6-2013 11:52 AM | 显示全部楼层
哈哈!Digispark的作者发了一封电子邮件给我,他说很欣赏我发布关于Digispark的文章。

真真的用意是劝告我必须注明他们的版权。其实这也是我的过错,我得遵守他们版权。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 19-4-2024 08:48 PM , Processed in 0.069780 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表