なぜ人々はマイクロコントローラー上でWebサーバーを作成するのですか?


13

マイクロコントローラを使用してWebサーバーを作成している人に出会ったことがありますが、なぜそうするのでしょうか?その用途は何ですか?このようなサーバーを作成するには、C言語以外にどのようなスキルセットが必要ですか?このような小さなRAMを備えたこれらの小さなサーバーには非常に興味があります。


この質問は非常に広範です。特定の技術的な質問に焦点を合わせてみてください。
Kortuk

10
再開の投票。この質問で十分です。
ニック

「答えは事実、参考文献、または特定の専門知識によってサポートされると期待していますが、この質問は議論、議論、世論調査、または広範な議論を募る可能性が高いでしょう。」
光子

最後に、この概念が業界でどのように使用されているかを見ることができてうれしいです。しかし、これから新しい質問が生成されます。uCにサーバーを実装し、インターネットブラウザーで実行するユーザーインターフェイスを作成するよりも簡単になります。
quanti231

@ quantum231新しい質問がある場合は、新しい質問をしてください。:-)
アニンドゴーシュ

回答:


15

いくつかの製品でこれを実行しました。これまでのところ、理由は単純なフィールド設定を許可することでした。その主な動作のために、製品を既にイーサネットに接続する必要があるたびに。したがって、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サーバーは、リクエストを受信すると、リクエストへの応答として送信するすべてのものをすぐに送信し、接続を閉じて、それを忘れてしまいます。これにより、TCP RAMの要件は緩和されますが、Webページの複雑性には厳しい制限が課せられます。無制限の数の接続を開いたままにできるステートレスTCPサーバーを設計することは可能ですが(私はそれを行いました)、そのようなことにはカスタムのクライアント側フロントエンドが必要です。ステートレスHTTP操作を可能にするのに十分なほど小さくするのが最も簡単です。
supercat

注意:「install_picdev.exe」をダウンロードしようとしましたが、Firefox(またはWindows Security Essentials)はマルウェアだと言っています。開けない
アホゲン

14

マイクロコントローラーでのWebサーバーの最近の人気に大きく貢献したのは、物理的なセンサー情報(温度、湿度、光レベル、一酸化炭素の存在など)にリモートでアクセスし、物理的な世界(スイッチLEDで、アラームをトリガーし、非常用排気ファンをオンにし、クーラントポンプをオンにします)。これらはアプリケーションです。

さらにユビキタスなIPネットワーク上で、ユビキタスHTTPプロトコルよりも、一般的で一貫性のある、デバイスに依存しない、デザイナーに依存しないリモートアクセスを実現するための優れた方法は何でしょうか。通信の物理層は、WiFi、有線イーサネット、またはIPネットワークをサポートするその他の便利なオプションです。そのため、組み込みデバイス上のWebサーバーが実行されています。

さらに洞察を得るには、「モノのインターネット」を検索して、さまざまな思考プロセスが表示されます。

このような小さなRAMを備えた小さなサーバー」については、HTTPプロトコルが非常に少ないRAMで実装可能で、処理能力も非常に低いことは注目に値します。また、今日のマイクロコントローラーは、Webだけでなくゲームをプレイするさまざまなインタラクティブタスクを実行した初期のパーソナルコンピューターのプロセッサーに匹敵するか、場合によってはそれよりも強力です。


いい答えです。アプリケーションに関しては、ブラウザを使用してアクセスしたり設定したりすることができる一般的な家電製品について言及していません。プリンター、テレビ、ホームシネマオーディオレシーバー、ルーター...リモートアクセス可能なコーヒーマシンさえあると思います:)
Rev1.0

アプライアンスのようなものをHTTP経由で通信するか、他の何かを使用するかの選択は、一般に、アプライアンス自体を少し複雑にするか、ユーザーが通信するために専用のハードウェアまたはソフトウェアを購入またはインストールする必要があるかを選択します。独自のRFスキームを使用してUSBドングルと無線通信する温度センサーを構築する方が、温度センサーにWiFiアダプターを含めるよりも安価でエネルギー効率がよい場合がありますが、後者のアプローチではドングルが不要になります。
supercat

4

多くのネットワークデバイスは、構成パラメーターの検査と設定、デバイスのステータスの確認などのためのWebサーバーを提供します。たとえば、ブラウザーをhttp:///192.168.0.254(正しく覚えていれば...)を指すことでシステムのルーターを構成できます。


3
  1. できるから。

  2. 彼らは非常に低電力になる可能性があるため。1W未満でピークを引き込むようなものです。半分以下のアンプ。大型のコンピューターとは異なり、バッテリーと太陽光発電は実用的です。

  3. 物理的なサイズ。マイクロコントローラ+ wifiまたはイーサネットチップは、サムドライブのサイズになります。

  4. 費用。これに適したマイクロコントローラは、1ドルの範囲である可能性があります。ネットワーク部品はほぼ同じくらい安い。

  5. 使い捨て。あなたはそれらを一回限りのプロジェクトに入れることができます、そして、彼らが死ぬならば、それは高価なコンピュータがそうするように悪くありません。

  6. 正当な理由。

数十ドル(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のいくつかは、それらに近いものです。


また、Texas InstrumentsのMSP430ファミリのマイクロコントローラを検討してください。非常に低い消費電力とWebサービスの十分な機能。16ビット処理。一部のオプションには、すぐに使用できるワイヤレスネットワークが含まれます。サイズ:ワイヤレス接続を備えた完全なボードは、サムドライブに収まります。
アニンドゴーシュ

これらの回答は、質問の一部に回答するだけです。なぜそうするのですか?次の部分はどうですか。どうやってやるの?どのスキルセットが必要ですか?
アンシュル

1
@Anshul httpサーバー仕様にコーディングする必要があり、選択するネットワークICに応じて、ネットワークスタック(ip / tcp / udp)などが必要です。
通行人

2

Olinの答えは、組み込みWebサーバーを使用したあらゆる理由でほぼヒットします。私は産業用制御の開発に取り組んでおり、私たちが生産するほぼすべての製品にはWebサーバーが組み込まれています。

ほとんどのお客様は、さまざまな理由により、すべての機器を既にネットワーク上に置いています。そのため、多数のカスタムプログラムをインストールする代わりに、Webブラウザーを介して構成および/または制御できることが非常に望ましいです。

PROFINETなどの工業用プロトコルを使用している場合でも、物理層は他のイーサネットと同じであり、数十台のマシンを制御するために必要なソフトウェアは1つ(PROFINET IOスーパーバイザー)だけです。私の経験では、この設定は多くの業界でかなり標準的です。

リソース(処理能力、RAM、ROM)に関しては、熊の必需品に切り詰められると、Webページを正常に提供するために必要な最小限のハードウェアが必要です。webACEは、最も小さなWebサーバーの記録を保持していると思います。ホストされているページにアクセスできなくなるのは残念です。

webACEチップ webACEケーブル

ソフトウェア

元のソフトウェアのいくつかのコード統計。私はもともと、合計にオンチップ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つをすぐに起動し、コンピューターに出入りするトラフィックを見て、その感覚をつかむこともできます。


2

その理由の1つは、チャレンジの理由です。マイクロコントローラボードを開発したり、独自のソフトウェアを書いたりする場合はもっとそうです。


3
たいした挑戦ではありません。あなたは、内蔵のWebサーバーを持ってデモをダウンロードすることができます。
オーリンラスロップ

1
独自のTCP / IPスタックをゼロから作成するのは
困難
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.