17
mars
'14

Raspio32, un module d'extension de GPIOs OpenSource pour Raspberry Pi

Publié le 17 mars 2014

Lorsque j'ai bidouillé mon clavier de minitel, et que j'ai notamment essayé de l'interfacer avec un Raspberry Pi (acheté chez Farnell, rappelez-vous), je me suis rendu compte que les GPIOs de ce dernier étaient vraiment limitées. Pour interfacer correctement le clavier, j'avais besoin de 17 GPIOs, alors que le RaspPi ne m'en offrait que 10 maximum. J'ai donc décidé de créer un module d'extension pour pouvoir prototyper sur Raspberry Pi, fournissant 32 GPIOs.

Raspberry Pi et son bus I²C

Après avoir passé un peu de temps à chercher sur Internet les solutions techniques connues pour Raspberry Pi, j'ai opté pour la solution la plus évidente: l'emploi du bus I²C («Inter Integrated Circuit»). Ce bus permet d'interfacer des composants électroniques, et notamment des convertisseurs série vers parallèle, comme le MCP23017. La communication avec ce composant est réalisé via deux fils (un signal d'horloge et un signal de donnée, ce qui correspond à une communication série) et permet d'utiliser 16 entrées/sorties (aussi appelées GPIOs pour «General Purpose Input/Output»).

Ces modules sont adressables, avec un codage d'adresse sur 3 bits. Cela signifie que l'on peut en chaîner au maximum 8, et potentiellement adresser 8*16 = 128 GPIOs. 32 seront suffisantes pour ce que je veux faire, et de plus il faudrait que le PCB soit à peu près de la taille du Raspberry Pi, pour que l'on puisse l'enficher un peu comme un shield Arduino. Plus intéressant, Lady Ada (une ingénieure en électronique/informatique qui a créé le site AdaFruit -- une référence -- a écrit une série d'articles sur la manière d'interfacer le Raspberry Pi avec un ou plusieurs MCP23017.

Plusieurs modules d'extension de ce type existent déjà sur Internet (comme [celui-ci->https://www.modmypi.com/protect-your-pi], ou encore [celui-la->http://www.abelectronics.co.uk/products/3/Raspberry-Pi/18/IO-Pi-32-Channel-Port-Expander-for-the-Raspberry-Pi-computer-boards]), mais il faut débourser d'une dizaine d'euros (sans les frais de port) à une trentaine d'euros. Pis, aucun PCB n'est disponible, et les schémas jalousement gardés. Qu'à cela ne tienne, j'ai alors opté pour la conception d'une version 100% OpenSource, et peu onéreuse.

Prototypage

La phase de prototypage a été rapide, une fois les composants reçus de mon fournisseur préféré. Quelques fils, un MCP23017 et le clavier de mon minitel m'ont servi à tester cette solution. Bien sûr, quelques réglages sont à effectuer sur le Raspberry Pi, notamment pour activer le support de l'I²C, mais au final c'est quand même relativement simple. Voici une photo montrant le montage:

Et le schéma électronique du prototype:

Et pour finir, le module en place sur le Raspberry Pi:

La bibliothèque Python de Lady Ada

AdaFruit fournit sur son Github un ensemble de bibliothèques Python permettant de manipuler l'I²C, et en particulier le MCP23017. Seulement voilà, bien que tout à fait fonctionnelle, cette bibliothèque n'est pas forcément utilisable en l'état vu que j'ai mis en place deux de ces composants et que j'en ai profité pour renommer les GPIOs. C'est pour cela que j'ai implémenté un dérivé de cette bibliothèque, dont le code source est libre et réutilisable, disponible sur Github.

Voici un exemple de configuration du module en Python, qui permet d'allumer une LED connectée entre la broche A0 et A1 du module (avec une résistance de 330ohms bien sûr):

from raspio import Raspio


board = Raspio()
board.config(board.A0, board.OUT)
board.config(board.A1, board.OUT)
board.output(board.A0, 0)
board.output(board.A1, 1)

Toute amélioration et/ou critique est la bienvenue, n'hésitez pas à faire des Pull Requests ;).

Une récompense aux soutiens OpenIt

Je possède actuellement deux de ces modules, dont un reste à monter, et me propose de les envoyer à deux personnes ayant soutenu le projet. Si d'autres personnes ayant soutenu le projet OpenIt sont intéressées, je peux éventuellement en produire à nouveau et les envoyer.

Pour les personnes n'ayant pas soutenu le projet, vous pouvez commander la board (pcb) nue sur OSHPark, en suivant ce lien.

28
oct.
'13

Open It, ça continue !

Publié le 28 octobre 2013

Voilà seize jours que j'ai lancé mon projet de financement participatif baptisé "Open It", et je suis encore épaté du succès de cette initiative. Je demandais juste 400€ histoire de financer l'achat de matériel et de pouvoir accélerer la cadence de mes projets avec comme obligation de mon côté de redistribuer ce que je fais et de tout documenter à la manière de l'Open Source.

Un chiffre: 248%

A l'heure où je rédige ce billet, le projet est assuré d'être financé avec 995€ d'engagés, soit 248% du montant initial! C'est tout simplement énorme. Ce qui veut dire que je ne vais pas chômer dans les mois à venir, afin de réaliser tout un ensemble de projets qui me tiennent particulièrement à cœur.

La campagne de récolte de fonds n'est pas terminée bien que l'objectif soit atteint, alors si vous souhaitez la soutenir n'hésitez pas, surtout que j'ai ajouté deux achievements spéciaaux nommés "Bande de barbus malades" et "Flap Flap Master": le premier débloque un workshop sur le hardware hacking à la prochaine Nuit du Hack animé conjointement par TixLeGeek et moi-même, tandis que le second débloque la création d'un quadcopter maison mode DIY utilisant l'impression 3D et un système de contrôle maison !

Hop hop hop !

J'ai mis en place le portail réservé aux personnes ayant engagé 15€ ou plus (inaccessible pour le moment), et commencé à le peupler. Idem pour l'accès primeur aux articles, ce qui m'a valu d'ailleurs [une contribution sur Spip-Contrib->http://contrib.spip.net/Partager-un-article-pour-relecture]. La partie édition est donc prête à recevoir les heureux soutiens =).

Toujours dans la continuité, j'ai pris le temps de designer le sticker collector (une contrepartie pour les soutiens ayant engagé au moins 10€):

Et tant qu'à faire, j'ai déjà commencé à réfléchir aux premiers projets et à la manière dont je vais les réaliser. Ainsi, mon minitel a déjà montré à nouveaux ses entrailles, gEDA de nouveau utilisé, et quelques commandes parties pour du matériel notamment. Ainsi, le hardware collector promis si l'on dépassait les 150% a été conçu, et je devrais recevoir un prototype pour la fin du mois. S'il est ok et fonctionnel, je lance la production du nombre exact (ou presque) et les enverrai aux soutiens. Il s'agit d'un gadget collector qui fera l'objet d'un article, et la documentation sera ainsi accessible (principe, schéma, PCB notamment). Je n'en dis pas plus pour le moment, je préfère garder la surprise et agrémenter d'autres goodies (photos/vidéos) pour le coup ;).

Et la suite ?

Il reste 8 jours pour le financement de ce projet, deux Super Minitels Entertainment System ainsi que de nombreuses autres récompenses ! Si cela vous intéresse, ou que l'idée même de l'initiative vous botte, n'hésitez pas à participer ;).

07
oct.
'13

Hardware hacking for all

Publié le 07 octobre 2013

<emb161|center>

[MAJ du 8/10/2013] Le projet est financé à 170%, vous êtes vraiment cools ! J'ai ajouté des achievements, vu qu'il reste encore une vingtaine de jours pour la campagne.

[MAJ du 15/10/2013] Le projet est financé à 226%, wow !!! Pour le coup je cale sur un achievement pour les 250%, mais je vais essayer de trouver un truc fou, promis. Encore merci aux soutiens, et si vous souhaitez encore participer sachez qu'il reste des Super Minitel Entertainment System =)

Comme certains d'entre vous le savent (ou ont pu s'en rendre compte), je me suis replongé il y a peu de temps dans le domaine fou et super passionnant du hardware hacking. Le recyclage d'un minitel, l'étude des tickets de métro, les bidouilles sur msp430 ou mon projet de piratebox basée sur Raspberry Pi, j'ai essayé de m'intéresser un peu à tout, et ça m'a éclaté. Alors j'ai eu une idée.

