Outils pour utilisateurs

Outils du site


issue104:tutoriel1

Table des matières

1

By the time you read this, it will probably be old news that there is a new Raspberry Pi that was released on November 26, 2015. It's called the Raspberry Pi Zero and the price is an unbelievable $5 U.S. or 4₤. I haven't had a chance to find any actual dimensions, but they say it is about the size of a stick of gum. So if you've been holding off getting your new Pi due to cost, now you don't have an excuse. We will discuss the Pi Zero in future articles. Now back to my Physical Programming series. This time we are going to start actually controlling things. Hopefully, you have been able to procure some LEDs, resistors, switches, jumpers and a breadboard. As we go through the series, I will be using a free design tool called Fritzing to provide a visual representation of what the project wiring should look like. You might want to get yourself a copy from their website (http://fritzing.org/home/). Not only can you keep copies of our projects locally, you also can have some fun designing your own circuits.

Au moment où vous lirez ces lignes, ce ne sera probablement plus d'actualité qu'un nouveau Rasperry Pi est sorti le 26 novembre 2015. Il s'agit du Raspberry Pi Zéro, au prix incroyable de 5$ US ou 4₤ ou encore moins de 5€. Je n'ai pas réussi à trouver ses dimensions réelles, mais il paraît qu'il est de la taille d'un chewing-gum. Donc, si vous étiez freiné par le prix pour acheter votre nouveau Pi, vous n'avez maintenant plus d'excuse. Nous discuterons du Pi Zero dans de prochains articles.

Maintenant, revenons à ma série de programmation dans le monde réel. Cette fois-ci, nous allons commencer à vraiment contrôler les choses. J'espère que vous avez été en mesure de vous procurer des LED, des résistances, des interrupteurs, des cavaliers et une plaque à trous.

Durant cette série d'articles, je vais utiliser un outil de conception gratuit appelé Fritzing pour fournir une représentation visuelle de ce à quoi le câblage du projet devrait ressembler.

Vous pouvez vous procurer un exemplaire sur leur site Web (http://fritzing.org/home/). Cela vous permettra non seulement de conserver localement des copies de nos projets, mais vous pourrez aussi vous amuser à concevoir vos propres circuits.

2

A Quick Discussion Of Our Components One more thing before we get started, which is a quick discussion on some of the electronic components we will be using this time, Resistors, LEDs and Switches. Resistors A resistor is a device that 'resists' the flow of electricity to a given extent. This will allow us to limit the amount of electricity that flows through a circuit or part of one. In the case of the LED projects, we will be using resistors so that they will reduce the amount of electricity flowing through the LED (and the GPIO pin), to keep it from burning out. For a more detailed discussion of resistors, please see: https://learn.sparkfun.com/tutorials/resistors. LEDs LEDs are Light Emitting Diodes and are the “standard” replacements for bulbs in just about everything. With a little care in design, they will last almost forever. An LED has two leads/wires called Anode and Cathode. The Anode is the positive side and the Cathode is the negative side. If you have a new LED directly out of the package, you will notice that one of the leads is longer than the other. That is the Anode or the positive side. If both leads on a new device are the same length (or if you are recycling parts from an old circuit board), look for the flat edge. That will always show the Cathode or negative lead.

Petit tour de nos composants

Une dernière chose avant de commencer : une discussion rapide sur certains des composants électroniques que nous utiliserons cette fois, des résistances, des LED et des interrupteurs.

Résistances

Une résistance est un dispositif qui « résiste » plus ou moins à la circulation de l'électricité. Cela nous permettra de limiter la quantité d'électricité qui circule dans un circuit ou une partie de circuit. Dans le cas des projets avec des LED, nous utiliserons des résistances pour réduire la quantité d'électricité qui passe à travers la LED (et la broche GPIO [Ndt : pour les entrées/sorties]), pour l'empêcher de brûler.

Pour une explication plus détaillée sur les résistances, vous pouvez regarder ici : https://learn.sparkfun.com/tutorials/resistors.

Les LED

Les LED sont des diodes électroluminescentes et sont les remplaçantes « standard » pour les ampoules de toutes sortes. En étant attentifs dans la conception, elles dureront presque éternellement. Une LED a deux bornes/fils appelés anode et cathode. L'anode est le côté positif et la cathode est le côté négatif.

Si vous sortez une nouvelle LED de sa boîte, vous remarquerez que l'un des fils est plus long que l'autre. C'est l'anode ou le côté positif. Si les deux fils sur une LED neuve ont la même longueur (ou si vous recyclez des composants d'un ancien circuit), cherchez le côté plat. Ce sera toujours le côté de la cathode ou côté négatif.

3

Switches The switch I chose to use for this project is one that easily mounts in the breadboard or on a circuit board. It is simply square with a small round momentary button on the top. It also has 4 pins. The trick is to know which two pins of the four will be the ones we need. You could take an ohm-meter and run across all the combinations of pins until you find the set that works, or you could just look at the layout of the pins that connect it to the breadboard. The two pins to be used have the leads that grip into the board pointing at each other. You only need one set of pins, so just pick the set you wish. Our First Project… Now let's get started with our first construction project. It's a very simple electronics version of “hello world”. We will connect a switch to one of the GPIO pins and monitor it to catch the press of the button. Shown right is the actual schematic that we will be working with. So we have a switch that is connected between ground pin and GPIO pin 17 which is physical pin 11. We also have an LED connected with its cathode to GPIO pin 18 (physical pin 12) and its anode connected to a resistor that connects to the 3.3volt pin on the Pi. It is at this point that you need to make a decision. Will you reference the pins by their position on the board, or the GPIO numbers. We'll get back to that in a minute. In the meantime, here's the wiring diagram…

Interrupteurs

L'interrupteur que j'ai choisi pour ce projet est un modèle qui se monte facilement dans la plaque à trous ou sur un circuit imprimé. Il est tout simplement carré avec un petit bouton rond sur le dessus. Il a également 4 broches. L'astuce est de trouver les deux broches dont nous avons besoin. Vous pourriez prendre un ohmmètre et essayer toutes les combinaisons de broches jusqu'à trouver un couple qui fonctionne, ou vous pouvez simplement regarder la disposition des broches qui le relient à la plaque à trous. Les deux broches à utiliser doivent s'insérer dans la plaque en se faisant face. Vous avez seulement besoin d'un couple de broches, choisissez celui que vous souhaitez.

Notre premier projet…

Maintenant, commençons notre premier projet de construction. C'est une version électronique très simple du « hello world » (« bonjour à tous »). Nous allons connecter un interrupteur à l'une des broches GPIO et la surveiller pour visualiser l'appui sur le bouton.

À droite se trouve le schéma exact avec lequel nous allons travailler.

Nous avons donc un interrupteur connecté entre la terre et la broche 17 du GPIO, qui est la broche physique 11. Nous avons aussi une LED connectée par sa cathode à la broche 18 du GPIO (broche physique 12) et dont l'anode est reliée à une résistance qui se connecte à la broche 3,3 V sur le Pi. C'est ici que vous devez prendre une décision. Allez-vous référencer les broches par leur position sur la carte ou par les numéros GPIO ? Nous y reviendrons dans une minute. En attendant, voici le schéma de câblage…

4

You can see on the breadboard the three components…the switch, the LED and the resistor. The first pin on the RPi is the one on the top right. That pin provides the 3.3 volts DC that we need to power our project. The pin below it is counted as pin #2. Pin #6 is a ground pin. Note that both of those pins have wire connectors that go to the long horizontal buses on the breadboard. Some breadboards have a “+” and “-” on the power bus to help you remember which bus is which. I also have a long jumper from the positive 3.3 volt bus at the top of the breadboard down to the bus on the bottom. It really doesn't matter which bus on the breadboard you use for your power, as long as you are consistent. There is a short jumper going from the top ground bus to one side of the switch and the other side of the switch connects to physical pin 11 on the RPi (or GPIO pin 17). As for the LED, the Cathode is connected to the physical pin 12 on the RPi (GPIO 18) and the Anode is connected to the resistor, which in turn is connected to the lower 3.3 volt bus. Also notice that the wiring is colour coded. Red will ALWAYS (in my diagrams) be a positive voltage, Black is for ground. Any other colors will mean interconnections for data.

Vous pouvez voir sur la plaque les trois composants : l'interrupteur, la LED et la résistance. La première broche sur le RPi est en haut à droite. Cette broche fournit les 3,3 V dont nous avons besoin pour alimenter notre projet. La broche en-dessous est la broche n° 2. La broche n° 6 est une broche de terre. Notez que ces deux broches sont connectées aux longs bus horizontaux sur la plaque à trous. Certaines plaques ont un « + » et un « - » sur le bus d'alimentation pour vous aider à les distinguer. J'ai aussi un long cavalier qui va du bus 3,3 V en haut de la plaque au bus du bas. Entre les deux, le bus que vous utilisez pour l'alimentation n'a vraiment pas d'importance, tant que vous êtes cohérent.

Il y a un cavalier court allant du bus de masse du haut à un côté de l'interrupteur, et l'autre côté de l'interrupteur est connecté à la broche physique 11 sur le RPi (ou broche 17 GPIO). Quant à la LED, la cathode est connectée à la broche physique 12 sur le RPi (18 du GPIO) et l'anode est connectée à la résistance, qui est à son tour reliée au bus 3,3 V inférieur. Notez également que le câblage est codé en couleur. Le rouge sera TOUJOURS (dans mes schémas) une tension positive, le noir étant pour la masse. Toutes les autres couleurs signifieront des interconnexions pour les données.

5

If you have been keeping up so far, you will notice that I am giving both the physical pin number as well as the BCM GPIO pin number. The “BCM” stands for Broadcom, and, in our code, we will have to tell the RPi.GPIO library if we are using board numbering or BCM numbering. This is the decision I was referring to earlier. In our code, we will have to be consistent with one numbering scheme or the other. In the code we are about to look at, I provide both, and you can comment out whichever one you don't want to use. My personal preference is to use the BCM GPIO numbers, but for this project, I will stick with the physical board pin numbers. Now let's get into the code. As always, I will break the code into parts and discuss each one. First (top right) we have to import the RPi.GPIO library, and we will alias it to the name “GPIO” to make things easier to type. Next, we define two variables; LedPin and BtnPin to the pin numbering scheme we wish to use. Here, I've decided to use the Physical pin numbering, since you probably don't have a breakout wedge yet. I've found the one from SparkFun to be very nice, but it gives you only the BCM numbers on the pins. Our next bit of code (shown below) will be a function called “setup”, where we set up the information for the library to use. Notice that the first line is commented out since I will be using the board numbering in this example, but it's there to show you how to make the call.

Si vous avez suivi jusqu'à présent, vous remarquerez que je donne à la fois le numéro de broche physique et le numéro de broche BCM GPIO. Le « BCM » signifie Broadcom, et, dans notre code, nous devrons indiquer à la bibliothèque RPi.GPIO la numérotation nous utilisons, physique ou BCM. D'où la décision dont je parlais plus tôt. Dans notre code, nous devrons être cohérents avec l'un ou l'autre système de numérotation. Dans le code que nous allons regarder, je fournis les deux, et vous pouvez commenter celui que vous ne voulez pas utiliser. Ma préférence personnelle est d'utiliser les numéros BCM GPIO, mais, pour ce projet, je vais rester sur les numéros physiques de broches. Maintenant, entrons dans le code.

Comme toujours, je vais découper le code en morceaux et expliquer chacun. D'abord (en haut à droite) nous devons importer la bibliothèque RPi.GPIO, et nous allons créer un alias « GPIO » pour rendre les choses plus faciles à saisir. Ensuite, nous définissons deux variables, LedPin et BtnPin, correspondant au schéma de numérotation des broches que nous souhaitons utiliser. Ici, je me suis décidé à utiliser la numérotation de broche physique, car vous n'avez probablement pas encore de nappe de connexion. J'ai trouvé celle de SparkFun très agréable, mais elle indique seulement le numéro BCM des broches. Notre prochain bout de code (ci-dessous) sera une fonction appelée « setup », dans laquelle nous réglons les informations sur la bibliothèque à utiliser.

Notez que la première ligne est commentée puisque je vais utiliser la numérotation de la carte dans cet exemple, mais elle est là pour vous montrer comment indiquer votre choix.

6

Lines 3 and 4 show how to define what the pins will be, either input or output, and if we use the internal pull up resistors built-in on the RPi or not. So basically this portion of the code says to use physical board pin numbers as references, and it defines the Output pin to drive the LED and the pin that the signal from the button will be coming in on. Also notice that we define the pin for the button to have a pull-up resistor. This means that the signal-line will be at 3.3 volts and when the button is pressed it is pulled down to ground. Our next function (following page, top right) is called loop, and, as the name suggests, we simply do a loop, checking the button input pin to see if it has been pulled low. If it has, then we turn the LED on, otherwise we set the LedPin to high. That might sound counter-intuitive, but remember we have the Anode connected to the 3.3 volt bus through the resistor. This means to turn the LED on, we have to pull the Cathode down to ground (0 volts) level to allow the LED to turn on. The destroy function (shown below) basically cleans up the states of the pins so we don't get any errors the next time we need to use them. Finally, we use the “main loop” (shown bottom) to call the routines in the proper order and to allow us an easy way to break out of the loop by pressing the Ctrl-C key sequence.

Les lignes 3 et 4 montrent comment définir le rôle des broches, entrée ou sortie, et si nous utilisons les résistances de rappel internes, intégrées sur le RPi, ou pas. Cette partie du code dit donc simplement d'utiliser les numéros physiques des broches comme références, et définit quelle broche de sortie pilotera la LED et par quelle broche le signal du bouton arrivera. Notez également que nous réglons la broche du bouton pour qu'elle ait une résistance de rappel. Cela signifie que le signal nominal sera à 3,3 V et que, lorsque le bouton est pressé, il sera ramené vers la terre.

Notre prochaine fonction (page suivante, en haut à droite) est appelée « loop » [Ndt : boucle] et, comme son nom l'indique, nous faisons simplement une boucle, pour vérifier si le signal sur la broche d'entrée du bouton a diminué. Si oui, alors nous allumons la LED, sinon nous relevons le LedPin. Cela peut sembler contre-intuitif, mais rappelez-vous que nous avons l'anode connectée au bus de 3,3 V à travers la résistance. Cela signifie que pour allumer la LED, nous devons ramener la cathode à la masse (0 V) pour permettre à la LED de s'allumer.

La fonction « destroy » (ci-dessous) nettoie simplement les états des broches, afin de ne pas recevoir d'erreurs la prochaine fois que nous allons les utiliser.

Enfin, nous utilisons la « boucle principale » (en bas) pour appeler les routines dans le bon ordre et pour permettre de sortir facilement de la boucle en appuyant sur Ctrl-C.

7

So, load the program into your RPi and run it. You will notice the text “…LED Off” keeps repeating on the screen until you press the button. That is due to the fact that our loop routine reads the level or status of the button pin and once the voltage goes low, it says “oh…the button input is low, so I need to turn on the LED”. One other thing to notice is that our first and second routines are named “setup” and “loop”. It is a good thing to keep this format, because when we get to the Arduino programming, these two routines are required. We are going to stop here for this month. I want the other authors to have room for their articles. Keep everything close at hand, because we will be using the same hardware setup next time. Enjoy playing for now and I will see you next month.

Voilà, chargez le programme dans votre RPi et exécutez-le. Vous remarquerez que le texte “… LED Off” se répète à l'écran jusqu'à ce que vous appuyiez sur le bouton. Cela est dû au fait que notre routine « loop » lit le niveau ou le statut de la broche du bouton, et une fois que la tension baisse, elle dit « oh… l'entrée du bouton est basse, donc je dois allumer la LED ».

Une autre chose à noter est que nos première et deuxième routines sont nommées « setup » et « loop ». C'est une bonne chose de garder ce format, car, quand nous arriverons à la programmation de l'Arduino, ces deux routines seront obligatoires.

Nous allons nous arrêter ici pour ce mois-ci, car je veux laisser de la place pour les articles d'autres auteurs. Gardez tout à portée de main, car nous allons utiliser la même configuration matérielle la prochaine fois.

Amusez-vous bien et je vous revois le mois prochain.

issue104/tutoriel1.txt · Dernière modification : 2016/01/12 14:22 de andre_domenech