issue117:tutoriel2
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
issue117:tutoriel2 [2017/02/06 08:57] – d52fr | issue117:tutoriel2 [2017/02/07 11:54] (Version actuelle) – auntiee | ||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
Our test scenario will be to turn the RPi into a lighting manager, that controls three separate lighting circuits from a Free Vision interface. Each circuit will be controlled by a simple On/Off press button. ** | Our test scenario will be to turn the RPi into a lighting manager, that controls three separate lighting circuits from a Free Vision interface. Each circuit will be controlled by a simple On/Off press button. ** | ||
- | Dans la partie précédente de cette série, nous avons vu plusieurs façons | + | Dans la partie précédente de cette série, nous avons vu plusieurs façons |
Notre scénario de test transformera le RPi en gestionnaire d' | Notre scénario de test transformera le RPi en gestionnaire d' | ||
Ligne 15: | Ligne 15: | ||
Le circuit matériel | Le circuit matériel | ||
- | Les modèles 2 et 3 du Raspberry Pi ont conservé | + | Les modèles 2 et 3 du Raspberry Pi ont conservé |
- | Les circuits qui seront connectés au RPi pour faire fonctionner le logiciel seront de simples LED, bien que, dans un vrai circuit, celles-ci seraient remplacées par un adaptateur à haute impédance (probablement un isolateur optique, un relais ou un triac) qui nous permettrait de piloter des circuits électriques classiques sur le secteur. Pour l' | + | Les circuits qui seront connectés au RPi pour faire fonctionner le logiciel seront de simples LED, bien que, dans un vrai circuit, celles-ci seraient remplacées par un adaptateur à haute impédance (probablement un optocoupleur, un relais ou un triac) qui nous permettrait de piloter des circuits électriques classiques sur le secteur. Pour l' |
**LEDs need to avoid high current values, with about 15 mA being a safe limit for most robust parts. On the other hand, the RPi’s GPIO ports have even lower working values (2 to 12 mA) both as a source (providing current to drive an external circuit) or as a sink (ground return). This means we need to insert some way of limiting current in series with the LEDs - or risk overloading both the LEDs and the Raspberry Pi itself. A simple way of doing this is to insert a simple resistor into the common ground. We will be using a 1 kΩ part here, though 2.2 kΩ would probably be safer. | **LEDs need to avoid high current values, with about 15 mA being a safe limit for most robust parts. On the other hand, the RPi’s GPIO ports have even lower working values (2 to 12 mA) both as a source (providing current to drive an external circuit) or as a sink (ground return). This means we need to insert some way of limiting current in series with the LEDs - or risk overloading both the LEDs and the Raspberry Pi itself. A simple way of doing this is to insert a simple resistor into the common ground. We will be using a 1 kΩ part here, though 2.2 kΩ would probably be safer. | ||
Ligne 25: | Ligne 25: | ||
To make connections to the RPi, we would need electric cords with female connectors to slip over the RPi’s male pins. However, a typical breadboard will need cords with male pins at their ends. I had no cords with male connectors so, instead of soldering normal cords directly to the Raspberry Pi, I connected several to a short strip of header that can then be placed and removed at will from the computer.** | To make connections to the RPi, we would need electric cords with female connectors to slip over the RPi’s male pins. However, a typical breadboard will need cords with male pins at their ends. I had no cords with male connectors so, instead of soldering normal cords directly to the Raspberry Pi, I connected several to a short strip of header that can then be placed and removed at will from the computer.** | ||
- | Les forts courants doivent être évités sur les LED, 15 mA étant une limite de sécurité pour la plupart des pièces de qualité. D'un autre côté, les port GPIO du RPi ont plutôt des valeurs de travail plus basses (entre 2 et 12 mA) , comme source (fournissant du courant à un circuit extérieur) ou comme xx (retour à la masse). Ceci signifie que nous avons besoin d' | + | Les forts courants doivent être évités sur les LED, 15 mA étant une limite de sécurité pour les appareils les plus robustes. Par ailleurs, les port GPIO du RPi ont plutôt des valeurs de travail plus basses (entre 2 et 12 mA), comme source (fournissant du courant à un circuit extérieur) ou en absorption |
- | Sur le diagramme tracé avec Fritzing, le vert, le jaune et le bleu seront utilisés respectivement pour les circuits 1, 2 et 3. Fritzing a aussi une représentation du RPi 2 dans sa bibliothèque, | + | Sur le diagramme tracé avec Fritzing, le vert, le jaune et le bleu seront utilisés respectivement pour les circuits 1, 2 et 3. Fritzing |
- | Pour réaliser les connexions au RPi, nous aurons besoin de câbles électriques avec des connecteurs femelles pour les appliquer aux picots mâles du RPi. Cependant, une plaque d' | + | Pour réaliser les connexions au RPi, nous aurons besoin de câbles électriques avec des connecteurs femelles pour les embrocher dans les picots mâles du RPi. Cependant, une plaque d' |
**Controlling the GPIO from Free Pascal | **Controlling the GPIO from Free Pascal | ||
Ligne 49: | Ligne 49: | ||
Piloter les GPIO depuis Free Pascal | Piloter les GPIO depuis Free Pascal | ||
- | Il y a plusieurs projets pour construire une « unit » en Pascal qui pilote les GPIO. Cependant, | + | Il y a plusieurs projets pour construire une « unit » en Pascal qui pilote les GPIO. Cependant, pour rendre les choses plus intéressantes, |
echo 16 > / | echo 16 > / | ||
Ligne 55: | Ligne 55: | ||
echo out > / | echo out > / | ||
- | Nous voyons bien que les pots sont activés à un moment en listant les contenus du répertoire / | + | Nous voyons bien que les ports sont activés à un moment |
- | Maintenant, pour activer GPIO 16 (mettre la sortie à 5 V), ou l' | + | Maintenant, pour activer GPIO 16 (mettre la sortie à 5 V), ou l' |
echo 1 > / | echo 1 > / | ||
Ligne 75: | Ligne 75: | ||
echo 16 > / | echo 16 > / | ||
- | Comme vous le voyez, l' | + | Comme vous le voyez, l' |
- | C'est plus facile de référencer les numéros des ports et les valeurs sous forme de chaînes ; si ils sont passé | + | C'est plus facile de référencer les numéros des ports et les valeurs sous forme de chaînes ; s'ils sont passés |
**Finally, procedure release will unexport the port. All of these are rather simple to code, and the complete unit is available at this link: http:// | **Finally, procedure release will unexport the port. All of these are rather simple to code, and the complete unit is available at this link: http:// | ||
Ligne 90: | Ligne 90: | ||
sudo ./test10** | sudo ./test10** | ||
- | Enfin, la procédure release « dé-exportera » le port. Tout ceci est plutôt simple à coder, et l'unit complète est disponible par ce lien : http:// | + | Enfin, la procédure release « dé-exportera » le port. Tout ceci est plutôt simple à coder, et l'unit complète est disponible par ce lien : http:// |
+ | |||
+ | Un programme simple pour tester cette unit pourrait être : | ||
Pour compiler et exécuter ce programme, nous devrons compiler à la fois l'unit et le programme lui-même, et, ensuite, exécuter le fichier binaire comme root : | Pour compiler et exécuter ce programme, nous devrons compiler à la fois l'unit et le programme lui-même, et, ensuite, exécuter le fichier binaire comme root : | ||
Ligne 125: | Ligne 127: | ||
App, Objects, Menus, Drivers, Views, Dialogs, MsgBox, StdDlg; | App, Objects, Menus, Drivers, Views, Dialogs, MsgBox, StdDlg; | ||
| | ||
- | l' | + | L' |
- | Enfin, LightsDialog aura besoin d'une procédure HandleEvent pour répondre aux appuis sur les boutons. Ceci est un brin pénible, car nous aurons besoin de détecter un appui sur un bouton pour chaque bouton, et pour chacun d'eux de déterminer si nous passons d' | + | Enfin, LightsDialog aura besoin d'une procédure HandleEvent pour répondre aux appuis sur les boutons. Ceci est un brin pénible, car nous aurons besoin de détecter un appui sur un bouton pour chaque bouton et, pour chacun d'eux, de déterminer si nous passons d' |
**The complete code for this program is available here: http:// | **The complete code for this program is available here: http:// | ||
Ligne 135: | Ligne 137: | ||
To go further, the interested reader could modify the application so that the second circuit switches on at the press of a button, and then turns off when a set time-period has elapsed. A slider could be provided to fine tune the delay time. The third circuit could also be set up to turn on and off at specific times during the day.** | To go further, the interested reader could modify the application so that the second circuit switches on at the press of a button, and then turns off when a set time-period has elapsed. A slider could be provided to fine tune the delay time. The third circuit could also be set up to turn on and off at specific times during the day.** | ||
- | Le code complet de ce programme est disponible ici : http:// | + | Le code complet de ce programme est disponible ici : http:// |
- | Dans cette septième partie de notre série sur Free Pascal, nous avons vu comme le Raspberry Pi peut être câblé | + | Dans cette septième partie de notre série sur Free Pascal, nous avons vu comment câbler |
Pour approfondir, | Pour approfondir, | ||
Ligne 145: | Ligne 147: | ||
It is also wise to remember that any current over 10 to 15 mA going in or coming out can seriously damage the Raspberry Pi, so an optical isolator or some equivalent means of disconnecting the RPi from the load’s level of current will be a must.** | It is also wise to remember that any current over 10 to 15 mA going in or coming out can seriously damage the Raspberry Pi, so an optical isolator or some equivalent means of disconnecting the RPi from the load’s level of current will be a must.** | ||
- | D'un point de vue matériel, nos trois bonnes LED peuvent être remplacées par des choses plus grosses. Cependant, se lancer dans un circuit sur le secteur avec des tensions de 110 V à 250 V ne devrait pas se faire sauf à être un électricien qualifié | + | D'un point de vue matériel, nos trois bonnes LED peuvent être remplacées par des choses plus conséquentes. Cependant, se lancer dans un circuit sur le secteur avec des tensions de 110 V à 250 V ne devrait pas se faire, sauf à être un électricien qualifié |
- | Il est aussi avisé de rappeler que tout courant de 10 à 15 mA entrant ou sortant du Raspberry Pi peut l' | + | Il est aussi avisé de se rappeler que tout courant de 10 à 15 mA entrant ou sortant du Raspberry Pi peut l' |
//Textes en noir dans les zones saumon :// | //Textes en noir dans les zones saumon :// | ||
+ | |||
__p 29 à droite__ | __p 29 à droite__ | ||
**The complete code to set up a port for writing is rather simple:** | **The complete code to set up a port for writing is rather simple:** | ||
- | Le code complet pour paramétrer un port en écriture est plutôt simple : | + | Le code complet pour paramétrer un port en écriture est plutôt simple : |
**Other procedures used are port_write to write to a GPIO port, and function port_read to read from a port that has been configured in the ‘in’ direction: | **Other procedures used are port_write to write to a GPIO port, and function port_read to read from a port that has been configured in the ‘in’ direction: | ||
- | Les autres procédures utilisées sont port_write pour écrire sur un port GPIO et la fonction port_read pour lire sur un port qui a été configurée | + | Les autres procédures utilisées sont port_write pour écrire sur un port GPIO et la fonction port_read pour lire sur un port qui a été configuré |
__p 30 à gauche__ | __p 30 à gauche__ | ||
Ligne 164: | Ligne 167: | ||
**The LightsDialog type will need a few more elements to work. We will need to keep track of the state of each circuit (True for on, False for off). If we wish to be able to change the caption on each button to reflect the state of the circuit, we will also need to access these buttons from the main Dialog object, so include buttons 1 , 2 and 3 in its declaration: | **The LightsDialog type will need a few more elements to work. We will need to keep track of the state of each circuit (True for on, False for off). If we wish to be able to change the caption on each button to reflect the state of the circuit, we will also need to access these buttons from the main Dialog object, so include buttons 1 , 2 and 3 in its declaration: | ||
- | Le type LightsDialog a besoin de quelques éléments supplémentaires pour fonctionner. Nous devons garder une trace de l' | + | Le type LightsDialog a besoin de quelques éléments supplémentaires pour fonctionner. Nous devons garder une trace de l' |
**We will also need several constants, both to identify which GPIO ports will be used to control each circuit, and to store the command identification codes that each button will emit when pressed:** | **We will also need several constants, both to identify which GPIO ports will be used to control each circuit, and to store the command identification codes that each button will emit when pressed:** | ||
Ligne 174: | Ligne 177: | ||
**The LightsDialog can be initialized in a very simple manner. All we need to do is set up the buttons, and then add some code at the end of this constructor to initialize button states for the software, and set up the hardware correctly: | **The LightsDialog can be initialized in a very simple manner. All we need to do is set up the buttons, and then add some code at the end of this constructor to initialize button states for the software, and set up the hardware correctly: | ||
- | LightsDialog peut être initialisé de manière très simple. | + | LightsDialog peut être initialisé de manière très simple. |
issue117/tutoriel2.1486367864.txt.gz · Dernière modification : 2017/02/06 08:57 de d52fr