Stromversorgung Ihres Raspberry Pi mit Arduino

Viele wissen wahrscheinlich, dass es nicht schwierig ist, den Arduino vom Raspberry Pi aus mit Strom zu versorgen. Dazu benötigen Sie lediglich ein USB-Kabel. Das umgekehrte Problem sieht komplizierter aus, da die meisten Arduino-Controller keinen USB-Ausgang haben (Due ist eine Ausnahme). Dies kann jedoch mit GPIO-Pins erfolgen, und ich möchte über ein spezielles Beispiel für Arduino Nano V3.0 und Raspberry Pi B Rev. 2 sprechen. Neben dem Netzteil selbst werde ich Ihnen auch erklären, wie Sie diese Leistung mit der Taste und dem MOSFET-Transistor steuern können.

Theoretische Gelegenheit

Die meisten Arduino-kompatiblen Controller verwenden 5-V-Pins. Die einzige Ausnahme ist der Arduino Due und der 3,3-V-Ausgang des Arduino, aber dies ist derzeit nicht der Fall. Es ist auch bekannt, dass eine der Möglichkeiten zur Stromversorgung des Raspberry Pi darin besteht, 5 V- und GND-Pins am 26-poligen P1-Anschluss zu verwenden:

Es scheint, dass die Lösung offensichtlich ist - Sie müssen den Raspberry Pi an einen der Arduino-Pins anschließen, und es funktioniert. Mein Versuch, dies zu tun, führte dazu, dass der Raspberry Pi mit der PWR-LED aufleuchtete, aber die ACT-LED nicht aufleuchtete. Der Grund ist die sehr geringe Stromstärke der Arduino-Pins (ca. 40-50 mA). Arduino hat jedoch einen separaten 5-V-Pin, der (laut Link ) etwa 400-500 mA erzeugen kann. Jetzt müssen Sie überprüfen, ob genügend Strom vorhanden ist, um die Himbeere mit Strom zu versorgen.

Raspberry Pi benötigt ca. 700 mA für die normale Stromversorgung, wenn zwei USB-Geräte angeschlossen sind. Jedes USB-Gerät kann bis zu 140 mA ( Quelle ) verbrauchen . Himbeeren können noch mehr Strom verbrauchen, wenn sie verteilt sind (meine nicht). Wenn Sie also nicht beschleunigtes RPi ohne USB-Geräte verwenden, sollte der Strom vom Arduino 5V-Pin ausreichen.

Um die Stromversorgung zu steuern, benötigen Sie einige weitere Zutaten: einen Netzschalter und etwas, das hohe Ströme steuern kann. Ich habe für diese Zwecke einen MOSFET-Transistor verwendet. Wir gehen direkt zu den gebrauchten Teilen.

Notwendige Hardware und Software

Ich habe die folgenden "Eisen" -Teile verwendet:
  • Himbeer Pi B rev. 2;
  • Arduino Nano V3.0;
  • Taste zur Leistungssteuerung (ich habe eine Taste mit einem Riegel und einem Signalkabel verwendet);
  • MOSFET-Transistor (ich hatte einen IRF530N);
  • Steckbrett und einige Drähte.

Für die Arduino-Firmware benötigen Sie eine IDE. Ich habe Version 1.5.8 von BETA verwendet, aber auch stabile Version 1.0.6 ist geeignet. Sie benötigen auch meine kleine Bibliothek für PowerButton (Link am Ende des Artikels im Abschnitt über Dienstprogramme).

Schemata

Das Verbindungsdiagramm sieht folgendermaßen aus:



Schematisches Diagramm wie folgt:



Erläuterungen zu den Schemata:

  1. D2 ist an der Taste mit dem SIG-Pin verbunden.
  2. D4 ist mit dem VCC-Pin der Taste verbunden.
  3. D5 ist mit dem MOSFET-Verschluss verbunden.


Das Verbinden mit einem D2-Pin ist kein Zufall: Die Bibliothek für die Schaltfläche verwendet Interrupts, und für Arduino Nano sind nur D2 / D3-Pins für diese Zwecke vorgesehen (Sie können hier überprüfen, welche Pins auf Ihren Arduino-Support-Interrupts vorhanden sind ).

Quellcode des Programms für Arduino

#include 
 
#define POWER_PIN_SIG 2
#define POWER_PIN_VCC 4
#define POWER_FET_GATE 5
#define POWER_PIN_INT 0
 
PowerButtonSwitch pbs;
 
void onPowerOn () {
  Serial.println ("Power On");
  digitalWrite (POWER_FET_GATE, 1); // Öffne den Verschluss (Gate)
}
 
void onPowerOff () {
  Serial.println ("Power Off");
  digitalWrite (POWER_FET_GATE, 0); // schließe das Tor (Tor)
}
 
void setup () {
  Serial.begin (9600);  
 
  // Signalausgang von Arduino an den Gate-MOSFET (Gate)
  PinMode (POWER_FET_GATE, OUTPUT);
  digitalWrite (POWER_FET_GATE, 0);
 
  // Grundeinstellung des Netzschalters
  pbs.setupPowerButton (POWER_PIN_SIG, POWER_PIN_VCC, POWER_PIN_INT);
 
  // Den aktuellen Wert lesen
  // Wenn ein Signal von der Schaltfläche kommt,
  // schalte den Raspberry Pi ein
  int st = pbs.getSwitchStatus ();
  if (st == POWER_ON) {
    onPowerOn ();
  }
 
  // Ereignishandler
  hinzufügen pbs.onPowerOn (onPowerOn);
  pbs.onPowerOff (onPowerOff);
}
 
void loop () {
  // Leere Schleifenverzögerung
  (1000);
  Serial.println ("Keine Aktionen");
}}


Die Bibliothek führt die meisten Aktionen aus, daher ist der Code sehr einfach.

Lösungstest

Kurzes Video mit Tests:

Wie Sie sehen können, funktioniert optisch alles. Trotzdem müssen Sie die Spannung zwischen den Pins TP1 / TP2 überprüfen (die Technik ist hier ). Ich habe einen Wert von ~ 4,6 V, der empfohlene Wert ist mehr als 4,75 V.

Fazit

Trotz der Tatsache, dass alles funktioniert, besteht immer noch der Verdacht, dass der Arduino-Pin beim Anschließen eines Peripheriestroms von 5 V nicht ausreicht. MOSFET und die Taste funktionieren paarweise perfekt. Ein solches Bündel kann für zukünftige Projekte nützlich sein.

Zum Schreiben verwendete Dienstprogramme und Bibliotheken:
  • Fritzing : Zum Zeichnen von Diagrammen, hier verfügbar .
  • die eigentliche Bibliothek Powerbutton : Sie können mit GitHub nehmen hier .


Da dies mein erster Beitrag ist, werden Bewertungen und Kommentare sehr nützlich sein.

Jetzt auch beliebt: