DigitalSpirit / Blog

Mise à jour de RaspiO'Mix : RaspiO'Mix+

RaspiO'Mix est, comme son nom l'indique, l'évolution logique de RaspiO'Mix pour les RaspberryPi dit « Plus » et Raspberry 2.

RaspiO'Mix est une carte fille (également appelée hats) pour RaspberryPi qui vous permet de connecter vos capteurs / actionneurs Grove (le système Grove chez Lextronic) au Raspberry simplement, sans connaissance en électronique.
RaspiO'Mix est un projet libre et ouvert, tous les plans sont disponibles en ligne.

product-plus.png

Caractéristiques

  • Compatible Raspberry A+, Raspberry B+, Raspberry 2
  • 8 entrées / sorties tolérantes 5V
  • 8 entrées analogiques, 0-5V, 18 bits de résolution
  • 2 entrées numériques via DIP switch
  • Horloge temps réel avec batterie de sauvegarde
  • 3 connecteurs pour I2C
  • 1 connecteur pour communication série
  • Alimentation 5V via jack ou bornier à vis

Utilisation en Python

Des exemples en Python sont présents sur GitHub et vous montreront à quel point il est simple de dialoguer avec les capteurs / actionneurs Grove.

Par exemple, pour faire clignoter une LED présente sur le port IO0 et afficher la valeur analogiques lue sur le port AN0.

# On importe les librairies qui nous seront utiles
from raspiomix import Raspiomix import RPi.GPIO as GPIO import time
r = Raspiomix()
GPIO.setmode(GPIO.BOARD)
# On configure le port IO0 de RaspiO'Mix en sortie GPIO.setup(r.IO0, GPIO.OUT)
# Et on boucle ! while True: GPIO.output(r.IO0, not GPIO.input(r.IO0))
print("%f Volt !" % r.readAdc(0))
time.sleep(1)

Difficile de faire plus simple ! Non ?

Plus d'informations

Tout ce dont vous avez besoin pour avancer avec RaspiO'Mix+ est disponible sur le site www.raspiomix.org :

Et bien entendu, pour commander votre RaspiO'Mix+, cela se passe sur www.raspiomix.org !

Ouvrir l'article

Piloter des prises électriques via un Raspberry

Comment piloter des appareils branchés sur le secteur simplement et surtout sans risque, directement via un Raspberry (bien entendu, ça marche avec n'importe quoi d'autre, Arduino, etc...) ?

On pourrait utiliser un relais, un triac, mais ça ne me plait guère, on doit pouvoir faire plus simple et plus sécuritaire... Et si nous utilisions tout simplement des prises commutables à distance du commerce, nous n'aurions plus à nous soucier de l'aspect isolation vu que l'appareil se pilote à distance et est censé avoir passé des tests de conformité CE...

D'autant plus que ces prises télécommandées ne valent pas grand chose, il est facile de trouver un lot de 3 pour moins de 15€ comme celle ci-dessous :

blister.jpg

Une fois les prises télécommandées en notre possession, 3 solutions s'offrent à nous :

  1. Ouvrir les prises et les piloter directement via un signal logique : Mauvaise idée, on perd l'avantage de l'isolation
  2. Sniffer le signal radio lors de l'appui sur une touche et le reproduire
  3. Piloter directement la télécommande en simulant des touches

N'ayant pas de quoi reproduire le signal sniffé sur le moment, j'ai choisi la dernière solution qui implique un démontage de la télécommande.

L'intérieur de la télécommande :
Recto de la carte électronique Verso de la carte électronique

Le coeur de la carte est un HT46R01T3 de Holtek, un microcontrôleur embarquant une partie radio, avec ce dernier, nous trouvons un peu de composant passif, un quartz, des boutons et voilà, vous avez une télécommande « qui fait le job » pour 2 kopeck.

Le schéma de la carte :
schema.png

Nous avons 6 boutons, 3 boutons à gauche pour allumer la prise correspondante et 3 autres boutons à droite pour les éteindre.
Les boutons sont reliés aux broches 2, 3, 4 et 5 via les diodes (D1 à D6) correspondant aux pin PA0 à PA3 du circuit intégré, 6 boutons présents mais seulement 4 entrées utilisées sur le microcontrôleur, cette ruse est possible grâce aux diodes: 3 entrées servent à connaitre la prise sélectionnée et une autre indiquent s'il s'agit du bouton OFF.

État des broches en fonction des appuis sur les touches :

Boutons Pin 2 Pin 3 Pin 4 Pin 5
ON1 1 1 0 0
OFF1 1 1 0 1
ON2 1 0 1 0
OFF2 1 0 1 1
ON3 0 1 1 0
OFF3 0 1 1 1

Afin de simuler des appuis sur les touches tout en gardant possible l'utilisation des boutons de la télécommande, nous allons court-circuiter brièvement les boutons, pour cela, je vais utiliser un circuit intégré très pratique, le 4066, un quadruple switch analogique dont voici le schéma :
Contenu du 4066

Il contient donc 4 interrupteurs pilotables directement via des signaux logiques, la technologie CMOS du 4066 nous permet une connexion direct au Raspberry.

Connexion entre le 4066 et le Raspberry

En rouge, on retrouve les points vus plus haut dans le schéma de la télécommande, en vert, il s'agit des liaisons avec le port GPIO (P1) du Raspberry, concernant l'alimentation, c'est assez simple, la télécommande étant alimentée avec une pile bouton de 3V, on va utiliser directement les 3V issus du Raspberry.

Un petit bout de code Python (outlet.py) et vous pouvez piloter vos télécommandes :

$ python
>>> from outlet import Power_Outlet
>>> po = Power_Outlet()
>>> po.on(0)
>>> po.off(1)
>>> 

Le tout sur une plaque d'expérimentation :
final.jpg

Ouvrir l'article

Des nouvelles de RaspiO'Mix

J'ai peu donné de nouvelle récemment, notamment au sujet de RaspiO'Mix et pourtant, il y a à dire...

Un site dédié

Un site dédié permet de commander directement les RaspiO'Mix : www.raspiomix.org, tant qu'il y a du stock, vous recevrez votre RaspiO'Mix en 48h.

Je n'exclus pas de proposer les RaspiO'Mix aux revendeurs intéressés, merci de me contacter directement.

Librairie Python

La librairie Python à quelque peu évoluée et est devenue encore plus simple.

Pour lire une tension sur une des entrées analogiques suivi d'une lecture des 4 entrées analogiques :

$ python
>>> from raspiomix import Raspiomix
>>> r = Raspiomix()
>>> r.readRtc()
2014-11-12T20:41:26
>>> print(r.readAdc(0))
[4.0669732000000005]
>>> print(r.readAdc((0, 1, 2, 3)))
[4.066934600000001, 0.010923800000000001, 0.08515160000000001, 0.2866822]
>>> 

Cette librairie est disponible sur GitHub : GitHub / RaspiOMix / raspiomix.py

RaspiO'Mix+

Présentation

RaspiO'Mix poursuit son évolution avec la RaspiO'Mix+ créés pour être utilisée comme vous pouvez vous en douter avec un Raspberry+.

J'ai repris le tableau d'un précédent article sur RaspiO'Mix comparant cette dernière avec la carte GrovePi :

Fonctionnalité GrovePi RaspiO'Mix RaspiO'Mix+
Entrées / Sorties 7 4 8
Entrées analogiques 3 4 8
Résolution CAN 10bits 18bits 18bits
Lignes I2C 4 2 3
Lignes série 1 1 1
Horloge Non Oui (via DS1307) avec batterie de sauvegarde Oui (via DS1307) avec batterie de sauvegarde
Interrupteur 0 2 2
Alimentation via le Raspberry via le Raspberry ou une prise jack / bornier via le Raspberry ou une prise jack / bornier
Option - - Capteur I2C TMP10

Note: GrovePi+, l'évolution pour RaspberryPi+ possède les même caractéristiques que GrovePi.

RaspiO'Mix+ est au format Raspberry HATs+ et donc bien plus petite que la version originale, la densité de composants est donc plus forte.

RaspiO'Mix comparée à RaspiO'Mix+ :
Comparatif de taille RaspiO'Mix vs RaspiO'Mix+

Une carte RaspiO'Mix+ sur un RasberryPi :
RaspiO'Mix+ sur un RaspberryPi+

En détail

Le schéma de principe :
schema.png

J'ai ajouté un deuxième MCP3424 afin de doubler le nombre d'entrées analogiques, un second convertisseur de niveau à 4 entrées / sorties (TXB0104PWR) rejoint le TXS0108PWR et sera utilisé pour les entrées sorties de type Push / Pull (le TXS0108PWR ayant un mode haute impédance).

Une EEPROM série rejoint la carte afin de répondre à la spécification HAT mais je ne sais pas si elle sera montée sur les cartes (quoiqu'il arrive, son emplacement sera laissé sur le pcb).

J'ai également ajouté un capteur de température I2C (TMP10x) sous la carte permettant la mesure de la température rayonnée par le Raspberry mais le circuit intégré ne sera pas disponible de série, ou alors, uniquement en option (sauf si j'arrive à les obtenir par quantité à un coût intéressant).

La suite

Pour le moment, la carte RaspiO'Mix est fonctionnelle mais non disponible à la vente, quelques modifications sur l'emplacement des composants sur le pcb doivent encore être faite (merci Seeedstudio de proposer des librairies Eagle légèrement foireuse).

Ouvrir l'article

Des nouvelles de RaspiO'Mix

J'ai peu donné de nouvelle récemment, notamment au sujet de RaspiO'Mix et pourtant, il y a à dire...

Un site dédié

Un site dédié permet de commander directement les RaspiO'Mix : www.raspiomix.org, tant qu'il y a du stock, vous recevrez votre RaspiO'Mix en 48h.

Je n'exclus pas de proposer les RaspiO'Mix aux revendeurs intéressés, merci de me contacter directement.

Librairie Python

La librairie Python à quelque peu évoluée et est devenue encore plus simple.

Pour lire une tension sur une des entrées analogiques suivi d'une lecture des 4 entrées analogiques :

$ python
>>> from raspiomix import Raspiomix
>>> r = Raspiomix()
>>> r.readRtc()
2014-11-12T20:41:26
>>> print(r.readAdc(0))
[4.0669732000000005]
>>> print(r.readAdc((0, 1, 2, 3)))
[4.066934600000001, 0.010923800000000001, 0.08515160000000001, 0.2866822]
>>> 

Cette librairie est disponible sur GitHub : GitHub / RaspiOMix / raspiomix.py

RaspiO'Mix+

Présentation

