Ce tutoriel détaille la procédure de mise en œuvre du logiciel de pilotage du DAC Linear Ltc26xx présent sur le prototype de la carte d’extension de la Raspberry Pi qui fera office de générateur de consignes pour les lasers.
Ce logiciel, à installer sur la Raspberry Pi, se base sur l’utilisation du framework Qt5 pour proposer une interface graphique qui permet de générer des signaux pré-établis compris entre 0 et 5V à travers le DAC Linear Ltc26xx piloté via son interface SPI. La gestion du bus SPI se fera par l’intermédiaire de la librairie tierce bcm2835.
Les étapes de la procédure de mise en œuvre sont :
-
Installation sur un PC Windows des logiciels nécessaires pour créer une carte SD pour la Raspberry Pi et prendre la main dessus à distance ;
-
Installation et configuration de l’OS de la Raspberry Pi ;
-
Installation des composants nécessaires pour la compilation et l’exécution du programme Qt ;
-
Récupération des sources du programme Qt de pilotage du DAC Linear Ltc26xx et compilation depuis l’IDE Qt Creator ;
-
Exécution du programme
1. Installation des logiciels Windows
-
Se rendre sur le site du logiciel Win32DiskImager, le télécharger puis l’installer. Ce logiciel permettra de copier l’image de l’OS de la Raspberry Pi sur une carte micro-SD.
-
Se rendre sur le site du logiciel PuTTY, le télécharger puis l’installer. Ce logiciel est un client ssh qui sera utilisé pour la configuration initiale de la Raspberry Pi ;
-
Se rendre sur le site de Real VNC et télécharger puis installer le logiciel VNC Viewer. Ce logiciel sera utilisé pour obtenir un accès distant à l’interface graphique de la Raspberry Pi via le protocole VNC ;
2. Installation et configuration de l’OS de la Raspberry Pi
-
Se rendre sur le site de Raspbian pour télécharger l’image compressée de l’OS “Raspbian with Jessie Pixel”
L’image disque considérée pour l’installation est celle sortie 10 avril 2017 (→
2017-04-10-raspbian-jessie.zip
). -
Désarchiver l’image compressée et utiliser le logiciel Win32DiskImager pour la copier sur une carte micro-SD.
-
Une fois l’écriture terminée, créer un fichier nommé
ssh
sur la partition/boot
. Celui-ci autorisera un accès ssh lors du 1er démarrage de la Raspberry Pi alors que cela est normalement interdit pour des questions de sécurité [Source : A SECURITY UPDATE FOR RASPBIAN PIXEL]L’accès à ssh par cette méthode n’est pas permanent. En effet, lors du 1er démarrage de la Raspberry Pi, celle-ci n’active que provisoirement ssh et efface le fichier
ssh
créé. -
Insérer la carte micro-SD dans la Raspberry Pi, la relier au réseau Ethernet filaire et la mettre sous tension
-
Exécuter PuTTY et se connecter en ssh à la Raspberry Pi, dont le nom d’hôte par défaut est
raspberrypi
, avec l’utilisateurpi
et le mot de passeraspberry
Que faire si la résolution de nom d’hôte échoue ?Si la résolution de nom échoue, il suffit de se connecter à la Raspberry Pi à l’aide de son adresse IP qui, par défaut, doit lui être attribuée par DHCP. Parmi les différentes solutions existantes pour découvrir cette adresse IP, on peut citer les 2 suivantes :
-
utiliser le logiciel Zenmap
-
taper la commande
nslookup raspberrypi
dans une fenêtre de commande windows :C:\Users\claude> nslookup raspberrypi Serveur : box Address: 192.168.1.1 Nom : raspberrypi Address: 192.168.1.68
-
-
Lancer l’utilitaire de configuration propre à l’OS Raspbian en exécutant depuis la session ssh la commande
sudo raspi-config
-
Se rendre dans le menu
Interfacing Options
et activer les options :SSH
,VNC
etSPI
. -
Étendre le système de fichier à l’ensemble de la carte SD en sélectionnant l’option
Expand filesystem
dans le menuAdvanced Options
deraspi-config
-
Fixer la résolution désirée de l’écran en sélectionnant l’option
Resolution
dans le menuAdvanced Options
deraspi-config
-
Renommer éventuellement la Raspberry Pi via le menu
Hostname
deraspi-config
. -
Quitter l’utilitaire
raspi-config
et rebooter la Raspberry comme proposé. La raspberry est désormais accessible via ssh, vnc et son bus SPI est opérationnel. -
Après s’être connecté à nouveau sur la Raspberry Pi par ssh ou vnc, modifier éventuellement sa configuration réseau pour avoir accès à internet.
Selon l’installation réseau, il peut en effet être nécessaire d’ajouter l’adresse IP du serveur DNS dans le fichier
/etc/resolv.conf
.Exemplenameserver 192.168.1.1
Or, ce fichier peut être écrasé au prochain démarrage de la Raspberry Pi et donc empêcher l’accès à internet pour installer par exemple des paquets logiciels.
Pour corriger ce problème :
-
après avoir renseigné le fichier
/etc/resolv.conf
, installer le paquetresolvconf
avec la commandesudo apt-get update ; sudo apt-get install resolvconf
-
renseigner ensuite le fichier
/etc/dhcpcd.conf
avec une directivestatic domain_name_servers
à laquelle on fournit l’adresse IP du serveur DNSExemple :static domain_name_servers=192.168.1.1
OU
Spécifier au maximum 3 serveur DNS dans le fichier
/etc/resolvconf/resolv.conf.d/head
avec la directive 'nameserver' (au delà, ils sont ignorés)Exemple :nameserver 192.168.1.1
-
3. Installation des composants requis sur la Raspberry Pi
Cette étape consiste à installer les paquets logiciels ainsi que la librairie tierce nécessaires pour la compilation et l’exécution du programme Qt
-
Installer le framework Qt et son IDE Qt Creator soit depuis une session ssh de PuTTY soit depuis un terminal ouvert à partir du client VNC Viewer
pi@gemrpi$ sudo apt-get update ; sudo apt-get install qt5-default qtcreator
Les commandes données dans ce document peuvent être reproduites dans PuTTY sans avoir à les retaper. Il suffit de les copier dans le presse papier après les avoir sélectionnées et de les coller ensuite dans la fenêtre PuTTY par un simple appui sur le bouton droit de la souris.
-
Installer la librairie bcm2835 utilisée pour la gestion du bus SPI de la Raspberry Pi en suivant la procédure indiquée sur le site de son développeur (Mike McCauley).
pi@gemrpi$ wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.52.tar.gz pi@gemrpi$ tar zxvf bcm2835-1.52.tar.gz pi@gemrpi$ cd bcm2835-1.52/ pi@gemrpi$ ./configure pi@gemrpi$ make pi@gemrpi$ sudo make check pi@gemrpi$ sudo make install
La librairie bcm2835 est une librairie statique (→
libbcm2835.a
). Elle est installée dans le répertoire/usr/local/lib
.
4. Récupération des sources du programme Qt et compilation depuis l’IDE Qt Creator
Ici, on va dans un 1er temps récupérer le code source de l’application Qt de pilotage du DAC Linear Ltc26xx — via le gestionnaire de version git — depuis le dépôt Bitbucket dédié au projet Gemalto 2017. Ensuite, on va compiler puis exécuter l’application après configuration de l’IDE Qt Creator.
Le gestionnaire de version git est présent par défaut sur la Raspberry Pi, il n’est donc pas nécessaire de l’installer via un paquet logiciel. |
-
Cloner le dépôt avec la commande
git clone
qui nécessite de s’authentifier avec son mot de passe de compte Bitbucketpi@gemrpi:~ $ git clone https://cdefrance@bitbucket.org/cdefrance/gemalto_2017.git Cloning into 'gemalto_2017'... Password for 'https://cdefrance@bitbucket.org': remote: Counting objects: 236, done. remote: Compressing objects: 100% (188/188), done. remote: Total 236 (delta 86), reused 89 (delta 32) Receiving objects: 100% (236/236), 7.26 MiB | 170.00 KiB/s, done. Resolving deltas: 100% (86/86), done. Checking connectivity... done.
-
Si ce n’est pas déjà fait, ouvrir une session VNC sur la Raspberry Pi avec VNC Viewer et exécuter l’IDE Qt Creator depuis la rubrique
Programming
du menu “Framboise” -
Depuis le menu “File → Open File or Project” de Qt Creator, ouvrir le projet
~/gemalto_2017/ressources/codebase/qt/QLtc2600/QLtc2600.pro
et le configurer pour la seule version du framework Qt disponible sur la Raspberry Pi (celle intitulée “Desktop”) en se contentant d’appuyer sur le boutonConfigure Project
-
Se rendre dans la rubrique “Buid & Run → Compilers” accessible depuis le menu “Tools → Options…” de Qt Creator de façon à configurer le compilateur à utiliser.
-
Faire en sorte qu’il soit possible de lancer l’application en mode “sudo” directement depuis l’IDE (← l’exécution en “sudo” est imposée par la librairie bcm2835 pour les accès au bus SPI). Pour ce faire :
-
Générer (1) et exécuter l’application (4) après s’être assuré qu’aucune erreur de compilation ne s’est produite (2 et 3)
5. Utilisation de l’application
Un screenshot de l’IHM est présentée ci-dessous :
L’utilisation consiste à :
-
choisir la fréquence de l’horloge du bus SPI
La fréquence dépend du type de Raspberry Pi sur laquelle s’exécute le programme. L’application détecte automatiquement le modèle de Raspberry Pi pour afficher la valeur réelle de la fréquence qui sera utilisée pour l’horloge du bus SPI.
-
choisir la résolution du DAC (12 bits sur le prototype envoyé)
-
renseigner les caractéristiques du signal périodique à générer
-
valider la configuration
-
générer le signal