自作LANケーブルの作り方〜Arduinoとセンサ間をLANケーブルでI2C、1-Wire、電源供給

はじめに
この記事では、CAT5EのLANケーブルを使った自作LANケーブルの作り方を解説していきます。Arduino(ESP32)とセンサをLANケーブルで繋いで、I2C通信および1-Wireを実現させました。はじめにLANケーブルの作り方をご紹介し、後半ではI2Cや1-Wire通信でLANケーブルを使う場合に気をつけなければならないことをご紹介いたします。
LANケーブルの製作
CAT5EのLANケーブルを用意しました。
ニッパーなどを使って、LANケーブルの絶縁皮膜を2cmほど剥き、ツイストペアをほぐします。
ここでLANケーブルのワイヤーの順番ですが、B結線と呼ばれるT568Bが一般的ですので下図のような順番に揃えます。
- 茶色
- 白茶
- 緑
- 白青
- 青
- 白緑
- オレンジ
- 白オレンジ
緑と青だけ順番がイレギュラーなので注意してください。
ワイヤーの先端が揃うようにカットします。
ワイヤーの順番を保ちながらLANプラグに差し込みます。奥までしっかりと差し込むようにしてください。またこの時、順番が間違ってないか目視でもよく確認します。ここが一番大事な作業です。
かしめ工具にそのままプラグを差し込み、ゆっくりハンドルを握ります。一段一段カチカチと音が鳴ります。
最後にカチャっと鳴るまで握り込みます。以上でLANケーブルとプラグが接着されました。
もう一端も同様にして作業します。
完成したLANケーブルをLANテスターでチェックします。間違いなく配線できていれば、下の動画のように2つのLEDライトが同じ順番で点灯されます。
以上でLANケーブルの製作の解説は終わりです。
I2Cや1-Wire通信をLANケーブルで行う場合の注意点
製作したCAT5EのLANケーブルを、ESP32(Arduino)のI2C通信および1-Wire通信に使ってみました。しかし通信エラーのトラブルがありましたので、ここではその改善点、注意点を記します。
I2Cの場合
まず、I2Cの場合です。色々試したところ、CAT5EのLANケーブルでは2m程度しか通信できませんでした。以下の項目も試しましたが効果ありませんでした。
- SCLとSDAはツイストペアさせない
- プルアップの抵抗値を低くする
- I2Cのクロック周波数を低くする
ちなみに、GNDとVddは2本の線を使って配線しました。
さて結論から申しますと、シールド対策されたLANケーブルで改善されました。具体的には、こちらのCAT7のLANケーブル5mで試したところ、I2C通信が正常に動作確認できました。
もっと延長できるのかどうか。また、CAT6でもイケるのかどうかも気になるところです。今後の課題とします。
調べるところによるとI2Cはノイズの影響に弱いようなので、シールドされているLANケーブルが良いとのことです。そもそもI2Cは近距離のデバイス間で通信を前提とした規格のようで、何メートルにも渡ってケーブルを延長するのは無理がありました。
1-Wireの場合
1-Wireの場合は、プルアップ抵抗4.7kΩを入れることでCAT5Eでも安定して通信可能になりました。ESP32のソフトウェアプルアップだとインピーダンスが高いためでしょうか、通信エラーが起こってしまいました。外部抵抗を入れてハードウェア的にプルアップすることでこの問題が解決できました。
ちなみにSPI通信では、以前CAT5eのLANケーブルを使って20mまで通信できた経験がありますので、まだまだ研究の余地がありそうです。
下の写真のようにセンサの中継機を作って、Arduino端末と中継機をLANケーブルでの通信を実現させました。
関連記事
- DS18B20の使い方|Arduino・ESP32・Raspberry Pi
- ESP32でAdafruit STEMMA Soil Sensorを使って土壌水分量と温度の測定
- ESP32とMH-Z19CセンサでCO2濃度の測定
- ESP32で照度センサTSL25721を使ってみた