Sortie vidéo du Raspberry Pi Pico

TL;DR

Le Raspberry Pi Pico est un incroyable petit microcontrôleur. Bien qu'il n'ait pas d'interface de sortie vidéo intégrée, comme ses grands frères Raspberry Pi Zero / 1 / 2 / 3 / 4 / 400 (HDMI / double HDMI dans leur cas), il est possible d'ajouter une sortie vidéo au Pico ! (Comme VGA ou DVI sur un connecteur HDMI, lisez la suite pour plus de détails)

Dans cet article, nous expliquerons pourquoi une sortie vidéo est une caractéristique très spéciale pour les microcontrôleurs, et quels types de sorties vidéo vous pouvez construire ou acheter pour votre Pico. Nous vous montrerons également un exemple de code - déjà précompilé pour vous, afin que vous puissiez le télécharger directement, et nous parlerons ensuite de ce que vous devez modifier pour le faire fonctionner.

Notre boutique sœur, buyzero.deLa société Pico, vend une variété d'accessoires pour Pico - y compris la chaussette DVIet le Carte VGA pour le Pico.

Remarque : le Pico ne dispose pas d'un système d'exploitation Linux comme le Raspberry Pi Zero W par exemple. Vous devrez donc probablement vous plonger un peu plus profondément dans l'apprentissage du codage et du téléchargement de vos applications sur la Pico. Si ce n'est pas votre truc, le Pi Zero W pourrait être un meilleur choix pour commencer à jouer 🙂 .

Sortie vidéo Pico à l'aide de la chaussette DVI - des animations sauvages sont possibles. Reconnaissez-vous le visage ? Faites-le nous savoir dans les commentaires

Si vous avez réussi à réaliser votre propre projet vidéo avec le Raspberry Pi Pico, faites-le nous savoir dans les commentaires !

Pourquoi l'ajout d'une sortie vidéo Raspberry Pi Pico est-il un défi ?

Le Raspberry Pi 400par exemple, est basé sur le SoC BCM2711. Ce système sur puce est doté d'un matériel spécialisé qui prend en charge la sortie vidéo, en la préparant parfaitement dans le format spécifié pour la ou les interfaces vidéo particulières, deux ports HDMI dans le cas de l'ordinateur de bureau. Pi 400. Il dispose également d'une mémoire massive (4 Go), dans laquelle sont stockées les données de sortie vidéo.

Pour mieux comprendre cela, nous devons examiner quelques principes fondamentaux de la sortie vidéo d'un ordinateur :

Affichage et transmission vidéo

Nous voyons l'affichage sur l'écran "en même temps". Notre cerveau est doté d'un câblage massivement parallèle, qui lui permet d'ingérer des informations provenant de toutes les cellules rétiniennes disponibles en même temps (cellules à cônes et cellules à bâtonnets).

un chat avec un papillon, un exemple de ce que nous voulons montrer à nos utilisateurs.
Photo par Karina Vorozheeva sur Unsplash

(* le mécanisme de transmission au cerveau intègre l'information à travers plusieurs cellules de la rétine, mais il n'en reste pas moins que beaucoup d'informations sont transmises en parallèle. Regardez dans cellules bipolaires si vous souhaitez en savoir plus)

Cependant, le cerveau a des latences - il n'est pas en mesure de résoudre les problèmes d'accès à l'information. changements dans les stimuli visuels plus rapides que 13 ms. (soit environ 1 sur 75 images par seconde).

Pour nous, cela signifie que si nous voulons afficher une animation vraiment fluide, nous devons montrer environ 60 images statiques différentes par seconde. Notre cerveau interprétera ces images statiques comme une lecture fluide et réaliste.

En règle générale, nous souhaitons que ces images soient en couleur.

Nous avons trois photorécepteurs différents pour la couleur, de sorte que l'écran n'affiche que ces trois couleurs différentes avec une luminosité différente. Là encore, notre cerveau synthétisera les couleurs intermédiaires à partir des informations qu'il reçoit. (Petite parenthèse, pourpre n'existe pas vraiment en tant que longueur d'onde propre - c'est un mélange de rouge et de bleu).

Il existe trois couleurs primaires :

  • rouge
  • vert
  • bleu

Ensemble, ils sont connus sous le nom de RVB. En les additionnant tous les trois, on obtient du blanc. En ajoutant le rouge au vert, on obtient du jaune, en ajoutant le vert au bleu, on obtient du cyan, en ajoutant le bleu au rouge, on obtient du magenta.

Ce que nous voulons vraiment obtenir, ce sont des résultats :

  • trois couleurs différentes,
  • chacune avec une valeur de luminosité différente
  • idéalement, environ 60 valeurs différentes par seconde (60 Hz)
  • une certaine résolution d'écran - par exemple 640 x 480

