LinuxCNC tourne sur la carte BeagleBone Black

  • Auteur de la discussion Marc PELTIER
  • Date de début
M

Marc PELTIER

Compagnon
Bonjour à tous !

J'ai eu un peu de temps pour installer la dernière version de MachineKit sur ma BBB.

MachineKit est une image, sur carte microSD de 4Go, d'une installation fonctionnelle de LinuxCNC version 2.6.? pre, sur Debian Wheezy 7.3., avec quelques configurations préparées pour les trois cartes de drivers pour BeagleBone Black disponibles sur le marché.

J'ai téléchargé le fichier compressé de l'image (~ 1 Go) depuis le site http://bb-lcnc.blogspot.fr/p/machinekit_16.html, sur un PC windows 7, J'ai vérifié la checksum avec le logiciel md5sum, puis j'ai créée l'image sur une carte microSD de 4Go, avec le logiciel Win32diskimager.

La carte SD a été ensuite insérée dans la BBB, celle-ci a été branchée sur une alim 5V 2A, sur une télé par un câble microHDMI - HDMI, et sur un hub USB pour pouvoir brancher en aval un clavier, une souris et éventuellement de la mémoire sur USB.

A la mise sous tension, la BBB met assez longtemps pour booter sur Debian. Login : linuxcnc, password : linuxcnc, et c'est parti : on est dans un environnement graphique complet, sur un écran 1920x1080.
Première chose, mettre en place un clavier français. Ensuite, explorer un peu : La racine des répertoires de la carte SD s'appelle linuxcnc, et elle contient un répertoire qui s'appelle aussi linuxcnc.

J'ai mis du temps à comprendre que l'image comprend les sources non compilées, et j'ai pataugé longtemps.
Voici la séquence de commande qui a finalement abouti :
Depuis la racine de la carte SD:
La compilation après make prend beaucoup de temps, mais la dernière commande débouche sur un moment assez agréable : Un panneau de choix de configurations surgit. Les seules qui nous concernent sont dans la branche ARM. J'ai choisi BeBoPr+bridge, dont la configuration de broches semble être un standard naissant.
L'écran d'accueil d'AXIS suit, puis le panneau AXIS familier, agrémenté de deux indicateurs de température (la configuration concerne une imprimante 3D).

Bref, ça marche!!! :P :P J'ai simulé l'usinage de quelques exemples de G-Code fournis, sans problème, bien que rien ne soit branché à la BBB pour l'instant.

Quelques bémols temporaires :
1 - L'installation de Debian proposée a sans doute été tronquée pour rentrer avec LinuxCNC sur 4 Go, et ne comprend même pas un éditeur ni un visualisateur de fichier. A rajouter.
2 - Je n'ai pas retrouvé StepConf wizard, mais c'est peut-être parce que la version de LinuxCNC est celle en développement (2.6 pre).

Yeah!
 
Dernière édition par un modérateur:
T

tranquille

Compagnon
Je suis ce post avec beaucoup d'attention mais je galère un peu
Il me semble qu'il manque un synoptique de ta machine afin que je comprenne un petit peu ... le rôle des différentes cartes, les interfaces nécessaires, le type de moteur piloté, bref, un petit schéma à main levée me faciliterai la compréhension, si tu as une minute ... merci
 
M

Marc PELTIER

Compagnon
Ma machine, pour l'instant, est simplissime : la carte BBB, et c'est tout!
Comme dit plus haut, cette carte est un ordinateur autonome, sur lequel on peut brancher un écran, un clavier et une souris, pour faire tourner une variété de Linux avec noyau temps réel, supportant LinuxCNC.
Pour l'instant, j'en suis là, et ça marche, ce qui est assez stupéfiant pour moi qui ai connu les débuts de l'informatique !

Mais la carte BBB n'est pas seulement un ordinateur : c'est aussi deux rangées de 46 broches, c'est à dire plein de signaux grâce auxquels LinuxCNC pourra commander tout ce qu'on veut.

