Le problème est connu depuis longtemps, pour l’usage d’une Raspberry Pi destinée à afficher des éléments nécessitant beaucoup d’images par seconde, l’emploi du port HDMI de la carte est obligatoire. Passer par le bus SPI signifie baisser drastiquement le nombre d’images que la carte pourra envoyer vers un écran.
Je devrais presque déjà écrire « signifiait » et parler au passé puisqu’un nouveau pilote baptisé fbcp-ili9341 et développé par un certain Jukka Jylänki permet de bénéficier désormais d’un affichage à 60 images par seconde via le bus SPI.
Ce nouveau pilote est compatible avec les Raspberry Pi 2, 3 ainsi que le modèle Zero W. Il permet de proposer un bien meilleur rafraîchissement et va probablement être employé massivement par beaucoup de bidouilleurs qui utilisaient jusqu’à aujourd’hui tant bien que mal des solutions HDMI plus encombrantes pour retrouver une bonne vitesse d’affichage.
La vidéo ci dessus propose cote à cote les deux pilotes disponibles pour l’affichage via le bus SPI sur un écran Waveshare 3.5″ en 480 x 320 IPS. Un modèle courant que l’on trouve décliné en de nombreuses copies sur le marché.
Un listing d’écrans compatibles est maintenu sur la page Github du projet.
Les écrans employant des chipsets ILI9341, ILI9340 ou HX8357D devraient être compatibles avec ce nouveau pilote. Les deux solutions sont des cartes Raspberry Pi Model 3 B. On découvre dans la vidéo la différence flagrante d’affichage entre les deux solutions. Le pilote fbcp-ili9341 offre une fluidité exemplaire quand le pilote d’origine, fourni par la fondation, propose une image très saccadée.
Quake dans une Game Boy Advance au travers d’une Raspberry Pi
La solution trouvée par Jukka Jylänki n’est pas miraculeuse, elle ne transforme pas les capacités matérielles du bus SPI mais change la méthode dont sont envoyées les données. Au lieu d’envoyer la totalité de l’écran pour un rafraîchissement permanent de la totalité de l’affichage, seuls les pixels qui changent transitent par le Bus SPI.
L’écran 3.5″ Waveshare IPS tactile est compatible, il est proposé à 28.99€ sur Amazon
Celui-ci n’est donc plus congestionné puisque, en général, 50% des données ont alors besoin d’être traitées par la petite bande passante du bus. On passe ainsi de 30 à 60 images par seconde qui peuvent être affichées en remplacant simplement le pilote d’origine par le fbcp-ili9341.
2,5€ par mois | 5€ par mois | 10€ par mois | Le montant de votre choix |
J’aime ces idées simples,
qui permettent de faire réellement la différence…
Car il ne fallait pas seulement trouver la solution,
mais il fallait aussi la programmer !!!
Bravo et Merci Jukka Jylänki,
pour cette superbe participation…
Merci pour l’article, intéressant !
Mais du coup, potentiellement l’usage du cpu sera plus importante, non?
J’imagine qu’il faut bien calculer, pour chaque image, la différence avec la précédente.
Très fort le développeur. Il est en ligne avec l’idée des Raspberry : le compris pour arriver à un résultat correct.
Super ! J’ai justement un écran 3,5 pouces waveshare. Bravo au développeur, il a par ailleurs rédigé un README très exhaustif sur la page github du projet. C’est très appréciable.
Merci Pierre pour l’info.