本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页
最热资讯


亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」
该项目通过使用Edge脉冲软件开发了TinyML模型,该模型可以预测在减速器和坑洼中的制动技能。在刹车踏板和加速度计上添加了外部传感器,用于数据捕获。该模型将制动分为:
体系结构:
该分析器包括:
构建步骤:
步骤一、车辆数据模拟
该项目不是从车辆CAN总线中读取车辆数据,而是制作一个独立的模块,该模块可以安装在任何四个轮车中,并且可以实时捕获数据。
步骤二:电路的连接 :
步骤三:
代码:将Arduino Nano的A4,A5连接到主控制器“ Arduino Nano 33 BLE Sense ”。制动踏板设备将在I2C中充当从设备,而主设备“ Arduino Nano 33 BLE Sense ”将请求并从从设备获取制动踏板踩下的数据。
//柔性传感器-制动踏板踩下值计算
#include <Wire.h>
//常数:
const int flexPin = A0; //引脚A0读取模拟输入
uint16_t FullbrakeUpperthreshold=0;
uint16_t FullbrakeLowerthreshold=0;
uint8_t brakepedalpressedVal=0;
float time_ms=0;
//变量:
int FlexSensorvalue; //保存模拟值
float avgFlexValue=0;
boolean CalibrateFlexBrakepedalvalue=1;
int Linearinterpolation( float x , float x0, float x1, float y0, float y1);
void setup(){
Serial.begin(115200); //开始串行通信
// 启动I2C总线作为主机
Wire.begin(1); //开始I2C通信,从机地址为1,位于引脚(A4,A5)
Wire.onRequest(requestEvent); //当主设备向从设备请求值时的函数调用
}
void loop(){
if(CalibrateFlexBrakepedalvalue==1)
{
delay(5000);
Serial.println("Press Full Brake pedal for 7 seconds"); //打印
for(int i =0 ; i<50;i++)
{
FlexSensorvalue = analogRead(flexPin); //读取并保存电位计的模拟值
avgFlexValue=FlexSensorvalue+avgFlexValue;
Serial.println(FlexSensorvalue); //打印值
delay(100);
}
FullbrakeUpperthreshold=avgFlexValue/50;
avgFlexValue=0;
Serial.print("FullbrakeUpperthreshold : ");
Serial.print("\t");
Serial.println(FullbrakeUpperthreshold);
Serial.println("Release Brake pedal for 7 seconds"); //打印
delay(5000);
for(int i =0 ; i<50;i++)
{
FlexSensorvalue = analogRead(flexPin); //读取并保存电位计的模拟值
avgFlexValue=FlexSensorvalue+avgFlexValue;
Serial.println(FlexSensorvalue); //打印值
delay(100);
}
FullbrakeLowerthreshold=avgFlexValue/50;
avgFlexValue=0;
Serial.print("FullbrakeLowerthreshold : ");
Serial.print("\t");
Serial.println(FullbrakeLowerthreshold);
CalibrateFlexBrakepedalvalue=0;
delay(10000);
}
delay(1); //小延迟
}
// 计算制动踏板值的线性插值公式
int Linearinterpolation( float x , float x0, float x1, float y0, float y1)
{
int y=0;
y= y0+(((x-x0)*(y1-y0))/(x1-x0));
return y;
}
void requestEvent() //当主想要从的值时调用此函数
{
FlexSensorvalue = analogRead(flexPin); //读取并保存模拟值
// 达到阈值
if(FlexSensorvalue<FullbrakeUpperthreshold)
{
FlexSensorvalue=FullbrakeUpperthreshold;
}
else if(FlexSensorvalue>FullbrakeLowerthreshold)
{
FlexSensorvalue=FullbrakeLowerthreshold;
}
brakepedalpressedVal=Linearinterpolation(FlexSensorvalue,FullbrakeUpperthreshold,FullbrakeLowerthreshold,100,0);
Serial.println(brakepedalpressedVal); //打印值
Wire.write(brakepedalpressedVal); // 将一个字节转换后的POT值发送到主节点
}
数据计算:
根据按按钮时的校准系数得出,从25kmph的速度将在4秒钟内降低到零。为了重置车速,在Nano 33 Ble的意义上添加了以下算法。
模型训练:
将Arduino Nano BLE 33 Sense连接到Edge Impulse(操作步骤)
转到命令提示符并在命令下方输入:$ edge-impulse-data-forwarder,然后选择Arduino连接的COM端口。连接后,可以提供边缘脉冲登录凭据并选择您的项目。该项目中收集了22分钟的不同制动模式数据。
刹车数据:
脉冲配置:
将过滤技术设置为“无”,因为在过滤过程中,全制动可能显示为零。
NN分类器设置
模拟结果:
根据模拟测试,该设备结果可达94.5%。
硬件:
1、硬件组件:
2、电路连接:
制动踏板值-柔性传感器与Arduino Nano的电路连接
Arduino纳米33 BLE感和制动踏板单元之间的连接
组装:
哪一种编程语言适合人工智能?——Python在人工智能中的作用
2016-08-16
开启“人工智能”——贝尔金WeMo智能插座套装拆解
2014-05-23
全面解析华为麒麟970,搭载NPU的好处有哪些?
2017-09-05
年薪25万只是白菜价?你绝对想象不出会人工智能的应届工程师是有多抢手!
2017-10-23
带你窥探一下人工智能下的——TPU/NPU/CPU/GPU
2016-07-25
2019年你最值得入手的5款开发板
2019-08-21
树莓派4B与英特尔神经计算棒2实现人体跟踪计数
2019-09-04
树莓派机器学习:运行MobileNet V2 SSD Lite
2019-09-11
这套工业物联网解决方案把乐高变成了一座智慧城市
2019-06-24
STM32的Cube AI是什么?
2019-10-25
讨论