SmoothieBoard
Sommaire
Carte SmoothieBoard
C'est une carte de contrôle pour des machines CNC.
Le site est http://smoothieware.org/smoothieboard
A plateformeC, cette carte est présente dans les
* Les imprimantes 3D * La découpe laser * Le routeur CNC
Configuration
Règles udev
Sous fedora la carte est en conflit avec le modem manager (id OpenMoko), il faut donc ajouter une règle pour la blacklister.
Dans /usr/lib/udev/rules.d/77-mm-usb-device-blacklist.rules, ajoutez en fin de fichier les lignes suivantes :
- Smoothie board
ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="6015", ENV{ID_MM_DEVICE_IGNORE}="1"
Ensuite il faut redemarer udev :
systemctl restart systemd-udevd.service
systemctl restart systemd-udev-trigger.service
systemctl restart systemd-udev-settle.service
cablage
les entrées sorties sur la carte beta :
firmware
Compilation
Pour obtenir les sources
git clone git://github.com/Smoothieware/Smoothie.git
Pour obtenir la chaine de compilation
Windows: win_install.cmd OS X: mac_install Linux: linux_install
ensuite (pour linux)
./BuildShell
Pour compiler
make clean all
Un exemple de modification du firmware
Ajout d'un module affichant du texte
Module de Test
Voici un module, position, qui affiche une phrase dans la console à chaque évènement enregistré. Il m’a servi à effectuer une première approche de la programmation par module de la smoothieboard.
Le module se compose ainsi : - Un fichier .h header - Un fichier .cpp pour le corps du programme
Le fichier header contient la déclaration de la classe de l’objet. Il ne contient qu’une partie « public » qui décrit les différentes méthodes de la classe : Le constructeur Le destructeur « on_module_loaded » : obligatoire pour l’appel du module « on_block_end » : est appelé en fin de bloque d’exécution des contrôleurs moteurs « on_gcode_execute » est appelé à chaque exécution d’un Gcode La liste des évenements au quels on peut souscrire se trouve à la page listofevents . Il me semble que la liste est non exhaustive : le module que j’ai pris pour exemple, le module laser, posséde en plus les méthodes « on_play » et « on_pause ».
Le header contient aussi l’appel de la classe kernel : « #include "libs/Module.h" »
Le fichier du corps du programme contient les differents header utilisé pour la programmation (il reste à définir qui fait quoi) et les différentes méthodes crées dans le header du module.
Il faut faire une déclaration dans le fichier main.cpp : Inclure le header du module crée : « #include "modules/tools/position/Position.h" » Crée un instance du module : « kernel->add_module( new Position() ); »
Les différentes méthodes du module position execute le même code : afficher un texte dans la console. Le code utilisé est : « THEKERNEL->streams->printf("Texte à afficher"); ».