Publié le 15 septembre 2014 - par

Un adaptateur VGA sur le GPIO du Raspberry Pi B+

VGA_250pxCet adaptateur passif permet la connexion directe d’un moniteur VGA sur le GPIO du Raspberry Pi.
Comme le Raspberry Pi n’a pas de connexion VGA, les options sont soit d’utiliser un câble adaptateur HDMI vers VGA, soit d’investir dans une carte d’extension qui intègre ce genre de convertisseur.
Il existe maintenant un moyen beaucoup moins cher de le faire avec en plus l’avantage d’utiliser un moniteur VGA indépendant de la sortie HDMI du Raspberry Pi.

Gert van Loo, qui a développé les premières cartes Raspberry Pi, la Gertboard et la Gertduino a  créé un adaptateur VGA qui est connecté au port GPIO du Raspberry Pi B+. Et vous pouvez facilement reproduire cet adaptateur.

VGA-My_Pi_700

L’adaptateur GPIO => VGA

Gert (qui est ingénieur chez Broadcom) a constaté que le SoC BCM2835 qui équipe le Raspberry Pi est équipé d’une interface parallèle : le GPIO. Dans la version B+ de notre framboise, le nombre de broches est passé à 40 et il y a suffisamment de sortie pour envisager de créer cette sortie VGA. De plus ce port VGA reste indépendant du port HDMI qui peut être utilisé par ailleurs. Le nombre de sorties autorise la génération d’images composées de  262144 couleurs.

schema_vga_600px

Le schéma de l’interface VGA passive – Cliquez pour agrandir

L’inconvénient est que cet adaptateur utilise la plupart des broches du GPIO, n’en laissant que 6 de libres. Il est possible de contourner ceci en diminuant la quantité de couleurs prises en charge (et donc bien entendu de perdre de la qualité d’image) – l’affichage de 262 144 couleurs nécessite six bits par canal. Pour générer les signaux RGB (rouge, vert, bleu), chaque groupe de six broches GPIO spécifiques à la couleur considérée est relié à une série de résistances qui agit comme un DAC archaïque. Ceci permet de créer les tensions nécessaires pour chaque couleur.

Gert_VGA_700

Démonstration de l’adaptateur par Gerd – Affichage VGA 1080p60

Deux autres broches du GPIO sont réservées pour les signaux de synchronisation verticale et horizontale.

Conclusion

Cet « adaptateur VGA du pauvre » ne nécessite aucun composant actif… il peut se réaliser très simplement avec une poignée de résistances et un bout de carte (voir ci-dessous). Il est capable d’afficher du 1080p60…

Gert a mis tout le nécessaire pour la réalisation de cet adaptateur sur GitHub, il y a même une documentation en PDF.

 

IMG_0545.resized

Sources

Share Button

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

