Anleitung: Erste Schritte mit Orange Pi Zero für Anfänger vom Linux Anfänger. Ich erhoffe in diesem Tutorial die Schritte zu erwähnen die die Linux Könner gar nicht erwähnen würden, weil für die das selbstverständlich sind.

Orange Pi Zero auf Deutsch


Orange Pi Zero ist interessant mit seinem unschlagbarem Preis von 8,35€ bei AlieExpress. Viele Programme und Programm Module von Raspberry PI laufen auf dem Board. Folgende Anwendung sehe ich für das Orange Pi Zero vor:
- Zentrale Server für Haus Automatisierung mit IoBroker.
- MQTT Broker (Server).
- WiFi-Internet-Radio für das Bad mit Bewegungsmelder, Verwaltung der Radiosender Liste per Webinterface.
- Webserver mit PHP und MySQL zum Betrieb eigener Homepage (mit Hilfe von DynDns).
- LAN Kabelgebundene I2C Steuerung mit MCP23017 (16 Kanälen IO) pro IC, manche mögen WLAN nicht.
Um das realisieren zu können müsste ich mich mit den ganz neuen Sachen auseinandersetzen und das was ich rausgefunden habe, möchte ich hier in einfachen Schritten zeigen.


Installation vom Linux Betriebssystem geht ganz einfach

Orange Pi Zero auf Deutsch

Image für SD-Karte herunterladen Armbian Image "Armbian_5.25_Orangepizero_Debian_jessie_default_3.4.113"

Mit dem Tool Win32diskimage unter Windows auf die SD einspielen (Das Tool muss mit Admin Rechten gestartet werden). SD Karte kann 2G…16G sein.

SD-Karte in Orange Pi Zero Kartenslot einstecken und Orange Pi Zero über Micro USB mit einem Ladeadapter mit Strom versorgen. USB-Netzteil soll 1A liefen können. (Bitte nicht von einem Computer USB Port betreiben, weil Orange PI versucht dann die Verbindung über USB mit Computer herzustellen, dabei kommt es zu den Fehlermeldungen.)


Erste Verbindung zum PC schaffen

Es gibt da 2 Möglichkeiten.
1 Möglichkeit: über Serielle Schnittstelle RS232 TTL (3,3V).
2 Möglichkeit über Netzwerk Kabel und Router.

1) Verbindung über Serielle Schnittstelle
Bitte verwenden Sie ein USB-Seriell Adapter mi 3,3V Pegel.
Anschluss erfolgt an 3 poliger Stiftleiste neben der Ethernet Buchse,
Pin 1 ist am Rand der Platine. GND des Kabels geht zum Pin1 (GND), TxD des Kabels geht zum Pin2 (RxD), RxD des Kabels geht zum Pin3 (TxD).

Alternativ kann 5V Kabel verwendet werden, allerdings soll das TxD Leitung über eine schottky Diode an 3,3V Pin des Orange Pi angeschlossen werden, damit bilden wir einfachen Spannungsbegrenzer der die Spannung auf 3,3+0,3V=3,6V begrenzt.

Als Software für die Linux Terminal empfehle ich das PuTTY
PuTTY einstellen: Connection Typ: Serial, Serial line: COMx (bitte ihre Port Nr. wählen), Speed: 115200.
Vorteil dieser Verbindung ist dass, Sie die Debug Ausgaben und Meldungen des Systems während des Ladevorgangs sehen.
Naschteil: Maus und F1..F10 tasten funktionieren nicht. Statt F1 funktioniert „Alt“+“1“, statt F10 funktioniert „Alt“+“0“ Damit können Sie das WLAN des Orange Pi Zero einstellen ohne ihr Router zu berühren.

2) Orange Pi Zero über das Netzwerkkabel an den Router anschließen.
Auf der Router Konfigurationswebseite suchen Sie in der Liste der DHCP-Clients das OrangePi um die IP Adresse der Orange Pi Zero zu ermitteln. Jetzt kann das PuTTY verwendet werden.
PuTTY einstellen: Connection Typ: SSH, Host Name: IP Adresse der Orange Pi Zero, Port 22

Nach dem die Verbindung aufgebaut wurde, erscheint das Text „login as: „
Während Eingabe des Passwortes wird nichts angezeigt.
Standard Logindaten:
• Benutzer: root
• Passwort: 1234

SSH Orange Pi Zero 

