nicho 发表于 2017-5-5 10:03:04

浩克闹钟&反浩克贴纸

考完试来搞事情啦~~
搜了一次论坛,只有一个关于闹钟的项目好像,于是......就有了这个..

上视频!
https://v.youku.com/v_show/id_XMjc0NTQ5Nzg5Ng==.html
首先,这个项目是由浩克闹钟和反浩克贴纸构成

反浩克贴纸用于关闭闹钟,所以关闹钟首先要找到这个贴纸...(划重点),这个只有霍尔传感器方案可以实现哦

材料
浩克闹钟:
Arduino Nano DFR0010
mp3播放模块
TF内存卡
3W小喇叭
DS3231时钟模块
SS49线性霍尔传感器
小磁铁
(视频中也使用了红外避障模块,和霍尔传感器两个方案任选)

反浩克贴纸:一张纸
一个小磁铁
万能的热熔胶
制作过程


准备材料




截取浩克的声音


连接MP3模块


完成其他的硬件接线


拆面具





引出LED电源线

测试

整体图


安装面具


调整红外模块的灵敏度(调至最低,防止误触发)


用热熔胶固定


正面安装磁铁,用于吸合反浩克贴纸
(磁铁很小,可能看不到,在人中偏下的位置)


背面图


反浩克贴纸hhhh

上面也有一个小磁铁哦,这个很重要

代码部分
需要安装Ds3231和MP3的库文件



(MP3是使用DF的库文件)
DS3231一般买回来的时候是时间不准的,需要用代码调整,但是这个改时间的代码只要运行一次哦(程序中我就先注释掉了)
这一段:

    //Reset time of the DS3231,Use only once when the time is not accurate
    struct ts settime;
    settime.sec = 00;
    settime.min = 24;
    settime.hour = 16;
    settime.mday = 4;
    settime.mon = 5;
    settime.year = 2017;
   
    DS3231_set(settime);
设置闹钟的代码// time when to wake up
uint8_t wake_HOUR = 18;
uint8_t wake_MINUTE = 54;
uint8_t wake_SECOND = 20;这里设置的就是18'54"20,每天一次


完全体的代码
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#include <Wire.h>
#include "ds3231.h"

#define BUFF_MAX 256
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

// time when to wake up
uint8_t wake_HOUR = 18;
uint8_t wake_MINUTE = 54;
uint8_t wake_SECOND = 20;

int playingFlag = 0;

// how often to refresh the info on stdout (ms)
unsigned long prev = 1000, interval = 1000;

void set_alarm(void)
{
// flags define what calendar component to be checked against the current time in order
// to trigger the alarm - see datasheet
// A1M1 (seconds) (0 to enable, 1 to disable)
// A1M2 (minutes) (0 to enable, 1 to disable)
// A1M3 (hour)    (0 to enable, 1 to disable)
// A1M4 (day)   (0 to enable, 1 to disable)
// DY/DT          (dayofweek == 1/dayofmonth == 0)
uint8_t flags = { 0, 0, 0, 1, 1 };

// set Alarm1
DS3231_set_a1(wake_SECOND, wake_MINUTE, wake_HOUR, 0, flags);

// activate Alarm1
DS3231_set_creg(DS3231_INTCN | DS3231_A1IE);
}

void setup()
{
pinMode(4,OUTPUT);//led pin
pinMode(3,INPUT);//ir sensor pin
Wire.begin();
DS3231_init(DS3231_INTCN);
DS3231_clear_a1f();
set_alarm();
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(22);//Set volume value. From 0 to 30
//myDFPlayer.play(1);//Play the first mp3
//myDFPlayer.pause();
/*
    //Reset time of the DS3231,Use only once when the time is not accurate
    struct ts settime;
    settime.sec = 00;
    settime.min = 24;
    settime.hour = 16;
    settime.mday = 4;
    settime.mon = 5;
    settime.year = 2017;
   
    DS3231_set(settime);
*/

}