Calculons la quantité de données par seconde :

  • 3 couleurs
  • x 8 bits de profondeur de couleur
  • x 60
  • x 640 x 480

= 442.368.000 bits par seconde = ca. 422 MBit/s

(Considérons que, par exemple, l'interface USB v1.1 du Pico a un débit d'environ 10 Mbit/s, soit 40 fois moins !)

Une partie de votre application mettra à jour l'image dans la mémoire vive, tandis qu'une autre se chargera de fournir les données dans un format exploitable par un moniteur. Il doit s'agir de la RAM, car nous fonctionnons à des vitesses élevées et nous devons être en mesure de lire ces données de manière fiable avec des temps de latence réduits, ce que la mémoire flash ne permet pas.

Calculons la quantité de mémoire vive dont nous avons besoin :

  • 640 x 480 (résolution)
  • x 3 (couleurs)
  • x 8 bits (profondeur de couleur)

= 7372800 bits = 900 kBytes (note 1 Byte = 8 Bits)

Alors que 900 kBytes peuvent tenir plusieurs fois dans la mémoire vive d'un Raspberry Pi 400, le Pico n'a que 264KB de RAM.

Comme vous le voyez, nous devrons réduire certains paramètres (par exemple la résolution, la profondeur de couleur, ...) si nous voulons faire tenir une image bitmap dans la RAM, ou nous devrons trouver des idées astucieuses pour faire fonctionner le système sans tout stocker !

Le RP2040 PIO de Pico permet d'émettre des données vidéo.

Enfin, alors que le Raspberry Pi 400 et les autres modèles de Raspberry Pi disposent de circuits matériels dédiés pour traiter toutes ces informations et les restituer de manière fiable, le Pico ne dispose pas de circuits spéciaux dédiés à la sortie vidéo.

Mais il a plus d'un tour dans son sac ! Le RP2040 supporte le PIO (programmable IO). Le PIO est dédié à l'émulation de différentes interfaces avec un timing précis, et il est très très puissant ! Elle peut être programmée pour lire à partir de la RAM et émettre à des vitesses élevées.

Nous utiliserons le PIO pour émettre de la vidéo sur certaines broches GPIO, et nous utiliserons des circuits supplémentaires (résistances) pour amener le signal dans les conditions souhaitées, en fonction de l'interface de sortie vidéo à laquelle nous voulons connecter le Pico.

Historique des formats de sortie vidéo

Avant d'entrer dans le vif du sujet, à savoir comment ajouter une sortie vidéo à votre Raspberry Pi Pico, jetons un coup d'œil à l'histoire des formats de sortie vidéo.

Comme nous l'avons déjà dit, l'œil humain n'est pas capable de détecter des changements dans les images à une vitesse supérieure à environ 13 ms. C'est pourquoi l'une des premières approches de la construction d'écrans d'ordinateur a été l'utilisation de l'écran d'ordinateur. CRT (tube cathodique) moniteur.

Le moniteur CRT utilise plusieurs rayons (2) pour écrire l'image sur l'écran ligne par ligne (4), (5) montre un gros plan des phosphores colorés qui sont adressés individuellement par les différents rayons. CC BY-SA 3.0 Peo~commonswiki 

