ArduinoでWebServer

ArduinoでWebServerを使うためのメモ。

◆スケッチ
ファイル/スケッチ例/Ethernet/WebServer
から改変

◆MACアドレス
お試しで遊ぶのなら、まあ、適当に。

◆IPアドレス
スケッチのままだと、IPアドレス指定になっている。
お試しだったら、DHCPから取得の方がはるかに使いやすいような、、、。

とすると、DHCPからの取得になる。

◆シリアルモニタ
シリアル通信のデータ転送レートは230400とかにしてした方が使いやすい。
次の表は、「ファイル/スケッチ例/Ethernet/WebServer」からほとんどいじらない状態での、転送レートによる読み込み時間の違い。

シリアル通信のデータ転送レートbps(baud) PCのブラウザで読み込みまでの時間(ms)
9600 478
19200 249
38400 133
57600 93
74880 78
115200 56
230400 52
250000 53
500000 52
1000000 52
2000000 52

230400以降は変わらない。環境によって違うと思うので参考程度にどうぞ。

とする。

◆ヘッダー
APIっぽくしようとURLによって処理分けをする場合、ヘッダーをそのままメモリ上に置いてしまうと、あふれることもあり処理が不安定になる。
なので、リクエストの1行目のメソッド、パス、プロトコル(GET /hoge/ HTTP/1.1)の部分のみを取得して処理をしたほうが良い。
「ファイル/スケッチ例/Ethernet/WebServer」を元にヘッダーの処理を入れてみた。

恐らく、もっと良い方法があるんだとは思うんだけど、、、
このあたりのメモリのやりくりは、21世紀にPC/Webからプログラムを始めて、いわゆる富豪的プログラミングを是としてきた自分としては、なかなか慣れない世界だ。

◆ソースコード
https://github.com/umhr/ArduinoWebServer