Raspberry pi, un mini micro ordinateur.

Liens vers d'autres pages de ce site Web   En construction ...

° Raspberry pi, un mini micro ordinateur
° Raspbian, le système d'exploitation par défaut du Raspberry pi
° RISC OS, un système d'exploitation non préemptif, rapide
° Ubuntu Mate, une alternative, pour rester proche de Ubuntu
° Python, exemples accédant au port GPIO
° Langage C, exemples accédant au port GPIO

Table des matières   Liens internes à cette page

1) Des vidéos sur le Raspberry pi, excellent pour débuter
2) Des informations sur le port GPIO du Raspberry pi
3) Information diverses sur le Raspberry pi
4) Des vidéos pour apprendre le langage C sur Raspberry pi
5) SSH et tightVNC, Virtual Network Computing (VNC)
6) x11VNC, prendre le contrôle du serveur (Raspberry) avec une connexion locale
7) x11VNC, prendre le contrôle à travers Internet, en connexion non locale
8) SSH, connexion à distance, à travers Internet
9) SCP, SFTP, copie de fichiers à distance, à travers Internet

1) Des vidéos sur le Raspberry pi, excellent pour débuter   Top

Quelques vidéos bien faites sur le Raspberry pi, en français.
01) Tutoriel Raspberry Pi 3 : 1 - Installation du système d'exploitation
02) Tutoriel Raspberry Pi 3 : 2 - Premier démarrage et configuration
03) Tutoriel Raspberry Pi 3 : 3 - Connexion en ssh
04) Tutoriel Raspberry Pi 3 : 4 - Pilotage du GPIO avec Python

D'autres vidéos pour débuter, en anglais.

Raspberry pi 2, Getting Started, en anglais.
Une vidéo d'introduction, faite par SpazzTech. Très clair, très pédagogique, assez lent.
Indique aussi clairement que l'alimentation conseillée doit fournir au moins 2'000 mA.

Raspberry Pi 2 - Configuration Settings.

Raspberry Pi Configuration Tool (raspi-config).

Quelques autres informations, pour débuter et installer un système d'exploitation

Une fois un fichier téléchargé, il est bon de vérifier qu'il n'y a pas eu d'erreur, en vérifiant son code de contrôle (hash code) sha ou md5.
Sous linux, on peut taper dans un terminal :
sha1sum nom_de_fichier

etcher.io/, un logiciel de transfert de système d'exploitation sur une carte SD.
Un autre logiciel similaire existe sous linux : Startup Disk Creator.
Personnellement, j'utilise généralement la commande suivante dans un Terminal :
sudo dd of=/dev/sdc if=/home/bg/Temp/Lexar16GB.img bs=4096 conv=notrunc
Attention, une mauvaise utilisation peut écraser votre disque dur !!!
"sdc" doit être remplacé par "sdb" ou "sdd" ou "sde", suivant l'emplacement de la carte SD. "/home/bg/Temp/Lexar16GB.img" doit être remplacé par l'emplacement et le nom du fichier à transférer sur la carte.
Probablement que le plus sûr est d'utiliser le logiciel "etcher.io".


2) Des informations sur le port GPIO du Raspberry pi   Top

GPIOzero, une librairie en Python pour accéder aux ports GPIO, en anglais.
Par défaut elle est installée dans la distribution Rasbian.
RPi.GPIO, une autre librairie Python pour piloter le GPIO.
Cette librairie est de plus bas niveau, je l'ai préféré pour commencer, car on contrôle mieux ce que l'on fait.

Documentation sur la librairie RPi.GPIO.

How to use interrupts with Python on the Raspberry Pi and RPi.GPIO
How to use interrupts with Python on the Raspberry Pi and RPi.GPIO – part 2
How to use interrupts with Python on the Raspberry Pi and RPi.GPIO – part 3

GPIO Electrical Specifications, hardware des ports GPIO, en anglais.

pinout.xyz, description des pins du port GPIO.
En cliquant sur une "pin", de l'information supplémentaire s'affiche. Très bonne informations.
Il faut utiliser la tension 3,3 [V] sur les pins du port GPIO sinon on les grille. J'en ai détruites deux avant d'apprendre cela !
On peut tirer jusqu'à environ 500 mA sur l'alimentation du Raspberry pi Model B+.
Sur l'alimentation 5,0 [V], on peut tirer jusqu'à 1,5 [A], si l'alimentation fournie au Raspberry pi est suffisante (>= 2,0 [A])


3) Information diverses sur le Raspberry pi   Top

raspberry.org le site de référence.
Beaucoup d'information est disponible depuis ce site Web.

Raspberry Pi sur Wikipedia.

cours raspberry pi du sem formation
Plusieurs informations sont disponibles depuis cette page.


4) Une suite de vidéos pour apprendre le langage C sur Raspberry pi   Top

***** Voici une suite de vidéos pour apprendre le langage C sur Raspberry pi *****

