さまざまな電子機器を作成し、AVR、STMなどをプログラミングします。 情報を制御し、たとえばコンピューターに転送するために他の周辺機器に接続する方法についての質問が常に発生します。
COM、RS482、WiFi、Zigbee、ZWave、Ethernetなど、さまざまなソリューションがあります。 私がWiFi、Zigbee、Ethernetを試したすべてのオプションのうち、他のすべては非常に不便または時代遅れです。
MicrochipとAtmega328pのENC28J60チップを使用して、UARTとイーサネットの間に「ブリッジ」(以下)を作成する方法を教えて共有したいと思います。
チップを搭載した中国製の既製のマザーボードがありますが、これはTCP / IPを実装していないチップであり、サイズが大きいです。
したがって、ファームウェアだけでなく、プリント基板自体も作成する必要がありました。
ボードは小さいです。
多くの人が、チップにはバグがあり、偽物があると書いていますが、私は実際にこれを達成することができませんでした。 このチップで作業するための多くのプロジェクトとソースがインターネット上にありますが、私は作業中のプロジェクトに会うことができませんでした。 原則として、これらのプロジェクトは「死亡」したか、著者によって終了されませんでした。 私のプロジェクトは完全に機能しており、安全に使用できます。 だから私は共有したかった。 現在まで、ENC28J60は使用していません。 彼はWiFiモジュールESP8266に置き換えられました。 また、ESP8266でAT、MicroPython、NodeMCU、Esp-Bridgeなどをビルドする方法についての記事を後で書きます。 しかし、他の誰かが自分のデバイスとの有線イーサネット接続を必要とするか、ワイヤレス技術に自信がない場合があります。 いずれにせよ、各状況には独自の決定があります。 普遍的な解決策はありません!
記事の最後にあるすべての図と説明。 そしてもちろん、私は質問に答えます。
インターネット経由でAVR上のデバイスにリモート接続するタスクがありました。
完全にエンドツーエンドで双方向の伝送
これはこんな感じ
なぜなら Atmegaには多くのメモリがないため、最も必要なものだけを実装しました。
設定には、ポート80でWebインターフェイスを使用します
- IPアドレス
- 仮面
- ゲートウェイ
- UARTa速度の選択
私の最後のデバイスには2つのボードがあり、メインのボードにはすべてのロジックがあり、「ブリッジ」として独立しています。
「ブリッジ」自体は別のボードに実装されており、すでにメインボードに挿入されています。
メインボードにRJ45コネクタがありました(私にとっては便利でした)。 顧客がこれを必要としない場合、いつでも「ブリッジ」を削除できます。
モデルビュー(Altium)
既製の回路基板:
私のデバイスで:
主な機能
- ブリッジは常にポート23でリッスンし、接続を待機します。
- 一度に1つの接続のみが可能です。
- pingサポートがあります
- 完全に実装されたTCP / IP
- ポート速度2400 ... 115200
- RTS / CTSのサポートがあります
- 3.3V電源
Atmeg328自体のソースコード
スキーム(PDF)と写真
スキームとPCBは、必要に応じてAltium`eで作成され、送信を書き込みます。
一般に、これが誰かがイーサネット(TCP / IP)を使用してデバイスへの外部接続を実装するのに役立つことを願っています。