Publié le 24 novembre 2015 - par

RaspiO’Mix+ : des E/S compatibles Grove pour le Raspberry Pi

raspio_250pxCharles a créé DigitalSpirit en 2004 pour partager ses idées, ses projets, au travers de divers support : Un blog, un wiki qui lui permet de publier simplement ses projets/docs/etc… un forum et enfin, un espace d’échange de fichiers (datasheet, docs…).
Le tout sous  licence Creative Commons BY-NC-SA, tiens, comme framboise314 😉
Charles a créé (entre autres) la carte RaspiO’Mix+ qui ouvre les monde de Grove au Raspberry Pi. Lorsqu’il m’a proposé de l’essayer, j’ai tout de suite accepté avec enthousiasme !

La carte RaspiO’Mix

Open Source Hardware

oshw-logoL’intérêt de RaspiO’Mix+, outre le fait d’ouvrir le monde de Grove au Raspberry Pi, est que cette carte est développée en open source hardware, c’est à dire que vous trouverez en ligne les schémas, dessins des circuits imprimés. La librairie Python est également disponible en open source.

Charles m’ayant fourni gracieusement ce matériel, c’est donc un

=========== Article Sponsorisé ===========

Made in France

made_in_francePour compléter le tableau en beauté, je vous dirai que la carte est… fabriquée en France ! Si, si, ça existe encore ! 😀
C’est d’ailleurs ce qui saute aux yeux à l’ouverture du colis contenant le matériel :

raspio_03Allez, brisons ce sceau qui se fait de plus en plus rare. Faites attention que la larme d’émotion  qui roule sur votre joue ne tombe pas sur la carte 🙂

Starter Kit RaspiO’Mix+

En fait en déballant le matériel, je m’aperçois que Charles m’a envoyé le Starter Kit ! (Merci 😉 ) je vous propose de le découvrir avec moi :

La carte RaspiO’Mix

C’est une carte au format HAT qui vient se fixer sur le Raspberry Pi via le connecteur GPIO 40 broches :

raspio_25

Des entretoises métalliques sont fournies pour assurer un montage rigide et une bonne tenue de l’ensemble.

raspio_15A noter que dans la version définitive un jeu de rondelles est prévu pour compenser la (légère) différence de hauteur entre les entretoises et le connecteur GPIO.

raspio_31Jetons maintenant un coup d’œil à la carte RaspiO’Mix

raspio_02Ce qui frappe le plus lorsqu’on sort la carte de son sachet c’est le nombre de prises… 8 pour les E/S analogiques (AN), 8 pour les E/S numériques (IO), 3 bus I2C et un bus série… Il y a aussi 2 DIP switchs (en rose en haut à droite)

Le schéma de la carte RaspiO’Mix

raspiomix_schema_600px

Cliquez pour agrandir

Comme on est ici en open hardware, le schéma complet de la carte est fourni.

Implantation des connecteurs sur RaspiO’Mix

raspiomix_io_600px

Cliquez pour agrandir

raspiomix_an_600px

Cliquez pour agrandir

raspiomix_i2c_600px

Cliquez pour agrandir

raspiomix_serial_600px

Cliquez pour agrandir

raspiomix_dip_600px

Cliquez pour agrandir

raspiomixplus-infosLa pile CR1220 qui alimente l’horloge temps réel (RTC) lorsque l’alimentation disparait est placée dans un support situé sous la carte. Elle est livrée avec le starter kit. Il reste juste à la mettre en place, le + de la pile est vers le haut et apparent :

raspio_07

raspio_26L’horloge RTC est ici un DS1307 auprès duquel on trouve un quartz horloge (le cylindre situé entre le DIP switch rose et le circuit intégré DS1307 sur la photo ci-dessous).
raspio_27Tous les composants actifs sont regroupés dans un angle de la carte, le reste est occupé par la connectique. Il reste deux emplacements vides sur la carte. L’un d’eux est prévu pour accueillir dans une version future l’EEPROM prévue sur les cartes HAT, l’autre pour un capteur de température I2C (TMP100 ou TMP101) au format SOT23-6 (en option).