Learn C Programming on Raspberry Pi - 01 - Why Learn C
Learn C Programming on Raspberry Pi - 02 - Installing an IDE
Learn C Programming on Raspberry Pi - 03 - Hello World
Learn C Programming on Raspberry Pi - 04 - Libraries
Deux librairies C pour accéder au port GPIO :
1) bcm2835.h   c.f. www.airspayce.com/mikem/bcm2835
2) wiring Pi   non exploré plus loin.

Pour installer la librairie bcm2835 :
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.55.tar.gz
tar zxvf bcm2835-1.55.tar.gz
cd bcm2835-1.55
./configure
make
sudo make check
sudo make install

Speed comparison in Python versus C language.
Un oscilloscope mesure le signal généré en avec du Python et avec du C, pour les comparer.
Les deux codes sont donnés, ils sont très simples, de moins de 10 lignes.

Learn C Programming on Raspberry Pi - 05 - Blinking LED with GPIO
Un programme qui fait clignoter une LED
/*
c003-gpio-led-blink.c 
Fait clignoter une LED

Dans Geany, il faut aller dans :
Construire > Définir les commandes de construction
Compiler : gcc -Wall -c "%f" -l bcm2835 -lm
Construire : gcc -Wall -o "%e" "%f" -l bcm2835 -lm
Exécuter : sudo "./%e"
L'option -lm est utile si on utilise la librairie standard de math :
#include <math.h>
*/  
#include <stdio.h>  // se trouve dans /usr/include/c++/4.9/tr1
#include <bcm2835.h>  // se trouve dans /usr/local/include

#define pinOut18 18  // = RPI_GPIO_P1_12
#define pinOut 19  // = RPI_GPIO_P1_35

int main(int argc, char **argv) {
//===============================
// initialise the GPIO
if (!bcm2835_init()) return 1;

// indique que la PIN "pinOut" est en sortie
bcm2835_gpio_fsel(pinOut, BCM2835_GPIO_FSEL_OUTP);

unsigned int myDelay = 1000; // délais en [ms]. On aurait pu le déclarer : #define myDelay 1000

while (1) {
  bcm2835_gpio_set(pinOut); // allume la LED
  bcm2835_delay(myDelay);   // bcm_delayMicroseconds(utin64_t micros);  fait un delay en microsecondes.
  bcm2835_gpio_clr(pinOut); // éteint la LED
  bcm2835_delay(myDelay);
  }
} // main  

Learn C Programming on Raspberry Pi - 06 - char and int Varial Types
Learn C Programming on Raspberry Pi - 07 - Arrays Strings and Floating Point Variables
Learn C Programming on Raspberry Pi - 08 - Reading GPIO Inputs
Learn C Programming on Raspberry Pi - 09 - Reading GPIO Inputs
Un programme pour lire l'état d'une entrée
/*
c004-gpio-input.c
Lit une entrée

Dans Geany, il faut aller dans :
Construire > Définir les commandes de construction
Compiler : gcc -Wall -c "%f" -l bcm2835
Construire : gcc -Wall -o "%e" "%f" -l bcm2835
Exécuter : sudo "./%e"
*/  
#include <stdio.h>  // se trouve dans /usr/include/c++/4.9/tr1
#include <bcm2835.h>  // se trouve dans /usr/local/include

#define pinOut 19
#define pinIn  26
#define pinIn2  27

int main(int argc, char **argv) {
//===============================
// initialise the GPIO
if (!bcm2835_init()) return 1;

bcm2835_gpio_fsel(pinOut, BCM2835_GPIO_FSEL_OUTP); // indique que la PIN "pinOut" est en sortie
bcm2835_gpio_fsel(pinIn, BCM2835_GPIO_FSEL_INPT);  // indique que la PIN "pinIn" est en entrée
//bcm2835_gpio_set_pud(pinIn, BCM2835_GPIO_PUD_UP);  // Enable pull-up, par défaut, l'état de la PIN est UP

// Si la pinIn a été mise à 0, un flag est mis on.
// bcm2835_gpio_set_len(pinIn);  // Enable low detect on pinIn  
// bcm2835_gpio_set_hen(pinIn);  // Enable high detect on pinIn 


unsigned int myDelay = 1000; // délais en [ms]. On aurait pu le déclarer : #define myDelay 1000

while (1) {
//  if ((bcm2835_gpio_eds(pinIn) == 1) || (bcm2835_gpio_lev(pinIn2) == 1)) {
  if (bcm2835_gpio_lev(pinIn) == 1) {
    // Le bouton est pressé
    printf("Allume la LED\n");
    bcm2835_gpio_set(pinOut); // allume la LED
    bcm2835_delay(myDelay);   // bcm_delayMicroseconds(utin64_t micros);  fait un delay en microsecondes.
    bcm2835_gpio_clr(pinOut); // éteint la LED
    } // if
  } // while
} // main  

