Archive

Archives pour la catégorie ‘Programmation’

Grbl Overseer : Une interface de contrôle touch-friendly pour CNC

12/06/2017 un commentaire

Mon hackerspace local disposant depuis peu d'une fraiseuse à commande numérique pour la gravure de PCB, j'ai beaucoup joué avec.

La machine (low cost, mais robuste) est dotée d'un firmware libre dédié au contrôle de CNC par un hardware basé sur Arduino : Grbl

Plusieurs interfaces utilisateurs (pour PC) existent déjà pour Grbl. Cependant, aucune d'entre elles ne semble permettre la gestion automatisée de plusieurs tâches, ni n'offre d'interface optimisée pour un écran tactile. Ce sont là 2 des objectifs de ce projet.

Capture d'écran avec le panneau "Jobs" déployé

Ses principaux atouts sont :

  • Une interface utilisateur simple, optimisée pour un usage clavier / souris mais aussi sur écran tactile
  • Une prise en main facile
  • Une vue 3D des différentes tâches, ainsi que de la position actuel de l'outil
  • La planification de plusieurs tâches, avec des points d'origine différents
  • La vérification automatique de la validité du gcode, afin d'éviter de rencontrer des erreurs pendant la phase de production
  • Le support de Grbl à partir de sa version 1.1 (celle ci fige enfin l'interface de commande)
  • Commandes de déplacement manuelles exploitant d'interface de "jog" de Grbl 1.1
  • Une console série "futée", afin d'avoir un aperçu clair et détaillé des communications avec la machines
  • Une barre d'état "futée", affichant toujours l'état et la position de la machine, et permettant une lecture rapide même à distance de l'écran
  • Un éditeur de configuration pour les différents paramètres de Grbl
  • Multiplateforme : Windows, Linux, MacOs + Android (en cours de développement)

Le point le plus intéressant, et qui fut même le point d'origine de ce projet, réside dans sa compatibilité avec les plateforme Android.

En effet, les tablettes Android représentent, par leur faible consommation, leur faible encombrement, et leur utilisation intuitive, une plateforme idéale pour une interface utilisateur.

Le support Android, à l'état de preuve de concept, est toujours en développement. Si l'application démarre sur la grande majorité des périphérique, une version  d'Android >= 3.1 et compilée avec le support USB Host est nécessaire pour s'interfacer avec la fraiseuse à travers un convertisseur USB / UART.

Le code source de Grbl Overseer et les instructions de compilation pour Linux sont disponibles sur Gitlab : >> ICI <<

Une archive contenant l'exécutable pour MS Windows est disponible >> LA <<

De nombreux bug subsistent encore, notamment dans la gestion particulière de l'USB et du rendu Open GL ES propre à Android.

Sur PC en revanche, le logiciel devrait se montrer stable, n'hésitez pas à l'essayer, et à me faire remonter vos remarques !

Categories: Linux, Programmation Tags: , , , ,

Jouer de la musique avec un Steam Controller

31/01/2016 2 commentaires

Étant l'heureux propriétaire d'une manette Steam Controller, produite par VALVE, j'ai entrepris de décoder le protocole de communication utilisé par celui-ci, en particulier la partie concernant le contrôle des actuateurs linéaires assurant le retour haptique. Celui-ci s'est avéré assez simple à mettre en œuvre, ce qui m'a poussé à développer à outil permettant de contrôler les vibrations des touchpads, directement à partir d'un fichier MIDI, et de faire jouer la mélodie par le Steam Controller :

Basé sur la librairie LibUSB, mon logiciel se contente de lire le fichier MIDI, et de jouer les notes du canal 0 sur le touchpad droit, et celles du canal 1 sur le touchpad gauche.

Pour cela, il envoie les séquences d'octets commandant le retour haptic des touchpads. Ces séquences sont décrites dans le code source.

Il supporte une connexion directe au Steam Controller, ou en sans-fil à travers le dongle.

Plus d'infos sur le thread du projet sur le forum Steam.

Une archive contenant l'exécutable pour Windows est hébergée chez SourceForge

Le code complet, abondamment commenté, est disponible sur la page Gitlab du projet

Enjoy !

Librairie pour afficheurs LCD hd44780 sur PIC : Version 3

06/05/2015 2 commentaires

Ayant commencé un projet utilisant un afficheur LCD à contrôleur HD44780, j'ai ressorti ma petite bibliothèque qui va bien. Seulement, elle a l'inconvénient de modifier tous les bits du port connecté au LCD, même ceux qui peuvent être dédiés à autre chose. Ce comportement empêche par exemple le fonctionnement de l'afficheur sur la carte PICDEM2PLUS, sur laquelle je travaille. J'ai donc décidé d'y apporter quelques petites modifications, qui se sont rapidement transformées en réécriture d'une grande partie du code.

Avec des vrais morceaux de barre de progression à l'intérieur !

Avec des vrais morceaux de barre de progression à l'intérieur !

La nouvelle bibliothèque est disponible sur sa page GitLab, et son fonctionnement est décrit ci-dessous : Lire la suite...

Un radar tronçon pour circuit de voiture radioguidées

04/02/2015 Aucun commentaire

Ce projet a été réalisé pour le club de Mini-Z de Fontaine-lès-Dijon. L'idée était de concevoir un dispositif permettant de mesurer la vitesse des voitures dans la ligne droite. Le principe retenu est le suivant : 2 faisceaux infrarouges, séparés par une distance d, coupent la piste. Lorsqu'une voiture les franchit, un microcontrôleur (PIC16F628A) mesure le temps s'écoulant entre la coupure des deux faisceaux, et connaissant la distance les séparant, calcule la vitesse de déplacement de la voiture, puis l'affiche, et éventuellement la transmet vers un ordinateur via une liaison série (USB et/ou Bluetooth):

Animation Fonctionnement

Une image qui vaut tout le paragraphe précédent 🙂

Vous trouverez le projet Kicad ( schéma et typon ), le programme du PIC, ainsi que le programme d'affichage pour PC sur le page GitLab du projet.

Voilà, tout est dit. Enfin presque ...

Lire la suite...

S’envoyer des SMS avec l’api SMS Free Mobile

24/07/2014 Aucun commentaire

Free Mobile a récemment mis en place un service permettant de s'envoyer des notifications par SMS, l'objectif étant de permettre à des systèmes, tels qu'une centrale d'alarme, de contacter l'utilisateur par SMS sans nécessiter l'allocation d'une carte SIM supplémentaire.

FreeMobileOption

L'option d'envoi de SMS dans l'espace client du site Free Mobile

Son utilisation est simple, après activation du service dans les options de son compte Free Mobile,  il suffit d'accéder à l'URL suivante :

https://smsapi.free-mobile.fr/sendmsg?user=XXXXXXXX&pass=YYYYYYYYYYYYY&msg=Hello%20World%20!

en remplaçant XXXXXXXX par son numéro d'utilisateur, et YYYYYYYYYYYYY par la clé unique fournie lors de l'activation du service, pour recevoir un SMS "Hello World !".

Le code de retour HTTP indique la réussite ou l'échec de l'envoi.

Pour évaluer le service, et préparer son intégration dans d'autres projets, j'ai écrit une petite application Qt5 permettant l'envoi simplifié de SMS : Free Mobile SMS Tester

Lire la suite...

Projet WifiBotBerry : un petit robot télécommandé à base de Raspberry PI

13/04/2014 6 commentaires

Ayant, dans le cadre de mes études, développé un logiciel de contrôle pour la plateforme WifiBot, j'ai réalisé que le concept était très prometteur, et permettait de s'initier facilement à la robotique. Son prix étant décourageant pour un particulier, je me suis mis en tête de réaliser une plateforme semblable, la moins onéreuse possible, à base de Raspberry Pi :

WifiBotBerry

La plateforme WifiBotBerry

L'ensemble ne m'aura couté que 80€ (Raspberry Pi inclus).

Cet article décrit toute la construction du WifiBotBerry, et en particulier l'installation et le paramétrage des logiciels utilisés....
Lire la suite...

Simple Xbox 360 Controller : une classe permettant l’utilisation des manettes Xbox 360 sous Windows avec Qt

24/02/2014 5 commentaires

Pour utiliser les manettes de xbox 360 sous Windows, Microsoft a mis au point la librairie Xinput. Si plusieurs développeurs ont déjà mis a disposition des classes C++ pour faciliter l'accès à Xinput, aucune n'a été écrite pour tirer partie du mécanisme des slot / signal de Qt. La classe SimpleXbox360Controller a pour objectif de pallier ce manque.

Le logiciel de test Simple Xbox 360 Controller Tester

Le logiciel de démo :  Simple Xbox 360 Controller Tester

Le programme d'exemple Xbox 360 Controller Tester permet de tester rapidement le fonctionnement d'une manette. L'exécutable est disponible ici : SimpleXbox360ControllerTester

L'ensemble du code de la classe, celui du programme d'exemple, et la documentation en anglais du code est disponible sur GitLab.

Pour mes amis francophones, vous trouverez ci-dessous une version française de la doc :
Lire la suite...

SevenSeg : utilisation d’afficheurs 7 segments doubles sur microcontrôleurs PICs

03/01/2014 4 commentaires

Lorsqu'il est nécessaire de communiquer des informations à l'utilisateur, l'ami le plus fidèle des microcontrôleurs est souvent un afficheur LCD, et particulièrement ceux dotés d'un contrôleur HD44780. Ces écrans, dont la taille varie de 8 caractères pour les plus petits, à plus de 4 lignes de 20 caractères pour les plus grands, sont particulièrement aisé à utiliser grâce à leur contrôleur, qui utilise un protocole de communication très simple. Mais je ne m'étendrai pas sur le sujet, celui-ci ayant déjà fait l'objet de l'article suivant.

Cependant, dans certains projets, l'utilisation de ces écrans reviendrait à utiliser un Hummer pour se rendre au travail : ça passe difficilement les virages, ça se gare de justesse, et on fini par se demander si on a réellement besoin de tant pour effectuer ces simples trajets quotidiens. C'est par exemple le cas lorsqu'on souhaite juste afficher une température : là où 2 caractères sont nécessaires, le plus petit afficheur LCD en propose 8. Un peu "overshoot", non ?

illustration LCD vs 7 segments

Afficheur LCD vs Afficheur 7 segments

Travaillant justement sur un de ces projets qui ne requièrent que l'affichage d'un nombre à 2 chiffres, j'ai mis au point quelques fonctions simples afin de faciliter l'utiliser de ces afficheurs. Ces fonctions sont prévues pour fonctionner avec un afficheur double ( 2 chiffres ) qu'il soit à anode commune, ou cathode commune, mais elles fonctionneront telles quelles avec un afficheur simple ( 1 chiffre ) et ne demanderont que des modifications simples pour fonctionner avec des afficheurs avec plus de chiffres. L'ensemble du code est écrit pour le compilateur XC8 de Microchip, mais devrait fonctionner sans difficultés sur d'autres afficheurs.

Lire la suite...

Librairie pour afficheurs LCD hd44780 sur PIC avec le compilateur Microchip XC8

02/04/2013 6 commentaires

/!\ Nouvelle version dispo ICI

Permettant la mise en place d'interfaces simples et lisibles avec l'utilisateur, les afficheurs LCD comptent parmi les périphériques les plus souvent utilisés en association avec les micro-contrôleurs. Cependant, sans être d'une grande complexité, leur contrôle n'est pas des plus évidents. De plus, passer du temps à faire fonctionner un afficheur LCD sur un projet bien plus grand est souvent frustrant, et l'utilisation de fonctions pré-existantes permet de grandement simplifier le code écrit.

example afficheur

Afficheur LCD alphanumérique 4 lignes 20 colonnes piloté par un PIC.

 

J'ai donc codé une petite librairie regroupant les fonctions essentielles à l'utilisation d'un afficheur LCD utilisant le protocole hd44780 (la grande majorité des afficheurs alphanumériques).

Lire la suite...

Mon premier programme en Qt : Snake

01/04/2013 Aucun commentaire

Je vous présente un petit programme que j'ai codé il y a déjà quelques temps, pour m'initier à Qt. Il s'agit d'une version simple du jeu "Snake" :

screenshot

Screenshot du programme fini

Lire la suite...

Categories: Programmation Tags: , , , ,