Outils pour utilisateurs

Outils du site


issue112:python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue112:python [2016/09/12 09:41] d52frissue112:python [2016/09/12 14:57] (Version actuelle) auntiee
Ligne 1: Ligne 1:
-**This month, we will be using a 16x2 LCD display with an i2c interface to do the same thing that we did last month (FCM 111) with the Dallas Semiconductor DS18B20 Temperature sensor. If you remember, we had to use many I/O pins on the RPi. This time, thanks to the i2c display, we will need only 5 pins (+5v, Gnd, Sensor Data, SDA (data) and SCL (clock)) to do the same thing. +**This  month, we will be using a 16x2 LCD display with an i2c interface to do the same thing that we did last month (FCM 111) with the Dallas Semiconductor DS18B20 Temperature sensor. If you remember, we had to use many I/O pins on the RPi. This time, thanks to the i2c display, we will 
 + need only 5 pins (+5v, Gnd, Sensor Data, SDA (data) and SCL (clock)) to 
 + do the same thing. 
  
-Before we get started with our project, a discussion about i2c is in order. I have distilled the following discussion from a wonderful tutorial by 'SFUPTOWNMAKER' at Sparkfun.com which can be found at https://learn.sparkfun.com/tutorials/i2c?_ga=1.242063243.863781319.1463423290+Before we get started with our project, a discussion about i2c is in  
 +order. I have distilled the following discussion from a wonderful  
 +tutorial by 'SFUPTOWNMAKER' at Sparkfun.com which can be found at  
 +https://learn.sparkfun.com/tutorials/i2c?_ga=1.242063243.863781319.1463423290
  
 i2c i2c
  
-Inter-Integrated Circuit (i2c) protocol is intended to allow multiple "slave" digital ICs to communicate with one or more master chips. Like Serial Peripheral Interface (SPi), it is intended for only short distance communications within a single device. Like Asynchronous Serial Interfaces (RS-232 or UARTs), it requires only two signal wires to exchange information.+Inter-Integrated 
 + Circuit (i2c) protocol is intended to allow multiple "slave" digital  
 +ICs to communicate with one or more master chips. Like Serial Peripheral 
 + Interface (SPi), it is intended for only short distance communications  
 +within a single device. Like Asynchronous Serial Interfaces (RS-232 or  
 +UARTs), it requires only two signal wires to exchange information.
  
 RS232 (Asynchronous Communications) RS232 (Asynchronous Communications)
  
-No clock data is required on the lines; however, both sides must agree on the communications data rate. Requires hardware overhead (UART) at each end.+No clock data is required on the lines; however, both sides must agree  
 +on the communications data rate. Requires hardware overhead (UART) at  
 +each end.
  
-In addition to the 8 data bits, at least one start and one stop bit are required for each data frame. While it is possible to connect multiple devices on a single serial port, there are issues with multiple devices trying to use the two lines at the same time+In addition to the 8 data bits, at least one start and one stop bit are  
- +required for each data frame. While it is possible to connect multiple  
-Most UART devices can support only certain set baud rates, the usual maximum is 230400 bits per second.+devices on a single serial port, there are issues with multiple devices  
 +trying to use the two lines at the same time.
  
 +Most UART devices can support only certain set baud rates, the usual 
 +maximum is 230400 bits per second.
  
  RX <--------- TX  RX <--------- TX
  TX ---------> RX**  TX ---------> RX**
  