void loop()
{
char buff;
unsigned long now = millis();
struct ts t;
// once a while show what is going on
if ((now - prev > interval) && (Serial.available() <= 0)) {
    DS3231_get(&t);
    // display current time
    snprintf(buff, BUFF_MAX, "%d.%02d.%02d %02d:%02d:%02d", t.year,
             t.mon, t.mday, t.hour, t.min, t.sec);
    Serial.println(buff);
    // display a1 debug info
    DS3231_get_a1(&buff, 59);
    Serial.println(buff);
    if (DS3231_triggered_a1()) {
      // INT has been pulled low
      Serial.println(" -> alarm1 has been triggered");
      myDFPlayer.enableLoopAll(); //play the first wav
      digitalWrite(4,HIGH);//open led
      playingFlag = 1;//set the playing flag
      // clear a1 alarm flag and let INT go into hi-z
      DS3231_clear_a1f();
    }
    prev = now;
}
if (!digitalRead(3) && playingFlag == 1)
{
    myDFPlayer.pause();
    digitalWrite(4,LOW);//close led
    playingFlag = 0;
}
}
传一下代码文件和音频



nicho 发表于 2017-5-5 20:14:27

heinau 发表于 2017-5-5 13:25
这个设定好赞啊哈哈哈哈哈哈,效果也很好,
实际使用起来感觉如何啊

比手机闹钟好玩很多哈哈哈哈哈放在床边不能再棒了{:5_121:}

luna 发表于 2017-5-5 11:13:45

 有才有才!!考试顺利哦~转眼要到暑假了~羡慕啊

nicho 发表于 2017-5-5 11:53:26

luna 发表于 2017-5-5 11:13
 有才有才!!考试顺利哦~转眼要到暑假了~羡慕啊

{:5_125:}是呀好快一转眼

heinau 发表于 2017-5-5 13:25:01

这个设定好赞啊哈哈哈哈哈哈,效果也很好,
实际使用起来感觉如何啊

dsweiliang 发表于 2017-5-5 14:10:32

效果很赞

heinau 发表于 2017-5-8 15:17:29

nicho 发表于 2017-5-5 20:14
比手机闹钟好玩很多哈哈哈哈哈放在床边不能再棒了

大清早的一睁眼就看到浩克绿油油的大脸,这个提神醒脑的方法的确不能再棒了{:5_131:}
如果贴纸找不到了的话……?

nicho 发表于 2017-5-8 17:31:40

heinau 发表于 2017-5-8 15:17
大清早的一睁眼就看到浩克绿油油的大脸,这个提神醒脑的方法的确不能再棒了
如果贴纸找不到了的 ...

{:5_129:}那就关不了闹钟了

Forgotten 发表于 2017-5-8 22:35:47

提神闹钟{:5_159:}

Ash 发表于 2017-5-25 18:23:37

恭喜获得漫威主题创客作品征集大奖:DF创客商兑换代金券1000元 已发放至作者账户,请至DF创客商城-个人中心-余额 查看。

nicho 发表于 2017-5-25 19:42:26

Ash 发表于 2017-5-25 18:23
恭喜获得漫威主题创客作品征集大奖:DF创客商兑换代金券1000元 已发放至作者账户,请至DF创客商城-个人中心 ...

多谢ASH老板{:5_168:}

安卓机器人 发表于 2017-5-26 08:43:48

原来漫威就在身边。暑假里从另一角度重温漫威系列,寻乐去 {:5_190:}

20060606 发表于 2020-8-13 05:48:19

上传程序需要时间,设置时间时设置秒钟准确吗?

派大星ym 发表于 2022-8-5 11:26:13

厉害厉害厉害了

派大星ym 发表于 2022-8-5 13:03:20

{:6_213:}////
页: [1]
查看完整版本: 浩克闹钟&反浩克贴纸