Raspberry Pi – Prise en main

0. Préface

Ce tuto est rédigé sous la forme d’un guide conducteur pour l’enregistrement d’une dédiée.

On va se concentrer sur le PI3 pour les détails

1. Qu’est ce que le raspberry pi

Le hard : rappel des composants intégrés sur la carte

  • A 1.2GHz 64-bit quad-core ARMv8 CPU
  • 802.11n Wireless LAN
  • Bluetooth 4.1
  • Bluetooth Low Energy (BLE)

Comme le PI2, Il a aussi

  • 4 USB ports
  • 40 GPIO pins
  • Full HDMI port
  • Ethernet port
  • Combined 3.5mm audio jack and composite video
  • Camera interface (CSI)
  • Display interface (DSI)
  • Micro SD card slot (now push-pull rather than push-push)
  • VideoCore IV 3D graphics core (GPU)

Le port GPIO

  • I2C
  • SPI
  • UART
  • PWM

Source :

  • https://pinout.xyz/
  • https://www.raspberrypi.org/learning/hardware-guide/components/raspberry-pi/
  • https://fr.wikipedia.org/wiki/Raspberry_Pi

Autonomie et alimentation

Le PI 3 pèse 45g

On alimente le pi via le port micro usb ou via les pin 2 et 6.

Pour un robot autonome, on peut facilement utiliser un batterie de rechargement de téléphone. Si la batterie peut sortir au moins 1,5A.

Sources :

 

2. Installation du système

Sur raspberry, on peut faire tourner des distributions linux pour faire dur desktop, du multimedia, du serveur et même windows IOT core.

-> https://www.raspberrypi.org/downloads/

Pour une application robotique c’est à dire embarquée, on va utiliser la Raspbian LITE.

Raspbian, c’est la distrib officielle. Elle est dérivée de Debian et comporte les drivers utiles au fonctionnement de la PI.

LITE, c’est la version sans GUI. Plus légère, on y accède par un terminal en ligne de commande.

Il y 2 méthode pour créer sa SD :

  • NOOB (New Out Of the Box Software), une SD pré-installée
  • écrire sois-même l’OS sur la carte SD

Installation de Raspbian sur la carte SD. -> https://www.raspberrypi.org/documentation/installation/installing-images/README.md

Installation et utilisation « headless » pour application robotique.

Headless, c’est à dire pas de clavier, pas de souris, pas d’écran branché sur le PI. On peut laisser un disque USB, au besoin 🙂

A la place, on va utiliser un câble réseau puis le wifi.

Il faut avoir un routeur qui fait du dhcp.

On branche donc le PI au réseau domestique par le câble pour l’initialisation. On boot le PI. On attend 90s.

Il faut maintenant trouver l’IP de la PI.

  • Avec la commande arp -a sur un ordi relié au même réseau
  • Avec l’interface de son routeur, on peut trouver la liste des appareils connectés.

On peut maintenant se connecter au raspberry sur un terminal Putty.

login / mot de passe par défaut : pi / raspberry

Sur un mac ou sur linux, la commande est

ssh pi@www.xxx.yyy.zzz
où www.xxx.yyy.zzz est l’adresse IP de la PI.

A partir de là, on est à la maison.

Activer le wifi

Scanner le réseau : sudo iwlist wlan0 scan

Il faut éditer le fichier

sudo vi /etc/wpa_supplicant/wpi_supplicant.conf
network={
    ssid="testing"
    psk="testingPassword"
}

En wifi, le PI aura une autre adrese IP sur votre réseau. Pour trouver cette adresse, même méthode qu’au dessus.

Sinon, utiliser le commande ifconfig et cherchez l’adresse IP dans la rubrique wlan0.

Le mieux étant de configurer votre routeur pour qu’il assigne toujours la même IP aux périphériques. Il utilise l’adresse MAC.

Toutes les infos : https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md

Nota bene

NB. On peut aussi se servir d’un rasbberry en point d’accès wifi avec service dhcp pour une utilisation en extérieur, sans routeur domestique.

NB. Ce raspberry ainsi configuré peut aussi servir à démarrer un raspberry headless 😉

3. Se sentir chez soi sur son PI

Faire un peu de ménage

sudo apt-get update

sudo apt-get upgrade