raspio_05Entre les prises analogiques on trouve les résistances formant le pont diviseur qui permet d’envoyer une tension d’entrée de 5V (RAn et RBn de 10K et 6K8).

raspio_01

Les modules Grove

Le starter Kit contient toute une série de modules Grove :

relaisraspio_18raspio_19


potarraspio_20raspio_14


LEDraspio_13raspio_10


bornierraspio_22


protoraspio_11


boutonsraspio_16raspio_17b


Chaque module est fourni avec son propre câble au format Grove.

Mise en service de la RaspiO’Mix

Installation sur le Raspberry Pi

raspio_30Commencez par monter les entretoises sur le Raspberry Pi. Mettez la carte en place en enfonçant son connecteur sur le port GPIO du Raspberry Pi. Précédez avec méthode et vérifiez (revérifez ! ) que le connecteur est bien en place, qu’il n’y a pas de décalage…

Lorsque tout est bien vérifié, mettez les vis qui viendront fixer la RaspiO’Mix au Raspberry Pi pour former un ensemble rigide. Pas de souci, les trous tombent au bon endroit 😀 Rigolez pas… ce n’est pas toujours le cas…

Une fois tout ça bien contrôlé visuellement une nouvelle fois (ouiii je sais mais je suis comme ça, vérifier, revérifier…) vous pouvez mettre le Raspberry Pi sous tension en connectant la prise micro-USB. La LED présente sur la carte RaspiO’Mix s’allume pour indiquer que la tension arrive bien sur la carte.

L’autre solution est de connecter un jack 5v sur le connecteur de la RaspiO’Mix qui partagera alors son alimentation avec le Raspberry Pi.

Bibliothèque Python

Le démarrage de la RaspiO’Mix commence par le téléchargement de la bibliothèque Python disponible sur GitHub. Placez vous dans le répertoire de votre choix et récupérez raspiomix.py avec la commande

wget https://raw.githubusercontent.com/hugokernel/RaspiOMix/master/src/python/raspiomix.py

Respectez la casse (majuscules et minuscules) sinon… bin ça marchera pas 😉

wget https://raw.githubusercontent.com/hugokernel/RaspiOMix/master/src/python/raspiomix.py
--2015-11-22 12:41:28-- https://raw.githubusercontent.com/hugokernel/RaspiOMix/master/src/python/raspiomix.py
Résolution de raw.githubusercontent.com (raw.githubusercontent.com)... 185.31.19.133
Connexion vers raw.githubusercontent.com (raw.githubusercontent.com)|185.31.19.133|:443...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 3749 (3,7K)
Sauvegarde en : «raspiomix.py»

100%[======================================>] 3 749 --.-K/s ds 0s

2015-11-22 12:41:32 (12,0 MB/s) - «raspiomix.py» sauvegardé [3749/3749]

Premier test en Python

Lancez Python, chargez la bibliothèque raspiomix.py et faites une lecture d’un port d’entrée analogique :

pi@raspberrypi ~ $ python3
Python 3.2.3 (default, Mar 1 2013, 11:53:50)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from raspiomix import Raspiomix
>>> r=Raspiomix()
>>> print ("La tension est de %f Volt !" % r.readAdc(0))
La tension est de 0.000232 Volt !
>>> 

C’est plutôt bon signe. La lecture de l’entrée analogique renvoie une valeur de 0V, comme il n’y a rien de branché dessus, c’est normal.

Après avoir branché le module Grove muni d’un potentiomètre, j’ai relancé plusieurs fois la mesure en modifiant la position du potentiomètre entre chaque mesure.

>>> print ("La tension est de %f Volt !" % r.readAdc(0))
La tension est de 1.602479 Volt !
>>> print ("La tension est de %f Volt !" % r.readAdc(0))
La tension est de 2.879830 Volt !
>>> print ("La tension est de %f Volt !" % r.readAdc(0))
La tension est de 0.000270 Volt !
>>> print ("La tension est de %f Volt !" % r.readAdc(0))
La tension est de 4.980597 Volt !

Pour les deux premières mesure, la position du potentiomètre est quelconque. Les deux dernières correspondent aux positions extrêmes du potentiomètre.

L’horloge RTC

