站内搜索
更多
minecraft信标蓝牙音箱-智能硬件挑战赛
专业版

minecraft信标蓝牙音箱-智能硬件挑战赛

简介

基于天问asrpro核心板和hm-m18的蓝牙音响,音质一般,相当于拼好响,但是当个可以声控灯光的摆件还是不错的

简介:基于天问asrpro核心板和hm-m18的蓝牙音响,音质一般,相当于拼好响,但是当个可以声控灯光的摆件还是不错的
智能硬件挑战赛

开源协议

GPL 3.0

创建时间:2025-12-03 09:00:17更新时间:2025-12-24 10:24:12

描述

灵感来源:

【[DIY]能语音控制的全彩氛围灯·蓝牙音箱·夜光·信标!【ACG_Create第五期】】

这位up主是直接飞线把各个模块接起来之后塞到底座里面,然后再用额外的下载器烧录程序,本项目对此进行了一些改进:

1.设计了pcb板,使用asrpro控制背板上3颗WS2812发出不同颜色光。

2.pcb上自带串口转typec电路以及天问asrpro的手动复位烧录电路,焊好板子后无需购买额外的下载器,直接使用数据线连接电脑下载即可。

3.增大了音箱的尺寸,整体的尺寸为150 x 150 x 150mm

4.亚克力底板,底座合板,底座之间使用m3平头螺丝与螺母联接,四角加装防撞垫。

!!!务必要注意!!!

虽然整体都是正方形设计,但是电路板,黑色底座,底座合板,以及亚克力底板上开的螺丝孔洞并不是正方形对称设计,而是长方形,就是说有一边长有一边短,在3d打印或者pcb打样的时候请务必确认好,有必要可以自己重新设计!!

项目简介

使用天问asrpro作为主控,控制背板的3颗ws2812进行发光,hm-m18蓝牙模块接收音乐信息,通过pam8406dr功放后从喇叭输出,共有三个喇叭和一个mic,包括输出的左右声道和asrpro的spk和mic,注意!!本项目开发时基于手头现有的1.25接口喇叭和mic,如果有其他接口的需要,请在立创eda中自行重新更换接口端子

项目功能

1.语音控制灯光切换颜色或彩灯;
2.连接蓝牙播放音乐;

原理解析(硬件说明)

1--电源电路:
采用TYPE-C-16P接口作为供电接口,在CC1和CC2引脚处加入5.1K下拉电阻,便于不同主机识别和配置,在没有typec供电的时候,使用5v可充电锂电池供电,加入二极管防止反向电压破坏电池。!!注意!!滤波电容前面的两个xh2.54贴片立贴母座,CN7为电池接口,CN6为自锁开关接口,我这里把一个自锁开关焊接到2.54端口线上作为飞线开关。5v供电正常时,LED1亮起。5v随后通过ldo芯片转为3.3v供给ch340c芯片。
image.png

2--主控与复位烧录电路:
使用天问asrpro-core作为主控,该型号在烧录时需要给asrpro的供电在短时间内重启一次(天问官网有详细的教程),这里使用AO3041作为复位核心,自复位开关按键按下时,三极管截止,asrpro的5v供电断开,板上其他模块的电压供电不变,松开按键恢复上电,实现烧录
image.png

3--灯光电路:
使用3颗级联的ws2812-5050(50mmx50mm封装),焊接在背板,通过黑色底座的上的开孔,将灯光投射给匀光碗

image.png

4.蓝牙与功放电路
使用hm-m18蓝牙模块和pam8406dr功放,m18的key引脚连接到asrpro以实现控制,静音脚不连接,这部分基本是抄手册,没有什么重点

image.png

image.png

软件代码

image.png
使用天问block开发,可以直接烧录的固件已发在附件中,,代码源文件也在附件中,使用了"newS2812.h"库来方便的更改灯光颜色,编程非常简单,大家有兴趣可以自行设置语音指令以及回复的声音,自由度很高,上手很简单

注意!使用我的固件烧录出来直接就是曼波的语音,如果自己重新编译再烧录的话是程序中的默认语音,但是换语音很简单,请大家自行去天问51的论坛上学习,评论区就不回复类似问题了。

#define N_PIXELS 1
#include "asr.h"
extern "C"{ void * __dso_handle = 0 ;}
#include "setup.h"
#include "newS2812.h"


