Aus Raspberry Pi Geek 10/2022

RasPi-Alternativen im Test: Nvidia Jetson Nano 2GB, Hardkernel Odroid XU4 und Radxa Rock Pi 4 (Seite 3)

Listing 3

MCP3008.java

public class MCP3008 {
  private final String Sysfs="/sys/class/gpio/";
  private ProcessBuilder runCommand  = new ProcessBuilder();
  private String command;
  private int MISO,MOSI,CLK,CS;
  private void initGPIO(int gpio,String mode) throws Exception {
    command="echo "+gpio+" > "+Sysfs+"export";
    runCommand.command("sh","-c",command).start().waitFor();
    command="echo "+mode +" > "+Sysfs+"gpio"+gpio+"/direction" ;
    runCommand.command("sh","-c",command).start().waitFor();
  }
  private boolean readGPIO(int gpio) throws Exception {
    command="cat "+Sysfs+"gpio"+gpio+"/value";
    Process returnValue=runCommand.command("sh","-c",command).start();
    String value =new String(returnValue.getInputStream().readAllBytes()).trim();
    if(value.equals("1")){
      return true;
    }
    else {
      return false;
    }
  }
  private void writeGPIO(int gpio,boolean value) throws Exception {
    if (value){
      command="echo 1 > "+Sysfs+"gpio"+gpio+"/value";
    }
    else {
      command="echo 0 > "+Sysfs+"gpio"+gpio+"/value";
    }
    runCommand.command("sh","-c",command).start().waitFor();
  }
  public MCP3008(int MISO, int MOSI, int CLK , int CS) throws Exception {
    this.MISO=MISO;
    this.MOSI=MOSI;
    this.CLK=CLK;
    this.CS=CS;
    initGPIO(MISO,"in");
    initGPIO(MOSI,"out");
    initGPIO(CLK,"out");
    initGPIO(CS,"out");
  }
  public int readChannel(int channel) throws Exception {
    int value=0;
    writeGPIO(CS,true);
    writeGPIO(CLK,false);
    writeGPIO(CS,false);
    int outSequence = (channel | 0x18)<<3;
    for (int i=0; i<5; i++) {
      if ((outSequence & 0x80)>0) {
        writeGPIO(MOSI,true);
      }
      else {
        writeGPIO(MOSI,false);
      }
    outSequence = outSequence << 1;
    writeGPIO(CLK,true);
    writeGPIO(CLK,false);
    }
    for (int i=0; i<12; i++) {
      writeGPIO(CLK,true);
      writeGPIO(CLK,false);
      value <<= 1;
      if (readGPIO(MISO)) {
        value |= 0x1;
      }
    }
    writeGPIO(CS, true);
    value >>= 1;
  return value;
  }
  public static void main (String[] args) throws Exception {
    MCP3008 mcp = new MCP3008(17,16,18,19);
    System.out.println(mcp.readChannel(7));
  }
}

Jetson: Lüfter

Der Einsatz des Lüfters ist beim Jetson eher optional, daher berücksichtigt ihn die Basisinstallation des Betriebssystems nicht. Um ihn zu aktivieren, verwenden Sie das Kommando aus der ersten Zeile von Listing 4. Die Zahl 128 gibt dabei an, wie schnell sich der Lüfter drehen soll, der zulässige Wertebereich bewegt sich zwischen 0 und 255.

Um den Lüfter sinnvoll ansteuern zu können, benötigen Sie die Temperatur des Boards. Der Jetson verfügt über mehrere Temperatursensoren, die Sie mit dem Kommando aus der zweiten Zeile des Listings abfragen. Um herauszubekommen, welche Temperatur zu welcher konkreten Zone gehört, verwenden Sie das Kommando aus der letzten Zeile.

Mit diesen Informationen versehen, genügen ein kleines Shell-Skript und ein Cronjob, und schon funktioniert die Temperaturregelung für den Jetson.

