回答編集履歴
7
ライブラリについて更新
test
CHANGED
@@ -23,6 +23,14 @@
|
|
23
23
|
[OBD-IIコネクタピン配置](https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%B3%E3%83%BB%E3%83%9C%E3%83%BC%E3%83%89%E3%83%BB%E3%83%80%E3%82%A4%E3%82%A2%E3%82%B0%E3%83%8E%E3%83%BC%E3%82%B7%E3%82%B9#OBD2)
|
24
24
|
|
25
25
|
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
>ソフトはArduionoが無償で提供してくれているAPI使いました。
|
30
|
+
|
31
|
+
>https://github.com/Seeed-Studio/CAN_BUS_Shield
|
32
|
+
|
33
|
+
これとは別の[MCP_CAN_lib](https://github.com/coryjfowler/MCP_CAN_lib)を使用したコードに見えますが…
|
26
34
|
|
27
35
|
CAN0.begin()の第1引数にCAN_STDIDを指定していますが、MCP_ANYかMCP_STDEXTです。
|
28
36
|
|
6
サンプルスケッチについて追記
test
CHANGED
@@ -1,7 +1,3 @@
|
|
1
|
-
CAN0.begin()の第3引数にMCP_8MHZを指定されていますが、回路図によると16MHzなのでMCP_16MHZとしてください。
|
2
|
-
|
3
|
-
|
4
|
-
|
5
1
|
>D-SUB9のピン配列はこちらを参考にしました。
|
6
2
|
|
7
3
|
>D-SUB9のピンの配列はこのようにしました
|
@@ -25,3 +21,137 @@
|
|
25
21
|
|
26
22
|
|
27
23
|
[OBD-IIコネクタピン配置](https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%B3%E3%83%BB%E3%83%9C%E3%83%BC%E3%83%89%E3%83%BB%E3%83%80%E3%82%A4%E3%82%A2%E3%82%B0%E3%83%8E%E3%83%BC%E3%82%B7%E3%82%B9#OBD2)
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
CAN0.begin()の第1引数にCAN_STDIDを指定していますが、MCP_ANYかMCP_STDEXTです。
|
28
|
+
|
29
|
+
MCP_STDEXTと値がたまたま一致していますが…
|
30
|
+
|
31
|
+
第3引数にMCP_8MHZを指定されていますが、回路図によると16MHzなのでMCP_16MHZとしてください。
|
32
|
+
|
33
|
+
StandardID(11bit)決めうちですがこれで良いのでしょうか。
|
34
|
+
|
35
|
+
ネットで拾ったコードを試す前にライブラリに付属のサンプルスケッチで試してみては?
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
```C
|
40
|
+
|
41
|
+
// CAN Receive Example
|
42
|
+
|
43
|
+
//
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
#include <mcp_can.h>
|
48
|
+
|
49
|
+
#include <SPI.h>
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
long unsigned int rxId;
|
54
|
+
|
55
|
+
unsigned char len = 0;
|
56
|
+
|
57
|
+
unsigned char rxBuf[8];
|
58
|
+
|
59
|
+
char msgString[128]; // Array to store serial string
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
#define CAN0_INT 2 // Set INT to pin 2
|
64
|
+
|
65
|
+
MCP_CAN CAN0(10); // Set CS to pin 10
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
void setup()
|
72
|
+
|
73
|
+
{
|
74
|
+
|
75
|
+
Serial.begin(115200);
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
// Initialize MCP2515 running at 16MHz with a baudrate of 500kb/s and the masks and filters disabled.
|
80
|
+
|
81
|
+
if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_16MHZ) == CAN_OK)
|
82
|
+
|
83
|
+
Serial.println("MCP2515 Initialized Successfully!");
|
84
|
+
|
85
|
+
else
|
86
|
+
|
87
|
+
Serial.println("Error Initializing MCP2515...");
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
CAN0.setMode(MCP_NORMAL); // Set operation mode to normal so the MCP2515 sends acks to received data.
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
pinMode(CAN0_INT, INPUT); // Configuring pin for /INT input
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
Serial.println("MCP2515 Library Receive Example...");
|
100
|
+
|
101
|
+
}
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
void loop()
|
106
|
+
|
107
|
+
{
|
108
|
+
|
109
|
+
if(!digitalRead(CAN0_INT)) // If CAN0_INT pin is low, read receive buffer
|
110
|
+
|
111
|
+
{
|
112
|
+
|
113
|
+
CAN0.readMsgBuf(&rxId, &len, rxBuf); // Read data: len = data length, buf = data byte(s)
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
if((rxId & 0x80000000) == 0x80000000) // Determine if ID is standard (11 bits) or extended (29 bits)
|
118
|
+
|
119
|
+
sprintf(msgString, "Extended ID: 0x%.8lX DLC: %1d Data:", (rxId & 0x1FFFFFFF), len);
|
120
|
+
|
121
|
+
else
|
122
|
+
|
123
|
+
sprintf(msgString, "Standard ID: 0x%.3lX DLC: %1d Data:", rxId, len);
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
Serial.print(msgString);
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
if((rxId & 0x40000000) == 0x40000000){ // Determine if message is a remote request frame.
|
132
|
+
|
133
|
+
sprintf(msgString, " REMOTE REQUEST FRAME");
|
134
|
+
|
135
|
+
Serial.print(msgString);
|
136
|
+
|
137
|
+
} else {
|
138
|
+
|
139
|
+
for(byte i = 0; i<len; i++){
|
140
|
+
|
141
|
+
sprintf(msgString, " 0x%.2X", rxBuf[i]);
|
142
|
+
|
143
|
+
Serial.print(msgString);
|
144
|
+
|
145
|
+
}
|
146
|
+
|
147
|
+
}
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
Serial.println();
|
152
|
+
|
153
|
+
}
|
154
|
+
|
155
|
+
}
|
156
|
+
|
157
|
+
```
|
5
クロック指定について追記
test
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
CAN0.begin()の第3引数にMCP_8MHZを指定されていますが、回路図によると16MHzなのでMCP_16MHZとしてください。
|
2
|
+
|
3
|
+
|
4
|
+
|
1
5
|
>D-SUB9のピン配列はこちらを参考にしました。
|
2
6
|
|
3
7
|
>D-SUB9のピンの配列はこのようにしました
|
4
ピン番号修正
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
|:--|:--:|:--:|
|
14
14
|
|
15
|
-
|GND|
|
15
|
+
|GND|5|2|
|
16
16
|
|
17
17
|
|CAN-H|6|3|
|
18
18
|
|
3
ピン更新、参考URL記載
test
CHANGED
@@ -12,8 +12,12 @@
|
|
12
12
|
|
13
13
|
|:--|:--:|:--:|
|
14
14
|
|
15
|
-
|GND|4
|
15
|
+
|GND|4|2|
|
16
16
|
|
17
17
|
|CAN-H|6|3|
|
18
18
|
|
19
19
|
|CAN-L|14|5|
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
[OBD-IIコネクタピン配置](https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%B3%E3%83%BB%E3%83%9C%E3%83%BC%E3%83%89%E3%83%BB%E3%83%80%E3%82%A4%E3%82%A2%E3%82%B0%E3%83%8E%E3%83%BC%E3%82%B7%E3%82%B9#OBD2)
|
2
車両側とのピン対応を記載、余計な説明を削除
test
CHANGED
@@ -2,28 +2,18 @@
|
|
2
2
|
|
3
3
|
>D-SUB9のピンの配列はこのようにしました
|
4
4
|
|
5
|
-
どちらのピン配置を使用されましたか。
|
6
|
-
|
7
5
|
車両との配線は自作でしょうか。
|
8
6
|
|
9
|
-
|
7
|
+
表に書かれているOBD-IIは車両側OBD-IIコネクタの端子番号ではなく、市販されているOBD-II<->D-SUB9ケーブルのD-SUB9側ピン配置です。
|
10
8
|
|
11
|
-
|
9
|
+
車両側OBD-IIコネクタとの接続は以下のとおりですが正しいピンに接続されていますか。
|
12
10
|
|
13
|
-
|
11
|
+
|端子|OBD-IIピン|D-SUB9ピン|
|
14
12
|
|
15
|
-
|
13
|
+
|:--|:--:|:--:|
|
16
14
|
|
17
|
-
|
|
15
|
+
|GND|4,5|2|
|
18
16
|
|
19
|
-
|
|
17
|
+
|CAN-H|6|3|
|
20
18
|
|
21
|
-
|GND|4,5|
|
22
|
-
|
23
|
-
|CAN-H|6|
|
24
|
-
|
25
|
-
|CAN-L|14|
|
19
|
+
|CAN-L|14|5|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
市販のケーブルを買われたならD-SUB9端子側は表のOBD-II側のピン配置になっていると思いますが…
|
1
ピン配置について更新
test
CHANGED
@@ -1,9 +1,29 @@
|
|
1
1
|
>D-SUB9のピン配列はこちらを参考にしました。
|
2
2
|
|
3
|
-
|
3
|
+
>D-SUB9のピンの配列はこのようにしました
|
4
|
+
|
5
|
+
どちらのピン配置を使用されましたか。
|
6
|
+
|
7
|
+
車両との配線は自作でしょうか。
|
8
|
+
|
9
|
+
上のD-SUB9端子図に書かれた配線としたのであれば、SJ4,SJ5,SJ6のパターンをカットして切り替えしてありますか?
|
4
10
|
|
5
11
|
回路図にSJ4,SJ5,SJ6の切り替えをしないとピン配置は表のOBD-II側のピンになるように描かれています。製品画像でもそのようにパターンが繋がっています。
|
6
12
|
|
7
|
-
|
13
|
+
基板に手を加えないのであれば、表のOBD-II側のピン配置で配線し直してみてください。
|
8
14
|
|
15
|
+
また、車両側OBD-IIコネクタの端子は以下のとおりですが正しいピンに接続されていますか。
|
16
|
+
|
17
|
+
|OBD-II端子|ピン|
|
18
|
+
|
19
|
+
|:--|:--:|
|
20
|
+
|
21
|
+
|GND|4,5|
|
22
|
+
|
23
|
+
|CAN-H|6|
|
24
|
+
|
25
|
+
|CAN-L|14|
|
26
|
+
|
27
|
+
|
28
|
+
|
9
|
-
|
29
|
+
市販のケーブルを買われたならD-SUB9端子側は表のOBD-II側のピン配置になっていると思いますが…
|