RRoy 发表于 2020-10-20 17:31:16

国外小姐姐利用ATtiny85做了一把迷你PCB小提琴






这周和大家分享一个国外小姐姐利用ATtiny85做一把迷你PCB小提琴的项目,
包含了从PCB设计到单片机编程整个过程。

## 正文


### 用到的材料

- 定制PCB板
- ATtiny85
- 压电式蜂鸣器
- 按钮
- 侧装式LED
- 聚合锂离子电池
- Autodesk Eagle CAD
- Arduino IDE
- 烙铁





## 1、电路原理图和PCB设计

第一步是根据我想让小提琴具备的功能来选择将要使用的微控制器。

我需要至少一个PWM引脚用于压电蜂鸣器,另外两个数字引脚用于LED和按钮,所以ATtiny85是最合适的。

### 电路原理图

电路原理图相当简单。ATtiny85控制两个LED灯和一个压电蜂鸣器,我还加了一个按钮,用于切换歌曲。整个电路由一节3.7V锂电池供电。

我想把PCB做得越小越好,为了能把它当做徽章使用,所以我找到了最微小的微控制器封装(MLF-20)。

作为一个额外的功能,我还将小提琴的琴弦连接到了微控制器的模拟输入端,目的是为了能够真正用导电材料触摸琴弦来演奏小提琴。


![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-20/1603160127516-image.png)


### PCB设计

我使用Eagle CAD来设计我的PCB,当我需要定制PCB轮廓时,Gordon Williams的(https://gfwilliams.github.io/svgtoeagle/ "SVG到Eagle转换器")一直是我的首选工具。我在Inkscape中描摹了一把小提琴的轮廓,然后用这个工具将其转换为Eagle脚本。

为了获得小提琴F孔的透光效果,我在PCB背面放置了侧视LED,并使用Top和Restrict层去除该区域的铜和焊接掩模。


![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-20/1603160151241-image.png)


![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-20/1603160160303-image.png)

这是我从JLCPCB订购的PCB。丝网印刷非常细致,我认为哑光黑色的焊接掩膜非常适合小提琴!我这次忘了去掉订单号,但JLCPCB在订购PCB时可以选择这样做。

如果你也想订购的话,我已经把Gerber文件和Eagle CAD文件添加到了这个(https://github.com/Alexandra182/mini-violin "Github仓库")里。





![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-20/1603160169539-image.png)



![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-20/1603160184062-image.png)


PCB只是比我能找到的最小的lidianci大一点,所以我可以把电池藏在小提琴的背面。我没有使用经典的LiPo JST连接器,因为它与其他元件的对比非常巨大,所以我用2mm的引脚代替焊接。

我看到别人用一个很好的技巧来增强LED的发光效果,那就是用黑色热胶覆盖它们。

![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-20/1603160191560-image.png)


![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-20/1603160202249-image.png)

## 2、为ATtiny85编程

第一步是烧写bootloader,为此,我使用了[这个核心](https://github.com/damellis/attiny "attiny")和一个USBTinyISP编程器。

完整的程序可以在[这里](https://github.com/Alexandra182/mini-violin "mini-violin")找到,我将在下面解释主要的功能。

我使用了一些由Robson Couto翻译成代码的Arduino曲谱,你可以在[这里](https://github.com/robsoncouto/arduino-songs "arduino-songs")找到。Arduino Tone库与ATtiny微控制器不兼容,所以我使用了Tim Eckel的(https://bitbucket.org/teckel12/arduino-timer-free-tone/wiki/Home "TimerFreeTone库")作为替代。

由于歌曲(音符和持续时间的数组)对于ATtiny85的数据存储器来说太大了,我使用PROGMEM将它们存储在程序存储器中代替(这意味着我还必须使用特殊的函数来访问数组,如pgm_read_word_near)。

根据按下按钮的时间长短,程序会在4个功能之间切换:

- 弹奏《欢乐颂》(如果按下按钮不到1秒)
- 弹奏《绿袖子》(如果按下按钮在1秒-2秒之间)
- 播放哈利波特主题曲(如果按下按钮的时间2秒-3秒之间)
- freestyle(如果按钮被按下的时间3秒-4秒之间)

freestyle功能从连接到琴弦的针脚上读取模拟值,并将其映射到频率范围内,所以当琴弦被导电的东西触碰时,就会弹出一个音符。


## 完工!
https://www.bilibili.com/video/BV1Ft4y1e7rA/

![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-10-20/1603160225175-image.png)





我期待着在未来的迭代中改进一些东西:

- 我应该在PCB上加一个LiPo充电电路,因为现在我必须给电池单独充电,不是很方便。

- 现在,编程垫被放置在单片机的周围,所以我不能用pogo pins来编程,我在上面焊了一些线来代替。在下一次的迭代中,我应该把它们都放在彼此靠近的地方,间距相等。

希望大家喜欢这个精致的小项目!

帅猫 发表于 2020-10-23 20:46:43

PCB只是比我能找到的最小的lidianci大一点

海之鱼 发表于 2020-11-2 09:58:21

点赞,看起来很不错啊。

dbc0301 发表于 2020-11-10 23:26:20

非常精致小巧的玩意儿{:6_209:}

sappublic 发表于 2020-11-12 14:58:04

海之鱼 发表于 2020-11-2 09:58
点赞,看起来很不错啊。

是啊是啊

小虎1 发表于 2021-5-12 15:38:16

造型美观,功能实用,很喜欢

派大星ym 发表于 2022-8-2 13:04:19

{:6_202:}////

许培享 发表于 2024-1-14 12:55:38

好好玩的精致物件
页: [1]
查看完整版本: 国外小姐姐利用ATtiny85做了一把迷你PCB小提琴