Bob's Output Board : Différence entre versions

De L'abscisse - FabLab et Hackerspace de Dijon
Aller à : navigation, rechercher
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

Une interface BOB v2 réalisée au FabLab
BOB assurant le contrôle d'un ventilateur

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é

Orange.png

Hardware

Présentation

Le typon de la version 1

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.

BOBINE.PNG

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