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
    12199
    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.
    • Mikefly
      Mikefly last edited by Mikefly

      @Substring ok mais ça bloque déjà avant avec le http.server

      Apres le script de @Dragu fait le job, le ventilo s'enclenche à 60°C et s’éteint à 55°C.

      le script de retropie fait la meme chose non ? démarre à 60 et s’arrête à 55

      Substring 1 Reply Last reply Reply Quote 0
      • Substring
        Substring @Mikefly last edited by

        @mikefly me.semblait pas que le script de Dragu gérait 2 temps, tant mieux alors

        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 Reply Quote 0
        • Mikefly
          Mikefly @Substring last edited by

          @substring si si. C'est ce qu'il essayait de te dire plus haut.

          maxTMP = 60 # Over put on fan
          minTMP = 55 # Under put off fan
          
          1 Reply Last reply Reply Quote 0
          • Dragu
            Dragu Banned last edited by

            Donc en fait, le Pin 8 est le Gpio 14, le fil rouge sur le bouton...
            Tout ça n'est parfois pas évident. 🙂

            Mikefly 1 Reply Last reply Reply Quote 0
            • Mikefly
              Mikefly @Dragu last edited by Mikefly

              @dragu pourtant la carte électronique est branché sur les 10 premiers pin du raspberry

              0_1533546743811_IMG_20180806_111204.jpg

              1 Reply Last reply Reply Quote 0
              • Dragu
                Dragu Banned last edited by

                @Mikefly
                Oui, et tu vois sur cet schéma la différence entre board et BCM

                alt text

                En tout cas, on peut vraiement recommander cet boîtier, premier qui contient déjà l'électronique pour la commande du ventilateur. 🙂

                Mikefly 1 Reply Last reply Reply Quote 0
                • Mikefly
                  Mikefly @Dragu last edited by

                  @dragu ah oui ok je comprends mieux.
                  Oui ce boitier c'est de la bombe. Super qualité de fabrication et super fidèle à la SNES Pal

                  1 Reply Last reply Reply Quote 0
                  • Mikefly
                    Mikefly last edited by Mikefly

                    Donc au finale voila les fichiers scripts pour les boîtiers Kintaro :

                    https://drive.google.com/file/d/1bieEzZX1-UMLcyDKqZ66_SH7UGHGIhoW/view?usp=sharing

                    Tuto :

                    j'ai utiliser ce logiciel WinSCP

                    se connecter en mode root sur le pi3 et autoriser l’écriture sur les dossier avec la commande :

                    mount -o remount,rw /
                    

                    copier le dossier Kintaro dans le repertoire /opt folder

                    puis le fichier S100kintaro.sh dans le repertoire /etc/init.d/

                    lancer la commande (pour autoriser le fichier) :

                    chmod +x /etc/init.d/S100kintaro.sh
                    

                    et enfin lancer le script avec la commande suivante :

                    /etc/init.d/S100kintaro.sh start
                    

                    normalement le message suivant apparait : Starting Kintaro.

                    1 Reply Last reply Reply Quote 1
                    • Dragu
                      Dragu Banned last edited by

                      @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

                        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 Reply Quote 0
                        • Substring
                          Substring @Mikefly last edited by

                          @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 Reply Quote 0
                          • Mikefly
                            Mikefly last edited by Mikefly

                            @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

                              @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

                                @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 Reply Quote 0
                                • Mikefly
                                  Mikefly @Dragu last edited by

                                  @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

                                    @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 Reply Quote 0
                                    • Mikefly
                                      Mikefly @Dragu last edited by

                                      @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

                                        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

                                          @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 Reply Quote 0
                                          • Mikefly
                                            Mikefly @Dragu last edited by Mikefly

                                            @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
                                            • First post
                                              Last post

                                            Want to support us ?

                                            91
                                            Online

                                            99.6k
                                            Users

                                            28.1k
                                            Topics

                                            187.1k
                                            Posts

                                            Copyright © 2021 recalbox.com