• 一“证”在手  产品畅行海内外 2019-06-15
  • 河北省交通运输厅:平安交通一路同行 2019-06-13
  • 徕卡M10限量版外观曝光-热门标签-华商网数码 2019-06-10
  • 四川能投集团党委书记、董事长郭勇荣获“2017 2019-06-01
  • 男子为新车烧香敬神  不料车被烧成空壳 2019-06-01
  • 绿水青山就是金山银山——浙江湖州生态文明建设纪实之一 2019-05-31
  • 人社部:改革国有企业工资总额决定机制 2019-05-26
  • 这些藏在主城中的小众公园 景美还免费 2019-05-23
  • 荆楚网(湖北日报网)采购信息 2019-05-22
  • 松原地震视频汇总!监控录像记录地震现场画面曝光 2019-05-22
  • 木渎古镇文章中国国家地理网 2019-05-15
  • 上海合作组织青岛峰会举行 2019-04-20
  • 遭遇隐形歧视 就业权益谁来维护 2019-04-20
  • 杨立新解读2018年天津市《政府工作报告》--天津频道--人民网 2019-04-19
  • 【北京海之沃车型报价】北京海之沃4S店车型价格 2019-04-19
  • 查看: 4495|回复: 15
    打印 上一主题 下一主题

    [项目分享] DIY留声机

    [复制链接]
    本帖最后由 章 于 2018-11-19 14:43 编辑



    制作背景
           美国科学家托马斯?爱迪生发明了第一台留声机,由于留声机唱片能较简易地大量复制,放音时间也比大多数筒形录音介质长,因此,留声机被称为爱迪生最伟大的发明之一。小时候老爸买过好几台留声机,也做过一些唱片机的外壳及音箱,全村的老老少少经常来我家听,现在也时常想起小时候的情景,不过那些机器现在都再也找不到了,于是就萌发了做一台模拟的留声机。

    功能描述
           我们把唱头放在模拟唱片的不同位置就会播放不同的歌曲,这里主要通过角度传感器和避障传感器检测到不同的值传送给主控板,让主控板指挥MP3??椴シ挪煌母枨?,如果把唱头移开唱片,音乐就会停止播放。我们还可以通过旋转功放??樯系男ダ锤谋渖舻拇笮?。


    硬件清单

      
    序号
      
    名称
    数量
    1
    DFRduino UNO R3
    1
    2
    DF IO传感器扩展板 V7.1
    1
    3
    步进电机
    1
    4
    步进电机驱动板
    1
    5
    角度传感器???/font>
    1
    6
    功放???/font>
    1
    7
    DFPlayer Mini 播放器???/strong>
    1
    8
    3 W4欧喇叭
    2
    9
    杜邦线
    若干
    10
    电源线
    若干
    11
    激光切割结构件
    1
    12
    电池盒及电池
    1

    结构及电子元件的安装
           1、设计外观结构件并进行激光切割
           为了使外观更加好看,我采用椴木板来制作,先在电脑上设计图纸并用激光切割机进行切割。




           2、把两张底座用热熔胶固定起来,如图所示。



           3、把底座与四周的面板用热熔胶固定好,并安装上两只喇叭。如下图:





           4、把功放???、步进电机、步时电机驱动板及角度传感器安装在最上面面板上


           5、根据下图的步骤,组装唱头部分结构,最后把避障传感器安装上唱头上。







           6、把模拟唱片的两个圆盘安装在步进电机上,安装时要注意距离及水平位置,使他们旋转起来不会与面板相接触,位置固定好后可以用热熔胶或502胶水加以固定。



           7、把唱头部分与角度传感器进行连接,用用热熔胶或502胶水加以固定,使转动唱头时,角度传感器也会跟着转动,这里唱头带动角度传感器转动的角度与下面编程时播放的歌曲有关。固定时要注意初始角度,使唱头可以在唱片两侧都留有一定的转动余地。




           8、把电池盒、主控板及MP播放??榈裙潭ê?,并线路图所示连接好所有???。



           9、复制相关的音乐到SD卡中。先在SD卡根目录下命名一个mp3的文件夹,然后再把相关的音乐复制到mp3文件夹中,而mp3文件命名需要是4位数字,例如"0001.mp3",如需中英文命名,可以添加在数字后,例如"0001ZAYN.mp3"或者"0001体面.mp3"

           10、最后盖上面板并固定好,这样整个留声机的结构及元器件与连接全部完成,效果图如下:




    程序编写
           编程编写在用到DF的DFRobotDFPlayerMini库文件,所以事先我们要把这个库文件导入。详细程序如下图所示:
       
    [AppleScript] 纯文本查看 复制代码
    #include "Arduino.h"[/align]#include "SoftwareSerial.h"
    #include "DFRobotDFPlayerMini.h"
    #include <Stepper.h>
    Stepper mystepper(100,4,5,6,7);
    SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
    DFRobotDFPlayerMini myDFPlayer;
    void printDetail(uint8_t type, int value);
    volatile int a;
    void setup()
    {
      mySoftwareSerial.begin(9600);
      Serial.begin(115200);
      Serial.println();
      Serial.println(F("DFRobot DFPlayer Mini Demo"));
      Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
       if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
        Serial.println(F("Unable to begin:"));
        Serial.println(F("1.Please recheck the connection!"));
        Serial.println(F("2.Please insert the SD card!"));
        while(true);
      }
      Serial.println(F("DFPlayer Mini online."));
      myDFPlayer.volume(20);  //Set volume value. From 0 to 30
      myDFPlayer.play(1);  //Play the first mp3
      mystepper.setSpeed(100);
      pinMode(8, INPUT);
      a = 0;
    }
    void loop()
    {
       if (digitalRead(8) && (analogRead(A0) > 425 && analogRead(A0) < 440)) {
        mystepper.step(10);
        if (a != 1) {
          myDFPlayer.play(1);  //Play next mp3 every 3 second.
        }
        a = 1;
      } else if (digitalRead(8) && (analogRead(A0) > 442 && analogRead(A0) < 460)) {
        mystepper.step(10);
        if (a != 2) {
          myDFPlayer.play(2);  //Play next mp3 every 3 second.
        }
        a = 2;
      } else if (digitalRead(8) && (analogRead(A0) > 462 && analogRead(A0) < 480)) {
        mystepper.step(10);
        if (a != 3) {
          myDFPlayer.play(3);  //Play next mp3 every 3 second.
        }
        a = 3;
      } else if (digitalRead(8) && (analogRead(A0) > 482 && analogRead(A0) < 500)) {
        mystepper.step(10);
        if (a != 4) {
          myDFPlayer.play(4);  //Play next mp3 every 3 second.
        }
        a = 4;
      } else if (digitalRead(8) && (analogRead(A0) > 502 && analogRead(A0) < 522)) {
        mystepper.step(10);
        if (a != 5) {
          myDFPlayer.play(5);  //Play next mp3 every 3 second.
        }
        a = 5;
      } else {
        a = 0;
        myDFPlayer.stop();  //Play next mp3 every 3 second.
      }
    }
    void printDetail(uint8_t type, int value){
      switch (type) {
        case TimeOut:
          Serial.println(F("Time Out!"));
          break;
        case WrongStack:
          Serial.println(F("Stack Wrong!"));
          break;
        case DFPlayerCardInserted:
          Serial.println(F("Card Inserted!"));
          break;
        case DFPlayerCardRemoved:
          Serial.println(F("Card Removed!"));
          break;
        case DFPlayerCardOnline:
          Serial.println(F("Card Online!"));
          break;
        case DFPlayerPlayFinished:
          Serial.print(F("Number:"));
          Serial.print(value);
          Serial.println(F(" Play Finished!"));
          break;
        case DFPlayerError:
          Serial.print(F("DFPlayerError:"));
          switch (value) {
            case Busy:
              Serial.println(F("Card not found"));
              break;
            case Sleeping:
              Serial.println(F("Sleeping"));
              break;
            case SerialWrongStack:
              Serial.println(F("Get Wrong Stack"));
              break;
            case CheckSumNotMatch:
              Serial.println(F("Check Sum Not Match"));
              break;
            case FileIndexOut:
              Serial.println(F("File Index Out of Bound"));
              break;
            case FileMismatch:
              Serial.println(F("Cannot Find File"));
              break;
            case Advertise:
              Serial.println(F("In Advertise"));
              break;
            default:
              break;
          }
          break;
        default:
          break;
      }
    }
         

    沙发

    killerlist  高级技师

    发表于 2018-11-20 15:36:21

    虽然不是真的留声机,但是能做到留声机做不到的事情,叫留声机2.0MAX吧(滑稽)
    板凳

    lilei8488  初级技师

    发表于 2018-11-21 11:26:07

    很有年代感,棒棒
    地板

    杨2  学徒

    发表于 2018-11-22 14:34:09

    这个很有意思,楼主花了不少时间啊。佩服
    5#

    铁熊  版主

    发表于 2018-11-24 09:23:08

    创意好赞
    6#

    gada888  版主

    发表于 2018-11-24 18:26:20

    这个漂亮
    7#

    digi_cow  中级技匠

    发表于 2018-11-26 18:07:44

    章老师的制图功力深厚
    8#

    逆光  学徒

    发表于 2018-11-29 15:22:04

    有创意的作品,学习了
    9#

    小蹬子  见习技师

    发表于 2018-12-5 08:31:48

    不vVB是否会回家就看
    10#

    choco  学徒

    发表于 2018-12-20 00:02:03

    您好请问完整的代码可以分享一份吗?而且我没有买到同款的mp3 player播放器 买的是功能一样名称不一样的 是不是这个代码中的名称都是需要修改的呢?因为是新手第一次接触arduino很多地方都不太懂!如果您能回复的话真的万分感谢!!我的微信是chaos-98 希望您能看到留言?。?!
    11#

    gada888  版主

    发表于 2018-12-20 10:42:10

    很漂亮
    12#

     中级技师
     楼主|

    发表于 2018-12-28 10:57:31

    choco 发表于 2018-12-20 00:02
    您好请问完整的代码可以分享一份吗?而且我没有买到同款的mp3 player播放器 买的是功能一样名称不一样的 是 ...

    代码上面不是有了吗,关于mp3??槲也恢滥懵虻氖悄囊豢畹?,我不知道能不能使用,还是买同一款的吧。
    13#

    bobobobo  见习技师

    发表于 2018-12-31 18:28:07

    想问下的就是电机会不会转的很快呀?
    14#

     中级技师
     楼主|

    发表于 2019-1-3 16:03:58

    bobobobo 发表于 2018-12-31 18:28
    想问下的就是电机会不会转的很快呀?

    用步进电机
    15#

    和静清寂  学徒

    发表于 2019-1-28 15:56:01

    请问有没图纸
    16#

    DFBkweycOwE  学徒 来自手机

    发表于 2019-3-15 10:37:08

    章 发表于 2018-11-19 14:13
    【制作背景】       美国科学家托马斯?爱迪生发明了第一台留声机,由于留声机唱片能较简易地大量复制, ...

    请问一下能不能加微信 想了解一下详细的程序 我们用这个程序出了点问题
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    为本项目制作心愿单
    购买心愿单
    心愿单 编辑
    wifi气象站

    硬件清单

    btnicon
    我也要做!
    点击进入购买页面
    上海智位机器人股份有限公司 沪ICP备09038501号-4

    © 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

    浙江6加1开奖结果
  • 一“证”在手  产品畅行海内外 2019-06-15
  • 河北省交通运输厅:平安交通一路同行 2019-06-13
  • 徕卡M10限量版外观曝光-热门标签-华商网数码 2019-06-10
  • 四川能投集团党委书记、董事长郭勇荣获“2017 2019-06-01
  • 男子为新车烧香敬神  不料车被烧成空壳 2019-06-01
  • 绿水青山就是金山银山——浙江湖州生态文明建设纪实之一 2019-05-31
  • 人社部:改革国有企业工资总额决定机制 2019-05-26
  • 这些藏在主城中的小众公园 景美还免费 2019-05-23
  • 荆楚网(湖北日报网)采购信息 2019-05-22
  • 松原地震视频汇总!监控录像记录地震现场画面曝光 2019-05-22
  • 木渎古镇文章中国国家地理网 2019-05-15
  • 上海合作组织青岛峰会举行 2019-04-20
  • 遭遇隐形歧视 就业权益谁来维护 2019-04-20
  • 杨立新解读2018年天津市《政府工作报告》--天津频道--人民网 2019-04-19
  • 【北京海之沃车型报价】北京海之沃4S店车型价格 2019-04-19