Logger de température et d’humidité

Dans le précédent article, j’illustrais la technique de gravure à l’anglaise pour réaliser des circuits imprimés avec un cas pratique : un logger (enregistreur) de température et d’humidité. Ce nouveau billet est l’occasion de revenir plus en détails sur ce petit projet (et de le finir 😉 ).

L’objectif est d’enregistrer à intervalles réguliers la température et l’humidité d’un environnement donné pour pouvoir les étudier, les analyser. Ça peut-être intéressant pour optimiser son chauffage, vérifier le bon fonctionnement d’un réfrigérateur, analyser un environnement naturel etc. (suite…)

Création de PCB avec une CNC (gravure à l’anglaise)

Nous y voilà, ma petite CNC étant maintenant 100% opérationnelle, je peux enfin m’attaquer à la gravure de PCB (circuits imprimés) « à l’anglaise ».

Avant d’entrer dans les détails, voici les grandes étapes du processus :

  • Conception du circuit électronique avec un outil de CAO
  • Modélisation de l’implantation des composants, toujours avec un outil de CAO
  • Export des pistes du circuit au format GERBER et du plan de perçage au format EXCELLON
  • Chargement des fichiers exportés dans FlatCAM, génération des géométries, génération des fichiers pour la CNC
  • Gravure du PCB avec un logiciel de pilotage de CNC (Candle)

(suite…)

CNC : dernières améliorations

Dans le précédent article j’ai décrit comment j’avais remplacé tout l’électronique de ma petite CNC pour régler des problèmes de fiabilité/stabilité.

Cette fois-ci, on va s’attacher à régler 4 autres problèmes :

  • La machine vibre quand même beaucoup (elle est posée directement sur mon plan de travail en chêne). Ca peut avoir un impact sur la précision, mais c’est surtout le bruit qui me gène.
  • Le plan de travail de la machine en aluminium n’est pas tout à fait plan, j’ai constaté 1 mm d’écart entre le bord gauche et le bord droit. Lors de gravure déco sur bois, ce n’est pas très gênant, mais pour graver des PCB, où la couche de cuivre à retirer est très fine, ce n’est pas acceptable.
  • La machine ne peux pas percer ou fraiser complètement la matière sous risque d’endommager la fraise et le plan de travail en aluminium.
  • Le système de fixation vendu avec la machine est simplement une horreur à utiliser.

(suite…)

CNC, analyse des problèmes…

Suite à l’assemblage du kit, bien que j’ai pu faire quelques essais, je me suis heurté à un problème de stabilité : au bout d’un certain temps (aléatoire), la machine se met à bloquer, sauter des pas, ce qui me force à abandonner l’usinage.

Le vendeur, bien que très poli, n’a jamais pu m’aider davantage que « vérifiez que tout est bien vissé »… J’ai fait de mon mieux pour diagnostiquer le problème moi-même, mais il me manquait pas mal d’infos…

Note du 09/09/2017 : je ne recommande absolument pas ce vendeur Ebay (jzelectric), ils sont en apparence très polis, mais leur SAV est complètement incompétent et leur spécialité est de gagner du temps pour vous empêcher de mettre un avis négatif dans les 2 mois qui suivent la vente. C’est dit.

Bref, aux grands mots, les grands moyens, j’ai décidé de changer un certain nombre de choses : (suite…)

Ma petite CNC est arrivée !

J’y pensais depuis quelques temps, j’ai franchis le pas et j’ai commandé une petite CNC !

CNC signifie Computer Numerical Control, ce qui, en français, donnerait machine-outil à commande numérique, ou plus littéralement « commande numérique par calculateur ».

Alors qu’une imprimante 3D dépose de la matière en partant du bas de l’objet, la fraiseuse CNC va retirer de la matière en partant du haut de l’objet. Mais si souvent on y fixe une fraise pour faire de l’usinage, on peut aussi y attacher un foret pour réaliser des perçages très précis, ou encore un laser pour « dessiner » sur du bois ou du liège, voir découper certains matériaux.

