pico-ETH-CH9121

コンピュータ、組み込み

マイコンから有線LAN通信を行うためのモジュールです。
pico-ETH-CH9121の設定方法、基本的な使い方としてマイコンをTCP Serverにしたパソコンとの通信、マイコン同士のLAN通信を紹介します。

今回紹介するもの

pico-ETH-CH9121について

特徴

このモジュールはRaspberry Pi Picoを使ってLAN通信を簡単に行うことができるモジュールです。
あらかじめモジュールの専用GUIを使ってモジュール自身と相手のLAN通信設定します。

マイコン側はUARTプログラムを書くことでLANを意識することなく通信できます。

製品情報

駆動電圧3.3 / 5V
UART TTL3.3 / 5V
通信モードTCP/UDP
通信速度300 – 921.6Kbps
当方では、赤字条件での動作を確認しています。通信速度は115,200bpsです。

ピン配置

pico-ETH-CH9121が使用しているピンが濃色で示されています。
薄色はピンヘッダーから利用できます。

外観

モジュールの上面にはピンソケットが実装されていて、Raspberry Pi Picoを実装する。
ピンソケットはロングピンなので、Raspberry Pi Picoを合体させてもピンを使用できる。

Raspberry Pi Picoと合体した図。

使用感

Raspberry Pi Picoとの合体が前提となっているので、合体後は一体感がありすっきりしています。
モジュールのLAN設定が少し面倒ですが、UARTスケッチでLAN通信ができるのは楽です。

他にも、LAN通信をするためのモジュールやRaspberry Pi PicoにLANモジュールを搭載したモデルを紹介しているので参考にしてください。

マイコン同士のEthenet通信

この投稿ではpico-ETH-CH9121の設定や使い方について記載をしています。
当サイトではpico-ETH-CH9121以外でのEthenet接続による通信を紹介しています。

これらはpico-ETH-CH9121を含めてそれぞれServerとClientともにどの組み合わせでも使用することができます。
当記事の紹介では、一番高くて初期設定が面倒ですが、スケッチは一番シンプルになります。

紹介記事内容特徴
W5100S-EVB-Pico
基本的なRP2040の使い方と、
Ethernet接続の通信を紹介しています。
・TCP Server, TCP Client
RP2040搭載しているので、シンプルに済ませる場合におすすめ。
Ethernet HATモジュール
Raspberry Pi Picoとの合体によるEthernet接続の通信を紹介しています。
・TCP Server, TCP Client
Raspberry Pi Pico は単体で使用するなど
用途を限定しない場合。
費用は価格なるが、使い分けることはできます。
W5500 Ethernet接続モジュール
ESP の T-Liteを使ったEthenet接続の通信を紹介しています。
・TCP Server, TCP Client

W5500とESP32 C3, S2, S3 との接続
W5500とRP2040系での接続方法について記載しています。
できるだけ小さい面積と費用で済ませたい場合の組み合わせ。
専用配線ではないため配線が面倒ですが、RP2040-ZeroとW5500の組み合わせは最小、最安です。

準備

使うもの

名称(型番)用途入手
Raspberry Pi Pico 2枚USB対抗通信に使用電子部品
ネットショップ
pico-EHT-CH9121 2枚USB対向通信に使用マルツ、Switchscience
Ali Expressなど
LANケーブル(クロス)pico-ETH-CH9121同士を接続ダイソー
USB-LAN変換アダプタ
(メーカー不問)
pico-ETH-CH9121の設定
パソコンとモジュールの通信
Amazonなど

配線

Raspberry Pi Picoとpico-ETH-CH9121を合体させます。
pico-ETH-CH9121とパソコン(USB-LANアダプタ)とLANケーブルで接続します。
Raspberry Pi Pico とパソコンをUSBで接続します。

通信設定(pico-ETH-CH9121側)

pico-ETH-CH9121の設定アプリケーションをダウンロードします。

アプリケーションを起動します。
①USB-LANアダプタが認識できていれば、Adapterリストボックスに表示されます。
 リストボックスになければUSB-LANアダプタを再度接続しなおして、Refreshボタンを押下します。

②Searchを押すことで、Adapterに接続されているpico-ETH-CH9121端末を検索し、結果を「Module List」に表示します。

「Module List」にリストが出てこない場合、配線の確認をする。
またはRaspberry Pi Pico をBOOTモードで起動して初期化を行います。

③pico-ETH-CH9121を選択しダブルクリックすると、個体の設定内容が「Basic」に表示されます。

④と⑤の※(x)は対向通信で通信相手を整合させるために同じ※(x)同士で設定を一致させます。

TCP Serverにする設定TCP Clientにする設定
DHCPレ点無しレ点無し
IP192.168.1.200※1192.168.1.100※2
Mask255.255.255.0255.255.255.0
GateWay192.168.1.100※2192.168.1.200※1
Serial Negoレ点無しレ点無し

引き続き⑤の設定内容です。

TCP Serverにする設定TCP Clientにする設定
ModeTCP SERVERTCP CLIENT
Local Port5000※35000
Conn TypeIPIP
Dest IP192.168.1.100192.168.1.200※2
Dest Port50005000※3
Baud115200115200
Data Bit88
Stop Bit11
ParityNoneNone
Conn Lostレ点有りレ点有り
Pack Len10241024
Pack TimeOut00
Reconnectレ点無しレ点無し
デフォルトからの重要な変更項目を赤で表記しています。
項目は多いですが、変更する項目は少ない。

⑥ Set ALLを押下します。

通信設定(パソコン側)

パソコンとマイコンのLAN通信をさせない場合は不要です。

パソコンとpico-ETH-CH9121を通信させるために、パソコン側のLAN通信設定を変更します。
今回USB-LANアダプタを使用しています。

※重要
設定の変更を行うアダプタを間違えると
ネット接続できなくなるなど
問題が発生する可能性があります。

Serverとして動作させるモジュールと、Client側で動作させるモジュールで設定が異なります。
パソコンとモジュールとの通信は、1つずつ行います。
Server側と接続するときは「Server側のモジュールと通信する場合」の設定、
Client側と接続するときは「Client側のモジュールと通信する場合」の設定に変更して作業してください。

ライブラリの入手と修正

pico-ETH-CH9121の設定アプリケーションからサンプルライブラリを入手します。
解凍すると
[解凍先フォルダ]\pico-ETH-CH9121_CODE\C\RX_TX\lib\CH9121 フォルダに
CH9121.c
CH9121.h
があります。
スケッチと同じフォルダにコピーします。
CH9121.cはファイル名を CH9121.cpp に変更して、以下の行を修正します。

11行目 UCHAR => char

pico-ETH-CH9121 server スケッチ

スケッチの説明

スケッチはモジュールの初期化が含まれているだけでUARTプログラムです。
サーバー側もクライアント側も共通です。

パソコンから受け取ったデータの大文字と小文字を入れ替えてUARTへ送信します。
UARTから受け取ったデータはそのままパソコンへ送信します。

スケッチ

/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by tamanegi
Released under the MIT license