Nach erfolgreicher Anmeldung werden Sie aufgefordert root Passwort zu wechseln (altes Passwort, neues Passwort, noch mal neues Passwort).Danach werden Sie aufgefordert noch einen Benutzer außer root anzulegen.
Damit ist die erste Einrichtung der Orange Pi Zero abgeschlossen.


WLAN Konfigurieren

Orange Pi Zero WLAN Konfiguration

Um den Orange Pi Zero über den WiFi mit ihrem Haus Netzwerk zu verbinden, starten Sie das Programm

nmtui

Da ist eigentlich alles selbsterklärend. Bei der Verbindung mit PuTTY über Serielle Schnittstelle, bedienen Sie das Programm mit Tabulator und Pfeil Tasten.

Nachdem sie sich für die Verbindungsweg über WLAN oder LAN entschieden haben und das auch im Orange Pi Zero konfiguriert haben, müssen Sie dafür sorgen dass der Router immer die gleiche IP Adresse dem Orange Pi Zero vergibt. Das lässt sich machen auf der Router Konfigurationswebseite. Suchen Sie in der Liste der DHCP-Clients das Orange Pi aus und kopieren Sie die MAC Adresse in Zwischenablage. Dann gehen Sie bitte zum Menüpunkt "Address Reservation" und machen Sie da einen neuen Eintrag. Danach muss der Router neu gestartet werden. Die IP-Adresse die Sie da eingetragen haben, benutzen Sie bitte bei Einstellungen des PuTTY.

Sie können bei PuTTY-Terminal durch die Betätigung der rechter Maustaste die Texte aus Zwischenablage einfügen.


Ein paar Linux Befehle:

exit - Sitzung beenden
halt - Den Orange Pi Zero runterfahren (Anmerkung: Schalten Sie den Strom, erst wenn grüne LED-Erlischt)
reboot - Neustart

Nach dem das Internetverbindung steht, wird empfohlen das System auf neuste Stand zu bringen das geschieht mit den Befehlen:
apt-get update
apt-get upgrade

Dateimanager

Dateimanager ähnlich wie Norton Commander (dos) gibt es für Linux und heißt Midnight Commander.
Installation:

apt-get install mc

Starten Sie den Midnight Commander durch Eingabe von mc
Midnight Commander hat auch ein Texteditor der sehr unbequem ist (nach meinem Empfinden). Und ich habe die Möglichkeit gesucht die Texte auf meinem Windows PC entfernt zu editieren.


SFTP

Die Lösung ist das SFTP. Um SFTP zu nutzen bedarf es keine zusätzliche Software Installation auf dem Orange Pi Zero. Als SFTP Client habe ich Firefox addon „FireFTP“ auf meinem Windows Rechner installiert. Setup geht so: „Ein Benutzerkonto einrichten“->“Grundeinstellungen“ unter Zugangsname die Verbindung irgendwie benennen, Host: Die IP des Orange PI Zero angeben, Benutzername: root und Ihr root Passwort. Bei dem Reiter „Verbindungen“ das SFTP auswählen und Port 22 Angeben.

Mit dem SFTP Client kann man Dateien auf der Orange Pi Zero vom Windows aus hoch- und runterladen und editieren.


Backup Systemzustand sichern

Das geht kinderleicht. Orange Pi Zero runterfahren (halt) und ausschalten. SD-Karte in Windows PC einstecken. Image vom SD-Karte mit Win32diskimage erstellen. Fertig!
Die erstellte Image kann später auf die SD-Karte gleicher oder größerer Kapazität eingespielt werden.


Kühlkörper

Grundsätzlich kann Orange Pi Zero ohne Kühlkörper arbeiten. Aber es gibt dabei Einschränkungen. Wenn CPU zu heiß wird fährt das System automatisch die Taktfrequenz runter. Dies geschieht wenn CPU 70 Grad übersteigt.

Es ist besser Orange Pi Zero mit Kühlkörper zu betreiben.

Unbelastet hat mein Orange Pi Zero mit Kühlkörper 40 Grad.
100% Belastet hat mein Orange Pi Zero mit Kühlkörper 65 Grad.

Sie können übrigens die aktuelle CPU Temperatur aus der Datei „/etc/armbianmonitor/datasources/soctemp „ oder „/sys/class/thermal/thermal_zone1/temp“ auslesen.

cat /etc/armbianmonitor/datasources/soctemp

Weitere Linux Befehle
cat -der Befehl zeigt den Dateiinhalt an.

