Différences entre les versions de « RaspberryPi »

De VoWiki
Aller à la navigation Aller à la recherche
(Page créée avec « thumb|<center>Le Raspberry Pi</center> [[Image:|thumb|<center></center>]] = VoLAB = = Association VoRoBoTics = Date : 31/08/2015 Au... »)
 
(13 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[Image:Raspberry_Pi_Logo.svg.png|thumb|]]<center>Le Raspberry Pi</center>
← [[Accueil]] ← [[Microcontroleurs et Nano-Ordinateurs]]
[[Image:Raspberry_Pi_Logo.svg.png|thumb|right]]<center>Le Raspberry Pi</center>


 
[[Category:Microcontroleurs]]
[[Image:|thumb|<center></center>]]


= VoLAB =
= VoLAB =
Ligne 17 : Ligne 17 :


= Introduction : =
= Introduction : =
Nous allons ici vous présenté seulement les informations réellement utiles que nous avons trouvé ou expérimenter lors de nos recherche.
Nous allons ici vous présenter seulement les informations réellement utiles que nous avons trouvées ou expérimentées lors de nos recherches.
 
Ce document ne sera certainement pas un document exhaustif. Il est simplement le reflet de nos expérience. Ce documents est donc à la croisé d'un pense-bête et d'un journal de manip


Ce document ne sera certainement pas un document exhaustif. Il est simplement le reflet de nos expériences. Ce document est donc à la croisée d'un pense-bête et d'un journal de manip.


= UART : =
= UART : =
== Comment avoir plusieur UART (ports séries) sur un seul Raspberry Pi : ==
== Comment avoir plusieurs UART (ports séries) sur un seul Raspberry Pi : ==
Vous le savez certainement, le Raspberry Pi dispose sur ses GPIO d'un UART qui est accessible sur les broches physiques 8 et 10
Vous le savez certainement, le Raspberry Pi dispose sur ses GPIO d'un UART qui est accessible sur les broches physiques 8 et 10


Ligne 46 : Ligne 45 :


|}
|}
Cela peut suffire dans la plupart des cas. Cependant, il peut arriver que vous ayez besoin de port série supplémentaire. Si votre projet est strictement confiner au dimension du Raspberry Pi, nous n'avons pas de solution pour vous.
Cela peut suffire dans la plupart des cas. Cependant, il peut arriver que vous ayez besoin de port série supplémentaire. Si votre projet est strictement confiné aux dimensions du Raspberry Pi, nous n'avons pas de solution pour vous.


Si au contraire vous disposer de tous l’espace situé devant les ports USB, alors vous allez pouvoir vous amuser.  
Si au contraire vous disposez de tout l’espace situé devant les ports USB, alors vous allez pouvoir vous amuser.  


