理論的機会
ほとんどのArduino互換コントローラーは5Vピンを使用します。 唯一の例外はArduino DueとArduinoからの3.3V出力ですが、現在はそうではありません。 Raspberry Piに電力を供給する方法の1つは、26ピンP1コネクタで5VおよびGNDピンを使用することでもあることが知られています。
解決策は明らかだと思われます-Raspberry PiをArduinoピンのいずれかに接続する必要があり、すべてが機能します。 これを試みた結果、Raspberry PiはPWR LEDで点灯しましたが、ACT LEDは点灯しませんでした。 その理由は、Arduinoピンからの非常に小さな電流強度(約40〜50 mA)にあります。 しかし、Arduinoには独立した5Vピンがあり、( リンクによると)約400〜500 mAを生成できます。 次に、Raspberryに電力を供給するのに十分な電流があるかどうかを確認する必要があります。
Raspberry Piには、2つのUSBデバイスが接続されている通常の電力に約700 mAが必要です。 各USBデバイスは、最大140 mA( ソース )を消費できます。 ラズベリーは、分散しているとさらに消費される可能性があります(私の場合はそうではありません)。 したがって、USBデバイスなしで非加速RPiを使用する場合、Arduino 5Vピンからの電流で十分なはずです。
電源を制御するには、電源ボタンと高電流を制御できるものが必要です。 これらの目的でMOSFETトランジスタを使用しました。 中古部品に直接進みます。
必要なハードウェアとソフトウェア
次の「鉄」部品を使用しました。
- Raspberry Pi B rev。 2;
- Arduino Nano V3.0;
- 電源制御用のボタン(ラッチと信号線付きのボタンを使用しました)。
- MOSFETトランジスタ(私はIRF530Nを持っていました);
- ブレッドボードといくつかのワイヤ。
Arduinoファームウェアには、IDEが必要です。ベータ版のバージョン1.5.8を使用しましたが、安定版1.0.6も適しています。 また、PowerButton用の小さなライブラリが必要になります(ユーティリティに関するセクションの記事の最後にあるリンク)。
スキーム
接続図は次のようになります。
回路図は次のとおりです。
スキームの説明:
- D2はボタンのSIGピンに接続されています。
- D4はボタンのVCCピンに接続されています。
- D5はMOSFETシャッターに接続されています。
D2ピンへの接続は偶発的ではありません:ボタンのライブラリは割り込みを使用し、Arduino Nanoの場合、D2 / D3ピンのみがこれらの目的のために設計されています(Arduinoのどのピンが割り込みをサポートしているかを確認できます )。
Arduino用プログラムのソースコード
#include <PowerButton.h>
#define POWER_PIN_SIG 2
#define POWER_PIN_VCC 4
#define POWER_FET_GATE 5
#define POWER_PIN_INT 0
PowerButtonSwitch pbs ;
void onPowerOn ( ) {
シリアル println ( "Power On" ) ;
digitalWrite ( POWER_FET_GATE、 1 ) ; //ゲートを開きます
}
void onPowerOff ( ) {
シリアル println ( "Power Off" ) ;
digitalWrite ( POWER_FET_GATE、 0 ) ; //ゲートを閉じます
}
void setup ( ) {
シリアル 開始 ( 9600 ) ;
// ArduinoからMOSFETシャッター(ゲート)への信号出力
pinMode ( POWER_FET_GATE、OUTPUT ) ;
digitalWrite ( POWER_FET_GATE、 0 ) ;
//電源ボタンの初期設定
pbs。 setupPowerButton ( POWER_PIN_SIG、POWER_PIN_VCC、POWER_PIN_INT ) ;
//現在の値を読み取ります
//ボタンからの信号がある場合、
// Raspberry Piを有効にします
int st = pbs。 getSwitchStatus ( ) ;
if ( st == POWER_ON ) {
onPowerOn ( ) ;
}
//イベントハンドラーを追加します
pbs。 onPowerOn ( onPowerOn ) ;
pbs。 onPowerOff ( onPowerOff ) ;
}
voidループ( ) {
//空のループ
遅延( 1000 ) ;
シリアル println ( "アクションなし" ) ;
}
ライブラリはほとんどのアクションを実行するため、コードは非常に単純です。
ソリューションテスト
テスト付きの短いビデオ:
ご覧のとおり、視覚的にすべてが機能します。 それでも、TP1 / TP2ピン間の電圧を確認する必要があります(技術はこちらです )。 〜4.6Vの値を取得しました。推奨値は4.75V以上です。
おわりに
すべてが機能するという事実にもかかわらず、5Vからの周辺電流を接続する場合、Arduinoピンでは十分ではないという疑いがあります。 MOSFETとボタンはペアで完全に機能します。このようなバンドルは、将来のプロジェクトに役立ちます。
書き込みに使用されるユーティリティとライブラリ:
これは私の最初の投稿なので、レビューとコメントは非常に役立ちます。