Ce document rapporte les étapes nécessaires à l'utilisation d'un Raspberry Pi dans le cadre de travaux pratiques, comme celui-ci du suivi de consommation électrique (non encore en ligne).
Pour des travaux courants, une solution est de télécharger NOOB, qui inclut plusieurs distributions, dont Raspbian et Arch : [[http://www.raspberrypi.org/downloads|NOOB]] On peut aussi télécharger directement Arch.
Préparation de la carte SD pour NOOB :
mkdosfs /dev/sdb1 # vérifier que le périphérique correspondant à la carte est sdb...
puis dézipper NOOB…zip sur la carte. Mettre la carte dans le RPi et le démarrer.
Choisir l'installation de Arch, puis se loguer avec root
/root
.
# loadkeys fr # clavier français # passwd root # changer le pass root # pacman -Syy # pacman -Syu # mettre à jour la distribution
KEYMAP=fr # fr-latin9 ? #FONT=lat9w-16 #FONT=ter-v22n #FONT_MAP=8859-1_to_uni
(à la place on peut aussi utiliser localectl set-keymap –noconvert fr-latin9
[...] fr_FR.UTF-8 UTF-8 fr_FR ISO-8859-1 fr_FR@euro ISO-8859-15 [...]
LANG=fr_FR.UTF-8 LC_COLLATE=C
setxkbmap fr
puis
Section "InputClass" Identifier "evdev keyboard catchall" MatchIsKeyboard "on" MatchDevicePath "/dev/input/event*" Driver "evdev" Option "XkbLayout" "fr" EndSection
Paquetages à installer :
python python-pyserial sqlite python-pip openssh sudo vim
Ajouter un utilisateur
useradd -m <nom_user> # changer <nom_user> ici et dans la suite
Modifier le fichier sudoers (confor)
<nom_user> ALL=(ALL) ALL <nom_user> ALL = NOPASSWD: /sbin/shutdown
Ajout de paquetages Python :
bottle
(framework Web)dateutil
(manipulation de dates)six
?pyserial
(lecture port série)Ces paquetages peuvent être installés par un :
pip install bottle dateutil pyserial ...
Connexions à distance
Copier la clé .ssh/id_dsa.pub
de l'utilisateur (de son poste) dans .ssh/authorized_keys
sur le Raspberry :
scp ~/.ssh/id_dsa.pub <nom_user>@<IP_RASPBERRY>:.ssh/authorized_keys
ou si le <nom_user>
est le même sur les deux machines :
ssh-copy-id <IP_RASPBERRY>
Heure locale :
sudo ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
Pour lire le port série sans être root
, éditer /etc/group
:
uucp:x:14:<nom_user>
ajout aussi dans le groupe tty
Modifier vimrc pour l'édition Python :
:syntax enable autocmd Filetype python setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4 autoindent # Ajouter smartindent ?
La distribution Arch Linux utilise Systemd pour gérer les services (plutôt que SysV sur une Debian (MAJ : maintenant les debian utilisent aussi systemd)).
Les commandes utiles pour gérer les services sont systemctl
et journalctl
.
À un service correspond un fichier de configuration dans /etc/systemd/system
.
Supposons que le serveur Web Python soit : /home/signac/COMPTEUR/web.py
. ON ajoute ce fichier de configuration:
[Unit] Description=Web Releve compteur [Service] WorkingDirectory=/home/signac/COMPTEUR ExecStart=/home/signac/COMPTEUR/web.py Restart=always RestartSec=30 User=signac Group=users [Install] WantedBy=multi-user.target
sudo systemctl start compteurweb
: démarre le servicesudo systemctl status compteurweb
: état du servicesudo systemctl stop compteurweb
: arreête le servicesudo systemctl enable compteurweb
: démarrera le service au boot automatiquementLes logs apparaissent sur l'écran console par défaut : Aller dans /boot/cmdline.txt et virer console=tty1
Dans un des menus raspi-config (debian) on peut activer la console sur le port série. Il est alors possible d'utiliser un cable FTDI 3.3V pour relier le RPI au PC.
La doc des câbles FTDI est ici : [[http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_TTL-232R_CABLES.pdf|datasheet]].
Attention, dans les câbles FTDI 3.3V, seuls les signaux logiques sont convertis en 3.3V. La broche +VCC reste en 5V (si l'ordi fournit du 5V ce qui est généralement le cas).
Côté série du câble FTDI, repérer : Orange (TX), Jaune (RX) et Noir (GND). Le fil TX du câble doit être relié au RX du RPI, le fil RX du câble au TX du RPI.
Le fil orange va donc sur la broche 10, le jaune sur la 8 et le noir sur la 6.
screen /dev/ttyUSB0 115200 Ctrl+a d (detach) Ctrl+a K y (kill) screeen -ls screeen -r XXXX (reattach)