Interfaces de programmation pour ESP8266

La première question qu’on se pose quand on reçoit un ESP8266, c’est…

« Ah merde, mais comment je vais programmer ce machin? »

Il y a besoin de 4 fils : +, -, Rx et Tx, donc la première chose, c’est de se procurer un convertisseur USB-série. Le point crucial, c’est la tension de sortie de ce convertisseur. Elle doit être de 3.3v à la fois sur le Vcc ET sur le Tx. Le risque avec du 5V, c’est tout bêtement de griller l’ESP.

L'interface USB-série
L’interface USB-série. On peut voir en bas le sélecteur 5V-3.3V, et en haut le bouton reset.

L’ESP8266 01 a des broches au pas de 2.54mm, mais n’est pas utilisable dans une breadboard à cause de la position des broches. Donc soit on y va avec des fils et des connecteurs Dupont, soit un se fait un petit circuit imprimé pour connecter tout ça à l’adaptateur USB-série. Au début, j’utilisais la première méthode, mais j’ai finalement opté pour un petit circuit imprimé…

Vert jaune rouge... Rastaman!
Vert jaune rouge… Rastaman!

A gauche, il y a un emplacement pour un cavalier. Il sert à faire démarrer l’ESP8266 en mode programmation.

Oui, je n'avais que des connecteurs femelles à 8 contacts...
Oui, je n’avais que des connecteurs femelles à 8 contacts… C’est joli le scotch…
Et l'ensemble connecté sur le PC, prêt à être programmé!
Et l’ensemble connecté sur le PC, prêt à être programmé!

Le truc avec l’ESP8266, c’est qu’il se décline en je ne sais combien de versions différentes. J’ai aussi un 12e sous la main, et pour lui, l’emplacement des broches est un peu plus particulier, dans le sens où elles sont espacées de 2mm, et non de 2.54mm. Du coup j’ai dû commander des headers au pas de 2mm afin de faire un programmateur et adaptateur.

Il est juste glissé entre les headers pour faire le contact. Pas de soudures, c'est cool!
Il est juste glissé entre les headers pour faire le contact. Pas de soudures, c’est cool!

Après coup, je me dis que j’aurais pu placer les headers pour faire en sorte que l’ESP8266 soit carrément enfiché sur les headers. Mais là, ça va pile poil.

Il faut un cavalier en permanence entre la GPIO15 et la masse pour qu’il démarre (ça il faut le savoir…), et un autre en bas pour mettre la GPIO0 à la masse (ça c’est pour le mode programmation).

Côté connection au PC, c’est le même principe.

Un peu plus gros mais ça va bien :)
Un peu plus gros mais ça va bien 🙂

 

Mini tuto sur MakerCam

A la demande d’un lecteur (Nico, si tu nous entends…), je me suis penché sur makercam, un program de CAM en ligne (et en Flash) qui permet de générer des fichiers gcode à partir de dessins 2D réalisés directement sur le site, ou importés depuis un fichier SVG.

Note: j’ai fait ce test sous windows pour des raisons… de flash…

makercam vide
MakerCam à l’état naturel

Ok, donc nous allons, pour cette démo, réaliser la découpe de la lettre A.

Par pur souci de fainéantise, je vais dessiner un A de gros cochon à main levée directement dans makercam. Ne pas oublier de passer en centimètres en haut à droite si on veut travailler en centimètres!

makercam lettre A
Ah bah c’est du joli!

Avec l’outil flèche (en haut à gauche, le 2ème bouton), nous allons sélectionner notre A au complet. Il apparait en rouge.

Pour découper cette lettre, des opérations de contour (profile en anglais) suffisent. Disons que nous voulons faire une découpe sur 10mm de profondeur.

Allons ensemble, si vous le voulez bien, dans le menu CAM>Profile. Une boite de dialogue s’ouvre et nous pouvons entrer les paramètres de l’opération.

Disons que j’ai une fraise de 1/8 » (3.175mm)

Je rentre mes paramètres:

makercam profile
Création de l’opération de découpe

En cliquant sur OK, notre A se remplit de bleu. Il est temps de générer le parcours d’outil, en allant dans CAM>Calculate all!

makercam toolpath
Le parcours d’outil s’affiche en vert

Ok, donc là on est pas mal. Mais si on découpe ça tel quel à la machine, à la dernière passe, notre pièce risque de bouger et de prendre un coup de fraise dans les côtelettes. Pas top.

Nous devons donc éviter que la pièce soit totalement détachée, et pour ça nous allons mettre en place des tenons (tabs en anglais).

Avec notre forme toujours sélectionnée, allons dans CAM>add tabs to selected.

Un menu s’affiche, et on peut y définir l’espacement entre les tenons, ainsi que leur longueur et leur épaisseur.

Paramétrage des tenons
Paramétrage des tenons
makercam-tabs
Les tenons ont été générés, mais l’emplacement c’est pas toujours idéal

Il ne faut pas hésiter à les faire glisser à la souris pour qu’ils soient plus faciles à découper manuellement après l’usinage.

Une fois que tout est prêt, il n’y a plus qu’à recalculer les parcours d’outil (CAM>Calculate all), et on peut maintenant exporter le G-Code 🙂

CAM>Export GCode. On sélectionne tout, et on clique sur Export selected toolpaths. Il n’y a plus qu’à télécharger le fichier, qu’on peut éventuellement visualiser dans Chilipeppr:chilipeppr

Détail des tenons
Détail des tenons

Bon, j’avoue que je ne suis pas ultra fan de MakerCam, il y a quelques bugs et des comportements bizarres à l’utilisation; mais ça peut quand même bien dépanner si on n’a rien sous la main pour générer du G-Code.

En tout cas, c’est un énorme boulot qu’il faut saluer, et le programme est open source!

Fonctionnalités très appréciables dans l’IDE Arduino

Adieu l’équipe!

J’avais envie d’écrire un petit article pour saluer les évolutions de l’IDE Arduino.

Par rapports aux débuts, il y a eu à mes yeux deux avancées majeures: le gestionnaire de cartes et le gestionnaire de librairies.

Le gestionnaire de cartes

Aujourd’hui, l’IDE Arduino est utilisable avec de nombreux microcontrôleurs, par forcément Atmel.

Parmi les cartes notables que j’ai pu utiliser, il y a la Teensy 3.x et l’ESP8266.

Evidemment, le protocole d’upload des programmes vers l’un ou l’autre des microcontrôleurs est différent, et l’IDE doit savoir comment communiquer.

Pour cela, on a le menu Outils>Types de cartes, et on peut sélectionner la bonne. Mais quid des cartes non listées dans ce menu?

Et bien c’est pas compliqué.

Avant tout, il faut éventuellement ajouter la source du package pour obtenir le driver de cette carte, dans les préférences de l’IDE:

arduino-esp-preferences

Puis on va dans Outils>Types de cartes>Gestionnaire de cartes et nous avons à disposition une liste de cartes pour lesquelles on peut installer le driver, et paf! il n’y a plus qu’à la sélectionner dans le menu pour la programmer. Sympa! (bon, pas de pot, la Teensy n’apparait pas dans cette liste, il faut installer Teensyduino, un complément disponible sur le site du constructeur).
Donc plutôt pratique le gestionnaire de cartes.

arduino-esp-boards

Le gestionnaire de librairies

Alors là c’est encore mieux!
Tu as dégoté un nouveau composant et tu n’as pas le cœur à te farcir la datasheet pour comprendre comment discuter avec lui? Comme je te comprends…
Prenons à tout hasard le DHT22, qui est un capteur de température/humidité assez répandu.
Hé bien pas de prise de tête: on va dans Croquis>Inclure une bibliothèque>Gérer les bibliothèques. Une liste se charge, on tape DHT22 dans le filtre en haut, et paf! on tombe sur DHT sensor library by Adafruit.