On peut aussi l’utiliser comme graveuse (sur bois, plexi, alu…). Et l’un des usages qui m’intéresse le plus : la gravure de PCB ! Je ne réalise pas souvent des PCB, mais à chaque fois, avec la gravure chimique, c’est tout un chantier dans la salle de bains, les produits perdent leur efficacité avec le temps, on ne peux pas s’en débarrasser simplement, bref, la gravure m’ira très bien pour mes besoins 🙂

(suite…)

On y coupera pas : le hand spinner imprimé en 3D

Allé, on n’échappera pas à la tendance du moment : le hand spinner (ou fidget spinner)

Bon, et c’est aussi l’occasion de redémarrer l’imprimante 3D qui commençait sérieusement à prendre la poussière après plus d’un an de repos. J’espère retrouver un peu de temps pour avancer sur des projets plus sympa rapidement (notamment le projet R.I.P.E.R.).

En attendant, voici 2 hand spinners, sortis tout droit du Thingiverse ! Le premier à 3 branches (le modèle par ici) :

Et maintenant voici le Cat Spinner 😉 (modèle par ici) :

On finit avec une petite vidéo de tout ça en action 🙂

 

En bonus, une petite astuce : les roulements à billes sont gavés d’huile ou autres graisses qui génèrent beaucoup de frottements et qui empêchent de longues rotations. Si les roulements sont vieux, ils peuvent être encrassés. Pour obtenir des roulements efficaces, il suffit de les laisser tremper quelques minutes dans un dissolvant (alcool, acétone…) qui virera le gras et les saletés, puis les rincer et bien les sécher. Ils devraient maintenant beaucoup mieux tourner ! Attention tout de même, ils s’useront plus rapidement s’ils tournent à sec, donc ne pas hésiter à ajouter une goutte d’huile (ce que je n’ai pas fait…).

Un bureau virtuel (ou page d’accueil auto-hébergée)

En général, quand on est sur un PC, on a toujours à peu près les mêmes onglets ouverts. Pour gagner du temps, on peut les ouvrir automatiquement quand le navigateur se lance. Après être tombé sur quelques sites ou des gars expliquaient comment ils avaient créé leur page d’accueil personnalisée, ça m’a donné envie d’en faire autant (voici un exemple).

Les intérêts sont multiples :

  • Productivité : une seule page d’accueil qui donne accès à tout ce dont on a quotidiennement besoin
  • Accessibilité : il suffit d’un navigateur et d’une connexion internet
  • Indépendance : on gère soit même ce « portail », on est pas dépendant d’une plateforme spécifique (comme Netvibes) qui peut fermer ou modifier ses conditions d’utilisation
  • Évolutivité : on y ajoute tout de dont on peut avoir besoin et les possibilités sont vastes (grand choix d’applications Open Source ou gratuites, possibilité d’ajouter ses propres développements…)

Bien sûr, ça demande un peu plus de temps et de travail, mais au quotidien, c’est du bonheur. Une petite remarque aussi concernant la sécurité : comme on peut être amené à installer un grand nombre d’applications de sources diverses, je préfère ne rien stocker de critique sur ce portail et l’accès est très restreint.

Avant de rentrer dans le détail, voici une capture d’écran de l’ensemble de ma page d’accueil, qui finalement est devenue un bureau virtuel (cliquer pour la voir en grand) :