Learn C Programming on Raspberry Pi - 10 - Arithmetic Operators
Learn C Programming on Raspberry Pi - 11 - Comparisons and Decisions
Learn C Programming on Raspberry Pi - 12 - Logical Operators
Learn C Programming on Raspberry Pi - 13 - The switch statement
Learn C Programming on Raspberry Pi 14 for loops
Learn C Programming on Raspberry Pi - 15 - while loops
Learn C Programming on Raspberry Pi - 16 - do while loops
Learn C Programming on Raspberry Pi - 17 - Functions
Learn C Programming on Raspberry Pi - 18 - Pointers
Learn C Programming on Raspberry Pi - 19 - Structs
Learn C Programming on Raspberry Pi - 20 - typedef
File IO and time in C on Raspberry Pi
Un programme pour lire l'état d'une entrée
/*
c010-timestamp-file-io.c
Accès au temps et aux fichiers
*/  
#include <stdio.h>  // se trouve dans /usr/include/c++/4.9/tr1
#include <time.h>   // Librairie de traitement de temps

FILE *filePointer;

int main(int argc, char **argv) {
//===============================
time_t timeStamp; // Création d'un container qui contiendra la date et l'heure
time(&timeStamp); // Met dans le container "timeStamp" la date et l'heure actuel.
// La variable "timeStamp" est passée par référence, ainsi son contenu peut être modifié.
printf("Il est actuellement : %s\n", ctime(&timeStamp)); // affiche la date et l'heure
// "ctime" transforme la date et l'heure incluse dans "timeStamp" en un string.

filePointer = fopen("file_IO_test.txt", "a"); // Ouvre un fichier en écriture
// Le fichier est crée s'il n'existe pas.
// "a" signifie que le texte écrit sera Ajouté.
// En écrivant "w" au lieu de "a", le fichier existant est effacé (écrasé)

fprintf(filePointer, "\nCeci est un test exécuté à : "); // écrit dans le fichier
fprintf(filePointer, ctime(&timeStamp)); // écrit le string indiquant la date et l'heure

fclose(filePointer); // fermeture du fichier.
return 0;
} // main  

Benchmark Testing of microSD Cards for Embedded System Applications
Les résultats sont surprenants.
Samsung Evo+ donne la meilleure performance.
SanDisk Extreme Pro de classe U3 vient ensuite
SanDisk Ultra, de classe C10, vient ensuite
SanDisk Extreme, de classe U3, vient ensuite (2x moins rapide que SanDisk Extreme Pro !)
Autres.
Normalement, la classe U3 devrait être meilleur que la classe C10,
ce qui est visiblement pas le cas !
***** Fin de la série de vidéos *****

C-Library, for controlling the GPIO.
C-Library, une autre version.
À voir pour accès en langage C
Top 8 IDEs for Programmers
The 8 Coll Raspberry Pi Operating Systems / Projects for Beginners
How to Compile and Run a C/C++ code in Linux

SPI on Pi - Serial Peripheral Interface on Raspberry Pi 2 with bcm2835 library
Extending Python with C or C++
SPI on Pi - Serial Peripheral Interface on Raspberry Pi 2 with bcm2835 library


5) SSH et tightVNC, Virtual Network Computing (VNC)   Top

Installation d'un Virtual Network Computing (VNC) sur un Raspberry pi et un ordinateur.
Il peut être intéressant de voir l'écran d'un Rasperry pi sur l'écran d'un autre ordinateur. Par exemple, pour enregistrer dans une vidéo ce qui se passe à l'écran. Ceci se fait dans plusieurs tutoriels sur Raspberry pi. La qualité de la vidéo ainsi obtenue est bien meilleure.

Mon ordinateur tourne sous linux KUbuntu 16.04, pour Windows ou Mac, il faut adapter. Pour Mac, c.f. la vidéo référencée ci-dessous.
Dans un Terminal, sur le Raspberry pi, qui sera le serveur :
sudo raspi-config
La suite peut changer légèrement d'une version à l'autre.
Sélectionner : 5 Interfacing options
p2 SSH -> mettre à "oui", donc "enable"
p3 VNC -> mettre à "oui", donc "enable"
p8 GPIO -> mettre à "oui", donc "enable", seulement si on veut contrôler le GPIO à distance.

Installer un serveur VNC. "tightvnc" est une bonne option.
sudo apt-get install tightvncserver
Taper : tightvncserver
Il faudra choisir un mot de passe, qui sera utile lors de la connexion graphique.

Taper : hostname -I
Cela donne une adresse IP de la forme : 192.168.1.29 ou 172.16.0.2 ou similaire.
Il faut la noter, car elle sera utile sur l'ordinateur, le client, celui qui accédera à distance au Raspberry pi.
C'est tout ce qu'il y a à faire sur le Raspberry pi.