Crowdfunding for all

Lors de la réalisation de ces projets, j'ai du faire face à plusieurs problèmes, en vrac: * schémas faux ou incomplets disponibles sur Internet * manque de documentation * improvisation avec le matériel du bord * achat du matériel réparti sur plusieurs mois, dans le cas de certains projets (Ratbox par exemple)

Depuis mon hack de minitel, j'ai plein d'autres idées qui nécessiterait d'être creusées et que vous pourriez trouver intéressantes: * création de périphériques USB maison à base d'Atmega * étude de trucs bizarre comme les boîtiers affichant les prix dans les supermarchés * module de monitoring réseau électronique à base de micro-contrôleur * hacking d'impression 3D (modding, amélioration) * étude de matériel divers, des STB aux machins électroniques bizarres

Je ne vous cache pas que pour le coup, je ne suis pas en mesure d'acheter tout ce dont j'ai besoin ou de tenter de les réaliser ... Et là, une petite révélation: pourquoi ne pas faire appel au financement participatif (crowdfunding) ? Bien sûr, l'idée n'est pas de m'acheter tout plein de trucs avec l'argent des autres, loin de là. Par contre, documenter complètement l'ensemble des projets (chose que je fais en partie sur ce blog), partager des documents opensource permettant de reproduire mes bidouilles, ça je sais faire. Et distribuer des trucs et bidules que j'ai créé, ça serait cool.

Open It !

C'est comme cela que le projet "Open It !" est né. Mon premier projet de financement participatif. L'objectif fixé est de 400€, histoire de couvrir les frais d'achat de matériel, et de pouvoir entamer les projets dans le pipe rapidement.

Je vous invite donc à jeter un oeil à ce projet sur Ulule, et si l'initiative vous plaît à la soutenir et en parler autour de vous ! Promouvons l'Open Source Hardware ! Hackons du matériel et faisons des trucs geekesques et fun !

Pour soutenir le projet Open It, c'est par ici =)



Les contenus disponibles sur ce blog sont publiés sous licence Creative Commons BY-NC-SA.
Vous pouvez réutiliser tout ou partie de ces contenus à condition de citer l'auteur et l'origine, vous ne pouvez en faire une utilisation commerciale, et enfin vous devez partager tout travail ou œuvre dérivée sous les mêmes conditions — c'est-à-dire avec la même licence d'utilisation Creative Commons.