passwd -Ändern des Passwords vom aktuellen Benutzer.

passwd Benutzer -Ändern des Passwords vom bestimmter Benutzer. (nur wenn als root angemeldet)

sudo –s –Ermöglicht als root handeln trotz Anmeldung beim PuTTY von anderem Benutzerkonto.

htop – zeigt alle laufende Prozesse und CPU-Auslastung, Lässt die Prozesse stoppen.

„Strg + C“ bricht die Programmausführung ab.

Audio Output

Orange Pi Zero Audio output Lautsprecher kopfhörer Anschlußplan Schaltplan

Ersten Test des Audioausgangs habe ich mit Kopfhörer und 2x 4,7uF Kondensator durchgeführt. Pluspole der Elko werden an LINEOUTL und LINEOUTR Angeschlossen (sehe pinout). Kopfhörer werden dann in Reihe mit Kondensatoren geschaltet.
In terminal geben wir ein:

speaker-test -twav -c2

Um Wiedergabe zu stoppen brechen wir die Programm Ausführung mit „Strg + C“

Wenn Sie nichts hören kann es daran liegen das lieneout per Software abgeschaltet ist.
Lieneout lasst sich mit Audiokarten Regler alsamixer einschalten.

alsamixer

Navigieren Sie mit Pfeiltasten zu „Audio li“ und aktivieren Sie den in dem Sie „m“-Taste betätigen.


GPIO steuern und schalten über Kommandozeile

Orange Pi Zero pinout Pinbelegung H2+ GPIOs Port

Schlissen Sie eine LED mit einem Vorwiderstand zwischen GND (Pin25) und GPIO 10 (Pin 26) an.
Folgende Befehle schalten das GPIO10 als Ausgang und schalten das LED ein.

echo 10 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio10/direction
echo 1 > /sys/class/gpio/gpio10/value

Mit dem Befehl über Kommandozeile schalten Sie das LED wieder aus.
echo 0 > /sys/class/gpio/gpio10/value

Bash script zum Blinken mit dem LED. Bash-Script beim Linux ist wie eine BAT-Datei im DOS (so habe ich das verstanden).
Erstellen Sie eine Text-Datei „blink.sh“ mit PSPad-Editor (Format UNIX einstellen) mit folgendem Inhalt:

#!/bin/bash
echo 10 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio10/direction
while [ : ]
do
echo 1 > /sys/class/gpio/gpio10/value
sleep 0.2
echo 0 > /sys/class/gpio/gpio10/value
sleep 0.2
done


Übertragen Sie die Datei in Verzeichnis root
Rechte der Datei ändern: Ausführen erlauben
chmod g+rwx blink.sh

Datei ausführen
./blink.sh

Script Ausführung stoppen mit „Strg“+“C“

Datei ausführen im Hintergrund
./blink.sh &

Script Ausführung stoppen geht über htop, oder durch Eingabe von kill ProzessNr.

Wenn das Befehl „echo 10 > /sys/class/gpio/export“ bereits ausgeführt wurde, dann komm eine Fehlermeldung „./blink.sh: line 2: echo: write error: Device or resource busy“ Das liegt daran das GPIO 10 bereits erstellt wurde. GPIO 10 kann wieder freigegeben werden mit:

echo 10 > /sys/class/gpio/unexport

Übrigens das Steuern von Roter und Grüner LED geht auf diese Weise nicht. Weil die LEDs werden Bereits vom Betriebssystem verwaltet. Das Steuern von Roter und Grüner geht genauso wie GPIOs über das sysfs

echo 0 > /sys/class/leds/green_led/brightness

echo 1 > /sys/class/leds/green_led/brightness

Das gleiche gilt für Rote LED


Steuern von Orange Pi Zero GPIO mit WiringOP-Zero Bibliothek

Orange Pi Zero pinout Pinbelegung wiringPi

Installation:
git clone https://github.com/xpertsavenue/WiringOP-Zero.git
cd WiringOP-Zero
chmod +x ./build
sudo ./build

Test und Aktuelle Zustände anzeigen geht so:
gpio readall

Rote LED an machen:
gpio write 30 1

unsere LED an GND (Pin25) und GPIO 10 (Pin 26) steuern
gpio mode 11 out
gpio write 11 1
gpio write 11 0