arduino-dht22-librairy

Il n’y a plus qu’à cliquer sur le bouton installer, et on se trouve non seulement avec la librairie disponible, mais il y a aussi des exemples disponibles dans Fichier>Exemples! C’est-y pas beau, ça? Hein?

arduino-dht22-exemples

J’ai particulièrement apprécié cette fonctionnalité avec un capteur que j’avais acheté il y a quelque temps, et qui est une vraie merde à programmer: le MLX90614. C’est un thermomètre IR directionnel. Ça permet d’obtenir la température d’un objet sans contact. Mais alors pour communiquer avec, amuse toi si tu n’as que la datasheet sous la main… C’est un protocole I2C modifié, le truc bien relou.
Hé bien l’autre jour j’ai tapé MLX dans le champ de recherche du gestionnaire de librairies, et j’ai eu le plaisir de pouvoir utiliser le capteur hyper simplement. Merci à Adafruit d’avoir écrit cette classe…
Et d’ailleurs en regardant le code, c’est pas si long… Respect 🙂

Communiquer avec Adafruit IO en PHP

Salut tout le monde!

Voilà un moment que je n’ai rien posté, mais j’ai de bonnes raisons… Bricolage intensif sur l’ESP8266 (merci Sandrine de Bloguelinux) sur lequel je ferai très bientôt un gros billet 🙂

Bref, pour aujourd’hui, je vais vous parler de la plateforme Adafruit IO, qui est un superbe environnement pour stocker les données d’objets connectés.

La structure des données est simple et efficace: on crée des feeds, qui sont de simples listes de valeurs.

Chaque élément d’un feed a une valeur (une température par exemple), et éventuellement des coordonnées GPS.

Pour ma part, j’ai utilisé un capteur DHT22, et l’ESP8266 balance les données de température et d’humidité relative dans deux feeds.

Et avec les feeds, on peut (entre autres) afficher des courbes :

adafruit io graphique
Ça caille encore un peu dans le salon…

https://io.adafruit.com/toxnico

L’interaction avec AdaFruit IO pour envoyer ou lire les données se fait par une API REST; du coup je me suis dit qu’il serait intéressant d’avoir la possibilité, en PHP, de charger la dernière valeur de chaque feed pour l’afficher sur un site web par exemple.

Alors j’ai écrit cette petite librairie sous GPL v2 pour permettre à tout le monde de récupérer facilement ses données : https://github.com/toxnico/php-adafruitio

Vos retours et impressions sont les bienvenus!

A très bientôt pour une grosse aventure ESP8266 🙂

Plugin WordPress pour bloquer les tentatives d’intrusion (et les spams de commentaires?)

Si comme moi, vous avez un site qui tourne sous WordPress, vous avez probablement des dizaines de tentatives d’intrusion par jour.

Pendant un temps, j’ai utilisé le plugin All in one WordPress Security. Il bloque les adresses IP après 3 tentatives de login infructueuses, et vous envoie une notification. C’est très bien mais je l’ai trouvé un peu trop lourd pour ce que je cherchais à faire, à savoir sécuriser ma page de login.

Ne trouvant pas de solution simple pour masquer cette putain de page, j’ai décidé d’écrire mon propre plugin qui fait le boulot. C’était l’occasion d’apprendre à développer des plugins WordPress, hé bien ce n’est pas si compliqué que ça en a l’air! Accessoirement, il bloque aussi les appels XML-RPC. Et comme side effect non prévu et très intéressant, les spams de commentaires… Je ne sais pas pourquoi, mais c’est ce que je constate chez moi en tout cas 🙂

Pour la petite histoire, j’ai tenté de le vendre via la plateforme codecanyon (je ne mets pas le lien, c’est volontaire car à mon humble avis ce sont des raclures). Pour ça, j’ai packagé mon petit bouzin, j’ai documenté le code à mort et je leur ai envoyé pour qu’ils l’analysent et le publient.