uint32_t snid;
WS2812 ws2812 = WS2812(6,3,255);//初始化3个ws2812在PA_6端口
uint8_t rainbows = 1;
uint8_t var;

void rainbow(){
	randomSeed(millis());
	while(rainbows == 1){
	  ws2812.rainbow(10);//修改这个函数调用以修改ID91效果
	}
	ws2812.clear();
	vTaskDelete(NULL);
}

  void welcome(){
  ws2812.pixel_set_all_color(255,0,0);
  ws2812.pixel_show();
  delay(300);
  ws2812.pixel_set_all_color(0,255,0);
  ws2812.pixel_show();
  delay(300);
  ws2812.pixel_set_all_color(0,0,255);
  ws2812.pixel_show();
  delay(300);
  ws2812.pixel_set_all_color(0,0,0);
  ws2812.pixel_show();
    //上电欢迎,RGB闪一次 
  }

void ASR_CODE();

//{speak:小蝶-清新女声,vol:10,speed:10,platform:haohaodada}
//{playid:10001,voice:}
//10001欢迎语音
//{playid:10002,voice:}
//10002退出语音

void ASR_CODE(){
    set_state_enter_wakeup(120000);
  //case后面的是语音识别的ID 
  switch (snid) {

    case 0:
        ws2812.pixel_set_all_color(255,255,255);
        ws2812.pixel_show();
        delay(300);
        ws2812.pixel_set_all_color(0,0,0);
        ws2812.pixel_show();
        delay(300);
        ws2812.pixel_set_all_color(255,255,255);
        ws2812.pixel_show();
        delay(300);
        ws2812.pixel_set_all_color(0,0,0);
        ws2812.pixel_show();
    break;

    case 1:
        ws2812.pixel_set_all_color(0,255,255);
        ws2812.pixel_show();
    break;

    case 2:
        rainbows = 0;
        ws2812.pixel_set_all_color(0,0,0);
        ws2812.pixel_show();       
    break;

    case 3:
      digitalWrite(3,1);
      delay(500);
      digitalWrite(3,0);
      delay(500);
      digitalWrite(3,1);
      ws2812.pixel_set_all_color(255,0,0);
      ws2812.pixel_show();
      delay(400);
      ws2812.pixel_set_all_color(0,0,255);
      ws2812.pixel_show();
      delay(800);
      ws2812.pixel_set_all_color(0,0,0);
      ws2812.pixel_show();
    break;
    
    case 4:
      digitalWrite(3,1);//上电默认蓝牙为关
      delay(500);
      digitalWrite(3,0);
      delay(500);
      digitalWrite(3,1);
      ws2812.pixel_set_all_color(0,0,255);
      ws2812.pixel_show();
      delay(400);
      ws2812.pixel_set_all_color(255,0,0);
      ws2812.pixel_show();
      delay(800);
      ws2812.pixel_set_all_color(0,0,0);
      ws2812.pixel_show();
    break;
    

    case 5:
      ws2812.pixel_set_all_color(255,0,0);
      ws2812.pixel_show();
    break;

    case 6:
      ws2812.pixel_set_all_color(0,255,0);
      ws2812.pixel_show();    
    break;

    case 7:
      ws2812.pixel_set_all_color(0,0,255);
      ws2812.pixel_show();    
    break;


    case 8:
      ws2812.pixel_set_all_color(0,255,255);
      ws2812.pixel_show();    
    break;

    case 9:
      ws2812.pixel_set_all_color(255,0,255);
      ws2812.pixel_show();    
    break;

    case 10:
      ws2812.pixel_set_all_color(255,100,0);
      ws2812.pixel_show();    
    break;

    case 11:
      ws2812.pixel_set_all_color(255,255,0);
      ws2812.pixel_show();    
    break;

    case 12:
      ws2812.pixel_set_all_color(255,255,255);
      ws2812.pixel_show();
    break;

    case 13:

      ws2812.pixel_set_all_color(random(0,255),random(0,255),random(0,255));
      ws2812.pixel_show(); 
    break;
    
    case 14:
      rainbows = 1;
      xTaskCreate(rainbow,"rainbow",128,NULL,4,NULL);
    break;

    case 15:
      rainbows = 0;
    break;

    case 16:
      ws2812.demo_11(65); 
    break;
  }

}

