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.)
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
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.
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
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.
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.
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.
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.
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:
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.
„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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <stdio.h> #include <wiringPi.h> int main (void) { printf ("Orange Pi Zero blinkt mit roter LED\n") ; printf ("Aufhoeren mit Strg+C \n") ; wiringPiSetup () ; pinMode (30, OUTPUT) ; for (;;) { digitalWrite (30, 1) ; // On delay (100) ; // 100 mS digitalWrite (30, 0) ; // Off delay (100) ; } return 0 ; } |
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.
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“
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).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <stdio.h> #include <wiringPi.h> void myInterrupt (void) { system("reboot"); //system("halt"); } int main (void) { wiringPiSetup () ; pinMode (11, INPUT) ; // PIN 26 als Ausgang konfigurieren pullUpDnControl (11, PUD_UP) ; // PIN 26 mit Pul-Upp versehen wiringPiISR (11, INT_EDGE_FALLING, &myInterrupt) ; // Interrupt Routine definieren while(1) delay (5000) ; // Endlosschleife return 0 ; } |
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).
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.
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
#include <stdio.h> #include <wiringPi.h> #define Taster 6 // Pin 22 Orange Pi Zero #define EncoderA 10 // Pin 24 Orange Pi Zero #define EncoderB 11 // Pin 26 Orange Pi Zero int Value=50; int rechtslauf=0; int linkslauf=0; void TasterInterrupt (void) { printf("Taster\n"); delay (100) ; } void EncoderAInterrupt (void) { rechtslauf=digitalRead(EncoderB); // A=0 und B=1 Erste Impuls bei Rechtslauf if(!rechtslauf && linkslauf) // A=0 und B=0 Zweite Impuls bei Linkslauf { Value--; printf("Lautstaerke %i \n", Value); } linkslauf=0; // Zustand vom Ersten Impuls loeschen } void EncoderBInterrupt (void) { linkslauf= digitalRead(EncoderA); // B=0 und A=1 Erste Impuls bei Linkslauf if(!linkslauf && rechtslauf) // B=0 und A=0 Zweite Impuls bei Rechtslauf { Value++; printf("Lautstaerke %i \n", Value); } rechtslauf=0; // Zustand vom Ersten Impuls loeschen } int main (void) { wiringPiSetup () ; pinMode (Taster, INPUT); // PIN als Ausgang konfigurieren pullUpDnControl (Taster, PUD_UP); // PIN mit Pul-Upp versehen pinMode (EncoderA, INPUT); // PIN als Ausgang konfigurieren pullUpDnControl (EncoderA, PUD_UP); // PIN mit Pul-Upp versehen pinMode (EncoderB, INPUT); // PIN als Ausgang konfigurieren pullUpDnControl (EncoderB, PUD_UP); // PIN mit Pul-Upp versehen wiringPiISR (Taster, INT_EDGE_FALLING, &TasterInterrupt) ; // Interrupt Routine definieren wiringPiISR (EncoderA, INT_EDGE_FALLING, &EncoderAInterrupt); // Interrupt Routine definieren wiringPiISR (EncoderB, INT_EDGE_FALLING, &EncoderBInterrupt); // Interrupt Routine definieren printf("Lautstaerke %i \n", Value); while(1) delay (5000); // Endlosschleife return 0 ; } |
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.
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.
webmaster_x_esp8266-server.de | Wuppertal 2017 |