raspio_29L’horloge RTC de la carte RaspiO’Mix est alimentée par une pile lorsque la tension d’alimentation est absente. J’ai vérifié qu’il était possible d’accéder à l’horloge RTC pour régler l’heure et ensuite récupérer cette heure dans le système du Raspberry Pi.

pi@raspberrypi ~ $ sudo modprobe rtc-ds1307
pi@raspberrypi ~ $ echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-1/new_device
ds1307 0x68
pi@raspberrypi ~ $ sudo hwclock -r
sam. 01 janv. 2000 00:00:13 UTC -0.528738 seconds
pi@raspberrypi ~ $ date
dimanche 15 novembre 2015, 14:59:17 (UTC+0000)
pi@raspberrypi ~ $ sudo hwclock -w
pi@raspberrypi ~ $ sudo hwclock -r
dim. 15 nov. 2015 14:59:34 UTC -0.399494 seconds
pi@raspberrypi ~ $

On modifiera /boot/config.txt pour que la prise en charge du DS1307 se fasse au démarrage du Raspberry Pi.

# Additional overlays and parameters are documented /boot/overlays/README
dtparam=i2c_arm=on
dtoverlay=i2c-rtc,ds1307

J’ai fait un premier test en éteignant le Raspberry Pi et en débranchant la prise micro-USB pendant plus d’un quart d’heure. après redémarrage du Raspberry Pi l’heure a bien été maintenue.

pi@raspberrypi ~ $ sudo hwclock -r
dim. 15 nov. 2015 15:27:50 UTC -0.319010 seconds

Test du module LED

Pour ce test le module LED est connecté sur un port numérique IO 0.

j’ai ensuite créé un programme   led_IO0.py

from raspiomix import Raspiomix
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(Raspiomix.IO0, GPIO.OUT)
while True:
    GPIO.output(Raspiomix.IO0, not GPIO.input(Raspiomix.IO0))
    time.sleep(1)

et ça fonctionne :

led_IO0Test de la carte relais

Bon, là on va pas se casser la tête… J’ai simplement débranché le module LED que j’ai remplacé par le module relais. Comme c’est un gif animé vous n’entendrez pas le relais coller mais la LED présente sur la carte indique que tout fonctionne normalement.

relais

Test du module boutons poussoirs

Un peu plus de mal pour trouver l’info sur la lecture des 2 boutons poussoirs… Je me suis penché sur le schéma (pas forcément évident pour un débutant) sur lequel on voit que chaque connecteur IO comporte en fait 2 entrées IO0 et IO1 par exemple pour le connecteur marqué IO0 et ainsi de suite : IO1 et IO2 pour le connecteur marqué IO1. Il manque à mon avis un schéma représentant physiquement les prises et identifiant les pins.

Programme de test pour lire les interrupteurs lit_inters.py :

