Skip to main content

Conception d’un NAS Raspberry Pi pour l’impression 3D

Vue 3D de la cage à disques du NAS

J’ai conçu et construit un serveur NAS (stockage de fichiers) en bois, avec un CPU AMD classique dedans et 4 disques de 4To. Il tourne sous Open Media Vault 5 (OMV), avec tous mes dockers (Tous deux des logiciels libres et gratuits!). En plus, j’ai 4 disques externes de 4To, en backup des disques du NAS. Jusqu’ici, je branche chaque disque, avant de lancer un Rsync pour synchroniser vers le disque de backup.

Mais plutôt que d’avoir des disques “en vrac”, j’ai décidé de concevoir avec FreeCAD (Aussi libre et gratuit!) un ensemble de pièces qu’on peut fabriquer à l’imprimante 3D, et qui une fois assemblées permettront de construire facilement un second NAS. Nous verrons ici la conception des pièces dans FreeCAD, ce qui peut vous donner une idée de ce que permet ce logiciel.

En savoir plus

Le châssis de R.Hasika : une pièce monocoque et précise pour robots

Châssis de R.Hasika quasi vide

Dans cet article, nous décrirons la conception du châssis de R.Hasika, un robot pensé pour être robuste, précis et autonome, présenté dans ce précédent billet, et dont voici la page de projet. Le châssis du robot est un élément important, puisqu’il lui conférera sa solidité, mais aussi une partie de ses capacités finales. En pratique, un bon châssis permettra un robot précis, du fait du positionnement exact des composants. Le châssis de R.Hasika présenté dans ce billet est un châssis monocoque, en une seule pièce, fait pour être construit à l’imprimante 3D. Détaillons maintenant sa conception et les fonctionnalités qu’il apporte.

En savoir plus

R.Hasika – présentation : un robot Raspberry pi précis et extensible

R.Hasika de profil, avec les câbles rangés

R.Hasika – présentation

R.Hasika est le successeur de R.Cerda, un robot basé sur le Raspberry pi. Si à l’époque mon objectif était simplement de construire un robot basé sur le Raspberry pi, avec R.hasika, je suis plus ambitieux. En effet, il s’agit cette fois de concevoir entièrement le robot, que tout soit correctement pensé, plutôt que de faire certains éléments comme le châssis avec ce qui est disponible sous la main. Cette fois ci, chaque élément du robot aura été pensé. Dans ce billet, je vous propose une rapide présentation de ce robot et de ses objectifs.

J’ai créé une page pour le projet R.Hasika, que je vous invite à consulter pour davantage de détails.

Motorisation et déplacement

moteurs de R.Hasika sans les capteurs de rotation

moteurs de R.Hasika sans les capteurs de rotation

R.Hasika est un robot à conduite différentielle, s’appuyant sur deux moteurs à courant continu. Ces moteurs sont dotés de capteurs de rotation qui permettront un déplacement précis. Ils sont contrôlés par une puce DRV8835, qui permet de les commander facilement en PWM avec seulement 4 GPIO.

Ces moteurs entraînent deux chenilles, mais on peut les remplacer par des roues si on le souhaite. Dans tous les cas, ce choix de propulsion en fait un rover agile, capable de tourner sur lui même sur place, et avec une bonne capacité de franchissement d’obstacles.

Grâce aux capteurs de rotation des moteurs, on sera capable d’ajuster la vitesse de ceux ci pour effectuer des trajectoires parfaitement rectilignes, des rotations d’un angle précis, et même de l’odométrie et ainsi cartographier une zone.

Châssis et éléments structurels

le châssis de R.Hasika dans Openscad

le châssis de R.Hasika dans Openscad

Par rapport à R.Cerda, cette fois, le châssis à été pensé à l’avance. En pratique, la conception a été faite entièrement avec le logiciel libre OpenScad, et le code source (libre) permet à tout un chacun de modifier les paramètres du robot pour l’ajuster à ses besoins. J’ai publié un article détaillé sur le châssis de R.Hasika sur ce blog, comportant plus de détails que la présentation que vous lisez en ce moment.

Le châssis a été pensé pour être fabriqué à l’imprimante 3D d’une seule pièce, avec tous les trous et emplacements de fixation requis pour l’assemblage d’un robot complet. Ce châssis comporte également l’emplacement des batteries, des moteurs, des roues libres et de la plaque de support de l’électronique.

Cette dernière justement est la seconde pièce, sur laquelle viennent se fixer les composants électroniques du robot, les capteurs, etc. Cette plaque se visse simplement sur le châssis, renforçant ainsi davantage sa solidité.

La troisième pièce est la carrosserie, qui vient se visser par dessus, et qui permet de protéger l’électronique, et sert de support à divers autres éléments (voir plus bas dans la section du même nom).

 

Alimentation électrique et autonomie

L’alimentation électrique se fait par le biais de batteries lithium (jusqu’à 4), qui fournissent une capacité de 50Wh, permettant ainsi au robot de dépasser les 24 heures d’autonomie hors déplacement. En déplacement on obtiendra facilement de nombreuses heures d’autonomie.

Un autre point  intéressant avec ces batteries est qu’elles permettent d’intégrer au robot un circuit de charge, permettant de le recharger sans retirer les batteries. Mieux, on peut recharger le robot sans l’éteindre. Encore mieux, cela nous permet de programmer le robot pour qu’il aille se charger seul sur une station dédiée.

Capteurs

Capteur de distance ultrasonique Maxbotix

Capteur de distance ultrasonique Maxbotix

Les capteurs de base embarqués sont deux microswitches à levier, qui servent de capteurs de contact, un capteur de distance à ultrasons maxbotix, et les capteurs de rotation des roues. Si ces derniers permettent des trajectoires et mouvements précis, les deux premiers servent à mettre en oeuvre des algorithmes d’évitement d’obstacles.

D’autres capteurs viendront probablement s’ajouter à ces capteurs, avec par exemple un module accéléromètre, boussole et gyroscope 3D.

Un capteur particulier prendra place à coup sur, en revanche, avec le module caméra du Raspberry pi. Celui ci permet une capture vidéo en fullHD (1920*1080) à 30 images par secondes et des photos à 5Mpixels, voire 8 pour la nouvelle version. Une version infrarouge existe également.

 

Electronique de commande

Pour l’électronique de commande de ce robot, on s’appuie tout d’abord sur un Arduino nano, chargé des tâches de bas niveau (commande des moteurs, lecture des capteurs, contrôle des LEDs et boutons,  etc). Le robot peut être programmé directement via le Arduino, en ignorant le reste.

Le Arduino nano et le DRV8835 de R.hasika sur la plaque électronique. En dessous se trouve le Raspberry pi.

Le Arduino nano et le DRV8835 de R.hasika sur la plaque électronique. En dessous se trouve le Raspberry pi.

 

Mais cet Arduino est connecté par un port série à un Raspberry pi A+, qui permet cette fois de s’intéresser à des tâches plus complexes, telle que la cartographie, le traitement d’information vidéo, les communications wifi, etc. Si on ne souhaite pas s’occuper de la programmation des tâches de bas niveau, il suffit de téléverser le code fourni avec le projet sur l’Arduino et de communiquer avec celui ci depuis le Raspberry pi via un port série pour envoyer des commandes.

Autres éléments

R.Hasika embarque divers autres éléments que nous ne détaillerons pas tous ici. Mais en voici quelques uns :

  • 6 leds RGB adressables, dont on peut définir indépendamment la couleur parmi 65536;
  • un bouton poussoir programmable par l’utilisateur;
  • du wifi embarqué, pour pouvoir commander ou programmer le robot à distance;
  • un écran LCD 2*16 pour afficher des informations textuelles;
  • une ouverture permettant au robot d’être modifié, adapté;
  • des emplacements pour fixer des extensions non planifiées pour le moment.

Dans les prochains billets, nous nous pencherons en détail sur tous ces aspects, et nous nous intéresserons également aux objectifs recherchés pour ce robot, en commençant par détailler la conception du châssis et les fonctionnalités par celui ci. En attendant, voici une galerie de R.hasika :

 

Boitier de contrôle de Rlieh, contrôleur automatique d’aquarium

Panneau de contrôle de Rlieh

