基于Arduino Nano R3实现摩托车尾灯的设计方案

介绍:
从表面上看,这是一个非常简单的项目。它读取 3 个开关并驱动 2 个 led 灯条。但是,这不是典型的独立 arduino 项目。将其集成到现有电气系统中存在一些细微差别。
以下是构建此项目所需的技能和项目。
如果愿意深入研究自行车的电气系统,您需要找到并利用:
开关 12v 线
左转向信号线
右转信号线
刹车灯线
三个 12v 继电器(我选择了小型簧片式继电器)
5 v 电源能够持续 5 a(不是峰值额定值)
两个 - 5x8 ws2812 led 矩阵(或您选择的矩阵)
性能板
用于连接所有电线的接线端子
金属丝
示意图注释
该项目的目标是将 arduino 与自行车的电气系统完全隔离。这就是继电器用于触发 arduino 引脚的原因。您可能可以使用分压器并避免使用继电器。
如果您有一辆带有 led 转向灯的新型自行车,请检查您的灯的电压。它可能正好是 5v,所以可以直接馈入 arduino 引脚。
你可能会觉得奇怪的是我使用模拟来读取刹车/转向信号。这样做只是为了简化原型板的焊接,所以我没有在 arduino nano 的一侧进行所有连接。
切换的 12v 输入线位于我自行车上现有的 10a 电路上。
不要给项目供电!每个 led 矩阵可以消耗 2.5 a!如图所示,我有一个双输出电源,每个输出都能达到 4a,而且效果很好!两个 3 安培 bec 电路可能也可以工作。如果您的 arduino led 在转向信号运行时闪烁,请使用 arduino 专用电源,或为 arduino 提供 12v 电源到 vin 引脚。
构建电路板
我使用了 adafruit perma 面包板(本质上是带有面包板痕迹的穿孔板)。我希望内置的痕迹能让构建更干净。这不是一个完美的解决方案,需要刮掉一些痕迹。
花时间设计pcb板
放入接头以便可以更换 nano,但这也会增加构建的厚度
拓展一下我想试试 ti msp430 而不是 arduino
构建测试夹具
如果您正在修改代码,您将需要构建一个测试夹具,以便您可以在办公桌上进行开发和测试,而不是在连接到自行车的车库中进行这项工作。我建立了一个 3 按钮项目盒,为三个继电器中的每一个提供 9v。三个按钮分别代表:左、右、刹车信号,您可以测试所有组合。
arduino项目
我很早就了解到,最好将 led 动画封装在类库中。这使得动画可重复使用。
类库的缺点是编写起来有点痛苦。缺乏调试工具(我习惯于使用 microsoft visual studio 和 eclipse),而且当事情不正常时,几乎没有什么线索可以说明哪里出了问题。我的最佳建议是慢慢构建功能并保存备份副本。当您遇到问题时,请仔细检查您最近所做的更改。c/c++ 中最常见的灾难性错误可能是缓冲区溢出。
编译这个 arduino 草图需要下载 4 个库:
adafruit neopixel 库
blinkled
cascadeled
尾灯
blinkled 类库
在类库的头文件中查看调用序列的详细信息。您还可以在草图中找到用于实例化和调用刹车灯和行车灯的示例。将一组像素传递给光和频率。
例子:
字节最大停止 = 25;
字节 stoppix[maxsinglerow] = { 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 19, 20, 21, 22, 23, 27, 28, 29, 30, 31, 35, 36 , 37, 38, 39};
blinkled lstopled = blinkled(&lstrip, &stoppix, maxstop, r, g, b, 19);
blinkled rstopled = blinkled(&rstrip, &stoppix, maxstop, r, g, b, 19);
cascadeled 类库
在类库的头文件中查看调用序列的详细信息。您还可以在草图中找到用于实例化和调用转向信号信号的示例。将二维像素阵列传递给光和频率。然后该类将循环遍历像素行并按该顺序点亮它们。
警告:为简单起见,我选择创建常量来定义数组大小。为了便于使用,这会消耗一些内存。如果您选择驱动每组超过 40 个像素,您可能需要更改定义在 cascadeled\arrayconstants.h 中的常量。
例子:
常量字节 maxrow = 5;
常量字节 maxcol = 8;
字节 rightpix[maxrow][maxcol] = { { 0, 1, 2, 3, 4, 5, 6, 7}, { 8, 9, 10, 11, 12, 13, 14, 15}, {16, 17 , 18, 19, 20, 21, 22, 23}, {24, 25, 26, 27, 28, 29, 30, 31}, {32, 33, 34, 35, 36, 37, 38, 39}} ;
cascadeled rightled = cascadeled(&rstrip, &rightpix, maxrow, maxcol, rt, gt, bt, 80, 900);
taillight.ino arduino 草图
这里不多说。控制回路非常简单:
void loop() {
byte leftpin = (analogread(leftpin) > 50);
byte brakepin = (analogread(brakepin) > 50);
byte rightpin = (analogread(rightpin) > 50);
// animate or clear the turn signals
// psudoon is true when pin is high or between turn signal blinks (pin is actually low)
bool lpsudoon = leftled.blink(leftpin);
bool rpsudoon = rightled.blink(rightpin);
// animate or clear the brake lights lstopled.blink(brakepin); rstopled.blink(brakepin);
// only turn on running lights. let the overlays turn it off // clear will interfere with overlapping lights
if (!lpsudoon && !brakepin) lrunled.set(true);
if (!rpsudoon && !brakepin) rrunled.set(true);
}
备注:
转向信号开关会中断像素动画,因为闪烁比一个动画序列更快。cascadeled 类有一个超时值来吸收闪烁的“关闭”部分并假装信号仍然打开。这个伪开启被传递回主控制回路,因此它需要知道是否应该考虑开启或关闭转向信号,而不是使用当前引脚值。

断路器保护功能,你都知道吗?
快人一步,一触即发|芯海科技信号链MCU助力iQOO8重磅发布!
预计2020年中国视觉人工智能市场规模将达到755.5亿元
海信中国首颗全自研8K AI画质芯片发布
AI对制造业的6大应用趋势
基于Arduino Nano R3实现摩托车尾灯的设计方案
数字无线网桥具备怎样的优势
使用锂电池注意防火
iOS10.3最新消息:iOS10.3.2Beta3已推送,iOS10.3新功能还未体验完iOS10.3.2又再度更新,功能有哪些?
电力变压器分类及参数
这个来势汹汹的Kai OS 到底是什么呢?
瑞萨电子推出两个全新入门级产品群以扩展RA MCU产品家族, 打造性能、功能和价值的理想组合
ETSI电信云原生圆桌在2023 MWC上海期间成功举办
用太仆智能洗车机器人来解决洗车行业的痛点
人工智能的目标是推动机器智能的前沿
PaMu Slide真无线蓝牙耳机上线小米有品 售价599元
基于SOC技术实现二级冗余存储体系结构的容错方案设计
5G让智能安防更简单,优势来自“5G+AI”
“示波记录仪”电源研发的利器
如何使自动化测试系统精度进行最大化,有哪五个步骤方法