Changes between Version 1 and Version 2 of Peri19_T01
- Timestamp:
- Feb 15, 2019, 1:38:10 PM (7 years ago)
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 5 2 6 3 Au long de ce module, vous allez utiliser 4 nano-ordinateurs : … … 22 19 * Lecture d'une valeur analogique. 23 20 24 === Plateforme des TP pour les Raspberry Pi 21 = 2. Hello World! Raspberry PI 1 22 23 **Plateforme des TP pour les Raspberry Pi** 25 24 26 25 [[Image(htdocs:png/plateforme-peri-raspberry.png, width=700px, nolink)]] 27 26 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`.27 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.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`). 28 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 peri soient routés vers l'adresse `192.168.1.X`. 30 29 31 30 Il 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`. … … 33 32 Ainsi, pour se connecter en ssh sur la carte n°`22` avec le login `pi`, il faut taper (remarquez que c'est un `p` minuscule): 34 33 {{{#!sh 35 $ ssh -p 5022 pi@ 132.227.102.3636 pi@ 132.227.102.36's password: raspberry34 $ ssh -p 5022 pi@peri 35 pi@peri's password: raspberry 37 36 }}} 38 37 … … 43 42 Pour copier un fichier `file.x` depuis votre compte enseignement sur le carte n°`22` il faut taper (remarquez que c'est un `P` majuscule): 44 43 {{{#!sh 45 $ scp -P 5022 file.x pi@ 132.227.102.36:almada-fomentin46 pi@ 132.227.102.36's password: raspberry44 $ scp -P 5022 file.x pi@peri:almada-fomentin 45 pi@peri's password: raspberry 47 46 }}} 48 47 … … 57 56 {{{#!sh 58 57 ssh-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.3658 ssh-copy-id -i $HOME/.ssh/id_rsa.pub "-p 502x pi@peri" 59 ssh -p 502x pi@peri 61 60 }}} 62 61 }}} … … 64 63 [[BR]] 65 64 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! = 67 66 68 67 La première étape consiste à vous familiariser avec les outils de … … 105 104 CFLAGS=-O2 -static 106 105 CARD=20 107 NAME= lacas106 NAME=binome 108 107 APP=helloworld 109 108 110 109 all: $(APP) 111 scp -P 50$(CARD) $^ pi@ 132.227.102.36:$(NAME)110 scp -P 50$(CARD) $^ pi@peri:$(NAME) 112 111 113 112 clean: … … 122 121 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. 123 122 124 == 2. Contrôle de GPIO en sortie ==123 == 2.2. Contrôle de GPIO en sortie == 125 124 126 125 [[Image(htdocs:png/Raspberry-Pi-GPIO-Layout-Revision-2.png,500px,nolink)]] … … 142 141 }}} 143 142 144 == 3. Contrôle de plusieurs GPIO en mode "sortie" ==143 == 2.3. Contrôle de plusieurs GPIO en mode "sortie" == 145 144 146 145 Refaites le même exercice que précédemment, mais cette fois-ci configurez plusieurs GPIO en sorties. … … 148 147 * 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. 149 148 150 == 4. Lecture de la valeur d'une entrée GPIO == 149 Vous devez faire clignoter les deux LEDs a des fréquences différentes et, si possible, parametrable par des arguments en ligne de commandes. 150 Je vous conseille de créer une thread par LED 151 152 == 2.4. Lecture de la valeur d'une entrée GPIO == 151 153 152 154 Maintenant que vous maîtrisez le contrôle d'un GPIO en sortie, passons au mode "entrée". … … 169 171 si BP_ON : 170 172 BP_ON <- 0 // l'appui est un evenement ponctuel 171 comportement quand un appui est d étecté173 comportement quand un appui est detecte 172 174 si BP_OFF : 173 175 BP_OFF <- 0 // Le relachemet est un évènement ponctuel 174 176 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 179 Commencer par tester que vous savez détecter l'appui sans gérer les LEDs. 180 181 Ensuite, 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 == 180 184 181 185 Écrire les fonctions suivantes et fabriquer une fonction libgpio.a. … … 209 213 - Rend 0 si pas d'erreur; -1 en cas d'erreur 210 214 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 219 L'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 223 Il 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 225 L'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 }}} 229 La 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 232 Le 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 236 1. faire clignoter une led 13 (exemple blink) 237 2. 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 }}} 245 3. 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) 219 248 220 249 Vous é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. … … 225 254 - Vous enverez le CR par mail à franck.wajsburt@lip6.fr 226 255 avec le sujet: `[PERI] CR TP1 nom1 nom2` 227 }}}