所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

“长征历史”智能宣讲机

怀若谷 怀若谷 2021-07-02 21:52:47
6
2
简单

前 言

       今年7月1日,是党的百年华诞。为此,我国举行了一系列庆祝活动。其中,开展时间最长的是党史学习教育活动,将贯穿全年。前一段时间,我制作了一个党史知识答题机(“同学,请听题”),很荣幸地被《爱上机器人》杂志录用。

        这次DF举办线上活动,又激起了我的创作欲望。在党史学习中,我印象最深的是红军长征的那段历史,也许是因为小时候就从课本上读到过那一个个催人泪下的故事——《飞夺泸定桥》、《金色的鱼钩》、《丰碑》、《一袋干粮》......

       于是,我开始着手制作一个关于长征历史的智能宣讲机。其间,遇到了不少困难和失败。更换了几次主控板,放弃了一些预设的功能......在坚持不懈的努力下,作品于7月1日完工了,算是我为党的百年华诞的献上的一份礼物吧!

        长征永远在路上!

 

projectImage

功 能 介 绍

(1)诗歌欣赏——按下对应按钮后,会播放《七律·长征》朗诵音频,上面的画卷会随之转动,展现一幅幅长征主题版画*。

*因时间及技术等因素,成品的画卷中只有3幅画,预设是10幅左右。预想的《七律·长征》书法作品也因为激光切割机加工尺寸不够而放弃。

(2)长征概述——按下对应按钮后,会播放长征介绍音频,一颗颗LED灯会随之亮起,指示出红军长征的行进路线。

(3)了解事件——按下对应按钮后,会提示:请说出你想了解的事件;当识别到某个事件名称后,会亮起该事件发生的地点的指示灯(其他的灯会自动熄灭),并播放介绍该事件的音频。

 

 

演 示 视 频

材料清单 材料清单
1x
DFRduino Uno R3
1x
IO扩展板
1x
语音识别模块
1x
串口MP3模块
3x
数字按钮模块
2x
360°舵机
1x
小音箱
projectImage

其他材料

(1)小滚动轴承 (2)油画布 (3)椴木板 (4)螺丝螺母 (5)合页  (6)小木棒

 

制 作 过 程

步骤1 步骤1
硬件搭建
projectImage

先将扩展板安装主控板上,然后将各个电子模块连接到扩展板上,连接图如图3所示。

语音识别模块——IIC专用引脚

WS2812灯带——引脚4

360°舵机——引脚8、9

数字按钮模块——引脚A1、A2、A3

串口MP3模块——引脚2、3

小音箱——串口MP3模块

步骤2 步骤2
编写程序

1. 打开编程软件MIND+ v1.7.0,以“上传模式”运行,如下图所示

projectImage

2. 分别加载主控板和各电子模块的扩展积木模块,如下图所示

projectImage

3. 根据预设功能编写程序,完整程序下图所示(源程序见附件)

projectImage
步骤3 步骤3
结构设计、加工

1. 设计思路:

      考虑到手上的激光切割机加工范围为40cm*60cm,而预设的尺寸较大、内部构件较多,只能采取分体设计、分部分切割再组装的方式完成。

2.使用激光建模软件LaserMaker 进行结构及外型的图纸绘制

projectImage

3.使用激光切割机进行加工

projectImage
步骤4 步骤4
组装

1.将电子模块安装到木板件的预设位置

projectImage

2.将电子模块重新连接到主控板及扩展板上

projectImage

3.将下面的盒体组装起来

projectImage

4.安装滚动轴承,组装上面的部分盒体

projectImage

5.拼装、制作画轴,并固定到面板上

projectImage

6.拼装转轴,并固定在合适的位置

projectImage

7.将画布固定在转轴上

projectImage

8.装上上面盒体的背板,使用合页与下面的盒体连接在一起

projectImage

成 品 图 赏

projectImage

折叠状态

projectImage

展开状态

projectImage

上部特写

projectImage

下部特写

projectImage

灯全亮状态

代码 代码
	                    					/*!
 * MindPlus
 * uno
 *
 */
#include <SimpleList.h>
#include<DFRobot_ASR.h>
#include <SoftwareSerial.h>
#include <DFRobot_NeoPixel.h>
#include <DFRobot_SerialMp3.h>
#include <DFRobot_Libraries.h>