NB : sudo -s pour passer root et ne plus taper sudo

raspi-config, expand filesystem.

Un peu de rangement

Les petites commandes bien pratiques dans linux : sudo -s, vim, htop, alias, ssh sans mot de passe, savoir que ssh fourni un ftp sécurité (sftp)

Pour ouvrir un session shell en root :

$sudo -s

=> ça évite de taper sudo à chaque fois.

vim apporte des améliorations au vi qu’on connais déjà ou pas mais qui sauve la vie.

apt-get install vim

=> il apporte la couleur, un mode édition plus « convivial » et un scroll à la molette.

htop améliore la commande top indispansable

apt-get install htop

alias permet d’être fainéant. par exemple,

alias ll='ls -la'

=>c’est des commandes que tu peu placer dans ~/.bashrc pour les retrouver à chaque fois que ouvre un shell.

Ne plus taper le mot de passe

Toujours pour les fainéants, il est possible de ne pas avoir à saisir son mot de passe à chaque fois qu’on se connecte à son raspberry via ssh.

=> http://www.generation-linux.fr/index.php?post/2008/02/26/79-se-connecter-en-ssh-sans-demande-de-mot-de-passe

SFTP pour les fichiers

Ce même service sshd qui tourne déjà sur ton raspberry et qui te permet de t’y connecter de manière sécurisé, te permet aussi de transférer des fichiers.

=> bon à savoir, tu as déjà un serveur ftp sécurisé installé.

Se faire un petit plaisir

Parce qu’on a bien bossé.

En python : un hello world

En python : capter un bouton avec un pullup

 

4. Gestions de IO

Niveau logiciel

On peut programmer le port GPIO avec tous les langages.

Par exemple directement en shell, dans le terminal ssh.

#!/bin/sh
 
# GPIO numbers should be from this list
# 0, 1, 4, 7, 8, 9, 10, 11, 14, 15, 17, 18, 21, 22, 23, 24, 25
 
# Note that the GPIO numbers that you program here refer to the pins
# of the BCM2835 and *not* the numbers on the pin header. 
# So, if you want to activate GPIO7 on the header you should be 
# using GPIO4 in this script. Likewise if you want to activate GPIO0
# on the header you should be using GPIO17 here.
 
# Set up GPIO 4 and set to output
echo "4" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio4/direction
 
# Set up GPIO 7 and set to input
echo "7" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio7/direction
 
# Write output
echo "1" > /sys/class/gpio/gpio4/value
 
# Read from input
cat /sys/class/gpio/gpio7/value 
 
# Clean up
echo "4" > /sys/class/gpio/unexport
echo "7" > /sys/class/gpio/unexport
Accès au GPIO en shell

Source :

Niveau matériel

/!\ Si le PI est alimenté en 5V, les PIN fonctionnent en 3,3V !!!

Il faut un adaptateur 3,3 <-> 5V pour communiquer avec un arduino par exemple. A noter qu’il existe des arduino en 3,3V.

6. communication USB

Le port USB du PI est en 5V (à la différence du port GPIO).

Il permet de relier une webcam, un clavier une souris … comme un PC classique.

Compilation et versement sur Arduino.

Com arduino avec Serial.

5. Communication UART

Je suppose que tu fais référence aux pin Tx/Rx et au câble USB-Série ?

Accéder au raspberry via ce canal avec putty.

 

7. Communication I2C

 

En root : apt-get update et apt-get upgrade. Et même apt-get dist-upgrade si ça ne donne rien.

En root, activer i2c avec la commande raspi-config

Ensuite, il faut les lib python :

sudo apt-get install python-smbus
sudo apt-get install i2c-tools

La blacklist : /etc/modprobe.d/raspi-blacklist.conf

Pour vérifier la configuration I2C, si tu as un modèle B : sudo i2cdetect -y 1

Com avec arduino

 

8) Communication SPI 

Com avec arduino

9) configurer le pi3 en point d’accès wifi

Y accéder depuis un smartphone.

10) exposer une interface web depuis le robot

Le plus courant est apache / php mais je suis tenté de le faire avec NodeJS.

11) Raspberry à Raspberry

Com via websocket et NodeJS

12) Utiliser tout ça dans un robot

Sans parler de Ash, on peut présenter le rpi en commande d’un arduino. (la tête et les jambes)