IllustraBot

De Kernel Fablab Lannion
Illustrabot.jpg

Plus d'informations sur le projet.

Le code est disponible dans notre dépôt github.

Pour accéder en écriture au dépôt, il vous faut créer un compte github puis demander à user:jerome de vous ajouter en tant que collaborateur (pensez à donner votre user github).

Une fois ceci fait, vous pouvez récupérer le code en local :

git clone https://github.com/fablab-lannion/IllustraBot.git
cd IllustraBot

Plus d'information sur Github


Principe de Fonctionnement

A partir d'un smartphone connecté en 4G, une interface graphique permet à l'utilisateur de laisser libre à cours à son imagination: du mouton au coeur en passant par le carré bien de chez nous, dessin libre :-) Ce dessin est ensuite reproduit en temps réel par un robot hautement perfectionné, à savoir un crayon suspendu par deux fils de pêche motorisés :-)

Architecture Globable

L'objectif de ce ce projet n'était pas de valider les talents artistiques de notre communauté naissante (quoique...) mais d'intégrer dans le cadre d'un premier projets plusieurs briques technologiques: - application androïd ( parceque qu'Iphone c'est as been :-p ) - conversion du dessin en commandes Gcode ( protocole utilisé notamment dans le pilotage d'imprimantes 3D) - liaison par websocket par protocole radio 4G/LTE (parceque ca va super vite) - réception sur raspberri Pi par un serveur websocket - transmission des commandes Gcodes par SPI à un arduino - décapsulation des commandes Gcode et pilotage des 2 moteurs par PWM


Application Androïd

Les sources sont basées sur le projet https://github.com/mattstock/android-tinyg , permettant de piloter une carte par Gcode. On a donc dans ce projet déjà plusieurs briques de présentes ( le squelette, la transmission de commandes Gcodes) , auquel on a ensuite ajouté: - une communication par websocket - quelques paramètres de tests pour pouvoir valider la chaîne sans trop stresser l'arduino ( il fait ce qu'il peut le pauvre...): envoi de commande unitaire, envoi de commandes en mode rampe toutes les x ms - quelques paramètres de configuration pour indiquer l'adress IP, son port, et autres curiosités de ce genre

Plus de détails sous github ;-)

Arduino

TBC, voir sources pour le détail en attendant la suite...


Serveur WebSocket sur RPi

(Inspiré de la page: Lowpowerlab)


Installation

Installation de la librairie Python Tornado

pi@raspberrypi ~ $ sudo aptitude update
pi@raspberrypi ~ $ sudo aptitude install python-pip python-dev
pi@raspberrypi ~ $ sudo pip install Tornado
pi@raspberrypi ~ $ cd IllustraBot/RaspberryPi/pyserial-2.6
pi@raspberrypi ~/IllustraBot/RaspberryPi/pyserial-2.6 $ python setup.py install
pi@raspberrypi ~/IllustraBot/RaspberryPi/pyserial-2.6 $ cd ../SPI-Py
pi@raspberrypi ~/IllustraBot/RaspberryPi/SPI-py $ python setup.py install

Configurer le serveur

L'objectif est de donner au serveur websocket le type d'interface et les modifications à faire sur le gcode.

  • botname = 'test' # défini le type de robot à utiliser (parmi la liste suivante)
  • sourceMaxX = 500 # la valeur max de l'axe X sur la source
  • sourceMaxY = 700 # la valeur max de l'axe Y sur la source
  • config = ... défini la liste possible des robots configurés

Les types de robots sont:

  • 'type' : 'dev'
    • pour les connexions série (type arduino)
    • champs liés:
      • 'arduinoDev': '/dev/ttyUSB0',
      • 'arduinoDevSpeed': 115200,
  • 'type': 'socket',
    • pour les connexions gcode over socket (exemple: parrot)
    • champs liés:
      • 'socketIP': '192.168.1.100'
      • 'socketPort': 9999,
  • 'type': 'file',
    • pour envoyer le gcode dans un fichier
    • champs liés:
      • 'file': '/tmp/gcode'
  • 'type': 'spi',
    • pour envoyer le gcode sur un dev SPI
    • champs liés:
      • aucun (pour le moment)

Les autres champs à configurer pour chaque robot:

  • 'sizeX': la taille de l'axe X du robot
  • 'sizeY': la taille de l'axe Y du robot
  • 'inverseAxes': inverser l'axe Y et Z (0 ou 1)
  • 'trapezeFactor': si projection trapezoidale, facteur de multiplication du segment haut du trapeze,
  • 'floor': passer le gcode de flottant à entier (0 ou 1)
  • 'moveToLenght': transformer les coordonnées cartésiennes en longueurs pour les robots à base de poulies,
  • 'extraLenght': longueur à ajouter

Lancer le serveur (inclus dans le dépot Git):

pi@raspberrypi ~/IllustraBot/RaspberryPi/ $ python websocket-server.py &

NOTE: Le serveur websocket est fonctionnel et transmet le GCode vers un port série