On retrouve les services suivants :

  • Recherche multi-moteurs (dev perso)
  • Un accès rapide à mes différentes messageries/Facebook
  • Gestionnaire de To Do List (myTinyTodo)
  • Météo (affichée via un widget de meteocity)
  • Widget Deezer pour écouter de la musique
  • Plusieurs panneaux de liens, pour un accès rapide à mes sites/services favoris
  • Les flux RSS du Monde et 01net, pour un aperçu rapide de l’actalité
  • Une calculatrice,
  • Le site mobile Sytadin dans une Iframe (la version mobile affiche la carte en plein écran)
  • Un outil de prise de notes avec un éditeur de texte avancé (les notes sont sauvegardées sur le site) (dev perso).
  • Le programme TV de la soirée (widget Télé-Loisirs affiché dans une iframe)
  • Les flux RSS Allociné pour les films de la semaine et les films à venir
  • Un accès vers mon blog (WordPress)
  • Un agrégateur de flux RSS (j’en ai testé pas mal, mais pas encore convaincu), un jour…
  • Un forum (phpBB), dont je suis le seul utilisateur et que j’utilise pour prendre des notes, m’organiser, classer des liens, bref un fourre-tout
  • Un Wiki (Dokuwiki) pour organiser des informations utiles
  • Un gestionnaire de favoris (Online-bookmarks), il est un peu vieux, pas très sexy mais correspond à mon besoin
  • Différents outils : pastebin-like (Stikked), raccourcisseur d’urls (YOURLS), des outils d’encodage, calcul de hash etc…, des proxys (miniProxy et oranjeproxy), un lien vers Code Beautify
  • Un gestionnaire de fichier Web (eXtplorer), un must pour pouvoir modifier les fichiers du site sans devoir passer par un client FTP !
  • Un client FTP Web (Monsta)
  • Un outil de partage de fichiers comme wetransfer (Jirafeau)
  • Une galerie photo (MiniGal Nano)
  • Une bibliothèque pour accéder à mes PDF, via Encode Explorer

Quelques images en plus :

Tout ça c’est bien, mais je voulais aussi que ça ne soit pas trop moche, sans devoir y passer trop de temps, et c’est là qu’intervient AdminLTE. C’est une interface d’admin de démo basée sur Bootstrap (donc responsive : qui s’adaptera aux écrans de différents préiphériques). Elle contient un maximum de contrôles, et graphiquement, c’est plutôt réussi ! Je l’ai donc utilisée pour construire mon portail, moyennant quelques petites modifications.

Pour terminer, j’ai organisé tout ça dans une petite application PHP, histoire d’avoir un mini Framework MVC (basique), gérer l’authentification, les cookies etc. Il a fallu bidouiller pas mal des applications listées ci-dessus pour contourner leur authentification (et qu’il vérifie la connexion au portail à la place). J’ai parfois du tricher de manière assez moche, mais ça fonctionne 😀

Le tout est hébergé chez OVH, avec un nom de domaine très court. Soit une vingtaine d’euros par an. C’est le prix de l’indépendance 😉

LuxDimmer : gérer simplement la luminosité de l’écran

Depuis plus d’un an, le blog n’était plus mis à jour, alors que j’étais sur un projet passionnant (R.I.P.E.R.). J’ai dû mettre ces activités en suspend pour le boulot : j’avais une certif à préparer et ça m’a demandé beaucoup de temps (CEH).

Fraîchement certifié, me revoilà ! Dès le début de mes révisions, j’ai été confronté à un problème : la lecture de centaines de pages de cours sur l’écran, ça fatigue. Et devoir constamment modifier les réglages de luminosité sur l’écran, c’est toujours contraignant, surtout si on doit le faire plusieurs fois dans la journée. A noter que sur un ordinateur portable, cela ne pose pas de problème car Windows permet de modifier directement la luminosité de l’écran. Sur un écran fixe, c’est une toute autre histoire.

J’ai testé différents logiciels, comme f.lux qui semble une référence dans le genre (il permet d’ajuster la luminosité/colorimétrie de l’écran en fonction de l’heure du jour). Mais finalement, pas moyen de trouver un logiciel simple (et pas gavé de spy/ad-wares), qui permet de modifier la luminosité de l’écran à un instant T avec un simple curseur.

Je m’y suis donc collé. C’est très simple, le logiciel se lance et se place dans la barre des tâches. En cliquant sur son icone, un menu s’affiche permettant de modifier la luminosité des écrans connectés au PC. Voilà ce que ça donne :

Je me suis vite aperçu qu’il n’était pas possible de modifier directement la luminosité de Windows quand l’écran est « externe » (et non intégré à un portable). L’astuce consiste tout simplement à ajouter un calque qui se superpose au bureau et reste tout le temps au premier plan sans empêcher la souris d’accéder aux éléments graphiques sous-jacents. Il suffit ensuite de faire varier l’opacité de ce calque pour diminuer la luminosité 🙂

