你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

OBD2油耗表

[复制链接]
丿灬幸灬 发布时间:2018-11-9 15:01
拿起一个STM32F103,一个ILI9341和一个ELM327 OBD BT来监测油耗
) X' P: @. j7 _  t. b- i+ T diagram.jpg 1 Z& v9 H& P* d5 ~; ~9 |5 l
描述6 |4 D* b' H) u; f$ O0 K2 ?

0 C. O0 N% Y: E$ W% t& T2 ~: r我的车没有车载电脑,但我想监测油耗。+ k: t; d1 V4 G1 ?
$ o. {, N/ N# x) g( p: S7 Y4 W
我尝试过使用ELM327蓝牙加密软件(中国版),但是加密软件不支持从OBD总线读取燃料数据所需的所有AT命令。
' ]+ J1 ?0 f; e, k- Z) [
( @4 f) u& O7 ]% L所以我找到了一个KW1281 arduino库,移植/改进/修改它到STM32运行arduino IDE,并添加了ILI9341代码。
- |- d. m! u3 A+ R# x# Z; ^ 1114621490705683078.jpg ( r: R! z! |% s- l) p: q- G5 i
2368141490705712996.jpg ( C' ], l/ H4 Y; h6 O3 x
细节
$ {! x& V( d3 g' }+ j$ Z9 z0 s% }" S8 j
这个项目的第一个尝试是使用ELM327蓝牙。3 x! j; B% h6 Z" B
+ R6 h0 v$ k. n( s* ]
但是我发现ELM327提供的OBD信息是不够的。它只提供速度、转速、水温和其他一些传感器读数。
( w& |( p5 n! G4 d+ Q1 Z: U5 w( ^' m) i5 [1 O" c0 j
但与燃料消耗无关……
, T! }! C7 ^7 G
3 q2 ?# f5 C/ t- j9 b) m. V1 [
5 c: }, \4 R$ V2 m& x  \; ]3 S8 L( ^然后我转向另一种方法:“如果我可以直接驾驶OBD巴士呢?”
+ y" I9 u) v* @- E! |
. _9 \9 j. g+ o5 r
8 o+ A6 C. [* a4 ]$ h6 o" L因此,我使用arduinos在网上搜索OBD实现,并找到了这个网页(OBD2_KW1281)描述非常好的KW1281协议(使用我的奥迪A4),并有arduino的代码!好了!
; @0 b7 S! i1 \' |+ t. \* X. H/ B! N/ B7 K# K! B9 G9 u0 i- o) z! i

! ^8 L( k; v9 J9 ?( R8 i我将STM32与arduino IDE结合使用,它收集了三个方面的优点:良好的性能、低廉的价格和大量可用的库/代码。你可以在stm32duino上查看
0 j1 U+ `: p/ {% |$ [8 m9 [& [9 a2 }1 _- j* L& S
5826911490705744148.jpg 3 B6 M8 B6 D% ~3 X; S
组件2 W7 g; q* k% [; w. Z9 m6 n8 d2 T

. ?9 i7 o+ T5 k, T( ~) P8 M* O; U1×STM32F103  微处理器、微控制器、DSPs /微控制器(MCUs)
1 [9 O- J( [/ Z1 x
4 M' Q8 U: a' O' U. q( E- \1×ILI9341    2.8英寸320x240 TFT液晶显示屏
# Z2 R* n( {7 ?( {; U  l
, J5 d" t; E, B- ?: J% ~# c1×ELM327蓝牙适配器    OBD2到蓝牙加密
# ^! Q8 G8 I! O
5 d- l; m$ I! r$ P1×MCP9801   传感器/温度,温度- P4 u* V3 ?6 {0 Q
4 T4 z0 ?# s3 i
1×ESP8266    可能用它作为TFT驱动…
# ?( L( D) Q/ \3 R" R( ~
# f% v- S& c% G1 e* c! W. i/ X1 D6 V; Q0 x6 Z% x
UART信号6 d7 Z, H) x* b

- H. j$ O$ O& v3 T$ b5 _5 g- ^% _7 [5 s
我在ODB适配器上做了手脚,设法得到了一个NPN晶体管,集电极通过电阻器连接到5V轨道上,并将UART TX线连接到基座上。然后将收集器连接到驱动K-Line的NPN的基础上。6 G% y% c' h' `9 r" U
7 O$ r+ i  Y6 a2 n, x- w/ p( p
/ h5 X, w* t3 g  s5 e
这样我就不需要中断反转“东西”来破坏UART计时。
! |+ d1 Z) ^) o, u# `% }
( p$ D" B# b6 J* w( R
( M. b$ p4 q0 e5 g
( i+ r3 [2 z/ G1 S$ N) O& oESP8266准备好了
8 Q: O+ @/ a/ z
  \4 n3 H6 _5 @我终于准备好了一个新的布局,并定义了通信“API”。
* M0 @4 a' C: n5 s9 t$ j: |, W
# e5 ?9 L- N: G( v0 b/ v2 {! n4 v4 ]& A1 S6 R
我的目标是一个具有二进制格式的ID、值和校验和的结构,但是现在,为了便于调试,我制作了一个包含所有ASCII值的简单API: 、、<\n>。
& X* g: f9 K9 ]: ^. K7 G0 w# _3 k. M, z1 S( Y0 K
6 {' b+ t. E0 q1 X
通过这种方式,我可以输入一个串行控制台并手动设置值,检查是否一切正常。" {3 l1 k# x- V  k/ q/ |- X

) y1 ?! J4 G3 e8 N! h$ v0 d* N0 q
* t# r; i; p" B4 ]现在我必须获得STM32代码,以便将相应的值发送到这个API。
* \3 a% V6 [8 G8 R% C& \% j- P
' |& w4 }: ^# F; q  [6 f, M
" i! q# O- _5 b" t6 s" X- A另外,我还没能做到这一点,但我将测试在PC上OBD通信超过90公里/小时的标志与软件运行。如果它起作用,那代码上没有bug,如果不是,我可能不得不重新考虑整个事情……8 G! }9 g' F5 N2 z: d/ ^
. C0 ]- R& M2 V4 Y; u

0 m: u( E. E  v- a8 o. X+ z为什么是90?
4 @0 R/ F7 ~: F' {  t) r; g
. k& [6 A) A  w' q% M7 z% D, W  L9 m因此,我设法在车上安装了一些电缆,并将k线控制信号从OBD适配器传输到仪表板。这样我就可以开车去看展览,而不会看不见路了!!!安全驾驶!% t: t9 Y4 c% h. [1 _

# S% z" Z# k6 t& Y# \; D然后我上路了,一切都很好。偶尔在这里和那里重新连接,但一切似乎都很好。
7 Z$ a2 b3 h; l) P' q( ]- a: {' \/ G  D4 ^
但当我进入高速公路,一切都变得疯狂!我注意到在90公里/小时后OBD似乎停止响应。0 w+ ^4 w, r  _, I" X7 y0 O; B* Y
; M' ?% G( H/ m! P: Q" n  ]# }
当我回到90以下时,它会重新连接,一切正常。
4 }% [# ^1 D4 G- r# S+ ?
, a$ Y" k, w8 \$ P; l
6 F9 g1 y8 l% a/ m6 _代码不是很优化,因为我读取了OBD值(3次),然后我更新了显示器,也读取了温度传感器,也用它更新了显示器。这大约需要130+90=220毫秒。据我所见,我在笔记本电脑上使用了迷走神经网络软件,并捕捉到了控制信号,当软件空转时,它会向ECU来回发送ACK帧。因此,通信和ECU之间的220毫秒可能太长,可能会中断连接。还需要进一步调查……
$ k4 @1 A1 Z$ Z5 G& s4 A
6 [: {% u" ]' U1 S1 q* |  T" O, L1 h: V, z1 P' f0 O9 F$ I3 @7 ~
但是我计划添加一个ESP8266来负责显示控制,而STM32只剩下OBD任务。通过这种方式,我可以让它以最大速度读取数据块,并通过RS232向ESP报告它们,然后让它显示数据。6 F8 p5 m5 A; @$ Z9 G) {

/ L" B0 P  A- ]$ M5 c1 V( h9 y2 [ 9561641490806327343.jpg
; z. l: Q$ e2 z* f* U4 g- Z  y 5270491490806824346.jpg
: F4 j# Y, _, x* v1 k, B$ ^
+ }, R: E. l! S7 q5 ]8 w
收藏 评论3 发布时间:2018-11-9 15:01

举报

3个回答
mzy2364 回答时间:2018-11-9 16:54:37
好东西
疯de_恒 回答时间:2018-11-9 18:24:46
没看懂。
TLLED 回答时间:2018-11-10 10:51:06
OBD的数据协议是自己解码,还是使用OBD模块来采的

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版