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

OBD2油耗表

[复制链接]
丿灬幸灬 发布时间:2018-11-9 15:01
拿起一个STM32F103,一个ILI9341和一个ELM327 OBD BT来监测油耗9 r0 E5 r/ H, Q5 }; x
diagram.jpg & `% ]" n4 W4 |% B
描述3 n! X2 a& d. |' K* j* O
' [+ |9 N9 c) j3 p# Z
我的车没有车载电脑,但我想监测油耗。3 V/ N6 h, }$ e

7 u* b( V2 a; U4 _我尝试过使用ELM327蓝牙加密软件(中国版),但是加密软件不支持从OBD总线读取燃料数据所需的所有AT命令。
/ T! V; E. m2 ]0 e+ Y
! N4 y7 v6 K. a3 _2 n  h# R所以我找到了一个KW1281 arduino库,移植/改进/修改它到STM32运行arduino IDE,并添加了ILI9341代码。
* n5 C" e0 w8 s 1114621490705683078.jpg
  K" b7 a2 n; w  U# ^( V/ I 2368141490705712996.jpg . n' V( H0 ~/ E
细节% a7 D/ a( ]' L" n9 f' }
# F  |0 Y# k1 z5 C5 i2 H
这个项目的第一个尝试是使用ELM327蓝牙。) [# q0 o/ f# s9 H/ ?

' B$ T. V2 q" }但是我发现ELM327提供的OBD信息是不够的。它只提供速度、转速、水温和其他一些传感器读数。2 h) x. ^! j; ]! |7 {* p+ n( p

) m0 `' ?; J( f  z1 o) E6 K) [但与燃料消耗无关……
- P, O3 q! G/ u( [3 x/ l6 S# D! V- G

" N/ }8 r8 G1 O; L* V然后我转向另一种方法:“如果我可以直接驾驶OBD巴士呢?”
$ K. x- e4 p! W; P
% {- e5 L) W7 s) [0 C% o4 ]* ], O! o
因此,我使用arduinos在网上搜索OBD实现,并找到了这个网页(OBD2_KW1281)描述非常好的KW1281协议(使用我的奥迪A4),并有arduino的代码!好了!" J4 u6 x' \+ y$ v
7 {8 r. F$ @& h" |) l6 e0 p/ H
* o5 s' B# W" [1 j- t( `6 U, a2 _
我将STM32与arduino IDE结合使用,它收集了三个方面的优点:良好的性能、低廉的价格和大量可用的库/代码。你可以在stm32duino上查看0 W3 i! w6 `; p1 X  \& c- d
* }/ |1 F& r* h% {1 z. ]3 a
5826911490705744148.jpg
2 I; `  E; H4 J# a, R组件
3 F# p$ m# o0 F) Z& G; O# [8 ^6 J* K$ x" C
1×STM32F103  微处理器、微控制器、DSPs /微控制器(MCUs)7 o- b7 \/ M% `

& z0 R7 ?4 I: x' @1×ILI9341    2.8英寸320x240 TFT液晶显示屏- u5 M; f3 h' n1 k
2 n, G- A* n3 Q% `  ?. b7 O) U9 q) M
1×ELM327蓝牙适配器    OBD2到蓝牙加密3 `0 _  V5 R% y2 t" d: m

' V$ h1 }. y' A2 _$ V* }1×MCP9801   传感器/温度,温度
" w$ |7 _  y4 Y+ [
, z/ g2 I2 `3 r/ a; @" g% ?1×ESP8266    可能用它作为TFT驱动…
3 V1 o! b# C  ~$ ?: _" A( t# h0 D2 F. B: G. h
/ ^: g9 F) i6 I5 p
UART信号
  b; T; _, \: Q/ B* H! ?. G: l+ B" [$ @" L. M" g% Q* o- S6 K3 \
1 Y9 d" l, e" y8 p8 D( M9 e
我在ODB适配器上做了手脚,设法得到了一个NPN晶体管,集电极通过电阻器连接到5V轨道上,并将UART TX线连接到基座上。然后将收集器连接到驱动K-Line的NPN的基础上。* h5 r  O1 z; H
: w3 e: ~3 Z1 p) y