Mon intention initiale était d'implanter deux moteurs asservis en position, ce que j'essaierai, mais dans un deuxième temps. Dans l'immédiat, j'ai l'intention d'interfacer une carte RAMPS-FD aux broches de la BBB, directement par une trentaine de fils et des broches terminales mâles ou femelles, en suivant ce schéma :

BBB2RAMPS.png


Edité le 15 avril : Attention, ce schéma concerne la RAMPS originale, qui fonctionne normalement sous 5V, et n'est pas compatible avec la BBB. Si vous voulez tenter cette réalisation, utilisez le schéma publié ce jour, plus loin dans le fil.

Pour savoir ce qu'est la RAMPS-FD, voir ici : http://www.geeetech.com/wiki/index.php/Ramps-FD
Cette carte regroupe 6 drivers 2A pour moteurs pas-à-pas, des canaux PWM, et des entrées analogiques pour thermistors, ou logiques pour fins de course. Elle est conçue pour les imprimantes 3D, mais elle peut aussi se voir comme une carte 6 axes. J'ai acheté la mienne 20€ sur ebay. Il faut rajouter les drivers embrochables, environ 4€ pièce. Autrement dit, tout ça est très économique, et, je pense, très très efficace.
Je vous tiendrai au courant de mes progrès.
 
Dernière édition par un modérateur:
G

gtt38

Nouveau
Moi j'ai enfin reussi a faire tourné des moteurs !!!
Mais j'y ai passé toute la nuit !
Je suis sur 2 Beaglebone avec 2 cape Xylotex Beaglecnc et 2 cartes chinoises differentes
Merci a Jeff de Xylotex !!! Son systeme est super bien fait quand on comprends le truc..
Beagle2.jpg

Beagle1.jpg
 
W

wika58

Compagnon
Bonjour à tous,
Je découvre seulement ce post super interessant qui court depuis 4 mois :oops: .
Ca m'interrese bcp car j'ai une petite CNC qui tourne sous EMC2 sur un vieux PC que j'ai installer dans un pseudo-meuble à roulettes.
Je n'y conais pas grand chose en Linux mais j'ai un de mes bon amis qui est informatien en systémes embarqués et qui me fait des applications.
Et justement pour le moment, il est en train de developper autour d'une BBB une application de domotique/alarme...
Il a d'ailleur developpé une carte interface...
Et donc il connait le produit et pourrait m'aider à faire la migration de ma CNC. Et il y a peut-être des synergies possibles...

Je vais donc suivre ce poste avec grand intérêt.

Et un tout grand merci pour le partage.
 
D

duredetrouverunpseudo

Compagnon
Pourquoi se nrpas encore répandu ?

La même chose avec mach3 et sa devient la révolution qu'il faut absolument avoir :lol:
 
D

douardda

Ouvrier
duredetrouverunpseudo a dit:
La même chose avec mach3 et sa devient la révolution qu'il faut absolument avoir :lol:

Syntax error!

Ici on parle de logiciels libres qui tournent avec un OS libre sur des plate-formes matérielles (relativement) ouvertes...

Alors, certes y'a moins bien, mais c'est plus cher :wink:

David
 
C

carlos78

Compagnon
A part l'encombrement de la BBB, je me pose la question de savoir quel est l'interet de remplacer sur une CNC amateur le couple classique carte-mère de PC + carte video par une mini carte-mère ?
L'idéal serait de faire tourner linuxcnc sur une tablette android du commerce ... Linux Ubuntu tourne déja sur tablette, Il suffit peut -être d'attendre la version temps réel.
Sinon ce sujet est interessant.

Carlos78
 
G

gtt38

Nouveau
En tout cas ça tourne j'ai le meme pilotage qu'avec un PC !!!
J'ai réussi a faire fonctionner le tout mais je regrette une légère lenteur du systeme (linuxcnc met 2 fois plus de temps a se lancer que sur mon PC)
Pour Mach3 je ne vois pas l'interet puisque Linuxcnc est 10x mieux.

