マイクロコントローラを使用してWebサーバーを作成している人に出会ったことがありますが、なぜそうするのでしょうか?その用途は何ですか?このようなサーバーを作成するには、C言語以外にどのようなスキルセットが必要ですか?このような小さなRAMを備えたこれらの小さなサーバーには非常に興味があります。
マイクロコントローラを使用してWebサーバーを作成している人に出会ったことがありますが、なぜそうするのでしょうか?その用途は何ですか?このようなサーバーを作成するには、C言語以外にどのようなスキルセットが必要ですか?このような小さなRAMを備えたこれらの小さなサーバーには非常に興味があります。
回答:
いくつかの製品でこれを実行しました。これまでのところ、理由は単純なフィールド設定を許可することでした。その主な動作のために、製品を既にイーサネットに接続する必要があるたびに。したがって、Webサーバーは単にマイクロコントローラーにコードを追加しただけです。
HTTPサーバーの大きな利点は、エンドユーザーに適切なユーザーインターフェイスを提供するために特別なハードウェアやソフトウェアが必要ないことです。誰もがすでにウェブブラウザを持っているので、これは顧客にとっては面倒ではありません。他の選択肢について考えてください。RS-232ポートを提供することもできますが、カスタムアプリを提供するか、適切なボーレート、スタートビット、ストップビット、パリティを使用して端末プログラムをセットアップする方法を誰かに説明する必要があります。また、ケーブルを提供するか、顧客がケーブルを持っていることを望み、誰かがユニットに行って物理的に接続する必要があります。USBには同じ構成の問題はありませんが、通常は製品内の完全に独立したマイクロを意味し、顧客が所有するプラットフォームで実行するカスタムプログラムが必要です。
RAMに関しては、HTTPサーバーにとってそれほど問題ではありません。TCPプロトコルスタックにはRAMが必要ですが、HTTPサーバーには、ネットワークスタックから必要になる可能性のある追加のリソースを除いて、実際には必要ありません。すべてのページのほとんどは一定であり、通常はいくつかの値がテキストに変換され、オンザフライで挿入されるため、WebサーバーにはほとんどROMスペースが必要です。スモールマイクロのWebサーバーは、ROMファイルシステムとそれらのファイル内のエスケープシーケンスで動作し、アプリケーションコードを呼び出して、事前定義されたいくつかの場所に挿入するカスタマイズ可能な文字列を生成します。
これまでのところ、これらすべてのケースでPIC 18を使用しました。4 KB未満のRAMが制限ですが、まだできることがたくさんあります。ROMのスペースは問題に近づいていません。PIC 18のネットワークスタック(www.embedinc.com/pic/dload.htmの PIC開発ツールリリースで入手可能)は、18F67J60のROMスペースのごく一部しか必要としません。完全なイーサネットMAC / PHYが組み込まれています。ある場合、PICは6つの同時TCP接続用のサーバーです。人々が考えるように、それは本当に重いものではありません。
マイクロコントローラーでのWebサーバーの最近の人気に大きく貢献したのは、物理的なセンサー情報(温度、湿度、光レベル、一酸化炭素の存在など)にリモートでアクセスし、物理的な世界(スイッチLEDで、アラームをトリガーし、非常用排気ファンをオンにし、クーラントポンプをオンにします)。これらはアプリケーションです。
さらにユビキタスなIPネットワーク上で、ユビキタスHTTPプロトコルよりも、一般的で一貫性のある、デバイスに依存しない、デザイナーに依存しないリモートアクセスを実現するための優れた方法は何でしょうか。通信の物理層は、WiFi、有線イーサネット、またはIPネットワークをサポートするその他の便利なオプションです。そのため、組み込みデバイス上のWebサーバーが実行されています。
さらに洞察を得るには、「モノのインターネット」を検索して、さまざまな思考プロセスが表示されます。
「このような小さなRAMを備えた小さなサーバー」については、HTTPプロトコルが非常に少ないRAMで実装可能で、処理能力も非常に低いことは注目に値します。また、今日のマイクロコントローラーは、Webだけでなくゲームをプレイするさまざまなインタラクティブタスクを実行した初期のパーソナルコンピューターのプロセッサーに匹敵するか、場合によってはそれよりも強力です。
できるから。
彼らは非常に低電力になる可能性があるため。1W未満でピークを引き込むようなものです。半分以下のアンプ。大型のコンピューターとは異なり、バッテリーと太陽光発電は実用的です。
物理的なサイズ。マイクロコントローラ+ wifiまたはイーサネットチップは、サムドライブのサイズになります。
費用。これに適したマイクロコントローラは、1ドルの範囲である可能性があります。ネットワーク部品はほぼ同じくらい安い。
使い捨て。あなたはそれらを一回限りのプロジェクトに入れることができます、そして、彼らが死ぬならば、それは高価なコンピュータがそうするように悪くありません。
正当な理由。
数十ドル(100ドルまで無料)でフル機能のコンピューターが登場すると(shrevaplugs、raspberry pi、スマートフォン、Linuxサムドライブ、Androidスティック、ルーター)、将来的にはマイクロコントローラーWebサーバーが少なくなるでしょう。駆動因子としてのコストとサイズはなくなりました。35ドルのRaspberry Piまたは45ドルのBeagleboneは、Arduino + EthernetまたはWifiシールドよりも、コスト、パフォーマンス、セットアップの容易さで優れています。arduinoよりかろうじて大きい。arduinoでできることは、電力効率0.1W(ATMEGA単独で0.5mA〜50mAスリープからフルコンピューティングパワー[5v、16mhz、100%cpu]まで)vsイーサネット/ hdmi / usbなしのRPIアイドル時の使用。
したがって、低消費電流のため、マイクロコントローラーWebサーバーはバッテリー駆動になります。それでも、Webサーバーを備えたポケットルーターのような新しいLinux SoCのいくつかは、それらに近いものです。
Olinの答えは、組み込みWebサーバーを使用したあらゆる理由でほぼヒットします。私は産業用制御の開発に取り組んでおり、私たちが生産するほぼすべての製品にはWebサーバーが組み込まれています。
ほとんどのお客様は、さまざまな理由により、すべての機器を既にネットワーク上に置いています。そのため、多数のカスタムプログラムをインストールする代わりに、Webブラウザーを介して構成および/または制御できることが非常に望ましいです。
PROFINETなどの工業用プロトコルを使用している場合でも、物理層は他のイーサネットと同じであり、数十台のマシンを制御するために必要なソフトウェアは1つ(PROFINET IOスーパーバイザー)だけです。私の経験では、この設定は多くの業界でかなり標準的です。
リソース(処理能力、RAM、ROM)に関しては、熊の必需品に切り詰められると、Webページを正常に提供するために必要な最小限のハードウェアが必要です。webACEは、最も小さなWebサーバーの記録を保持していると思います。ホストされているページにアクセスできなくなるのは残念です。
ソフトウェア
元のソフトウェアのいくつかのコード統計。私はもともと、合計にオンチップ64バイトの「データeeprom」を含めることを忘れていたため、TBTFで引用された1010バイトの数字になりました。
Startup 36 bytes Serial 179 SLIP 91 IP 144 ICMP 47 TCP 188 Checksum 132 Application 257 Total 1074 bytes Comprising: 454 instructions 912 instruction bytes 162 data bytes 2.01 bytes/instruction average
必要な他のスキルについては、ネットワーキングの深い理解は実際には必要ありません。考えられるすべてのアーキテクチャにリンクして使用できるライブラリが豊富にあるため、プロトコル用のスタックを作成したことはありません。基本的な生のHTMLを知っていると、実際のページの設計と作成に役立ちます。
それ以外に、WiresharkまたはFiddler(ネットワークアナライザー)のログを読み取って理解できることは、問題のデバッグに大いに役立つため、おそらく最も有用なスキルでしょう。使用しているプロトコル(TCP、IP、HTTP、UDP、PROFINETなど)のパケット構造を少し読むと、必要な情報を探してパケットのどこを見るべきかがわかります。それらのアナライザーの1つをすぐに起動し、コンピューターに出入りするトラフィックを見て、その感覚をつかむこともできます。