RaspiO'Mix poursuit son évolution avec la RaspiO'Mix+ créés pour être utilisée comme vous pouvez vous en douter avec un Raspberry+.

J'ai repris le tableau d'un précédent article sur RaspiO'Mix comparant cette dernière avec la carte GrovePi :

Fonctionnalité GrovePi RaspiO'Mix RaspiO'Mix+
Entrées / Sorties 7 4 8
Entrées analogiques 3 4 8
Résolution CAN 10bits 18bits 18bits
Lignes I2C 4 2 3
Lignes série 1 1 1
Horloge Non Oui (via DS1307) avec batterie de sauvegarde Oui (via DS1307) avec batterie de sauvegarde
Interrupteur 0 2 2
Alimentation via le Raspberry via le Raspberry ou une prise jack / bornier via le Raspberry ou une prise jack / bornier
Option - - Capteur I2C TMP10

Note: GrovePi+, l'évolution pour RaspberryPi+ possède les même caractéristiques que GrovePi.

RaspiO'Mix+ est au format Raspberry HATs+ et donc bien plus petite que la version originale, la densité de composants est donc plus forte.

RaspiO'Mix comparée à RaspiO'Mix+ :
Comparatif de taille RaspiO'Mix vs RaspiO'Mix+

Une carte RaspiO'Mix+ sur un RasberryPi :
RaspiO'Mix+ sur un RaspberryPi+

En détail

Le schéma de principe :
schema.png

J'ai ajouté un deuxième MCP3424 afin de doubler le nombre d'entrées analogiques, un second convertisseur de niveau à 4 entrées / sorties (TXB0104PWR) rejoint le TXS0108PWR et sera utilisé pour les entrées sorties de type Push / Pull (le TXS0108PWR ayant un mode haute impédance).

Une EEPROM série rejoint la carte afin de répondre à la spécification HAT mais je ne sais pas si elle sera montée sur les cartes (quoiqu'il arrive, son emplacement sera laissé sur le pcb).

J'ai également ajouté un capteur de température I2C (TMP10x) sous la carte permettant la mesure de la température rayonnée par le Raspberry mais le circuit intégré ne sera pas disponible de série, ou alors, uniquement en option (sauf si j'arrive à les obtenir par quantité à un coût intéressant).

La suite

Pour le moment, la carte RaspiO'Mix est fonctionnelle mais non disponible à la vente, quelques modifications sur l'emplacement des composants sur le pcb doivent encore être faite (merci Seeedstudio de proposer des librairies Eagle légèrement foireuse).

Ouvrir l'article

Mes projets faits main pour 2014

Je profite de ce début d'année pour faire un point sur l'avancement de certain de mes projets personnels liés au DIY et qui devraient être mis à jour ou terminés dans le courant de cette l'année...

LedPong

Il s'agit d'une version réduite du Led Pong Wall du Tetalab.