Auf einmal ist Pin 26 nicht mehr GPIO 10 sondern GPIO 11. Heier wird Nummerierung nach „Wiring Pi“ verwendet, wahrscheinlich um kompatibel zum Raspberry Pi zu bleiben.


Erstes C-Programm

„Hallo World“ ist langweilig, deswegen schlage ich vor, einfach mit dem rotem LED zu blinken.

Nehmen Sie einen Texteditor (der Unix Format unterstützt)und schreiben Sie direkt den Programmcode.


Speichern Sie den Text als „blink.c“ in root Verzeichnis. WiringOP-Zero Bibliothek sollte bereits installiert sein.

Übrigens so können Sie beliebige Datei vom Internet heruntergeladen. Die Datei landet in Home Verzeichnis des aktuellen Nutzer.

wget esp8266-server.de/OrangePi/dateien/blink.c


Richtig kompilieren

"gcc" ist ein C, C++ Compiler, der ist bereits im Armbian –Image enthalten.

gcc blink.c -o blink -lwiringPi

Erster Parameter ist unsere Datei mit Programmcode, zweiter Parameter ist der Name der Ausführbaren Datei die wir erhalten wollen, dritter Parameter ist Name der Bibliothek wo der Linker die GPIO-Funktionen findet.

Wenn keine Fehlermeldungen angezeigt wurden, erscheint Datei „blink“ in root Verzeichnis.

Programm Ausführen
./blink

Nächste Schritt wäre dann, ein Taster abzufragen und ein Ereignis auszulösen bei der Betätigung. Ich denke an einen Taster der das System neustartet. Und das Programm sollte noch durch den Autostart gestartet werden.


Autostart

Ich habe bei Linux 2 Möglichkeiten um Programme automatisch zu starten entdeckt.

Autostart bei Orange Pi mit dem Aufgabenplaner

Taskplaner bei Linux heißt „cron“. Um eine Aufgabe hinzufügen führen Sie das Befehl aus:

crontab -e

Am Ende der Textdatei tragen Sie

@reboot /root/blink &

und noch eine Leerzeile bevor sie die Datei speichern. „@reboot“ Bedeutet- ausführen beim Hochfahren. Das Programm „blink“ wird mit root-Rechten ausgeführt, das kann man mit htop überprüfen.

Autostart mit Init Skripts

Dieser Weg ist etwas komplizierter. Im Verzeichnis "/etc/init.d" soll ein Bash-Script erstellt werden zum Beispiel „Autostart.sh“

#!/bin/bash
/root/blink &
exit 0

Ich bin wieder in die Unix Zeichenkodierung-Falle reingekommen. Wenn man Texte im Windows schreibt soll der Editor auf „Unix“-Format umgeschaltet werden. Sonst kommt immer eine Fehlermeldung „-bash: /etc/init.d/Autostart.sh: /bin/bash^M: bad interpreter: No such file or directory“ bei dem Versuch die Bash-Datei auszuführen.

Rechte der Datei ändern: Ausführen erlauben

chmod u+x /etc/init.d/Autostart.sh

Danach sollte eine Verknüpfung (Symlink) für diese Datei im Verzeichnis „/etc/rc3.d“ erstellt werden. Dabei soll die Verknüpfung umbenannt werden. Erste Buchstabe soll „S“ sein, danach eine Zahl die Ausführungsreihenfolge angibt, danach beliebiger Text. Ich habe die Verknüpfung „S20Autostart.sh“ genannt.

Nachtrag: Leider meine Einträge im /etc/init.d/ und /etc/rc3.d haben dazu geführt dass Installation von MPD fehlerhaft lief. Erst als ich die Einträge entfernt habe klappte die Installation. Ich vermute das Autostart Einträge noch irgendwo im System registriert sein müssen damit die Installation Routine „apt-get install“ korrekt arbeitet.


Auslösen eines Ereignisses durch Betätigung eines Tasters

Orange Pi Zero Taster Interrupt Als Erstes habe ich das Beispiel vom Library WiringOP „isr.c“ ausprobiert. Das hat natürlich nicht geklappt, weil es nicht existierende oder reservierte GPIOs angesprochen wurden. Ebenso fehlt im Beispiel das umschalten des GPIO auf Input und die Aufschaltung von Pull up.
Im C-Programm unten wird Pin26 als digitales Eingang mit Pull-Up konfiguriert und ein Ereignis bei abfallender Flanke (umschalten von 1 zu 0) Ausgeführt. Als Reaktion auf Betätigung des Tasters wird Orange Pi Zero neugestartet. Alternativ kann man das Befehl „halt“ verwenden und damit erhalten Sie ein Hardware Knopf zum System herunterfahren (ist ganz nützlich bevor man Orange Pi vom Strom trennt).

