Overclocker n’importe quel modèle de Raspberry Pi est vraiment simple. Mais overclocker le Framboise Pi Pico est encore plus simple. Il suffit de deux lignes de MicroPython et votre Pico peut facilement fonctionner au double de sa vitesse normale, et sans avoir besoin du meilleurs refroidisseurs de CPU.
Dans ce tutoriel, nous allons overclocker un Raspberry Pi Pico à 270 MHz, soit le double de la vitesse de base de 133 MHz. Ensuite, nous écrirons un script pour tester jusqu’où nous pouvons overclocker, puis jusqu’à quel point nous pouvons underclocker le CPU.
Vous pensez peut-être « Pourquoi overclocker un Raspberry Pi Pico? » En utilisant un langage de bas niveau, tel que C, le Pico est capable d’être utilisé pour jouer à des jeux tels que Doom (le jeu complet) à l’aide d’une carte de sortie HDMI. Il peut émuler des ordinateurs rétro tels que le ZX Spectrum et le Commodore 64. Avec MicroPython, l’overclocking nous donnera une augmentation notable de la vitesse, et l’underclocking peut nous fournir une plus longue durée de vie de la batterie si nous l’utilisons dans un projet alimenté par batterie.
Voici comment cela fonctionnera avec le Raspberry Pi Pico, Pico W et bien d’autres des meilleures cartes basées sur RP2040 lors de l’utilisation de MicroPython. Il existe d’autres méthodes pour changer la fréquence lors de la programmation des cartes dans d’autres langues.
Pour ce projet, vous aurez besoin
Un Raspberry Pi Pico ou Pico W ou toute autre carte basée sur RP2040 qui exécute MicroPython.
Overclocker le Raspberry Pi Pico avec MicroPython
1. Installez la dernière version de MicroPython sur votre Pico. Si vous ne l’avez pas déjà fait, suivez troisième étape de ce guide pour apprendre comment.
2. Dans le REPL, importez le module machine et vérifiez la vitesse actuelle du Raspberry Pi Pico. La valeur retournée sera probablement 125000000 Hertz (125 MHz). Certaines cartes ou versions de MicroPython peuvent l’avoir défini un peu plus haut par défaut.
import machine
machine.freq()
3. En utilisant la même commande, réglez la vitesse du processeur sur 270 MHz.
machine.freq(270000000)
4. Vérifiez la vitesse du processeur pour s’assurer que l’overclock a fonctionné. La valeur renvoyée doit être 270000000 Hertz (270 MHz).
machine.freq()
À l’heure actuelle, cette augmentation de vitesse est temporaire. Lorsque le Pico est redémarré, il reviendra à sa vitesse par défaut (généralement 125 MHz). Afin de conserver l’overclock, il faut le régler à chaque démarrage du Pico. L’ajout de ces deux lignes au début de tout code MicroPython overclockera le RP2040 à la vitesse souhaitée lors de l’exécution du code.
import machine
machine.freq(SPEED IN HERTZ)
Jusqu’où le RP2040 peut-il être poussé ?
Les overclockeurs cherchent toujours à aller un peu plus vite, mais comment pouvons-nous déterminer notre chance à la loterie du silicium ? Pour cela, nous avons automatisé le processus avec un peu de code Python.
1. À Thonny démarrer un nouveau fichier par première importation de deux modules. La machine est utilisée pour modifier la vitesse du processeur et le temps est utilisé pour rythmer le code.
import machine
import time
2. Créez une variable, freq et stockez 270 MHz en Hertz. Nous savons que 270 MHz fonctionne bien, nous partons donc d’une vitesse de travail connue. Si votre objectif est de sous-cadencer le RP2040, réduisez la valeur en conséquence.
freq = 270000000
3. Créez un objet, une vitesse et stockez-y la vitesse actuelle du RP2040. En utilisant un peu de maths, la valeur renvoyée en Hertz est convertie en mégahertz, puis arrondie à une décimale, avant d’être finalement convertie en chaîne.
speed = str(round(machine.freq()/1000000,1))
4. Affiche la vitesse actuelle du processeur dans le cadre d’un message. Nous devions convertir la vitesse en une chaîne afin de la placer dans le message.
print("The starting speed is",speed,"MHz")
5. Imprimez un message à l’utilisateur, l’informant que le test démarre dans cinq secondes, puis attendez cinq secondes.
print("Starting the test in five seconds")
time.sleep(5)
6. Créez une boucle pour exécuter le code en continu. Nous pourrions utiliser une boucle for, mais une boucle while True plantera lorsqu’elle atteindra une mauvaise fréquence, nous ne gagnerons donc rien d’une boucle for.
while True:
7. Définissez la vitesse du processeur à l’aide de la variable freq.
machine.freq(freq)
8. Créez un objet, une vitesse et stockez-y la vitesse actuelle du RP2040. En utilisant un peu de mathématiques, la valeur renvoyée en Hertz est convertie en mégahertz, puis arrondie à une décimale, avant d’être finalement convertie en chaîne.
speed = str(round(machine.freq()/1000000,1))
9. Affiche la vitesse actuelle du processeur dans le cadre d’un message. Nous devions convertir la vitesse en une chaîne afin de la placer dans le message.
print("The starting speed is",speed,"MHz")
dix. Incrémentez la vitesse de 10 MHz et enregistrez la valeur dans freq. L’opérateur += se traduit par freq = freq + 10000000. Il est plus court et plus net dans le code. Les deux fonctionnent également et peuvent être interchangés pour plus de clarté. Le += peut être remplacé par -= afin que les valeurs soient décomptées pour trouver la vitesse CPU la plus basse.
freq += 10000000
11. Mettez le code en pause pendant deux secondes. Cela nous donnera le temps de lire les valeurs avant que la boucle ne se répète.
time.sleep(2)
12. Enregistrez le code sur le Raspberry Pi Pico sous speedtest.py et cliquez sur Exécuter. Notre meilleure vitesse était de 280 MHz, mais vous pourriez avoir de la chance.
Nous avons également testé un underclock (réduisant la vitesse de 10 MHz à chaque boucle) et avons réussi à le faire descendre à 10 MHz, ce qui devrait réduire considérablement la consommation d’énergie pour les projets nécessitant une longue durée de vie de la batterie. Nous n’avons pas pu saisir de données en raison du niveau d’équipement de précision requis.
Liste complète des codes
import machine
import time
freq = 270000000
speed = str(round(machine.freq()/1000000,1))
print("The starting speed is",speed,"MHz")
print("Starting the test in five seconds")
time.sleep(5)
while True:
machine.freq(freq)
speed = str(round(machine.freq()/1000000,1))
print("The current speed is",speed,"MHz")
freq += 10000000
time.sleep(2)