Mon systeme définitif sera sur un cape FPGA (j'attends sa sortie avec impatience !!) et je partirai sur une carte fille Mesa avec (par ex 7i47) En fait le cape FPGA remplacera une carte PCI de type 5i24 chez Mesa.

Du coups je vends un de mes 2 capes port // si ca interesse quelqu'un, MP moi....
 
C

coredump

Compagnon
carlos78 a dit:
A part l'encombrement de la BBB, je me pose la question de savoir quel est l'interet de remplacer sur une CNC amateur le couple classique carte-mère de PC + carte video par une mini carte-mère ?
L'idéal serait de faire tourner linuxcnc sur une tablette android du commerce ... Linux Ubuntu tourne déja sur tablette, Il suffit peut -être d'attendre la version temps réel.
Sinon ce sujet est interessant.

Carlos78

L'interet est d'avoir plein d'entrées/sorties avec de faible temps de latence, et la possibilité d'expansion moins chere que les cartes pci/pcie.

Sur un tablette aucune entrée sortie a part un USB (et encore...). Et comme linuxcnc ne supporte pas, et ne supportera jamais l'usb, la messe est dite.

A part ca la carte beagle bone black est en rupture chez conrad et RS... Pas de réappro avant un certain temps...
 
M

Marc PELTIER

Compagnon
Bonjour à tous!

Comme annoncé il y a un certain temps, j'ai interfacé, sur la carte BeagleBone Black (dite "BBB"), une carte pour imprimante 3D de type RAMPS-FD (6 axes pour moteurs pas-à-pas, 6 fins de courses, 4 entrées analogiques, 5 sorties PWM). La RAMPS-FD, très économique, est conçue comme "shield" d'une carte Arduino DUE, qui, comme la BBB, fonctionne sous 3,3V. Il est donc possible de connecter des signaux issus de la BBB à certaines broches de la RAMPS-FD, à condition d'avoir le bon schéma de câblage.

Le problème est compliqué par le fait que les broches de la BBB sont multiplexées, et peuvent adopter une demi-douzaine de fonctionnalités différentes, en fonction d'un paramétrage par logiciel. La procédure est décrite ici, pour ceux que ça intéresse : https://learn.adafruit.com/introduction-to-the-beaglebone-black-device-tree/overview

Pour me simplifier la vie, j'ai adopté le paramétrage d'une carte existante pour BBB, la BeBoPr+Bridge, qui dispose déjà d'une configuration opérationnelle pour LinuxCNC, présente sur la MachineKit de Charles SteinKueler, citée dans des posts précédents.

Voici le résultat de mes analyses et synthèses concernant les brochages respectifs de BBB et RAMPS-FD :
Voir la pièce jointe GUIDE_BROCHAGE _FD_BBB.pdf
Muni de ces précieuses informations (petits veinards!), d'un fer à souder et de quelques connecteurs et fils colorés, on peut aboutir à ça :
http://youtu.be/GQGVZTl_gy8

Nota : Depuis cette réalisation, Charles Steinkueler a publié une "Cape" équivalente à la Ramps-FD, appelée "CRAMPS" pour brancher directement sur la BBB. La CRAMPS a les mêmes fonctionnalités que la Ramps-FD (dont elle est dérivée), mais son interface avec la BBB est plus complète, dans le sens où plus de signaux sont routés entre les deux cartes, avec notamment des entrées pour encodeurs, des sorties pour servos RC, le bus SPI, etc... Malheureusement, la carte CRAMPS n'est pas disponible sur le marché, et C. Steinkueler n'envisage pas de la commercialiser.
Il sera donc préférable, à l'avenir, d'adopter le brochage de la CRAMPS plutôt que celui de la BeBoPr, mais ça fait beaucoup plus de fils à souder. J'envisage de créer un circuit souple simple face, qui permettra de transformer une Ramps-FD, économique et disponible sur ebay, en CRAMPS complète.
 
Dernière édition par un modérateur:
M

moissan

Compagnon
cette carte BeagleBone Black est vraiment interressante avec ses broche d'entré sortie directe : encore plus riche que la prise d'imprimante des vieux PC

tant qu'il reste des vieux PC disponible les vieux PC restent economique et simple , mais si il faut construire et vendre quelque chose de nouveau on ne peut pas y mettre une vieille carte mere de recuperation

cette carte BeagleBone Black est vraiment la solution d'avenir , et vu le succes qu'elle a je pense qu'elle sera disponible longtemps , ou sera remplacé par des version suivantes compatible

je me mefie beaucoup plus d'autre ordinateur grand public qui changent ou disparaissent trop vite : le temps de comprendre comment ça marche ce n'est deja plus disponible

c'est vraiment un bonne chose que les programmeur de logiciel libre puisse utiliser un materiel independant !

tant qu'il reste des vieux PC on peut utiliser linuxCNC en sachant que l'on poura garder le même linuxCNC avec une carte plus moderne pour les projet suivant
 
C

coredump

Compagnon
Avenir c'est pas sûr, TI est notoirement connu pour ses délais de livraison exotiques et l'abandon en marche de composants. De plus ce genre de microcontroleur a une vie très courtes (quelques années au plus). On est plus a l'époque du pic 16F84.
D'ailleurs les BBB sont presque en rupture de stock partout...
 
M

moissan

Compagnon
c'est vrai ... je vien de chercher un peu et c'est en rupture de stock partout ... trop de succès ou gros probleme ?

j'aime bien olimex , et il ont plusieurs olinuxino ... carte du même genre bon pour linux et avec different prossesseur de marque differentes pour ne pas dépendre d'un seul
https://www.olimex.com/Products/OLinuXino/open-source-hardware

ça fait des carte un peu plus cher que le barbone black mais avec plus de connexion possible , donc ça peut même reduire le prix total du montage

du genre plusieur port USB
vrai prise VGA pour utiliser n'importe quel vieux moniteur au lieu du HDMI
port suffisant pour connecter directement des ecran LCD a prix très faible quand on veut se limiter a un 7 pouce ou un 10 pouce pour une machine autonome

helas en cherchant dans gogol pas de trace d'instalation de linuxCNC
 
Dernière édition par un modérateur:
M

Marc PELTIER

Compagnon
Il est vrai que la BBB s'était faite rare ces derniers mois, mais on a annoncé il y a une quinzaine de jours des livraisons massives. On verra.

Quoi qu'il en soit, si ce n'est pas la BBB, ce sera une autre carte du même genre, car il en apparaît de nouvelles chaque semaine. Ce n'est pas tellement sur BBB que l'on investit, c'est sur LinuxCNC embarqué...

Et puis, la vraie percée, ce sera peut-être la carte Arduino TRE, qui est en partie quasiment une BBB, avec le même processeur à PRU intégré.
 
C

coredump

Compagnon
J'ai ouie dire des problèmes de fiabilité mais je ne peux pas me prononcer dessus. Le fait est que TI est coutumier des approvisionnements a rallonge (plusieurs mois, voire pire...).
Chaque portage de linuxCNC est propre au processeur (SoC en fait) sur lequel il est porté. Certes une fois porté sur un SoC particulier, ceux ayant la même architecture sont aussi possible, mais pas sans travail.

C'est pour ca qu'une carte mère PC reste le choix de base. Il y a des cartes mini ITX bien supportées, des interfaces supportées aussi (carte pcie de chez Mesa par exemple). La différence de prix étant négligeable face au prix de la CN au final.
 
M

moissan

Compagnon
mefiance : je ne trouve pas sur la carte arduino a processeur intel d'entreé sortie directe sur le processeur : que des entrée sortie avec des protocoles informatique pas très temps reel
http://arduino.cc/en/ArduinoCertified/IntelGalileo

cette carte a un port PCIe : peut on y mettre une carte imprimante paralele ? une solution quand même un peu archaique alors que les autres microcontroleur on une multitude d'entrée sortie rapide
 
Dernière édition par un modérateur:
F

fredcoach

Compagnon
moissan a dit:
mefiance : je ne trouve pas sur la carte arduino a processeur intel d'entreé sortie directe sur le processeur : que des entrée sortie avec des protocoles informatique pas très temps reel
http://arduino.cc/en/ArduinoCertified/IntelGalileo

cette carte a un port PCIe : peut on y mettre une carte imprimante paralele ? une solution quand même un peu archaique alors que les autres microcontroleur on une multitude d'entrée sortie rapide
I2C bus, TWI: SDA and SCL pins that are near to the AREF pin.
TWI: A4 or SDA pin and A5 or SCL pin. Support TWI communication using the Wire library.
SPI:
Defaults to 4MHz to support Arduino Uno shields. sing the board.

Arduino Shield Supported Features Galileo is compatible with Arduino UNO shields and is designed to support 3.3V or 5V shields, following the Arduino Uno Revision 3, including:

14 digital input/output pins, of which 6 can be used as Pulse Width Modulation (PWM) outputs;
Each of the 14 digital pins on Galileo can be used as an input or output, using pinMode(), digitalWrite(), and digitalRead() functions.
They operate at 3.3 volts or 5 volts. Each pin can provide a maximum of 10 mA or receive a maximum of 25 mA and has an internal pull-up resistor (disconnected by default) of 5.6k to 10 kOhms.
A0 – A5: 6 analog inputs, via an AD7298 A-to-D converter
Each of the 6 analog inputs, labeled A0 through A5, provides 12 bits of resolution (i.e., 4096 different values). By default they measure from ground to 5 volts.

I2C bus, TWI: SDA and SCL pins that are near to the AREF pin.
TWI: A4 or SDA pin and A5 or SCL pin. Support TWI communication using the Wire library.
SPI:
Defaults to 4MHz to support Arduino Uno shields. Programmable to 25 MHz.
Note: While Galileo has a native SPI controller, it will act as a master and not as an SPI slave. Therefore, Galileo cannot be a SPI slave to another SPI master. It can act, however, as a slave device via the USB Client connector.
UART (serial port): Programmable speed UART port (digital pins 0 (RX) and 1 (TX))
ICSP (SPI): a 6 pin in-circuit serial programming (ICSP) header, located appropriately to plug into existing shields. These pins support SPI communication using the SPI library.
 
Dernière édition par un modérateur:
M

Marc PELTIER

Compagnon
Je ne vois pas bien quel avantage pourrait apporter la carte Galiléo à LinuxCNC. Le fait d'être dans la lignée du Pentium n'avait d'intérêt que quand les plates-formes Intel étaient les seules supportées par LinuxCNC, mais maintenant que les ARM sont eux aussi utilisables, l'argument disparaît.

A l'heure ou j'écris, la BeagleBone Black est sans conteste la plate-forme la plus efficace et la plus économique pour LinuxCNC : 6 axes pas_à_pas à 50 kHz, 2 A max, pour moins de 100€, incluant toute l'électronique, commande et drivers compris. En performances pures, elle n'est surpassée que par des solutions mettant en oeuvre des cartes à FPGA (MESA et consorts), et ce n'est pas du tout le même prix!

Instantané 1 (18-04-2014 10-59).png
A part la télé, et les moteurs, tout ce que vous voyez coûte moins de 100€

Il faut souligner aussi le potentiel du BeagleBone Black, qui pourra bientôt, sans devoir rien rajouter, gérer des encodeurs en quadrature et des servos, se comporter en serveur Internet pour télécommander la machine depuis un smartphone, contrôler avec une webcam ce qui se passe, etc, etc...

Bref, c'est déjà génial comme ça, pourquoi chercher ailleurs ? Le seul bémol est la disponibilité, un peu inquiétante il est vrai...
 
C

carlos78

Compagnon
Quelle version de LinuxCNC tourne sur la BBB ?

Carlos78
 
M

Marc PELTIER

Compagnon
Une distribution Angström de Linux est présente sur la mémoire de 2 Go qui fait partie de la BBB en standard. Mais LinuxCNC ne tourne pour l'instant que sur la "MachineKit", qui est une implémentation de LinuxCNC 2.6.0 Pre sur Debian 7.3 Wheezy avec un noyau temps réel Xenomai. L'ensemble prend place sur une carte micro-SD de 4 Go, qui boote à la place de Angström.

On peut télécharger la MachineKit en tant qu'image directement fonctionnelle (voir post antérieur).
 
M

moissan

Compagnon
il n'y a pas de raison de se precipiter sur la BeagleBone Black tant qu'on trouve facilement des vieux PC

le gros avantage de ces solution nouvelle est de donner une entiere confiance a linuxCNC et EMC2 : on ne sera pas enfermé dans les vieux PC ! il y aura toujours des solution nouvelle que ce soit BeagleBone Black ou une autre
 
M

Marc PELTIER

Compagnon
Bonjour!

Je me sens en charge de la chronique de l'évolution de LinuxCNC sur BBB, voici donc les nouvelles :

Les prochaines livraisons de BBB concerneront le modèle dit "Rev C", qui se caractérise notamment par le fait qu'il y aura désormais sur la carte 4Go de mémoire eMMC, préchargés avec Linux Debian, au lieu de 2 Go préchargés avec Linux Angström, comme précédemment. En clair, cela signifie un Linux moderne tout confort à la place d'un Linux spartiate.

En conséquence, C. Steinkueler a adapté le package MachineKit, qui sera désormais conçu pour s'adapter à la distribution de Debian présente sur la BBB en standard.

MachineKit à la source : http://blog.machinekit.io/

A suivre...
 
Dernière édition par un modérateur:
D

douardda

Ouvrier
Juste un petit message pour donner l'état de mes pérégrinations sur le sujet.

Le point de départ étant que je me demandais pourquoi ce sont les beagleboard qui apparaissent tout le temps quand on cherche à faire tourner LinuxCNC sur ce genre de petite carte (dites SBC pour Single Board Computer) basées sur un cœur ARM, alors qu'il en existe plein d'autres souvent plus puissantes (en fait je dispose d'un cubieboard2, et je voulais voir si je pouvais m'en servir pour jouer avec LinuxCNC).

La réponse vient de la présence des 2 PRU sur la carte. PRU ça veut dire Programmable Real-time Unit. Ce sont des microcontrôleur (qui tournent à 200MHz) qui permettent de piloter les interfaces temps-réel efficacement.

C'est aussi la réponse aux questions du type "pourquoi pas un vieux PC" ou encore de comprendre l'intérêt d'utiliser des cartes type Arduino comme interpolateur de GCode. Comme ce sont des microcontrôleurs, on leur fait exécuter du code directement, sans OS, et on peut donc contrôler très précisément les flux d'exécution (pas d'interruption non masquable, etc. Qui a déjà programmé sur µcontrôleur sait combien il est rigolo de compter les cycles, ou de rajouter des NOP dans son code pour tenir une spec :) )

Donc le gros intérêt de cette carte, c'est d'avoir le "meilleur des 2 mondes" réunis (une plate-forme assez puissante pour faire tourner un LinuxCNC et un contrôle du pilotage des I/O précis.)

Bon je ne sais pas encore à quel point ces PRUs sont actuellement bien utilisés dans LinuxCNC via l'implémentation proposée par le projet MachineKit, ni les capacités de ces 2 PRUs pour piloter 3, 4 ou 5 axes, mais ça donne envie d'essayer.

Je sens que je vais me laisser tenter par un BBB pour m'occuper les longues soirées d'automne moi :)

David
 
N

nopxor

Compagnon
bonjour,

la wandboard avec son processeur freescale i.MX6 Cortex-A9 et son connecteur EDM standard semble être également une solution d'avenir pour les futurs développements de machinekit.
 
Haut