M5StackC PLUSでmDNSを拾う

 昨日は、挿すだけでIPを表示するデバイスを検討してみたけど、汎用の実装は難しいという結果になった。

 挿すだけでIPを表示するデバイス|kinneko|pixivFANBOX

https://www.fanbox.cc/@kinneko/posts/11073254

 挿すだけでIPを表示するデバイス 2025年12月18日 08:00  RaspiOSに挿すだけでIPを表示するデバイスという記事があったのだけど、制約条件も多い。   C4KEW4LK/rpi_usb_ip_display: small usb micro controller with built-in LCD, designed to query a host rpi system and retrieve the ip address(es) and hostname of the system   https://github.com/C4KEW4LK/rpi_u... 全体公開 kinneko

 わたしの場合は、DHCPで取得したIPを知りたいのはRaspiOSのことが多いので、mDNSしているデバイスであれば、ブロードキャストを拾って、MACとIPは取れるのではないかと推測してみる。RaspiOSでは、デフォルトでmDNSでアナウンスを出している。

 デバイスとしては、表示部のあるM5StickC Plusを使う。選んだ理由は、たまたま見えるところにあっただけ。

 AIに書かせたスケッチはこれ。FANBOXに貼るとエラーで保存できないのでgistに貼った。

https://gist.github.com/kinneko/e7623aa999b5de644be1765e970acb5b

 焼いてみる。SSIDとPASSは入れる。

 なんかリブートしているな...

 

 assert failed: ethernet_output /IDF/components/lwip/lwip/src/netif/ethernet.c:307 (Required to lock TCPIP core functionality!)

 Backtrace: 0x400825b0:0x3ffb1f30 0x4008d5f9:0x3ffb1f50 0x40093905:0x3ffb1f70 0x4010a88f:0x3ffb20b0 0x401041d8:0x3ffb20d0 0x4010463d:0x3ffb2100 0x400d373d:0x3ffb2130 0x400e4ed8:0x3ffb2270 0x4008e222:0x3ffb2290

 ELF file SHA256: 7ff4c757f

 Rebooting...

 lwIPのコアロックが必要な箇所を、ロック無しで呼んでいる。

 場所は、etharp_find_addr() / etharp_request()あたりか。

 とりあえず、ARPでMACを引くのをやめる。

 動いたけど、画面がスクロールしていないな。

 あと、リフレッシュで一旦ブラックアウトしている風なのも気になる。

 AIに修正してもらう。

https://gist.github.com/kinneko/e7623aa999b5de644be1765e970acb5b

 拾えている。

 RaspiOSがターゲットの場合は、割り当てられたIPアドレスを知るのに、目的としては、これでいいんとちがうかな。

 もっとも、mDNSでアナウンスされていれば、コンソールから名前で引けるので、こんなことまでする必要はないのだけどね。やってみたかっただけw

 100円投げ銭  https://kinneko.booth.pm/items/1963720


オリジナル投稿:
M5StackC PLUSでmDNSを拾う|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/11084643