J'ai entendu dire que des vêtements intelligents étaient en cours de développement. Un site web, http://www.plusea.at/, propose des suggestions surréalistes de vêtements intelligents. Dans la vraie vie, par exemple, il existe une chemise intelligente qui détecte si le dos d'une personne n'est pas droit et qui vibre pour lui rappeler de se redresser. Il existe également des chaussettes intelligentes qui mesurent la température des pieds d'un diabétique et vibrent pour l'avertir d'un risque d'infection. Cette ceinture-boussole est donc un vêtement intelligent qui m'indique par vibration la direction du pôle Nord. Elle fonctionne également la nuit ou si je ne vois rien. Grâce à cette construction électronique, je me suis familiarisé pour la première fois avec le bus I2C. Pour mieux le comprendre, j'ai mis deux Arduino ensemble, par exemple, de sorte qu'un Arduino envoie un texte à l'autre et que l'autre Arduino confirme la réception du texte. J'ai également essayé de mettre deux capteurs distincts (MPU6050 et QC5883L) sur le même bus I2C que l'Arduino, et j'ai réussi à le faire fonctionner. Dans les constructions Arduino précédentes, j'ai toujours utilisé des batteries 9V pour alimenter l'Arduino, mais pour ce projet, j'ai trouvé que le Markina avait une bien meilleure unité d'alimentation avec 2 piles Lithium - 18650 comme source d'alimentation.
J'ai suivi les instructions de Kyle Corry. Cela semble me convenir, car je participe à des compétitions de course d'orientation, même de nuit. Instructables, Kyle Corry
Je n'aurais pas été capable d'écrire un tel programme, bravo à Kyle Corry ! Github, Kyle Corry
Mon adaptation ici n'est pas encore terminée. Comme le MPU9250 semble ne plus être produit, j'utilise le BNO055 (après avoir utilisé le QM5883L et le MAG3110 et, comme il s'agissait de capteurs de mauvaise qualité, j'ai opté pour le meilleur modèle). J'utilise également un shifter de niveau logique, bien que la plupart des tutoriels pour BNO055 ne l'utilisent pas. Je pense que, même si je ne connecte que GND et 3,3V de l'Arduino au capteur, il peut toujours y avoir 5V de l'Arduino à travers les broches A4 (SDA) et A5 (SCL) vers le capteur. Il y a un algorithme de compensation de l'inclinaison dans compass.cpp avec Xm=mag_xcos(thetaRad)-mag_ysin(phiRad)sin(thetaRad)+mag_zcos(phiRad)sin(thetaRad) ; et Ym=mag_ycos(phiRad)+mag_z*sin(phiRad) ; suivant le tutoriel de Paul McWortherPaul Mc Worther
Dans mon programme, la compensation de l'inclinaison ne semble pas fonctionner. Pour ma propre visualisation et pendant les tests, j'ai ajouté le programme python cuboid_draw_ursina_B.py, qui lit le port COM6 et dessine un cube 3D comme un arduino symbolisé sur l'écran et écrit l'orientation actuelle du capteur sur le même écran. "N", "NE", "E", "SE", "S", "SW", "W", "NW" J'ai donc vérifié avec une boussole en même temps, et cela semble fonctionner correctement. J'ai supprimé les lignes de code du programme de Kyle, qui sont liées à la calibration, parce que le BNO055 (Adafruit) a sa propre routine de calibration.
Arduino Nano Uno (Sertronics Berrybase)
BNO055 (magnetometer) Sertronics Berrybase
coin vibration motors (Aliexpress)
Button switch
10K resistor
USB cable Belt Battery pack
Breadboard
Logic level converter
glue
Soldering kit
Adafruit_BNO055
utility/imumaths.h
Adafruit_Sensor
Kalman Filter
Instructions : En portant la ceinture, faites une marque tous les 45 degrés en commençant directement devant vous. C'est là que les moteurs seront placés. Le moteur situé directement derrière vous indique le sud et ceux situés à droite ou à gauche sont le sud-est et le sud-ouest. Je désignerai tous les moteurs par leur direction cardinale, en supposant que le nord est à l'avant de la courroie. Fixez les moteurs vibrants sur la courroie aux endroits indiqués. Les moteurs vibrants que j'ai utilisés étaient dotés d'un dos adhésif, ce qui a facilité la tâche. Assemblez le circuit illustré dans le schéma suivant. Placez le circuit connecté, composé de l'Arduino Nano, du magnétomètre, de l'interrupteur à bouton, du convertisseur de niveau logique et de l'alimentation électrique basée sur des cellules 18650 rechargeables, dans une boîte appropriée, et fixez la boîte sur la ceinture. Remarque : le schéma montre que les moteurs vibrants partagent un fil de terre commun - cela facilite la connexion à l'Arduino mais n'est pas nécessaire. Sur la photo, l'alimentation n'est pas là, parce qu'au moment où j'ai fait cette instruction, elle était cassée, parce que j'ai mis par inadvertance le 18650 avec la mauvaise polarisation dans la boîte. De la fumée s'est élevée et ça sentait mauvais.
Enveloppez le circuit dans du ruban adhésif. Pour de meilleurs résultats, prenez du ruban adhésif de même largeur que la ceinture et enroulez-la entièrement, en laissant juste un câble USB exposé pour l'Arduino. Téléchargez cette esquisse sur l'Arduino après avoir installé les bibliothèques nécessaires. Branchez la batterie sur le port USB de l'Arduino et rangez-la dans une poche ou fixez-la à la ceinture. Appuyez sur le bouton pour basculer entre le mode discret (petite impulsion vers le nord uniquement en cas de changement de direction) et le mode permanent (vibration permanente vers le nord).
quand j'ai fait les expériences avec mon Arduino pour un arrosage automatisee des fleurs, je voulais que la même quantité d'eau aille toujours dans les quatre pots de fleurs. J'imaginais que ce serait facile à faire, mais ce n'est pas le cas. Pour une raison quelconque, l'eau va toujours trop dans un pot de fleur et l'autre pot de fleur n'a rien. J'imaginais que si je faisais des trous de même taille, cela fonctionnerait. Tout d'abord, j'ai réalisé une version d'essai à partir de blocs de plastique en les collant, et en piquant avec une aiguille j'ai fait des trous de la même taille que possible, une idée un peu similaire aux dispositifs de perfusion hospitaliers. Cela ne fonctionnait pas, il y avait toujours un trou un peu plus grand et l'eau n'allait que dans un seul pot. C'est pourquoi j'ai décidé que si j'essayais l'impression 3D, les trous devaient être précis. Cela n'a toujours pas fonctionné. Ce à quoi cela ressemblait à l’intérieur ressemblait à la moitié.
Voilà à quoi ressemblait le modèle stl de l'extérieur. J'ai enregistré le fichier "stl" de ce modèle 3D sur le serveur Cloud, car le fichier était trop gros, je n'ai pas pu l'envoyer en pièce jointe à un e-mail. Lorsque j'ai dessiné le modèle avec le programme Unigraphics, aujourd'hui le nom du programme est "Siemens NX", c'était aussi un bon exercice de modélisation 3D pour moi. Par exemple, je devais me rappeler qu'une imprimante 3D ne peut pas avoir de saillies arbitraires, car elle imprime toujours une couche de plastique sur une autre couche, et lorsque ce plastique est un peu chaud, il peut s'agglutiner un peu et perdre sa forme. Siemens NX est très adapté à la modélisation de surfaces spéciales ondulées et courbes.
J'ai trouvé le service d'impression 3d sur le site www.tori.fi. www.tori.fi est principalement une vente en ligne de biens d'occasion, à l'image de ce qu'étaient autrefois les pages jaunes. Le modèle 3D m'a coûté environ 15 euros et il est arrivé par courrier assez rapidement. Quoi qu’il en soit, cette expérience d’impression 3D n’en valait pas la peine car mon principe ne fonctionne pas vraiment. Le distributeur d'eau doit avoir une forme différente. Une forme fonctionnelle est sur le site:
J'ai acheté un LIDAR très bon marché comme un achat impulsif. En partie parce que j'avais déjà vu sur un blog youtube qu'on pouvait les connecter à un arduino. Et même si la construction d'un robot semble être un gros projet jusqu'à présent, je peux toujours avoir des rêves. Je rêve donc de fabriquer avec ces servomoteurs, l'arduino et d'autres capteurs un buggy néphrite, qui serait capable de rouler, et dont l'œil serait bien sûr un lidar, de sorte que le robot ne s'écraserait pas contre les portes, mais s'arrêterait toujours gentiment. Il s'agit donc encore d'un rêve. L'obstacle à la réalisation de ce rêve est le manque de temps et peut-être aussi le manque de patience. J'aurais probablement besoin de plusieurs semaines d'affilée pour me concentrer sur ce projet, mais je ne peux pas y consacrer tous mes week-ends, j'ai beaucoup d'autres passe-temps et d'autres tâches ménagères. Quoi qu'il en soit, ce petit projet pourrait être un petit pas en avant sur la longue route qui me mènera à la fabrication de mon propre robot. C'est le lien vers l'endroit où j'ai acheté cet appareil merveilleux.
Lorsque j'ai acheté ce LIDAR, j'imaginais encore que je le connecterais directement à un Arduino, du moins c'est ce que le blogueur suisse a fait, où il avait un convertisseur complètement différent, que j'ai également acheté, mais qui attend toujours son destin en traînant dans le tas de mes autres trucs électroniques. Mais en fait, cette connexion directe au port USB de l'ordinateur est déjà facile, du moins pour moi, parce que l'outil de programmation Visual Studio Code et python sont préinstallés et me sont relativement familiers. Le module d'extension nécessaire pour le port USB de l'ordinateur peut être trouvé sur le lien suivant. Selon wikipedia, TTL signifie Transistor-Transistor Logic, le nom signifie que les transistors, en fait 2 circuits en série, amplifient et exécutent des fonctions logiques. Je ne pense pas que cela signifie quoi que ce soit, mais c'est un convertisseur entre le port USB et le signal série RS232. Je me souviens encore que l'abréviation RS232 est apparue avec l'ordinateur C64. Lien :
Le site de vente de Lidar contient également une référence permettant de trouver les bons extraits de programme pour décoder le signal. Ce groupe de discussion Discord est devenu public parce qu'un Américain a posté des photos secrètes et d'autres informations sur la guerre en Ukraine, se vantant apparemment de tout ce qu'il savait. Sur ce canal spécifique nommé mb_1e2tydlidar-s4b, il y a un homme appelé VIDICON qui a fait des recherches approfondies sur ce lidar. Apparemment, le vendeur n'a fourni aucune documentation sur cet appareil. Ce qui n'est pas inhabituel pour les vendeurs chinois. VIDICON dispose apparemment des analyseurs de signaux appropriés pour déterminer progressivement ce que signifient tous les octets du paquet de données émis par l'appareil. J'ai beaucoup de respect pour la présence de gourous comme VIDICON dans ce monde. Au fait, même si le code vient de github, pour moi ce n'était pas exactement un one-to-one, mais j'ai dû expérimenter un peu, quel type de baud-rate il fonctionne avec, s'est avéré être 153600. Heureusement, mon ordinateur avait déjà python installé avec VS Code, mais j'ai dû ajouter les modules supplémentaires pygame, serial, math et enum. Je ne me souviens plus, quelque chose de similaire comme sudo apt-get install -y enum était nécessaire ou peut-être l'équivalent sur une machine Windows.
Le programme tel qu'il est listé ici n'est pas exactement le même que le programme github, mais en plus de la vitesse de transmission, j'ai changé la commande pygame set_at, qui ne produit qu'un très léger point à l'écran, et je l'ai remplacée par un rectangle pygame.draw.rect, qui est beaucoup plus visible. J'ai aussi essayé pygame.draw.circle, mais c'est trop lent, ça fait beaucoup de lignes horizontales à l'écran. J'ai aussi changé le facteur d'agrandissement, distancef = distance / 40 puis quand je veux que plus de détails soient mis en évidence, le profil de mon propre visage par exemple, alors je mets ce facteur à 3. Cependant, je ne suis pas très familier avec pygame et tout le programme est comme de l'hébreu pour moi, en particulier cette classe State(Enum). Il va falloir que je me familiarise avec.
Schéma de connexion de LIDAR au port USB de l'ordinateur
tester le LIDAR en me promenant dans mon appartement
Cela semble être un type de projet Arduino assez courant. Je suis terriblement paresseuse pour arroser mes fleurs, souvent oubliées pendant des semaines, et je veux que la fleur soit arrosée automatiquement avec une pompe chaque fois que l'eau vient à manquer. La configuration comprend un Arduino Uno, une pompe à eau, un tuyau d'arrosage, un capteur de niveau d'eau et une carte adaptateur Arduino, ainsi qu'un relais bleu.
Code de programme Arduino