Dans un Terminal, depuis l'ordinateur, le client :
Taper : sudo apt-get update
Taper : sudo apt-get install xtightvncviewer
Il est possible qu'il soit déjà installé.
Taper : ssh 172.16.0.2 -l pi
Le numéro peut changer, comme indiqué précédemment. Il faut taper celui obtenue sur le serveur, Raspberry pi, lorsqu'on a tapé : "hostname -I".
Ne pas oublier la suite : " -l pi "
Attention, " -l pi ", c'est un "L" minuscule, pas le chiffre "1" !
Le mot de passe de l'utilisateur "pi" du Raspberry est demandé.
Si vous ne l'avez pas changé sur le Raspberry pi, le mot de passe est : raspberry
Normalement, vous êtes connecté au Raspberry pi, en mode terminal. C'est un début, la partie graphique arrive.

Tapez : tightvncserver
C'est une commande qui est donc lancée sur le Raspberry pi. Elle peut être tapée directement sur le Raspberry pi, ou depuis le Terminal qui s'est connecté par "ssh" précédemment.
Normalement, quelques lignes de réponses arrivent, avec la ligne :
"Log file is /home/pi/.vnc/pi:1.log"
Le ":1" est important pour la suite et pourrait être un :2 ou :3

Depuis un autre Terminal de votre ordinateur, tapez :
xtightvncviewer
Il faut taper l'adresse IP que vous aviez obtenu du Raspberry pi et que vous avez déjà utilisé une fois, exemple :
172.16.0.2:1
Le ":1" est important, cela peut être un ":2" ou ":3".
Je répète que l'adresse IP "172.16.0.2" change selon ce que vous avez obtenu précédemment sur le Rasperry pi en tapant "hostname -I".
Le mot de passe que vous avez choisi en tapant "tightvncserver" dans le Terminal du Rasperry pi vous est demandé ici.

Si tout c'est bien passé, une fenêtre s'ouvre, avec l'écran du Rasperry pi. Cela m'a pris des heures avant que tout fonctionne, il y a beaucoup de fausses informations sur le Web, ou des informations dépassées. Beaucoup de détails comptent, comme le "-l pi" et le ":1"
Un site important est celui de raspberry pi sur le Remote-access, Mais en le suivant, cela n'a pas fonctionné chez moi. En particulier, ils indiquent d'installer "realvnc-vnc-server", qui n'a pas fonctionné chez moi. J'ai donc préféré "tightvncserver".
lien sur la page précédente du "remote-access"
XVNC de doc.Ubuntu-fr.org
Doc sur tightvnc.com
VNC CONNECT realVNC, pour connexion à travers Internet.

L'essentiel de ce qui précède, je l'ai appris sur la vidéo suivante :
Remotely Access a Raspberry Pi Desktop from MAC OSX with VNC.
Très utile pour contrôler un Raspberry pi depuis un autre ordinateur.
En particulier, on peut voir l'écran du Raspberry pi sur l'écran de l'ordinateur principal et ainsi on peut enregistrer l'écran, sans devoir le filmer. La qualité de la vidéo est ainsi bien meilleure.

Quelques informations supplémentaires :
1) Dans le terminal qui est connecté par "ssh" au Raspberry pi, on peut fermer la connexion en tapant :
tightvncserver -kill :1
2) On peut changer la taille de la fenêtre graphique de connexion au Rasperry pi, avant la connexion graphique, en tapant dans le terminal ouvert en ssh :
tightvncserver -geometry 1600x1200
3) Le curseur par défaut est une croix, ce qui m'a déplu et pris deux heures à modifier.
Une fois que toute connexion est arrêtée, depuis le Raspberry pi, il faut éditer le fichier qui se trouve dans /home/pi/.vnc et qui s'appelle xstartup
Le dossier en question (.vnc) est un dossier caché, comme tous les dossiers qui commencent par un "."
Depuis le gestionnaire de fichiers, dans le menu "Voir", on peut demander d'afficher les fichiers cachés Ctrl+H
Un clique droit sur "xstartup" permet de l'ouvrir dans un éditeur de textes. Voici les lignes que j'ai :
#!bin/sh

xrdb $HOME/.Xresources
xsetroot -solid grey -cursor_name left_ptr
...
/etc/X11/Xsession
Les "..." sont des lignes que je n'ai par recopiées.
La partie -cursor_name left_ptr a été ajoutée par moi-même.
Elle permet de modifier le curseur de base. Ci-dessous, il y a d'autres curseurs possibles.
man xsetroot donne des informations.
J'ai également modifié le fichier : "/etc/vnc/xstartup"
Pour cela, il faut l'éditer en mode super-utilisateur. Sur le Raspberry pi, dans un Terminal, j'ai tapé : sudo gedit, mais "sudo geany" ou "sudo" un autre éditeur de texte est bon aussi. J'ai ensuite ouvert le fichier "/etc/vnc/xstartup" et fait la même adjonction qu'indiqué plus haut, j'ai ajouté "-cursor_name left_ptr" aprés "xsetroot -solid grey".
Je ne suis pas sûr que cela était nécessaire, mais après deux heures d'essai, j'étais content d'avoir un curseur en forme de flèche. Il reste un "petit point" au bout du curseur, mais je m'en accommode.
xsetroot -cursor_name draped_box
xsetroot -cursor_name hand1
xsetroot -cursor_name hand2
xsetroot -cursor_name iron_cross
xsetroot -cursor_name left_ptr
xsetroot -cursor_name plus
xsetroot -cursor_name top_left_arrow
xsetroot -cursor_name watch
c.f. /usr/include/X11/cursorfont.h   ??? je n'ai pas trouvé chez moi.
4) Finalement, tout ce qui précède peut, être utile pour enregistrer l'écran du Raspberry pi. Alors comment faire ?
J'indique à l'adresse suivante des logiciels qui enregistre bien l'écran ou une partie, comme on veut :
Linux, quelques logiciels
Cherchez SimpleScreenRecorder, c'est celui que j'ai utilisé et que je préfère pour enregistrer l'écran.
En voici d'autres : RecordMyDesktop, Vokoscreen, Kazam.
Je n'ai pas ou peu d'expérience avec ces logiciels, vu que "SimpleScreenRecorder" m'a entièrement satisfait.
5) Plus récemment, j'ai trouvé ces explications, qui me semblent très bonnes :
installer thightvncserver.

