Bob's Output Board : Différence entre versions
m (Fin Redac) |
m (→Coût) |
||
Ligne 13 : | Ligne 13 : | ||
==Coût== | ==Coût== | ||
− | 20€ + PCB + Arduino/RasberryPi | + | 20€ de composants + PCB + Arduino/RasberryPi |
==Niveau de difficulté== | ==Niveau de difficulté== |
Version du 1 avril 2015 à 14:09
Sommaire
Présentation
Le projet BOB est une interface permettant la commande d'éléments de puissance (éclairages, moteurs, etc...) fonctionnant en courant continu par un raspberry, arduino, etc... Il consiste en une carte proposant 8 sorties. La carte BOB se commande en logique 0 / 5V autorisant sa commande directe par un arduino, mais également par un Raspberry, malgré la logique 3.3V de ce dernier.
On peut virtuellement connecter autant de cartes BOB à la suite que nécessaire pour obtenir le nombre de sorties requises. Dans la pratique, ce nombre est limité par la longueur des fils possible (des fils trop longs induisent des parasites sur les signaux de commande), et le courant que peut délivrer l'appareil de contrôle. Sur un raspberry, il est possible de chainer 4 BOB sans problèmes (en maintenant des fils courts), un nombre plus important nécessitera l'ajout d'un buffer entre le raspberry et les BOBs.
L'ensemble des éléments du projets, incluant le schéma et le typon (projet KICAD), sont disponibles sur la page GitLab de BOB.[1]
Coût
20€ de composants + PCB + Arduino/RasberryPi
Niveau de difficulté
Hardware
Présentation
La carte est construite autour d'un circuit intégré 74HC595, qui contrôle 8 transistors MOSFETs, assurant chacun la commutation d'une sortie.
Chaque sortie peut supporter un courant inférieur à un ampère (cette valeur n'est fixée pour l'instant que par la largeur des pistes, et la capacité des borniers, mais pourrait être augmentée), être protégé par fusible réarmable (polyswitch), et posséder une LED indiquant son état.
La carte BOB possède plusieurs connecteurs
- 2 connecteurs à 8 broches en haut de la carte : BOBLinkIn (en haut) et BOBLinkOut (en dessous).
- 8 borniers latéraux : chaque bornier correspond à une sortie
- 1 bornier en bas : alimentation de puissance ( tension continue ).
Le pinout des connecteurs de BOBLink est le suivant (BOB vue de face, connecteur de contrôle en haut, pin de gauche à droite) :
- N/A : ce pin n'est relié à rien, mais est transmis à la carte BOB suivante.
- VCC : alimentation de la carte en +5V
- GND : masse de la carte
- G : contrôle de désactivation des sorties : 0V = sorties activée, 5V = sorties désactivées
- RCK : contrôle de validation des données : sur front montant (0V -> 5V) les données transmises sont appliquées aux sorties
- SCK : horloge : sur front montant, provoque le décalage des données.
- SCLR: reset des données, 0V pour reset
- D : donnée d'entrée pour le connecteur d'entrée, de sortie pour le connecteur de sortie.
Chacun de ces signaux correspond directement aux signaux du même nom dans la documentation du circuit intégré 74HC595
Plusieurs cartes BOB peuvent être connectées en cascades, pour cela, on relie le connecteur BOBLinkOut d'une carte au BOBLinkIn de la suivante.
Caractéristiques
- 8 sorties par cartes.
- Consommation typique ( rail Vcc ) : 10mA
- Tension maximale commutable : 50V (limitée par les diodes)
- Courant maximal cummutable par sortie : 1A
Versions
- v1 : Projet initial
- v2 : Ajout d'un filtre sur l'entrée de validation RCK afin de minimiser l'influence des parasites electro-magnétiques, et de trous de fixation
Composants
Pour fabriquer une BOB v2, les composants suivants sont nécessaires :
- 1 x Circuit intégré 74HC595
- 1 x Support de circuit intégré 16 broches ( optionnel, utile si l'on veut pouvoir remplacer le CI )
- 1 x Réseau de résistance SIL 10kOhms
- 1 x Condensateur céramique 0.47 µF (capable de supporter au moins 5v)
- 1 x résistance de 1kOhms
- 1 x Condensateur de 10nF
- 8 x LEDs 5mm ou 3 mm
- 8 x Résistances 2.7kOhms 1/4W (la valeur exact importe peut, mais influence la luminosité des LEDs)
- 8 x Transistors MOSFET IRF620
- 8 x Diodes de redressement 1N5401 à 1N5407
- 8 x Polyswitch (optionnel, permet la protection des sorties, sinon les remplacer par des shunts)
- 9 x Bornier 2 broches
- Au moins 16 unités de barrette sécable
- Un PCB vierge d'au moins 75mm de coté.
Construction
Une fois le PCB réalisé à partir du typon disponible dans le projet Kicad
Utilisation avec une carte Arduino
Câblage
Seule la première interface BOB doit être reliée à l'arduino. Relier respectivement ses broches VCC et GND aux broches VCC et GND de l'arduino. Relier ensuite les 5 autres broches de l'interface BOB à 5 sorties numériques de l'arduino.
Programme
Utilisation de la librarie BOB pour arduino : Son installation est simple, il suffit de copier le dossier BOB dans le répertoire des librairies Arduino (~/sketchbook/libraries/)
#include <BOB.h> //A ajouter au début du fichier BOB bob(7,6,5,4,3,1); //On déclare 1 bob connecté aux pins 7,6,5,4,3 de l'arduino (les pins sont dans l'ordre du connecteur BOBLink) void setup() { bob.write(0,0b10100101); //La méthode write permet d'écrire toutes les sorties d'un bob en même temps (le premier bob a pour numéro 0) } void loop() { delay(1000); bob.writePin(0,2,HIGH); //La méthode writePin permet de changer l'état d'une seule sortie, ici troisième sortie ( numéro 2 ) de la première BOB ( numéro 0 ) bob.writePin(0,5,LOW); delay(1000); bob.writePin(0,5,HIGH); bob.writePin(0,2,LOW); }
Utilisation avec un Raspberry Pi
Les logiciels permettant l'utilisation d'un ou plusieurs BOB depuis un Raspberry Pi sont disponibles sur la page suivante : https://gitlab.com/bobsoutputboard/raspberrybob
Leur fonctionnement nécessite d'avoir installé WiringPi sur votre Raspberry Pi. La procédure d'installation de WiringPi est décrite sur la page suivante : http://wiringpi.com/download-and-install/
Câblage
Seule la première interface BOB doit être reliée au Raspberry. Relier respectivement ses broches VCC et GND aux broches VCC(+5V) et GND du raspberry. Relier ensuite les 5 autres broches de l'interface BOB à 5 GPIO du raspberry.
Installation
Récupérer l'intégralité des fichiers présents sur la page GitLab:
$ git clone git://gitlab.com/bobsoutputboard/raspberrybob.git
Se placer dans le dossier créé :
$ cd raspberrybob
Lancer la compilation
$ make
Modifier éventuellement la ligne 16 du fichier init-script pour qu'elle corresponde à votre câblage :
OPTS="--gpioG=2 --gpioRCK=3 --gpioSCK=4 --gpioSCLR=14 --gpioD=15 --bob-number=1"
Les options dont le nom commence par gpio doivent prendre un numéro de GPIO en paramètre. Chacune correspond à un pin de la carte BOB. Ces options permettent d'indiquer au daemon BobControl quels GPIO permettent le dialogue avec les interfaces BOB.
Lancer ensuite l'installation
$ sudo make install
Il est possible de tester le fonctionnement avec les scripts dont le nom commence par test.
En cas de nécessité, la désinstallation de tous les programmes liés à BOB peut être réalisée avec la commande suivante :
$ sudo make uninstall
Le daemon bobControl
Ce logiciel tourne en arrière-plan, et assure l'envoi des ordres aux carte BOBs.
Il suffit d'écrire dans le fichier /dev/bob l'état de chaque sortie, et bobControl effectue les opérations nécessaires, une fois le fichier refermé.
Le mécanisme [Inotify] est utilisé pour détecter toute écriture du fichier /dev/bob.
Chaque sortie est matérialisée dans le fichier /dev/bob par un caractère 0 ou 1.
Le nombre de caractère présents dans le fichier reflète donc le nombre total de sorties (cette valeur dépend du paramètre bob-number saisi précédemment lors de l'édition du fichier init-script)
Tout caractère différent de 0 ou 1 est ignoré.
Si le nombre de caractère n'est pas conforme, bobControl supprime les caractères en excédent, ou ajoute des caractères 0.
Écrire stop au début du fichier /dev/bob provoque l'arrêt du démon, après avoir désactivé toutes les sorties des BOBs connectées.
Il est possible de lire à tout moment ce fichier, pour obtenir le dernier état supposé des sorties (la liaison BOBLink étant unidirectionnel, il est impossible d'en connaitre l'état réel).
Exemple :
$ echo "01010101" > /dev/bob
Active la moitié des sorties sur la première interface BOB.
$ echo "0000000011111111" > /dev/bob
Désactive toutes les sorties de la première interface BOB, et active celle de la seconde BOB (si présente)
La commande bob
La commande bob offre un accès simplifié pour manipuler indépendamment chaque sortie sans passer par le fichier /dev/bob
Sa syntaxe est calquée sur celle de la [commande gpio du projet wiringPi] :
$ bob readall
Affiche un résumé du dernier état supposé des sorties.
$ bob output-number
Affiche le nombre total de sorties disponibles
$ bob read outputNumber
Affiche l'état supposé de la sortie de numéro outputNumber
$ bob write outputNumber value
Pilote la sortie de numéro outputNumber, met son état à value (0 ou 1).
$ bob toggle outputNumber
Inverse l'état de la sortie de numéro outputNumber
$ bob writeall value
Pilote toute les sorties, met leur état à value (0 ou 1).
L'interface web BOBINE (Bob's Output Board Interface for Network Experimentations)
L'interface BOBINE permet de contrôler simplement un ou plusieurs BOB avec une interface web.
C'est un simple script en PHP, qui utilise le programme BOB. Il lit les ports, et permet d'en changer l'état.
Le code est visible sur GitLab à l'adresse: [2]
Yogi: toute collaboration serait la bienvenue pour avancer sur cette partie. HTML/PHP/CSS vous voulez donner un coup de main ? -> belin.nicolas@gmail.com
Liens
Présentation sommaire de BOB sur le site de Pila : http://pila.fr/wordpress/?p=739
Page GitLab du projet BOB : https://gitlab.com/bobsoutputboard
Auteurs
- Pila
- Yogi