回答編集履歴

7

ライブラリについて更新

2019/07/11 18:42

投稿

SHOMI
SHOMI

スコア4079

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

サンプルスケッチについて追記

2019/07/11 18:42

投稿

SHOMI
SHOMI

スコア4079

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

クロック指定について追記

2019/07/11 18:35

投稿

SHOMI
SHOMI

スコア4079

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

ピン番号修正

2019/07/11 18:11

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  |:--|:--:|:--:|
14
14
 
15
- |GND|4|2|
15
+ |GND|5|2|
16
16
 
17
17
  |CAN-H|6|3|
18
18
 

3

ピン更新、参考URL記載

2019/07/11 17:35

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -12,8 +12,12 @@
12
12
 
13
13
  |:--|:--:|:--:|
14
14
 
15
- |GND|4,5|2|
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

車両側とのピン対応を記載、余計な説明を削除

2019/07/11 17:34

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -2,28 +2,18 @@
2
2
 
3
3
  >D-SUB9のピンの配列はこのようにしました
4
4
 
5
- どちらのピン配置を使用されましたか。
6
-
7
5
  車両との配線は自作でしょうか。
8
6
 
9
- のD-SUB9端子図に書かれた配線としたであれば、SJ4,SJ5,SJ6のパターをカットして切り替えしてありまか?
7
+ 表に書かれているOBD-IIは車両側OBD-IIコネクタ端子番号ではなく、市販されているOBD-II<->D-SUB9ケーブルD-SUB9側ピ配置で
10
8
 
11
- 回路図にSJ4,SJ5,SJ6の切り替えをしないとピン配置は表のOBD-IIのピンになるように描かれています。製品画像でもそのようにパターンが繋がっています。
9
+ 車両側OBD-IIコネクタと接続は以下のとおりですが正しいピンに接続されています
12
10
 
13
- 基板に手を加えないのであれば、表のOBD-II側のピン配置で配線し直してみてください。
11
+ |端子|OBD-IIピン|D-SUB9ピン|
14
12
 
15
- また、車両側OBD-IIコネクタの端子は以下のとおりですが正しいピンに接続されていますか。
13
+ |:--|:--:|:--:|
16
14
 
17
- |OBD-II端子|ピン|
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

ピン配置について更新

2019/07/11 17:28

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -1,9 +1,29 @@
1
1
  >D-SUB9のピン配列はこちらを参考にしました。
2
2
 
3
- 図は表のCAN側のピン配置ですが、
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
- SJ4,SJ5,SJ6パターをカットて切り替えしてありますか?
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
- 基板に手加えいのであれば、表のOBD-II側のピン配置で配線し直しみてくださ
29
+ 市販のケーブル買われたらD-SUB9端子側は表のOBD-II側のピン配置になっていると思いますが…