【脑洞大赛】第四组-52Pi团队-爆改助动车
本帖最后由 yoyojacky 于 2016-7-26 10:37 编辑比赛还在如火如荼的进行着,我们需要大家的投票哦!哈哈
怒扫下面的 二维码,为第四组52Pi团队贡献你宝贵的一票哦!
---------------------------------------------------------------------------------------------正文-------------------------------------------------------------------------------------------------------------
Hi 大家好! 我是骑驴玩儿漂移,我们的脑洞大赛的项目内容是: 爆改助动车
由于我们的团队的老邓同学倡导绿色出行,一直都骑助动车上班(家理公司近好不好,像我得开车一个小时你试着骑一下助动车?---我的内心戏,你们别在意)。言归正传,他骑行的过程中遇到很多问题,一个就是因为是电动车,所以基本没有声音(无声的痛点), 第二个就是我有次晚上在他后面开车发现他的尾灯好昏暗,如果不仔细看都看不清楚。(灯暗)
两个痛点直接暴露了安全隐患。
1. 无声
2. 灯暗
当和他聊起这个事情的时候,他的脑洞突然出现了N次元的塌方,在我们合计后决定,爆改电动车(其实就只是获取了信号线的信号做判断而已,然后用语音播放模块按需播放即可)
我们的脑洞瞬间被打开,大家讨论的改造计划如下:
1. 利用现有的电路板实现改造,手头有很多,arduino,树莓派,爱迪生,最后考虑到空间的问题,决定用arduino pro mini。
2. 考虑到助动车的空间所以不做大的改动,基本上利用仪表盘下方的空间。
3. 用MP3播放模块结合小喇叭的功放板来实现声音的处理。
4. 为了增强灯光的提示效果,在车辆后部的靠背部分掏空加入一个8x8的RBG点阵屏(SPI方式,用线少)
5. 由于助动车电压比较高,达到48V左右,因此一般的开发板或者单片机都不能够直接连接,所以计算了需要降压的空间,将48V降压到18V 这里需要自制线圈。如图:
18V主要是为了给功放供电,驱动喇叭。
然后通过DCDC模块直接将18V转换到5V,给arduino供电,MP3模块,点阵模块供电。
6. 编写arduino程序,做几个判断,判断左转信号,然后用二进制编码播放MP3模块中的对应左转音频MP3(所有音频都由老邓(女优,哦,不,是声优和我联合制作完成,制作软件:garageband for Mac)。
================================过程记录,时间紧任务重,我为大家看图说话=====================================
先上一张萌宝镇楼!
------------------------------------------------------------------------------------------------------------------------------------------------------
好了,来吧,看这里!
电路部分:
这是信号转接板,由大熊同学手焊洞洞板
正面列队。。。
这是降压模块,别看洞洞板的样子,难看但是实用,我们已经过了只看外表的年纪。。哈哈
核心控制板,arduino pro mini
点阵屏,手工取模,各种测试后,写出了转向的代码。展示的时候,是不是很有爱。
降压板的后背,看看风骚的走位。是不是有种醉了的感觉?
测试时候,这个5w的小喇叭很给力,声音也不会爆音,真是物有所值。
两个游戏机按键被拿来征用了。
测试前一定要用万用表测试电压哦。
期间测试烧掉一个板子,连夜鸡血中,继续焊接。。
我知道大熊内心是崩溃的。
继续重新来。
终于,嗒哒~~
看着这个灯,我们眼前出现了希望。。。。是不是太文艺了不太好?
第一版测试的程序中,是个×,不停的闪,让人有种要从后面补一刀的感觉。。
你笑什么,我知道你邪恶了,这不是菊花,谢谢。
基础测试通过后,开始爆拆老邓的助动车。
拆开发现,我勒个去,这是盘丝洞么? 白晶晶在不在?约吗?
让他们搞线路,我去处理尾灯:
按照点阵的大小先开个孔。
装好了点阵就是这样咯。是不是很带感啊?
通上电测试,恩,很不错,线缆长了记得加个电容哦。
这不是搞基,什么叫team work? 这就是哦!
你接线来我来调试程序。。
一个忧伤的程序猿。。。
动动手来动动脚,这个特殊模式按钮还是我来做吧。
蘑菇云的工具就是多,各种钻,各种打磨。。哈哈
装好就是这样,是不是萌萌哒?
艾玛,盘丝洞二度开放,都难不倒我们,来来来,一起暴力组合一下。
哎,哪里怎么多出了4个螺丝?
大熊: 没事儿,多出来就丢了吧。
老邓:。。。。。。。
骑驴玩儿漂移: 老邓,骑车有风险,自己保重。。
后面怎么样了啊?
六年级很认真的在整理后面尾灯。哈哈
大熊微调。。。各种微调。。
最后: 看看刹车效果:
转向灯效果:
前进过程中的示廓灯效果。哈哈
是不是已经急着想要动手也做一个了?
来来来,奉上代码如下:
/*
8*8点整屏幕和音效的驱动
via:井底添蛙 & 骑驴玩儿漂移
编写时间:20160723
*/
#define CLK 13 //绿色
#define MO11 //白色
#define CS10 //黑色
#define BUZZERA0 //喇叭
#define BREAK A3 //刹车
#define modePin 8 //模式引脚
#define micA13 //arduino与语音模块对应的引脚
#define micA24
#define micA35
#define micA46
#define micA57
int modeState = 0; //定义模式初始状态,总共3个模式,0,1,2分别为:静音模式, 老邓模式,逗逼模式
long modeStateChangeTime = 0; //定义模式状态变化初始值
long musicPlayTime1 = 0; //不能改,控制信号语音及时播报相关
long musicPlayTime = 0;
const byte interruptPin = 2; //中断检测引脚
volatile byte state = LOW; //中断默认状态
int button_all = 1;
/* 点阵缓存变量 */
unsigned char LED_Buffer = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,//RED
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,//GREEN
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,//BLUE
};
unsigned char LED_bmp[] = {
0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, //叉
0x18, 0x3c, 0x7e, 0xff, 0x3c, 0x3c, 0x3c, 0x3c, //箭头
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,//停止红灯全亮
0x8, 0xC, 0xFE, 0xFF, 0xFF, 0xFE, 0xC, 0x8,
};
char LED_SendByte(char data)
{
int x;
for (x = 0; x < 8; x++)
{
digitalWrite(MO, 0x80 & (~(data << x)));
digitalWrite(CLK, LOW);
digitalWrite(CLK, HIGH);
}
}
void LED_Reload() //不停的刷新LED_Buffer显示
{
int x, y;
char z = 0x01;
for (y = 0; y < 30; y++)
{
for (x = 0; x < 8; x++)
{
digitalWrite(CS, LOW);
LED_SendByte(LED_Buffer); //r
LED_SendByte(LED_Buffer); //g
LED_SendByte(LED_Buffer); //b
LED_SendByte(~(z << x)); //seg
digitalWrite(CS, HIGH);
delay(1);
}
}
}
void LED_black() //关闭显示
{
digitalWrite(CS, LOW);
LED_SendByte(0x00);
LED_SendByte(0x00);
LED_SendByte(0x00);
LED_SendByte(0x00);
digitalWrite(CS, HIGH);
}
void LED_BufferClear() //清除Buffer
{
int x, y;
LED_black();
for (x = 0; x < 3; x++)
{
for (y = 0; y < 8; y++)
{
LED_Buffer = 0x00;
}
}
}
/*模式0 为关闭,模式1 为老邓模式模式2 为逗逼模式
歌谱里面的:
模式1
1.启动引擎
2.行驶音
3.左拐了
4.右拐了
5.刹车
6.让-让
模式2
*/
void turn_left() //左拐: 左拐了第三首歌
{
digitalWrite(micA1, LOW);
digitalWrite(micA2, LOW);
delay(50);
digitalWrite(micA1, HIGH);
digitalWrite(micA2, HIGH);
}
void turn_right()
{
digitalWrite(micA3, LOW); //右拐: 右拐了第四首歌
delay(50);
digitalWrite(micA3, HIGH);
}
void stopped() //刹车: 老邓哎呀妈呀第五首歌
{
digitalWrite(micA1, LOW);
digitalWrite(micA3, LOW);
delay(50);
digitalWrite(micA1, HIGH);
digitalWrite(micA3, HIGH);
}
void buzzer() //喇叭:让一让 第六首歌
{
digitalWrite(micA2, LOW);
digitalWrite(micA3, LOW);
delay(50);
digitalWrite(micA2, HIGH);
digitalWrite(micA3, HIGH);
}
void backgroundMusic()
{
digitalWrite(micA2, LOW);
delay(50);
digitalWrite(micA2, HIGH);
}
void musicMode()
{
switch (modeState) {
case 0:
{
digitalWrite(micA1, LOW); //第七首歌,报模式 0
digitalWrite(micA2, LOW);
digitalWrite(micA3, LOW);
delay(50);
digitalWrite(micA1, HIGH);
digitalWrite(micA2, HIGH);
digitalWrite(micA3, HIGH);
} break;
case 1:
{
digitalWrite(micA4, LOW); //第八首歌,报模式 1
delay(50);
digitalWrite(micA4, HIGH);
} break;
case 2:
{
digitalWrite(micA1, LOW); // 第九首歌,报模式 2
digitalWrite(micA4, LOW);
delay(50);
digitalWrite(micA1, HIGH);
digitalWrite(micA4, HIGH);
} break;
default:
break;
}
}
void setup() {
Serial.begin(9600); //串口初始化
//pinMode(interruptPin, INPUT_PULLUP); //定义中断引脚,并上拉
// attachInterrupt(digitalPinToInterrupt(interruptPin), stateChange, LOW); //初始化中断函数
pinMode(A0, INPUT_PULLUP);//定义控制信号引脚
pinMode(A1, INPUT_PULLUP);
pinMode(A2, INPUT_PULLUP);
pinMode(A3, INPUT_PULLUP);
pinMode(modePin, INPUT_PULLUP); //初始化模式控制引脚
pinMode(CLK, OUTPUT); //初始化点阵控制引脚
pinMode(MO, OUTPUT);
pinMode(CS, OUTPUT);
digitalWrite(CS, HIGH);
digitalWrite(CLK, HIGH);
digitalWrite(MO, HIGH);
LED_black(); // 初始化8x8点阵
for (int m = 3; m <= 7; m++) //初始化音乐播放引脚
{
pinMode(m, OUTPUT);
digitalWrite(m, HIGH);
}
delay(1000); //语音模块开机需要1秒,等待它一下
digitalWrite(micA1, LOW); //开机声音
delay(50);
digitalWrite(micA1, HIGH);
delay(5000);
}
void loop() {
if ((digitalRead(modePin) == 0) & ((millis() - modeStateChangeTime) >= 3000))//判断模式
{
modeStateChangeTime = millis();
modeState++;
if (modeState > 2)modeState = 0;
Serial.print("modeStateChange =");
Serial.println(modeState);
// musicMode();
}
if ((millis() - musicPlayTime) >= 2600 )
{
backgroundMusic();//背景音乐 突突突
musicPlayTime = millis();
Serial.println("backgroundMusic !");
}
LED_BufferClear();
for (int x = 0; x < 8; x++)
{
LED_Buffer = LED_bmp;
}
LED_Reload();
LED_black();
delay(200);
while (analogRead(A0) < 300) //如果低电平,喇叭就响了
{
Serial.println("A0 !");
if ((millis() - musicPlayTime1) >= 5000 )
{
musicPlayTime1 = millis();
buzzer();
}
}
while (analogRead(A1) < 300) // 左转状态,左转灯,左拐了音效
{
Serial.println("A1 !");
if ((millis() - musicPlayTime1) >= 5000 )
{
musicPlayTime1 = millis();
turn_left();
}
LED_BufferClear();
delay(200);
for (int x = 0; x < 8; x++)
{
LED_Buffer = LED_bmp;
}
LED_Reload();
}
while (analogRead(A2) < 300) //右转状态,左转灯, 右拐了音效
{
Serial.println("A2 !");
if ((millis() - musicPlayTime1) >= 5000 )
{
musicPlayTime1 = millis();
turn_right(); //右转先放音乐
}
LED_BufferClear();
delay(200);
for (int x = 0; x < 8; x++) //然后刷点阵buffer
{
LED_Buffer = LED_bmp;
}
LED_Reload();
}
while (analogRead(A3) < 300 ) //刹车
{
Serial.println("A3 !");
if ((millis() - musicPlayTime1) >= 3000 )
{
musicPlayTime1 = millis();
stopped();
}
LED_BufferClear();
delay(200);
for (int x = 0; x < 8; x++)
{
LED_Buffer = LED_bmp;
}
LED_Reload();
}
musicPlayTime1 = 0;
LED_black();
}
好了,赶紧去DFrobot买好模块,开创你的脑洞吧!!!哈哈
技术问题可以和我们52pi团队交流哦!知无不言,言无不尽哈!
我是骑驴玩儿漂移,一个集好基友于一身的重口味脑洞小清新。。。来猛戳下面的链接看视频介绍哈!!!
http://www.meipai.com/media/555545744?from=timeline&isappinstalled=1------------------------------------------------------------------------------------------------------------------------------
大家可以拿出你的手机,怒刷下面的二维码帮忙我们投票哦!
我们是四号52Pi 团队哦!
只会刷分的有屌用 占个楼,回答问题 卖不卖100元包车卖不卖 我想说这个项目是最让人吃惊的了,本来觉得没有什么的项目,演示效果感人。 reaprouu 发表于 2016-7-25 15:24
只会刷分的有屌用
我们根本没有必要刷这个分,这个分数也不是评分标准,别激动。。。 Rockets 发表于 2016-7-25 10:46
我想说这个项目是最让人吃惊的了,本来觉得没有什么的项目,演示效果感人。 ...
哈哈,是不是我们声优的刹车声效太魔性?哈哈 本帖最后由 井底添蛙 于 2016-7-25 18:21 编辑
回复楼上reaprouu:
首先,很感谢您的评论,您发出这种评论说明您也是参赛成员,但我觉得您的评论是非常不负责的。
1、想必您并未仔细看参赛手册,或者您认为我们没有仔细看参赛手册,论坛帖子访问量似乎并不作为比赛计分参考;
2、我们并未刷浏览量,只是我们自己都觉得我们的作品很好玩,所已只是转发到了几十个群里分享了一下而已,好玩的东西不值得分享吗?至于浏览量,我们其实也很惊讶,如果真有疑问,麻烦去问问DF的IT,究竟访问量是如何来的;
3、作为参赛项目,我们只做我们能力范围内的,虽然中途遇到了不少问题,但我们留守了一夜调试直到问题解决,最后也按时完成了,因此对您的评论我个人很不满意。
4、这是我加入52Pi第一次参加比赛活动,我们团队每个人都很优秀,对于您的评论,呵呵。 楼上是二哈 发表于 2016-7-25 10:04
卖不卖100元包车卖不卖
出门左转,他家99包邮。 reaprouu 发表于 2016-7-25 15:24
只会刷分的有屌用
... 浏览量不决定比赛成绩的…… 我们两支队一起熬得夜,哈哈!记得赛前收集采访素材的时候我就说过喜欢蘑菇云第一的是这帮能用心动手做事的朋友,包含DF的朋友们和会员朋友们,这个朋友圈很赞;设备和环境排在第二{:5_190:}车上那个黄按钮眼熟:lol
一起加油啊~ 微信扫描上车投第四个
accura 发表于 2016-7-26 02:33
我们两支队一起熬得夜,哈哈!记得赛前收集采访素材的时候我就说过喜欢蘑菇云第一的是这帮能用心动手做事的 ...
哈哈,是啊,三个队在熬夜哦。
还有梦立方的齐天大圣机器猫
哈哈 我就发了12个2000人的qq大群,没想到这个病毒扩散效应这么猛。。。哈哈
其实最屌的还是美拍上兄弟给力啊。。。哈哈 再推广一次。
各种拉票啊!继续拉! 。。。。
页:
[1]