Dans un précédent billet, nous avons décrit le modèle 3D du panneau de commande de Rlieh. J’ai maintenant imprimé le boîtier, et je vais vous présenter le résultat, qui me sert de boîtier de contrôle de rlieh, mon système de gestion automatique d’aquarium.

Boitier de rlieh imprimé en PLA

Boitier de rlieh imprimé en PLA

Le boîtier a été imprimé en PLA. Il s’agit de la façade présentée dans le précédent billet, avec trois trous pour les boutons, et un grand rectangle pour l’écran LCD.

L’écran est fixé par l’arrière, avec 4 vis, et le tout est prévu pour que l’écran soit tout juste au niveau de la façade. Le fichier scad peut toutefois être modifié pour changer cela, si l’on souhaite par exemple que l’écran dépasse pour qu’il soit au niveau d’une autre plaque. Tous les fichiers sont disponibles sur le github du projet Rlieh.

Les boutons se fixent par l’avant, avec un écrou à l’arrière. Sur la version imprimée, les trous étaient un peu juste, je les ai donc élargis, mais sur ceci à été mis à jour, et la taille des trous permet maintenant une installation facile de boutons de 16mm standards.

Écran et boutons installés sur le module de contrôle de Rlieh

Écran et boutons installés sur le module de contrôle de Rlieh

Sur la photo précédente, vous pouvez voir le rendu lorsque l’écran et les boutons sont en place. Sur la droite, une carte SD et un Raspberry pi zero à titre de comparaison pour la taille.

boitier de contrôle de Rlieh de face, en fonctionnement.

boîtier de contrôle de Rlieh de face, en fonctionnement.

Pour connecter le tout, il suffit de brancher quatre fils pour l’écran I2C : le vcc (5v), la masse, et les broches sca et scl. Il faut deux câbles supplémentaires pour chaque bouton.

Pour l’instant, seul le bouton du haut est utilisé : il allume ou éteint l’éclairage. Toutefois, puisqu’il s’agit d’un contrôleur automatique, il n’allume pas simplement de façon instantanée et continue l’éclairage. En effet, celui ci s’allume et s’éteint automatiquement selon l’heure.  L’éclairage s’allume également progressivement, comme illustré dans cette vidéo :

L’extinction est également toujours progressive.

Si l’on appuie sur le bouton alors que l’éclairage est allumé, alors  l’éclairage s’allumera (progressivement), mais pour une durée (réglable) de 5 minutes, avant de s’éteindre progressivement. Dans l’autre sens, si l’éclairage est allumé, alors un appui sur le bouton l’éteindra progressivement pour 5 minutes avant de le rallumer. Ce comportement sera bientôt changé, en effet, si quelqu’un éteint l’éclairage, c’est sans doute pour avoir de l’obscurité (par exemple pour dormir). Du coup dans la prochaine version du code, l’éclairage restera éteint jusqu’au prochain cycle d’allumage programmé.

Dans mon cas, l’éclairage s’allume a 11h et s’éteint à 23h, sur une période de plusieurs minutes.

façade du module de commande de rlieh en fonction

façade du module de commande de rlieh en fonction

Sur l’écran, la première ligne sert à afficher l’état des lumières (on ou off). La seconde affiche quelque chose si l’on est en train d’allumer ou d’éteindre (pendant les transitions). Ces messages sont surtout utiles pour le développement et le débogage, ils seront sans doute remplacés par autre chose plus tard.

La troisième ligne affiche la température de l’air, et la température de l’eau. Enfin, sur la dernière ligne, on affiche l’heure courante et la date.

Une version ultérieure affichera le temps restant avant le prochain allumage/la prochaine extinction, ainsi que d’autres indications utiles.

 

Création d’un boitier pour le panneau du contrôleur d’aquarium Rlieh

Facade du boitier de commande de Rlieh

Pour mon contrôleur d’aquarium, Rlieh, j’utilise un écran LCD 4×20, connecté à un Arduino nano, et des sondes diverses. Pour l’instant, je n’ai qu’un bouton, pour allumer et éteindre le tout, mais j’en prévois d’autres. Jusqu’ici, l’ensemble était simplement vissé sauvagement, et la carte électronique posée sur la vitre qui protège les LED.  Du coup, il est temps de reprendre tout ça pour tout installer proprement!

En savoir plus