« IllustraBot » : différence entre les versions
Aucun résumé des modifications |
|||
(9 versions intermédiaires par 3 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[File:illustrabot.jpg|400px|droite]] | |||
[http://fablab-lannion.org/2013/01/illustrabot-un-dessinateur-sans-fil/ Plus d'informations] | [http://fablab-lannion.org/2013/01/illustrabot-un-dessinateur-sans-fil/ Plus d'informations] sur le projet. | ||
Le code est disponible dans notre dépôt [https://github.com/fablab-lannion/IllustraBot github]. | Le code est disponible dans notre dépôt [https://github.com/fablab-lannion/IllustraBot github]. | ||
Ligne 14 : | Ligne 12 : | ||
Plus d'information sur [[Github]] | 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: [http://lowpowerlab.com/blog/2013/01/17/raspberrypi-websockets-with-python-tornado/ Lowpowerlab]) | (Inspiré de la page: [http://lowpowerlab.com/blog/2013/01/17/raspberrypi-websockets-with-python-tornado/ Lowpowerlab]) | ||
=== Installation === | |||
Installation de la librairie Python Tornado | Installation de la librairie Python Tornado | ||
pi@raspberrypi ~ $ sudo aptitude update | pi@raspberrypi ~ $ sudo aptitude update | ||
pi@raspberrypi ~ $ sudo aptitude install python-pip | pi@raspberrypi ~ $ sudo aptitude install python-pip python-dev | ||
pi@raspberrypi ~ $ sudo pip install Tornado | 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): | Lancer le serveur (inclus dans le dépot Git): | ||
pi@raspberrypi ~/IllustraBot/RaspberryPi/ $ python websocket-server.py & | |||
''NOTE: Le serveur websocket est fonctionnel et | ''NOTE: Le serveur websocket est fonctionnel et transmet le GCode vers un port série'' | ||
[[Category:IllustraBot]] | [[Category:Projet]] [[Category:IllustraBot]] |
Version actuelle datée du 16 mars 2014 à 16:36
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