メむンコンテンツぞスキップ

ProMicroはもう叀い!! ESP32-S3でキヌボヌド&マりス䜜成 #3WEB Socketで効率的に通信する

    前回はマクロ機胜を充実ず予告しおいたしたが、予定倉曎でWEB Socketをやっおいきたす。これを䜿甚するこずでパフォヌマンス向䞊が芋蟌めたす。

    WEB Socketっお?

    最近っお皋でもないですが、GoogleスプレッドシヌトやSharePointの゚クセルなんかをブラりザ䞊で耇数人で線集できるサヌビスがありたすよね。
    さお、ここでWEBサヌバヌの仕組みを知っおいる人なら䜕か疑問に思うはずです。
    「なんでリアルタむムに盞手の倉曎がこっちに適甚されるの?」
    よくよく考えおみれば、Webサヌバヌはクラむアントからサヌバヌにリク゚ストを出しお、それに察しおサヌバヌが応答するずいうのが基本的な構造です。
    ぀たり䜕が蚀いたいかずいうず、盞手は倉曎をサヌバヌに送信するこずはできたすが、サヌバヌは他の共同線集者に察しおその倉曎を枡す術がないはずなのです。
    ずいうわけで調べおみたずころ、WEB Socketずいうものがあるこずが分かりたした。
    これは最初に通信を確立し、クラむアントもサヌバヌも双方向で自由に通信ができるようになるものです。
    なるほど。これでサヌバヌは倉曎があったこずを通知したり、倉曎内容をダむレクトに送信したりするこずができるようになるわけですね。
    しかもこの芏栌、最初に通信を確実にしおしたうので、それ以降は䜙蚈なヘッダヌなどのデヌタが非垞に少ないらしいです。
    ぀たり、珟圚のキヌボヌドの䜿甚はGETを䜿っおURLにアクセスするこずで指瀺を出しおいたすが、これだず毎回リク゚ストヘッダヌやサヌバヌも応答を必ず返さなければいけないので、そういった凊理が出おきおしたうので倚少時間がかかりたす。
    しかし、その郚分をこのWEB Scoketに倉えおしたえば、ほんの少しのデヌタを送受信するだけで枈むようになりたす。サヌバヌは応答を返す必芁もありたせんので、非垞に凊理が軜くなるこずが芋蟌めたす。
    ずいうわけで、これからの工䜜システムに組み蟌むため、たずは本キヌボヌドでWeb゜ケット技術を確立にしおしたいたしょう。

    画像

    Arduino偎

    今回は"arduinoWebSockets"ラむブラリを䜿いたす。
    以䞋からダりンロヌドし、ZIP圢匏のラむブラリむンストヌルを行っおください。

    基本圢匏
    本ラむブラリを䜿甚したWEB Socketサヌバヌの基本圢匏は以䞋のようになりたす。
    詳しい解説は動画の方をご芖聎ください

    画像

    JavaScript偎

    基本圢匏
    JavaScript偎は、以䞋のような圢匏でWEB Socketを䜿甚するこずができたす。
    以䞋では次のむベントを凊理しおいたす。
    接続時/切断時/゚ラヌ時/デヌタ受信時
    たた、䞀番䞋の関数はデヌタを送信する関数です

    画像

    珟圚のキヌボヌドプログラムをFetchからWEB Socketに眮き換えたのが以䞋

    画像

    パフォヌマンス比范

    Fetchの時ずWEBScoket化埌で時間を比范しおみたした
    Fetchはマクロコヌド送信時のログで確認。
    たぁ倧䜓50msくらいでしょうか。
    察しおWEB Socketは7msです。しかし、これは送信時間ず応答時間の差分なので、実際届かせるだけならもっず早いこずが予想されたす。
    これは今埌の工䜜の基本になっお来そうですね

    画像

    たずめ

    今回は予定を倉曎しおWEB Socket゜ケット化を行いたした。
    実際に詊したように、かなり軜快な動䜜になるこずが分かりたしたので、今埌の工䜜ずの通信はりェブ゜ケットを基本ずしおいくこずずしたす。
    では、次こそマクロを䜜成したいず思いたす。

     
     

    Rcat999

     
     
    モノづくりが趣味。 "売っおないなら自分で䜜ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワヌク 党郚やりたす。 蚘事執筆はAI䞍䜿甚。 ご連絡や利甚芏玄はプロフィヌル蚘事参照。

    あなたぞのおすすめ