Le montage est terminé (un simple avr d'Atmel pilotant une matrice de led hautes luminosités) et fonctionne correctement mais le rendu n'est pas tout à fait celui que je souhaite, la lumière n'étant pas assez forte. J'envisage de remplacer toutes les leds par des modèles RGB adressables (WS2812) et pilotées par un RaspberryPi.

2011-06-09_16.55.39.jpg

À faire :

  1. Faire des tests avec des WS2812 pour s'assurer que l'adressage de 64 leds est suffisamment rapide
  2. Enlever l'ancienne matrice de led
  3. Poser les WS2812
  4. Interface et intégration avec le RaspberryPi

Ballon à air chaud

C'est un aérostat constitué de 8 fuseaux de 9m² réalisé à partir de sacs poubelle bas de gamme (faible épaisseur, environ 17 micron d'épaisseur), le ballon est fini et traine depuis plus d'un an dans un coin, il faut dire que malgré le temps que j'ai passé à le faire (quelques dizaines d'heures), l'arrivée de mon Ultimaker m'a totalement fait changer de priorité.

C'est une belle bête capable de lever théoriquement 2kg de charge utile, je compte profiter d'une journée fraiche pour le gonfler et faire un premier test.

La moitié du ballon déployé à côté du chat !

À faire :

  1. Fabriquer une nacelle pour tenir les suspentes et les relier à un fil maitre
  2. Trouver une journée froide et sans vent pour faire un test (certainement un matin très tôt

Bleuette

Encore beaucoup de boulot pour le robot hexapode Bleuette mais le projet avance...

2013-03-03_19.39.11.jpg

À faire :

  1. Ajouter une caméra sur une tourelle mobile
  2. Revoir tout le système d'alimentation en énergie pour une autonomie plus grande
  3. Améliorer le contrôle des pattes avec une meilleure gestion de la vitesse des servos
  4. Encore beaucoup de choses...

CappuccinoMaker

Amateur de cappuccino à la mousse de lait bien dense et ne trouvant pas d'appareil suffisamment puissant et fiable pour en faire (oui, c'est tout un art), je vous dévoilerai ma version fait main que j'utilise depuis quelques années ainsi que sa nouvelle toute petite version dont le boitier est réalisé à l'impression 3D...

2013-09-13_09.50.36.jpg

À faire :

  1. Tests d'autonomie avec la nouvelle batterie (quelques 120mA)
  2. Finir le nouveau boitier

Automatiser la Blossoming Lamp

Découverte sur le stand RepRap au 3DPrintShow de Paris, cette plante (Blossoming Lamp) à la particularité d'être imprimée en une seule fois (et @f4grx à dû s'y prendre à plusieurs fois pour que j'arrive à y croire ;)), je me devais d'imprimer cette curiosité :

L'idée serait de lui implanter une lumière et de la motoriser afin qu'elle s'ouvre et se ferme toute seule.

À faire :

  1. Trouver comment motoriser la mécanique d'ouverture
  2. Réalisation de l'électronique pour piloter la méca et la lumière

OpenAlarm : Un système d'alarme libre

Suite à l'annonce de création du projet, pas mal de personnes se sont rejointes au projet, apportant leurs idées, conseils ou développements réalisés de leur côté étayant avec des bases très intéressantes le projet à peine commencé...

Pour le moment, j'ai commandé différents composants (module radio, gsm) qui me permettront de réaliser un prototype, dont toutes les informations utiles seront mises à disposition sur la page du projet GitHub / OpenAlarm et sur le forum hébergé sur MadeInFr.

À faire :

  1. Réaliser un premier prototype de capteur
  2. Communication entre le RaspberryPi et un capteur
  3. Envoi de SMS via SIM900 depuis le RaspberryPi
  4. Beaucoup d'autres choses...

RaspiO'Mix

La carte fille RaspiO'Mix que j'ai présenté sur ce blog récemment dont vous allez entendre parler de nouveau d'ici peu de temps...

raspiomix.jpg

À faire :

  1. Écriture d'exemple / enrichissement de la documentation

LeMurmureDuSon

LeMurmureDuSon est un dispositif jouant le rôle de post'it vocal que je n'ai jamais présenté sur ce blog et qui est encore en cours de développement.

Il a été pensé au cours d'un workshop du Museolab d'Érasme oû des équipes pluridisciplinaires ont été réunies autour d’un thème particulier : comment le handicap peut-il être source d’innovation pour tous ?

Ce workshop à donné naissance à 3 projets dont LeMurmureDuSon fait parti, dans la vidéo ci-dessous, vous découvrirez ces 3 projets (la présentation du projet LeMurmureDuSon commence à 3min22) :

Museolab : Le handicap source d'innovation from Erasme on Vimeo.

À faire :

  1. Nouveau design
  2. Nouvelle carte électronique
  3. Plein d'idées à mettre en oeuvre...

Intervalomètre photo

L'Intervalomètre diy est un vieux projet mis en standby pour le moment, n'ayant plus trop le temps pour pratiquer la photo, le besoin de ce dispositif est moindre qu'à l'époque, cependant, la carte électronique est faite et est fonctionnelle à quelques détails prêt...

Je reviendrai dessus le temps voulu mais ce n'est plus une priorité.

À faire :

  1. Déboguer !
Ouvrir l'article

Mes projets faits main pour 2014

Je profite de ce début d'année pour faire un point sur l'avancement de certain de mes projets personnels liés au DIY et qui devraient être mis à jour ou terminés dans le courant de cette l'année...

LedPong

Il s'agit d'une version réduite du Led Pong Wall du Tetalab.

Le montage est terminé (un simple avr d'Atmel pilotant une matrice de led hautes luminosités) et fonctionne correctement mais le rendu n'est pas tout à fait celui que je souhaite, la lumière n'étant pas assez forte. J'envisage de remplacer toutes les leds par des modèles RGB adressables (WS2812) et pilotées par un RaspberryPi.

2011-06-09_16.55.39.jpg

À faire :

  1. Faire des tests avec des WS2812 pour s'assurer que l'adressage de 64 leds est suffisamment rapide
  2. Enlever l'ancienne matrice de led
  3. Poser les WS2812
  4. Interface et intégration avec le RaspberryPi

Ballon à air chaud

C'est un aérostat constitué de 8 fuseaux de 9m² réalisé à partir de sacs poubelle bas de gamme (faible épaisseur, environ 17 micron d'épaisseur), le ballon est fini et traine depuis plus d'un an dans un coin, il faut dire que malgré le temps que j'ai passé à le faire (quelques dizaines d'heures), l'arrivée de mon Ultimaker m'a totalement fait changer de priorité.

C'est une belle bête capable de lever théoriquement 2kg de charge utile, je compte profiter d'une journée fraiche pour le gonfler et faire un premier test.

La moitié du ballon déployé à côté du chat !

À faire :

  1. Fabriquer une nacelle pour tenir les suspentes et les relier à un fil maitre
  2. Trouver une journée froide et sans vent pour faire un test (certainement un matin très tôt

Bleuette

Encore beaucoup de boulot pour le robot hexapode Bleuette mais le projet avance...

2013-03-03_19.39.11.jpg

À faire :

  1. Ajouter une caméra sur une tourelle mobile
  2. Revoir tout le système d'alimentation en énergie pour une autonomie plus grande
  3. Améliorer le contrôle des pattes avec une meilleure gestion de la vitesse des servos
  4. Encore beaucoup de choses...

CappuccinoMaker

Amateur de cappuccino à la mousse de lait bien dense et ne trouvant pas d'appareil suffisamment puissant et fiable pour en faire (oui, c'est tout un art), je vous dévoilerai ma version fait main que j'utilise depuis quelques années ainsi que sa nouvelle toute petite version dont le boitier est réalisé à l'impression 3D...

2013-09-13_09.50.36.jpg

À faire :

  1. Tests d'autonomie avec la nouvelle batterie (quelques 120mA)
  2. Finir le nouveau boitier

Automatiser la Blossoming Lamp

Découverte sur le stand RepRap au 3DPrintShow de Paris, cette plante (Blossoming Lamp) à la particularité d'être imprimée en une seule fois (et @f4grx à dû s'y prendre à plusieurs fois pour que j'arrive à y croire ;)), je me devais d'imprimer cette curiosité :

L'idée serait de lui implanter une lumière et de la motoriser afin qu'elle s'ouvre et se ferme toute seule.

À faire :

  1. Trouver comment motoriser la mécanique d'ouverture
  2. Réalisation de l'électronique pour piloter la méca et la lumière

OpenAlarm : Un système d'alarme libre

Suite à l'annonce de création du projet, pas mal de personnes se sont rejointes au projet, apportant leurs idées, conseils ou développements réalisés de leur côté étayant avec des bases très intéressantes le projet à peine commencé...

Pour le moment, j'ai commandé différents composants (module radio, gsm) qui me permettront de réaliser un prototype, dont toutes les informations utiles seront mises à disposition sur la page du projet GitHub / OpenAlarm et sur le forum hébergé sur MadeInFr.

À faire :

  1. Réaliser un premier prototype de capteur
  2. Communication entre le RaspberryPi et un capteur
  3. Envoi de SMS via SIM900 depuis le RaspberryPi
  4. Beaucoup d'autres choses...

RaspiO'Mix

La carte fille RaspiO'Mix que j'ai présenté sur ce blog récemment dont vous allez entendre parler de nouveau d'ici peu de temps...

raspiomix.jpg

À faire :

  1. Écriture d'exemple / enrichissement de la documentation

LeMurmureDuSon

LeMurmureDuSon est un dispositif jouant le rôle de post'it vocal que je n'ai jamais présenté sur ce blog et qui est encore en cours de développement.

Il a été pensé au cours d'un workshop du Museolab d'Érasme oû des équipes pluridisciplinaires ont été réunies autour d’un thème particulier : comment le handicap peut-il être source d’innovation pour tous ?

Ce workshop à donné naissance à 3 projets dont LeMurmureDuSon fait parti, dans la vidéo ci-dessous, vous découvrirez ces 3 projets (la présentation du projet LeMurmureDuSon commence à 3min22) :

Museolab : Le handicap source d'innovation from Erasme on Vimeo.

À faire :

  1. Nouveau design
  2. Nouvelle carte électronique
  3. Plein d'idées à mettre en oeuvre...

Intervalomètre photo

L'Intervalomètre diy est un vieux projet mis en standby pour le moment, n'ayant plus trop le temps pour pratiquer la photo, le besoin de ce dispositif est moindre qu'à l'époque, cependant, la carte électronique est faite et est fonctionnelle à quelques détails prêt...

Je reviendrai dessus le temps voulu mais ce n'est plus une priorité.

À faire :

  1. Déboguer !
Ouvrir l'article

BleuettePi : Une carte fille pour RaspberryPi

Introduction

Comme je l'annonçais dans un précédent article, Bleuette va pouvoir être piloté par un Raspberry Pi grâce à une carte fille dédiée dont je vais décrire les caractéristiques ici même.

Le choix du Raspberry Pi s'est porté grâce à 2 de ses atouts : le coût et la puissance, en effet, pour moins de 40€, on dispose d'un système embarqué sous Gnu/Linux avec 512Mio de RAM, un processeur pouvant monter à 1Ghz, à côté des 2.5Kio de RAM et des 16Mhz de l'Arduino Leonardo, ça fait une sacré différence et ça laisse entrevoir plein de nouvelles possibilités...

Notez que ça ne signifie pas l'abandon du développement de Bleuette sur Arduino, il s'agit juste de donner le choix du système.

Caractéristiques

Les avantages d'utiliser un tel ordinateur embarqué sont nombreux, comme par exemple, la facilité pour embarquer / supporter des périphériques comme une clef WiFi pour programmer Bleuette à distance ou encore brancher une webcam (notamment le module caméra officiel), etc... Mais il n'y a pas que des avantages, on se retrouve aussi avec quelques soucis comme par exemple l'alimentation, le Raspberry Pi consomme plus qu'une petite carte Arduino et ses entrées / sorties ne sont absolument pas compatible avec le 5V utilisé sur la précédente carte fille, il faudra donc faire avec...

BleuettePi est conçue à la base pour faire fonctionner Bleuette mais j'ai fait en sorte que cette carte soit suffisamment généraliste pour être utilisée dans d'autre application.

Voici les caractérisitiques de cette carte :

  • Gestion de 14 servos (toujours de manière synchrone)
  • Mesure du courant consommé par les servos
  • Mesure de la tension de la batterie
  • Connexion pour une carte GY-27 contenant un accéléromètre et un compas (via I2C)
  • 16 entrées / sorties compatible 5V avec 2 lignes d'interruption, le tout commandé en I2C
  • 6 entrées analogiques
  • Amplificateur audio pour ajouter le son à votre Raspberry Pi (à base de LM386)
  • 5 entrées / sorties généralistes compatible 5V direct Raspberry + 5 autres entrées / sorties disponible si le bus SPI n'est pas utilisé
  • Toutes les broches du SPI (MOSI, MISO, SCLK, CE0, CE1) sont disponibles sur un connecteur et compatible 5V
  • Un module horloge temps réel (RTC) pour garder votre Raspberry Pi à l'heure !
  • 4 lignes d'interruptions physiques (INTA et INTB pour les IO, INTC en provenance de l'horloge temps réel, INTD)

Schéma de principe

Voici le schéma de principe complet :
Schéma de principe de la carte d'extension de Bleuette

Détails

Les détails bloc par bloc du schéma de principe :

Liaison au RaspberryPi

La liaison au RaspberryPi se fait via P1 :

BleuettePi : Liaison RaspberryPi

L'alimentation

Pour fonctionner, le RaspberryPi a besoin d'une tension d'alimentation de 5V avec une intensité d'environ 1A.

La carte fille reçoit 2 tensions en entrée :

  • Le 5V pour le Raspberry et pour la carte fille
  • Une tension pour alimenter les servos (de 5V à 6V selon les servos).

Une autre entrée (BATT et BATT1) optionnelle permet de recevoir la tension brute de la batterie à des fins de mesure via le pont diviseur R1 / R2.

Note: Si la tension d'alimentation des servos est directement celle de la batterie, le jumper (J_BATT0 ou J_BATT1) permette d'injecter la tension directement sur R1 / R2.

BleuettePi : Alimentation

Gestion des servos

BleuettePi : Pilotage des servos

Pour le pilotage des servos, un PIC18F4520 programmé avec une version dérivée du projet Pic24Servos est utilisé de la même façon qu'avec la Bleuette Shield Arduino.

Mais comme mentionné plus haut, les entrées / sorties du Raspberry Pi fonctionnent uniquement avec une tension de 3.3V, le PIC18F4520 aussi mais rien ne permet d'affirmer que les servos vont « voir » les impulsions de 3.3V comme des niveaux hauts, donc, j'ai choisi d'alimenter le PIC en 5V et d'adapter la liaison série avec le Raspberry Pi.

Pour la transmission de donnée du RaspberryPi vers le Pic, le signal passe par l'adaptateur de niveau 3V / 5V, pour la communication inverse, du Pic vers le RaspberryPi, un simple diviseur de tension (R9 / R10) ramène la tension à 3.3V max.

Le découplage de la ligne d'alimentation des servos est effectué par plusieurs condensateurs de bonne capacité (C1 et C9).

Les entrées / sorties

L'adaptateur de niveau 3V / 5V bidirectionnel pour les entrées sorties généralistes est un TXB0108PWR :

BleuettePi : Adaptateur de niveau

Une partie des entrées / sorties sont disponibles via les connecteurs OPTION0 et OPTION1 :

BleuettePi : Input / Output

Horloge temps réel (RTC)

Une horloge temps réel est disponible via le bus I2C afin de garder le RaspberryPi à l'heure, même sans alimentation grâce à la pile bouton de sauvegarde (CR1220).

BleuettePi : RTC, Horloge Temps Réel

C'est le DS1339 qui joue le rôle d'horloge, ce dernier est équipé d'une sortie (SQW/OUT) cablée sur INTC (INTterruption Clock) permettant au choix d'obtenir un signal carré à une fréquence précise ou d'utiliser cette broche comme réveil, cette dernière est disponible sur le connecteur OPTION0, ainsi, on peut imaginer un dispositif qui sortirait le RaspberryPi d'un sommeil très profond puisque dans cet état, il ne consommerait absolument rien...

Le son

Le Raspberry Pi disposant d'une sortie son, il est intéressant d'en profiter via l'utilisation d'un amplificateur et d'un haut parleur externe.

BleuettePi : Son

Rien de particulier à dire, à part un potentiomètre permettant d'atténuer le niveau d'entrée.

Mesure du courant et tension LiPo

Un pont diviseur de tension pour la mesure de la tension de la batterie et l'utilisation d'un MAX4173 pour la mesure du courant.

BleuettePi : Mesure du courant

Sur la version à base d'Arduino, c'est ce dernier qui s'occupait de la conversion analogique, or, le Raspberry Pi ne contient pas de convertisseur analogique / numérique (CAN), du coup, il aurait fallu embarquer un circuit intégré spécialisé pour cette fonction mais il n'y a plus de place sur la carte et il y a une meilleure solution, en effet, le PIC18F452 utilisé pour la gestion des servos possède un CAN et justement, ces broches sont libres...

La mesure du courant (SERVO_CURRENT) se fait via l'entrée AN5 et la tension (LIPO_VOLTAGE) via l'entrée AN4.

Carte accéléromètre et magnétomètre

Vu le format de ce type de composant (très difficile à souder avec du matériel amateur), j'ai opté pour un module GY-27 intégrant les 2 composants, le magnétomètre (HMC5883L) et l'accéléromètre (ADXL345) dialoguant tous les 2 en I2C, ils sont donc branchés sur la liaison I2C hardware du Raspberry Pi.

La carte sera donc directement branchée sur la carte fille BleuettePi permettant en plus un gain de place non négligeable.

BleuettePi : Capteur GY-27

Pour ceux ne voulant pas utiliser cette carte, il est tout à fait possible de l'utiliser pour autre chose, ça reste de l'I2C...

Liaison SPI

Un autre convertisseur de niveau 3V / 5V (TXB0108PWR) est présent pour assurer la conversion de niveau de tension du bus SPI :

BleuettePi : Liaison SPI

Guirlande de led RGB

Pour le pilotage de la guirlande de led RGB à base de LPD8806 depuis le Raspberry Pi, la librairie Boblight sera utilisée.

Au niveau électronique, rien de particulier, le pilotage se fait via le bus SPI hardware du Raspberry (ligne MOSI et SCLK).

Informations supplémentaires

Un premier batch de 5 PCB est en cours de fabrication chez Seeedstudio à l'heure où j'écris ces lignes.

Les fichiers sources sont disponibles au format Eagle sur GitHub :

La pages dédiées sur le wiki : BleuettePi sur GitHub.

Ouvrir l'article

Des nouvelles de Bleuette

Point presse

Tout d'abord, un point people, l'information du développement de Bleuette à plutôt bien circulée et Bleuette s'est retrouvée sur plusieurs sites importants :

La vidéo sur Vimeo à été vue plus de 6000 fois.

Plutôt plaisant de voir que ça intéresse du monde mais j'attends avec grande impatience le moment ou un autre Bleuette pointera le bout de son nez en PLA... ;)

Évolutions

Nouvelle carte fille

La shield Bleuette permet le pilotage des servos et le contrôle de la tension / courant consommé par les servos, pour pouvoir ajouter des capteurs multiples, il est tout à fait possible d'utiliser les broches libres des ports de l'Arduino mais il n'y en a pas assez pour tous les capteurs voulus sur Bleuette, du coup, le besoin d'une nouvelle carte d'extension s'est fait sentir et voici ce qu'elle permet :

  • 8 entrées supplémentaires multiplexées utilisant que 4 entrées / sorties (3 d'adressage et une sortie)
  • Connection pour une carte GY-27 contenant un accéléromètre et un compas
  • Un module Bluetooth JY-MCU
  • Une connection pour une guirlande de led RGB à base de LPD8806
  • Un mosfet pour pouvoir piloter un élément de puissance (je ne sais pas vraiment quoi pour le moment...)

Voici le schéma de principe et le PCB associé (cliquez dessus pour agrandir) :
Schéma de principe de la carte d'extension de Bleuette PCB de la carte d'extension de Bleuette

Le schéma de principe au format est Eagle se trouve par ici : sensor.sch et le PCB : sensor.brd

Comme vous pouvez le voir, le PCB n'est pas dense du tout, du coup, il est simple à réaliser avec des moyens modestes.

Mécanique

Pas de grande nouveauté pour la partie mécanique sauf pour les pieds, ces derniers ont été imprimés en PLA Flex permettant d'avoir un peu de souplesse et trempé dans du PlastiDip afin d'avoir un meilleur grip en plus d'un super rendu !

Avant trempage dans le PlastiDip et après :
Les pieds de Bleuette

Tous les éléments d'un pied de Bleuette, on aperçoit l'interrupteur poussoir, le piston et le cylindre et le pied recouvert de PlastiDip :
L'ensemble des pièces constituant un pied de Bleuette

Le tout assemblé :
Vue d'un pied

Le fichier source au format OpenSCAD des pieds de Bleuette est disponible, comme tout le reste de Bleuette sur GitHub / Bleuette.

Le cerveau

J'ai subi beaucoup de soucis avec la carte Arduino, notamment des problèmes de programmation, m'obligeant à recommencer la phase 3-4 fois de suite des fois...
Tous ces ennuis m'ont conduit à radicalement changer ma manière de développer avec Arduino, notamment en utilisant Ino, un outils en ligne de commande pour compiler, programmer, etc, bref, un remplaçant du mal aimé environnement par défaut d'Arduino.

Les problèmes de liaison avec la carte Leonardo m'ont également conduit à une solution radicale, j'ai embarqué un Raspberry Pi dans Bleuette auquel est relié la carte Leonardo, ainsi, c'est le Raspberry Pi qui programme la carte Arduino, ça complique un peu mais au moins, je suis moins gêné...

À force d'utiliser ce système, ce qui devait arriver arriva et j'ai donc décidé de créer une carte fille pour le Raspberry Pi qui permettra de piloter Bleuette directement avec cette dernière.
Bien entendu, je ne laisse pas tomber pour autant le dèveloppement sur Arduino, disons que celui ci sera la version simplifiée.

Bleuette embarquant un Raspberry Pi :
Bleuette embarquant un Raspberry Pi

D'ici peu, je publierai un article expliquant toutes les caractéristiques de la carte d'extension pour Raspberry Pi.

Ouvrir l'article

Nouvelles avancées de Bleuette !

Bleuette marche

Pour commencer, voici une vidéo de Bleuette effectuant ses premiers mouvements :

Bleuette first step from hugo on Vimeo.

L'électronique

Le contrôle des servos de Bleuette (12 pour les pattes + 2 optionnels) se fait au travers d'une carte fille (shield) pour Arduino conçue pour ne pas être totalement dépendante de Bleuette, ainsi, vous pouvez parfaitement l'utiliser pour un tout autre projet.

Ses caractéristiques sont les suivantes :

  • Gestion parfaitement synchrones (voir en dessous) de 14 servos
  • Contrôle de la tension des servos
  • Contrôle du courant consommé par les servos
  • Port d'extension intégré (avec disponibilité de l'alimentation +5V et 4 entrées / sorties RA2 à RA5)

Parfaitement synchrone signifie que les impulsions à destination des servos commencent toutes au même moment avec un décalage très très faible, vous pouvez lire la documentation originale sur la carte.

Le pilotage des servos se fait en envoyant des trames de 17 octets contenant une entête, une commande et la position des servos + un checksum.

J'ai fait faire les PCB par Seeedstudio, qui fait de la très bonne qualité pour un prix très intéressant. La carte est simple à réaliser, la soudure du PIC18F452 nécessite tout de même un peu de doigté et un minium de matériel mais ça reste jouable avec du matériel amateur.

Voici une vue de la carte :
La carte électronique de Bleuette

Si vous souhaitez faire vous même la carte, rendez-vous sur cette page pour avoir la dernière version des fichiers Eagle : Pcb de Bleuette

Pour ceux qui souhaiteraient se procurer une carte (version 1.0.2), frais de port inclu pour la France métropolitaine :

  • La carte seul (sans composant) pour 6€, livraison en France
  • Le PIC18F452 programmé : 10€
  • Pour le kit complet, carte + composants soudé ou non, me contacter

Notez également que j'ai effectué des modifications récentes sur le schéma de principe et le PCB, elle est dorénavant en 1.2.1 (ajout d'un condensateur de découplage C9, des diodes zener D2 et D3 de protection sur les entrées analogiques, modification de l'interrupteur, ajout d'un pont SJ1 pour le reset).

Logiciel

La méca et l'électronique étant finies, j'ai pu attaquer le logiciel embarqué qui est de 2 sortes :

L'assembleur PIC

Rien de spécial à dire, il se trouve ici et comporte tout ce dont on a besoin pour piloter Bleuette et donc ne devrait plus vraiment évoluer...

Le code pour Arduino

Voici la structure :

Et nous avons 4 librairies :

  • Bleuette : C'est par ici que tout passe
  • Sequencer : C'est lui qui gère les sequences définies dans le fichiers sequences
  • ServoController : Pilote de la carte de contrôle de servos
  • SerialCommand : Librairie externe très pratique pour la gestion de commande via la liaison série.

Déplacer Bleuette

Pour faire bouger les pattes de Bleuette, c'est assez simple, commençons par un exemple :

bleuette.servo.set(0, 128);

Cela aura pour effet de positionner le servo 0 à sa position intermédiaire 128.

Si maintenant, on souhaite faire faire des pompes à Bleuette, on ne va pas répéter 24 fois la commande précédente pour positionner chaque patte, sinon, on ne va jamais s'en sortir ! Utilisons plutôt, une séquence :

Tout d'abord, déclarons une structure de type motion_t nommée motion_pushup :

// Push up
motion_t motion_pushup[] = {
    {
        DELAY_MIN, // Durée du déplacement courant
        {
            __, __, __, __, __, __, // Position des pattes horizontales
            UP, UP, UP, UP, UP, UP // Position des pattes verticales
        },
        NULL // Une callback qui sera appelée à chaque fin d'exéction de la position
    },
    {
        DELAY_MIN,
        {
            __, __, __, __, __, __,
            DOWN, DOWN, DOWN, DOWN, DOWN, DOWN
        },
        NULL
    }
};

