Par défaut le compte "root" est désactivé dans Raspbian.
Pour faciliter l'accès aux GPIO il est préférable d'avoir un accès administrateur (root).
Se connecter en SSH sur le Raspberry Pi (avec Putty par exemple). Si Raspbian vient d'être installée, le login et mot de passe par defaut est : pi/raspberry (si nécessaire, voir ici pour installer Raspbian)
Définir le mot de passe "root" :
sudo passwd root
Cet accès n'est pas autorisé par défaut. Pour l'activer, ouvrir le fichier "sshd_config" dans nano :
sudo nano /etc/ssh/sshd_sonfig
Chercher la ligne commencant par "PermtitRootLogin" et la modifier de manière à avoir :
PermtitRootLogin yes
Enregistrer le fichier (CTRL+O puis Entrée) et quitter Nano (CTRL+X).
Redémarrer le Raspberry Pi :
sudo reboot
Cliquer sur "New Project..." :
Sélectionner "C/C++" => "C/C++ Application" puis cliquer sur "Next".
Donner un nom au projet, un emplacement et sélectionner le type de langage (C ou C++). Cliquer sur "Finish" pour terminer :
Cliquer sur l'onglet "Services" :
Assurez-vous que le Raspberry Pi est en route et connecté sur le même réseau IP que votre ordinateur. Vous devez également connaitre son adresse IP.
Faire un clic droit sur "C/C++ Build Hosts" puis sur "Add New Host"
Entrer l'adresse IP du Raspberry Pi et cliquer sur "Next" :
Entrer le nom d'utilisateur "root" :
Lors de la première connexion, un message d'avertissement vous demande de confirmer que vous êtes certain qu'il s'agit du bon hôte (vérification de la clé RSA). Cliquer sur "Yes" :
Entrer le mot de passe :
Cliquer sur "Finish" :
Cliquer sur l'onglet "Projects" :
Faire un clic droit sur le nom du projet et cliquer sur "propriétés" :
Sélectionner "All coonfigurations", puis dans "Build => Build Host", sélectionner le nom d'hôte créé précédement :
Dans "Run => Console Type", sélectionner "Standard Output" :
Activer l'utilisation de la bibliothèque "wiringPi" en allant dans "Build => Linker", cliquer sur le bouton "..." en face de "Libraries" :
Cliquer ensuite sur le bouton "Add Option..." :
Entrer "-lwiringPi" :
La configuration du projet est maintenant terminée. Fermer les fenêtres de propriétés en cliquant sur "Ok".
Dans "main.c", taper le code ci-dessous :
Réaliser le câblage ci-dessous :
Lancer l'exécution en cliquant sur l'icône "Run Project" (ou touche F6) :
La LED doit clignoter.
Remarques :
1. Si vous cliquez à nouveau sur "Run" un deuxième programme "blink" va être exécuté sur le Raspberry Pi. Il est donc nécessaire de stopper l'exécution du premier avant :
3. Sur le capture ci-dessus on peut voir que lorsque l'exécutable est lancé l'invite de commande ne revient pas : le programme s'exécute dans le processus du terminal. Il faut appuyer sur CTRL+C pour stopper son exécution.
Si on veut lancer le programme dans un nouveau processus, il faut ajouter un '&' à la fin de la commande (voir capture ci-dessous).
La commande "ps" permet de visualiser les processus en cours d'exécution avec leur PID (numéro d'identification).
Pour stopper un processus, utiliser la commande "kill" suivi de son PID.
Avant de pouvoir utiliser le port série, quelques réglages sont nécessaires dans Raspbian. En effet, Raspbian utilise le port série GPIO comme port console sur lequel on peut se loguer avec un terminal (comme Putty par exemple). Il faut donc désactiver ceci pour libérer le port série. Pour cela, exécuter "raspi-config" :
raspi-config
Raspi-config est une interface en mode texte. Pour se déplacer, utiliser les flèches ou la touche tabulation. Pour valider un choix, utiliser la barre d'espace ou la touche Entrée.
Sélectionner "Interfacing options" :
Sélectionner "P6 Serial" :
Sélectionner "No" pour désactiver le shell sur le port série :
Sélectionner "Yes" pour que le port série soit activé :
Sélectionner "Ok" pour confirmer :
Sélectionner "Finish" pour quitter "raspi-config :
#include <stdio.h>
#include <wiringPi.h>
#include <wiringSerial.h>
// La LED est connectée à la GPIO 0
const int LED = 0;
int main(int argc, char** argv) {
int fd;
int pause = 500;
// Initialisation de la bibliothèque wiringPi
wiringPiSetup();
// Configuration de la GPIO 0 en sortie
pinMode(LED, OUTPUT);
// Ouverure du port série à 115 200 bauds
if ((fd = serialOpen("/dev/ttyS0", 115200)) < 0) {
printf("ERREUR : Impossible d'ouvrir le port série !
");
return -1;
}
// Boucle infine
while (1) {
// On fait clignotter la LED
digitalWrite(LED, HIGH);
delay(pause);
digitalWrite(LED, LOW);
delay(pause);
// On envoie "SN
" caractères par caractères
serialPutchar(fd, 'S');
serialPutchar(fd, 'N');
serialPutchar(fd, 0x0D);
serialPutchar(fd, 0x0A);
// Si on a reçu un caractère
if (serialDataAvail(fd) > 0) {
// On le lit
char c = serialGetchar(fd);
// Si le caractère est 'q' on quitte le programme
if (c == 'q') {
serialClose(fd); // Fermeture du port série
return 0;
}
// Si le caractère est '+' on augmente pause (la LED clignotera moins vite)
if (c == '+') {
pause = pause + 100;
serialPrintf(fd, "pause = %d
", pause);
}
// Si le caractère est '-' on diminu pause (la LED clignotera plus vite)
if ((c == '-') && (pause > 100)) {
pause = pause - 100;
serialPrintf(fd, "pause = %d
", pause);
}
}
}
serialClose(fd);
return 0;
}
Article connexe : Raspberry Pi - Installer une image de système d'exploitation