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é.

Jardinage reloaded

Une petite mise a jour pour signaler que le système d’arrosage automatique a l’air de fonctionner : je ne suis pas toujours derrière à surveiller les valeurs fournies par le capteur d’humidité du sol mais j’ai bien pu voir le niveau d’eau du réservoir baisser plus rapidement lors de la récente canicule.

Quelques infos : je suis repassé sur un panneau solaire de 25w au lieu de 50w (qui lui est allé sur un autre projet). L’arduino consomme vraiment que dalle avec la lib de mise en veille que j’ai ajouté. Et le panneau sert donc principalement à recharger une batterie 12v qui est utilisée juste ponctuellement lorsque la pompe s’active.

La plante quand à elle a l’air de bien grandir malgré le gel qu’il y a eu au mois de Mars et la grêle qui lui est tombée dessus un peu après.

du coup, je pense que je vais faire la même chose sur mon balcon. J’ai investi dans une jardinière très cool. Je vais également y mettre un système d’arrosage auto (pas solaire cette fois car mon balcon n’est pas très bien exposé. Il sera donc sur secteur). Et couplé en plus avec des leds de croissance (toujours à cause de la mauvaise exposition du balcon). Les leds seront contrôlées par cronjob, soit à partir de mon raspberry pi central (celui qui contrôle déjà la lumière et affiche les horaires de train) qui n’est physiquement pas très loin, soit par un raspi Zero qui traine.

Youtube Live Stream Box avec un raspberry pi

un truc que j’ai envie d’essayer depuis que j’ai mon appareil photo hybride plein format (un sony alpha7), c’est de faire du streaming live juste pour voir ce que ca donne quand je mets mon 80mm f/1.2 dessus. Le but étant d’avoir une méthode de streaming plus ou moins nomade. Je regardais de temps a autre et j’ai vu des solutions a 500€, ou bien d’autres solutions qui pouvaiten consister a voir un intel NUC dans un sac a dos, attaché à un “Live Gamer Portable” de avermedia (le wifi étant fourni par un hotspot de mon téléphone).

OLYMPUS DIGITAL CAMERA

Finalement, et étant donné que j’avais un raspberry pi 3 qui trainait chez moi (oui oui, ce genre de trucs traine chez moi, j’ai un raspi Zero qu’il faut que je trouve quoi en faire d’ailleurs), j’ai finalement commandé une carte HDMI-in qui s’interface avec l’entrée caméra du raspberry pi. le tout est de capturer le flux vidéo et de passer par ffmpeg pour envoyer tout ça a youtube (ou n’importe quel service). J’ai fait quelques test et le live a l’air de bien marcher… Pour l’instant je lance la commande en ssh mais a terme je passerais par un petit bouton qui lancera un script shell:

raspivid -o -w 1280 -h 720 -n -awb off -t 0 -fps 30 -b 6000000 | ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f h264 -i -vcodec copy -acodec aac -ab 128k -g 50 -b:v 6000k -strict experimental -f flv rtmp://a.rtmp.youtube.com/live2/XXXXXXXXXXX

le raspi serait alimenté par une batterie externe pour portable (qui trainait aussi) et donc un cable hdmi entre raspi et camera.

J’aimerais aussi mettre un potentiomètre pour régler le bitrate d’envoi (ainsi que du coup un ecran oled pour l’afficher). mais ce sera dans un second temps…

 

avec ma nouvelle imprimante 3d, j’ai designé une jolie boite pour mettre tout ça dedans. Avec un peu de chance se sera prêt pour la maker faire de vendredi prochain, je pourrais tester en conditions réelles…

truc sympa c’est qu’une fois que ce sera au point, ca marchera avec ma caméra, mais aussi n’importe quel truc qui a une sortie hdmi

Impression 3D

J’ai réçu une imprimante 3D en kit (geetech prusa i3 mk 2). Cela faisait un moment que je voulais voir comment ça marche mais le prix me paraissait toujours un peu élevé…

le kit se monte en 8h. On se demande à quoi ca va ressembler au départ puis après, ca se monte vite finalement. L’intéret de l’avoir en kit est qu’ensuite on est capable de voir ce qui marche, ce qui demande de l’amélioration, et au final on n’a pas peur de démonter pour réparer.

 

forcément les premières impressions sont ratées mais la doc est finalement assez complète et la courbe d’apprentissage n’est pas trop dure, on a rapidement des résultats et des impressions de plus en plus propre. j’ai par exemple imprimé des pièces de remplacements pour l’imprimante qui gèrent mieux un probleme de vibration, ainsi qu’un support pour ventilo pour refroidir le plastique une fois qu’il est déposé sur la table d’impression (afin que le plastique soit plus rigide pour supporter la couche suivante).

Le truc a la mode en ce moment c’est les hand spinner et j’ai forcément fait le mien. Mais j’ai déjà des demandes de quelques personnes…

j’ai aussi fait des trucs utile, comme la monture pour utiliser la télécommande de mon drone sur mon vélo, en combinant deux modèles que j’ai trouvé sur thingiverse via un site de modelisation 3D.

Je vais également pouvoir faire des boites aux bonnes dimension et pas collées a l’arrache pour tous mes petits projet d’électronique (j’ai déjà une liste de truc a faire).

le plus gros probleme vient de la lenteur de l’impression (12h pour la monture de la télécommande par exemple : il a fallu imprimer des supports, ce qui ralenti considérablement l’impression).  Sur un WE, ca laisse pas beaucoup de temps…