Changes between Version 1 and Version 2 of Peri19_T01


Ignore:
Timestamp:
Feb 15, 2019, 1:38:10 PM (7 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Peri19_T01

    v1 v2  
    1 = Hello World! Raspberry PI 1 et Arduino
    2 {{{
    3 #!protected
    4 == Préambule
     1= 1. Préambule
    52
    63Au long de ce module, vous allez utiliser 4 nano-ordinateurs :
     
    2219* Lecture d'une valeur analogique.
    2320
    24 === Plateforme des TP pour les Raspberry Pi
     21= 2. Hello World! Raspberry PI 1
     22
     23**Plateforme des TP pour les Raspberry Pi**
    2524
    2625[[Image(htdocs:png/plateforme-peri-raspberry.png, width=700px, nolink)]]
    2726
    28 Pour exécuter votre programme sur une carte Raspberry Pi, vous devez vous connecter en SSH sur une carte Raspberry Pi en passant par le routeur peri. Le routeur a deux adresses: `132.227.102.36` du coté laboratoire et `192.168.1.1` de l'autre coté. Le routeur crée un sous-réseau (`192.168.1.x`) où sont connectées les cartes. Les cartes sont numérotées de `20` à `26` plus des cartes étudiants (ici n°30), le routeur a été programmé de telle sorte que l'adresse internet de la carte n°`X` ait comme adresse 192.168.1.`X` (par exemple la carte n°`20` a comme adresse sur ce réseau `192.168.1.20`).
    29 Pour faire ça, le firmware du routeur a été remplacé par '''[[http://www.dd-wrt.com/site/index | dd-wrt]]''' qui permet ce type de mode.  Le routeur a été également été programmé pour que tous les paquets entrants sur le port `5000`+`X` de l'adresse `132.227.102.36` soient routés vers l'adresse `192.168.1.X`.
     27Pour exécuter votre programme sur une carte Raspberry Pi, vous devez vous connecter en SSH sur une carte Raspberry Pi en passant par le routeur peri. Le routeur a deux adresses: `132.227.71.43` du coté laboratoire et `192.168.1.1` de l'autre coté.  Le serveur de nom lui a attribué un nom : peri. Le routeur crée un sous-réseau (`192.168.1.x`) où sont connectées les cartes. Les cartes sont numérotées de `20` à `26` plus des cartes étudiants (ici n°30), le routeur a été programmé de telle sorte que l'adresse internet de la carte n°`X` ait comme adresse 192.168.1.`X` (par exemple la carte n°`20` a comme adresse sur ce réseau `192.168.1.20`).
     28Pour faire ça, le firmware du routeur a été remplacé par '''[[http://www.dd-wrt.com/site/index | dd-wrt]]''' qui permet ce type de mode.  Le routeur a été également été programmé pour que tous les paquets entrants sur le port `5000`+`X` de l'adresse peri soient routés vers l'adresse `192.168.1.X`.
    3029
    3130Il n'y a qu'un seul compte utilisateur sur une carte Raspberry Pi. Le nom de login est `pi` et le mot de passe est `raspberry`.
     
    3332Ainsi, pour se connecter en ssh sur la carte n°`22` avec le login `pi`, il faut taper (remarquez que c'est un `p` minuscule):
    3433{{{#!sh
    35 $ ssh -p 5022 pi@132.227.102.36
    36 pi@132.227.102.36's password: raspberry
     34$ ssh -p 5022 pi@peri
     35pi@peri's password: raspberry
    3736}}}
    3837
     
    4342Pour copier un fichier `file.x` depuis votre compte enseignement sur le carte n°`22` il faut taper (remarquez que c'est un `P` majuscule):
    4443{{{#!sh
    45 $ scp -P 5022 file.x pi@132.227.102.36:almada-fomentin
    46 pi@132.227.102.36's password: raspberry
     44$ scp -P 5022 file.x pi@peri:almada-fomentin
     45pi@peri's password: raspberry
    4746}}}
    4847
     
    5756{{{#!sh
    5857ssh-keygen -t rsa
    59 ssh-copy-id -i $HOME/.ssh/id_rsa.pub "-p 502x pi@132.227.102.36"
    60 ssh -p 502x pi@132.227.102.36
     58ssh-copy-id -i $HOME/.ssh/id_rsa.pub "-p 502x pi@peri"
     59ssh -p 502x pi@peri
    6160}}}
    6261}}}
     
    6463[[BR]]
    6564
    66 = 1. Prise en mains des outils de développement: Hello World! =
     65= 2.1. Prise en mains des outils de développement: Hello World! =
    6766
    6867La première étape consiste à vous familiariser avec les outils de
     
    105104CFLAGS=-O2 -static
    106105CARD=20
    107 NAME=lacas
     106NAME=binome
    108107APP=helloworld
    109108
    110109all: $(APP)
    111     scp -P 50$(CARD) $^ pi@132.227.102.36:$(NAME)
     110    scp -P 50$(CARD) $^ pi@peri:$(NAME)
    112111
    113112clean:
     
    122121  L'option "-static" est utilisée par l'éditeur de lien. Elle est importante ici, car la librairie C du compilateur croisé n'est pas tout à fait identique à la librairie C sur la carte Raspberry Pi. Ajouter "-static" à la ligne de compilation permet de créer un binaire qui contient en plus les fonctions de la librairie C utilisée par votre programme. Ceci permettra à celui-ci de ne pas essayer d'utiliser des fonctions de la librairie C installée sur la carte qui, sinon, aurait été chargée dynamiquement.
    123122
    124 == 2. Contrôle de GPIO en sortie ==
     123== 2.2. Contrôle de GPIO en sortie ==
    125124
    126125[[Image(htdocs:png/Raspberry-Pi-GPIO-Layout-Revision-2.png,500px,nolink)]]
     
    142141}}}
    143142
    144 == 3. Contrôle de plusieurs GPIO en mode "sortie" ==
     143== 2.3. Contrôle de plusieurs GPIO en mode "sortie" ==
    145144
    146145Refaites le même exercice que précédemment, mais cette fois-ci configurez plusieurs GPIO en sorties.
     
    148147* Avant d'exécuter votre programme, vérifiez parce que le matériel est fragile, pour pouvez faire valider votre code avec le chargé de TP.
    149148
    150 == 4. Lecture de la valeur d'une entrée GPIO ==
     149Vous devez faire clignoter les deux LEDs a des fréquences différentes et, si possible, parametrable par des arguments en ligne de commandes.
     150Je vous conseille de créer une thread par LED
     151
     152== 2.4. Lecture de la valeur d'une entrée GPIO ==
    151153
    152154Maintenant que vous maîtrisez le contrôle d'un GPIO en sortie, passons au mode "entrée".
     
    169171   si BP_ON :
    170172      BP_ON <- 0                   // l'appui est un evenement ponctuel
    171       comportement quand un appui est détecté
     173      comportement quand un appui est detecte
    172174   si BP_OFF :
    173175      BP_OFF <- 0                  // Le relachemet est un évènement ponctuel
    174176      comportement quand un relachement est detecte
    175    gestion de la LED0
    176    gestion de la LED1
    177 }}}
    178 
    179 == 5. Réalisation d'une petite librairie ==
     177}}}
     178
     179Commencer par tester que vous savez détecter l'appui sans gérer les LEDs.
     180
     181Ensuite, faite un programme qui fait clignoter deux fois plus vite les LEDs lorsqu'on appuit sur le bouton une fois, et qui refait clignoter les LEDs normalement au nouvel appui.
     182
     183== 2.5. Réalisation d'une petite librairie ==
    180184
    181185Écrire les fonctions suivantes et fabriquer une fonction libgpio.a.
     
    209213   - Rend 0 si pas d'erreur; -1 en cas d'erreur
    210214
    211 == 6. Amusez-vous ! ==
    212 
    213 Maintenant que vous maîtrisez tous les aspects liés à la configuration et
    214 à la programmation des GPIO sur Raspberry Pi, laisser aller votre imagination
    215 et proposer d'autres programmes à exécuter sur la carte Raspberry Pi qui
    216 vous est fournie.
    217 
    218 == 7. Compte rendu (CR) ==
     215= 3. Arduino
     216
     217== 3.1. Objectif
     218
     219L'objectif de vous familiariser avec l'environnement Arduino. Vous allez donc utiliser des cartes Arduino et y programmer une petite application.
     220
     221== 3.2. Environnement
     222
     223Il existe beaucoup d'excellents tutoriels sur l’Arduino, et il ne s'agit pas ici de remplacer par un tutoriel simplifié. Si l’Arduino vous intéresse au-delà de ce que nous allons brièvement aborder, vous pouvez commencer par l'excellent tutoriel d'[https://zestedesavoir.com/tutoriels/686/arduino-premiers-pas-en-informatique-embarquee/ Eskimon].
     224
     225L'application Arduino est déjà installé sur les machine du département, pour la lancer, il suffit de taper son nom sur un terminal :
     226{{{
     227$ /opt/arduino.1.6.8/arduino &
     228}}}
     229La fenêtre d'édition apparaît. Elle va permettre d'éditer, de compiler et de téléverser (upload) votre programme dans le microcontrôleur ATmega. Vous allez devoir commencer par sélectionner la carte et le port de connexion (menu outils).
     230* carte : Arduino nano 328p
     231* port : /dev/ttyUSB0 ou /dev/ttyUSB1
     232Le port n'apparait que lorsque vous connectez la carte. l'hôte USB détecte et reconnaît la carte au moment de sa connexion et installe le driver (maintenant vous savez comment :-).
     233
     234== 3.3 Travail demandé ==
     235
     2361. faire clignoter une led 13 (exemple blink)
     2372. Lire le port analogique A0, sur lequel est branché une photorésistance et allumer la led 13 si la lumière détectée est sombre.
     238{{{
     239
     240  5V <----(/\LCR/\)--+--[/\/2kOhms/\/]----|0V
     241                     |
     242                     v
     243                     A0
     244}}}
     2453. Utiliser la photorésistance pour simuler un bouton poussoir, l'appui serait juste l'éclairage par un flash. A la détection de cet "appui", vous afficher un message sur le terminal.
     246
     247= Compte rendu (CR)
    219248
    220249Vous écrirez un CR **au format markdown**, dans lequel vous mettrez les étapes de configurations de votre compte pour réaliser le TP, ainsi vous conserverez une trace.
     
    225254- Vous enverez le CR par mail à franck.wajsburt@lip6.fr
    226255avec le sujet: `[PERI] CR TP1 nom1 nom2`
    227 }}}