6) x11VNC, prendre le contrôle du serveur (Raspberry) avec une connexion locale   Top

tightVNC, est bien, mais on ne prend pas vraiment le contrôle de l'ordinateur distant (le serveur, le Raspberry pi).
x11VNC permet de contrôler l'ordinateur distant, d'agir sur le pointeur de la souris, d'activer une caméra connectée au Raspberry pi, de voir l'image, de prendre le contrôle du port GPIO, etc.
Voici un blog qui explique comment :
Prenez VRAIMENT la main à distance sur votre Raspberry Pi avec x11VNC
SSH port forwarding
x11vnc : contrôler un ordinateur à distance du site ubuntu-fr

Pour installer x11vnc, depuis un Terminal, taper : sudo apt install x11vnc

Malgré qu'il est déconseillé à plusieurs endroits d'installer realVNC, je l'ai installé et testé durant une heure, en m'inscrivant, mais sans arriver à me connecter. Il y a des erreurs dans leur documentation et leurs explications sont lacunaires. En conclusion j'ai abandonné.

Résumé des actions à faire pour la connexion locale

1) Sur le Raspberry pi, taper : x11vnc -passwd monpassword -display :0
"monpassword" doit être remplacé par le mot de passe que vous choisissez pour cette connexion.
Pour une connexion locale, l'option "-passwd monpassword" n'est pas importante.
2) Sur l'ordinateur distant, taper : vncviewer 172.16.0.2:0
"172.16.0.2" est à adapter selon votre cas.
Le :0 est à adapter suivant le ":?" qui a été affiché sur le Raspberry pi dans l'étape 1).
3) Entré le mot de passe défini ci-dessus. "monpassword" dans cet exemple.
Vous contrôlez votre Raspberry pi en mode local, c'est pratique.

7) x11VNC, prendre le contrôle à travers Internet, en connexion non locale   Top

Pour se connecter sur le Raspberry pi par VNC depuis un ordinateur distant (client), donc pas en connexion locale (Intranet), mais à travers Internet, il faut configurer son routeur pour rediriger des "ports" sur l'adresse IP locale du Raspberry.
L'adresse IP locale est généralement du type : 192.168.0.?
Le "0" peut aussi être "1" ou plus rarement autre.
Le "?" est un nombre entre 0 et 255.
Chez moi, ayant deux routeurs à la suite, mon IP locale est 172.16.0.2.
Le ".0.2" peut changer suivant la connexion que j'utilise.
Sous linux, taper hostname -I ou ifconfig depuis un terminal pour avoir l'adresse IP locale.
Sous Windows, dans une "console", on peut taper "ifconfig".

