M5StickC+PuppyCをスマートフォンから動かす

  • このエントリーをはてなブックマークに追加

はじめに

前回、既存のスケッチ例をもとにPuppyCを動かしてみました。今回はさらにスケッチを書き換えてスマートフォンから動作できるようにします。

  1. 必要なもの
  2. スケッチ
  3. 実行

 

1.必要なもの

M5StickCとPuppyCを用意ます。

番号

商品名

価格

参考販売店

1

M5StickC

1980円(セット)

1650円(本体のみ)

SwitchSience

2

PuppyC

2002円

SwitchSience


2.スケッチ

 

スマートフォンからM5StickCを呼び出す場合、M5StickCがサーバーに、スマートフォンがクライアントになります。

 

WiFiServer

M5StickCをサーバーに設定するにはWiFiServerクラスを使用します。

serverという名前でインスタンした例です。引数はポート番号です。HTTPで接続する場合はポート番号80が一般的であるため、80にしています。

(WebサーバのHTTPならポート番号は80、メール受信プロトコルPOP3ならポート番号110、メール送信はポート番号25と固定的に割り当てるのが一般的)

ポート番号を80ではなく1234などに設定(WiFiServer server(1234))したい場合、そのサーバーにアクセスするためにはwww.AAA.com:1234 のようにコロンとポート番号を記入する必要があります。

server.begin()

Webサーバーとして起動します。

server.available()

クライアント側からアクセスがあった場合に1を返します。この値を用いてクライアントとやり取りを行います。

 

WiFiClient

クライアントの処理を行うためのクラスです。サーバーにアクセス時に生成します。

 

 

client.connected()

クライアントと接続されている状態かどうかを表します。(接続1:切断:0)

 

client.available()

クライアントが書き込んだデータのバイト数を返します。

 

client.read()

クライアントからの情報を1バイトリードします。

 

client.println()

ASCIIテキストとして可読文字をクライアントに送信します。

 

htmlについて

クライアント側に表示するhtmlについて説明します。

 

HTTP/1.1 200 

200 はリクエストが成功した場合に返すレスポンスコードです。(204だとNo Content)

クライアントがサーバーにアクセスしたときに GET HTTP/1.1を送信します。それに対する応答です。

form

formは入力・送信フォームを作成する際に使用します。
<form>~</form>の間にボタンを作成します。
フォームに入力されたデータは、送信ボタンを押すことで送信され、サーバー側で処理が行われます。 

 

method

nethod属性はデータの送信方法(HTTPメソッド)を指定する際に指定します。 method属性の値として指定できるのは以下の2種類です。

  • get …… 送信内容がURLとして渡される(初期値)
  • post …… 本文(本体)として送信される

URLの後ろにクエスチョンマーク( ? )を付けて、それ以降続くにクエリとして送信先ページに渡されます。

今回はGET /? control=Forward(Back,Stop)となります。

 

input 

formを構成するためのタグです。type属性の値に”submit”を設定すると送信ボタンを作成します。name属性とvalue属性に設定した値がmethod属性で指定した送信方法で送られます。

 

HTTP/1.1 302

302リダイレクトとは、URL転送処理のうち,1時的な転送に用いられる処理のことです。ウェブサーバーは、ページの新しい場所を即座にブラウザーに通知してリダイレクトする必要があります。

 

マルチタスク

サーバーとクライアントのやり取りと同時にPuppyCを動作させるため、マルチタスクを使用します。xTaskCreatePinnedToCore関数を使用します。

  • pvTaskCode:loop()関数と並行して動作する関数名を記載します。

  • pcName:作成した関数のわかりやすい名前を記入します。

  • usStackDepth:バイト数として指定されたタスクスタックのサイズ。サイズは1024~8192で指定できます。

  • pvParameters:作成した関数の引数を指定します。ない場合はNULLを指定します。

  • uxPriority:実行する優先度を指定します。

  • pvCreatedTask:作成した関数を参照できるハンドラを返すために使用されます。変数はTaskHandle_t型で定義します。

  • xCoreID:値がtskNO_AFFINITYの場合、作成されたタスクはどのCPUにも固定されず、スケジューラーは使用可能な任意のコアで実行できます。値0または1は、CPUのインデックス番号を示します。M5StickCはドュアルコアなので、0、1が設定可能です。

スケッチ例のPuppyCを変更したスケッチは以下になります。

 

 

3.実行

スケッチをM5StickCに書き込みます。スマホでネットワークを確認すると、ssidで設定した名前(ここではm5stickcに設定)が表示されます。

クリックしてアクセスします。パスワードはpassで指定した内容です。

次にブラウザを起動して const IPAddress ip で設定したipアドレスを入力します。

ブラウザに表示されている「Forward」を押すと前進、「Stop」で停止、「Back」で後ろに下がります。

 

 

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*