• Recent
  • Tags
  • recalbox.com
  • Gitlab repository
  • Documentation
  • Discord
  • Register
  • Login

Recalbox Forum

  • Register
  • Login
  • Search
  • Recent
  • Tags
  • recalbox.com
  • Gitlab repository
  • Documentation
  • Discord

Aide script ajout ventilateur pour boitier Kintaro

Recalbox Général
script ajout ventilateur boitier kintaro
4
49
10.5k
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Dragu
    Dragu Banned last edited by 22 Aug 2018, 09:57

    @Mikefly
    @Substring
    Juste comme info. Le boîtier "Kintaro Super Ursus" est épuisé partout, aussi en Allemagne. Bon, j'ai trouvé une source en Angleterre et vient de recevoir la case aujourd'hui. Quand j'avais commandé, j'avais aussi publié le site sur mon forum.
    Depuis leur stock a passé de 43 à 26. Il ne coûte que 5 Euro en plus pour le transport. Alors dernière occasion.
    https://www.modmypi.com/raspberry-pi/cases-183/raspberry-pi-b-plus2-and-3-cases-1122/raspberry-pi-3b-snes-case-super-ursus

    1 Reply Last reply Reply Quote 0
    • Mikefly
      Mikefly last edited by Mikefly 24 Aug 2018, 10:32 24 Aug 2018, 10:31

      Salut,

      Ca y est le dev de Kintaro a sorti sa nouvelle version du script pour leur boitier qui prend en charge le ventilateur via hysterisis. on le trouve ici :

      https://github.com/MichaelKirsch/Kintaro-Recalbox

      il y a du grand changement dans le script :

      #!/usr/bin/python -u
      #Copyright 2017 Michael Kirsch
      try:
      import time
      import os
      import RPi.GPIO as GPIO
      import subprocess
      except ImportError:
      raise ImportError('spidev or gpio not installed')
      class SNES:
      def __init__(self):
      #GPIOs
      self.led_pin=7
      self.fan_pin=8
      self.reset_pin=3
      self.power_pin=5
      self.check_pin=10
      #vars
      self.fan_hysteresis = 5
      self.fan_starttemp = 60
      self.debounce_time = 0.1
      #path
      self.temp_command = 'vcgencmd measure_temp'
      #Set the GPIOs
      GPIO.setmode(GPIO.BOARD) # Use the same layout as the pins
      GPIO.setwarnings(False)
      GPIO.setup(self.led_pin, GPIO.OUT) # LED Output
      GPIO.setup(self.fan_pin, GPIO.OUT) # FAN Output
      GPIO.setup(self.power_pin, GPIO.IN) # set pin as input
      GPIO.setup(self.reset_pin, GPIO.IN,
      pull_up_down=GPIO.PUD_UP) # set pin as input and switch on internal pull up resistor
      GPIO.setup(self.check_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
      def power_interrupt(self, channel):
      time.sleep(self.debounce_time) # debounce
      if GPIO.input(self.power_pin) == GPIO.HIGH and GPIO.input(
      self.check_pin) == GPIO.LOW: # shutdown function if the powerswitch is toggled
      self.led(0) # led and fan off
      self.fan(0)
      os.system("shutdown -h now")
      def reset_interrupt(self, channel):
      if GPIO.input(self.reset_pin) == GPIO.LOW: # reset function
      time.sleep(self.debounce_time) # debounce time
      while GPIO.input(self.reset_pin) == GPIO.LOW: # while the button is hold the counter counts up
      self.blink(15, 0.1)
      os.system("reboot")
      def pcb_interrupt(self, channel):
      GPIO.cleanup() # when the pcb is pulled clean all the used GPIO pins
      def temp(self): #returns the gpu temoperature
      res = os.popen(self.temp_command).readline()
      return float((res.replace("temp=", "").replace("'C\n", "")))
      def led(self,status): #toggle the led on of off
      if status == 0: #the led is inverted
      GPIO.output(self.led_pin, GPIO.LOW)
      if status == 1:
      GPIO.output(self.led_pin, GPIO.HIGH)
      def blink(self,amount,interval): #blink the led
      for x in range(amount):
      self.led(1)
      time.sleep(interval)
      self.led(0)
      time.sleep(interval)
      def fan(self,status): #switch the fan on or off
      if status == 1:
      GPIO.output(self.fan_pin, GPIO.HIGH)
      if status == 0:
      GPIO.output(self.fan_pin, GPIO.LOW)
      def fancontrol(self,hysteresis,starttemp): #read the temp and have a buildin hysteresis
      if self.temp() > starttemp:
      self.fan(1)
      if self.temp() < starttemp-hysteresis:
      self.fan(0)
      def check_fan(self):
      self.fancontrol(self.fan_hysteresis,self.fan_starttemp) # fan starts at 60 degrees and has a 5 degree hysteresis
      def attach_interrupts(self):
      if GPIO.input(self.check_pin) == GPIO.LOW: # check if there is an pcb and if so attach the interrupts
      GPIO.add_event_detect(self.check_pin, GPIO.RISING,callback=self.pcb_interrupt) # if not the interrupt gets attached
      if GPIO.input(self.power_pin) == GPIO.HIGH: #when the system gets startet in the on position it gets shutdown
      os.system("shutdown -h now")
      else:
      self.led(1)
      GPIO.add_event_detect(self.reset_pin, GPIO.FALLING, callback=self.reset_interrupt)
      GPIO.add_event_detect(self.power_pin, GPIO.RISING, callback=self.power_interrupt)
      else: #no pcb attached so lets exit
      GPIO.cleanup()
      exit()
      snes = SNES()
      snes.attach_interrupts()
      while True:
      time.sleep(5)
      snes.led(1)
      snes.check_fan()
      Substring 1 Reply Last reply 24 Aug 2018, 10:53 Reply Quote 0
      • Substring
        Substring @Mikefly last edited by 24 Aug 2018, 10:53

        @mikefly tu as testé ?

        Former dev - Please reply with @substring so that i am notified when you answer me
        Ex dev - Merci de me répondre en utilisant @substring pour que je sois notifé

        Mikefly 1 Reply Last reply 24 Aug 2018, 12:05 Reply Quote 0
        • Mikefly
          Mikefly last edited by Mikefly 24 Aug 2018, 11:20 24 Aug 2018, 11:20

          @Substring Je l'ai installé, mais je suis parti manger. Je vais le tester de suite.

          1 Reply Last reply Reply Quote 0
          • Mikefly
            Mikefly @Substring last edited by 24 Aug 2018, 12:05

            @substring après avoir testé. Tout fonctionne, le ventilateur se déclenche à 60°C et s'arrête à 55°C.

            Il (le dev) m'a aussi dit qu'il va bientôt implanter le pwm dans le script.

            1 Reply Last reply Reply Quote 0
            • Dragu
              Dragu Banned last edited by Dragu 24 Aug 2018, 12:36 24 Aug 2018, 12:34

              @Substring
              @Mikefly
              Très bien d'avoir tout ensemble. Ce que tu pourrais encore faire, c'est insérér pour tester la ligne print. Tu verras alors les lectures de température et l'espace entre les lectures directement dans putty. Dans la version originale la température était lu tout le temps. Un core ne faisait que ça et le script augmentait considérablement la température de la CPU 😄
              Bon, je pense que 5-10 secondes sont ok.

              def fancontrol(self,hysteresis,starttemp): #read the temp and have a buildin hysteresis
              #print("temp is {0}".format(self.temp)) #Uncomment here for testing
              if self.temp() > starttemp:
              self.fan(1)
              if self.temp() < starttemp-hysteresis:
              self.fan(0)

              Autre chose, du parles de PWM. Ca ne va pas marcher, peu importe ce qu'il essaie.
              Parceque ça va bouffer horriblement dans les ressources des émulateurs, étant actif tout le temps. Seule solution, intercaler un attiny et le contrôler tous les X secondes.

              Mikefly 1 Reply Last reply 24 Aug 2018, 12:45 Reply Quote 0
              • Mikefly
                Mikefly @Dragu last edited by 24 Aug 2018, 12:45

                @dragu tu parles dans le nouveau script, la température est relevé tout le temps ? Le mieux c'est de mettre 5-10s ?

                C'est où que tu change ça ?

                1 Reply Last reply Reply Quote 0
                • Dragu
                  Dragu Banned last edited by Dragu 24 Aug 2018, 12:55 24 Aug 2018, 12:54

                  @Mikefly
                  Non, je ne sais pas. Mais tu vois que les instructions font part du nouveau script ?
                  L'ancien script avait cet défaut, avant que je le modifie. Le print, c'est un moyen supplémentaire pour voir que tout est en règle.

                  Mikefly 1 Reply Last reply 24 Aug 2018, 14:07 Reply Quote 0
                  • Mikefly
                    Mikefly @Dragu last edited by 24 Aug 2018, 14:07

                    @dragu je ne sais pas non plus comment est paramétré le relevé de température sur le script de kintaro.

                    Pour le pwm il m'a dit que ça prend dans les 0.5% de ressources...

                    1 Reply Last reply Reply Quote 0
                    • Mikefly
                      Mikefly last edited by 26 Aug 2018, 12:22

                      Salut,

                      Le script a été mise à jour avec la fonction pwm.

                      toujours trouvable à cette adresse :

                      https://github.com/MichaelKirsch/Kintaro-Recalbox

                      1 Reply Last reply Reply Quote 0
                      • Dragu
                        Dragu Banned last edited by Dragu 26 Aug 2018, 13:09 26 Aug 2018, 13:02

                        @Mikefly
                        Je suis toujours d'avis qu'un software PWM bouffe trop de ressources sur le PI. Il faudrait que quelqu'un qui si connait un peu plus, puisse tester cet aspect. C'est le premier problème que je vois. Appel de la routine tous les 1/10 de seconde au lieu de tous les 8 secondes. Mais il y a autre chose. Ces petits ventilateurs ne sont pas vraiement fait pour tourner avec un signal PWM. Il faudrait donc aussi une possibilité d'un paramètre "minimum démarrage" Bon, il se peut qu'il fasse moins de bruit (relativ pour ces petits trucs) mais il risque de tourner plus longtemps et souvent.

                        Mikefly 1 Reply Last reply 26 Aug 2018, 13:11 Reply Quote 0
                        • Mikefly
                          Mikefly @Dragu last edited by Mikefly 26 Aug 2018, 13:13 26 Aug 2018, 13:11

                          @dragu en tout cas ça fonctionne bien, le ventilo fonctionne des le depart mais a moindre bruit ( toujours audible normale pour un 25mm chinois.) Apres une heure de jeu sous Demon Front, j’étais à 50°C, le ventilo ne s'est pas mis à fond comme ton script entre 60 et 55.

                          J'ai vu sur le discord de recalbox, un membre qui a installé un 40mm directement sur le radiateur de kintaro. Un Noctua silencieux. J'ai passé commande du meme ventilo

                          voila son montage :

                          0_1535289063513_noctua.png

                          1 Reply Last reply Reply Quote 0
                          • 14 days later
                          • bendk97
                            bendk97 last edited by 9 Sept 2018, 19:15

                            un grand merci à ce topic, j'ai enfin mon ventilateur qui fonctionne correctement sur mon super kintaro 🙂
                            je l'ai depuis une semaine, et je me disais bien que c'était pas normal d'être tjrs au dessus de 80 degres en jouant.
                            j'ai un peu adapté le script et mis le seuil à 75 et l'hysteresis à 10. Le ventilo est presque inaudible en fonctionnement nominal, mais à fond c un helicoptere, c pour ca que j'ai mis 75, ca a l'air de suffire pour le moment.

                            1 Reply Last reply Reply Quote 0
                            43 out of 49
                            • First post
                              43/49
                              Last post

                            Want to support us ?

                            59
                            Online

                            98.8k
                            Users

                            28.1k
                            Topics

                            187.1k
                            Posts

                            Copyright © 2021 recalbox.com