所以这里有一些特别的东西,一个说 ASTROMECH的迷你R2D2 PCB。
Astromech 是星球大战系列中的一种虚构语言,由口哨声和哔哔声组成。
我制作的这个 Mini R2D2 是一个钥匙扣。
它的大脑是 Attiny85,由 CR2032 纽扣电池座供电。
MarceloLarios做了一个简单的 Arduino Uno 设置,每 3 秒发出一次随机蜂鸣声。
我接受了这个概念并通过使用带有独立电路的 Attiny85 而不是使用整个 Arduino UNO 来准备整个事情。
Attiny85 设置
在开始之前,我准备了一个简单的 Attiny85 设置,其中包括一个连接蜂鸣器和一个 LED 的 Attiny。
我按照下面的示意图进行连接,并首先制作了一个面包板版本。
我用我的Arduino 作为 ISP 编程器对 attiny85 进行了编程,只需将 attiny85 放在 IC 插座上并刷新 MCU。
电路板设计
在完成面包板版本后,我开始在我的 PCB 设计套件中制作原理图,它是这样的 -
该原理图由一个与 CR2032 电池连接的 Attiny85 组成,两个并联的 LED 连接到引脚 D2,一个蜂鸣器添加到引脚 D0。(蜂鸣器引脚必须是 PWM 引脚)
CR2032 和 Attiny85 之间也有一个开关。
完成原理图后,我继续进行电路板的设计部分。
我首先在谷歌上搜索 R2D2 2D 图像并选择了这个,它很小,即使转换为黑白 BMP 后看起来也不错。
我必须将此图像转换为 BMP 图像,因为我的 OrCad PCB Suite 仅从 BMP 格式导入图像。
转换图像后,我将其作为丝印 TOP 层导入,并围绕该图像准备电路板。
我将 Attiny85 和 LED 放在顶部,并从底部添加剩余的 THT 组件。
我还在铜层和 FR4 上添加了一些阻焊层开口,以增加电路板的美感。(让它看起来很棒)
完成设计后,我在PCBWAY的报价页面上传了Gerber数据,我选择了蓝色的阻焊颜色并下了订单。
我选择蓝色阻焊层,因为 R2D2 是蓝色和银色,白色丝印将取代银色。
下单后一周就收到了PCB,PCB质量非常好。
真的很喜欢最终的结果。
您可以从这里查看 PCBWAY - www.pcbway.com
印刷电路板组装
将 PCB 拆箱后,我开始了具有以下步骤的组装过程。
焊膏点胶
第一步是将焊膏涂到每个元件焊盘上。
我使用了熔化温度为140 至 270 °C的普通 Sn-Pb 焊膏。
拾放过程
然后,我使用 ESD Tweeaser 仔细挑选每个组件并将其一个接一个地放置在指定的位置上,这花了大约 30 秒的时间,但结果是一个完美的 PCB,所有组件都放置在它们的位置上。
热板回流焊
在“PICK & Place Process”之后,我小心地提起整个电路板并将其放在我的DIY SMT Hotplate上,它也是自制的,就像这个项目一样。
几分钟后,当加热板达到焊膏熔化温度时,所有组件都将通过这种热回流焊工艺进行焊接。
然后,我们从加热板上取下 PCB 以冷却所有组件和电路板表面。
添加 THT 组件
在回流焊工艺之后,我们添加了剩余的 THT 组件,即纽扣电池座、蜂鸣器和带有烙铁的滑动开关。
添加 THT 组件后,我们的电路就完成了。
电路已完成,但要使其正常工作,我们必须将草图烧录到 Attiny85 MCU 中。
/***************************************************
Project R2D2 Sound Generator
To all fans of StarWars and Arduino!
Written by Marcelo Larios BSD license, all text above must be included in any redistribution ****************************************************/ #define speakerPin 0 #define ledPin 2 void setup() { pinMode(speakerPin, OUTPUT); pinMode(ledPin, OUTPUT); randomSeed(analogRead(0)); } void phrase1() { int k = random(1000,2000); digitalWrite(ledPin, HIGH); for (int i = 0; i <= random(100,2000); i++){ tone(speakerPin, k+(-i*2)); delay(random(.9,2)); } digitalWrite(ledPin, LOW); for (int i = 0; i <= random(100,1000); i++){ tone(speakerPin, k + (i * 10)); delay(random(.9,2)); } } void phrase2() { int k = random(1000,2000); digitalWrite(ledPin, HIGH); for (int i = 0; i <= random(100,2000); i++){ tone(speakerPin, k+(i*2)); delay(random(.9,2)); } digitalWrite(ledPin, LOW); for (int i = 0; i <= random(100,1000); i++){ tone(speakerPin, k + (-i * 10)); delay(random(.9,2)); } } void loop() { int K = 2000; switch (random(1,7)) { case 1:phrase1(); break; case 2:phrase2(); break; case 3:phrase1(); phrase2(); break; case 4:phrase1(); phrase2(); phrase1();break; case 5:phrase1(); phrase2(); phrase1(); phrase2(); phrase1();break; case 6:phrase2(); phrase1(); phrase2(); break; } for (int i = 0; i <= random(3, 9); i++){ digitalWrite(ledPin, HIGH); tone(speakerPin, K + random(-1700, 2000)); delay(random(70, 170)); digitalWrite(ledPin, LOW); noTone(speakerPin); delay(random(0, 30)); } noTone(speakerPin); delay(random(2000, 4000)); //(1000, 2000) }
这是我在这个项目中使用的代码,它是由Marcelo Larios 制作的,它基本上是一个生成两个短语的随机声音生成器。
至于编程 ATtiny85,我使用了一个 SOIC8 Clip,它作为 ISP 编程器与我的 DIY Arduino 相连。这是我为通过 Arduino 作为 ISP 闪存任何 AVR MCU 所做的设置。
您可以从此处详细查看此过程 - https://www.hackster.io/Arnov_Sharma_makes/multiple-attiny85-13a-programmer-84adf8
但让我用简短的要点解释如何对 Attiny85 进行编程。
为了给这个设置供电,我使用了一个 CR2032 纽扣电池,然后将其放在纽扣电池座上,然后转动滑动开关。
这样做会打开 R2D2 并开始其蜂鸣声序列。
这是此构建的最终结果!
感谢您阅读整篇文章,真的很感激。
如果您需要有关此项目的任何帮助,请发表评论或私信我,我很快就会带着新项目回来。
和平
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !