0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Microchip 8位微控制器制作超级马里奥的蘑菇徽章

jf_zGNBEhbi 来源:趣无尽 2023-09-11 10:16 次阅读

MAKER:Arnov Sharma/译:趣无尽

今天给大家带来一期致敬经典的超级马里奥的徽章。可爱的蘑菇徽章,经典的红黄配色,立马把我们拉回到儿时的快乐的时光里(不小心暴露了年龄)。

这款可穿戴徽章由定制的 PCB 构成,采用 SOIC8 封装的 Attiny85 供电,添加了三个 WS2812B LED 灯可以使蘑菇徽章闪闪发光。你可以把它佩戴在身上也可以别在书包上。

制作过程很简单,喜欢的创客可以动手试试看!

组件清单

定制 PCB × 1
Attiny85 × 1
WS2812B LED 灯 × 3
1uf 0805 电容 × 1
胸针 × 1
SMD 纽扣电池座 × 1
CR2032 电池 × 1
SOIC8 烧写夹 × 1

项目介绍

该徽章基于 Microchip 8 位的低功耗微控制器,同时结合了 8 KB ISP 闪存、512B EEPROM、512B SRAM和六条通用 I/O 线,由 Attiny85 供电。

它是一个功能强大的小型 MCU,可以缩小整个设置实现很多基于 Arduino 的项目。更多的数据资料可点击查看,https://www.microchip.com/en-us/product/ATtiny85。

我采用 CR2032 纽扣电池来供电,它可以为系统提供 3V 电压。其中,三个 WS2812B LED 灯,每个 LED 灯消耗 50mA,总共 150mA,CR2032 的容量为 210mAh,所以可以提供 1 小时以上的备份。

WS2812B LED 灯的数据资料可点击查看

PCB 板的创建过程

1、如图所示,我需要设计一个蘑菇形状的 PCB 板,将图形导入到 PCB Cad 软件。我选择黑白图像并将其作为 PCB 层导入。

2、如图所示,Attiny85 可以控制 Din Dout Config 并完成连接的三个 WS2812B LED 灯的所有工作。

第一个像素的 Dout 连接至第二个像素的 Din,第二个像素的 Dout 连接至第三个像素的 Din,然后再用第一个像素的 Din 提供一个信号来控制这三个像素。

每个LED 灯都有 1uf 的电容器,然后用一个开关连接到 Attiny85 的 D4。最后,将纽扣电池装入至电池仓供电。

3、设计 PCB 板
dcd9b57a-5047-11ee-a25d-92fbcf53809c.jpg

首先导入了蘑菇图像并将其用作 PCB 的轮廓,其中一些细节k可用于制作阻焊层。

所有组件都是 SMD,将它们放在背面,再将 LED 灯放置在圆形区域。在圆形区域我添加了一个阻焊层的开口,可以从顶部可以看到 LED 灯的余光。

这些 WS2812B LED 灯采取倒置的自定义封装,所以要将 LED 倒置焊接。

4、PCB 打样

在最后一次检查完电路板后,我将 Gerber 数据发送到 PCBWAY 以获取样品。我选择的材料是带有白色丝印的红色阻焊层。

我在两侧的阻焊层上预留了开口,这样就可以从顶部可以看到底部的LED 灯。

5、组装 PCB 板
组装 PCB 板主要有以下几个步骤:

a、锡膏点胶工艺
在每个元件焊盘上逐个添加焊膏。我使用的是带宽注射器的焊膏分配针,焊膏是由 63% 锡和 37% 铅组成的普通焊膏。

b、拾取和放置过程
使用镊子将每个组件放置在适当的位置,要小心地处理每一个元件。

c、热板回流
放置好元件后,将整个电路板放到我自制的热板回流焊板上进行焊接。完成后,请将其放置冷却。

d、安装 LED 灯
由于 PCB 板没有任何通孔组件,需要在焊盘上焊接电线,然后再将 LED 灯与它连接起来。焊接过程中尽量快一点,因为 LED 焊盘过热可能会引起外壳熔化。最后,完成三个 LED 灯的焊接。

安装 Attiny85

1、刷机过程中不能通过 USB 直接对 ATTINY85 进行编程,我采用 ISP 闪存的方法,通过 attiny85 的 SPI 引脚烧录引导加载程序,然后再烧录。

为了将 Attiny 与程序连接起来,我使用 SOIC8 烧写夹,直接将 Attiny 连接到该夹子上。

2、请在 Arduino IDE 中下载并安装 Attiny85 Core 文件,https://github.com/SpenceKonde/ATTinyCore 。

文件->首选项 PC 或者 Arduino->首选项 Mac,在 “Additional Boards Manager URLs” 中输入https://github.com/SpenceKonde/ATTinyCore 。

工具->主板->主板管理器,如果使用 1.6.6 版本,请关闭板子管理器并重新打开它。
选择”ATTinyCore by Spence Konde”,然后单击安装。

3、设置 AVR 芯片。AVR 芯片通常是空白的,它需要设置与 Arduino IDE 兼容性,所以需要编程 AVR 程序,例如 USBASP。这里有一个非常简单的方法,你可以使用 Arduino Uno 或 Nano 板制作自己的 AVR 编程器。

将 Arduino 板与 com 端口连接并选择以下 sketch:
Example->在 ArduinoISP 中将 sketch 上传至主板。进入工具菜单并在程序部分选择 Arduino 作为 ISP 选项。点亮 Attiny85 后,在 Board 部分选择 Attiny85。

编程过程会使用到 VCC、GND 和四个数据引脚。三个引脚分别连接到 MISO、MOSI 和 SCK 来实现目标,第四个引脚起到复位的作用。

4、用线将 Attiny85 与 Arduino 连接起来。
注意在将 ISP Sketch 上传到 Arduino 之后,需要在 Arduino 的 Reset 和 GND 引脚之间添加一个 10uf 的电容。

我没有使用 Arduino 和面包板来完成这项工作,而是使用我自制的用 Attiny 或 Atmega MCU 制作的 DIY Attiny Programmer。

具体详情可点击查看,https://www.instructables.com/Multiple-ATtiny8513A-Programmer/。

在以上接线配置中将主板连接到 Arduino 作为 ISP 设置。
选择正确的端口、正确的编程器(Arduino 作为 ISP),然后点击 Burn Bootloader。
等待几秒钟,你将完成烧录引导程序的消息。

打开要上传到这个 AttinyGo 的 Sketch,然后到 Sketch 菜单并选择上传程序。
最后 Sketch 会上传到 attiny85。

编码

dd15cf88-5047-11ee-a25d-92fbcf53809c.jpg

编码是 Neopixel buttoncycler sketch,当按下连接到 attiny D4 的按钮时,就会改变 neopixels 的颜色和动画。

#include 


#define BUTTON_PIN   4    // Digital IO pin connected to the button.  This will be
                          // driven with a pull-up resistor so the switch should
                          // pull the pin to ground momentarily.  On a high -> low
                          // transition the button press logic will execute.


#define PIXEL_PIN    0    // Digital IO pin connected to the NeoPixels.


#define PIXEL_COUNT 3


// Parameter 1 = number of pixels in strip,  neopixel stick has 8
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_RGB     Pixels are wired for RGB bitstream
//   NEO_GRB     Pixels are wired for GRB bitstream, correct for neopixel stick
//   NEO_KHZ400  400 KHz bitstream (e.g. FLORA pixels)
//   NEO_KHZ800  800 KHz bitstream (e.g. High Density LED strip), correct for neopixel stick
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);


bool oldState = HIGH;
int showType = 0;


void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
}


void loop() {
  // Get current button state.
  bool newState = digitalRead(BUTTON_PIN);


  // Check if state changed from high to low (button press).
  if (newState == LOW && oldState == HIGH) {
    // Short delay to debounce button.
    delay(20);
    // Check if button is still low after debounce.
    newState = digitalRead(BUTTON_PIN);
    if (newState == LOW) {
      showType++;
      if (showType > 9)
        showType=0;
      startShow(showType);
    }
  }


  // Set the last button state to the old state.
  oldState = newState;
}


void startShow(int i) {
  switch(i){
    case 0: colorWipe(strip.Color(0, 0, 0), 50);    // Black/off
            break;
    case 1: colorWipe(strip.Color(255, 0, 0), 50);  // Red
            break;
    case 2: colorWipe(strip.Color(0, 255, 0), 50);  // Green
            break;
    case 3: colorWipe(strip.Color(0, 0, 255), 50);  // Blue
            break;
    case 4: theaterChase(strip.Color(127, 127, 127), 50); // White
            break;
    case 5: theaterChase(strip.Color(127,   0,   0), 50); // Red
            break;
    case 6: theaterChase(strip.Color(  0,   0, 127), 50); // Blue
            break;
    case 7: rainbow(20);
            break;
    case 8: rainbowCycle(20);
            break;
    case 9: theaterChaseRainbow(50);
            break;
  }
}


// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i

最后,安装好 CR2032 纽扣电池,这枚可爱的蘑菇徽章就可以闪光了。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6812

    浏览量

    147648
  • pcb
    pcb
    +关注

    关注

    4222

    文章

    22475

    浏览量

    385872
  • led灯
    +关注

    关注

    22

    文章

    1554

    浏览量

    107032
  • microchip
    +关注

    关注

    52

    文章

    1456

    浏览量

    116840

原文标题:简单有趣,DIY 超级马里奥的蘑菇徽章

文章出处:【微信号:趣无尽,微信公众号:趣无尽】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于ESP32制造有趣的超级马里奥主题时钟

    这是一款超级马里奥主题的时钟,基于 ESP32 和彩色点阵制造,非常生动有趣。使用 ESP32 来控制 LED 矩阵。对于没法自制 PCB 板的新手来说 ESP32 开发板是非常不错的选择。如何利用好板子取决于你拍线的能力。
    的头像 发表于 10-28 11:54 3258次阅读
    基于ESP32制造有趣的<b class='flag-5'>超级</b><b class='flag-5'>马里奥</b>主题时钟

    用labview设计超级马里奥游戏时如何加障碍物?

    用labview设计超级马里奥游戏时如何加障碍物
    发表于 05-09 13:33

    在哪里可以从Microchip网站找到中微控制器

    我在哪里可以从Microchip网站找到中微微控制器?当我在8MCU下搜索“中档”系列时,它们都会出现新的流行微控制器,我不需要新的
    发表于 11-09 15:45

    ATXMEGA128A4U-AU港定ATMEL原厂原装8MCU微控制器

    `ATXMEGA128A4U-AU港定ATMEL原厂原装8MCU微控制器ATXMEGA128A4U-AU Microchip Technology / ATMEL Corporati
    发表于 11-29 16:46

    详解8微控制器芯片

    微控制器到现在普遍采用哈佛总线结构的RISC微控制器微控制器取得了飞速的发展[1]。   8微控制器
    发表于 06-24 07:35

    微控制器的发展趋势

    对于选择微控制器进行设计的系统设计师来说,可获得的大量的不同型号的MCU会让选型工作变得复杂。SiliconLabs已经发布了工作电压低至0.9V的一款8MCU,德州仪器有许多款针对16
    发表于 07-24 06:19

    fpga通过什么实现逻辑功能

    fpga通过什么实现逻辑功能,以超级马里奥为例子讲述FPGA有些制作。1、FPGA游戏目标没有CPU,单纯用 FPGA 的verilog硬件语言来实现一个游戏,而这个游戏还得符合老师要求,由于没有
    发表于 07-22 07:07

    用于Microchip 8PIC的原型板

    描述原型板 - 28 针 PIC用于 Microchip 8 PIC 的原型板?微控制器采用 28 引脚 DIP 封装。
    发表于 09-07 07:57

    iPhone7发布会上提到的游戏 马里奥大叔15日可以在iOS平台试玩了!

    App Store了。这款名为《超级马里奥Run》的游戏是一款跑酷游戏,该游戏将于下月15日正式登陆App Store,售价9.99美元。
    发表于 11-16 11:14 768次阅读

    超级马里奥Run安卓版即将上市,国内玩家先别激动

    12 月 29 日,任天堂官方在国外社交网站推特上宣布,超级马里奥Run已经登录了Google Play 并开启预约注册,现在注册的用户,未来可以第一时间获知安卓版超级马里奥Run
    发表于 12-30 17:29 752次阅读

    利用视频游戏语料库,训练一个GAN模型为超级马里奥兄弟生成游戏级别

    在视频游戏中,马里奥游戏级别有不同的表征Level Corpus (VGLC) 和Mario AI 框架,这两种都是基于tile的表征形式。具体地说,以VGLC 表征的马里奥级别使用特定的字符符号
    的头像 发表于 07-25 17:59 3777次阅读
    利用视频游戏语料库,训练一个GAN模型为<b class='flag-5'>超级</b><b class='flag-5'>马里奥</b>兄弟生成游戏级别

    马里奥忠实粉丝称其自制的渲染图被超级任天堂世界官网盗用

    ,但它最近却被发现盗用了粉丝制作的渲染图。 推特用户“uJIdow”是一位马里奥的忠实粉丝,他致力于制作各种马里奥的渲染图。昨日(1.7),“uJIdow”发表推文表示,
    的头像 发表于 01-08 12:52 1668次阅读

    Labview编的超级马里奥8.0源码

    Labview编的超级马里奥8.0源码
    发表于 11-02 16:35 24次下载

    创建一个动画马里奥时钟的教程分享

    本文将指导您以非常简单的步骤创建一个动画马里奥时钟,它可以成为任何环境的复古装饰物。
    发表于 07-25 16:32 1533次阅读
    创建一个动画<b class='flag-5'>马里奥</b>时钟的教程分享

    带有压电蜂鸣器和Arduino的超级马里奥主题曲

    电子发烧友网站提供《带有压电蜂鸣器和Arduino的超级马里奥主题曲.zip》资料免费下载
    发表于 11-01 09:32 0次下载
    带有压电蜂鸣器和Arduino的<b class='flag-5'>超级</b><b class='flag-5'>马里奥</b>主题曲