質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
UDP

UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

Q&A

解決済

1回答

4325閲覧

M5Stack W5500 Ethernetモジュールを使ったUDP通信に関して

birdman97704

総合スコア1

UDP

UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

0グッド

0クリップ

投稿2021/07/21 11:20

編集2021/07/21 11:25

M5STackにLAN Module W5500 with PoEのLANモジュールをつけて、
UDP通信でデータをPCに送りたいと思っております.

スケッチ例の
M5stack lib examples -> modules -> LAN_W5500 -> WebServerを使えば、
ウェブページからデータを確認することができましたが、

UDP通信を行おうとするとうまくいきません.

ソースコードを以下に添付いたします.

#include <M5Stack.h> #include <SPI.h> #include <Ethernet2.h> #include <EthernetUdp2.h> byte mac[] = {0x24, 0x0A, 0xC4, 0xF8, 0x54, 0xC8}; const IPAddress ip(192,168,3,147); const IPAddress gateway(192,168,3,254); const IPAddress subnet(255,255,255,0); const char *pc_addr = "192.168.18.143"; const int pc_port = 50007; //送信先のポート const int my_port = 50008; //自身のポート // An EthernetUDP instance to let us send and receive packets over UDP EthernetUDP Udp; void setup() { // Open serial communications and wait for port to open: M5.begin(); M5.Power.begin(); // start the Ethernet connection and the server: Ethernet.begin(mac, ip); Udp.begin(my_port); } void loop() { Udp.beginPacket(pc_addr, pc_port); Udp.write("5"); Udp.endPacket(); }

よろしくお願いいたします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/07/21 11:22

このままではコードが見づらいので、質門を編集し、<code>ボタンで、出てくる’’’の枠の中にコードを貼り付けてください
thkana

2021/07/22 00:59

ハードがないのでお力になれない気もしますが、とりあえず 「うまくいきません」とはどうなることですか? 問題の解決には、(なにを期待したかも明らかにせずに)「期待通りではなかった」というだけの情報は大抵無力で、しかし「その代わりに何が起こったのか」を詳細に検討することで何かが得られることが多いものです。 とりあえず...UDPを受け取る側は確実に動作することが確認されているのですか?
birdman97704

2021/07/22 02:21

wiresharkを使って、 Udp.write("5")の箇所が入ってくるかを確認してはいるのですが、現状うまく接続出来ていないようです
thkana

2021/07/22 02:51

受け側のPC?でWiresharkでモニターして、該当するパケットが観察されない、ということですか? 「うまい」かどうかじゃなくて、何が起こったかを「そのまま記述する」癖をつけたほうがいいとおもいますけどねぇ。どうしてトラブルシュートの時に「うまくいった」「いかない」に二値化しちゃうんでしょう? ちょっと知識が曖昧なんですが、UDPパケットってコネクションを持たないから、受け側のポートが開いてなくてもとにかく送られるんでしたっけ? ・何らかのプログラムでそのUDPポートを受信するようにしてみても同様ですか? ・M5Stack側のLANアダプタには通信状態を示すLEDは付いていませんか? それは点滅していますか? ・WiFi経由で同様のことをやった場合はどうなりますか? などを試してみたらどうなるでしょう。
guest

回答1

0

ベストアンサー

M5Stackを持ってませんが。

Arduino

1byte mac[] = {0x24, 0x0A, 0xC4, 0xF8, 0x54, 0xC8}; 2 3const IPAddress ip(192,168,3,147); 4const IPAddress gateway(192,168,3,254); 5const IPAddress subnet(255,255,255,0);

とのことですが、提示されたソースコードでは、Ethernet.begin()に、gatewayがわたっていません。

Arduino

1 Ethernet.begin(mac, ip);

この場合、gatewayは、ipの第4オクテットを1にしたもの(今回は192.168.3.1)が利用されると思います。

DNSサーバのIPアドレスを追加で定義して、以下のようにするのではないでしょうか(subnetは、255.255.255.0 なので省略でもいいかもしれません)。

Arduino

1const IPAddress dns_server(192,168,3,254); // 環境に合わせた正しいアドレスを定義 2 3Ethernet.begin(mac, ip, dns_server, gateway, subnet);

投稿2021/07/22 05:42

mkgt00

総合スコア165

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

birdman97704

2021/07/26 06:49

回答が遅くなり大変申し訳ございませんでした. UDPでの通信が確認できました. ありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問