Puis créons la séquence en elle même :

sequence_t seq_pushup = {
    "Push up",  // Le nom de la séquence
    2, // Le nombre de mouvement dans la séquence
    motion_pushup // La structure de déplacement que nous avons créé plus haut
};

Maintenant, nous n'avons plus qu'à appelé la séquence ainsi :

// Pour la jouer en avant
bleuette.sequencer.forward(sequences[seq]);

// Pour la jouer à l'envers
bleuette.sequencer.backward(sequences[seq]);

Voilà pour cette introduction rapide, je vous invite à regarder le code, il est vraiment simple...

Évolution en cours

La prochaine évolution de Bleuette lui donnera de vrais pieds qui lui permettront de moins glisser mais surtout, lui donnera le toucher au travers d'un petit interrupteur, ainsi, en posant une patte, il pourra s'assurer que le sol est bien en dessous...

Voici une vue de ses bouts de pattes :
Le bout de patte faisant office de capteur

La partie inférieure (la demi sphere et le cylindre extérieur) est mobile et glisse dans le cylindre plus petit dans lequel se trouve un interrupteur poussoir, c'est ce dernier qui fait office de rappel mécanique.

La partie en contact avec le sol (la demi-sphere sur l'image) sera en PLA Flex afin d'obtenir un maximum d'adhérence.

Ses 6 pattes devraient en être équipées, pour cela, un circuit intégré (4512) branché sur le port OPTION permettra de sélectionner la patte à lire via une adresse sur 3 bits, on occupera ainsi seulement 3 bits de sorties pour l'adressage + 1 bit de sortie pour connaitre l'état (patte posée ou non).

Évolutions futures

Bleuette devrait être équipé d'une liaison Bluetooth, d'un capteur magnétique afin de garder un cap lorsqu'il marche et enfin, d'une tourelle mobile avec un capteur ultrason pour détecter les obstacles devant lui et tout cela intégré dans une seconde carte fille.
Bleuette se sentant un peu à l'étroit avec Arduino, il n'est pas totalement exclu que je porte le code pour tourner sur un Raspberry Pi...

Et bien entendu, Bleuette attend impatiemment des frères et soeurs : toute contribution est la bienvenue !

Ouvrir l'article