找回密码
 中文实名注册
查看: 230|回复: 0

【科技创新】“长征历史”智能宣讲机

[复制链接]

695

主题

1083

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
22828
发表于 2021-8-25 08:42:28 | 显示全部楼层 |阅读模式
前 言       今年7月1日,是党的百年华诞。为此,我国举行了一系列庆祝活动。其中,开展时间最长的是党史学习教育活动,将贯穿全年。前一段时间,我制作了一个党史知识答题机(“同学,请听题”),很荣幸地被《爱上机器人》杂志录用。
        这次DF举办线上活动,又激起了我的创作欲望。在党史学习中,我印象最深的是红军长征的那段历史,也许是因为小时候就从课本上读到过那一个个催人泪下的故事——《飞夺泸定桥》、《金色的鱼钩》、《丰碑》、《一袋干粮》......
       于是,我开始着手制作一个关于长征历史的智能宣讲机。其间,遇到了不少困难和失败。更换了几次主控板,放弃了一些预设的功能......在坚持不懈的努力下,作品于7月1日完工了,算是我为党的百年华诞的献上的一份礼物吧!
        长征永远在路上!





功 能 介 绍(1)诗歌欣赏——按下对应按钮后,会播放《七律·长征》朗诵音频,上面的画卷会随之转动,展现一幅幅长征主题版画*。
*因时间及技术等因素,成品的画卷中只有3幅画,预设是10幅左右。预想的《七律·长征》书法作品也因为激光切割机加工尺寸不够而放弃。(2)长征概述——按下对应按钮后,会播放长征介绍音频,一颗颗LED灯会随之亮起,指示出红军长征的行进路线。
(3)了解事件——按下对应按钮后,会提示:请说出你想了解的事件;当识别到某个事件名称后,会亮起该事件发生的地点的指示灯(其他的灯会自动熄灭),并播放介绍该事件的音频。
材料清单材料清单
1x
DFRduino Uno R3
1x
IO扩展板
1x
语音识别模块
1x
串口MP3模块
3x
数字按钮模块
2x
360°舵机
1x
小音箱




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

制 作 过 程
步骤1步骤1
硬件搭建




先将扩展板安装主控板上,然后将各个电子模块连接到扩展板上,连接图如图3所示。
语音识别模块——IIC专用引脚
WS2812灯带——引脚4
360°舵机——引脚8、9
数字按钮模块——引脚A1、A2、A3
串口MP3模块——引脚2、3
小音箱——串口MP3模块

步骤2步骤2
编写程序

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




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

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

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

1. 设计思路:
      考虑到手上的激光切割机加工范围为40cm*60cm,而预设的尺寸较大、内部构件较多,只能采取分体设计、分部分切割再组装的方式完成。
2.使用激光建模软件LaserMaker 进行结构及外型的图纸绘制


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

步骤4步骤4
组装

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


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

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

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

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

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

7.将画布固定在转轴上

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


成 品 图 赏

折叠状态


展开状态


上部特写


下部特写




灯全亮状态
代码
[C++] 纯文本查看 复制代码
/*!
 * 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;
        }
}




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 中文实名注册

本版积分规则

小黑屋|东台市机器人学会 ( 苏ICP备2021035350号-1;苏ICP备2021035350号-2;苏ICP备2021035350号-3 )

GMT+8, 2024-5-5 07:30 , Processed in 0.044325 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表