Listing 4

Lüftersteuerung (Jetson)

$ sudo sh -c 'echo 128 > /sys/devices/pwm-fan/target_pwm'
$ cat /sys/devices/virtual/thermal/thermal_zone*/temp
$ cat /sys/devices/virtual/thermal/thermal_zone*/type

Jetson: Fazit

Im Großen und Ganzen lassen sich mit der Jetson-GPIO dieselben Projekte umsetzen wie mit der GPIO des RasPi. Man darf allerdings nicht erwarten, dass alle Programme auf Anhieb eins zu eins so arbeiten wie beim Raspberry Pi. Die unterschiedlichen Nummern für die GPIO-Pins stellen aber nur eine kleine Hürde dar, die versierte Bastler mühelos nehmen. Die I2C-Schnittstelle funktionierte auf Anhieb wie erwartet, das SPI-Testprogramm lieferte ebenfalls keine überraschenden Ergebnisse.

Beim Einsatz von speziell für den RasPi entwickelten Schaltungen sollten Sie jedoch vorab prüfen, ob alle Sonderfunktionen der Pins auch wirklich an den Stellen liegen, an denen Sie sie erwarten. Im schlechtesten Fall könnten sogar die leicht abweichenden elektrischen Eigenschaften zu Problemen führen.

Odroid: Basics

Der Odroid XU4 (Abbildung 6) ähnelt dem Raspberry Pi in vielerlei Hinsicht. Er weist zum Beispiel fast dieselbe Größe und ähnliche Leistungsdaten auf wie der RasPi. Die Grundidee des südkoreanischen Herstellers war es, eine Alternative zum Raspberry Pi auf den Markt zu bringen, aber mit einigen Vorteilen gegenüber dem Original.

Abbildung 6: Der Odroid&nbsp;XU4 mit Adapterplatine. Von den Abmessungen und der Leistung her entspricht er weitgehend dem RasPi&nbsp;3.

Abbildung 6: Der Odroid XU4 mit Adapterplatine. Von den Abmessungen und der Leistung her entspricht er weitgehend dem RasPi 3.

Grob gesagt rangiert der Odroid XU4 leistungstechnisch in der Liga des Raspberry Pi 3, wobei es einige echte Vorteile zum RasPi gibt, die wir uns im Folgenden ein wenig genauer ansehen. Einen echten Nachteil für den Bastler stellen jedoch die geringen Abstände der GPIO-Pins beim XU4 dar. Um trotzdem gut mit dem Odroid arbeiten zu können, verwenden wir den eingangs erwähnten Adapter, der eine RasPi-ähnliche GPIO bereitstellt.

Zur Stromversorgung benötigen Sie ein Netzteil mit 5 Volt Ausgangsspannung und einer Stromstärke von 4 Ampere. Angeschlossen wird das Netzteil über einen runden 5,5-Millimeter-Stecker mit innenliegendem Pluspol. Ein USB-Netzteil von der Stange wie beim RasPi lässt sich also nicht verwenden. Den verbauten Lüfter steuert der Odroid XU4 automatisch an.

Odroid: Betriebssystem

Für den Odroid XU4 stehen auf der Webseite des Herstellers [8] Ubuntu 22.04 und Android 4.4.4 in verschiedenen Varianten bereit. Sie transferieren die Images wie gewohnt mit dem RPi Imager auf eine SD-Karte.

Als Alternative dazu verfügt der Odroid über einen Sockel für eine eMMC (Embedded Multi-Media Card). Die bietet den Vorteil, dass sie beim Lesen von Daten erheblich schneller agiert als eine SD-Karte und beim Schreiben nur selten langsamer. Die eMMC verhält sich auch um einiges betriebssicherer als die SD-Karte. Unterm Strich eignet sich eine SD-Karte optimal zum schnellen Testen, für den Dauerbetrieb sollten Sie eine eMMC verwenden.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 12 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben