vendredi 30 août 2013

Comment utiliser le MCP23017 I2C Port Expander Avec le Raspberry Pi - Partie 2

Dans "Comment utiliser le MCP23017 I2C Port Expander Avec le Raspberry Pi - Partie 1", J'ai expliqué comment configurer votre Pi pour utiliser I2C pour que vous puissiez connecter un "16-bit extension de port MCP23017" à elle.  
Si vous avez suivi cet article et obtenu votre circuit vous êtes prêt à contrôler la puce en utilisant un script Python simple.

Dans cet article, nous allons nous concentrer sur le contrôle des sorties. Nous utilisons les trois premiers axes de l'ensemble "AMP". Il y a une autre série de huit broches (GPB0 - GPB7) qui peuvent être contrôlés de la même manière avec quelques modifications de code.

Pour ce type de projet une calculatrice qui peut convertir entre binaire, décimal et hexadécimal est extrêmement utile. Il y a beaucoup de calculatrices qui peuvent le faire et sont disponible pour votre système d'exploitation, si vous utilisez un ordinateur de bureau ou portable.  

Un convertisseur binaire, facile à utiliser, peut être trouvé ici.


Script Python pour les Sorties

Voici un exemple de script qui comptera 1-8 définir les trois premières broches AMP que ça se passe:
1:  import smbus  
2:  import time  
3:  bus = smbus.SMBus(0) # Rev 1 Pi uses 0  
4:  #bus = smbus.SMBus(1) # Rev 2 Pi uses 1  
5:  DEVICE = 0x20 # Device address (A0-A2)  
6:  IODIRA = 0x00 # Pin direction register  
7:  OLATA = 0x14 # Register for outputs  
8:  GPIOA = 0x12 # Register for inputs  
9:  # Set all GPA pins as outputs by setting  
10:  # all bits of IODIRA register to 0  
11:  bus.write_byte_data(DEVICE,IODIRA,0x00)  
12:  # Set output all 7 output bits to 0  
13:  bus.write_byte_data(DEVICE,OLATA,0)  
14:  for MyData in range(1,8):  
15:   # Count from 1 to 8 which in binary will count  
16:   # from 001 to 111  
17:   bus.write_byte_data(DEVICE,OLATA,MyData)  
18:   print MyData  
19:   time.sleep(1)  
20:  # Set all bits to zero  
21:  bus.write_byte_data(DEVICE,OLATA,0)  

Vous pouvez le télécharger directement sur votre Pi en utilisant:

wget  http://www.raspberrypi-spy.co.uk/archive/python/i2c_outputs.py

 Vous pouvez exécuter le script avec la commande suivante: 

sudo python i2c_outputs.py 

Le script ci-dessus effectue les actions suivantes: 
Importe les bibliothèques smbus et le time.
Crée un objet smbus appelé "bus" Configure certaines constantes 
Définit toutes les broches AMP comme sorties 
Définit toutes les broches AMP à zéro 
Compte Des valeurs de 1 à 8 et définit les broches AMP à l'équivalent binaire d'attente 1 seconde entre chaque étape.
Rend finalement AMP à zéro 

Ce que vous devez voir est les témoins s'allument dans une séquence binaire: 

000.001.010.011.100.101.110.111 

La chose la plus importante à noter est que lors de l'envoi des données à un registre que vous avez à régler tous les 8 bits en une seule fois. 
Donc, pour configurer toutes les broches AMP comme sorties que vous envoyez 0000000 au registre IODIRA. 
Pour régler tous comme entrées que vous devez envoyer 1111111 binaire, hexadécimal ou 255 décimal ou 0xFF. Pour définir GPA0-3 comme sorties et GPA4-8 comme intrants nécessaires pour configurer 1111000 binaire, décimal ou hexadécimal 240 0xF0. 

C'est la même histoire pour le réglage des broches de sorties. 
Si vous avez configuré les broches AMP comme des sorties et vous souhaitez définir GPA1 élevé et tous les autres broches faible, vous devez envoyer 00000010 au registre Olata. 
Si vous souhaitez définir GPA2 et GPA7 haut vous enverriez 10000100. 

Traduction CBO, de la source : 

Comment utiliser le MCP23017 I2C Port Expander Avec le Raspberry Pi - Partie 1

Pour tout mes projets, j'ai utiliser le GPIO en standard avec ses entrées et ses sorties.
Cela donne un total de 17 broches pour jouer, mais comment faire si vous avez besoin de plus ?

La manière la plus rapide pour avoir plus d'entrées et de sorties est d'utiliser un "I/O Port Expander". Cet un appareillage qui vous permet de contrôler un nombre de ports utilisant les données que vous envoyer à ce périphérique.

D'autres personnes ont eu déjà beaucoup de succes en uilisant les périphériques I2C, c'est ainsi que j'ai décidé d'en tester un.
I2C est un protocole de communication série qui permet aux puces d'échanger des données sur le même bus. 
Un "Port Expander" prend les données et contrôle les broches appropriées. Cela permet à beaucoup de capteurs et de dispositifs pour être contrôlés en utilisant seulement quelques-uns des axes de l'IP GPIO. 

La configuration matérielle.

Le dispositif que j'ai choisi est une extension I2C MCP23017 de port avec un total de 16 ports. Pour piloter ce dernier, vous utilisez les deux broches I2C sur GPIO l'en-tête du Pi (broches 3 et 5). Cela nous donnerait 31 (15 + 16) entrées ou sorties pour jouer avec!


Il est effectivement possible de piloter plusieurs extensions de port vous donner un énorme coup de pouce du nombre d'entrées ou de sorties. Ajout d'un autre MCP23017 augmenterait le nombre GPIO 31 à 47 (15 + 16 + 16). Le tout pour quelques euros.

Le grand avantage de ces dispositifs est qu'ils ne coûtent pas cher (+/- 5€ pièce) et nécessitent très peu de composants externes.

Dans cet exemple, j'ai 3 LED et un bouton poussoir raccordé à l'appareil qui est entraînée par les deux broches I2C sur le Pi:


Broche 9 (VDD) est connectée à 3,3 V
Broche 10 (VSS) est reliée à la masse
Broche 12 (SCL) est relié à la broche 5 sur la Pi GPIO 

Broche 13 (SDA) est relié à la broche 3 sur la Pi GPIO 
Broche18 (Reset) doit être placée très haut pour un fonctionnement normal si nous raccorder à 3.3V
     Les broches 15, 16 et 17 (A0-A2) déterminent le nombre affecté à cet appareil. Nous n'utilisez qu'un seul dispositif de sorte que nous allons lui donner un zéro binaire en mettant ces trois épingles à 0 (masse)


 




Voici une photo de mon circuit d'essai construit sur un petit morceau de plaque d'essai:


 La configuration logicielle.

Pour utiliser I2C sur le Pi vous devez activer quelques choses dans Raspbian qui n'est pas activée par défaut. C'est un processus assez facile. D'abord, vous devez éditer le fichier modules utilisant: 

sudo nano /etc/modules
 
and add the following two lines :
 
i2c-bcm2708
i2c-dev

Utilisez CTRL-X, puis Y, puis Retour pour enregistrer le fichier et de sortie.

Ensuite, vous devez modifier le fichier de liste noire des modules:
sudo nano / etc / modprobe.d / Raspi-blacklist.conf

et de mettre un symbole # au début des deux lignes de sorte qu'ils ressemblent à ceci:
# blacklist spi-bcm2708
# blacklist i2c-bcm2708

Utilisez CTRL-X, puis Y, puis Retour pour enregistrer le fichier et de sortie.  
La dernière étape consiste à installer des services publics, nous pouvons utiliser 
pour tester notre configuration I2C:

sudo apt-get install i2c-tools python-smbus

Une fois cette opération terminée, vous pouvez éteindre votre Pi en utilisant:

sudo halt

Attendez dix secondes, couper l'alimentation de votre Pi et 
vous êtes maintenant prêt à raccorder votre circuit.
 
Tester le matériel. 
 