// 动态变量
volatile float     mind_n_xzkz, mind_n_b, mind_n_order, mind_n_index, mind_n_a;
SimpleList<String> mind_l_DengHao;
// 函数声明
void DF_YiCiLiangDeng();
// 创建对象
DFRobot_SerialMp3 serialMp3;
SoftwareSerial    softSerialserialMp3(2, 3);
DFRobot_NeoPixel  neoPixel_4;
DFRobot_ASR       asr;
DFRobot_Servo360  servo360_8;
DFRobot_Servo360  servo360_9;


// 主程序开始
void setup() {
	asr.begin(LOOP,MIC);
	asr.addCommand("xiang jiang",2);
	asr.addCommand("zui yi",3);
	asr.addCommand("chi shui",4);
	asr.addCommand("jin sha",5);
	asr.addCommand("du he",6);
	asr.addCommand("lu ding",7);
	asr.addCommand("xue shan",8);
	asr.addCommand("mao gong",9);
	asr.addCommand("cao di",10);
	asr.addCommand("la zi kou",11);
	asr.addCommand("da hui shi",12);
	asr.start();
	servo360_8.attach(8);
	servo360_9.attach(9);
	mind_l_DengHao.push_back("57");
	mind_l_DengHao.push_back("49");
	mind_l_DengHao.push_back("40");
	mind_l_DengHao.push_back("33");
	mind_l_DengHao.push_back("37");
	mind_l_DengHao.push_back("26");
	mind_l_DengHao.push_back("24");
	mind_l_DengHao.push_back("21");
	mind_l_DengHao.push_back("18");
	mind_l_DengHao.push_back("16");
	mind_l_DengHao.push_back("12");
	mind_l_DengHao.push_back("8");
	mind_l_DengHao.push_back("1");
	serialMp3.begin(&softSerialserialMp3);
	serialMp3.volume(100);
	delay(1000);
	neoPixel_4.begin(4, 58);
	neoPixel_4.setBrightness(50);
	neoPixel_4.clear();
	mind_n_xzkz = 0;
	mind_n_b = 0;
}
void loop() {
	if (digitalRead(A1)) {
		while (!(!digitalRead(A1))) {}
		serialMp3.playList(1);
		if ((mind_n_b==0)) {
			servo360_8.speed(10);
			servo360_9.speed(80);
			delay(13000);
			servo360_8.speed(0);
			servo360_9.speed(0);
			mind_n_b = 1;
		}
		else {
			servo360_8.speed(-80);
			servo360_9.speed(-10);
			delay(15000);
			servo360_8.speed(0);
			servo360_9.speed(0);
			mind_n_b = 0;
		}
		delay(50000);
	}
	if (digitalRead(A2)) {
		while (!(!digitalRead(A2))) {}
		serialMp3.playList(2);
		DF_YiCiLiangDeng();
		delay(10000);
	}
	if (digitalRead(A3)) {
		while (!(!digitalRead(A3))) {}
		serialMp3.playList(3);
	}
	mind_n_order = (asr.read());
	mind_n_index = 1;
	for (int index = 0; index < mind_l_DengHao.size(); index++) {
		if ((mind_n_order==mind_n_index)) {
			mind_n_a = (String(mind_l_DengHao[mind_n_index-1]).toInt());
			neoPixel_4.clear();
			neoPixel_4.setRangeColor(mind_n_a, mind_n_a, 0x0000FF);
			serialMp3.playList((mind_n_order + 2));
			delay(5000);
		}
		mind_n_index += 1;
	}
	mind_n_order = -1;
}


// 自定义函数
void DF_YiCiLiangDeng() {
	neoPixel_4.clear();
	delay(2000);
	mind_n_index = 1;
	for (int index = 0; index < mind_l_DengHao.size(); index++) {
		mind_n_a = (String(mind_l_DengHao[mind_n_index-1]).toInt());
		neoPixel_4.setRangeColor(mind_n_a, mind_n_a, 0x0000FF);
		delay(1000);
		mind_n_index += 1;
	}
}

	                    				
Makelog作者原创文章,未经授权禁止转载。
6
2
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
[[c.comment_content]]