Arduino NanoとArduino Mega間でCAN通信する

Arduino Megaに実装したCAN送信プログラムをArduino Nanoに実装したCAN受信プログラムが受信して、PC上のシリアルモニタに表示するテストを行った。ArduinoでCAN通信ガジェットを作るにあたって、クルマのエンジンをかけて動作確認するのへ面倒だ。そこで、クルマのECUの代わりにArduino MegaにCAN送信させることによって、クルマのECUの動作を模擬させ、ガジェットの開発をシミュレーションで行うことが最終的な目的だ。

目次

環境の構成

構成と接続はこんな感じ。CAN送信側にArduino Mega+CAN-BUS Shieldを用いる。電源は適当なUSBポートから供給。CAN受信側は、PCで受信結果を表示するのと、電源の供給を兼ねてPCに接続する。

実際に接続したのが下図。

CAN通信をする場合、CAN配線のHighとLowをつなぐ終端抵抗を入れるが、今回は終端抵抗なしでも動作したので省略。

今回使用した機材

Arduino Mega

パパッと試して動作確認できるArduinoとして、ハイパワーなArduino Megaを選択した。ちょっと値が張るが、試作の時の使用頻度が高いのでArduinoオリジナルのものを選択した。

もし、Arduinoオリジナルにこだわらなければ、互換品が半額以下で入手可能。→こちら

PCとの接続がUSB-TypeBなので、ケーブルを持っていなければ購入しておこう。

Arduni Nano

ユニバーサル基板にハンダ付けできるピッチのピンがついているArduino。そしてめちゃくちゃ小さい。

Arduino
¥4,670 (2024/05/18 14:54:43時点 Amazon調べ-詳細)

ただし少し高いので、試作品の動作確認を行った後は、互換品を使って作成している。そのまま置き換え可能。

Arduni Nano(及び互換品)は、PCとの接続がUSB-TypeBなので、ケーブルを持っていなければ購入しておこう。

Amazonベーシック(Amazon Basics)
¥508 (2024/05/19 01:31:16時点 Amazon調べ-詳細)

ArduinoとCANバスモジュールや、Arduino同士の接続に必要なのがジャンパーケーブル。オス-メス、オス-オス、メス-メスが揃っている。Arduinoのピンにそのまま差せる。

CANバスモジュール

CAN通信できるモジュールがコンパクトで安い。Arduni Nanoと組み合わせて使っている。

Arduino Mega側のプログラム(CAN送信側)

CANを送るArduino Mega側のプログラムはこちらで紹介したものを使用。車両に搭載されているECUと同じように振る舞うことを想定している。

あわせて読みたい
ArduinoNanoとMCP2515でCANデータを受信する 以前、Arduino MEGAとCAN-BUS Shieldを用いて車両のCAN情報を取得する事に成功した。→こちら https://kurumashikou.com/gets660can_via_arduino-and-canbus-shield/ Ard...

Arduino Nano側のプログラム(CAN受信側)

Arduino Nano側のプログラムは、基本的にガジェット開発のための試作環境となるのでCAN送信は考えていない。よって、受信のみ。プログラムはこちら

あわせて読みたい
ArduinoNanoとMCP2515でCANデータを受信する 以前、Arduino MEGAとCAN-BUS Shieldを用いて車両のCAN情報を取得する事に成功した。→こちら https://kurumashikou.com/gets660can_via_arduino-and-canbus-shield/ Ard...

シリアルでCAN受信を確認する

Arduino開発環境を立ち上げてもいいが、今回はTeraTermというシリアルモニタプログラムを使ってみた。https://ttssh2.osdn.jp/から最新のexe版をダウンロード。

すべての機器を接続したら、TeraTermを起動して「シリアル」を選択。環境によって違うが、私の環境の場合はCOM3だった。

そのままだと文字化けしているので、以下のように設定。

Arduino Megaから送信されているCAN ID 0x420(10進数で1056)、データ長8、7バイト目が0~250まで1ずつ増加してまた0に戻る、という情報をArduino Nano側で受信していることが確認できた。

まとめ

Arduino Megaに実装したCAN送信プログラムをArduino Nanoに実装したCAN受信プログラムが受信して、PC上のシリアルモニタに表示するテストを行い、Arduino Megaから送信されているCANデータをArduino Nano側で受信していることが確認できた。作成したArduino Megaのプログラムは暫定のもの。

次は、Arduino Megaに、実際の車両ECUのデータを模したものを送信させるように改修を行う→こちら

あわせて読みたい
CAN通信のシミュレーション用の模擬ECUを作成 CAN送信モジュールを作成し、Arduino同士の通信が可能になったので、今回はArduino Megaに、実際の車両ECUのデータを模したものを送信させるようにプログラムの改修を行...

関連記事

あわせて読みたい
ArduinoNanoとMCP2515でCANデータを受信する 以前、Arduino MEGAとCAN-BUS Shieldを用いて車両のCAN情報を取得する事に成功した。→こちら https://kurumashikou.com/gets660can_via_arduino-and-canbus-shield/ Ard...
あわせて読みたい
ArduinoでCANデータを送信する CANデータを読み取ることができる受信モジュールについてはすでに作成したものの、今後のCANを使った車載ガジェットの開発のために、CANを送信できるプログラムを作成し...
あわせて読みたい
CAN通信のシミュレーション用の模擬ECUを作成 CAN送信モジュールを作成し、Arduino同士の通信が可能になったので、今回はArduino Megaに、実際の車両ECUのデータを模したものを送信させるようにプログラムの改修を行...
あわせて読みたい
ArduinoとCAN通信で作るレブインジケータ S660やアルトワークスでサーキットを走行すると、ついついアツくなってしまい、レブリミッターを作動させてしまう事があった。レブリミッターはその通り、上限回転数に...
この記事をSNSでシェアする
  • URLをコピーしました!

コメント

コメントする

目次