Table des matières:

Tourelle Portal 2 - Contrôle de la tourelle principale : 9 étapes (avec photos)
Tourelle Portal 2 - Contrôle de la tourelle principale : 9 étapes (avec photos)

Vidéo: Tourelle Portal 2 - Contrôle de la tourelle principale : 9 étapes (avec photos)

Vidéo: Tourelle Portal 2 - Contrôle de la tourelle principale : 9 étapes (avec photos)
Vidéo: Il enlève mon soutif en 0.1 SECONDE 😭 #humour #drole #blague #couplegoals #marrant #challenge 2024, Juillet
Anonim
Image
Image

Ce projet est une extension ou un remix de ma tourelle de portail originale sur Instructables (Portal-2-Turret-Gun). Il peut également être utilisé comme contrôleur bon marché pour contrôler tout ce qui utilise la puce radio nRF24L01. L'écran LCD est particulièrement utile lors de la personnalisation.

(Cela s'avère très utile pour vérifier quand mes radios établissent et perdent des connexions avec d'autres nRF24L01 sur le "réseau". Je peux me promener et regarder l'écran d'affichage montrer l'état de la connexion des radios ! Très utile pour ajuster les paramètres et vérifier gamme!)

Après avoir terminé la tourelle du portail, j'ai vu un court clip vidéo de la scène de l'opéra Cara Mia à la fin de Portal 2. Je me suis dit: « Hé, j'ai construit quelques tourelles maintenant. Je peux le faire! Eh bien, j'avais les tourelles, mais pour que cela fonctionne, elles devaient maintenant communiquer entre elles ou avec un autre appareil. Après y avoir réfléchi et pensé que le contrôle manuel serait également cool, j'ai fini par décider que je construirais un contrôleur de tourelle maître, ou un MTC.

D'accord, alors comment s'y prendre ? Bon, je n'avais pas envie de trop modifier les tourelles, donc c'était une contrainte. J'avais des puces radio nRF24L01 que je n'avais pas encore utilisées, et je pensais que cela resterait conforme à mon objectif d'utiliser des composants peu coûteux et de m'appuyer sur la conception mécanique et le code pour que cela fonctionne. Je devais construire un contrôleur et commencer à réfléchir à ce que le contrôleur contiendrait et à ce que je pouvais faire exactement aux tourelles. Cara Mia était déjà à l'ordre du jour, mais quoi d'autre ?

Commande manuelle: Donc une fois les ailes ouvertes, j'aimerais contrôler le tangage et le pivot. 2 axes = un joystick, donc manette de commande et quelques boutons poussoirs. Le bouton-poussoir 1 tirerait sur la tourelle, et peut-être que le bouton-poussoir 2 lui ferait dire l'un de ses dictons. Ça a l'air bien! Assez simple…

Chat: J'ai récemment revu la routine "Who's on First" - Abbott et Costello, et une lumière s'est allumée dans ma tête ! Je ferais aussi un sketch comique en utilisant tous les dictons, en utilisant plusieurs tourelles !! D'accord, celui-ci n'était pas complètement compris, mais je suis sûr que je le réglerais une fois ma construction en cours.

Je voulais également que ce MTC soit sans fil, j'ai donc opté pour une simple option alimentée par batterie 9V et conçu le contrôleur pour qu'il soit alimenté par la prise mini-USB via le Nano à l'arrière. Utile pour la mise à jour aussi.

Étape 1: intégration de la radio dans les tourelles

J'ai d'abord fait fonctionner la radio avec quelques Nanos nus, pour m'assurer que je pouvais la faire fonctionner et envoyer des informations entre plusieurs appareils. Une fois cela fait, il s'agissait d'intégrer la radio dans les tourelles existantes. Hmm, ajouter le PCB physique dans la tourelle était assez facile. Je viens de modifier le support de puce pour inclure le nRF24L01, le Nano et la puce mp3. D'accord. Une partie physique modifiée, avec du câblage.

Le porte-puce modifié fait déjà partie des pièces imprimées de la tourelle. Je viens de supprimer l'option non radio des pièces imprimées de cette version. Cela ne fera aucune différence si quelqu'un veut construire la variante sans radio. N'incluez pas la puce radio nRF24L01.

Étape 2: (Re)câblage des tourelles

(Re)câblage des Tourelles
(Re)câblage des Tourelles
(Re)câblage des tourelles
(Re)câblage des tourelles
(Re)câblage des tourelles
(Re)câblage des tourelles
(Re)câblage des tourelles
(Re)câblage des tourelles

Euh oh…

Cela n'avait pas l'air bien. J'avais besoin d'ajouter 5 connexions au Nano, et j'étais déjà à court de broches disponibles. Après avoir examiné cela un peu, j'ai réalisé quelles connexions avaient la priorité et j'ai reconnu que pour que cela fonctionne, je devrais remapper la plupart des connexions Nano existantes.

À ceux qui veulent faire une « Tourelle radio » et ont déjà construit la génération précédente… Désolé…

Maintenant, j'ai fait ce changement plusieurs fois et il s'avère que le processus n'est pas trop mauvais. Cela implique de revenir en arrière, mais j'ai pu annuler les connexions existantes au Nano, puis me reconnecter aux broches appropriées sans trop de peine. J'ai ajouté les 7 fils de la puce radio au nRF24L01 (5 fils de communication, 3v et GND), puis j'ai connecté les autres extrémités au Nano.

Cependant, il y a plus de fils maintenant, il est donc beaucoup plus important de garder les choses en ordre lors du routage des fils.

IMPORTANT: lors de l'assemblage, assurez-vous que les fils n'appuient pas sur le bouton de réinitialisation Nano sur la carte !! Cela m'est arrivé sur un et m'a jeté pour une boucle inutile!

Ainsi, la construction de la tourelle a maintenant 2 schémas de câblage: l'ancienne option « non radio » et l'option « tourelle radio » révisée. Si je construisais une tourelle "non radio" aujourd'hui, j'utiliserais toujours le schéma et le code radio. Supprimez ou commentez simplement les parties radio si c'est l'itinéraire choisi ou non. La tourelle devrait toujours fonctionner toute seule sans la radio.

Étape 3: Composants électriques MTC

Composants électriques MTC
Composants électriques MTC
Composants électriques MTC
Composants électriques MTC
Composants électriques MTC
Composants électriques MTC

Une fois les tourelles triées, il était temps de créer un MTC.

Le MTC utilise les composants suivants, tous provenant d'Amazon, de Baggood ou d'Ali Express, etc. Je montre les numéros de pièce Amazon que j'ai référencés pour référence, car ces articles sont couramment disponibles et à un prix raisonnable (et je n'ai attendez plus de 2 semaines pour mettre la main sur ce dont j'avais besoin avant de pouvoir commencer la conception mécanique !)

  • Arduino Nano 0.96 "LCD, (SSD1306) J'ai utilisé la version bleu/jaune
  • Petite manette (HW-504) Module de manette 5V PS
  • Interrupteur à bascule (dx-004) 22mm * 13mm
  • Radio - (nRF24L01)
  • Boutons-poussoirs de 12 mm (CLT1088 pour les boutons colorés, PBS-33B pour le noir)
  • Vis de 2 mm (jeu de vis autotaraudeuses M2, assortiment de têtes cylindriques à entraînement croisé)
  • LED 5mm de votre choix pour clignotants. (N'utilisez pas de LED lumineuses !!)
  • Connecteur de batterie 9V générique avec pigtails
  • Pile 9V (utilisez-en une bonne, pas l'une des variétés de magasins à un dollar qui ne peuvent pas toujours fournir suffisamment d'énergie pour ces projets !)
  • J'ai utilisé du fil gainé de silicone. J'aime l'utiliser pour ces projets.

J'ai initialement utilisé des LED lumineuses, mais j'ai trouvé qu'elles étaient trop bonnes. Ils m'aveuglaient ! J'ai fini par utiliser de vieilles LED faibles, ce qui était plus logique pour cette application.

Étape 4: Pièces imprimées en 3D

Pièces imprimées en 3D
Pièces imprimées en 3D
Pièces imprimées en 3D
Pièces imprimées en 3D
Pièces imprimées en 3D
Pièces imprimées en 3D

J'ai conçu le MTC en utilisant Fusion, de la même manière que j'ai conçu la tourelle.

L'assemblage imprimé ne nécessite que 3 parties:

  • Panneau supérieur (version 1 ou 2)
  • Boîtier inférieur
  • Sangle LCD

La puce nRF, le Nano, la batterie 9V, l'interrupteur à bascule et les LED sont installés dans la plaque supérieure sans attaches. Les LED s'enfoncent simplement dans la plaque et sont maintenues en place par des languettes. Ils devraient juste s'enclencher, mais n'en faites pas trop. La plaque supérieure est conçue pour maintenir le Nano par encliquetage et la puce nRF doit entrer doucement. Attention à la petite languette nRF; il est petit et est replié pour s'ouvrir et libéré pour capturer la puce. Même si ses déplacements sont limités, soyez doux ici.

Le joystick et l'écran LCD ont besoin de vis de 2 mm (5 mm de long) pour les maintenir sur la plaque supérieure. Le PCB du joystick a de gros trous, j'ai donc pensé que j'avais besoin de petites rondelles pour m'assurer que les vis ne passaient pas.

J'ai constaté que les circuits imprimés des écrans LCD varient légèrement d'un fabricant à l'autre, j'ai donc choisi d'utiliser une simple sangle pour le maintenir en place au lieu de taquets ou de crochets.

Notez que l'écran LCD peut être physiquement installé dans la plaque supérieure de toute façon, mais l'écran n'apparaît entièrement à travers l'ouverture que dans une seule orientation ! Pour cette raison, j'ai inclus une 2ème option de plaque supérieure lors de l'utilisation de l'écran divisé jaune/bleu. Une version a le jaune en haut et l'autre montrera le jaune en bas, comme le montrent mes photos.

Pour l'écran LCD en version monochrome, peu importe celui qui est utilisé car vous pouvez retourner l'écran à l'aide d'un logiciel.

Étant donné que tout le câblage est effectué sur la plaque supérieure, le fond n'est en fait qu'un couvercle maintenu sur la plaque supérieure avec des vis plus longues de 2 mm (qté: 4).

Au lieu d'une option "couvercle de batterie", j'ai juste incorporé la batterie dans la plaque supérieure. Il s'agit de retirer les 4 vis qui maintiennent du bas vers le haut pour changer une batterie, mais vu qu'elle peut aussi être alimentée par câble USB, pas la fin du monde. La plaque supérieure est fabriquée avec un système de support de batterie 9V qui doit être suffisamment solide pour une utilisation répétée, n'est pas trop compliqué mais empêche la batterie de se déplacer.

J'ai imprimé la plaque supérieure en 2 couleurs comme on le voit sur les photos. J'utilise un Prusa i3 Mk2 sans l'option multicolore, mais j'utilise leur outil d'impression couleur (https://www.prusaprinters.org/color-print/) pour changer de couleur à mi-chemin du processus. Vérifiez le calque sur lequel le texte s'arrête et devient solide, et faites-en le calque de transition. Voila ! Texte en couleur !

J'ai imprimé les pièces à une hauteur de couche de 0,35 mm car il n'y a pas besoin d'une résolution plus fine sur ces pièces plates. Je préfère aussi la façon dont il regarde cette résolution. Oh, et il s'imprime assez rapidement aussi !

Étape 5: Assemblage électrique

Assemblage électrique
Assemblage électrique
Assemblage électrique
Assemblage électrique
Assemblage électrique
Assemblage électrique
Assemblage électrique
Assemblage électrique

Les composants électriques sont tous installés sur la face inférieure de la plaque supérieure et tout le câblage est effectué ensemble. Les boutons-poussoirs et la bascule doivent être installés en premier, et la radio LCD, Nano, Joystick, nRF peut tous être pré-câblée avant d'être installée dans la plaque supérieure. Je recommande cette méthode de pré-câblage des composants individuels, puis d'effectuer les connexions finales au Nano à la fin. Je recommande également de télécharger d'abord le croquis sur un Nano nu, avant de terminer le câblage.

Il n'y a rien de plus satisfaisant que d'allumer l'appareil et de le voir prendre vie comme prévu une fois terminé !

La seule préparation de pièce électrique requise était de retirer les broches d'en-tête du joystick pour le faire passer sous la plaque supérieure. L'écran LCD peut être acheté avec ou sans broches installées et fonctionnera dans les deux cas. Le Nano doit être sélectionné sans broches d'en-tête.

Étape 6: Coder

Code pour MTC, tourelle rouge, tourelle blanche et tourelle bleue maintenant disponible

Eh bien, c'était une expérience de codage! J'avais la tourelle qui fonctionnait indépendamment, mais l'intégration de la radio était plus difficile que je ne le pensais à l'origine ! Je me suis également amusé à faire fonctionner la section « Chat » comme souhaité (nous en parlerons plus tard).

Le code MTC, une fois entièrement compris, a commencé à taxer les limites de mémoire du Nano ! J'ai dû faire des ajustements et économiser le code pour être plus efficace en mémoire. Une autre bonne expérience d'apprentissage.

J'ai inclus le code correspondant "Turret w radio option" dans cette version, car ils fonctionnent ensemble. La construction de la tourelle en option radio selon la page de construction de la tourelle la rendra prête à être utilisée avec le MTC ou pour votre autre méthode de contrôle nRF24L01.

De plus, faire fonctionner les sons avec ce code a pris un certain temps, et comme les sons provenaient d'autres sites Web accessibles au public, j'ai incorporé tous les sons tels que je les ai utilisés dans quelques fichiers ZIP; un pour la tourelle normale et un pour la tourelle défectueuse. La bonne chose pour vous, cher lecteur, c'est que vous pouvez utiliser les sons de vos cartes SD avec les codes tels qu'ils sont écrits et vous serez prêt à partir !

Étape 7: Menu MTC - Navigation

Menu MTC - Navigation
Menu MTC - Navigation
Menu MTC - Navigation
Menu MTC - Navigation
Menu MTC - Navigation
Menu MTC - Navigation

Le code MTC démarre avec un écran de démarrage personnalisé, puis vérifie l'état des tourelles. Si aucune tourelle n'est présente, il restera là jusqu'à ce que les tourelles se connectent !

Si au moins une tourelle est connectée, le menu principal s'affichera et la LED « Prêt » s'allumera, à moins que les tourelles ne soient interrompues ou soient occupées à « traiter avec quelqu'un ». S'ils sont occupés, un écran « Les tourelles sont occupées » s'affichera et le voyant « Occupé » s'allumera.

Toutes les tourelles activement connectées doivent être en « Mode Prêt » avant que le MTC puisse contrôler les tourelles.

Utilisez le joystick (haut et bas) pour parcourir les choix de menu:

  • Aria
  • Discuter
  • Manuel

Sélectionnez l'option souhaitée à l'aide du bouton « X » ou en appuyant sur le joystick.

Mode Aria - la sélection de cette option affichera l'écran "Mode Aria" et obligera les tourelles à exécuter la scène Aria à la fin du jeu Portal 2. Une fois terminées, les tourelles se fermeront et attendront une commande ou quelqu'un pour les réveiller.

Mode de discussion - La sélection de cette option affichera l'écran « Mode de discussion » et lancera la séquence de discussion. Une fois terminées, les tourelles se fermeront et attendront une commande ou quelqu'un pour les réveiller.

Mode manuel - La sélection de cette option affichera l'écran "Mode manuel", illuminera la LED "Manuel" et permettra le fonctionnement manuel des tourelles. Commande par joystick du tangage et du pivot. Appuyez sur le bouton « X » pour activer la séquence de tir. Appuyer sur le bouton « T » les fera « parler », où les tourelles prononcent un dicton aléatoire de leur bibliothèque.

Appuyer sur le bouton « < » ou retour annulera ces trois modes, fermera les tourelles et reviendra au menu principal.

Si vous souhaitez voir l'état de connexion de votre essaim de tourelles (actuellement limité à 3), appuyez sur le bouton « T » dans le menu principal. Vous serez redirigé vers l'écran « état de la tourelle », où vous pouvez voir l'état de connexion de chaque tourelle.

Lorsque vous êtes sur l'écran « état de la tourelle », vous verrez l'état de chaque tourelle.

  • Prêt - prêt pour le contrôle
  • Occupé - la tourelle est occupée à « s'occuper » de quelqu'un
  • Non disponible - MTC ne peut pas se connecter avec cette tourelle

Appuyez sur le bouton « < » pour revenir au menu principal.

Étape 8: personnalisation du code

Personnaliser le code
Personnaliser le code

La capture d'écran présentée ici montre ce que je regardais depuis bien trop longtemps… 4 croquis à la fois ! Qui a dit que le débogage n'était pas amusant !

Le code fournit le contrôle et les options indiqués ci-dessus, mais qu'en est-il de la personnalisation du code ?

Bien sûr! Mais il se passe beaucoup de choses ici, alors voici quelques lignes directrices ou conseils.

Astuce1 - Modification de la séquence « Chat ». Cette modification a lieu dans le code de la tourelle.

J'ai essayé de trouver un moyen de faire fonctionner le code pour moi partout où je le pouvais. Rendre la séquence de discussion plus éditable (Est-ce un mot ?) afin que je puisse me concentrer sur l'histoire a demandé plus de travail au départ, mais il est plus facile de la personnaliser par la suite.

La modification de la séquence de discussion à l'aide de la structure de codage fournie peut être effectuée de manière assez simple, à condition de suivre la méthode utilisée dans le code. A l'aide des fichiers son fournis, issus du jeu Portal 2, il vous suffirait de modifier la table (chatSayings).

Sélectionnez le dicton pour la tourelle normale ou la tourelle défectueuse. Le dicton est le fichier mp3 identifié par « 00XX - » suivi du texte décrivant le dicton. C'est le nombre qui est la partie importante. La tourelle n° 1 utiliserait cette valeur XX dans le tableau. La tourelle n° 2 préfixerait la valeur XX d'un « 1 » et la tourelle n° 3 préfixerait la valeur XX d'un « 2 ». Ainsi, par exemple, si vous sélectionnez l'expression « 0040 - désolé » et que vous souhaitez que la tourelle n 3 le dise, vous insérez « 240 » dans le tableau dans le bon ordre. Si la tourelle n°1 le disait, vous insérez « 40 » dans le tableau.

Faites de même pour l'expression suivante, et ainsi de suite. Il peut s'agir de quelques expressions entre les tourelles, ou plusieurs. (Je ne connais pas les limitations de cette méthode, autres que la mémoire).

Vous n'auriez pas besoin de changer les valeurs des autres tableaux car ce sont les horaires qui correspondent au dicton du tableau. La seule autre ligne à changer se situe autour de la ligne 520.

if (i >= 43) { // fin de séquence

La valeur de i ici devrait être définie sur le nombre de dictons dans la table chatSayings.

Pour créer des dictons entièrement personnalisés (où le vrai plaisir commence !), vous devez configurer les expressions dans des fichiers numérotés et connaître la durée nécessaire pour lire le fichier. Enregistrez le fichier dans le dossier « mp3 » du répertoire racine de la carte SD en utilisant la méthode à quatre chiffres (« 0001 », « 0002 », etc.). Ensuite, enregistrez le temps en millisecondes nécessaire à la lecture de ce fichier. Insérez ces valeurs dans le tableau approprié.

Ainsi, pour une expression enregistrée sous le nom "0037 - [votre expression]", qui prend 5400 millisecondes à jouer, vous devez mettre "37" dans la table chatSayings à l'emplacement approprié (et ajouter le préfixe en fonction de la tourelle qui dit it) et 5400 dans la table NormaTimings au même emplacement (comme le 5e élément de chaque table).

Maintenant, lorsque la valeur de « i » est incrémentée, le code jouera 0037 pendant 5 400 millisecondes.

Notez que j'ai ajouté une variable "timeadder" qui ajoute un peu de temps supplémentaire à chaque dicton lors de la lecture. Cela donne une petite distance entre les dictons afin qu'ils ne semblent pas se chevaucher.

La beauté de cette méthode est que les tables complétées sont exactement les mêmes dans chaque tourelle ! Pas besoin de personnaliser ces tables pour chaque tourelle. Vous n'avez besoin de trier qu'une seule table et le code détermine ce que chaque tourelle dit en fonction de la même table.

Cela signifie que vous pouvez vous concentrer sur l'écriture de scripts au lieu de coder !

Si quelqu'un a une meilleure façon de le faire, je serais ravi de l'entendre !!

Étape 9: Résumé

Sommaire
Sommaire

Cela a donc pris plus de temps que je ne le pensais, mais je suis plutôt chatouillé par le résultat. Certaines routines de Chat me font encore rire !

J'aimerais entendre d'autres méthodes pour faire les choses que j'ai faites dans mon code. Je suis sûr qu'il y a des sections qui pourraient être réécrites et utiliser moins de mémoire, permettant plus de fonctionnalités ou d'options.

J'aimerais aussi voir d'autres idées incorporées dans le MTC et le contrôle des tourelles !

J'espère avoir fourni une plate-forme à d'autres concepteurs et codeurs à utiliser / voler / apprendre. Je pouvais voir que cela était utilisé pour aider les gens à apprendre à coder. Supprimez une section du MTC et/ou de la tourelle, comme le « mode manuel » par exemple, et amenez les élèves à développer leur propre façon d'intégrer le contrôle manuel !

J'ai beaucoup appris de cette communauté et du Web en général. Je suis toujours étonné du nombre de personnes qui passent du temps à comprendre les choses et à les partager avec le monde. Je pense que je devrais prendre ce que j'ai appris, l'appliquer, puis le partager avec vous aussi !

Bonne chance et amusez-vous à construire votre propre armée de tourelles !

Conseillé: