Matthew Cashdollarブログ記事翻訳
私は趣味の授業中に常にこの質問をします-16ビットマイクロコントローラーに基づくホーム自動制御システム(スマートホーム)の開発-これは本当に正しいアプローチですか? 1か月半前、私はすでにブログで「マイクロコントローラー対システムオンチップ」というトピックについて書いています。 それで、私は再びそれについて書きます。
この一部は、 Stellaris LaunchpadとArduino Dueの販売によって促されました。 どちらも32ビットマイクロコントローラーに基づいており、多くの点で非常によく似ています。 私は両方のデータシートを調査しましたが、価格はかなり異なりますが、同じターゲットオーディエンス向けに設計されています。 MSP430からStellarisに切り替えるか、基本的に異なるシステムに移行して、マイクロコントローラーの代わりにRaspberry Piなどを使用する必要があるかもしれないという事実を考えました。
Stellaris LaunchpadとArduino Dueはどちらも非常に強力ですが、Linuxを実行するようには設計されていません。 それらは、直接記述された実行可能コード、または外部イベントに対する反応時間が非常に短い最小限のOSであるリアルタイムオペレーティングシステム(RTOS)の制御下で動作します。 また、どちらもMSP430や8ビットAVRよりもはるかに複雑です。
一方、実生活(インターネット以外)では、私が知っているほとんどの人がRaspberry Piまたは他の組み込みLinuxシステムを使用しています。 マイクロコントローラの使用は、私が出会った人たちの中ではかなりまれなケースです。 私の環境では、Arduinoでさえ組み込みLinuxよりもはるかに人気がありません。 私が理解しているように、Raspberry Piを購入できるのにArduinoを購入するのはなぜですか? Linuxには大量の既製ソフトウェアがあり、簡単なスクリプト言語を使用してプログラムできます。
個人的には、Linuxを使いたくないのは、毎日仕事でLinuxを使っているからです。家に帰ってから、Linuxのようなシステムで再び仕事をすることの喜びを感じないからです。 Linuxを使用しても問題はありませんが、どこにでもありすぎて気分が落ち込みます。 8/16ビットのマイクロチップで簡単な電子デバイスを操作することにもっと興味があります。
しかし、私は現実に背を向けません。 現実世界と同じ波長を維持したい場合は、現実世界で使用されているツールを使用する必要があります。 それ以外の場合は、蒸気機関車で車を運転したいように見えますが、それは内燃機関があまりにも日常的であるために、私は常にそれを使用しています。 世界がより高度な技術に移行している場合、私はそれが好きであろうとなかろうと、それを習得する必要があります。 特に私のブログを人々に興味を持ってもらい、関連性を保ちたい場合。
私のスマートホームプロジェクトでは、この問題に本当に遭遇しました。 MSP430で制御システム用のローカルネットワークドライバーを作成しましたが、すべてが非常に適切に見えます。 実際、MSP430の自動化システムに必要なすべてのことができます。 しかし、私はそれを行う方法が正しいかどうか疑問に思います。 スプーンを持っているときに、フォークでスープを食べようとしていますか? たぶんLinuxがより適切なシステムでしょうか? 説明させてください。
停止して現在の状況を見ると、2012年11月の技術的な成果についてです。 Linuxベースのシステムオンチップと比較して、マイクロコントローラーは適切で関連性が高いのでしょうか?
頭に浮かぶ組み込みシステムのプロジェクトをリストすると、これらはドローン、ロボット、ホームオートメーション、モーターコントローラー、センサー、時計、3Dプリンターなどです。 これらの場合、組み込みLinuxはマイクロコントローラーよりも適していますか? そして、なぜですか?
マイクロコントローラーが最良の選択である3つの状況があると思います。イベントに対するリアルタイムの反応が重要である場合。 非常に低いエネルギー消費が必要な場合。 そして、可能な限り低いチップを使用する必要がある場所。
手始めに、安いチップの使用は私にとってそれほど重要ではありません。 私は自分の趣味を自分でやっており、競争力のある製品を生産するつもりはありません。 私が開発する小規模なプロジェクトのために競争力のある価格を得るために、奴隷労働を使って生産を工場に移すことを考える必要はありません。 私の能力のおかげで、1日に複数のボードをはんだ付けできたら幸いです!
たとえば、スマートホームプロジェクトの場合、リモートコントロールスイッチを設計できます。 ライトまたは他の何かをオン/オフにすることができます。 同時に、地元の電気店に行って、中国製の20ドルで購入できます。 自分のスイッチを売ろうとして、この価格を上回ることはできますか? これは可能だとは思いません。
あなたがそれについて考えるなら、これはホームオートメーションに必要な他の多くのものに当てはまります。 温度、煙、動きなどのセンサー、私は独立して同じものを作ることができますが、これから経済的利益が得られる可能性は低いです。 彼らがハウスウェアで20ドルでそれらを見つけることができるとき、だれが75ドルでこれらのものを私から買うことを気にしますか?
趣味から利益を引き出すことを考えているなら、もっと高価で複雑な製品に注意を払う方が良いでしょう。 たとえば、ホームオートメーションコントローラーまたはサーモスタットは、通常100ドル以上の費用がかかり、個々の創造性により多くの自由を残します。それを構築し、それを隣人に売り、さらにはそれでお金を稼ぐことさえできます。
しかし、最終的なデバイスの価格を改善したいという願望は、地球上で最も安価なマイクロコントローラーを使用する必要があるという意味ではありません。 実際、これは悪い考えです。なぜなら、 開発時間には、使用する部品と同じコストがかかります。 マイクロコントローラは安価かもしれませんが、制御コードを書くのに時間がかかります。 時は金なりです。仕事が早くなれば、もっと多くを達成できます。
これらすべての考慮事項から、Linuxを使用せず、個人的な好みにもかかわらず、マイクロコントローラーよりもLinuxでスマートホームシステムを開発するほうが有益であるという結論に至ります(スクリプトよりも低レベルのプログラミングが好きなので、Linuxは退屈させます)。
トピックのトピック、マイクロコントローラーの価格に戻ると、これは新しい製品をリリースしようとする大企業にとって重要な要因かもしれませんが、個人レベルでは、キックスタータースタイルのビジネスを行おうとすると、この要因はそれほど重要ではなく、実際、速い開発時間ですコンポーネントのコストよりも重要です。
一方、低消費電力が必要な場合は、マイクロコントローラーがシステムオンチップよりも優れた選択肢になる可能性があります。 このようなシステムでは、2つのポイントがあります。動作中の回路自体の低消費電力と、短い起動時間です。 小型デバイスのバッテリーを節約する一般的な方法は、オフ(シャットオフ)にすることです。 Linuxでコンピューターの電源を切ると、仕事に戻るのに十分な時間が必要で、場合によっては数分かかることもあります。 この時間は組み込みシステムでは受け入れられません。
MSP430などのマイクロコントローラーを使用する場合、単一のバッテリーで何年も使用できます。 Stellaris LaunchpadとArduino Dueは、原則として同じことを行うことができ、MSP430よりも多くの電力を消費しますが、Raspberry Piと比べると非常にわずかです。 また、MSP430はシャットダウン後すぐに起動できます。
したがって、低電圧動作が必要なすべての状況で、マイクロコントローラを使用することは理にかなっていると確信しています。 このようなニーズが発生するバッテリー駆動のデバイスは多種多様です。
3番目のケースでは、私が言ったように、即時応答(リアルタイム応答)を必要とする操作でLinuxよりもマイクロコントローラーを使用する方が有意義です。 私は3DプリンターやCNCマシンなどのデバイスを意味します。私が話していることは知っています。なぜなら、それらの研究に多くの時間を割いたからです。 その性質上、作業には高い精度が必要です。これは、コマンドに対する反応時間に完全に依存するよりもわずかに少ないです。
たとえば、現在木材や金属を切断している丸のこがある場合、プロセスを停止することはできません。それを制御するコンピューターは、メモリからディスクなどにデータを削除するために一時停止が必要です。それ以外の場合は同じです。 PCを使用したことがある人は誰でも、通常の操作中にときどき発生するランダムなハングに慣れています。 ここで、操作中に突然Windowsの更新のチェックを開始する、PCの制御下にある大型の掘削機があり、それが立っているテーブルをドリルで掘削するとします。 コンピューターが制御できなくなりました。
PCおよびシステムオンチップは、Windowsでも、Linuxでも、リアルタイムで動作するようには設計されていませんが、それだけでこれに近づこうとしています。 例として、Linuxカーネル用のリアルタイムパッチと、この種の作業用に作成された特別なCNCソフトウェアがあります。 私はこのLinuxパッチに精通しておらず、リアルタイムイベントを完全に制御することがどれほど柔軟かはわかりません。 しかし、これは可能な選択肢に過ぎないと思います。なぜなら、 Linuxは、どのパッチが添付されていても、割り込みシステムのおかげで、この分野のマイクロコントローラーに勝るものはありません。
結論として、私は自分のプロジェクトでマイクロコントローラーを使用することが有利な分野を見つけるために多くの時間を費やしたと言いたいと思います。 そして、ラズベリーパイとビーグルボーンの世界支配の時代が来たようです。 これは、DIYコミュニティの現在の状況です。 ほとんどの場合、これらのシステムでの開発はより高速で簡単であるため、多くの場合、これはほとんどのプロジェクトにとって最良の選択です。
マイクロコントローラーの場合、低電圧デバイス、リアルタイム操作、および低コストのデバイスの領域のみが残ります。
マイクロコントローラはPCよりも「楽しい」と思われるという事実に依存しません。 これは妥協するものです。
Matthew CashdollarによるDIYホームオートメーション製品開発に関するオリジナルの「Are Microcontrollers Obsolete?」 ブログ投稿の英訳 。