<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>httpプロトコル | 即戦力モノづくり!エンジニアへの道標</title>
	<atom:link href="https://depfields.com/tag/http%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB/feed/" rel="self" type="application/rss+xml" />
	<link>https://depfields.com</link>
	<description>組み込み（マイコン）スキルを楽しんで学びながら身につけて短期間で効率よく自由自在に扱えるようになりたいと思いませんか？</description>
	<lastBuildDate>Mon, 11 Apr 2022 05:41:09 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.3</generator>

<image>
	<url>https://depfields.com/wp-content/uploads/2020/07/cropped-favicon-1-32x32.png</url>
	<title>httpプロトコル | 即戦力モノづくり!エンジニアへの道標</title>
	<link>https://depfields.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ESP32でWiFi化したSTM32にブラウザから操作する</title>
		<link>https://depfields.com/esp32-http-rx-apl/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=esp32-http-rx-apl</link>
		
		<dc:creator><![CDATA[めかのとろ]]></dc:creator>
		<pubDate>Mon, 21 Sep 2020 16:14:40 +0000</pubDate>
				<category><![CDATA[IoTアプリ]]></category>
		<category><![CDATA[ESP32]]></category>
		<category><![CDATA[WiFi]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[httpプロトコル]]></category>
		<category><![CDATA[ブラウザ]]></category>
		<guid isPermaLink="false">https://depfields.com/?p=6080</guid>

					<description><![CDATA[<p>無線モジュールESP32を使って Nucleo(STM32) を無線 (WiFi) 化し、WEBサーバーを構成します。 クライアント側 であるPCやスマホのウェブブラウザからマイコン側に文字列のコマンドコードを送ってリモ [&#8230;]</p>
<p>The post <a href="https://depfields.com/esp32-http-rx-apl/">ESP32でWiFi化したSTM32にブラウザから操作する</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="veu_autoEyeCatchBox"><img fetchpriority="high" width="640" height="427" src="https://depfields.com/wp-content/uploads/2020/09/1452188_s.jpg" class="attachment-large size-large wp-post-image" alt="" decoding="async" srcset="https://depfields.com/wp-content/uploads/2020/09/1452188_s.jpg 640w, https://depfields.com/wp-content/uploads/2020/09/1452188_s-300x200.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></div>
<p class="vk_block-margin-sm--margin-top vk_block-margin-sm--margin-bottom">  <strong>無線モジュールESP32</strong>を使って <strong>Nucleo(STM32) を無線 (WiFi) </strong>化し、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">WEBサーバー</span></strong>を構成します<strong>。</strong> クライアント側 であるPCやスマホのウェブブラウザからマイコン側に文字列の<strong>コマンドコード</strong>を送って<strong>リモート操作するアプリ</strong>を紹介します。ESP32とブラウザの設定および送受信については「<strong><a href="https://depfields.com/esp32-webserver/" target="_blank" aria-label=" (opens in a new tab)" rel="noreferrer noopener">ESP32でWiFi化したNucleo(STM32)をブラウザでリモート操作</a></strong>」で詳細を解説しています。 </p>







<h2 class="wp-block-heading">WEBサーバーを構成する上での注意点</h2>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>  プログラム構成の基本的なところは「<strong><a href="https://depfields.com/esp32-tcp-rx-apl/" target="_blank" aria-label=" (opens in a new tab)" rel="noreferrer noopener">ESP32を使ったSTM32のTCP通信(WiFi)受信編</a></strong>」 と似ていますが、ESP32をHTTPプロトコルで受信する場合に特有なクセに注意する必要があります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>通信条件がTCPからHTTPに変更になったことに応じて<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">プログラムの基本構成はTCP通信の場合とほとんど同じまま</span></strong>で、サーバーの<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ポート番号</span></strong>と<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">プロトコルフォーマットを変更</span></strong>しただけのものであると、ターミナルからでは正常に動作するのにブラウザから WEBサーバー化したESP32へのHTTP通信はうまくいきませんでした。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>TCP通信プロトコルでPCやスマホのターミナルソフトからSTM32へコードを送るのと、HTTP通信プロトコルでウェブブラウザからSTM32へコードを送るのは一見ほぼ同じに思えますが、中間にあるESP32の挙動がかなり違うために動作を理解しないままではうまくいきません。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>相違点をまとめると以下のようになります。</p>
</div></div></div>



<ul class="is-style-vk-numbered-square-mark"><li> ウェブブラウザからのHTTP通信プロトコルでは <span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter"><strong>ESP32は</strong> <strong>ブラウザを開く、閉じるだけでも応答を返す</strong></span>。</li><li> ブラウザからコマンドを与えるのは、IPアドレスにコマンドを付属させるため（IPアドレス/コマンドコード）、都度接続を閉じたり、つなげたりすることになります。そのため、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">応答（0,CLOSED/0,CONNECT)も都度付加される</span></strong>。</li><li> ちょっとしたコードを送るだけでも、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">応答文字列はかなり長い</span></strong>。（下の赤で囲まれた部分）</li><li> 応答文字列も長い分、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ATコマンド前後の待ち時間も大きめに設定</span></strong>する。</li></ul>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<figure class="wp-block-image size-large"><img decoding="async" width="588" height="407" src="https://depfields.com/wp-content/uploads/2020/09/webserver-receive.jpg" alt="" class="wp-image-6043" srcset="https://depfields.com/wp-content/uploads/2020/09/webserver-receive.jpg 588w, https://depfields.com/wp-content/uploads/2020/09/webserver-receive-300x208.jpg 300w" sizes="(max-width: 588px) 100vw, 588px" /></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>つまり、ブラウザから文字コードを送信すると、想定以上にESP32は応答を返すので<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">予め想定しておかなければマイコン側では多くのものを予期せぬタイミングで受信することになります</span></strong>。これが時に<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">フリーズの原因</span></strong>にもなりえます。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>そういうものであることを分かってしまえば対処のしようもあるのですが、はじめは原因がわからなかったために<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">問題解決に至り安定した通信を実現</span></strong>できるようになるまでかなり時間を要しました。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>以下に、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">ESP32をHTTP通信プロトコルで安定して文字コードを送るコツを解説</span></strong>します。</p>
</div></div></div>



<h2 class="wp-block-heading">プログラム構成</h2>



<figure class="wp-block-image size-large is-resized"><a href="https://depfields.com/wp-content/uploads/2020/09/web-server-rx-diagram.jpg"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/09/web-server-rx-diagram.jpg" alt="" class="wp-image-6097" width="520" height="561" srcset="https://depfields.com/wp-content/uploads/2020/09/web-server-rx-diagram.jpg 569w, https://depfields.com/wp-content/uploads/2020/09/web-server-rx-diagram-278x300.jpg 278w" sizes="(max-width: 520px) 100vw, 520px" /></a><figcaption>HTTP通信プロトコルによる受信構成図</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>受信構成はTCP通信の場合と同じでもよいのですが、サンプルアプリでは<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">割り込み受信を使用</span></strong>しており、割り込みが入った時点が分かるようにLEDを点灯させています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>不定のタイミングで受信が発生する場合はポーリングによるものよりも<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">割り込みにした方が確実</span></strong>です。ポーリング方式でも試してみましたが安定した動作を得ることはできませんでした。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/09/web-server-rx-setting.jpg" alt="" class="wp-image-6056" width="609" height="426" srcset="https://depfields.com/wp-content/uploads/2020/09/web-server-rx-setting.jpg 609w, https://depfields.com/wp-content/uploads/2020/09/web-server-rx-setting-300x210.jpg 300w" sizes="(max-width: 609px) 100vw, 609px" /><figcaption>割り込み受信処理</figcaption></figure>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>このアプリの特徴は割り込みが発生して<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">受信処理をする度に一旦USARTを初期化してレジスタをクリアにする</span></strong>ことです。クリアにはいろいろな方法があるとは思いますが、ここでは最も初歩的で簡単なクリアを実現するために、リセット関数を下記のようにまとめて実行させています。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>リセット処理を受信のたびにきっちり施すことで、<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">通信エラーなどがクリアされ動作が安定</span></strong>しました。これで、ブラウザからコードにより処理を分岐させることができるようになりましたので、さまざまなリモートアプリに発展させることが可能になります。</p>
</div></div></div>



<div class="wp-block-vk-blocks-balloon vk_balloon vk_balloon-position-left vk_balloon-type-speech vk_balloon-animation-none"><div class="vk_balloon_icon"><figure><img decoding="async" class="vk_balloon_icon_image vk_balloon_icon_image-type-normal " src="https://depfields.com/wp-content/uploads/2020/05/instructor.jpg" alt=""/><figcaption class="vk_balloon_icon_name">めかのとろ</figcaption></figure></div><div class="vk_balloon_content_outer"><div class="vk_balloon_content  "><span class="vk_balloon_content_before "></span><span class="vk_balloon_content_after "></span>
<p>種々の<strong><span data-color="#fffd6b" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" class="vk_highlighter">コードを含んだIPアドレスをリンクとしてHTMLページに貼り付け</span></strong>ておけば、それをクリックするとコードがブラウザからマイコン側に転送されることになります。</p>
</div></div></div>



<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://depfields.com/wp-content/uploads/2020/09/usart-reset.jpg" alt="" class="wp-image-6104" width="639" height="234" srcset="https://depfields.com/wp-content/uploads/2020/09/usart-reset.jpg 675w, https://depfields.com/wp-content/uploads/2020/09/usart-reset-300x110.jpg 300w" sizes="(max-width: 639px) 100vw, 639px" /><figcaption>USARTの初期化</figcaption></figure>



<div class='w3eden'><!-- WPDM Link Template: Default Template -->

<div class="link-template-default card mb-2">
    <div class="card-body">
        <div class="media">
            <div class="mr-3 img-48"><img class="wpdm_icon" alt="アイコン"   src="https://depfields.com/wp-content/plugins/download-manager/assets/file-type-icons/box_download.png" /></div>
            <div class="media-body">
                <h3 class="package-title"><a href='https://depfields.com/download/esp32-http-rx/'>ESP32　HTTP通信（WiFi受信編）</a></h3>
                <div class="text-muted text-small"><i class="fas fa-copy"></i> 1 ファイル <i class="fas fa-hdd ml-3"></i> 6.74 KB</div>
            </div>
            <div class="ml-3">
                <a href='#unlock' class='wpdm-download-link wpdm-download-locked btn btn-primary ' data-package='6088'>ダウンロード</a>
            </div>
        </div>
    </div>
</div>

</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>



<div style="background: #00ccff; padding: 5px 10px; color: #ffffff; border-radius: 10px 10px 0 0;"><strong>コラム</strong></div>
<div style="background: #ffffea; padding: 10px; border: 2px solid #00ccff; border-radius: 0 0 10px 10px;">
<p>今回はTCP通信で行っている<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">簡易的なコード受信をHTTP通信プロトコルで行うサンプルを紹介</span></strong>しました。ちょっとしたリモート操作ではこれでも十分だと思います。<br />ただ、HTTP通信プロトコルをATコマンドで行うのは、文字コード長を指定する必要があったり、制約があるため煩わしいのも確かです。ESP32で本格的にHTTP通信を行う場合は<strong><span class="vk_highlighter" style="background: linear-gradient(transparent 60%,rgba(255, 253, 107, 0.7) 0);" data-color="#fffd6b">透過 （トランスペアレント） モードでATコマンドによらずマイコン側とシームレスな通信を行うこともできる</span></strong>のでさらに発展させたい場合は挑戦してみてください。</p>
</div>



<div class="wp-block-vk-blocks-spacer vk_spacer vk_spacer-type-margin-top"><div class="vk_block-margin-md--margin-top"></div></div>


<div class="linkcard"><div class="lkc-external-wrap"><a class="lkc-link no_icon" href="https://en.depfields.com/esp32-http-rx-apl/" target="_blank" rel="external noopener"><div class="lkc-card"><div class="lkc-info"><img class="lkc-favicon" src="https://www.google.com/s2/favicons?domain=en.depfields.com" alt="" width=16 height=16 /><div class="lkc-domain">Most Powerful Bible to Become an Embedded Engineer</div></div><div class="lkc-content"><figure class="lkc-thumbnail"><img class="lkc-thumbnail-img" src="//depfields.com/wp-content/uploads/pz-linkcard/cache/53da4d4bbd905f6cbae0fc8e724d51f02c6d3357bd6a70870f8fa80ae7cbdf58.jpeg" alt="" /></figure><div class="lkc-title"><div class="lkc-title-text">Operating the STM32 with ESP32 WiFi from a browser | Most Powerful Bible to B...</div></div><div class="lkc-url">https://en.depfields.com/esp32-http-rx-apl/</div><div class="lkc-excerpt">Nucleo (STM32) is converted to wireless (WiFi) using the ESP32 wireless module and configured as a web server. We will introduce an application that remotely operates MCU by sending a string of command codes from a web browser on a client</div></div><div class="clear"></div></div></a></div></div><p>The post <a href="https://depfields.com/esp32-http-rx-apl/">ESP32でWiFi化したSTM32にブラウザから操作する</a> first appeared on <a href="https://depfields.com">即戦力モノづくり!エンジニアへの道標</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