Une fois que vous avez connecté votre matériel et fait une double vérification du câblage.  
Assurez-vous que 3.3V va aux broches correctes et vous avez pas les courts-circuits . 
Alimentez le Pi et attendez qu'il démarre .
Si vous avez un Rev 2 Pi puis tapez la commande suivante :
sudo i2cdetect - y 1
Si vous avez un Rev 1 Pi puis tapez la commande suivante :
sudo i2cdetect - y 0
Pourquoi cette différence? Entre le Rev 1 et Rev 2 versions du Pi ils ont changé les signaux qui sont allés 
aux broches 3 et 5 sur l'en-tête GPIO . 
Cela a changé le numéro du périphérique qui doit être utilisé avec I2C de 0 à 1 .
J'ai utilisé un Rev 1 Pi et ma sortie ressemble à ceci :
 
 pi @ RaspberryPi ~ $ sudo i2cdetect - y 0
      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F 
00:           -- -- -- -- -- -- -- -- -- -- -- -- --
10:  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20:  20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30:  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40:  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50:  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60:  -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70:  -- -- -- -- -- -- -- -- 
 
Cela montre que j'ai un appareil connecté et son adresse est 0 × 20 (32 en décimal) .  
C'est parce que les trois broches d'adresse sont attachées bas .  
Si vous réglez A0 élevé l'adresse deviendrait 0 × 21 (33 en décimal) .  
Comment vous définissez A0, A1 et A2 est à vous, mais tous vos périphériques I2C doivent avoir 
une adresse unique. 
Test de ligne de commande
Pour faire un test rapide , nous pouvons utiliser la ligne de commande pour activer la LED sur GPA0 :
Nous avons d'abord configurer le port A broches GPA0 - 6 comme sorties et GPA7 comme entrée. 
 (10000000 en binaire et 0 × 80 en hexadécimal ) :
i2cset -Y 1 0x20 0x80 0x00
Ensuite, nous avons mis en GPA0 à haute logique qui permettra à la LED:
i2cset - y 1 0x20 0x14 0x01
Pour éteindre la LED que nous utilisons:
i2cset - y 1 0x20 0x14 0x00
N'oubliez pas de remplacer le 1 par un 0 si vous utilisez une carte 1 Rev .
Il est temps de commencer à utiliser ces GPIOs supplémentaires ...

Découvrez comment faire pour utiliser un MCP23017 duplicateur de port I2C avec le 
Raspberry Pi - Partie 2 pour savoir comment vous pouvez contrôler les sorties en utilisant des scripts Python.
 
  
Découvrez comment faire pour utiliser un MCP23017 duplicateur de port I2C avec le
 Raspberry Pi - Partie 3 pour savoir comment vous pouvez contrôler les entrées à l'aide de scripts Python . 
 
Voici quelques photos de mon circuit d'essai de référence : 
  
 
Traduction CBO, de la source : 


jeudi 29 août 2013

Un mini Mac Classic fonctionnel

Doté d'un écran 3,5" (512x384), il est construit autour d'une Raspberry Pi et fait tourner le système 6 en émulation.




C'est un très joli travail dont voici une vidéo.



Sources :
  •  http://www.macbidouille.com/news/2013/08/28/un-mini-mac-classic-fonctionnel 
  • http://www.engadget.com/2013/08/28/mini-classic-macintosh-made-with-raspberry-pi/

Bienvenue sur le Blog de RPIFBUG.


Qui sommes nous ?

RPIFBUG est l'acronyme de "Raspberry PI French Belgian Users Group", ce qui peut être traduit par "Groupe d'Utilisateurs Belges Francophones du Rapberry PI".



Le RPIFBUG est donc une association qui regroupe les utilisateurs du Rapberry PI de Belgique Francophone.


Le but de ce blog est de défendre et promouvoir les logiciels libres, dont Linux, des projets fonctionnant sur le Raspberry PI et d'informer la communauté de leur existence ainsi que de leur fonctionnement, avantages, et inconvénients. 
A travers nos actions nous espérons être des acteurs majeurs dans la lutte contre la fracture numérique, l'enfermement propriétaire, et participer à l'essort d'une informatique citoyenne.

Le RPIFBUG est composé de volontaires bénévoles. Les groupes d'utilisateurs de Linux incarnent naturellement l'idéal qui est celui des logiciels libres en général, idéal qui s'exprime dans leur désir à la fois d'échanger leurs connaissances et de mettre leurs compétences en commun avec la communauté, afin que tout le monde puisse enrichir son expérience.