MPCNC Part Trois

Alors ca marche presque.

J’ai récupéré une affleureuse que je n’ai pas encore monté car il faut imprimer la monture (et puis j’aimerais bien faire des tests avec un stylo d’abord avant de mettre un truc plus gros).J’ai donc réutilisé le mineur a bitcoin et un petit écran que j’ai vissé sur le meuble


Les cables passent par des trous dans la table

il reste un peu de fil qui traine mais j’attends d’imprimer plus de rails de cable pour nettoyer un peu tout ca

J’ai finalement branché la carte. Elle demande une alimentation 12v pour les moteurs et un bloc d’alim est fourni. J’ai un peu rusé en utilisant une ligne PCI Express du bloc d’alimentation du PC. Comme ça ça s’allume en même temps que le PC et ça libère une prise 220v.

Il me reste a imprimer la monture pour la défonceuse. La semaine prochaine sera probablement la première pièce.

MPCNC Part Deux

Ça ce construit. Je n’ai désormais plus aucun souci d’impression et tous les morceaux sont imprimés

pour information la table basse est a vendre

J’ai fait un petit meuble pour l’accueillir. J’ai poserais le PC (qui sera mon mineur a bitcoin reconverti) qui contrôlera la machine sur l’étagère du dessous.


J’ai laissé un peu de place pour poser clavier/souris/écran sur le côté

CNC + impressions 3D

Alors, en fabriquant mes claviers, un truc qui me manquait c’était surtout la précision et la répétabilité des découpes. A un moment j’ai voulu utiliser une CNC et le fablab a côté de chez moi m’a formé au maniment de la chose. Mais je n’ai jamais fait de découpe, principalement parce que j’y vais en vélo électrique le weekend et que ca me bloque quasiment toute la journée pour faire deux trous dans du bois. J’ai essayé de voir ce qu’il y avait en petite CNC pas trop cher (notament XCarve ou Shapeoko ou bien Maslow CNC ) et finalement je suis tombé sur un projet open source MPCNC (pour “Mostly Printed CNC” ). Le truc a l’air pas trop cher, bien versatile (on peut donner soit-même les dimensions souhaitées et il y a un calculateur qui permet de fournir quels dimensions de tube de support il faut ). Leur boutique en ligne fournit un Kit, et soit on achete les parties imprimées en 3D, soit on les imprime soit même ( une centaine d’heures d’impression).

Honnêtement, avec les galères que j’ai eu je pense qu’il est moins cher et plus rapide d’acheter directement les parties imprimées, mais je ne suis pas très pressé et pour moi, imprimer soit même sa CNC fait aussi partie de l’expérience. Du coup, après plusieurs upgrade de mon imprimante j’ai maintenant un truc qui tient bien la route.

1. Octoprint

J’ai commencé par utiliser un raspberry pi pour installer Octoprint dessus. Le raspberry pi, connecté au réseau en wifi controle l’imprimante, ce qui m’évite de me ballader entre le PC et l’imprimante avec une carte SD. Avec la webcam on peut surveiller son impression et créer des timelapse (pour savoir a quel moment ça a raté ! ). Comme d’habitude j’ai bien galéré avant de comprendre que le transfo que j’utilisait pour alimenter le raspberry pi ne délivrait pas assez de courant et faisait planter la machine lorsqu’elle utilisait trop de ports USB (en même temps que le WIFI). Une fois passé ce souci, l’interface est plutôt pas mal et pratique. Il y a un slicer intégré que je n’utilise pas car je préfère simplify3D que j’ai acheté à Cura.


la l’éclairage change de couleur a cause du ruban de led de ma boite a impression dont j’ai perdu la télécommande et qui est restée en mode arc-en-ciel)

2. Ce #@||*ù !! de plateau chauffant !

Pour imprimer mes pièces, je suis partie sur de l’ASA (un plastique ayant peu ou prou les mêmes propriétés que l’ABS).  J’ai eu pas mal de soucis quant a l’adhésion des pièces sur le plateau. Du coup je suis passé au BuildTAK, une matière faite pour l’impression 3D. Et j’ai eu le problème inverse : les pièces ont carrément fusionnées avec le plateau, avec impossibilité de les enlever sans décoller le buildtak que j’avais collé sur le plateau en verre.

Du coup je suis passé au systeme flexplate de buildtak. Il s’agit d’une plaque en métal flexible et aimanté afin de bien adhérer au plateau. Et forcément, ca ne s’est pas bien passé non plus : mon plateau est composé de 2 éléments : un plateau chauffant sur laquelle on pose une plaque en verre. Pour le systeme flexplate, j’ai mis les aimants directement sur le plateau chauffant comme préconisé, puis j’ai posé le plateau en metal dessus. manque de pot, mon plateau chauffant est légèrement concave et c’est le verre qui assurait le fait d’avoir une surface plane. Solution : aller a casto, découper du verre le plus fin possible (2mm je crois) afin qu’il y ai le moins d’espace possible entre les aimants et le métal et faire un sandwich “aimant – verre – métal”.
Ça marche bien au final a condition d’augmenter un peu la température du plateau.

