Arduinoの最初のプロジェクトまたはArduinoのWake-on-LANのアイデアをどのように探していたのか





背景



かつて、人々がヘキソパッドのようなさまざまなデバイスを作る方法についてのビデオを見たとき、私はそれを作った人々を尊敬し、そのようなことをする方法を学びたいと願っていました。 私自身、何らかの理由で私には知られていないが、ソフトウェア製品の複雑なアルゴリズムと比較して、LEDの微妙な点滅によってプログラムされたコントローラーと感情の大きな違いを感じることができ、最初のものが勝ちました。 ヘキソパッドに似たものが手に負えない状態に到達する唯一の方法は、基本的なもののプログラミングを開始することであると判断したことです。 プラットフォーム自体の可用性と豊富な情報により、Arduinoが選択されました。



どこから始めますか?



おそらく、新しいビジネスを始めるときの最も一般的な質問は「どこから始めればよいのか?」です。私は不必要なことはしたくありませんでした。 それから、PCの1つの機能を思い出しました。 特定の状況のた​​め、私はしばしば自宅のコンピューターに接続する必要があります。 当然、RDP経由で接続するには、コンピューターの電源を入れる必要があります。 これに基づいて、2つのオプションがありました。1)PCの電源を入れたままにします(少なくとも不便です)。 2)接続する前に彼を起こしてください。



明らかに、2番目の解決策は、経済的および実用的により簡潔です。 Wake-on-LANを動作させようとすると、コンピューターはスリープ状態にならず、アクセスできなくなります。 そして、より正確には、彼は眠りについた後、限られた時間(約15〜30分)以内に目覚めることができました。 この時間間隔以外では、目を覚ますことができませんでした。 BIOSの周りにタンバリンを使って、さまざまなボードとダンスを試しました。 結果は常に同じでした。 このハードウェア上で与えられた条件の下でそれがまだ可能であるという考えを認めますが、問題を解決するのに必要な時間が長すぎました。 その結果、次の「出張」の間、コンピューターを数日間放置したままにしなければなりませんでした。 大多数の人は、リモートアクセスタスクが解決されたとは言えないと理解していると思います。 物理的な接触が目覚めるために必要なのはボタンを短く押すだけ(単純な接触閉鎖)であることを考えると、これはかなり単純なプロジェクトであり、私にとって非常に有用であると判断しました。



すぐに言われた



私が最初に始めたのは、すべてがどのように機能するかと、この問題を解決するために最低限必要なセットを決定することでした。 機能面では、解決策は次のとおりでした。 ArduinoはWebサーバーとして機能し、信号を待ちます。 電源オン/オフ信号を受信すると、PCのステータスをチェックし(既に実行中/オフになっています)、しばらく条件が満たされていることを確認して、電源ボタンの接点を閉じます。 すべてが非常に簡単です。



セットも非常に簡単です:Arduino nano、イーサネットMINI ENC28J60、コンタクトと1つのトランジスタを接続するためのワイヤ(最初はトランジスタなしで、最初のコンタクトと同じ電圧を2番目のコンタクトに印加するだけでしたが、ボードは同等のものを待たないことを経験的に確立しました) 2番目の接点での電圧ですが、最初の接点のアースへの短絡です)。



電源はUSBから供給され、マザーボードのクーラーの空きピンから包含チェックが削除されます。



画像画像



イーサネットMINI ENC28J60の選択は、サイズが小さく、Arduinoがこのボードで動作するためのライブラリを職人がすでに作成しているという事実のために減少しました。



これは次のように機能します。Macアドレス、IP、サブネットマスク、ポート、およびバッファーサイズがトリガーされます。 ENC28J60ボードおよびイーサネット/ IPのさらなる初期化。 次に、ループで、要求によって何かが到着したかどうかを確認するためにバッファーがチェックされます。 私たちが興味を持っているリクエストは、GETメソッドによってリクエストされたページで、それに応答するアドレスがあります。 ルートページへのリクエスト(「GET / HTTP ...」)を取得すると、「It works!」という答えが返されます。Apacheを模倣します。 また、ヘッダーでは、Apacheをあらゆる方法で模倣しています(サーバー:「Apache / 2.4.9(Win32)、すべて)」 リクエストがルートページに移動しない場合、リクエストされたページが有効/無効にすることを決定したページではない場合、「404 Not Found」を発行します。



接続するのはまだ難しくありません。 図を描く意味がわからない。 実際、3つのボード(Arduino nano、ENC28J60、マザーボード)と1つのトランジスタが相互に接続されているためです。 回路が苦手な人にとっては、接続が行われる列の交差点にテーブルだけを表示する方が視覚的だと判断しました。



Arduino nano ENC28J60 マザーボード トランジスタ
+5 + 5USB
D13 SCR
3v3 VIN
GND GND
D2 INT
D12 そう
D11 ST
D10 CS
D8 CPU_fan
D6 拠点
GND エミッタ
パワーsw コレクター
GND GND




画像



便宜上、すべてのワイヤは熱収縮で締め付けられ、ボードはENC28J60で切断されたため、リアパネルに固定できます。 いくつかの古代のネットワークボードは、ファスナー、どこにも見つからないfireの提供者として機能しました。



画像



オン/オフの要求を受け取った後に作業する場合、プログラムは「CPU_fan」に電圧があるかどうかを調べ、これに基づいてトランジスタに電力を供給するかどうかを決定します。 必要に応じて、トランジスタのベースに電流を供給し、しばらくしてから切り離します。 トランジスタに基づく電流により、接点「Power SW」と「GND」を開閉できます。



目標が達成されました。 さらに、BSODの後にPCを出力する機会がありました。電源ボタンを4秒押すことをエミュレートする信号を送信できるからです。



おわりに



これは、これまで行われた中で最も難しいこととはほど遠いものです。 私たち自身の、より複雑なプロジェクト、および他の人々を「助ける」ためのコード作成がありましたが、最初に、最初の記事では、「サンドボックス」に対応する、複雑ではない「プロジェクト」(上記には大きすぎる言葉)を選択し、次に、最初のプロジェクトは初恋のようなものです。 それは魂に沈みます。 したがって、最初のステップが見た目よりも簡単であることを示すために、動機付けを試みたいと思います。 そして、読んだ後に少なくとも一人が試みた場合、私は記事が成功したと考えます。 「最小」の場合は、ジェレミーブルムのビデオから始めることをお勧めします。



PS:私たちは同僚とクアドロコプターを組み立てるための小包を待っており、すでにヘキソパッドを集めることを考えています。 そして、それは試してみる価値があった...



ENC28J60を使用するためのスケッチブックとライブラリへのリンク



All Articles