About Licence
当サイトで掲載しているスケッチのライセンスについて OSSの利用について 当サイトで掲載しているスケッチおよびプログラム(以下プログラム)は、Open Source Software(以下OSS)を利用しています。誰でも当サイトに掲載されて...
【スケッチの説明】 Raspberry Pi Pico 基板で使用できます。 パソコンからシリアル通信で受信した文字が英文字なら大文字と小文字を入れ替えてUART0に 送信します。 UART0から受信した文字はそのままパソコンにシリアル通信で送信します。 当スケッチはUART0の接続先がpico-ETH-CH9121であるためLAN通信になります。 【ライブラリ】 Raspberry Pi RP2040 Boards(2.3.2) > Raspberry Pi Pico ETH-pico-CH9121 ライブラリ CH9121.h, CH9121.cpp 【準備】 ETH-pico-CH9121とRaspberry Pi Picoを合体させます。 ETH-pico-CH9121 をServerまたはClientの設定を行います。 ETH-pico-CH9121同士をLANケーブルで接続する。 【バージョン情報】 2022/8/5 : 新規 2022/9/16 : コメントの修正 **********************************************************************/ #include "CH9121.h" #define UART0_TX 0 //SDAにはGP0を使用する #define UART0_RX 1 //SCLにはGP1を使用する uint32_t i = 0; void setup() { CH9121_init(); //ETH-pico-CH9121の初期化 Serial.begin(115200); //パソコン側からの読み取りと書き込みに使用します。 Serial1.setTX(UART0_TX); //もう一方のRaspberry Pi Picoとの通信に使用します。 Serial1.setRX(UART0_RX); Serial1.begin(115200); } void loop() { char buf = 0; //<<送信側としての処理>> //パソコンからの受信処理と受信側への送信 if(Serial.available() == true) { buf = Serial.read(); //ASCコード上で、0b1000 0000ビットが0の時、0b0111 0000 のいずれかが 1なら英文字(正確ではありません。) if(((buf & 0x80) != 0x80) && ((buf & 0x40) == 0x40)) { //ASCコード上で 0b0010 0000 のビットを反転させることで、大文字と小文字を入れ替える。 buf = buf ^ 0x20; } //受信側へデータを送信する。 Serial1.write(buf); } //<<受信側としての処理>> //送信側からの受信処理と、パソコンへの送信 if(Serial1.available() == true) { buf = Serial1.read(); Serial.write(buf); } }

結果(パソコンとTCPサーバーの通信)

pico-ETH-CH9121をTCP Serverにする設定によりTCP Serverにします。
スケッチを書き込み再起動した後に、
Teraterm を使いpico-ETH-CH9121とTCP/IP接続、Raspberry Pi Picoとシリアル接続をします。

シリアル接続側からは接続先がClientの認識で、TCP/IP接続側からはServerに接続している認識になります。

・Serverからデータが送信されたと仮定
シリアル側(COM50)から送信したデータは赤実線枠で、Serverから受信したデータは赤点線枠です。

・Clientからデータが送信されたと仮定
TCP/IP側から送信されたデータは青実線枠で、Clientから受信したデータは青点線枠です。
今回Clientからのデータは大文字小文字変換をしないでそのまま送信しています。

マイコン 同士の通信 スケッチ

スケッチの説明

スケッチは「pico-ETH-CH9121 Server」と同じスケッチを使います。
スケッチの掲載は省略します

結果(マイコン同士のとTCP/IP通信)

「パソコンとTCP Serverの通信」で使用した、pico-ETH-CH9121とスケッチ書き込み済みのRaspberry Pi Pico1セット(Server側とします)と
pico-ETH-CH9121を「TCP Clientにする設定」によりTCP Clientにしたpico-ETH-CH9121と同じスケッチを書き込みしたRaspberry Pi Picoを1セット(Client側とします)用意します。

このServer側とClient側をLANケーブルで直接接続します。
Sever側とClient側のそれぞれのRaspberry Pi Pico にUSBケーブルを接続します。
電源はServer側から投入し、続いてClient側の電源を投入します。

Teratermを起動し、それぞれのRaspberry Pi Picoとシリアル接続します。
今回Server側はCOM50, Client側はCOM16で認識されました。

図中にはIPアドレスを記載していますが、これはpico-ETH-CH9121同士が勝手に接続してくれます。
Raspberry Pi PicoはUARTの認識で通信を行っています。

結果はServer側(COM50)からのデータ送信は赤実線枠で、Client側(COM16)の受信は赤点線枠。
Client側のデータ送信は青実線枠で、Server側の受信は青実線枠です。

通信の設定に慣れるまでがなかなか面倒ですが、設定が終わればUARTプログラムを書くだけになります。

関連リンク

コメント

タイトルとURLをコピーしました