" S! R# ~9 e( R8 P* g这样我就不需要中断反转“东西”来破坏UART计时。, [' U- U6 G" S( t) r

: w3 L% a/ P6 h+ d# h, m' q
1 u5 W9 i" G- z! D7 ]2 y
, G) k8 h7 _! j0 hESP8266准备好了: E" |( L- m2 f& m% U3 Y7 S9 c

/ V, m; c: P* `' W. B5 R我终于准备好了一个新的布局,并定义了通信“API”。. t* B0 m5 U' j
* ?' V; H9 g! H  H) i4 o8 f

9 b" ~' ?7 s' ]( @% `我的目标是一个具有二进制格式的ID、值和校验和的结构,但是现在,为了便于调试,我制作了一个包含所有ASCII值的简单API: 、、<\n>。
; W' D* Z' C+ x. b# h, o+ d0 N6 s! [( C% }% c

: ~2 T: L# m% P6 f4 t通过这种方式,我可以输入一个串行控制台并手动设置值,检查是否一切正常。
0 t9 h0 F: \/ O7 x" k! O, E) S" q9 A
& \, [! K" ?& [% K3 A5 n4 S$ W7 U7 E6 O  d- @  d. a. Y
现在我必须获得STM32代码,以便将相应的值发送到这个API。5 h) m- ]0 |% {( v* }9 b
% R8 L$ S$ Q6 p8 F; t7 |

6 g1 o* b/ z4 ?* p另外,我还没能做到这一点,但我将测试在PC上OBD通信超过90公里/小时的标志与软件运行。如果它起作用,那代码上没有bug,如果不是,我可能不得不重新考虑整个事情……2 K4 u0 p, C) b# z. R9 W
: m* |* x8 C; B& w+ w( c

' I9 v: V2 ]8 [4 w为什么是90?/ I, M' Z% T5 L/ ?9 @5 O

' c7 h2 C5 e1 m' v0 k因此,我设法在车上安装了一些电缆,并将k线控制信号从OBD适配器传输到仪表板。这样我就可以开车去看展览,而不会看不见路了!!!安全驾驶!* Q: X- _; O. S0 v; s
, r2 k/ E- |' l' n+ p- H7 P# s% A* m# A* {
然后我上路了,一切都很好。偶尔在这里和那里重新连接,但一切似乎都很好。3 l- _, P/ i6 C) K9 S
! {  Q# L& y( Q# b7 X+ _3 ^
但当我进入高速公路,一切都变得疯狂!我注意到在90公里/小时后OBD似乎停止响应。4 U9 d( E+ w, N2 G

( E) N2 R. o# _4 W2 A$ i" g5 E7 k当我回到90以下时,它会重新连接,一切正常。
) F7 A! N7 O& B1 x$ f# _3 ~4 |  C; X9 h# L+ X2 h* E( _: p8 f0 c

) B/ m3 `8 A5 v3 _# B2 l9 e/ \6 P5 |代码不是很优化,因为我读取了OBD值(3次),然后我更新了显示器,也读取了温度传感器,也用它更新了显示器。这大约需要130+90=220毫秒。据我所见,我在笔记本电脑上使用了迷走神经网络软件,并捕捉到了控制信号,当软件空转时,它会向ECU来回发送ACK帧。因此,通信和ECU之间的220毫秒可能太长,可能会中断连接。还需要进一步调查……
8 h$ Y; l& x4 X
0 L! o# S7 \; M0 P: e+ ^) i* f* C$ }. o4 [* Y
但是我计划添加一个ESP8266来负责显示控制,而STM32只剩下OBD任务。通过这种方式,我可以让它以最大速度读取数据块,并通过RS232向ESP报告它们,然后让它显示数据。
6 J" N, X6 F  |, r; ]" w; D; H9 y0 ]
- Y8 P% ~! H  Q, M 9561641490806327343.jpg
4 b3 H0 b! [7 f+ f6 c3 _# p+ o; f 5270491490806824346.jpg   Q; e* ^+ Q" P8 i1 l

  ^, w* B, E8 C/ d& y
赞 收藏 评论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 手机版