Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
public:recalbox [07.05.2018 14:57] se [Kühlung] |
public:recalbox [15.05.2018 09:31] (aktuell) se |
||
|---|---|---|---|
| Zeile 11: | Zeile 11: | ||
| * Welcher Emulator auf welcher Plattform: [[https:// | * Welcher Emulator auf welcher Plattform: [[https:// | ||
| \\ | \\ | ||
| - | :!: **Offene Punkte:** | ||
| - | * [[# | ||
| - | * Zweipunkt-Regelung läuft | ||
| - | * Pappmuster im Lego Gehäuse funktioniert gut | ||
| - | * Restarbeiten: | ||
| - | * < | ||
| - | * läuft 1A mit originalen PS3 Controller | ||
| ===== Teileliste ===== | ===== Teileliste ===== | ||
| Zeile 28: | Zeile 21: | ||
| |:?: Offizielles Raspberry Gehäuse|7, | |:?: Offizielles Raspberry Gehäuse|7, | ||
| |:?: NES Retro-Case / Lüftung mies|21,99 €|[[https:// | |:?: NES Retro-Case / Lüftung mies|21,99 €|[[https:// | ||
| - | |:?: NES LEGO Case| ??? €|[[https:// | + | |:?: NES LEGO Case| 15-20 €|[[https:// |
| ===== Software-Liste ===== | ===== Software-Liste ===== | ||
| * **Recalbox** Image: [[https:// | * **Recalbox** Image: [[https:// | ||
| Zeile 212: | Zeile 205: | ||
| \\ | \\ | ||
| Status: | Status: | ||
| - | * Aktive Kühlung für Raspi 3 nötig! (s.u.) | + | * 5 V Lüfter mit 3,3 Ohm Vorwiderstand |
| - | * Luftkanal | + | * Zweipunkt-Regelung über Python-Script |
| - | * {{:public:fanductv2raspi.png? | + | |
| - | * positioniert zwischen USB-Buchsen und SoC | + | * {{:public:rpi_fan.jpg|}} |
| - | * pustet innenluft über den SoC Kühler nach außen | + | * {{:public:rpi_fan_assembled.jpg|}} |
| - | * ob die Luft wirklich außen ankommt mal nachmessen, sofern messbar | + | |
| - | * Lüfter an 5 V mit Vorwiderstand von ca. 27 - 51 Ohm | + | |
| - | * warum nicht gleich [[https:// | + | |
| - | * Testen -> Widerstand raus -> Vorteil: Nerfpegel per Software einstellbar | + | |
| - | * Temperaturgeregelt | + | |
| - | * [[https:// | + | |
| - | * umgebaut zum " | + | |
| - | * Temp_on = 75°C <- evtl. auf 80°C setzen | + | |
| - | * Temp_off = 60 °C | + | |
| * Beobachtungen: | * Beobachtungen: | ||
| * Kein wahrnehmbarer Unterschied zwischen "ohne Kühlung" | * Kein wahrnehmbarer Unterschied zwischen "ohne Kühlung" | ||
| Zeile 235: | Zeile 219: | ||
| Temp-Untersuchung: | Temp-Untersuchung: | ||
| - | Netzwerk über RJ45 mit USB Funkempfänger für Tastatur. Bedienung nur über Bluetooth Pad. | + | Netzwerk über RJ45 mit USB Funkempfänger für Tastatur. Bedienung nur über Bluetooth Pad.\\ |
| + | Auslesen der CPU-Temp alle 5 s. Zeitachse in Sekunden. | ||
| {{: | {{: | ||
| + | **Scripte auf dem Raspi ablegen**\\ | ||
| + | Medium schreibbar machen und Pfad zu den scripten: | ||
| < | < | ||
| mount -o remount rw, / | mount -o remount rw, / | ||
| - | / | + | cd / |
| + | </ | ||
| + | Dort eines der fan_ctrl...py scripte hinkopieren (pscp) oder neu anlegen und abtippen.\\ | ||
| + | Mit pscp (putty secure copy) wenn das script " | ||
| + | < | ||
| + | pscp d: | ||
| </ | </ | ||
| - | Startup-Script anlegen: | + | **Startup-Script anlegen** |
| + | Aktuelle Scripte mit " | ||
| < | < | ||
| mount -o remount rw, / | mount -o remount rw, / | ||
| Zeile 251: | Zeile 244: | ||
| </ | </ | ||
| - | Im Script eintragen: | + | **Im Script eintragen:** |
| - | < | + | < |
| # | # | ||
| Zeile 258: | Zeile 251: | ||
| try: | try: | ||
| - | subprocess.Popen([" | + | |
| except KeyboardInterrupt: | except KeyboardInterrupt: | ||
| - | print " | + | |
| </ | </ | ||
| - | Danach noch: | + | **Danach noch die Datei ausführbar machen:** |
| < | < | ||
| chmod +x S33StartTempCtrl.py | chmod +x S33StartTempCtrl.py | ||
| - | Test: | + | </ |
| + | Bei Bedarf testen: | ||
| + | < | ||
| / | / | ||
| </ | </ | ||
| - | Script | + | **Anschluss an den Raspi: |
| + | (Mit vorwiderstand | ||
| + | {{ : | ||
| + | |||
| + | ===== Bekannte Probleme | ||
| + | ==== Mauszeiger träge ==== | ||
| + | Standardmäßig läuft der Mauszeiger sehr träge beim Raspberry Pi. Um dies abzustellen wieder eine [[# | ||
| + | < | ||
| + | nano / | ||
| + | Die Datei besteht aus nur einer Zeile. Das muss so bleiben!\\ | ||
| + | Am Ende dieser Zeile mit einem Leerzeichen getrennt das hier eintippen: | ||
| + | < | ||
| + | Dann wieder Speichern (STRG+O), NANO beenden (STRG+X) und neustarten: | ||
| + | < | ||
| + | |||
| + | ==== DVI-Monitor zeigt kein Bild ==== | ||
| + | Sondereinstellung für Anschluss eines DVI Displays ([[https:// | ||
| + | Über [[# | ||
| + | < | ||
| + | nano / | ||
| + | Nano ist ein minimalistischer Editor unter LINUX. Dort dann das hier auskommentieren: | ||
| + | < | ||
| + | Speichern mit STRG+O und beenden mit STRG+X. Anschließend den RPI neustarten: | ||
| + | < | ||
| + | Am Fernseher hat diese Einstellung keine auswirkungen. | ||
| + | |||
| + | ==== Boot-Video austauschen ==== | ||
| + | //**ALT!** -> aktuelle Versionen haben ein zufälliges Bootvideo.// | ||
| + | Im release (Stand 4.3.2018) wurde ein Weihnachts-Start-Video eingeführt. Etwas spät für Februar ...\\ | ||
| + | Infos aus dem [[https:// | ||
| + | Als erstes das Filesystem umstellen, Standard ist read-only. Und die Animation löschen/ | ||
| + | < | ||
| + | mount -o remount rw / | ||
| + | cd / | ||
| + | cp recalboxintro.mp4 recalboxintro_alt.mp4 | ||
| + | </ | ||
| + | |||
| + | Das neue Video dann von Youtube runterladen, | ||
| + | < | ||
| + | pscp d: | ||
| + | </ | ||
| + | Dann des Raspi neustarten. (Der Scheibzugriff wird wieder umgestellt!) | ||
| + | |||
| + | ===== Eigene Scripte ===== | ||
| + | ==== Temperatur-Logging | ||
| + | Dieses Script liest alle X (hier: 5) sekunden die CPU Temperatur aus und schreibt diese mit einem Zeitstempel in eine txt-Datei im csv Format. Bei Excel einfach über " | ||
| <file python temp_log.py> | <file python temp_log.py> | ||
| # Templogging Script | # Templogging Script | ||
| Zeile 308: | Zeile 348: | ||
| </ | </ | ||
| - | Script für Lüftersteuerung: | + | ==== Lüfterregelung ==== |
| + | Die super einfache Zweipunkt-Regelung schaltet den Lüfter an Pin X bei überschreiten der Temperatur Y ein und bei unterschreiten der Temperatur Z wieder aus.\\ | ||
| + | Der Pin X schaltet natürlich einen Transistor durch, welcher den Lüfter schaltet... | ||
| <file python fan_ctrl.py> | <file python fan_ctrl.py> | ||
| # Fan bang-bang control | # Fan bang-bang control | ||
| Zeile 353: | Zeile 396: | ||
| </ | </ | ||
| - | Anschluss an den Raspi: | ||
| - | {{ : | ||
| - | ===== Bekannte Probleme | ||
| - | ==== Mauszeiger träge ==== | ||
| - | Standardmäßig läuft der Mauszeiger sehr träge beim Raspberry Pi. Um dies abzustellen wieder eine [[# | ||
| - | < | ||
| - | nano / | ||
| - | Die Datei besteht aus nur einer Zeile. Das muss so bleiben!\\ | ||
| - | Am Ende dieser Zeile mit einem Leerzeichen getrennt das hier eintippen: | ||
| - | < | ||
| - | Dann wieder Speichern (STRG+O), NANO beenden (STRG+X) und neustarten: | ||
| - | < | ||
| - | ==== DVI-Monitor zeigt kein Bild ==== | + | ==== Lüfterregelung mit PWM==== |
| - | Sondereinstellung für Anschluss eines DVI Displays ([[https:// | + | Gleicher Ablauf wie oben, jedoch kann die Lüftergeschwindigkeit im ON-Zustand über den Parameter " |
| - | Über [[# | + | Getestet: funktioniert prinzipiell, macht aber Geräusche unabhängig von der Frequenz. Glättung für Lüfter nötig -> mehr Teile -> mehr Bauraum nötig. Aufwand für den Nutzen nicht sinnvoll. |
| - | < | + | |
| - | nano / | + | |
| - | Nano ist ein minimalistischer Editor unter LINUX. Dort dann das hier auskommentieren: | + | |
| - | <code>hdmi_drive=2</ | + | |
| - | Speichern mit STRG+O und beenden mit STRG+X. Anschließend | + | |
| - | < | + | |
| - | Am Fernseher hat diese Einstellung keine auswirkungen. | + | |
| - | ==== Boot-Video austauschen ==== | + | <file python fan_ctrl_pwm.py> |
| - | Im letzten release (Stand 4.3.2018) wurde ein Weihnachts-Start-Video eingeführt. Etwas spät für Februar ...\\ | + | # Fan bang-bang control with pwm |
| - | Infos aus dem [[https:// | + | import os |
| - | Als erstes das Filesystem umstellen, Standard ist read-only. Und die Animation löschen/ | + | import time |
| - | < | + | import RPi.GPIO as GPIO |
| - | mount -o remount rw / | + | |
| - | cd / | + | |
| - | cp recalboxintro.mp4 recalboxintro_alt.mp4 | + | |
| - | </ | + | |
| - | Das neue Video dann von Youtube runterladen, umbenennen nach "recalboxintro.mp4" | + | # Settings |
| - | <code> | + | M_TIME = 5 # Measure time interval |
| - | pscp d:\pfad\recalboxintro.mp4 root@recalbox:/ | + | ON_TEMP = 70 # upper temp value -> Fan turned on |
| - | </ | + | OFF_TEMP = 60 # lower temp value -> Fan turned off |
| - | Dann des Raspi neustarten. (Der Scheibzugriff wird wieder umgestellt!) | + | FAN_PIN = 14 # Transistor for the cooling fan is connected to pin 14 |
| + | PWM_F = 1000 # PWM frequency in kHz. Change only when fan makes fancy noises | ||
| + | DC = 50 # PWM duty cycle for the FAN (0 ... 100, where 100 is the maximum) | ||
| + | |||
| + | # setup GPIO | ||
| + | GPIO.setwarnings(False) | ||
| + | GPIO.setmode(GPIO.BCM) | ||
| + | GPIO.setup(FAN_PIN, | ||
| + | |||
| + | # Activate PWM on the FAN_PIN | ||
| + | p = GPIO.PWM(FAN_PIN, | ||
| + | |||
| + | # funtion for reading the cpu temperatur and return it as float | ||
| + | def getCPUtemp(): | ||
| + | res = os.popen(' | ||
| + | return (res.replace("temp=", | ||
| + | |||
| + | # main loop for the bang-bang control | ||
| + | while True: | ||
| + | # get temperature | ||
| + | temp_float = float(getCPUtemp()) | ||
| + | |||
| + | try: | ||
| + | # if actual temp axceeded the upper value, turn fan on | ||
| + | if (temp_float | ||
| + | | ||
| + | # if actual temp drop below the lower value, turn fan off | ||
| + | elif (temp_float < OFF_TEMP): | ||
| + | p.stop() | ||
| + | |||
| + | except: | ||
| + | # for debugging | ||
| + | print " | ||
| + | |||
| + | # cycle time of the control. for temperature it dont have to be fast | ||
| + | time.sleep(M_TIME) | ||
| + | </ | ||