Graveur laser, création d'un raster

Bonjour, excusez-moi je suis nouveau sur le forum (petite présentation : élève de terminale SSI en banlieue Lyon ) et j’aurais besoins d’aide pour le développement d’un raster.

Moi et des amis tentons de créer un graveur laser (projet de lycée de terminale science ingénieur) et je suis actuellement bloqué dans la partie de la conversion de l’image, je m’explique.
Je voudrais prendre une image (bmp bicolore (1 bit)) pour la convertir en une matrice de pixel (raster) avec le 1 correspondant au noir et le 0 au blanc pour ensuite pouvoir exploiter cette matrice afin de donner des coordonnées auxquels devront se rendre des moteurs pas à pas.

Dans ma démarche j’ai tout d’abord regarder comment cela pouvait se faire en c++ et cela était assez simple avec des librairies contenant directement des fonctions pour le faire, et ensuite je suis parti sur du Arduino mais là, rien de concluent, les quelques recherche que j’ai peu effectuer m’ont mené à penser que je devrais prendre une carte sd pour la mettre sur la carte et ensuite coder moi-même la partie pour créer le raster et c’est ici que je bloque, je n’ai pas la moindre idée de comment je peux interagir avec une image bmp ni en extraire les informations.

Si vous avez des idées ou une quelconque autre information je serais preneur, sinon je pense que j’irais m’orienter vers les Raspberry (je sens que je vais me faire lyncher pour ça^^) qui elles acceptent le c++.

Référence "semageek"

Ps : Je débute totalement en Arduino et n’ai que de faibles bases en codage en général et oui je sais que c’est ambitieux mais j’ai besoins de développer le programme et de ne pas en prendre un tout fait.

Merci.

Hello,
Tu peux aussi transformer ton image BMP en code (tableau) à l'aide d'un outil, puis utiliser ce tableau dans ton sketch.
https://code.google.com/p/arduino-tvout/wiki/Bitmaps
(y'a des infos complémentaires dans les commentaires).

Sinon il doit bien exister quelque part une lib qui fait ça sur Arduino.

Et sur Aduino on développe en C et C++, pour info :wink:

Bonjour et bienvenue

Est-ce que l'arduino sera toujours connecté à un PC?

Auquel cas il serait plus pratique, au lieu d'utiliser une carte SD, d'envoyer les instructions pour tes moteurs et ton laser avec des commandes transmises par liaison série, à l'aide un programme fait maison sur le PC. Comme tu l'as dit, c'est plus simple de faire ça sur un PC, alors que sur l'arduino, et peut-être même sur un raspberry, il va falloir ruser un peu :slight_smile:

Si le PC n'est pas juste à coté de ton graveur, mais n'est pas très loin non plus, tu peux utiliser une liaison sans fil, par exemple Bluetooth avec un module HC-05.

Si c'était mon projet, je ferais un plugin pour Paint.NET (C#). L'avantage c'est que Paint.NET fait déjà une bonne partie du travail, il ouvre à peu près tous les formats d'image et le convertit en raster. Le plugin se chargerait de convertir le raster en commandes pour les moteurs et le laser, et les envoyer à l'arduino...

Que suis-je idiot...
J'ai bien oublié de préciser que cela devait être portatif (gravure sur support mural...) c'est pour cela que j'étais parti sur de la sd mais c'est vrai que en gardant un pc dans les 10m c'est faisable et intéressant puisque je pourrais en profiter pour argumenter sur les réseaux (oui il y a une soutenance orale à la fin^^) et cela me simplifiera la vie.
Mais donc par contre si je reste sur le Bluetooth si j'ai bien compris je code en un quelconque langage (en passant par les plugs de Paint.NET par exemple) sur le pc qui transmet directement les infos aux moteurs par l'intermédiaire d'une Arduino.
Et pour le transfert des données par Bluetooth je pense qu'il doit bien exister pas mal de tutos la dessus.

Merci guix et merci patg pour les infos sur cet outil qui a l'air bien pratique comment dire que vous me sortez pas mal de la galère.

Ajouter le Bluetooth à ton projet sera vraiment très simple. Le module HC-05 (ou similaire) remplace simplement le câble USB, le code ne change pas puisqu'il s'agit toujours d'une liaison série.

Donc pour l'instant oublie le Bluetooth, ce n'est pas le plus important :slight_smile:

A partir du PC tu envoie des données à l'arduino en utilisant la classe SerialPort

L'arduino lit ces données avec Serial.read(), il faut ensuite qu'il traite ces données pour en faire des ordres à envoyer à tes moteurs et ton laser.

Sans vouloir te décourager, il y a quand même pas mal de travail pour réaliser ton projet.

N'hésite pas si tu as des questions :wink:

Ce projet m'intéresse beaucoup, ça ne me gênera pas de bosser 200-300h dessus voir plus, et entre nous pour la réalisation de ce projet la partie physique pour le laser et la résistance des matériaux est autrement plus ardue (analyse de thèse...).

Merci.

Hello Blamas,

Joli projet !
Une idée comme une autre : Afin de ne réinventer la roue tu pourrais peut-être te baser sur le G-code utilisé par les imprimantes 3D (En implémentant dans l'arduino un interpréteur limité aux commandes nécessaires. )

Quelques explications : G-code/fr - RepRap

Avantage de la solution : Tu pourrais peut-être profiter de programmes existant pour convertir les bitmap en G-Code.
De plus, en utilisant un standard, tu ouvres ton projet à d'autres applications potentielles...

Mais ce n'est qu'une idée... :slight_smile:

Bonne année 2016 !

Coyotte