admin 发表于 2021-8-25 08:42:28

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

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


https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/825b962b126f49ef44a70b9c064dce48.jpg?imageView2/2/w/1600


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


https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/fb94456933907506392f30661070f56e.jpg?imageView2/2/w/1600

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

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

https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/96ad0efe09f893df92dbcf8cfc0ba59b.jpg?imageView2/2/w/1600


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

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

https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/517043ea50a4f99887058a91a18d73ba.JPG?imageView2/2/w/1600


2. 分别加载主控板和各电子模块的扩展积木模块,如下图所示
https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/dbf4a23a50ebb70e3245b9be3e30c7c2.jpg?imageView2/2/w/1600
3. 根据预设功能编写程序,完整程序下图所示(源程序见附件)

https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/d4fd31a941d703da6ed0b795f5785e55.JPG?imageView2/2/w/1600步骤3步骤3
结构设计、加工

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

https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/98137aaf2a5df0d49008750fa1a44d35.jpg?imageView2/2/w/1600
3.使用激光切割机进行加工
https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/4749847166b157983a95cb1aebf0a2b1.JPG?imageView2/2/w/1600
步骤4步骤4
组装

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

https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/a14f20eb40bff6f1dac6495ec8c9b6a6.JPG?imageView2/2/w/1600
2.将电子模块重新连接到主控板及扩展板上
https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/8b446128f5ff275d6538de0415c3845f.jpg?imageView2/2/w/1600
3.将下面的盒体组装起来
https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/55ab6b4d7ad8dc6a7221cb49d11718db.JPG?imageView2/2/w/1600
4.安装滚动轴承,组装上面的部分盒体
https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/31f1581cd121fe8a75f682f61893840d.JPG?imageView2/2/w/1600
5.拼装、制作画轴,并固定到面板上
https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/81ed9cc3f015f0d73c751e780b2e41a5.JPG?imageView2/2/w/1600
6.拼装转轴,并固定在合适的位置
https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/c7df45e8509114a10b05eac58221971a.JPG?imageView2/2/w/1600
7.将画布固定在转轴上
https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/d9fb35af8bb4b25c72362fa1db6f24e0.jpg?imageView2/2/w/1600
8.装上上面盒体的背板,使用合页与下面的盒体连接在一起

https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/2b7ab19cf860b4932c0658386028e2ee.JPG?imageView2/2/w/1600
成 品 图 赏
https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/0ee2cb7eb5ec597ae986b121281e906c.jpg?imageView2/2/w/1600
折叠状态
https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/ff0ee07d973993b9807763c0657dfc7a.jpg?imageView2/2/w/1600
展开状态
https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/a74fe5602f7aa05fc0a0d0fe7b22d948.jpg?imageView2/2/w/1600
上部特写
https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/96b6516ab483dd47a232ed44739584a9.jpg?imageView2/2/w/1600
下部特写
https://makelogimg.dfrobot.com.cn/makelog/5b4978a3d1a37b6c0f5ec43d/e62bdd64420cb223598fae3705bf4d5a.jpg?imageView2/2/w/1600


灯全亮状态
代码/*!
* 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_NeoPixelneoPixel_4;
DFRobot_ASR       asr;
DFRobot_Servo360servo360_8;
DFRobot_Servo360servo360_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).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).toInt());
                neoPixel_4.setRangeColor(mind_n_a, mind_n_a, 0x0000FF);
                delay(1000);
                mind_n_index += 1;
      }
}



页: [1]
查看完整版本: 【科技创新】“长征历史”智能宣讲机