Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Comment connecter un capteur à ultrasons Lego Mindstorms NXT au Raspberry Pi

Résumé

Connectez directement un capteur à ultrasons Lego Mindstorms NXT à un Raspberry Pi. Un tampon de bus TCA9517 I2C et une broche GPIO supplémentaire pour SCL sont nécessaires. Un court programme C++ pour lire la distance mesurée est fourni.

Présentation

Raspberry Pi (Pi), malgré quelques défauts, est définitivement mon SBC préféré. De loin la plus grande communauté et chaque détail est bien documenté. Lego Mindstorms, par contre, mon kit de construction de robot préféré. Contrairement à d'autres kits de robots, il offre des possibilités illimitées de construire des robots. Aujourd'hui un robot automobile, demain un robot chenillé et le lendemain un bras robotisé à 6 axes, tout est possible. La version NXT du kit dispose d'un puissant microcontrôleur basé sur ARM, ce qui est suffisant pour la plupart des applications robotiques simples mais pas assez pour des projets avancés comme la vision par ordinateur. Récemment, Lego a publié EV3, un nouveau kit avec un cerveau bien plus puissant qui est, comme le Raspberry Pi, piloté par Linux. Mais ce cerveau n'est toujours pas capable de calculer des images haute résolution à une vitesse raisonnable. Par conséquent, je souhaite toujours combiner la puissance de Raspberry Pi avec les possibilités illimitées de Lego. À ma connaissance, il existe un projet qui y parvient, appelé BrickPi. Bien qu'assez réussi, je pense qu'il présente plusieurs lacunes que je souhaite aborder dans cet article et les suivants. Tout d'abord, il n'est compatible qu'avec les anciens capteurs NXT basés sur I2C et non avec les nouveaux capteurs EV3 basés sur UART. De plus il ne connecte pas directement les capteurs au pi, mais utilise deux microcontrôleurs Atmega (compatibles Arduino) pour communiquer avec les capteurs. L'ajout de nouveaux capteurs ou tout autre changement nécessite un nouveau firmware. De plus, le BrickPi utilise des pilotes de moteur L293D qui ne sont capables de fournir que des courants d'environ 0,6 A, tandis qu'un moteur Lego NXT consomme jusqu'à 2 A lorsqu'il est bloqué [Caractéristiques du moteur NXT]. Dans cet article, je souhaite vous montrer comment connecter directement un Lego Mindstorms. Capteur à ultrasons (capteur américain) au Pi sans utiliser de microcontrôleur supplémentaire.

Défis

Ma première tentative pour connecter le capteur américain au Pi était simple. Connectez simplement les deux lignes de signal I2C à l'aide d'un simple décaleur de niveau avec deux n-fets [AppNote]. Le décaleur de niveau devrait être nécessaire car le capteur américain utilise des niveaux logiques de 5 V et le pi seulement 3,3 V. Ensuite, connectez 5 V et 9 V au capteur et lancez un programme de test simple et n'obtenez rien. Après avoir vérifié deux fois les fils et le logiciel, j'ai branché l'analyseur logique et j'ai réalisé que le capteur américain est incapable de répondre à aucune demande, pas même d'accuser réception de sa propre adresse. Le premier et principal défi est la connexion matérielle entre le Pi et le capteur. Le matériel et les protocoles logiciels sont bien décrits par Lego, y compris les schémas [Lego HDK] et bien qu'il utilise I2C, nous ne pouvons pas connecter directement le capteur au pi.Comme vous pouvez le voir dans le schéma 1, le capteur a des résistances pullup très faibles (82 k) et de très fortes résistances série (4,7 k) sur ses lignes I2C. Les deuxièmes résistances sont notre principal problème. Comme vous le savez peut-être, le Pi utilise de fortes résistances de rappel de 1,8 k sur ses lignes I2C. En raison de la résistance en série, le capteur est incapable d'abaisser l'une des lignes I2C et est donc incapable de répondre aux demandes du maître I2C. La figure 1 montre une simulation approximative de cette situation. La ligne bleue montre les données que le capteur tente d'envoyer, la ligne verte montre les données reçues par le Pi. Comme vous pouvez le voir, le capteur est incapable de tirer la ligne de données simulée vers le bas. Vous pouvez également noter que tout circuit de décalage de niveau est inutile à cet état car la forte résistance de rappel à 3,3 V domine la ligne également à un niveau élevé. La seule solution à ce problème, que j'ai trouvée jusqu'à présent, consiste à utiliser un TCA9517, un tampon bidirectionnel à 2 canaux pour I2C. De plus, cette puce s'occupe du changement de niveau. Le deuxième défi provient d'un bug du firmware du capteur américain. C'est décrit ici dans les forums mbed, par exemple. Il y a aussi un article décrivant comment analyser la communication entre Lego Mindstorms NXT et le capteur américain à l'aide d'un analyseur logique (allemand). Pour résumer, un cycle d'horloge supplémentaire (bascule sur la ligne SCL) est nécessaire entre l'écriture du registre dans le capteur et la lecture effective des données du capteur. Ceci n'est bien sûr pas compatible avec une implémentation matérielle ou logicielle standard I2C. Vous pouvez écrire une implémentation logicielle I2C spéciale à l'aide de n'importe quelle paire de GPIO, mais il est plus simple de simplement connecter un autre GPIO du Pi à la ligne SCL et de basculer entre l'écriture du registre sur le capteur et la lecture du contenu des registres.

Matériel

Matériel nécessaire pour un prototype simple : Pour ce prototype, j'ai utilisé une planche à pain avec une petite planche de dérivation de capteur Lego Mindstorms faite sur mesure. Cette carte imite le contrôle 9V et la protection du port du capteur du Lego Mindstorms NXT [Lego HDK]. Pour un prototype simple, vous n'avez pas besoin du circuit de commutation 9V (les deux fets) ou des résistances en série supplémentaires et des diodes sur les lignes I2C. Vous pouvez simplement connecter 9V à la broche 1 du câble, GND aux broches 2 et 3, 5 V à la broche 4 (en omettant la diode D1), SCL_5V à la broche 5 et SDA_5V à la broche 6.Pour plus de détails :Comment connecter un Lego Mindstorms NXT Capteur à ultrasons pour le Raspberry Pi

Processus de fabrication

  1. IdO de base – RaspberryPI HDC2010 comment
  2. Enregistreur de température Raspberry Pi
  3. Surveillance de la température sur le Raspberry Pi
  4. Capteur de température Python et Raspberry Pi
  5. Station météo Raspberry Pi
  6. L'intégration des données du capteur avec le microprocesseur Raspberry Pi
  7. Capteur à ultrasons (HC-SR04) + Raspberry Pi
  8. Capteur de mouvement utilisant Raspberry Pi
  9. Capteur d'humidité du sol Raspberry Pi