Deux semaines plus tard, j’ai reçu un email me disant que mon plugin a été refusé. Pourquoi? Parce que. Merci les gars pour la précision des explications, et allez vous faire empapaouter.

Alors tant pis pour la vente, je l’ai mis sous GPL2 et je l’ai publié sur Github.

Mais il marche comment ton plugin?

Le principe est très simple. Normalement, quand on veut s’authentifier sur un site WordPress, on tombe sur la page wp-login.php et on a accès au formulaire login/mot de passe.

Hé bien une fois que ce plugin est activé, il faut juste ajouter un paramètre de votre choix dans l’URL pour que la page de login soit visible. Par exemple, wp-login.php&dirty=marmotte

C’est tout. Vous pouvez essayer chez moi si vous voulez.

Vous pouvez aussi essayer d’envoyer des requêtes POST directement sur wp-login.php, même si le login/mot de passe est correct, si la clé n’est pas là ça ne passera pas;)

Et donc, je disais plus haut que ce plugin vous permet aussi de désactiver le XML-RPC, qui est un web service permettant d’effectuer des opérations sur WordPress depuis des applications tierces. C’est un vecteur important d’attaques brute force, et il est activé par défaut alors que la plupart du temps il n’est pas utile.

Et les spams de commentaires?

Alors ça, c’est le point imprévu de ce plugin.

Je soupçonne que les spambots se basent sur la présence d’une page wp-login.php pour savoir si on est sur wordpress, et à partir de là, ils savent comment poster un commentaire de façon automatique.

Ici, comme il n’y a plus de wp-admin.php standard, ils ne sauraient pas comment envoyer un commentaire. Enfin c’est mon analyse, je ne sais pas si elle est correcte… Toujours est-il que sur mon blog, j’ai zéro spam détecté par akismet, et rien en file d’attente. C’est plutôt cool du coup. N’hésitez pas à me faire un petit retour si ce n’est pas le cas chez vous, et dans ce cas je corrigerai cet article.

Voici l’archive du plugin à installer dans WordPress :
wp-login-door.zip

wp-login-door sur GitHub

Et si ce plugin vous plait, pourquoi pas faire un petit don?

A bientôt!





Un bougeoir en contreplaqué

Yo!

On peut faire de jolies choses en usinant du contreplaqué, car selon la profondeur, les couleurs s’alternent.

J’ai fait un petit (enfin bon, 15 cm) bougeoir pour parer aux coupures électriques, et aussi parce que c’est joli…

Je suis parti sur une superposition de 3 morceaux de contreplaqué de 8mm, soit une hauteur de brut de 24mm.

Le matériau brut : trois morceaux de contreplaqué collés entre eux
Le matériau brut : trois morceaux de contreplaqué collés entre eux
Ebauche à l'aide d'une fraise droite de 6.35mm (1/4'')
Ebauche à l’aide d’une fraise droite de 6.35mm (1/4 »)
L'ébauche est terminée...
L’ébauche est terminée…
...passons à la finition! Fraise à bout rond de 3.175mm (1/8'')
…passons à la finition! Fraise à bout rond de 3.175mm (1/8 »)

Après une bonne demi-heure de travail et un peu de ponçage au papier de verre fin, voici le résultat!

bougeoir contreplaqué

bougeoir contreplaqué

Après une couche d'huile d'abrasin, les teintes sont réchauffées
Après une couche d’huile d’abrasin, les teintes sont réchauffées

A bientôt!

Open tartine

Il y avait un moment que l’idée de graver une tranche de pain de mie ou brioche me trottait dans la tête…

J’ai gravé le logo Open Hardware sur du pain de mie. C’est une open tartine!

Alors par contre il faut aller lentement, à cause des aspérités sur la surface. A 500mm/min, ça ne marque pas du tout. J’ai gravé celle-ci à 50mm/min. Faut pas être pressé…

Open hardware pain de mie

La coupe est assez profonde
La coupe est assez profonde
Avec du fromage qui pue c'est bien meilleur :)
Avec du fromage qui pue c’est bien meilleur 🙂