"x11vnc" utilise un port entre 5900 et 590?.
Il faut donc rediriger ce port sur l'adresse IP local du serveur (=le Raspberry pi)
La manière de procéder dépent du routeur que vous avez. Voici un exemple de manière de procéder :
Dans l'URL (adresse) d'un navigateur, taper : 192.168.0.1
Le "0.1" dépend de votre routeur, chez moi j'ai même "172.16.0.1" comme adresse.
Le navigateur doit être sur un ordinateur connecté au routeur, par exemple le Raspberry pi.
Le routeur vous demande un nom et un mot de passe.
À vous de connaître ces informations. Souvent le nom est "admin" et le passe "admin" ou "1234" ou "password".
Dans le routeur, en mode "avancé", chercher "port forwarding" ou "redirection de port"
Donner un nom à cette redirection.
Ce nom est arbitraire, il sert à vous souvenir de la raison d'être de cette redirection. J'ai donné le nom : "Raspberry 172.16.0.2".
Plage de ports : 5900 à 5904
J'ai dû choisir que je sélectionne une plage de ports et pas un seul port. Je me suis arrêté à 5904, mais j'aurais pu aller jusqu'à 5909. Principalement les ports 5900, 5901 et parfois 5902 seront utilisés. Cela dépend de vos tests et erreurs qui ne ferment temporairement pas certaines connexions SSH.
Protocole : tcp/udp
"tcp" est le protocole de communication utilisé sur Internet.
Server IP Adresse : 172.16.0.2
C'est l'adresse que vous avez obtenue en tapant "hostname -I" dans un terminal du Rasperry pi.
Chez moi, j'ai dû refaire les mêmes manipulations sur mon deuxième routeur, en tapant "172.16.0.1" dans l'URL d'un navigateur, depuis un ordinateur connecté au routeur.
On peut quitter la configuration du routeur.
Ces manipulations ne sont à faire qu'une fois.
Attention, elles ouvrent une connexion possible à votre ordinateur depuis l'extérieur, à travers Internet. Si on oublie que l'on a fait ces redirections, que l'on branche un autre ordinateur à la place du Raspberry pi, qu'il autorise l'accès en mode serveur et qu'il n'est pas protégé pas un mot de passe, l'ordinateur en question peut être contrôlé par une personne pas forcément bien intentionnée.
Pour le Raspberry pi, ce n'est pas grave.
Je ne m'y connais pas assez pour savoir les risques réels de connexion malveillante.
Il faut installer "x11vnc" sur le Raspberry pi, en tapant depuis un Terminal : sudo apt-get install x11vnc

Une fois que cette configuration unique est faite :
Depuis le Raspberry pi, taper : "x11vnc -passwd monpassword -display :0"
"monpassword" doit être remplacé par le mot de passe que vous choisissez pour cette connexion.
Si vous omettez "-passwd monpassword" la connexion pourra se faire, mais sans mot de passe. Temporairement, ou si vous êtes en connexion locale, sur votre propre router, cela ne dérange pas. Si la connexion est à travers l'Internet, n'importe quelle personne qui connaissant votre adresse IP pourra se connecter !
Ceci met le Raspberry pi en mode serveur.
Il vous demande de définir un mot de passe de la connexion vnc, qui est en principe différent de celui de l'utilisateur "pi".
Sur "Raspbian", l'utilisateur par défaut s'appelle "pi" et le mot de passe par défaut est "raspberry".
Si on fait des connexions tels qu'indiqués ici, il est conseillé de changer le mot de passe par défaut du Raspberry pi.
Depuis le Raspberry pi trouvez son adresse IP publique.
Voici 3 manières de connaître l'adresse IP publique de votre ordinateur :
Mon-ip.com
checkip.org
(Mon-ip en php)
Speed test de sourceforge.net
Depuis un ordinateur il faut avoir installé x11vnc par exemple avec :
sudo apt-get install x11vnc   ou
sudo apt-get install xtightvncviewer
Cette installation n'a besoin d'être faite qu'une seule fois. Si vous retapez une deuxième fois ces instructions, cela n'a pas d'influence néfaste, soit une indication que la dernière version a déjà été installée apparaît, soit une mise à jour de la version apparaît. Une confirmation vous est demandées.
Depuis un ordinateur distant connecté à Internet tapez : "x11vncviewer 188.60.59.177:0"
L'URL "188.60.59.177" doit être remplacée par celle obtenue à l'aide d'un des liens ci-dessus.
Le mot de passe de la connexion VNC vous est demandé. Ce n'est pas celui de l'utilisateur pi du Raspberry pi, mais celui qui a été défini sur le Raspberry pi lorsqu'on a tapé "x11vnc -display :0".
Voilà, la connexion distance devrait se faire.
Vous contrôlez exactement ce qui se passe sur l'écran du Raspberry pi. Si une caméra lui est branchée dessus, avec le logiciel cheese Vous voyez sur votre écran distant la vidéo que "film" la caméra.

C'était long à écrire et certainement à lire, mais une fois que tout a fonctionné, c'est rapide.

Résumé des actions à faire pour la connexion

1) Sur le Raspberry pi, taper : x11vnc -passwd monpassword -display :0
"monpassword" doit être remplacé par le mot de passe que vous choisissez pour cette connexion.
2) Sur l'ordinateur distant, taper : vncviewer 188.60.59.177:0
"188.60.59.177" est à adapter selon votre cas.
3) Entré le mot de passe défini ci-dessus. "monpassword" dans cet exemple.
Vous contrôlez votre Raspberry pi à distance ! MAGIQUE !

8) SSH, connexion à distance, à travers Internet   Top

Il reste une amélioration possible, qui est de lancer le serveur depuis l'ordinateur hôte et non depuis le Raspberry pi.
Une connexion ssh permet de faire cela.

SSH signifie "Secure SHell", sert à avoir une connexion à distance sécurisée.

Cas où la connexion est locale.