Voici le bout de code magique qui permet de gérer la « transparence pour les clics de souris » :

public static class WindowsServices
{
    const int WS_EX_TRANSPARENT = 0x00000020;
    const int GWL_EXSTYLE = (-20);

    [DllImport("user32.dll")]
    static extern int GetWindowLong(IntPtr hwnd, int index);

    [DllImport("user32.dll")]
    static extern int SetWindowLong(IntPtr hwnd, int index, int newStyle);

    public static void SetWindowExTransparent(IntPtr hwnd)
    {
        var extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
        SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_TRANSPARENT);
    }
}

J’ai déposé les sources sur Github, si jamais ça intéresse du monde, l’exécutable est directement disponible également ici.

Projet R.I.P.E.R. : étage alimentation

Après cette parenthèse culinaire, revenons à la technique. Dans un précédent article , je présentais l’étage des batteries du robot, passons à l’étage de gestion de l’alimentation.

Ce bloc va être chargé d’apporter l’énergie aux différents éléments du robots :

  • 5V pour l’électronique de bas niveau et pour le cerveau (mini PC)
  • 7.2V pour les moteurs à courant continu
  • 6V pour les servomoteurs

J’utilise 3 modules :

  • Pour l’électronique, l’alimentation DFRobot DFR0205 3.3-25V 25W convertira les 7.2V de la première batterie (ou de l’alimention externe) en 5V
  • Les moteurs seront alimentés par la seconde batterie et pilotés par le contrôleur SaberTooth 2x5A.
  • Pour les servomoteurs, le module d’alimentation Seeed Studio 1.25-35V 3A convertira les 7.2V de la première batterie (ou de l’alimention externe) en 6V

Lorsque que le robot sera alimenté en 12V (alim externe), il faudra le détecter parce que les moteurs ne pourront pas encaisser les 12V en continu (ou prévoir une alim externe de 9V) :

These motors are intended for use at 6 V. In general, these kinds of motors can run at voltages above and below this nominal voltage, so they should comfortably operate in the 3 – 9 V range, though they can begin rotating at voltages as low as 1 V. Higher voltages could start negatively affecting the life of the motor.

Voici le caisson prévu pour ces éléments :

Les 2 trous sur les extérieurs accueilleront les fiches d’entrée pour les alimentations (électronique/moteurs). Le petit trou accueillera un double switch (pour activer/désactiver les 2 sources de courant en même temps).

Comme cet étage sera « suspendu » dans le châssis par des fixations latérales, j’ai collé 2 plaques d’aluminium sur les côtés pour renforcer la structure et éviter un décollage des couches de plastiques.

La grande ouverture rectangulaire est destinée au connecteur 14 pins qui permettra la connexion avec le corps du robot.

De gauche à droite, la description de chaque pin :

  1. +5V électronique bas niveau
  2. 0V
  3. +5V électronique haut niveau (mini PC, hub USB)
  4. 0V
  5. +6V pour les servomoteurs
  6. 0V
  7. Néant
  8. Pont diviseur de tension sur batterie 1 (surveillance de la charge et détection alim externe)
  9. Pont diviseur de tension sur batterie 2 (surveillance de la charge et détection alim externe)
  10. Pilotage des moteurs (connexion série Arduino Mega –> SaberTooth)
  11. Encodeur A moteur 1 vers Arduino Mega
  12. Encodeur B moteur 1 vers Arduino Mega
  13. Encodeur A moteur 2 vers Arduino Mega
  14. Encodeur B moteur 2 vers Arduino Mega

La photo ci-dessous montre l’agencement des composants :

  • Rose : régulateur 5V
  • Vert : contrôleur des moteurs
  • Blanc : régulateur 6V
  • Bleu : carte d’interface entre les différents éléments
  • Rouge : fiches jack d’entrée pour l’alimentation en provenance des batteries/alim externe
  • Noir : double switch

Le schéma ci-dessous permet de mieux visualiser les connexions :

power_07

Vue du dessous : les composants sont fixés sur des entretoises.