Affichage des articles dont le libellé est D-Arbalet. Afficher tous les articles
Affichage des articles dont le libellé est D-Arbalet. Afficher tous les articles

jeudi 20 juillet 2017

Le projet Arbalet, suite...

Pour faire écho au billet précédent, voici un des sujets en cours qui progresse maintenant de façon plus'dynamique'. Petit rappel : Yoan Mollard m'a demandé de lui créer une carte Arduino adaptable directement sur une Raspberry Pi3. Cette carte joue le rôle d'interface entre la carte Pi3 et la série de LEDs installées dans la table Arbalet, voir cet article.


Par rapport à une carte Arduino de base, le projet utilise ici un processeur plus complet puisqu’il s'agit d'un ATmega328pb. Les périphériques supplémentaires de ce processeur par rapport a l'ATmega328p sont intéressants en ce sens qu'il devient possible de conserver la liaison série entre la carte Arduino et le PC de développement sans être obligé de déconnecter la carte compatible Arduino de la Pi3 à chaque besoin de téléversement. Le deuxième port série de ce 328pb est utilisé pour communiquer avec la Pi3. Faire autrement eût été extrêmement fastidieux en manipulations, à la longue.

Une Pi3 équipée de la carte compatible Arduino nommée ARPI.

Une autre différence concerne la bibliothèque de commande des LEDs. A la base, il s'agit de la bibliothèque Adafruit. Elle fonctionne très bien mais est visiblement quelque peu gourmande en mémoire RAM. Pour rappel, le 328p ou 328pb ne contiennent 'que' 2Ko de RAM. J'ai donc choisi la bibliothèque FastLED, qui fait référence en la matière. Par contre, j'ai du l'adapter aux nouvelles ressources utilisées sur ce projet. Comme toute bibliothèque pour Arduino, elle ne prend en compte que les cartes Arduino Uno de base. Le processeur 328pb n'étant pas reconnu, il m'a fallu 'agrémenter' cette bibliothèque des déclarations nécessaires.

Site fastled.io inaccessible le 20 juillet 2017!

Autre grosse différence, cette étude va être industrialisée. Jusqu’alors, je ne me souciais pas vraiment de ce type de situation car je gérais absolument toute la chaîne de fabrication et de montage des cartes. Devoir faire réaliser le projet par une entreprise extérieur demande donc quelques ressources complémentaires, et une certaine adaptation aux processus 'extérieurs'.

Il me restait à développer le logiciel de ce nouveau matériel, et donc à gérer la communication avec la Pi3 et les strips LEDs. Voilà qui est fait : 


J'ose une petite satisfaction personnelle ;-)

Update 25/07/2017 : Le premier jet de la version industrielle.


Les éléments semblent correctement réalisés. Sauf le connecteur de la Pi, sur la carte ARPI qui est placé du mauvais côté du circuit imprimé. Encore quelques précisions à fournir au sous-traitant, et un peu de travail 'manuel' pour extraire ce connecteur et le placer sur l'autre face.

Ça se précise :-)

dimanche 19 mars 2017

Arduino, ATmega328pb, Raspberry Pi et le projet Arbalet.


Durant ma participation au MakerFaire de Nantes en juillet de l'année dernière (2016), j'avais Yoan Mollard en voisin de 'stand'.

Yoan est l'initiateur d'une surface pixelisée interactive opensource :





Il est bien-sûr possible de trouver de multiples sources de présentation de ce type d'étude sur Internet, mais le grand intérêt du travail de Yoan est que son projet est en cours d'industrialisation, ce qui permettra d'ici quelques mois d'offrir un kit de montage complet, et le plus simple possible.

Et moi, dans cette affaire? Et bien Yoan m'a contacté il y a quelques semaines pour développer certaines parties du projet et notamment une carte compatible Arduino directement insérable sur une carte Raspberry Pi. La carte Arduino qui se présente pour l'instant sous la forme d'une carte standard, sert à interfacer les commandes entre la Raspberry et les rubans de LEDs.

J'ai donc repris mon étude précédente à base de processeur ATmega328pb pour l'adapter aux nouveaux impératifs. En fait c'est assez simple, il a 'suffit' de retirer ce qui n'est pas utilisé comme le port RS485, l'alimentation à découpage etc etc... et d'adapter le PCB pour un assemblage sur une Pi. Après plusieurs réflexions sur la meilleur façon de faire, le résultat donne ceci : 

La carte 'Arduino' montée sur une Pi.
Tout le challenge de cette étude a consisté à implémenter le juste nécessaire de composants et de fonctionnalités pour répondre au cahier des charges, tout en permettant d'éventuelles extensions. Contrairement à ce que j'ai pu découvrir comme sujets équivalents sur le net, je ne me suis pas servi d'un des ports série de la Pi pour programmer l'Arduino de la carte d'extension.
  • D'une part parce que dans le projet Arbalet, les deux ports séries de la Pi sont utilisés. Le port série matériel est utilisé par le module BlueTooth et le port série 'logiciel', devenu le port série 'standard' de la Pi, est présenté sur son connecteur d'extension.
  • D'autre part parce que le port 'software' de la Pi, utilisé pour la communication avec la carte Arduino, impose de ne pas toucher à la fréquence de fonctionnement du processeur de la Pi. Sans compter qu'il aurait fallu aussi jongler avec les paramétrages de ce port pour tantôt programmer la carte Arduino, tantôt servir de lien de communication entre les deux systèmes.
Ayant eu par le passé, la possibilité d'expérimenter la programmation d'une carte Arduino en se basant sur un circuit d'interface FTDI FT230x très bon marché et de petite taille, j'ai choisi cette option pour simplifier les développements logiciels. 

D'autre part, cette carte d'extension comporte un connecteur de type industriel qui permet d'alimenter non seulement une partie de la carte Arduino, mais aussi la Raspberry Pi, ce qui règle le problème parfois épineux d'un branchement d'alimentation 'solide'.

De plus, pratiquement tous les ports non utilisées du processeur ATmega sont 'servis' sur deux connecteurs d'extension (dont je n'ai pas équipé la carte puisque inutiles dans le projet Arbalet initial), ce qui permettra d'utiliser ces 'extensions' pour d'autres projets.

Enfin, la simplicité de cette carte Arduino provient essentiellement de la disponibilité des DEUX ports série sur le processeur ATmega328pb. L'un d'entre eux est dédié à la programmation Arduino, via l'adaptation USB, l'autre sert de pont de communication avec la Raspberry.

Après le 'flashage' du bootloader compatible Arduino, le téléversement du 'fameux' sketch Blink fonctionne comme prévu. A la seule différence que je n'ai pas connecté la LED utilisateur sur la même broche du processeur que sur les cartes Arduino Uno, mais sur la pin n°7. Ce qui ne change rien à l'affaire...