Comment fabriquer le Lunokhod lui-même

Si, dans votre enfance, vous n'aviez pas de vélo, et maintenant vous avez une Bentley,
tout de même, dans votre enfance, vous n'aviez pas de vélo.

Il se trouve que dans mon enfance, il n'y avait pas de Lunokhod . Et puis un bébé est né. En général, j'ai pensé et j'ai décidé de faire un jouet pour nous deux.


Je ne voulais pas créer une copie exacte, et je ne sais pas comment imprimer des cas à la maison, j'ai donc décidé de me limiter à recréer des fonctionnalités similaires. De plus, il me semblait inhumain d'entrer dans le «programme» de mouvement de mémoire et de ne pas comprendre exactement ce qui s'était passé, alors j'ai ajouté un affichage.

Version 1




À portée de main était un châssis peu coûteux avec Ebay et Arduino Uno.



Pour contrôler les moteurs, j'ai pris le PWM Servo Shield et soudé le L293D + PCF8574 sur la planche à pain:



Pour lire sur le clavier, j'ai pris le PCF8574 et une poignée de diodes:



Le clavier lui-même est devenu une carte de circuit imprimé:



Pour que le clavier ne s'effondre pas entre mes mains, j'ai fixé la superposition sur le dessus. Elle a dû passer commande auprès du "fraisage" :)



Pour afficher le programme, un affichage classique à 4 caractères 20 est utilisé. Oui, également via PCF8574;)

Au début, j'ai utilisé 4 batteries pour l'alimentation, mais elles se sont épuisées trop rapidement, et je les ai remplacées par une paire de batteries 18650:



J'ai utilisé des modules TP4056 pour la charge, que j'ai connectés aux batteries via un relais, mais pas avec beaucoup de succès.

Le moyen le plus rapide était d'écrire le firmware. Malheureusement, il s'est avéré que la bibliothèque LCD I2C possède une licence GPL, et le code est allé à la poubelle. Vers la même époque, j'ai réalisé que l'Arduino Uno n'est pas la meilleure option, et qu'une poignée de PCF8574 est très gênante à souder.

Et j'ai décidé de recommencer.

Version 2




J'ai pris en compte l'expérience précédente, qui suggérait qu'il y avait plusieurs problèmes:

  • Le châssis avec Ebay est en plexiglas et est très (!) Fragile (j'ai tiré la vis de montage de la boîte de vitesses et le support vient de se casser).
  • Il y a de nombreux trous de montage sur le châssis, mais aucun ne convient.
  • Avec le châssis, il y a des rapports 1:48, mais ils sont trop rapides.
  • En général, le châssis ne suffit pas.
  • Arduino Uno a peu de pattes.
  • Il n'y a pas de module de son (et il est nécessaire pour la commande de tir).
  • Des histoires d'horreur sont écrites sur Li-ion sur Internet; je ne veux pas donner à un enfant un appareil potentiellement dangereux.

En conséquence, j'ai acheté:


De plus:


Achtung! Attention! Attention! Ces liens sont fournis uniquement pour illustrer et simplifier la recherche de détails. Je ne peux pas garantir que le vendeur ne change pas soudainement le lot en un autre, ne change pas le prix, la quantité, etc.

Le fer


J'ai transféré le clavier sur le circuit imprimé (c'est peut-être le seul élément difficile à répéter). La superposition de clavier a été fraisée à ma commande.

La question restait: de quoi faire le châssis? Il n’y avait pas de plastique approprié, il est difficile de traiter le métal ... Et si vous prenez du contreplaqué? "Mais ce n'est pas esthétique!", Ai-je pensé. Mais quand au bout d'une demi-heure j'ai eu un châssis normal, j'ai changé d'avis. Le châssis n'était pas très présentable et est allé au panier, mais j'ai tellement aimé la vitesse de traitement que j'ai décidé de continuer à utiliser du contreplaqué.

Certes, j'ai commencé à scier la deuxième feuille seulement après avoir dessiné un plan approximatif:



Pour monter les moteurs, j'ai coupé un morceau de coin en aluminium et percé:



Cartes fixées sur des supports hexagonaux et reliées entre elles par des boucles.


(ici vous pouvez voir un stabilisateur 5V et quelques contacts de puissance).

Les fils électriques se sont avérés être un peu trop, alors j'ai fait une carte d'alimentation à partir du stripboard (détails ici ). Je soupçonne que vous pouvez prendre un bouclier de capteur normal, qui a beaucoup de broches d'alimentation.



Puisqu'il n'y avait plus d'extensions d'E / S, le clavier a dû être refait ( source ). J'y ai transféré des diodes et des résistances de pull-up:





En tant que capteur de vitesse, j'ai utilisé un optocoupleur à fente et un engrenage (peint avec un marqueur permanent):



En tant que troisième roue, j'ai utilisé une balle:



Initialement, il y avait un support sous la forme d'une roue sur la poutre, fournie avec le châssis. Cependant, lorsque la direction du mouvement a changé, la roue a commencé à tourner au moment le plus inattendu et a jeté le chariot sur le côté.

Schéma de câblage


Il est préférable de regarder les fichiers consts.h et lcd.ino, ils contiennent les informations les plus pertinentes. Les connexions, telles qu'elles sont actuellement, ressemblent à ceci:

L'image est cliquable.

Firmware


Le firmware , en substance, est un programme ordinaire écrit dans l'IDE Arduino. Il existe deux modes de fonctionnement: l'édition et l'exécution. En cours d'édition, la commande + nombre de répétitions est acceptée depuis le clavier. Tout cela est emballé dans une valeur de 16 bits et ajouté à un tableau en RAM. Lorsqu'un programme est exécuté, les valeurs sont supprimées du tableau et exécutées. L'exécution d'une étape (sous une forme très simplifiée) ressemble à ceci:

  ( )      ( >=  ),                    = *    
( ) ( >= ), = *

La distance parcourue est déterminée par le nombre d'impulsions de l'optocoupleur, qui est vérifié en interrompant la minuterie.

La seule exception est la lecture du son. Si la commande «shot» est rencontrée, la boucle for la plus simple est démarrée, ce qui récupère les valeurs du fichier wav (il est flashé dans la même mémoire flash que le programme) et les envoie au D-R-2R. Lorsque les valeurs se terminent, il revient au processus normal d'exécution du programme.

Malheureusement, le monde réel est légèrement différent du modèle logiciel pour lequel le firmware est conçu, j'ai donc ajouté un certain nombre de retards qui permettent de prendre en compte l'inertie du châssis.

J'ai délibérément mis la licence MIT. À ma connaissance, le micrologiciel avec une telle licence peut être utilisé librement comme vous le souhaitez, sans avoir à publier d'autres modifications (je ne veux forcer personne à faire quoi que ce soit).

Manuel d'utilisation;)


Le clavier est légèrement différent du Lunokhod "classique":



  • Sur la gauche se trouve un bloc de commandes (vert - où aller, rouge - pause, bas - Out, tir, répétition).
  • Au milieu, des nombres avec le nombre de répétitions.
  • Sur la droite, il y a 8 touches de commande (noir - supprimer la dernière commande, rouge - supprimer tout, vert - démarrer, jaune - démarrer la dernière commande, bleu - test, gris - rechange).

Encore une fois avec un signe:
Dans l'imageLa traductionSignification
FwdAller de l'avant
BwdReculez
GaucheTourner à gauche
À droiteTourner à droite
PauseGeler
OutNon mis en œuvre, laissé pour l'avenirA fait comme dans le Lunokhod
Le feuLe feuProduit le son de "pih!"
BoucleCycleRépétez plusieurs commandes précédentes une fois
0-9Nombre d'étapes20 maximum
BspSupprimer la dernière commande
DelSupprimer tout le programmeAllez confirmation requise!
T1, T2TestExécuter le programme de test
VérifierFaites le dernier pas
Allez!Terminez toutes les étapes

Le programme est entré en appuyant alternativement sur "Team" et "Number". Ensuite, nous appuyons sur le "Launch" vert et regardons le résultat. La suppression se fait en appuyant sur le bouton rouge, mais pas immédiatement: vous devez confirmer votre décision en appuyant sur le bouton vert "Démarrer". Lorsque l'alimentation est coupée, le programme est supprimé.

