興味があって購入しておいたWT32-ETH01。
シリアルポートWT32-ETH01,Bluetooth接続,Wifiコンボ,ゲートウェイmcu esp32と互換性があります
試してみようと思ったが書き込まれているAT-Commands機能は起動途中で死んでしまうようで使いものにならなかったし回路図もないしで一体どう使えば良いのか全くわからない。しょうがないのでひたすらググッてみたところ下記投稿が非常に参考になった。
その情報を参考に Arduino のスケッチ例(ESP32 Dev Module用のスケッチ例 -> Wifi -> ETH_LAN8720)を試してみたら見事に成功!
でも、ethernetとwifiは動作するけどその間でのパケット転送はしないらしい。
本当はethernetとwifiをつなぐアクセスポイントをArduinoで作ってみたかったんだけどESP-IDFを使わないと無理っぽそうだしなんだか面倒そうでもあるのでいつかやる気がでたら挑戦してみることにしよう。
ちなみにeth2apとかいうので望みは叶うのかな?
でもこれって仮想ケーブルみたいな感じみたいだけど実用になるんだろうか?
【サンプルスケッチ(ETH_LAN8720.ino)】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
#include <ETH.h> #define WT32_ETH01_LED_RX 5 #define WT32_ETH01_LED_TX 17 #define WT32_ETH01_OSC_EN 16 static bool eth_connected = false; static bool test_enable = true; void WiFiEvent(WiFiEvent_t event) { switch (event) { case SYSTEM_EVENT_ETH_START: Serial.println("ETH Started"); //set eth hostname here ETH.setHostname("esp32-ethernet"); break; case SYSTEM_EVENT_ETH_CONNECTED: Serial.println("ETH Connected"); break; case SYSTEM_EVENT_ETH_GOT_IP: Serial.print("ETH MAC: "); Serial.print(ETH.macAddress()); Serial.print(", IPv4: "); Serial.print(ETH.localIP()); if (ETH.fullDuplex()) { Serial.print(", FULL_DUPLEX"); } Serial.print(", "); Serial.print(ETH.linkSpeed()); Serial.println("Mbps"); eth_connected = true; break; case SYSTEM_EVENT_ETH_DISCONNECTED: Serial.println("ETH Disconnected"); eth_connected = false; break; case SYSTEM_EVENT_ETH_STOP: Serial.println("ETH Stopped"); eth_connected = false; break; default: break; } } void testClient(const char * host, uint16_t port) { Serial.print("\nconnecting to "); Serial.println(host); WiFiClient client; if (!client.connect(host, port)) { Serial.println("connection failed"); return; } client.printf("GET / HTTP/1.1\r\nHost: %s\r\n\r\n", host); while (client.connected() && !client.available()); while (client.available()) { Serial.write(client.read()); } Serial.println("closing connection\n"); client.stop(); } void setup() { pinMode(WT32_ETH01_LED_RX, OUTPUT); pinMode(WT32_ETH01_LED_TX, OUTPUT); Serial.begin(115200); WiFi.onEvent(WiFiEvent); ETH.begin(1, WT32_ETH01_OSC_EN); // ★★★ここを変更する必要あり★★★ } void loop() { if (eth_connected && test_enable) { testClient("google.com", 80); test_enable = false; } delay(1000); digitalWrite(WT32_ETH01_LED_RX, !digitalRead(WT32_ETH01_LED_RX)); digitalWrite(WT32_ETH01_LED_TX, !digitalRead(WT32_ETH01_LED_RX)); } |