C'est le cas si votre ordinateur et votre Raspberry pi sont connectés au même routeur.
Elle peut être établie depuis l'ordinateur hôte, en tapant : ssh 172.16.0.2 -l pi
"172.16.0.2" est l'IP local du Raspberry pi. Elle doit être adaptée en fonction de votre situation.
Cela a pour effet que votre console devient un Terminal du Raspberry pi.
Depuis un autre Terminal, tapez vncviewer 172.16.0.2:0
Entrez le mot de passe, et vous prenez le contrôle du Raspberry pi.
Le ":0" peut être un ":1" ou ":2", suivant ce que la connexion "ssh" vous a indiqué.
En principe pour prendre contrôle, il faut que ce soit une ":0".

En tapant : ssh -X 172.16.0.2 -l pi, cela permet de lancer des applications graphique depuis le Terminal qui contrôle le Raspberry pi.
Par exemple :
idle3, lancera Python du Raspberry pi sera lancé en mode graphique.
gedit lancera l'éditeur de textes "gedit", en mode graphique.

Je conseille l'installation de Midnight Commander, en tapant sudo apt-get install mc
On l'exécute dans un terminal en tapant mc
C'est un gestionnaire de fichiers en mode texte (semi-graphique), très bien fait, qui simplifie la gestion de fichiers.

Résumé des actions à faire pour la connexion locale

1) Sur le serveur (Raspberry pi), il suffit de le démarrer.
2) Sur le client, dans un Terminal taper : ssh 172.16.0.2 -l pi   ou
2') Sur le client, dans un Terminal taper : ssh 172.16.0.2 -l pi -p 5904
"172.16.0.2" est à adapter selon votre cas.
"-p 5904" si le port du Raspberry pi a été redirigé.
3) Tapez le mot de passe de l'utilisateur "pi" du Raspberry pi. Par défaut c'est "raspberry".
4) Taper : x11vnc -passwd monpassword -display :0
"monpassword" est un mot de passe de votre choix.
5) Sur le client, dans un autre Terminal, taper : vncviewer 172.16.0.2:0
"172.16.0.2" est à adapter selon votre cas.
6) Entré le mot de passe défini ci-dessus. "monpassword" dans cet exemple.
Vous contrôlez votre Raspberry pi à distance ! MAGIQUE !
°) Si le mot de passe est enregistré dans le fichier "pass.txt" :
vncviewer 172.16.0.2:0 -autopass < pass.txt
7) En tapant ssh -X 172.16.0.2 -l pi il y a la possibilité d'exécuter des applications graphiques depuis le terminal.
Par exemple, en tapant cheese cela lance une fenêtre graphique qui montre sur votre écran ce que voit la Webcam.
Il faut avoir installé "cheese" sudo apt install cheese

Puisqu'il suffit de démarrer Raspberry pi, sans rien faire d'autre de son côté,
il n'est donc plus nécessaire d'avoir ni un écran, ni un clavier ni une souris connectés au Raspberry pi !

Cas où la connexion est à travers Internet.

C'est le cas si votre ordinateur et votre Raspberry pi sont connectés à Internet à travers des routeurs différents.
Pour que cela fonctionne, il faut avoir redirigé le port correspondant de votre routeur sur l'adresse IP locale (172.16.0.2) de votre Raspberry pi.
Le port par défaut du SSH est le 22.
Pour ma part, j'ai déjà redirigé le port 5904, attaché au Raspberry pi, sur l'IP locale 172.16.0.2. C.f. quelques explications ci-dessus, sur la "redirection de ports" ( port forwarding )
Donc je vais pouvoir utiliser ce port 5904 pour la connexion ssh.
Il faut aussi modifier le fichier /etc/ssh/sshd_config.
Pour cela, il faut être en mode super-utilisateur (root). Taper sudo gedit /etc/ssh/sshd_config.
En supposant que l'éditeur "gedit" a été installé.
il faut changer le numéro de port (22 par défaut" en 5904 (pour moi).
Après ce changement de port, redémarrer le Raspberry pi.
Maintenant, il n'y a plus rien à faire du côté du Raspberry pi, le démarrer suffit !!!
Il n'est donc plus nécessaire d'avoir ni un écran, ni un clavier ni une souris connectés au Raspberry pi !

Tout le reste se fait depuis l'ordinateur client, qui contrôlera le Raspberry pi.

Résumé des actions à faire pour la connexion à travers Internet

1) Sur le serveur (Raspberry pi), il suffit de le démarrer.
2) Sur le client, dans un Terminal taper : ssh 188.60.59.177 -l pi -p 5904
"188.60.59.177" est à adapter selon votre cas.
5904 est le port du Raspberry pi redirigé.
3) Tapez le mot de passe de l'utilisateur "pi" du Raspberry pi. Par défaut c'est "raspberry".
4) Taper : x11vnc -passwd monpassword -display :0
"monpassword" est un mot de passe de votre choix.
5) Sur le client, dans un autre Terminal, taper : vncviewer 188.60.59.177:0
"188.60.59.177" est à adapter selon votre cas.
6) Entré le mot de passe défini ci-dessus. "monpassword" dans cet exemple.
Vous contrôlez votre Raspberry pi à distance ! SUPER MAGIQUE !

