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 :

  1. 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 :

Smoothie wiring diagram.png


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"); ».