wget esp8266-server.de/OrangePi/dateien/taster.c   -Datei "taster.c" runterladen falls zu faul zu tippen.

gcc taster.c -o taster -lwiringPi   -kompilieren

chmod u+x taster  -Ausführen erlauben

./taster &  - starten

Ich hatte mal erst while(1); geschrieben und mich gewundert das CPU um 10 Grad heißer geworden ist. Htop hat gezeigt das 1 von 4 CPU-Kerne voll ausgelastet ist. Mit delay () Anweisung im Körper der Endlosschleife wurde diese unerwünschte Effekt behoben. Profis in der Programmierung kennen vielleicht bessere Lösung Stichwort heißt daemon Programmierung.


Webradio

Wir kommen dem Ziel (Internetradio für das Bad) etwas näher. In vielen Internet Radio Projekten mit Raspberry Pi wird MPD (Music Player Daemon) verwendet.
MPD ist ein Software-Sound-Player für Linux, mit dem sich Musik in verschiedenen Formaten abspielen lässt.

Installation:
apt-get install mpd mpc

Einstellungen: Öffnen Sie die Datei „/etc/mpd.conf“und suchen Sie nach dem ersten Eintrag „audio_output“ Ändern Sie den so wie es hier steht:
type "alsa"
name "My ALSA Device"
device "hw:0,0"
mixer_type "software"

suchen Sie nach dem Eintrag „volume_normalization“ und aktivieren Sie es:

volume_normalization "yes"

Ohne Volume normalization waren manche Radiosender zu leise. Nach dem die Datei „mpd.conf“ gespeichert wurde muss mpd –Dienst neu gestartet werden.

/etc/init.d/mpd restart

Jetzt wollen Wir dem ersten Webradio spielen lassen:

mpc add http://sender.eldoradio.de:8000/128.mp3
mpc play 1

Ich hoffe, man kann jetzt etwas in den Kopfhörern hören.
Wenn Lautsterke zu gering ist überprüfen Sie den ersten Schiebebalken im alsamixer und setzen Sie den auf Maximum.

mpc stop   -Wiedergabe stoppen

mpc volume 60   -Lautstärke auf 60% setzen

Übrugens Liste alle mpc-Befehle lässt sich so anzeigen man mpc
Fehlermeldungen von Music Player Daemon finden Sie im Log-Datei „/var/log/mpd/mpd.log“

Ich war sehr überrascht, was für tollen Sound lieferte mir das Orange Pi Zero an den Kopfhörern, die nach dem obigen Schaltplan angeschlossen waren. Ich habe nicht erwartet dass ein Line-Ausgang einen normalen Kopfhörer treiben kann ohne Bass zu verlieren.
In manchen Schaltplänen aus Internet werden, die Widerstände die in Reihe zum Kopfhörer geschaltet sind, mit Wert von 200 Ohm oder sogar 30K angegeben. Da werden die Kopfhörer sehr leise.
Richtig sind 30 Ohm weil der ohmsche Widerstand der normalen Kopfhörer auch 30 Ohm beträgt. So findet eine Leistungsanpassung in der Schaltung statt (Maximale Strom bei Maximaler Spannung).


Installation von HTTP Webserver und MPD-Webinterface

apt-get update

apt-get upgrade

apt-get install apache2 php5 libapache2-mod-php5

/etc/init.d/apache2 restart   - Webserver neu starten

Wenn alles gut geklappt hat, sollte beim Aufruf der Orange Pi Zero IPs im Webbrowser, eine Begrüßungswebseite des Apache Webservers angezeigt werden.
Verzeichnis mit Web-Inhalt ist /var/www/html

Folgende Schritte installieren einfachsten MPD-Webinterface der mit PHP funktioniert.

wget https://github.com/sn0opy/MPD-Webinterface/archive/master.zip   - ZIP-Datei runterladen

unzip master.zip   - ZIP-Datei entpacken

mv MPD-Webinterface-master /var/www/html/radio   - Komplettes Verzeichnis verschieben und umbenennen

rm master.zip   - ZIP-Datei löschen

Zum aufrufen des MPD-Webinterfaces bitte http://_IP_des_OrangePi_/radio/ im Internetbrowser eingeben.

