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。そしてめちゃくちゃ小さい。
ただし少し高いので、試作品の動作確認を行った後は、互換品を使って作成している。そのまま置き換え可能。
Arduni Nano(及び互換品)は、PCとの接続がUSB-TypeBなので、ケーブルを持っていなければ購入しておこう。
ArduinoとCANバスモジュールや、Arduino同士の接続に必要なのがジャンパーケーブル。オス-メス、オス-オス、メス-メスが揃っている。Arduinoのピンにそのまま差せる。
CANバスモジュール
CAN通信できるモジュールがコンパクトで安い。Arduni Nanoと組み合わせて使っている。
Arduino Mega側のプログラム(CAN送信側)
CANを送るArduino Mega側のプログラムはこちらで紹介したものを使用。車両に搭載されているECUと同じように振る舞うことを想定している。
Arduino Nano側のプログラム(CAN受信側)
Arduino Nano側のプログラムは、基本的にガジェット開発のための試作環境となるのでCAN送信は考えていない。よって、受信のみ。プログラムはこちら
シリアルで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のデータを模したものを送信させるように改修を行う→こちら
コメント