Mise en œuvre d’un écran OLED de chez HESAI avec un arduino nano

J’ai acheté un petit écran OLED pas cher chez aliexpress pour voir ce que ça donne. L’écran fait 1.3 pouces de diagonale (3.3cm). L’affichage est en blanc uniquement, et la résolution est de 128×64. Pas de quoi faire une interface graphique avancée, mais largement suffisant pour afficher quelques informations basiques. Au niveau du protocole de communication, c’est de l’I2C, donc deux fils seulement en plus de ceux pour alimenter le module.

Le hic, c’est que les librairies Adafruit ne fonctionnent pas avec ce module chinois, et qu’il a fallu gratter un peu avant de pouvoir le faire fonctionner. Ceci dit, la bibliothèque ssd1306 écrite par Alexey Dynda est utilisable avec ce matériel, pour peu que l’on utilise le pilote pour la puce sh1106 au lieu de celui pour ssd1306  habituellement.

Dans cet article, je vais détailler la procédure pour faire fonctionner ce petit écran oled, en utilisant l’IDE arduino, puis avec PlatformIO. C’est parti !

Le montage

Pour ces petits tests, j’ai utilisé un arduino nano (un funduino pour être exact). Ce sera largement suffisant.

Pour repérer les broches SDA (Serial Data Line ou ligne de données bidirectionnelle) et SCL (Serial Clock Line ou ligne d’horloge de synchronisation bidirectionnelle), il suffit de regarder le brochage d’un arduino nano :

On repère rapidement que la ligne de données (SDA) se trouve sur la broche A4, et la ligne d’horloge (SCL) sur la broche A5. Le câblage est donc très simple ici :

Avec l’IDE Arduino

Il faut d’abord installer la librairie ssd1306. Dans l’IDE Arduino, allez dans le menu Outils > Gérer les bibliothèques. Dans la zone de saisie Filtrez votre recherche, saisissez ssd1306. Repérez la bibliothèque nommée ssd1306 by Alexey Dynda, et cliquez sur Installer. Vous pouvez ensuite fermer la boîte de dialogue.

C’est prêt ! Nous allons tester la bibliothèque en écrivant un petit programme qui affiche un compteur à l’écran. Allez dans Fichier > Nouveau, et saisissez le code suivant :

Après avoir compilé et téléversé ce croquis dans l’arduino nano, vous devriez voir quelque chose de la sorte :

Avec PlatformIO

Nous allons utiliser PlatformIO Core (CLI) plutôt que sa version intégrée aux éditeurs atom ou Visual Studio Code. Je suppose que PlatformIO est déjà installé sur l’ordinateur. Les lignes de commande sont celles d’un système GNU/Linux (debian testing), mais doivent pouvoir être utilisées sur d’autres systèmes d’exploitation.

Tout d’abord, on crée un dossier vide pour le projet et on s’y place :

puis on active l’environnement virtuel Python utilisé par PlatformIO :

Ensuite, on doit repérer l’identifiant de la carte utilisée, ici un clone d’un Arduino nano un peu ancien :

ce qui donne à l’exécution :

L’indentifiant qui nous intéresse ici est donc nanoatmega328.

On initialise alors le projet avec la commande :

Les fichiers et dossiers du projet minimaliste sont alors créés. Dans le dossier src de l’arborescence du projet, il faut créer un fichier main.cpp, contenant le même code que celui donné plus haut pour d’IDE Arduino.

Ensuite, il faut compléter le fichier platformio.ini pour y inclure les dépendances aux bibliothèques. Pour cela, on se rend sur la page https://platformio.org/lib et dans la zone de recherche, on saisit ssd1306. Dans la liste des résultats, identifier la bibliothèque ssd1306 d’Alexey Dynda et on clique sur le lien pour aller sur la page de cette bibliothèque. Les lignes à ajouter dans le fichier platformio.ini dont données dans l’onglet Installation de cette page. On ajoutera donc ces lignes pour obtenir le fichier de configuration platformio.ini suivant :

Quelques remarques importantes :

  • dans lib_deps, il ne faut pas mettre le nom de la bibliothèque (ssd1306) mais seulement son identifiant 1904. En effet, avec le nom seulement, c’est une autre bibliothèque qui sera automatiquement téléchargée et installée au moment de la compilation. Je ne sais pas du tout d’où vient ce comportement étrange…
  • il faut ajouter des dépendances supplémentaires de la bibliothèque ssd1306 : Wire et SPI.

Pour compiler le code, il suffit de saisir :

Cela va donc télécharger toutes les bibliothèques manquantes (en les plaçant dans le sous-dossier caché .piolibdeps), et lancer la chaîne de compilation. Au bout de quelques secondes, la compilation est terminée et le binaire est prêt à être envoyé dans l’arduino nano :

Il ne reste plus qu’à téléverser le binaire avec la commande :

et le compteur doit commencer à égrainer les secondes !

Laisser un commentaire

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

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