Quelques remarques :
1) Si vous sortez de la fenêtre graphique, il faudra reprendre le point 4) ci-dessus, dans le premier Terminal et le point 5) dans l'autre Terminal.
2) Si vous tapez dans le premier Terminal sudo reboot   ou   sudo shutdown -r now, le Raspberry pi redémarre. Cela prend quelques dizaines de secondes. Après ce redémarrage, vous pouvez vous reconnecter en suivant à partir du point 2) ci-dessus.
Même remarque si vous quittez le terminal, ou allez sur un autre ordinateur.
3) Le ":0" peut être un ":1" ou ":2", suivant ce que la connexion "ssh" vous a indiqué.
En principe pour prendre contrôle, il faut que ce soit une ":0".
4) Je répète, un écran, un clavier et une souris ne sont plus nécessaires du côté du Raspberry pi !
5) Si vous êtes fatigué de devoir taper le mot de passe avec vncviewer, voici une solution :
créer un fichier "pass.txt" contenant votre mot de passe "monpassword".   Tapez :
vncviewer 188.60.59.177:0 -autopass < pass.txt
6) x11vnc -passwd monpassword -display :0 -geometry 1280x720 permet de définir la taille qu'aura l'écran une fois que le client se sera connecté avec vncviewer. Ce n'est donc pas le client qui choisi la taille de la fenêtre qui représentra l'écran du raspberry, mais c'est le serveur (Raspberry pi).
7) Si on a changé de carde micro-SD sur un Raspberry pi, branché sur la même adresse IP, il faut effacer une signature, qui est stockée dans $HOME/.ssh/known_hosts
On peut taper : ssh-keygen -f "$HOME/.ssh/known_hosts" -R 172.16.0.8
172.16.0.8 doit être l'adresse IP du Raspberry pi.
8) En tapant ssh -X 172.16.0.2 -l pi il y a la possibilité d'exécuter des applications graphiques depuis le terminal.
Par exemple, en tapant cheese cela lance une fenêtre graphique qui montre sur votre écran ce que voit la Webcam.
Il faut avoir installé "cheese" sudo apt install cheese
9) Si votre ordinateur et votre Raspberry pi sont branchés sur le même routeur, vous pouvez taper sur votre ordinateur : hostname -I, ce qui vous donnera l'IP local de votre ordinateur, par exemple : 172.16.0.5.
Pour connaître l'IP local de votre Raspberry pi, tapez nmap 172.16.0.* et tous les appareils connecté à votre routeur ayant une IP locale commençant par "172.16.0" seront détectés et leur IP locale sera affichée.

Cette référence peut peut-être vous aider :
Chapter 13. scp, sftp et les tunnels avec ssh
De "linux-france.org", des explications sur le ssh.
Un énorme Tutoriel sur les serveurs, de "linux-france.org

9) SCP, SFTP, copie de fichiers à distance, à travers Internet   Top

Juste quelques lignes d'information sur la copie de fichiers, du serveur vers le client et/ou du client vers le serveur.
Deux logiciels standards existent pour cela :
scp pour une copie de fichiers, similaire à la commande "cp".
sftp pour un transfert de plusieurs fichiers, similaire à la commande "ftp".
Une très bonne information est donné sur le site Web de "doc.ubuntu-fr.org" : ssh, scp, sftp

Pour copier un fichier "aaa.txt" du client vers le serveur (Raspberry pi), dans un fichier "bbb.txt", depuis un terminal tapez :
scp -P 5904 aaa.txt   pi@172.16.0.2:/home/pi/bbb.txt
Il faut écrire le mot de passe de l'utilisateur "pi" (raspberry) par défaut.

Pour copier un fichier "ccc.txt" du serveur (Raspberry pi), vers le client, dans un fichier "ddd.txt", depuis un terminal tapez :
scp -P 5904 pi@172.16.0.2:/home/pi/ccc.txt   ddd.txt
Il faut écrire le mot de passe de l'utilisateur "pi" (raspberry) par défaut.

Pour ne pas devoir retaper le mot de passe à chaque fois, installer sshpass (sudo apt-get install sshpass), puis :
sshpass -p "raspberry" scp -P 5904 aaa.txt   pi@172.16.0.2:/home/pi/bbb.txt
ou dans le sens serveur -> client :
sshpass -p "raspberry" scp -P 5904 pi@172.16.0.2:/home/pi/ccc.txt   ddd.txt
"raspberry" doit être remplacé par le bon mot de passe.


Divers, à placer au bon endroit, lequel ?
Information sur des logiciels de sauvegarde.
Gitso, pour aider une personne à distance, du même style que Teamviewer, logmein, etc. C.f. : Alternatives to Gitso


Plan du Site : Home   arrow   raspberrypi.html ( = http://www.juggling.ch/gisin/raspberrypi/raspberrypi.html )


Page mise à jour le 22 février 2018 par Bernard Gisin     ( Envoyer un e-mail )
Hébergement par : www.infomaniak.ch