Sous-verres : le support

Bon ben, les sous-verres, ça m’embêtait un peu de les livrer comme ça, tout nus; du coup j’ai usiné un petit support.

J’ai des planches de pin de 18mm, ce qui est un peu short en épaisseur… Alors paf! colle à bois, serre-joints, et j’ai doublé l’épaisseur 🙂

Dans ce bloc de 36mm, j’ai pu tailler ceci:

Support sous verres
Le support taillé dans deux planches collées
Support sous verres
Yeah, Jacob Delafon! Il y a 2mm de jeu entre les disques et le support.

Bisous et bon long week end!

Fabrication de sous-verres personnalisés, gravés au laser

Comme à chaque week-end de Pâques depuis une dizaine d’années, je vais retrouver mes amis et ma famille en Limousin, et c’est toujours la bonne occasion pour se mettre une belle race 🙂

Cette année, j’ai décidé de fabriquer des sous-verres pour l’ami Geo (http://vivrealarochette.fr), et y inscrire les principales spécialités de chez lui lorsque vient Pâques.

Les sous-verres mesurent 10cm de diamètre. Je les ai découpés à la fraise de 2.5mm, et gravés avec le laser.

1. Conception

Pour la conception, j’ai utilisé Inkscape (https://inkscape.org)
J’ai dessiné mon cercle de 10cm, mis en place mes textes. Ah tiens, au passage, voici comment courber un texte dans Inkscape:
– Il faut d’abord le transformer en chemin (menu Chemin > Objet en chemin)
– Aller dans Chemin > Effets de chemin
– Cliquer sur le + pour ajouter un nouvel effet de chemin, et choisir « Courber ».
– Jouer avec les différentes méthodes de courbure (manuelle, liée à un chemin…)

Une fois que mon dessin est prêt, je l’exporte au format PNG, en noir et blanc.

inkscape

2. Découpe

Mon laser n’étant pas assez puissant pour couper du MDF de 3mm, j’ai fait la découpe avec Cambam et une fraise de 2.5mm.

3. Préparation du G-Code pour graver l’image PNG

Pour générer du G-Code à partir d’une image non vectorielle, j’ai écrit un programme en C# qui lit l’image, et écrit les commandes G-Code dans un fichier texte. Il reste des choses à perfectionner, mais il fonctionne plutôt bien 🙂

PicGCode

4. Mise à zéro de la machine pour le laser

Une fois mes disques découpés, mon G-Code préparé, il n’y a plus qu’à les graver!
Par contre, le module laser est décalé par rapport à la fraise, donc il fallait remettre les choses à zéro avant d’attaquer.
Pour ça, j’ai fait un petit G-Code à la main, qui me dessine au laser un cercle de 10cm de diamètre. Après, je n’ai plus qu’à placer mon sous-verres dans le cercle et je suis sûr de sa position 🙂

Shapeoko, préparation gravure laser
Positionnement du disque après la mise à zéro de la machine

5. A l’attaque!

Hop, la phase la plus excitante: la gravure!

Le faisceau laser m'impressionnera toujours...
Le faisceau laser m’impressionnera toujours…
Universal G-Code Sender
Universal G-Code Sender
Petite photo prise entre deux allumages du laser
Petite photo prise entre deux allumages du laser
Et voilà la série de sous-verres :)
Et voilà la série de sous-verres 🙂

6. Vernissage

Alors certains diront qu’il ne faut pas vernir un sous-verre, parce que son but premier est d’absorber les gouttes de condensation et de pinard qui pourraient couler à l’extérieur du verre. Mais super, quoi, une fois taché, ton sous-verre est… taché.
Alors j’ai pris la liberté de passer deux couches de vernis, et j’avoue que le rendu n’est pas trop dégueu. Par contre, à la lumière, en le regardant de profil, on voit quelques coups de pinceaux. Je devrai perfectionner ma technique de vernissage…

Première couche
Première couche
Seconde couche
Seconde couche