La commande Répéter contient un paramètre: combien d'étapes doivent être répétées [une fois]. Exemple: Fwd1, Pause1, Bwd1, Loop3; en conséquence, les commandes Fwd1, Pause1, Bwd1 seront exécutées deux fois. La première fois parce qu'ils sont dans le programme, la seconde - parce que c'est indiqué dans la commande Cycle.

Au cas où, la charge de la batterie est surveillée. S'il est trop petit, un avertissement s'affiche et le jouet ne roule pas.

GUI


Il est difficile de garder à l'esprit l'ensemble du programme, j'ai donc foiré un indicateur simple qui duplique les informations d'entrée.

Après le démarrage, une invite s'affiche:



Lorsque vous entrez une commande, l'icône de commande et le nombre de répétitions s'affichent dans le coin supérieur gauche:



Si plusieurs commandes sont entrées, la liste ci-dessous sera (en fait, le programme), et la commande que vous entrez sera toujours affichée en haut:



Pourquoi est-ce arrivé comme ça


Le jouet a été créé à partir de ce qui était à portée de main ou facile à obtenir. Je voudrais également parler d'Arduino. Il est sélectionné pour plusieurs raisons:

  • Elle a un nombre approprié de conclusions, et elles ont besoin de beaucoup (43):
    • 6 pour contrôler les moteurs;
    • 8 + 4 pour le clavier;
    • 11 pour LCD;
    • 3 pour DAC;
    • 8 pour les capteurs à ultrasons;
    • 2 pour les capteurs de vitesse;
    • 1 pour mesurer la tension de la batterie.
  • Je connais bien cette plateforme.
  • Il est cousu en un clic.
  • Le microcontrôleur ne nécessite aucune vitesse ni volume de mémoire gigantesques.
  • Et une efficacité particulière n'est pas non plus requise, car 90% du courant est consommé par les moteurs.

Ce qui peut être amélioré


Châssis Avec un démarrage rapide, les roues sont «polies» et le jouet s'égare. Vous pouvez essayer de faire un châssis à six roues, ou même sur chenilles (il y en a sur Aliexpress, mais je ne l'ai pas encore essayé).

GUI Maintenant, l'indicateur n'affiche que la quantité minimale d'informations, et cela se fait de la manière la plus simple.

Code Je n’aurai certainement pas de Pulitzer.

Le son . Il existe des lecteurs mp3 bon marché et très petits. Vous pouvez lancer le D-RR 2R en toute sécurité et le remplacer par un lecteur prêt à l'emploi.

Boutons de sauvegarde . Vous pouvez enregistrer le programme terminé dans l'EEPROM afin qu'il ne se perde pas lorsque l'alimentation est coupée. La mise en œuvre peut être comme à la radio: avec un appui long, le programme est sauvegardé, avec un appui court - run.

Bouton de sortie . Pas actuellement implémenté. Vous pouvez visser quelque chose comme un relais / servo sur l'une des broches Arduino.

Remerciements


  • L'enfant qui m'a motivé tout ce temps.
  • Ma femme, qui a patiemment attendu pendant que je jouais assez, et a aidé avec Corel Draw!
  • Sergey Dudnikov, qui a dessiné une superposition de clavier.
  • Andrei Shishkov, qui a fraisé ce même patch.
  • Anton, qui m'a fait un super mp3 avec le son de "wow!".
  • hudbrog , pour l'idée d'implémenter un contrôleur PID!
  • Les bricoleurs Chatik qui m'ont soutenu mentalement et ont été contraints de regarder les résultats intermédiaires du travail;)

Mauvais doublons


J'aime les films avec Jackie Chan, car à la fin, il y a une coupe de prises infructueuses. Je ne pourrais pas m'en passer non plus. Ce qui m'a le plus surpris, c'est le fait qu'un foret rond à deux rainures donne un trou triangulaire;)








Source: https://habr.com/ru/post/fr423409/


All Articles