Dieses MPD-Webinterface ermöglicht das Eintragen des neuen Stream –Links zu der Liste der Internet Radiosendern, so wie das Prüfen ob die abgespielt werden. Das Interface ist ziemlich mager und die Lautstärkeregler hat keine untere und obere Begrenzung. Das ist aber einziges fertiges MPD-Webinterface der auf Anhieb funktioniert hat.


Rotary Encoder mit Interrupt und Entprellung (debounce)

Rotary Encoder Anleitung Programmierung erklärung einfach mit Interrupt

Ich wollte den Rad nicht neu erfinden und habe nach dem fertigen C-Codebeispiel oder Programm für Rotary Encoder gesucht. Leider, wie es oft passiert, habe ich nichts Passendes gefunden, entweder war das Programm nicht verständlich für mich oder, hat ohne Interrupt gearbeitet. Die Polling Methode darf hier nicht angewendet werden, denn das führt zu hohe CPU Auslastung.

Der Drehencoder hat zwei Ausgänge: Ausgang A und Ausgang B die erzeugen bei Drehung Impulse. Bei der Drehung nach rechts (im Uhrzeigersinn) kommt erst Impuls am Ausgang A und dann am Ausgang B.
Beim Drehen nach links (gegen Uhrzeigersinn) kommt erst Impuls am Ausgang B und dann am Ausgang A.
Im nachfolgenden Programm werden Interrupts von beiden Ausgängen A und B ausgewertet. Ich habe mich für abfallende Flanke entschieden.
Wenn an A ein Interrupt passiert und dabei B das High Pegel hat, dann ist es wahrscheinlich der erste Impuls bei der Drehung nach rechts. Das vermerken wir in die Variable "rechtslauf". Wenn nachfolgend ein Interrupt an B passiert und dabei das A Ausgang Low Pegel hat, dann ist die Rechtsdrehung bestätigt. Bei einer Linksdrehung passiert eigentlich gleiche nur alles spiegelverkehrt.
Erst kommt Impuls am Eingang B (A Pegel dabei ist High). Das vermerken wir in die Variable "linkslauf". Dann kommt Impuls am Eingang A (B Pegel Low). Jetzt ist Linksdrehung bestätigt.

Das Prellen der Kontakte kann zwar Interrupts auslösen, aber keine Links- oder Rechtsdrehung erzeugten. Denn dafür müssen die Kontakte am Ausgang A und Ausgang B gleichzeitig prellen und das passiert nicht, weil die Impulse nacheinander erzeugt werden und das ist durch mechanischen Aufbau des Drehgebers festgelegt.

Code für Rotary Encoder ohne externe library. C/C++ Vorlage für Orange / Raspberry Pi


Anschlußplan Rotary Encoder und Orange Pi Zero

Orange Pi Zero Rotary Encoder Anschlußplan Schaltplan Die Schaltung Bedarf keine zusätzliche Bauteile. Die Pull-Up Widerstände sind nicht nötig weil die Pull-up's sind über Software bereits geschaltet. Ich habe anfangs 100nF Kondensatoren dazu geschaltet um die Kontakte zu entprellen, die haben aber das Impulsform sehr verändert, sodass einlesen nicht mehr möglich war, oder nur mit kleiner Geschwindigkeit. Eventuell würden Kondensatoren mit 1nF gut funktionieren. Ich habe dann die Kondensatoren ganz weggelassen.


wget esp8266-server.de/OrangePi/dateien/taster.c   -Datei "taster.c" runterladen

gcc -o rotary rotary.c –lwiringPi  - C Programm kompilieren

./rotary  - Programm ausführen

Sie können bei PuTTY-Terminal mit der Pfeiltasten ↑ ↓ bereits angegebene Befehle durchblättern!

PAM8403 Verstärker

Sehr günstig und klein. 5 Stück für 0,84€ bei Aliexpress gekauft.

Als erstes habe ich die Platinehen mit einem dicken Kondensator nachgerüstet. Den mein elektrotechnisches Gefühl hat einfach geschrien „Du kannst nicht die Schaltung die 6 Watt (6W/5V=1,2A)im im Impulsbetrieb aufnimmt, betreiben ohne einen Pufferkondensator“.
Ich habe den SMD Kondensator 470uF 6,3V genommen. Kapazität und/oder Spannung dürfen auch grösser gewählt werden. Da meine bestellte 3W-Lautsprechern noch unterwegs sind, habe ich ein 120W Auto-Lautsprecher angeschlossen. Und es passierte ein Wunder: 3W Verstärker hat 120W Lautsprecher betrieben. Und der Bass war auch ordentlich, was ich gar nicht erwartet habe. (Wahrscheinlich handelt es sich bei der Angabe von 120W um PMPO Wert, was das ist, lesen Sie bei Wikipedia unter Thema Musikleistung)