3. diamètre de la buse d’impression : la plus grosse upgrade !

Avec tout ça j’imprime désormais vraiment proprement et de manière répétée. Par contre, j’ai toujours mes centaines d’heures d’impressions devant moi. Heureusement, durant mes pauses au boulot, je suis tombé sur cette vidéo :

et pour 8€ sur amazon, j’ai reçu un set d’une dizaine de buse de tailles différentes. Celle qui m’intéresse est celle de diamètre de 0.6mm (contre mes 0.4mm actuels). Ayant reçu mon imprimante en kit, je n’ai pas trop peur de la démonter et de changer des trucs dessus. J’ai donc changé la buse et c’est vraiment le jour et la nuit : Les impressions de 17heures se font mainteant en 8 à 9h, les impressions sont aussi plus solides, du coup je n’ai pas encore essayé mais je tenterai d’imprimer quelques pièces avec moins de remplissage afin de réduire encore le temps d’impression.

Il faut savoir qu’utiliser une buse plus large ne constitue pas forcément une perte de détail. Oui, le “fil” est plus gros et on perd un peu, mais sur le plan horizontal, c’est le déplacement de l’extrudeur qui joue surtout. Et lui il reste tout autant précis.
Sur le plan vertical, cela se paramètre également : il faut jouer avec le paramètre “hauteur de couche” (layer height). C’est ça qui déterminera si les couches sont visibles ou pas et ce paramètre est indépendant de la taille de la buse. Une buse plus grosse veut juste dire que l’on pourrait avoir une hauteur de couche plus élevée si jamais on décide de l’augmenter.
On conseille de ne jamais avoir une hauteur de couche supérieure à 80% de la taille de la buse (0.48mm pour une buse de 0.6mm). J’ai paramétré ma hauteur de couche à 0.40mm, soit le double que ce que j’avais avant. C’est un peu gros, certains trous où les vis rentraient toutes seules, il faut maintenant les visser dedans (ou passer un coup de perceuse). Mais ça me coupe un temps d’impression en plus de 2, et chose que j’ai lu après avoir constaté moi-même : les pièces sont plus solides, elles ne bougent quasiment plus lorsque l’on exerce des pressions dessus.

Bref, maintenant ça marche bien. Tout ceci m’a permis de mettre a niveau mon imprimante. Il me reste pleins de trucs à imprimer mais ça devrait aller plus vite maintenant

Je fabrique des claviers

Je commence a avoir une bonne collection ici :

 

 

 

 

 

 

C’est un intérêt qui m’a pris lorsque je suis tombé sur un clavier mécanique de (hum) “gamer” chez quelqu’un. J’ai testé 2-3 minutes pour comparer avec mon Microsoft Sculpt Keyboard qui me suit depuis plusieurs années. J’ai bien aimé le touché, c’est juste dommage qu’il n’y avait pas la forme ergo de mon Sculpt.

Depuis de je teste un peu tout et surtout j’essaye d’en fabriquer en bois : vu que la forme de base est super simple, c’est pratique pour essayer des choses un peu marrantes comme le collage de deux bois d’essence différentes

Mon clavier actuel du boulot désormais

ou bien diverses finitions cire ou polyuréthane. On peut jouer ensuite sur les switches afin d’avoir un toucher et un son lors de la frappe qui varient en fonction de ce que l’on choisit.

Sur mon dernier en date, je vais mettre une plaque de plexiglass en sandwich entre deux plaques de contreplaqué. Il y a une image que j’ai mis en favoris sur imgur qui montre qu’avec une finition correcte, le contreplaqué est pas si mal en fait : https://imgur.com/gallery/XvNlDLU

voici ce que ca donne pour l’instant :

Le contreplaqué haut, a gauche. Et le contreplaqué bas a droite sur lequel j’ai déjà collé a l’époxy le plexiglass

et un test rapide :

lorsque l’on fait passer de la lumiere sur le plexiglass

en fait le circuit imprimé que je vais utiliser contient des led RGB comme sur les (hum) “clavier de gamer”. Du coup je me suis dit que ce serait intéressant… Je compte aussi faire un rainurage et remplir la rainure avec de la résine epoxy. Puis ensuite, comme sur le type de imgur, j’engloberait tout dans de l’époxy.

Cette fois afin d’avoir un trait droit (je sais pas si ca se voit mais dans mes précédents claviers les contours sont pas super droits), j’ai eu une formation à la CNC de mon fablab du coup maintenant, je vais tout CNC-iser plutot que d’y aller a la défonceuse a main. J’aime bien la forme avec le repose-poignet intégré et je pense que je partirai a nouveau là dessus.

concernant les touches, j’ai reçu un joli kit

SA Lime de PMK

 

bref voila quoi

Google assistant, webhook et MQTT

ou comment faire la même chose mais autrement

Alors depuis quelques temps j’ai un Google home chez moi et je suis donc en recherche de nouveaux moyens de faire des choses sans bouger du canap’. Récemment j’ai compris comment envoyer du mqtt a peu près a n’importe quel device (raspberry, arduino, etc.) pour faire des choses derrière.

 

Dans cet exemple c’est l’execution d’un script python sur un raspberry pi.

1ere étape, créer un compte ifttt

ça c’est pas très compliqué, il faut lier son compte google pour activer assistant puis créer une applet quelconque

ensuite, lors de la création de l’action a lier a ce déclencheur il faut choisir l’option webhook :

dans mon cas j’ai choisi de mettre le webhook sur mon dédié : ca m’evite d’avoir un truc tout le temps allumé chez moi et de m’embeter avec un dyndns.

2nde étape, MQTT

sur le dédié j’ai installé un serveur MQTT (mosquitto sur ubuntu) auquel tous les devices iront s’inscrire. le broker MQTT ne sert qu’a transférer les messages recus provenant de plusieurs endroits (ici uniquement ifttt mais il pourrait y en avoir d’autres) vers tous les devices abonnés.

sur le dédié :

sudo apt-get install mosquitto

puis lire le readme, faire la conf et lancer le service

sur le raspberry, il faut installer un client MQTT, l’installer en tant que service afin qu’il se lance au démarrage et y coller des scripts ou autres a actionner lors de la réception de certains messages.

le client

voici un script python qui lance un client et permet de d’y coller des scripts :

import paho.mqtt.client as mqtt
from subprocess import call

# Don't forget to change the variables for the MQTT broker!
mqtt_topic = "lights/lum1"
mqtt_broker_ip = "XXXXXXXX"

client = mqtt.Client()

# These functions handle what happens when the MQTT client connects
# to the broker, and what happens then the topic receives a message
def on_connect(client, userdata, rc, el):
    # rc is the error code returned when connecting to the broker
    print "Connected!", str(rc)

    # Once the client has connected to the broker, subscribe to the topic
    client.subscribe(mqtt_topic)

def on_message(client, userdata, msg):
    # This function is called everytime the topic is published to.
    # If you want to check each message, and do something depending on
    # the content, the code to do this should be run in this function

    print "Topic: ", msg.topic + "\nMessage: " + str(msg.payload)
    if ( str(msg.payload) == "on" ):
        call("/home/pi/startupgpio")
    if msg.payload == 'off':
        call("/home/pi/offgpio")
    # The message itself is stored in the msg variable
    # and details about who sent it are stored in userdata

# Here, we are telling the client which functions are to be run
# on connecting, and on receiving a message
client.on_connect = on_connect
client.on_message = on_message

# Once everything has been set up, we can (finally) connect to the broker
# 1883 is the listener port that the MQTT broker is using
client.connect(mqtt_broker_ip, 1883)

# Once we have told the client to connect, let the client object run itself
client.loop_forever()
client.disconnect()

on peut voir que ca utilise la lib python paho-mqtt :

sudo pip install paho-mqtt

il y a deux lignes de conf au début et un gros “if” qui lance des scripts shell (startupgpio et offgpio) en fonction du message reçus sur le topic “lights/lum1”.

a partir de là on peut faire a peu près ce qu’on veut….

en fonctionnement c’est aussi rapide que les commandes  normales de Google Home, peut etre une demi-seconde plus lent. L’intérêt de passer par un dédié est que je peux lancer les commandes depuis l’assistant de mon téléphone sur la 4G. Et je n’ai qu’a configurer le hostname de mon dédié dans tous mes devices, ce qui veut dire qu’ils pourraient fonctionner même s’ils sont sur des réseaux différents tant qu’ils sont connectés au net.

Avec ifttt, il y a aussi possibilité de passer des valeurs numériques et j’aimerais bien actionner un petit servo par la voix (je ne sais pas encore pour quoi faire). Après, tout ça c’est un peu prendre un marteau pour écraser une mouche ; mais ça me permet de toucher un peu à MQTT et j’aime bien l’idée de pouvoir envoyer des commandes a des trucs chez moi pendant que je ne suis pas là… J’ai de l’esp2866 qui devrait arriver bientot, je trouverais des trucs a faire

plus de pages AMP !

Juste pour signaler que je viens de supprimer les pages AMP de ce site ( et oui, durant quelques temps si on ajoutait “/amp” a la fin de n’importe quelle URL, on avait une version “optimisée” mobile). J’avais pourtant bien fait le forcing; pas seulement ici mais aussi sur le site (public.fr) dont je m’occupais à l’époque du lancement du projet AMP; il y avait effectivement un coup a jouer en terme d’audience alors que les 3/4 des concurrents n’étaient pas à jour. Aujourd’hui, ça donne plus l’impression de ré-inventer le WAP.

J’aime bien quand un site charge vite, mais autant passer du temps pour optimiser le “vrai” site pour que tout le monde en profite, plutôt que juste la partie mobile, avec en plus des fonctionnalités manquantes et un analytics cassé.