Le tube cathodique possède trois canons à rayons qui balayent pixel par pixel, ligne par ligne. (et ont besoin d'un certain temps pour revenir au point de départ). L'écran contient des phosphores colorés qui continuent à émettre de la lumière pendant un certain temps après le passage du rayon. Lors du prochain passage du pistolet à rayons sur ce pixel particulier, l'intensité du rayon peut avoir changé, ce qui se traduira par un pixel plus sombre. Notre cerveau fusionne les pixels phosphorescents colorés adjacents en un seul pixel et n'est pas en mesure de remarquer les changements de luminosité entre les balayages des rayons.

Gros plan d'un tube cathodique, montrant les points de phosphore colorés. par : FreeImages.com / hubert jelen

L'illusion d'une image en mouvement est ainsi créée.

En effet, il n'est pas nécessaire que toutes les données soient présentes au début de l'image. juste la valeur actuelle de l'épaisseur du pixel. L'intensité du rayon sera modifiée en conséquence. Nous pouvons utiliser un signal analogique pour cela - par exemple, l'augmentation de la tension augmentera la luminosité.

Nous avons besoin de trois fils différents pour les différentes couleurs (pour piloter chaque canon à rayons individuellement), et nous devons avoir un moyen de faire savoir au moniteur quand une nouvelle ligne doit être démarrée, et quand une nouvelle image doit être démarrée (quand toutes les lignes ont été affichées).

VGA (matrice graphique vidéo)

Le VGA a été conçu pour les moniteurs à tube cathodique. Il est encore relativement courant comme entrée sur les moniteurs, même s'il devient de plus en plus obsolète à mesure que nous passons à une transmission entièrement numérique (nous y reviendrons plus tard).

Il s'agit également de la norme de sortie vidéo la plus facile à faire fonctionner sur la Pico.

Outre une spécification (avec des modes de résolution par défaut), il spécifie un connecteur, le connecteur VGA :

Port VGA ; photo de Duncan Lithgow

Il comporte 15 broches :

  1. RED (vidéo rouge)
  2. VERT (vidéo verte)
  3. BLUE (vidéo bleue)
  4. ID2/RES (réservé)
  5. GND (Masse HSync)
  6. RED_RTN (retour rouge, masse analogique pour le rouge)
  7. GREEN_RTN (Retour vert, masse analogique pour le vert)
  8. BLUE_RTN (Retour bleu, masse analogique pour le bleu)
  9. KEY/PWR (+5 V DC alimente la puce EDID EEPROM sur certains moniteurs)
  10. GND (Masse VSync, DDC)
  11. ID0/RES (réservé)
  12. ID1/SDA (données I2C depuis DDC2)
  13. HSync (Synchronisation horizontale)
  14. VSync (Synchronisation verticale)
  15. ID3/SCL (horloge I2C depuis DDC2)

Remarque : les câbles VGA peuvent prendre en charge différentes résolutions, profondeurs de couleur et fréquences de rafraîchissement, alors que le mot "VGA", lorsqu'il fait référence à la résolution, signifie généralement 640 x 480.

Comme vous le voyez, il y a trois fils transportant les données de l'image, un pour chaque couleur. Le signal est transmis avec une tension de crête (maximale) de 0,7 V. Les signaux transmis pour les couleurs sont de nature analogique - des tensions plus élevées augmentent la luminosité, une tension de 0 signifie que le pixel est sombre / éteint.

Faire fonctionner la sortie VGA sur le Pico

Cela signifie que la Pico, avec sa sortie numérique de 3,3 V, a des tensions suffisamment élevées pour pouvoir conduire ces broches RVB dans le câble VGA (qui attend des tensions de 0 à 0,7 V). Nous devons en fait réduire la tension en utilisant des résistances.

Nous pouvons construire un simple DAC (convertisseur numérique analogique) en combinant plusieurs résistances et des broches GPIO. En fonction de la combinaison des broches GPIO actives à un moment donné, nous avons différents niveaux de tension (= niveaux de luminosité) :

Un simple VGA DAC, image tirée de "Hardware design with the RP2040" (conception matérielle avec le RP2040)

Comme vous pouvez le voir dans l'image ci-dessus, cinq GPIO (0 -4) pilotent un canal (rouge dans ce cas), ce qui nous donne une profondeur de cinq bits. Les résistances sont pondérées 1:2:4:8:16, par exemple le bit le moins significatif (LSB) du rouge a une résistance de 8.06K.

Lorsque vous essayez de construire ce circuit, vous devriez opter pour 1 résistance de tolérance % pour obtenir une bonne image.

Veuillez vous référer à "Conception du matériel avec le RP2040"pour comprendre comment les valeurs des résistances ont été calculées. En résumé, si nous les pilotons toutes en même temps, nous obtiendrons une tension de 0,74 V, ce qui est acceptable pour nos besoins.

Plus précisément, cette conception de référence propose de prendre en charge un format de données RVB 16 bits couramment utilisé (RVB-565), qui utilise 5 bits pour le rouge et le bleu, et 6 pour le vert. Nous pouvons réduire la sortie physique vers le vert à 5 broches GPIO, comme pour les autres couleurs, afin d'économiser une broche.

En outre, deux autres broches sont nécessaires pour la synchronisation de la suppression horizontale et verticale (HSYNC et VSYNC).

Cela nous amène à un total de 17 broches GPIO pour piloter une sortie VGA. Heureusement, la Pico a 26 broches GPIO disponibles, ce qui nous permet de piloter la sortie VGA.

Comme indiqué précédemment, le Pico est également capable de piloter ces broches aux fréquences nécessaires et avec un timing précis, grâce à la fonction PIO (E/S programmable) du RP2040.

Matériel de sortie vidéo VGA pour Raspberry Pi Pico

Carte de démonstration Raspberry Pi Pico VGA, SD Card & Audio - image extraite du manuel Hardware Design with the RP2040

Raspberry Pi a conçu et mis en libre accès une carte porteuse pour la Pico qui présente différentes fonctionnalités :

  • Sortie VGA
  • boutons
  • emplacement microSD
  • sorties audio (PWM analogique, I2S numérique)

Acheter la carte Pico VGA / Audio / microSD

Nous (buyzero.de) sont actuellement en train de faire construire et assembler pour nous cette carte de conception de référence. Contactez-nous si vous souhaitez être informé(e) lorsque la planche sera disponible à l'achat.!

Le site La carte Pico VGA est maintenant disponible à l'achat chez nous, stock initial limité.!

Entre-temps, Pimoroni a également créé une version de ce tableau, qu'il appelle le Pimoroni Pico VGA Demo Base.

Note complémentaire : chaque broche des 15 broches de sortie rgb devra toujours être pilotée à environ 17,58 Mbit/s, ce qui reste un chiffre impressionnant, mais beaucoup plus gérable !

Logiciel nécessaire pour piloter la sortie VGA

Comme nous travaillons sur le Pico, il n'y a pas de "pilotes graphiques" que nous pouvons simplement installer. Nous devons écrire le code nous-mêmes... ou pas 🙂 .

Heureusement, les personnes qui ont conçu la carte matérielle pour nous fournissent déjà du code que nous pouvons utiliser, ce qui nous permet de nous concentrer sur notre projet.

Un exemple de code que vous pouvez utiliser peut être trouvé dans le dépôt pico-playground :

Dans ce dépôt, il y a un simple lecteur de films appelé pop-corn (qui lit les films dans un format personnalisé). A big buck bunny, d'une taille de 1,6 Go, peut être téléchargé ici. Notez qu'il s'agit d'images de disque brutes à écrire sur une carte SD - cet exemple suppose que vous avez la carte de démonstration VGA, qui a un emplacement SD. Instructions pour convertir des films sont également indiquées.

Le code utilise le pico_scanvideo (pico/scanvideo.h) à partir de la bibliothèque pico_extras . Jetez également un coup d'œil à ce dépôt pour des exemples de code audio !

L'API émet des données RVB parallèles et un signal de synchronisation sur des broches pour le DPI VGA (en utilisant des résistances DAC, comme décrit ci-dessus).

C'est un point important :

  • Le programme PIO scanline par défaut accepte les données codées en longueur d'onde - cela signifie que vous pouvez économiser de la RAM pour générer des zones de couleur plates (je pense aux jeux !).

En général, il est préférable d'utiliser l'option Bibliothèque pico_scanvideo au lieu de développer un code de sortie VGA à partir de zéro 🙂 .

bonnes pratiques de codage

Plus de démos

Consultez le site répertoire scanvideo du dépôt pico-playground:

  • mandelbrot: un générateur de mandelbrot utilisant un framebuffer de 320x240x16
  • sprite_demoLes têtes d'Eben : des têtes d'Eben qui rebondissent (vidéo en haut de notre page !)
  • modèle_test: Affichage des barres de couleur

Utilisation de la carte VGA

Vous devez passer un paramètre supplémentaire à CMake lors de la compilation :

-DPICO_BOARD=vgaboard

TBD : Ajouter des guides étape par étape

DVI : Interface visuelle numérique

La technologie évolue. La vie évolue. Les tubes cathodiques sont devenus de plus en plus obsolètes, remplacés par des écrans plats plus modernes, dotés d'interfaces numériques. Il n'y a pas de rayons mobiles, juste des pixels.

Pendant un certain temps, les signaux ont continué à être analogiques - mais ce n'est pas très souhaitable, car nous devons prendre quelque chose de numérique, le transformer en quelque chose d'analogique, puis le retransformer en quelque chose de numérique. L'image sera moins précise et nous aurons des circuits supplémentaires dont nous pourrions nous passer.

C'est alors qu'est apparu le DVI. Il a intelligemment offert une option pour transmettre des signaux analogiques également, de sorte que de simples adaptateurs/câbles DVI vers VGA ont pu être construits. Bien entendu, la carte graphique doit émettre des données analogiques et numériques. Mais cela a contribué à l'acceptation de la norme et à sa généralisation.

Nous nous intéressons ici aux signaux numériques (DVI-D), car nous aimerions les faire passer par un bit-bang à partir du Raspberry Pi Pico.

Avec DVI-D, les données d'image sont transmises en série.

Une connexion DVI "single link" (la plus basique) se compose de quatre les liaisons dites TMDS (transition minimized differential signaling) :

  • rouge
  • vert
  • bleu
  • horloge à pixels

La signalisation différentielle est utilisée pour minimiser les interférences (puisque

Nous disposons d'un total de 24 bits par pixel (8 bits x 3 couleurs) et nous codons les données en utilisant le codage 8b10b (les 8 bits sont mappés en symboles de 10 bits sur la ligne physique réelle afin d'obtenir, entre autres, un équilibre de la tension continue).

Le DVI traite les pixels de la même manière que le VGA : tout est retransmis à chaque fois que l'image "redémarre", et les données sont cadencées avec précision. C'est comme une ligne téléphonique, où la ligne est constamment utilisée lorsque deux personnes se parlent.

Note : contrairement à ce qui précède, DisplayPort traite les données comme des paquets - qui présente un certain nombre d'avantages.

Contrairement à l'exemple VGA évoqué plus haut, les données étant envoyées sous forme numérique, au lieu de valeurs de luminosité analogiques, les volumes de données sont beaucoup plus importants.

Luke Wreningénieur chez Raspberry Pi, pensait que le RP2040 (au cœur du Pico) serait également capable de piloter une sortie DVI, toujours en utilisant PIO.

Le résultat est le suivant Dépôt PicoDVI & et les projets, et la Chaussette Pico DVI.

Luke Wren a calculé qu'environ Données série 252 Mbps doit être piloté par les pads numériques GPIO - série différentielle, qui est émulée avec deux pads asymétriques.

dc_coupling.png
Source : Dépôt de Luke Wren (Licence BSD-3)

Ci-dessus, vous voyez le circuit utilisé pour piloter la sortie DVI (à l'aide d'un connecteur HDMI, plus d'informations à ce sujet ci-dessous). 270 Ohm résistances.

Luke Wren est même allé plus loin en ajoutant une double sortie DVI à sa configuration PicoDVI au moyen d'une carte d'extension :

deux_affichages.jpg
Luke Wren démontre sortie sur deux écrans en utilisant sa propre conception

HDMI : compatibilité descendante avec DVI

HDMI est la prochaine évolution des connecteurs (et en concurrence avec DisplayPort). Il est entièrement compatible avec les signaux numériques DVI, ce qui permet d'avoir des convertisseurs DVI / HDMI simples et purement passifs.

Chaussette Pico DVI

La chaussette Pico DVI est une solution simple et peu coûteuse pour ajouter une sortie vidéo numérique à votre Pi. Elle a été conçue par Luke Wren (voir la description ci-dessus). Il s'agit d'une sortie DVI avec un connecteur HDMI. Comme le HDMI est compatible avec le DVI, vous pouvez utiliser un câble HDMI pour connecter votre Pico à des écrans HDMI :

soudure_04.jpg
Photo par Luke WrenLicence CC0-1.0

Programmation de la station d'accueil DVI de Pico

TL;DR

Vous pouvez télécharger notre picodvi-test.zip et commencez à jouer avec les compilations de l'exemple .UF2 qu'il contient. Il comprend également un PDF qui vous guide pas à pas.

Exemples de code

Luke Wren fournit des exemples de code dans son dépôt. Cependant, pour les utiliser avec la chaussette Pico DVI, vous devez définir la configuration correcte à utiliser. Nous allons vous montrer comment faire dans ce mini-tutoriel.

Conditions préalables à l'installation

sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential

Clonez le repo PicoDVI de Luke Wren :

cd ~
mkdir pico
cd pico 
git clone https://github.com/raspberrypi/pico-sdk
cd pico-sdk
git submodule update --init
cd ~/pico
git clone https://github.com/Wren6991/PicoDVI.git

Pour utiliser les exemples de code avec la chaussette DVI de Pico, vous devez définir le paramètre configuration correcte des broches à utiliser. Ajoutez la ligne suivante à common_dvi_pin_configs.h juste avant le premier #ifndef

#define DEFAULT_DVI_SERIAL_CONFIG pico_sock_cfg

Construire les exemples

cd PicoDVI/software/
mkdir build
cd build
export PICO_SDK_PATH=~/pico/pico-sdk
make -j$(nproc)

Installer les exemples sur le Pico

Les exemples construits se trouvent dans le dossier software/build/apps.

Appuyez sur la touche BOOTSEL de la Pico et maintenez-la enfoncée, puis connectez la carte à votre PC à l'aide du connecteur microUSB. Copiez et collez le fichier .uf2 approprié que vous souhaitez essayer - par exemple sprite_bounce.uf2 - sur la Pico.

Le Pico redémarrera automatiquement et vous devriez pouvoir voir la sortie sur le connecteur HDMI (n'oubliez pas qu'il s'agit en fait d'un DVI :-)).

Télécharger

Vous pouvez télécharger notre picodvi-test.zip et commencez à jouer avec les compilations de l'exemple .UF2 qu'il contient. Il comprend également un PDF qui vous guide pas à pas. Si le fichier sprite_bounce.uf2 ne fonctionne pas, essayez un autre moniteur - il est possible que tous les moniteurs ne soient pas compatibles avec cette sortie vidéo.

Si vous êtes arrivé jusqu'ici, dites-nous dans les commentaires comment cela a fonctionné pour vous et quelles sont les idées de projets que vous avez trouvées !

Acheter une chaussette Pico DVI

Notre page sœur, buyzero.de, stocke les Chaussette Pico DVI en deux variantes :

Sidenote : Affichages DBI et DSI

Par ailleurs, le dépôt Raspberry Pi Pico Extras contient des espaces réservés pour DBI (écrans MIPI DBI 16 bits - les données étant transmises en parallèle) et DSI (écrans MIPI série), il est donc possible que ces écrans soient également pris en charge à l'avenir.

21 commentaires

  1. VanTa sur mars 20, 2021 à 8:27 am

    Un exemple de sortie composite avec genlock ?

    • PiCaptain sur avril 6, 2021 à 2:47 pm

      Je pense que la sortie composite devrait être possible, mais je n'ai encore rien vu dans la nature à ce sujet.

  2. Miroslav Nemecek sur juin 10, 2021 à 10:24 am

    Comme alternative à scanvideo, j'ai implémenté une autre bibliothèque VGA/TV pour Raspberry Pico - 'PicoVGA', qui me semble plus facile à utiliser : http://www.breatharian.eu/hw/picovga/index_en.html

    • raspi berry sur juillet 1, 2021 à 5:20 pm

      Merci d'avoir partagé l'information sur votre bibliothèque !

  3. Ashesh Rai sur juin 10, 2021 à 5:39 pm

    Hey, est-ce que ce HDMI peut être utilisé comme INPUT et traiter les données.

    • raspi berry sur juillet 1, 2021 à 5:20 pm

      de la manière dont il est programmé, et puisque les résistances agissent pour limiter le signal de sortie du Raspberry Pi - non.
      Il est possible d'utiliser une adaptation de la conception, avec quelque chose qui augmente le niveau du signal au lieu de l'abaisser / et bien sûr un code adapté pour que les sorties fonctionnent comme des entrées, afin de pouvoir traiter les données vidéo à l'intérieur du Pico.

  4. Lorencz sur juin 25, 2021 à 2:25 pm

    Quelques conseils pratiques cependant. Grâce à la loterie du silicium, votre unité particulière peut ne pas overclocker proportionnellement la partie gpu et la partie cpu de la même manière. Ainsi, si vous n'avez pas besoin de graphiques plus rapides, n'overclockez pas le GPU. Cela augmente vos chances d'overclocker plus haut et d'avoir un système stable. De plus, une consommation d'énergie plus faible et un courant d'alimentation plus faible sont synonymes d'une meilleure stabilité. Les Raspberry Pis dotés de 4 cœurs de processeur peuvent se heurter à un mur d'alimentation lorsqu'ils sont chargés avec les 4 cœurs actifs. Le PMIC (circuit intégré de gestion de l'alimentation) intégré peut ne pas fournir le courant nécessaire à tous les cœurs et s'éteindre pendant une courte période, ce qui entraîne le redémarrage du Pi. Refroidissez également le PMIC. Ne survoltez pas au maximum si vous avez besoin d'une charge sur tous les cœurs (compilations de noyaux, calcul de nombres lourds, etc). Ici nous avons un RPI4 qui peut fonctionner à 1850MHz avec tous les coeurs actifs avec une surtension=2, mais avec une surtension plus élevée=3, il redémarre lorsqu'il est chargé. Une surtension plus élevée signifie également un courant plus élevé et le circuit PMIC a un courant de sortie limité. Plus le PMIC et les inducteurs qui l'entourent sont chauds, moins ils peuvent fournir de courant. Il s'agit d'une limitation de la puce PMIC, et non du chipset BCM. Donc, si vous rencontrez des redémarrages occasionnels sous forte charge, cela peut être dû à la surchauffe du PMIC. Si votre Pi se bloque, il ne s'agira pas de ce problème particulier, mais peut-être d'une perte de loterie silicium. Le sous-cadençage d'une partie GPU peut être un moyen intéressant d'augmenter l'overclockabilité (système plus stable), mais AFAIK, les anciens Raspberry Pis avaient un cache L2 lié au GPU, donc le sous-cadençage peut aussi ralentir le CPU. J'ai documenté la façon dont le PMIC du Raspberry Pi 4 chauffe - toutes les autres puces étant refroidies directement sur un dissipateur. La vue est celle du dessous, c'est à dire que vous voyez le PCB chauffé. Le PMIC se trouve dans le coin inférieur gauche.

    • raspi berry sur juillet 1, 2021 à 5:18 pm

      Merci beaucoup pour ces conseils pratiques !

  5. Bing sur octobre 23, 2021 à 7:20 am

    Salut,
    Je suis un noob ici... Est-ce que quelqu'un peut fournir un schéma pour une sortie d'affichage cvbs. Et tout changement nécessaire au code source ?

    • PiCaptain sur octobre 23, 2021 à 1:40 pm

      Désolé, aucune idée pour les cvbs

  6. farooqkz sur novembre 8, 2021 à 8:30 am

    Bonjour
    Merci pour ce beau billet. Je l'ai lu du début à presque la fin 😉
    J'ai cependant quelques questions stupides à poser :
    1. Le RPi Pico a un PWM. Est-il possible d'utiliser une seule broche avec PWM pour sortir un signal analogique à envoyer aux broches VGA ? De plus, les circuits sont plus simples et plus petits.
    2. Est-il possible d'obtenir une sortie AV analogique à partir du RPi Pico en utilisant le PWM, peut-être ? Je pense que la plupart des téléviseurs supportent cela. Peut-être en utilisant un module comme https://thecaferobot.com/store/pub/media/catalog/product/cache/14d1897c7f1bd4f35a7de1523300314a/l/c/lcd-01-057-1.jpg disponible dans un magasin local auquel j'ai accès. Cependant, l'image que j'ai envoyée est un module pour Arduino, mais il devrait être possible de l'utiliser avec Pico également, je suppose.
    3. Si l'on veut utiliser VGA ou DVI en combinaison avec Pico, est-il possible de ne pas utiliser les cartes VGA ou DVI ? Parce que ces cartes ne sont pas disponibles dans ma région et que mes compétences ne sont pas suffisantes pour en créer une moi-même.

    • raspi berry sur novembre 9, 2021 à 10:29 am

      1. Les broches PWM n'auront probablement pas la précision de timing que vous aimeriez avoir pour la sortie vidéo (c'est pourquoi nous utilisons PIO qui a un timing très précis). Mais pourquoi ne pas tenter l'expérience 🙂 .
      2. Je suppose qu'il devrait être possible de générer une sortie AV analogique à partir du Raspberry Pi Pico. Je doute que le PWM soit "suffisant" pour cela (je serais heureux d'entendre quelqu'un avec plus d'expérience s'exprimer à ce sujet !)
      Notez que le PWM ne fait qu'activer et désactiver le signal, alors que l'échelle de résistances utilisée dans la carte VGA, par exemple, donne des niveaux de signal continus. Ainsi, pour que la solution PWM fonctionne, elle doit opérer à des fréquences beaucoup plus élevées que celles requises pour le signal réel. Je ne sais pas non plus comment le matériel externe réagirait à un signal PWM au lieu d'un signal analogique continu.
      Il est possible de l'atténuer à l'aide d'un très petit condensateur, pour lequel vous devrez effectuer les calculs appropriés.
      3. les cartes VGA / DVI contiennent ce qui est nécessaire (principalement des résistances). Vous pouvez regarder le schéma et construire votre propre configuration sur une planche à pain, j'ai vu quelqu'un le faire pour VGA.
      Cela dit, nous expédions des produits à l'échelle internationale :
      https://buyzero.de/products/raspberry-pi-pico-vga-audio-sd-expansion-board?variant=39412666335412
      Pico DVI Sock @ buyzero.de shop

  7. Nikolay sur décembre 18, 2021 à 1:16 pm

    Excellente information. Je vous remercie.
    J'ai aussi trouvé ceci : Sortie vidéo composite sur Raspberry pico
    http://www.breakintoprogram.co.uk/projects/pico/composite-video-on-the-raspberry-pi-pico

  8. Marcelo sur avril 23, 2022 à 10:09 pm

    J'ai réussi à construire le picoDVI de Wren6991 et à l'intégrer avec un triple ADC pour scanner RGB 15Khz (640×240).
    Dans le 320×240 qui n'utilise qu'un seul cœur, l'autre est laissé seul pour recevoir les interruptions HSYNC /VSYNC et préparer les transferts dma sans problème, mais dans le 640×480 l'utilisation des 2 cœurs bloque le bon fonctionnement du système.
    Puisque j'ai besoin de la moitié des lignes, y a-t-il un moyen d'avoir une ligne noire toujours préparée pour les lignes impaires ?

    • Ed T sur février 25, 2023 à 11:25 pm

      Je ne pense pas qu'il soit nécessaire d'envoyer des lignes vierges. Vous envoyez toutes les lignes impaires, envoyez un signal vsync avec une demi-ligne supplémentaire et envoyez les lignes paires. Faites des recherches sur les "impulsions de synchronisation vidéo entrelacées".

  9. nix sur juin 9, 2022 à 2:40 pm

    Quelqu'un sait-il comment charger les vidéos que j'ai créées plutôt que les vidéos d'exemple ? Merci d'avance !

    • Wayne sur juillet 30, 2022 à 1:25 pm

      Je souhaite l'utiliser pour un affichage audiovisuel unique. Quelqu'un peut-il me renseigner ?

      Pouvez-vous alimenter le Pico par le câble HDMI, même s'il se trouve du côté diffusion du câble ?

      Pouvez-vous régler l'espace colorimétrique sur Rec2100 (espace colorimétrique HDR rec 2020) ?

      Est-il possible de brancher des lignes supplémentaires sur le HDMI, pour envoyer de l'audio (et le signal rec2020/HDR) ?

      Pouvez-vous produire de la vidéo via l'un des formats vidéo USB (vidéo provenant d'une Pico inchangée via un adaptateur USB vers Pico) ?

      En utilisant le Pico sans fil, peut-il faire du Miracast ?

      Est-il possible d'utiliser un mode vidéo bitmap normal et de le manipuler pour des graphiques de jeu avec les cycles restants ?

      Seedstudio propose une mini carte RP2040. Est-ce que la carte d'interface HDMI et le logiciel peuvent fonctionner sur cette carte. Ils ont aussi une version RiscV avec wifi, donc ce serait bien si on pouvait recompiler pour ça.

      https://www.seeedstudio.com/XIAO-RP2040-v1-0-p-5026.html?queryID=31d59a67f7c148df996ba9c1bb7563e3&objectID=5026&indexName=bazaar_retailer_products

      Je m'intéresse aux applications de jeu, comme l'utilisation de montres de jeu.

      Y a-t-il une plate-forme JavaScript minimale viable pour la durée d'exécution ?

      Désolé, c'est beaucoup demander, mais
      Le plus intéressant.

      Je vous remercie.

  10. hitech444 sur juillet 17, 2022 à 4:20 pm

    Puis-je utiliser votre carte avec l'interprète MMBasic de Geoff ? Y a-t-il des limitations matérielles sur mes programmes à cause de votre carte ?

    • Graham sur novembre 10, 2022 à 10:00 am

      Les grands esprits se ressemblent, j'ai aussi pensé à cela ! J'ai déjà construit l'ordinateur MMBASIC basé sur le Raspberry Pico avec une sortie VGA, et c'est tout simplement fantastique ! Cependant, la sortie DVI-D (Pseudo HDMI) élève la capacité graphique à un niveau supérieur ! Bien sûr, MMBASIC n'a pas besoin d'exploiter pleinement la profondeur de couleur ou la résolution plus élevée, mais fonctionner à 640×480 avec disons 64 couleurs serait plutôt agréable.

      Ceci étant dit, je prévois deux problèmes immédiats.
      1. La solution VGA utilise également les broches PIO, puis l'un des cœurs est utilisé pour la gestion des sprites, la mise en mémoire tampon des images, etc. je crois. Au minimum, il faudra modifier le code, au moins pour remplacer l'implémentation PIO du VGA. En ce qui concerne l'API, je serais également surpris si l'interface entre PIO (VGA) et le code du framebuffer était identique à la solution DVI PIO, mais je peux me tromper. Quoi qu'il en soit, il faudra modifier le code.
      2. LA MÉMOIRE VIVE. Il n'y en a pas assez, donc les résolutions et les profondeurs de couleurs plus élevées seront un problème. Mais je pense avoir une solution. Utiliser une PSRAM externe, et peut-être utiliser un RP2040/Pico comme "GPU" et il a sa propre PSRAM dédiée connectée. Il parle alors à un second RP2040 qui fournit le "CPU" ou le cerveau du système, exécutant MMBASIC, et il peut manipuler/déplacer les actifs graphiques en donnant des instructions au GPU avec un minimum de surcharge (disons sur un lien I2C). J'en ai envie/besoin 😉

  11. Dave sur décembre 30, 2023 à 1:27 pm

    64 euros pour la "Raspberry Pi Pico VGA Audio SD Expansion Board" ? Il vaudrait mieux utiliser un zéro...

    • Jörg sur mai 25, 2024 à 9:31 pm

      Pimoroni en propose un moins cher (30 €), mais encore très cher. La chaussette DVI ne coûte que quelques euros ...

Laissez un commentaire