Das Rauschen ohne Nutzsignal war auch sehr gering.
Ich bin begeistert vom PAM8403 D-Klass Verstärker.
Ich finde es auch toll das beim einschalten kein Knacken hörbar ist. Lediglich hört man etwas beim ausschalten.


PAM8403 + Orange Pi Zero = schreckliches Rauschen

Beim Versuch den PAM8403 an das Orange Pi Zero anzuschließen bin ich an ein Problem gestoßen.
Wenn PAM8403 Verstärker und Orange Pi Zero vom 2 unterschiedlichen 5V Netzteilen betrieben werden, funktioniert alles super. Sobald ich beide Teile vom gleichen Netzteil betreibe kommt starkes Rauschen und Kniestern im Hintergrund.
Eigentlich ist es auch OK 2 Netzteile zu benutzen. Eins für Verstärker 5V mit Stromstärke 1,5A. Und eins für Orange Pi Zero (Max Stromaufnahme 1,2A) 5V 1,5A. Die 5V USB Schaltnetzteile unbelasteten Zustand verbrauchen kaum Strom.

PAM8403 und Orange Pi Zero am gleichen Netzteil

Als erstes müsste ich feststellen dass die 5V Spannung am Orange Pi Zero sehr unsauber ist. Das kann man sogar ohne Oszilloskop feststellen in dem man ein Piezo-Schallwandler (Piepser) an die 5V und GND irgendwo an der Platine anschließt. Normale weise hört man nur ein knacken beim anschließen und dann nix mehr. Hier kann man das Pfeifen und Knacken hören. Das ist der Wechselspannungsanteil der Versorgungspannung. Der wird durch wechselnde Belastung und Spannungsabfall an Steckern und Zuleitungen verursacht.
Ich habe versuche mit Labornetzteil gemacht, 5V an Stecker Leiste direkt eingespeist. Nichts hat wirklich geholfen.

Die Lösung für das Problem ist ein Große Pufferkondensator direkt am Orange Pi Zero. Der Kondensator hatte die Werte 3300uF 6,3V und stammt von einem Mainboard eines PCs oder von einem 5V Netzteil. Diese Maßnahme hat zwar das Rauschen am PAM8403 verringert aber nicht abgeschafft.

Zweite Maßnahme zu Unterdrückung des Rauschens, ist ein Tiefpass Filter an Audioausgang. Der soll verhindern dass die Hochfrequenzen vom Orange Pi Zero zum PAM8403 durchgehen. Die Hochfrequenzen sind zwar nicht hörbar, können aber mit der PWM Frequenz 350kHz des PAM8403 sich vermischen und so die Störgeräusche im Hörbaren Bereich erzeugen.

Dritte Maßnahme Stromversorgung mit Spulen zu entkoppeln. Ich hatte 47uH 1A zu Hand.

PAM8403 und Orange Pi Zero Rauschen (noise reduction)

Mit dem Anschluss des PAM8403 Verstärker nach diesem Schaltplan könnte ich das Rauschen sehr gut minimieren.
Das Grund- Rauschen des Verstärkers ist auch noch dabei, ist aber nach dem Abstand von 20cm vom Lautsprecher nicht mehr wahrnehmbar. Das kann man aber auch verbessern in dem man den PAM8403 Verstärker ausschaltet während das Internetradio aus ist.
Das PAM8403 IC hat ein Shutdown Eingang. Das ist der Pin 12. Leider ist der SHDN (Shutdown) Pin auf meiner Platine nicht ausgeführt. Eine kleine Modifikation des PAM8403 –Modules: Pin 12 mit Lötkolben erhitzen und vorsichtig mit dem Skalpell anheben, eine Litze anlöten und mit Heißkleber fixieren. Jetzt kann das Shutdown Eingang des PAM8403 –Modules an ein GPIO der Orange PI angeschlossen werden.

Pin Belegung

Orange Pi Zero pinout GPIO I2C SPI

Nach oben