void hardware_init(){
  vol_set(1);
  setPinFun(3,FIRST_FUNCTION);
  pinMode(3,output);
  vTaskDelete(NULL);
  welcome();
}

void setup()
{
  //{ID:0,keyword:"唤醒词",ASR:"信标",ASRTO:"干嘛"}

  //{ID:1,keyword:"命令词",ASR:"打开灯光",ASRTO:"好"}
  //{ID:2,keyword:"命令词",ASR:"关闭灯光",ASRTO:"好"}
  //{ID:3,keyword:"命令词",ASR:"打开蓝牙",ASRTO:"好"}
  //{ID:4,keyword:"命令词",ASR:"关闭蓝牙",ASRTO:"好"}


  //{ID:5,keyword:"命令词",ASR:"红色",ASRTO:"行"}
  //{ID:6,keyword:"命令词",ASR:"绿色",ASRTO:"行"}
  //{ID:7,keyword:"命令词",ASR:"蓝色",ASRTO:"行"}
  //{ID:8,keyword:"命令词",ASR:"青色",ASRTO:"行"}
  //{ID:9,keyword:"命令词",ASR:"紫色",ASRTO:"行"}
  //{ID:10,keyword:"命令词",ASR:"橙色",ASRTO:"行"}
  //{ID:11,keyword:"命令词",ASR:"黄色",ASRTO:"行"}
  //{ID:12,keyword:"命令词",ASR:"白色",ASRTO:"行"}
  //{ID:13,keyword:"命令词",ASR:"随机颜色",ASRTO:"行"}

  //{ID:14,keyword:"命令词",ASR:"打开彩灯",ASRTO:"哦耶"}
  //{ID:15,keyword:"命令词",ASR:"关闭彩灯",ASRTO:"哦耶"}
  //{ID:16,keyword:"命令词",ASR:"打开呼吸灯",ASRTO:"哦耶"}
}

注意事项

外壳的亚克力板如工程中的文件所示,厚度3mm,可以去淘宝上定制,我这边的价格是6片12元,定制之前请在立创eda中仔细检查每边的长度和宽度,想明白了怎么拼成一个150mm的立方体再去定制

image.png

亚克力之间使用亚克力无影胶进行粘接,然后使用10mm宽的蓝色荧光胶带贴在边上来构成游戏中的玻璃质感,注意一定要买蓝色的胶带,这样有光时看起来是白色的,其他颜色的荧光胶带日光下会显示偏黄偏绿或者其他颜色

!!!注意,不要超级拼装上头了直接把六片全拼起来了,要留着底板和底座,用螺丝链接,最后再贴底边的胶带!!不然你会得到一个玻璃块而不是信标!别问为什么有这条提示!!

匀光碗和黑色底座的连接使用黑色双面胶粘接即可,我买的是3mm黑色双面胶,不拿近了仔细看看不出来,效果比较美观

虽然整体都是正方形设计,但是电路板,黑色底座,底座合板,以及亚克力底板上开的螺丝孔洞并不是正方形对称设计,而是长方形,就是说有一边长有一边短,在3d打印或者pcb打样的时候请务必确认好,有必要可以自己重新设计!!

组装流程

过程忘记拍照了,只有很简单的几张照片,组装有问题请发在评论区吧,看到了就回复

aa4e4da25f82cf00fb4df56312ca339a.jpg

实物图

详细的演示请看演示视频

八个角我加装了T型防撞角,更加稳固安全,当然也可以不装,去淘宝上直接搜“T型防撞角”就能搜到。
微信图片_20251224083714_58_9.jpg
抽风图
7700b2360464a1e6c547c697fc58b13c.jpg

附件中的压缩包工程文件不需要下载,仅作评奖依据
3d打印部件为自行打印,无链接,文件请见附件

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
1
匀光碗.stl
19
2
黑色底座.stl
10
3
底座合板.stl
10

附件

序号文件名称下载次数
1
fw.bin
17
2
VID_20251223_221454_2.mp4
16
3
asrpro.hd
18
4
minecraft信标蓝牙音箱_PCB1_20251216_152758.zip
19
5
9739438A_Y13.zip
18
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航