Vous devez vous procurez un [http://www.banggood.com/Wholesale-USB-To-TTL-COM-Converter-Module-buildin-In-CP2102-New-p-27989.html adaptateur usb-TTL] que vous trouverez sur internet pour 2 ou 3 euros.
Vous devez vous procurez un [http://www.banggood.com/Wholesale-USB-To-TTL-COM-Converter-Module-buildin-In-CP2102-New-p-27989.html adaptateur usb-TTL] que vous trouverez sur internet pour 2 ou 3 euros.


Avent de commencer, voici un petit rappel sur la correspondance des nom "Windows" et les nom "Linux"&nbsp;:
Avant de commencer, voici un petit rappel sur la correspondance des noms "Windows" et les noms "Linux"&nbsp;:




Ligne 64 : Ligne 63 :




# Connaitre la list des port série utilisé&nbsp;:
=== Connaître la liste des ports séries utilisés&nbsp;:===
 
Il y a deux façon simple de connaître la liste des ports série utilié&nbsp;:
 
ls /dev/tty*
 
La commande retourne généralement plus de 50 tty. Cependant, les tty associés au port USB disposent d'une nomenclature différente. Ils contiennent habituellement USB ou ACM (Abstract Control Model)
 
 
La seconde façon, est d'intérroger le journal sur toutes les entrées "tty"
 
dmesg | grep tty
 
 
Cette seconde methode peut parraitre plus complexe à interpréter, mais elle nous renseigne directement sur le matériel et sur le port utilisé.


:Il y a deux façons simples de connaître la liste des ports séries utiliés&nbsp;:


# Rappel&nbsp;: Libérer l'UART pour l'utiliser depuis le GPIO<br/> Par défaut, l'UART et réserver au debug et n'est accessible qu'en mode console vous devez donc le désactiver dans l'outil de configuration.<br/>  
::ls /dev/tty*
2.1.Intérroger le journal sur les dernier événement de la liaison série pour vérifier que l'opération n'a pas déjà été effectuerdmesg | grep ttySi l'opération n'a pas encore été effectuer, le résultat obtenu doit être :<br/> [ 0.002072] console [tty1] enabled<br/> [ 0.195363] 3f201000.uart: ttyAMA0 at MMIO 0x3f201000 (irq = 83, base_baud = 0) is a PL011 rev2<br/> [ 0.695429] console [ttyAMA0] enabled<br/>
<br />
2.2 configurer l'UART avec l'outil de configuration du Rpisudo raspi-config2.3 se déplacer dans les menu selon la séquence suivante[ 8 ] --> [ A8] --> [ Non ]Le quatrième écran vous informe que Serial est maintenant désactivé[ Ok ] --> [ Finish ]2.4 Redémarersudo reboot2.5. Vérifier dans le journal que l'opération a bien été prise en comptedemsg | grep ttyCe qui doit vous donner le résultat suivant :[ 0.002051] console [tty1] enabled<br/> [ 0.195175] 3f201000.uart: ttyAMA0 at MMIO 0x3f201000 (irq = 83, base_baud = 0) is a PL011 rev2
:La commande retourne généralement plus de 50 tty. Cependant, les tty associés aux ports USB disposent d'une nomenclature différente. Ils contiennent habituellement USB ou ACM (Abstract Control Model)
:La seconde façon, est d’interroger le journal sur toutes les entrées "tty"


On constate que la dernière ligne à disparue, le mode debug sur la sortie UART est donc bien désactivée.
::dmesg | grep tty
<br />


: Cette seconde méthode peut paraitre plus complexe à interpréter, mais elle nous renseigne directement sur le matériel et sur le port utilisé.
<br />


# Utilisation de l'adaptater USB-TTL
=== Rappel&nbsp;: Libérer l'UART pour l'utiliser depuis le GPIO<br/>===
Par défaut, l'UART est réservé au debug et n'est accessible qu'en mode console LINUX, vous devez donc le désactiver dans l'outil de configuration.<br/>


La première chose à faire est bien évidement de connecter l'adaptater dans l'un des ports USB disponible.
* Intérroger le journal sur les derniers événements de la liaison série pour vérifier que l'opération n'a pas déjà été effectuer<br />
::dmesg | grep tty<br /><br />


3.1 Connaitre le port de l'adaptateur
:Si l'opération n'a pas encore été effectuée, le résultat obtenu doit être :<br/>
::[ 0.002072] console [tty1] enabled<br/>
::[ 0.195363] 3f201000.uart: ttyAMA0 at MMIO 0x3f201000 (irq = 83, base_baud = 0) is a PL011 rev2<br/>
::[ 0.695429] console [ttyAMA0] enabled<br/><br />


Avant de s'inquiéter du port utiliser par l'adaptateur, il faut s'assurer qu'il a bien été pris en compte par le système au moment du branchement&nbsp;:
* configurer l'UART avec l'outil de configuration du Rpi<br />
::sudo raspi-config<br />


lsusb
* se déplacer dans les menu selon la séquence suivante<br />


::[ 8 ] --> [ A8] --> [ Non ]<br /><br />


Vous devriez obtenir un résultat proche de ceci&nbsp;:
:Le quatrième écran vous informe que Serial est maintenant désactivé<br />


Bus 001 Device 005: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
::[ Ok ] --> [ Finish ]<br /><br />


* Redémarer<br />
::sudo reboot<br />
* Vérifier dans le journal que l'opération a bien été prise en compte<br />
::demsg | grep tty<br /><br />


la commande suivante&nbsp;:
:Ce qui doit vous donner le résultat suivant :
::[ 0.002051] console [tty1] enabled<br/>
::[ 0.195175] 3f201000.uart: ttyAMA0 at MMIO 0x3f201000 (irq = 83, base_baud = 0) is a PL011 rev2
<br /><br />
: On constate que la dernière ligne à disparue, le mode debug sur la sortie UART est donc bien désactivée.<br /><br />


ls /dev/tty*
=== Utilisation de l’adaptateur USB-TTL<br />===


La première chose à faire est bien évidement de connecter l’adaptateur dans l'un des ports USB disponible.<br />


Doit à présent s'être enrichie d'une étiquette supplémentaire à la toute fin du tableau, ressemblant à&nbsp;:
* Connaitre le port de l'adaptateur<br />


/dev/ttyUSB0
:Avant de s'inquiéter du port utiliser par l'adaptateur, il faut s'assurer qu'il a bien été pris en compte par le système au moment du branchement&nbsp;: <br />


::lsusb
<br />
:Vous devriez obtenir un résultat proche de ceci&nbsp;:


On peut donc deviné que le composant CP210x communique sur le port /dev/ttyUSB0. Pour le vérifier on interroge le journal sur les éléments tty&nbsp;:
::Bus 001 Device 005: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
<br />


dmesg | grep tty
:la commande suivante&nbsp;:
 
<br />
 
::ls /dev/tty*
la dernière entrée dans le journal est alors&nbsp;:
<br />
 
:Doit à présent s'être enrichie d'une étiquette supplémentaire à la toute fin du tableau, ressemblant à&nbsp;:
[ 4708.499632] usb 1-1.4: cp210x converter now attached to ttyUSB0
::/dev/ttyUSB0
 
<br />
 
:On peut donc deviné que le composant CP210x communique sur le port /dev/ttyUSB0. Pour le vérifier on interroge le journal sur les éléments tty&nbsp;:
Nous somme donc assuré que notre adaptateur a bien été pris en compte et que le système lui a effectivement attaché un port série. Il ne reste plus qu'a utiliser notre nouveau port série
<br />
 
::dmesg | grep tty
 
<br />
[[Image:branchementUsbTTL.png]]Pour pouvoir tester notre communication série, nous avons placé un cavalier entre les broches Rx et Tx de l'adaptateur. Nous avons ensuite lancer un petit script en Python3 pour vérifier le bon fonctionnement du couple envoie / réception&nbsp;:
:la dernière entrée dans le journal est alors&nbsp;:
:[ 4708.499632] usb 1-1.4: cp210x converter now attached to ttyUSB0<br />


:Nous somme donc assuré que notre adaptateur a bien été pris en compte et que le système lui a effectivement attaché un port série. Il ne reste plus qu'a utiliser notre nouveau port série


[[Image:branchementUsbTTL.png|centre]]<br />
Pour pouvoir tester notre communication série, nous avons placé un cavalier entre les broches Rx et Tx de l'adaptateur. Nous avons ensuite lancer un petit script en Python3 pour vérifier le bon fonctionnement du couple envoie / réception&nbsp;:
<br />
code&nbsp;:
code&nbsp;:


<nowiki>#!/usr/bin/env python</nowiki>
<nowiki>
#!/usr/bin/env python
# -*- coding: utf-8 -*-


<nowiki># -*- coding: utf-8 -*-</nowiki>
# Pour executer ce script, lancer la commande :
 
# python serialWrite.py
 
<nowiki># Pour executer se script, lancer la commande :</nowiki>
 
<nowiki># python serialWrite.py</nowiki>
 
 
<nowiki># Ce script envoie en continue la chaine de caractère :</nowiki>
 
<nowiki># "Write counter:" suivie de la variable "counter"</nowiki>
 
<nowiki># cette variable est incrémenter de 1 à chaque tour</nowiki>
 
<nowiki># de boucle</nowiki>
 
 
<nowiki># La chaine transmise est reçu et afficher dans la foulée</nowiki>


# Ce script envoie en continu la chaine de caractères :
# "Write counter:" suivie de la variable "counter"
# cette variable est incrémenté de 1 à chaque tour
# de boucle
# La chaine transmise est reçue et affichée dans la foulée


import time
import time
import serial
import serial


ser = serial.Serial(
ser = serial.Serial(
 
        port='/dev/ttyUSB0',
 
        baudrate = 9600,
port='/dev/ttyUSB0',
        parity=serial.PARITY_NONE,
 
        stopbits=serial.STOPBITS_ONE,
baudrate = 9600,
        bytesize=serial.EIGHTBITS,
 
        timeout=1
parity=serial.PARITY_NONE,
 
stopbits=serial.STOPBITS_ONE,
 
bytesize=serial.EIGHTBITS,
 
timeout=1
 
)
)


counter=0
counter=0


while 1:
while 1:
        ser.write('Write counter: %d \n'%(counter))
        print("test d'envoie ok")
        time.sleep(1)
        counter += 1
        x=ser.readline()
        print(x)
</nowiki>


ser.write('Write counter: %d \n'%(counter))
On voit par cette méthode qu'il est très facile d'ajouter un port série au RaspBerry Pi(2). Sur un Rpi2, on peut ainsi avoir 2 voir 3 ports COM supplémentaires. On se garde un port USB pour un petit dongle WIFI.  On pourrait même aller encore plus loin en y ajoutant un petit hub USB...
 
print("test d'envoie ok")
 
time.sleep(1)
 
counter += 1
 
x=ser.readline()
 
print(x)


= Fichiers sources =
= Fichiers sources =
= Licence =
= Licence =
Ce document est mise à disposition selon les termes de la&nbsp;[http://creativecommons.org/licenses/by/4.0/ Licence Creative Commons Attribution 4.0 International].  
Ce document est mise à disposition selon les termes de la&nbsp;[http://creativecommons.org/licenses/by/4.0/ Licence Creative Commons Attribution 4.0 International].  
 
<br />
[[Image:CC88x31.jpg]]Paternité 'by' :''L'œuvre peut être librement utilisée, à la condition de l'attribuer à l'auteur en citant son nom.''  
[[Image:CC88x31.jpg|centre]]<br />
Paternité 'by' :''L'œuvre peut être librement utilisée, à la condition de l'attribuer à l'auteur en citant son nom.''  




Ligne 204 : Ligne 197 :
= Bibliographie =
= Bibliographie =
= Webographie =
= Webographie =
La page Wikipedia consacré au Raspberry Pi :
* La page Wikipedia consacré au Raspberry Pi :
 
[https://en.wikipedia.org/wiki/Raspberry_Pi https://en.wikipedia.org/wiki/Raspberry_Pi]


::[https://en.wikipedia.org/wiki/Raspberry_Pi https://en.wikipedia.org/wiki/Raspberry_Pi]


[http://fr.wikipedia.org/wiki/Licence_Creative_Commons http://fr.wikipedia.org/wiki/Licence_Creative_Commons]
<br /><br />
::[http://fr.wikipedia.org/wiki/Licence_Creative_Commons http://fr.wikipedia.org/wiki/Licence_Creative_Commons]


= Rédaction en langue française =
= Rédaction en langue française =

Version du 20 juillet 2016 à 20:26

AccueilMicrocontroleurs et Nano-Ordinateurs

Raspberry Pi Logo.svg.png
Le Raspberry Pi

VoLAB

Association VoRoBoTics

Date : 31/08/2015

Auteur : Poltergeist42

Relecteur :

Thème: Nano-Ordinateurs

Projet : Cook Book RPi

Introduction :

Nous allons ici vous présenter seulement les informations réellement utiles que nous avons trouvées ou expérimentées lors de nos recherches.

Ce document ne sera certainement pas un document exhaustif. Il est simplement le reflet de nos expériences. Ce document est donc à la croisée d'un pense-bête et d'un journal de manip.

UART :

Comment avoir plusieurs UART (ports séries) sur un seul Raspberry Pi :

Vous le savez certainement, le Raspberry Pi dispose sur ses GPIO d'un UART qui est accessible sur les broches physiques 8 et 10


Broche Physique
BCM
BRD
Fonction
8
14
15
Tx
10
15
16
Rx

Cela peut suffire dans la plupart des cas. Cependant, il peut arriver que vous ayez besoin de port série supplémentaire. Si votre projet est strictement confiné aux dimensions du Raspberry Pi, nous n'avons pas de solution pour vous.

Si au contraire vous disposez de tout l’espace situé devant les ports USB, alors vous allez pouvoir vous amuser.

Vous devez vous procurez un adaptateur usb-TTL que vous trouverez sur internet pour 2 ou 3 euros.

Avant de commencer, voici un petit rappel sur la correspondance des noms "Windows" et les noms "Linux" :


COM1 -> /dev/ttyS0

COM2 -> /dev/ttyS1

COM3 -> /dev/ttyS2

COM4 -> /dev/ttyS3


Connaître la liste des ports séries utilisés :

Il y a deux façons simples de connaître la liste des ports séries utiliés :
ls /dev/tty*


La commande retourne généralement plus de 50 tty. Cependant, les tty associés aux ports USB disposent d'une nomenclature différente. Ils contiennent habituellement USB ou ACM (Abstract Control Model)
La seconde façon, est d’interroger le journal sur toutes les entrées "tty"
dmesg | grep tty


Cette seconde méthode peut paraitre plus complexe à interpréter, mais elle nous renseigne directement sur le matériel et sur le port utilisé.


Rappel : Libérer l'UART pour l'utiliser depuis le GPIO

Par défaut, l'UART est réservé au debug et n'est accessible qu'en mode console LINUX, vous devez donc le désactiver dans l'outil de configuration.

  • Intérroger le journal sur les derniers événements de la liaison série pour vérifier que l'opération n'a pas déjà été effectuer
dmesg | grep tty

Si l'opération n'a pas encore été effectuée, le résultat obtenu doit être :
[ 0.002072] console [tty1] enabled
[ 0.195363] 3f201000.uart: ttyAMA0 at MMIO 0x3f201000 (irq = 83, base_baud = 0) is a PL011 rev2
[ 0.695429] console [ttyAMA0] enabled

  • configurer l'UART avec l'outil de configuration du Rpi
sudo raspi-config
  • se déplacer dans les menu selon la séquence suivante
[ 8 ] --> [ A8] --> [ Non ]

Le quatrième écran vous informe que Serial est maintenant désactivé
[ Ok ] --> [ Finish ]

  • Redémarer
sudo reboot
  • Vérifier dans le journal que l'opération a bien été prise en compte
demsg | grep tty

Ce qui doit vous donner le résultat suivant :
[ 0.002051] console [tty1] enabled
[ 0.195175] 3f201000.uart: ttyAMA0 at MMIO 0x3f201000 (irq = 83, base_baud = 0) is a PL011 rev2



On constate que la dernière ligne à disparue, le mode debug sur la sortie UART est donc bien désactivée.

Utilisation de l’adaptateur USB-TTL

La première chose à faire est bien évidement de connecter l’adaptateur dans l'un des ports USB disponible.

  • Connaitre le port de l'adaptateur
Avant de s'inquiéter du port utiliser par l'adaptateur, il faut s'assurer qu'il a bien été pris en compte par le système au moment du branchement :
lsusb


Vous devriez obtenir un résultat proche de ceci :
Bus 001 Device 005: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light


la commande suivante :


ls /dev/tty*


Doit à présent s'être enrichie d'une étiquette supplémentaire à la toute fin du tableau, ressemblant à :
/dev/ttyUSB0


On peut donc deviné que le composant CP210x communique sur le port /dev/ttyUSB0. Pour le vérifier on interroge le journal sur les éléments tty :


dmesg | grep tty


la dernière entrée dans le journal est alors :
[ 4708.499632] usb 1-1.4: cp210x converter now attached to ttyUSB0
Nous somme donc assuré que notre adaptateur a bien été pris en compte et que le système lui a effectivement attaché un port série. Il ne reste plus qu'a utiliser notre nouveau port série
BranchementUsbTTL.png


Pour pouvoir tester notre communication série, nous avons placé un cavalier entre les broches Rx et Tx de l'adaptateur. Nous avons ensuite lancer un petit script en Python3 pour vérifier le bon fonctionnement du couple envoie / réception :
code :

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Pour executer ce script, lancer la commande :
# python serialWrite.py

# Ce script envoie en continu la chaine de caractères :
# "Write counter:" suivie de la variable "counter"
# cette variable est incrémenté de 1 à chaque tour
# de boucle
# La chaine transmise est reçue et affichée dans la foulée

import time
import serial

ser = serial.Serial(
        port='/dev/ttyUSB0',
        baudrate = 9600,
        parity=serial.PARITY_NONE,
        stopbits=serial.STOPBITS_ONE,
        bytesize=serial.EIGHTBITS,
        timeout=1
)

counter=0

while 1:
        ser.write('Write counter: %d \n'%(counter))
        print("test d'envoie ok")
        time.sleep(1)
        counter += 1
        x=ser.readline()
        print(x)

On voit par cette méthode qu'il est très facile d'ajouter un port série au RaspBerry Pi(2). Sur un Rpi2, on peut ainsi avoir 2 voir 3 ports COM supplémentaires. On se garde un port USB pour un petit dongle WIFI. On pourrait même aller encore plus loin en y ajoutant un petit hub USB...

Fichiers sources

Licence

Ce document est mise à disposition selon les termes de la Licence Creative Commons Attribution 4.0 International.

CC88x31.jpg


Paternité 'by' :L'œuvre peut être librement utilisée, à la condition de l'attribuer à l'auteur en citant son nom.


Note aux auteurs de documents du VoLAB, Vous avez la possibilité de changer de licence. Mais ce serait bien de rester libre et ouvert. Encore une fois ceci est une recommandation et pas une obligation.

Bibliographie

Webographie

  • La page Wikipedia consacré au Raspberry Pi :
https://en.wikipedia.org/wiki/Raspberry_Pi



http://fr.wikipedia.org/wiki/Licence_Creative_Commons

Rédaction en langue française

Partant du constat de terrain qu'une énorme masse d'information concernant les sujets qui nous intéressent comme entre autres l'impression 3D n'étaient disponibles que dans la langue de Shakespeare et que de nombreuses personnes dans notre entourage ne maîtrisaient pas la dite langue et soucieux de diffuser encore plus l'information, nous avons pris le parti, au VoLAB, de rédiger nos documents de préférence en langue française.

VoLAB

Un mot sur le VoLAB. VoLAB est un fablab implanté à environ 30km au nord-ouest de Paris dans la commune de Vauréal dans l'agglomération de Cergy Pontoise. Il est animé par l'association VoRoBoTics.

Site internet www.vorobotics.com