-Ce mois-ci, nous utiliserons un écran LCD 16x2 avec une interface i2c pour faire la même chose que ce que nous avons fait le mois dernier (FCM n° 111) avec le capteur de température Dallas Semiconductor DS18B20. Si vous vous souvenez, nous avons dû utiliser beaucoup de broches E/S sur le RPi. Cette fois, grâce à l'affichage de i2c, nous aurons seulement besoin de 5 broches (+5v, masse, les données de capteurs, SDA (données) et SCL (horloge)) pour faire la même chose. +Ce mois-ci, nous utiliserons un écran LCD 16x2 avec une interface i2c  
- +pour faire la même chose que ce que nous avons fait le mois dernier (FCM 
-Avant de commencer notre projet, une présentation de i2c s'impose. J'ai résumé la discussion qui suit d'un merveilleux tutoriel écrit par SFUPTOWNMAKER sur Sparkfun.com accessible à https://learn.sparkfun.com/tutorials/i2c?_ga=1.242063243.863781319.1463423290+ n° 111) avec le capteur de température Dallas Semiconductor DS18B20.  
 +Rappelez-vous, nous avons dû utiliser beaucoup de broches E/S sur le  
 +RPi. Cette fois-ci, grâce à l'affichage de i2c, nous aurons seulement  
 +besoin de 5 broches (+5v, masse, les données du capteur, SDA (données)  
 +et SCL (horloge)) pour faire la même chose.
  
 +Avant de commencer notre projet, une présentation de i2c s'impose. J'ai 
 +résumé la discussion qui suit d'un merveilleux tutoriel écrit par 
 +SFUPTOWNMAKER sur Sparkfun.com accessible à 
 +https://learn.sparkfun.com/tutorials/i2c?_ga=1.242063243.863781319.1463423290
  
 i2c i2c
  
-Le Protocole inter Circuits Intégrés (i2c - Inter-Integrated Circuits) est destiné à permettre à plusieurs CI numériques « esclaves » de communiquer avec une ou plusieurs puces maîtres. Tout comme SPi (Serial Peripherical Interface - Périphérique à Interface Série), il est prévu pour des communications à courte distance sur un seul appareil. Comme l'Interface Série Asynchrone (RS-232 ou UART), il ne nécessite que deux câbles de signaux pour échanger des informations. +Le 
 + Protocole Circuits Inter-Intégrés (i2c - Inter-Integrated Circuits) est 
 + destiné à permettre à plusieurs CI numériques « esclaves » de  
 +communiquer avec une ou plusieurs puces maîtres. Tout comme SPi (Serial  
 +Peripherical Interface - Périphérique à Interface Série), il est prévu  
 +pour des communications à courte distance sur un seul appareil. Comme  
 +l'Interface Série Asynchrone (RS-232 ou UART), il ne nécessite que deux  
 +câbles de signaux pour échanger des informations.
  
 RS232 (Communication Asynchrone) RS232 (Communication Asynchrone)
  
-Aucune donnée d'horloge n'est nécessaire sur les lignes ; cependant, les deux côtés doivent s'accorder sur le débit de données de communication. Il nécessite un surcoût matériel (UART) à chaque extrémité.+Aucune donnée d'horloge n'est nécessaire sur les lignes ; cependant, les 
 + deux côtés doivent s'accorder sur le débit de données de communication. 
 + Il nécessite un surcoût matériel (UART) à chaque extrémité.
  
-Outre les données sur 8 bits, un bit de début et un bit d'arrêt au moins sont nécessaires pour chaque trame de données. Bien qu'il soit possible de connecter plusieurs périphériques sur un seul port série, il y a des problèmes avec plusieurs périphériques tentant d'utiliser les deux lignes simultanément.+Outre les données sur 8 bits, au moins un bit de début et un bit d'arrêt 
 + sont nécessaires pour chaque trame de données. Bien qu'il soit possible 
 + de connecter plusieurs périphériques sur un seul port série, si  
 +plusieurs périphériques tentent d'utiliser les deux lignes  
 +simultanément, des problèmes s'ensuivent.
  
-La plupart des appareils UART peuvent supporter un certain ensemble des vitesses de transmission, le maximum habituel est de 230 400 bits par seconde.+La plupart des dispositifs UART ne peuvent supporter que certaines  
 +vitesses de transmission pré-réglées, le maximum habituel est de 230 400 
 + bits par seconde.
  
 RX <--- TX RX <--- TX
Ligne 43: Ligne 80:
 **SPI **SPI
  
-The biggest drawback with SPI is the number of pins required. Connecting a single master to a single slave requires four lines, each additional slave requires one addition chip select (CS) IO pin to the master. If you want to use many sensors/devices connected to the master, the required number of pins can quickly overwhelm the number of available inputs/outputs.+The biggest drawback with SPI is the number of pins required. Connecting 
 + a single master to a single slave requires four lines, each additional  
 +slave requires one addition chip select (CS) IO pin to the master. If  
 +you want to use many sensors/devices connected to the master, the  
 +required number of pins can quickly overwhelm the number of available  
 +inputs/outputs.
  
-SPI (see diagram below) is good for high data rate full-duplex (simultaneous send/receive of data). Data rates can be upwards of 10 MHz.**+SPI (see diagram below) is good for high data rate full-duplex  
 +(simultaneous send/receive of data). Data rates can be upwards of 10  
 +MHz.**
  
 SPI SPI
  
-Le plus gros inconvénient de SPI est le nombre de picots nécessaires. La connexion d'un seul esclave à un unique maître requiert quatre lignes, chaque esclave supplémentaire nécessite l'addition d'un picot « chip select » (CS - sélection de circuit intégré) d'entrée/sortie sur le maître. Si vous voulez utiliser plusieurs capteurs/appareils connectés au maître, le nombre nécessaire de picots peut rapidement dépasser le nombre des entrées/sorties disponibles.+Le plus gros inconvénient de SPI est le nombre de picots nécessaires. La 
 + connexion d'un seul esclave à un unique maître requiert quatre lignes,  
 +chaque esclave supplémentaire nécessite l'addition d'un picot « chip  
 +select » (CS - sélection de circuit intégré) d'entrée/sortie sur le  
 +maître. Si vous voulez utiliser plusieurs capteurs/dispositifs connectés 
 + au maître, le nombre nécessaire de picots peut rapidement dépasser le  
 +nombre des entrées/sorties disponibles.
  
-SPI (voir diagramme ci-dessous) est bon pour un taux de transfert élevé en full-duplex (envoi/réception simultanés de données). Les taux de transfert de données peut monter jusqu'à 10 Mhz.+SPI (voir diagramme ci-dessous) est bon pour un taux de transfert élevé  
 +en full-duplex (envoi/réception simultanés de données). Le taux de  
 +transfert de données peut monter jusqu'à 10 Mhz.
  
      
Ligne 76: Ligne 128:
 i2c i2c
  
-i2c ne nécessite que deux lignes comme un port série asynchrone, mais ces deux lignes peuvent supporter jusqu'à 1 008 périphériques esclaves. Contrairement à SPI, i2c peut prendre en charge un système multi-maître, permettant à de multiples périphériques esclaves de communiquer avec plusieurs périphériques maîtres. Il y a une limitation parce que les maîtres ne peuvent pas communiquer entre eux sur le bus i2c et ils doivent utiliser les lignes de bus à tour de rôle. i2c a une format semblable à Async en ce sens que, pour chaque donnée de 8 bits, un bit supplémentaire est nécessaire comme un bit "Ack/Nack". Les exigences matérielles sont plus complexes que le PSI, mais inférieure à Async.+Comme un port série asynchrone, i2c ne nécessite que deux lignes, mais  
 +ces deux lignes peuvent supporter jusqu'à 1 008 périphériques esclaves.  
 +Contrairement à SPI, i2c peut prendre en charge un système multi-maître, 
 + permettant à de multiples périphériques esclaves de communiquer avec  
 +plusieurs périphériques maîtres. Les maîtres ne peuvent pas communiquer  
 +entre eux sur le bus i2c et doivent utiliser les lignes de bus à tour de 
 + rôle ; il y a donc des limitations. i2c a un « coût » semblable à celui d'Async  
 +en ce sens que, pour chaque donnée de 8 bits, un bit supplémentaire est  
 +nécessaire comme un bit "Ack/Nack". Les exigences matérielles sont plus  
 +complexes que le PSI, mais inférieure à Async.
  
-Les débits de données se situent entre Async et PSI. La plupart des périphériques i2c peuvent communiquer entre 100 KHz à 400 KHz.+Les débits de données se situent entre Async et PSI. La plupart des  
 +périphériques i2c peuvent communiquer entre 100 KHz à 400 KHz.
  
-Dans le schéma ci-dessus, SDA est la ligne de données et SCL est la ligne d'horloge.+Dans le schéma ci-dessus, SDA est la ligne de données et SCL est la  
 +ligne d'horloge.
  
-Espérons que je ne vous aie pas totalement embrouilléet soyez prêt à continuer avec notre projet.+Espérons que je ne vous aie pas totalement embrouillé et que vous êtes prêt à  
 +continuer avec notre projet.
  
-Une très bonne ressource pour ce que nous sommes sur le point de le faire est sur http://www.circuitbasics.com/raspberry-pi-i2c-lcd-set-up-and-programming/+Une très bonne ressource pour ce que nous sommes sur le point de le  
 +faire est sur  
 +http://www.circuitbasics.com/raspberry-pi-i2c-lcd-set-up-and-programming/
  
-Assurez-vous que i2c est activé sur le RPi. Ceci est situé dans Raspi-config.+Assurez-vous que i2c est activé sur le RPi. On règle cela dans raspi-config.
  
-Maintenant, dans un terminal, utilisez apt-get pour installer deux bibliothèques de support. (Je n'ai pas réussi à le lancer sur une seule ligne pour une raison quelconque.) : +Maintenant, dans un terminal, utilisez apt-get pour installer deux  
 +bibliothèques de support. (Je n'ai pas réussi à le lancer sur une seule  
 +ligne pour une raison inconnue.) : 
  
 sudo apt-get install i2c-tools sudo apt-get install i2c-tools
Ligne 94: Ligne 162:
 sudo apt-get install python-smbus sudo apt-get install python-smbus
  
 +**I was able to get Fritzing to come up with the i2c backpack (shown top
 + right).
  
-**I was able to get Fritzing to come up with the i2c backpack (shown top right). +Hook up the SDA pin of the i2c backpack to PHYSICAL pin 3 on the RPi  
- +(this is GPIO2) and the SCL on the backpack to PHYSICAL pin 5 (GPIO3).  
-Hook up the SDA pin of the i2c backpack to PHYSICAL pin 3 on the RPi (this is GPIO2) and the SCL on the backpack to PHYSICAL pin 5 (GPIO3). Pick a free 5v pin on the RPi (either pin 2 or 4) and a free ground (pins 6 or 9) and connect them to the backpack VCC and Gnd. Don’t forget we need the temp sensor connected to GPIO4 as last month (along with the resistor to +5VDC).+Pick a free 5v pin on the RPi (either pin 2 or 4) and a free ground  
 +(pins 6 or 9) and connect them to the backpack VCC and Gnd. Don’t forget 
 + we need the temp sensor connected to GPIO4 as last month (along with  
 +the resistor to +5VDC).
  
 Now reboot and once the RPi is up, in a terminal type: Now reboot and once the RPi is up, in a terminal type:
Ligne 103: Ligne 176:
 i2cdetect -y 1 i2cdetect -y 1
  
-This will verify that the i2c interface is working on your Pi, and also tell you what address is used by the LCD display device. Look at the screen dump shown right to see what it should look like.+This will verify that the i2c interface is working on your Pi, and also  
 +tell you what address is used by the LCD display device. Look at the  
 +screen dump shown right to see what it should look like.
  
-As you can see, my device is at 3f, but yours might be at a different address. When you create the driver below (either typing directly from the article or from the pastebin page), you will need to enter your device address in line 22.**+As you can see, my device is at 3f, but yours might be at a different  
 +address. When you create the driver below (either typing directly from  
 +the article or from the pastebin page), you will need to enter your  
 +device address in line 22.**
  
-J'ai pu obtenir le schéma Fritzing équipé avec l'adaptateur i2c (montré en haut à droite).+J'ai pu obtenir le schéma Fritzing équipé avec l'adaptateur i2c (montré  
 +en haut à droite).
  
-Branchez la broche SDA de l'adaptateur i2c à la broche physique n°3 sur le RPI (qui est GPIO2) et le SCL de l'adaptateur à la broche PHYSIQUE n° 5 (GPIO3). Choisissez une broche de 5V libre sur le RPi (broche 2 ou 4) et une masse libre (broche 6 ou 9) et connectez-les aux VCC (+5V) et Gnd (masse) de l'adaptateur. N'oubliez pas que nous avons besoin du capteur de température connecté à GPIO4 comme le mois dernier (avec la résistance à +5VDC).+Branchez la broche SDA de l'adaptateur i2c à la broche physique n°3 sur  
 +le RPI (qui est GPIO2) et le SCL de l'adaptateur à la broche PHYSIQUE n° 
 + 5 (GPIO3). Choisissez une broche de 5V libre sur le RPi (broche 2 ou 4) 
 + et une masse libre (broche 6 ou 9) et connectez-les aux VCC (+5V) et  
 +Gnd (masse) de l'adaptateur. N'oubliez pas que nous devons connecter le 
 +capteur de température à GPIO4comme le mois dernier (avec la  
 +résistance à +5VDC).
  
-Maintenant, redémarrez et une fois que le RPi est prêt, tapez dans le terminal :+Maintenant, redémarrez etune fois que le RPi est prêt, tapez dans le  
 +terminal :
  
 i2cdetect -y 1 i2cdetect -y 1
  
-Ceci permettra de vérifier que l'interface i2c travaille sur votre Pi, et vous dire aussi quelle est l'adresse utilisée par l'afficheur LCD. Regardez la capture d'écran montrée à droite pour voir ce à quoi il devrait ressembler.+Ceci permettra de vérifier que l'interface i2c fonctionne sur votre Pi,  
 +et vous dira aussi quelle est l'adresse utilisée par l'afficheur LCD.  
 +Regardez la capture d'écran montrée à droite pour voir ce à quoi il  
 +devrait ressembler.
  
-Comme vous pouvez le voir, mon appareil est à 3f, mais le vôtre pourrait être à une adresse différente. Lorsque vous créez le pilote ci-dessous (en tapant, soit directement à partir de l'article, soit de la page de pastebin), vous devrez entrer l'adresse de votre appareil à la ligne 22.+Comme vous pouvez le voir, mon appareil est à 3f, mais le vôtre pourrait 
 + être à une adresse différente. Lorsque vous créez le pilote ci-dessous  
 +(en tapant, soit directement à partir de l'article, soit de la page de  
 +pastebin), vous devrez entrer l'adresse de votre appareil à la ligne 22.
  
-**The first set of code is a library that will work as a driver for the i2c LCD. This should be saved as i2c_lcd_driver.py. The code is on http://pastebin.com/ueu18fNL to save you typing.+**The first set of code is a library that will work as a driver for the  
 +i2c LCD. This should be saved as i2c_lcd_driver.py. The code is on  
 +http://pastebin.com/ueu18fNL to save you typing.
  
-Now, we are going to do a short test to make sure everything works. Type in the following code and save it as i2c_test1.py, into the same folder as the driver that we just wrote..+Now, we are going to do a short test to make sure everything works. Type 
 + in the following code and save it as i2c_test1.py, into the same folder 
 + as the driver that we just wrote..
  
 import i2c_lcd_driver import i2c_lcd_driver
Ligne 130: Ligne 226:
 mylcd.lcd_display_string("This is a test",1) mylcd.lcd_display_string("This is a test",1)
  
-If everything here is correct, you should see “This is a test” at the first character position on the first line of the LCD display. If it’s good, we can move forward. The following code is basically the same code from last month modified to use the i2c display instead of the parallel version.+If everything here is correct, you should see “This is a test” at the  
 +first character position on the first line of the LCD display. If it’s  
 +good, we can move forward. The following code is basically the same code 
 + from last month modified to use the i2c display instead of the parallel 
 + version.
  
-That pretty much wraps up our discussion of LCDs and i2c. We will be using i2c LCDs and other i2c devices in the future, so you should keep them safe for later on. Next month, we will start working with motors, servos and stepper motors. So, run out, and get a hobby motor to be ready. In a few months, we’ll start working with the Arduino microcontroller and then learn to interface the RPi to control the Arduino.+That pretty much wraps up our discussion of LCDs and i2c. We will be  
 +using i2c LCDs and other i2c devices in the future, so you should keep  
 +them safe for later on. Next month, we will start working with motors,  
 +servos and stepper motors. So, run out, and get a hobby motor to be  
 +ready. In a few months, we’ll start working with the Arduino  
 +microcontroller and then learn to interface the RPi to control the  
 +Arduino.
  
 Until then have fun.** Until then have fun.**
  
-La première série de code est une bibliothèque qui fonctionnera comme un pilote pour le LCD i2c. Cela devrait être enregistré sous i2c_lcd_driver.py. Le code est disponible sur http://pastebin.com/ueu18fNL pour vous épargner la saisie.+La première série de code est une bibliothèque qui fonctionnera comme un 
 + pilote pour le LCD i2c. Cela devrait être enregistré sous  
 +i2c_lcd_driver.py. Le code est disponible sur  
 +http://pastebin.com/ueu18fNL pour vous épargner la saisie.
  
-Maintenant, nous allons faire un petit test pour nous assurer que tout fonctionne. Tapez le code suivant et enregistrez-le sous i2c_test1.pydans le même dossier que le pilote que nous venons d'écrire :+Maintenant, nous allons faire un petit test pour nous assurer que tout  
 +fonctionne. Tapez le code suivant et enregistrez-le sous i2c_test1.py  
 +dans le même dossier que le pilote que nous venons d'écrire :
  
 import i2c_lcd_driver import i2c_lcd_driver
 +from time import
  
-i2c_lcd_driver.lcd mylcd = ()+mylcd = i2c_lcd_driver.lcd()
  
-mylcd.lcd_display_string ( "Ceci est un test", 1)+mylcd.lcd_display_string("Ceci est un test",1)
  
-Si tout est correct, vous devrez voir « Ceci est un test » à la position du premier caractère de la première ligne de l'écran LCD. Si c'est bon, nous pouvons continuer. Le code suivant est pratiquement le même que le mois dernier, modifié pour utiliser l'affichage i2c au lieu de la version parallèle.+Si tout est correct, vous devrez voir « Ceci est un test » à la position 
 + du premier caractère de la première ligne de l'écran LCD. Si c'est bon, 
 + nous pouvons continuer. Le code suivant est pratiquement le même que le 
 + mois dernier, modifié pour utiliser l'affichage i2c au lieu de la  
 +version parallèle.
  
-Ceci termine plutôt bien notre présentation des écrans LCD et i2c. Nous utiliserons les écrans LCD i2c et d'autres dispositifs i2c à l'avenir ; vous devrez donc les garder en sécurité pour plus tard. Le mois prochain, nous allons commencer à travailler avec les moteurs, les servos et les moteurs pas-à-pas. Donc, dépêchez-vous de vous procurer un moteur de loisir pour être prêt. Dans quelques mois, nous allons commencer à travailler avec le microcontrôleur Arduino, puis apprendre à interfacer le RPi pour contrôler l'Arduino.+Cela termine notre présentation des écrans LCD et i2c. Nous  
 +utiliserons les écrans LCD i2c et d'autres dispositifs i2c à l'avenir ;  
 +vous devrez donc les garder en sécurité pour plus tard. Le mois  
 +prochain, nous allons commencer à travailler avec des moteurs, des  
 +servos et des moteurs pas-à-pas. Alors, dépêchez-vous de vous procurer un « hobby motor » 
 + (un moteur miniature de loisirs) pour être prêt. Dans quelques mois, nous allons  
 +commencer à travailler avec le microcontrôleur Arduino, puis apprendre à 
 + interfacer le RPi pour contrôler l'Arduino.
  
-Jusque-là, amusez vous.+Jusque-là, amusez vous bien.
issue112/python.1473666106.txt.gz · Dernière modification : 2016/09/12 09:41 de d52fr