15 réflexions au sujet de « Un adaptateur VGA sur le GPIO du Raspberry Pi B+ »

        1. GG

          Bonjour,

          Ceci me semble très intéressant et je me pose cette question : est-il possible d’avoir 2 écrans connectés, par exemple un 4 pouces sur le connecteur interne pour piloter DOKI sous addon « conq » et occasionnellement une tv sur le port HDMI pour visualiser les videos ?
          Je souhaiterai réaliser un mini jukebox façon « rock ola wurlitzer » servant pour les MP3+CD et capable aussi de visualiser des films et tv web sur ma tv. Je souhaiterai pouvoir utiliser mon jukebox TV éteinte lorsque je ne souhaite que le son.
          Ah oui et aussi comme j’utilise « conq » sans souris ni écran tactile, il me faut un clavier très simplifié (4 touches directions + touche « echap »+ « espace » + « entrée »), y a t-il une façon plus simple que de dépouiller un claver USB et d’en refaire un à 7 touches en utilisant des petits poussoirs ?
          Est-ce possible avec cette merveilleuse petite carte ??
          Bien cordialement,

          Jérôme.

          Répondre
  1. Ping : Un adaptateur VGA sur le GPIO du Raspberry Pi B...

  2. Mister Kha

    Je n’ai pas l’utilité de cet adaptateur mais je trouve le concept intéressant dans le sens où il respecte l’esprit lowcost du raspberry, contrairement à certains projets comme le boîtier multimédia présenté il y a peu et qui émarge (frais de port compris) à presque deux fois le prix du raspberry….
    Bravo à l’auteur et merci au maître de cérémonie pour la découverte.

    P.S. : j’attends avec impatience le forum….

    Répondre
  3. Ping : Un adaptateur VGA sur le GPIO du Raspberry Pi B...

  4. Cdric_Carboni

    Bonjour,
    Je me tourne vers vous, car j’ai reçu hier, et donc assemblé/soudé dans la foulée ce petit adaptateur…
    Malheureusement, je n’arrive pas à afficher mon second écran en VGA…
    Si quelqu’un pouvait m’éclairer, ce serait génial, car là, je sèche un peu…
    L’ajout des deux lignes dans le fichier config.txt m’a même supprimé mon écran tv en HDMI…

    Merci d’avance à vous,

    Bien cordialement,

    Cédric

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Eric
      Vous avez suivi la procédure d’installation de la doc?
      https://github.com/fenlogic/vga666/blob/master/documents/vga_manual.pdf
      Installation :
      Run rpi-update.
      Copy the file dt-blob-dpi.bin to boot partition of sdcard, renaming it to dt-blob.bin
      (The file is part of the git-hub database download: setup/dt-blob-dpi.bin).
      Don’t forget that the dt-blob.bin will disable all GPIOs 2-21 for any other use. Thus if you switch back to HDMI you might also want to give the dt-blob.bin file a different name.

      Add this to config.txt
      enable_dpi_lcd=1
      display_default_lcd=1

      You should now be able to boot with VGA resolution on VGA connector.

      You select the mode using: dpi_output_format=X (X in range 1..7)
      The VGA adaptor PCB is designed up for mode 5.

      cordialement
      François

      Répondre
      1. Cdric_Carboni

        Bonsoir François et merci de votre réponse si rapide,
        Oui, j’ai bien fait la manip et suite à la modif de « config.txt » je n’ai qu’un écran noie en HDMI et rien sur le port VGA.
        Je ne sais plus trop quoi faire. J’ai bien monté selon le schéma sur GitHub mais j’en viens à me demander si je n’aurais pas cramé une résistance en effectuant mes soudures ☹
        C’est possible ça ?

        Merci beaucoup du temps que vous m’accordez,

        Cordialement,

        Cédric

        Répondre
        1. François MOCQ Auteur de l’article

          bonjour
          rôôô non, pour cramer une résistance il faut déjà chauffer !
          vérifiez qu’il n’y ait pas de goutte de soudure même minuscule entre deux piste…
          Après…
          re-vérifiez si le fichier dt-blob-dpi.bin est bien dans /boot et qu il a été renommé dt-blob.bin
          relisez attentivement (un fois de plus) votre config.txt pour vérifier les 2 lignes enable_dpi_lcd et display_default_lcd
          ainsi que dpi_output_format = 5
          Si tout ça est bon, je ne vois pas comment vous aider à distance…
          cordialement
          François

          Répondre
          1. Cédric

            Bonsoir François,
            Merci de votre réponse je me trouve un poil rassurer ; j’ai l’habitude de faire des soudures pour du câbles audio alors là, la résistance ça me faisait peur.
            J’ai un peu fait ça, salement, alors j’ai du dessouder pour que les contacts ne se touche pas mais je regarde la RPi ce soir et je retente l’ensemble du process depuis le début.
            Une petite question, je n’ai fait les soudures que du côté des résistance est ce que cela peut poser problèmes pour les contacts ??
            En tout cas je vous tiens au courant et merci beaucoup car même à distance vos conseils me sont précieux.

            Bien cordialement,

            Cédric

            Répondre
            1. François MOCQ Auteur de l’article

              Bonjour Cédric
              Là encore difficile de le dire sans voir le circuit
              Si c’est un circuit à trous métallisés pas de soucis car la métallisation fait le lien entre le dessus et le dessous du circuit
              Si c’est un circuit double face sans métallisation, il faut impérativement souder dessus et dessous.
              Il faudrait voir ce que dit la doc à ce sujet ?
              avez vous un lien?
              cordialement
              François

              Répondre
  5. Cédric

    Bonjour François,
    C’est un modèle à trou métallisé, le circuit est de couleur noire, un genre de vernis dessus.
    C’est bien ça le problème, il n’y aucune doc de fournie. Je l’ai acheté sur Pi Supply pour éviter tout problèmes ; mais ils ne fournissent aucune doc avec l’envoi comme sur leur site.
    Il renvoie au GitHub de Gert…

    https://www.pi-supply.com/product/gert-vga-666-hardware-vga-raspberry-pi/

    Je retente l’ensemble du process cette après-midi…

    Bien cordialement,

    Cédric

    Répondre
  6. Cédric

    Bon j’ai tout repris à zéro, j’ai refait une instal clean de Raspbian et au moment de rajouter mes lignes dans config.txt ; plus d’affichages ni en VGA, ni en HDMI ☹
    Une précision étant débutant sur RPI, comme sur linux, je suis passé par NOOBS…
    Est-ce que le problème peut se situer ici ?
    La version de Raspbain installé par NOOBS est Jessie, la nouvelle… C’est bon ou c’est encore une bétise ??

    Voici le config.txt, il y a peut-être une erreur que mes yeux novice ne voit pas…

    # For more options and information see
    # http://www.raspberrypi.org/documentation/configuration/config-txt.md
    # Some settings may impact device functionality. See link above for details

    # uncomment if you get no picture on HDMI for a default « safe » mode
    #hdmi_safe=1

    # uncomment this if your display has a black border of unused pixels visible
    # and your display can output without overscan
    #disable_overscan=1

    # uncomment the following to adjust overscan. Use positive numbers if console
    # goes off screen, and negative if there is too much border
    #overscan_left=16
    #overscan_right=16
    #overscan_top=16
    #overscan_bottom=16

    # uncomment to force a console size. By default it will be display’s size minus
    # overscan.
    #framebuffer_width=1280
    #framebuffer_height=720

    # uncomment if hdmi display is not detected and composite is being output
    #hdmi_force_hotplug=1

    # uncomment to force a specific HDMI mode (this will force VGA)
    #hdmi_group=1
    #hdmi_mode=1

    # uncomment to force a HDMI mode rather than DVI. This can make audio work in
    # DMT (computer monitor) modes
    #hdmi_drive=2

    # uncomment to increase signal to HDMI, if you have interference, blanking, or
    # no display
    #config_hdmi_boost=4

    # uncomment for composite PAL
    #sdtv_mode=2

    #uncomment to overclock the arm. 700 MHz is the default.
    #arm_freq=800

    # Uncomment some or all of these to enable the optional hardware interfaces
    #dtparam=i2c_arm=on
    #dtparam=i2s=on
    #dtparam=spi=on

    # Uncomment this to enable the lirc-rpi module
    #dtoverlay=lirc-rpi

    # Additional overlays and parameters are documented /boot/overlays/README

    enable_dpi_lcd=1
    display_default_lcd=1
    dpi_output_format=5

    # NOOBS Auto-generated Settings:

    hdmi_force_hotplug=1

    config_hdmi_boost=4

    overscan_left=24

    overscan_right=24

    overscan_top=16

    overscan_bottom=16

    disable_overscan=0

    Merci beaucoup de votre patience! Le RPi c’est chouette mais pour débuter c’est pas fastoche!

    Bien cordialement,
    Cédric

    Répondre
    1. François MOCQ Auteur de l’article

      bonjour
      aucune idée 🙂
      c’est une prise VGA femelle de châssis de type DB15c (DB15 compact à 3 rangées de trous) c’est tout ce que je peux vous dire ne connaissant absolument pas ISIS (mis à part la déesse égyptienne)
      cordialement
      François

      Répondre
  7. Ping : Installer OctoPrint avec l'écran HyperPixel sur Raspberry Pi - Framboise 314, le Raspberry Pi à la sauce française....

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.