from raspiomix import Raspiomix
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(Raspiomix.IO0, GPIO.IN)
GPIO.setup(Raspiomix.IO1, GPIO.IN)
while True:
    print("IO0: %s, IO1: %s" % (GPIO.input(Raspiomix.IO0), GPIO.input(Raspiomix.IO1))
    time.sleep(1)

ce qui donne après lancement par sudo python3 lit_inters.py

IO0: 1, IO1: 1
IO0: 0, IO1: 1
IO0: 0, IO1: 1
IO0: 1, IO1: 1
IO0: 1, IO1: 1
IO0: 1, IO1: 0
IO0: 1, IO1: 0
IO0: 1, IO1: 0
IO0: 1, IO1: 1
IO0: 1, IO1: 1
IO0: 0, IO1: 1
IO0: 0, IO1: 1
IO0: 0, IO1: 1
IO0: 1, IO1: 1
IO0: 1, IO1: 1

On voit ici que les appuis sur les poussoirs se traduisent par un affichage de 0

Combien ça coûte ?

La carte RaspiO’Mix+ coûte 35,90€, que vous la commandiez avec un jack ou un bornier. Elle est compatible Raspberry Pi A+/B+, et Raspberry Pi 2.

Pour le Starter Kit décrit ci-dessus comptez 49,90€ avec la carte RaspiO’Mix+ et les différents modules Grove.

Enfin pour les possesseurs d’un Raspberry Pi ancien modèle (mais en fait pas si vieux que ça 😉 ) équipé d’un port GPIO à 26 broches, il existe la carte RaspiO’Mix qui coûte 29,90€. Elle est compatible Raspberry Pi A/B, A+/B+, et Raspberry Pi 2.

Vidéo

Processus de fabrication de la première version de la carte RaspiO’Mix pour le Raspberry Pi Model B.

Conclusion

Une belle réalisation qui élargit le monde du Raspberry Pi à l’univers de Grove. La connexion des modules Grove se fait de façon sécurisée avec les connecteurs utilisés, cela garantit des contacts de bien meilleure qualité que si vous utilisez des fils connectés sur le port GPIO.

L’utilisation du bus I2C autorise l’accès aux ports GPIO d’origine tout en mettant à disposition des E/S analogiques.

La disponibilité des schémas et du logiciel assure une transparence totale lors de l’utilisation.

Je pense que pour utiliser la carte il faudrait déjà avoir quelques bases en Linux, Python… Mais on peut aussi s’en servir pour apprendre et découvrir ces domaines… L’utilisation des modules Grove donne accès à des dizaines de fonctions qui seront utiles pour un projet maker, une installation domotique…

Charles travaille sur d’autres projets comme OpenAlarm qui pourront certainement vous intéresser. N’hésitez pas à visiter son site DigitalSpirit.

Sources

 

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

11 réflexions au sujet de « RaspiO’Mix+ : des E/S compatibles Grove pour le Raspberry Pi »

  1. miguipda

    Bonjour,

    je possède un routeur Banana Pi R1 (BPI-R1) qui est équipé de 26 broches identiques que celle du RPi.
    Sachant que son système d’exploitation est OpenWRT, savez-vous me dire si cette carte (à 26 broches) pourrait fonctionner ?

    Merci de détailler comment, car je n’ai aucune expérience du RPi ni de gestion GPIO et donc comment.
    Ma question se pose à savoir si lancer du code python va suffire pour lire les senseurs ou si des librairies sont imposées à devoir tourner sur le système d’exploitation en plus.

    D’avance merci.

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      bonne question… malheureusement je ne connais pas du tout le Banana Pi (juste le Raspberry Pi) . Le Banana Pi est annoncé comme compatible avec le Raspberry Pi mais je n’ai pas d’autre info
      essayez de poser la question sur le forum ou sur un forum Banana pi.
      désolé de ne pouvoir répondre
      cordialement
      François

      Répondre
  2. Julien

    Bonjour,

    Avez-vous une idée de quels sont les avantages de cette carte par rapport à la carte officielle grove Pi ?

    Julien
    PS : Merci pour ce super blog !:-)

    Répondre
  3. hugo

    Bonjour Julien,

    L’approche de RaspiO’Mix et de GrovePi n’est pas la même, avec RaspiO’Mix, on commande directement les entrées / sorties du Raspberry, avec GrovePi, on passe par une interface, cela veut dire qu’on ne peut pas utiliser les capacités physiques des IO du Raspberry (trigger, pwm, etc…).

    En comparaison :

    * RaspiO’Mix+ possède 8 entrées / sorties – GrovePi+ n’en a que 7
    * RaspiO’Mix+ à 8 entrées analogiques (18bits de résolution) – GrovePi+ n’en possède que 3 (10bits de résolution)
    * RaspiO’Mix+ possède 2 interrupteurs intégrés à la carte – GrovePi+ n’en possède pas
    * RaspiO’Mix+ intègre une horloge temps réel – GrovePi+ n’en a pas

    Pour finir, RaspiO’Mix à une taille moindre au format HAT, il est donc plus facile de l’intégrer dans un boitier et il est possible de choisir le connecteur d’alimentation (jack ou bornier à vis).

    Pour un comparatif entre la première version de RaspiO’Mix et GrovePi, voici un article : http://www.digitalspirit.org/blog/index.php/post/2014/07/31/RaspiO-Mix-ou-GrovePi

    @+

    Répondre
  4. Ping : Raspberry Pi - Micro-cartes / Europe - International | Pearltrees

  5. Ping : RaspberryPI | Pearltrees

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.