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

Drone de contrôle mental

Composants et fournitures

Arduino MKR1000
× 1
Micro Drone de course
× 1
Condensateur 100 µF
× 4
Résistance 221 ohm
× 4
Câbles de raccordement (générique)
× 12
Planche à pain (générique)
× 1
Mindwave Neurosky
× 1

Outils et machines nécessaires

Fer à souder (générique)
Tournevis Diligent

Applications et services en ligne

Traitement 3
Arduino IDE

À propos de ce projet

Contexte

Je trouve les drones fascinants, ces petites machines volantes qui peuvent tout faire. Quand j'ai eu l'opportunité de faire un projet avec une technologie cool, j'ai décidé de réaliser le rêve d'un garçon, en contrôlant un drone avec votre esprit.

Dans les recherches que j'ai faites pour ce projet, je n'ai trouvé aucun tutoriel expliquant comment pirater facilement un contrôleur de drone. La plupart des tutoriels disponibles expliquent comment créer votre propre drone à l'aide d'un Arduino ou comment pirater le protocole de transmission.

Ce tutoriel couvre le concept le plus basique du piratage d'un PCB pour le contrôler numériquement. Le but de ce tutoriel est de vous apprendre les concepts de base qui vous permettront d'expérimenter par vous-même avec un drone et de créer quelque chose d'amusant.

Avis

Vous pouvez potentiellement tuer votre drone ou le contrôleur et le rendre inutilisable.

Ce projet ne couvrira pas la façon de diriger votre drone uniquement au décollage et à l'atterrissage.

Vous n'avez pas nécessairement besoin d'un capteur MindWave / EEG, vous pouvez utiliser n'importe quelle entrée que vous voulez. Mais contrôler un drone avec votre esprit est une pure merveille !

Tutoriel vidéo

Compétences dont vous avez besoin

Ce didacticiel suppose que vous avez une certaine expérience de la soudure et du dessoudage.

Liste des pièces

  • Drone + manette
  • Station de soudure + accessoires (fil de cuivre tressé, pompe à dessouder, coup de main, fils à âme pleine, étain)
  • Multimètre
  • Capteur MindWave
  • Arduino MKR1000
  • Planche à pain
  • 4 condensateurs 100 uF
  • 4 résistances 220 
  • 12x fils de connexion
  • 6 fils de pince crocodile (facultatif)

Vous avez également besoin de 4 résistances dont la valeur de résistance n'est pas encore connue.

Phase 1 :Drone PCB

Vous pouvez utiliser presque n'importe quel drone que vous voulez. La plupart des contrôleurs fonctionnent avec des joysticks à deux axes. Ces joysticks que nous allons contourner.

Tout d'abord, ouvrez le boîtier de votre manette. Ce contrôleur utilise deux piles de 1,5 V qui sont d'environ 3,3 V. Cette valeur est la même que la sortie de l'Arduino MKR1000.

Il est possible d'utiliser un autre Arduino de votre choix, mais sachez que vous pouvez casser le circuit imprimé si vous lui donnez plus de tension que le PCB peut gérer. (Je parle d'expérience.)

Mesurez avec un multimètre quelles sont les tensions moyenne, haute et basse des manettes une fois alimentées. Notez-les pour une utilisation ultérieure.

Dessouder les composants du joystick du PCB.

En réalité, ces composants du joystick ne sont que des potentiomètres. Un potentiomètre est une résistance variable analogique. Vous pouvez mesurer la résistance maximale avec un multimètre. Connectez le multimètre au + et au - pour lire la résistance.

Souder (dans ce cas des résistances 10Ω) 4 résistances sur les trous des + et - des joysticks pour boucler le circuit.

De plus, soudez les fils à âme pleine aux ports + (B+ sur cette carte) et - (B- sur cette carte) sur le PCB. Et soudez des fils à âme pleine aux ports de signal des manettes de jeu.

Vous avez maintenant préparé votre contrôleur pour l'étape suivante.

Phase 2 :numérique vers analogique

Lorsque vous utilisez AnalogWrite avec votre Arduino, la sortie sera un signal PWM (Pulse Width Modulation). Le gain transformera sa propre valeur en HAUT et en BAS dans une fréquence déterminée.

Notre PCB préparé n'aime pas le PWM, il s'attend à une tension constante.

Pour créer une valeur analogique, nous pouvons utiliser une variété de convertisseurs numérique-analogique comme une puce DAC ou un filtre RF Ladder.

Pour cette raison, je veux garder ce projet aussi simple que possible, je vais vous apprendre à utiliser un filtre passe-bas, qui nous donnera le résultat souhaité.

Pour créer un filtre passe-bas, vous avez besoin d'un condensateur et d'une résistance.

L'une des caractéristiques d'un filtre passe-bas est que la tension analogique va changer progressivement (cela prend un certain temps). Ce circuit fonctionne mieux pour moi car il me donne le résultat souhaité et utilise peu de pièces.

Phase 3 :Le circuit Arduino

La partie principale de notre circuit est le filtre passe-bas que nous avons créé récemment. Faites-en quatre à la suite et nous avons une tension analogique pour les quatre entrées du contrôleur.

Connectez les bonnes sorties aux bonnes entrées sur le PCB du contrôleur. Assurez-vous de l'avoir correctement obtenu avant de télécharger l'Arduino Sketch.

La disposition standard du drone est la suivante :

  • Throttle => haut/bas sur le côté gauche du contrôleur
  • Yaw => gauche / droite sur le côté gauche du contrôleur
  • Pitch => haut/bas sur le côté droit de la manette
  • Roll => gauche / droite sur le côté droit du contrôleur

Une fois que tout est connecté, vous pouvez télécharger votre croquis sur votre Arduino MKR1000. Vous pouvez trouver le croquis au bas de ce tutoriel.

L'Arduino remplacera les piles et pourra envoyer des signaux (sous forme de tensions) aux joysticks contournés. À ce moment, vous pouvez créer vos propres programmes et expériences pour contrôler le drone avec PWM.

Je vais maintenant vous montrer comment utiliser Processing et un capteur MindWave pour décoller le drone.

Phase 4 :Contrôle mental

Installez tous les pilotes sur votre ordinateur. Ce capteur MindWave est livré avec un CD.

Associez le capteur MindWave à votre ordinateur avec Bluetooth. Maintenez le bouton enfoncé pendant 3 secondes et le voyant bleu clignotera deux fois, il est maintenant détectable.

Une fois connecté, vous commencez le traitement.

Installez la bibliothèque MindSet créée par Jorge C. S Cardoso pour le traitement à partir de http://jorgecardoso.eu/processing/MindSetProcessing/#download

Décompressez la bibliothèque dans votre dossier bibliothèques. Vous pouvez trouver le dossier des bibliothèques dans votre dossier de traitement.

Assurez-vous que vos ports com sont corrects dans la configuration, ou vous vous retrouverez avec une erreur. Vous pouvez trouver les ports com dans votre gestionnaire de périphériques.

Vous pouvez également trouver le port com de l'Arduino sous "Outils" dans l'IDE Arduino sous "Port"

Vous pouvez également trouver le port com du capteur MindWave dans les préférences du connecteur ThinkGear (vous obtenez ce programme lorsque vous installez les pilotes) sous "Options"

receiver =new Serial(this, "COM10", 115200); mindSet =new MindSet(this, "COM5"); 

Le traitement communique avec votre Arduino via Serial. Vous pouvez modifier le code de traitement à votre guise, lire les commentaires dans le croquis pour comprendre ce qui se passe.

Exécutez votre esquisse de traitement et concentrez-vous sur votre drone. Lorsque votre niveau de concentration dépasse 40%, le drone décolle. Plus vous vous concentrez, plus le drone sera agressif. Vous pouvez faire atterrir le drone en laissant votre esprit vagabonder et en arrêtant de vous concentrer.

Conclusion

J'espère que ce tutoriel vous a donné un aperçu de la simplicité avec laquelle il peut être de pirater un contrôleur de drone (ou n'importe quel PCB) et de lui donner une autre entrée. Vous pouvez découvrir avec l'expérimentation comment obtenir d'autres entrées à contrôler et comment effectuer d'autres mouvements en plus du décollage et de l'atterrissage.

J'ai hâte de voir les trucs sympas que vous allez faire !

Code

  • Maître de traitement
  • Contrôle des drones
Maître de traitementTraitement
Se connecte au capteur MindWave via Bluetooth Serial et envoie la valeur d'attention sous forme d'entier de 8 bits au contrôleur
/* * Drone Mind Control * * Cette esquisse envoie des valeurs de série à un récepteur récepteur * * L'entrée est générée via un Neurosky MindSet Mobile casque * * Créé le 21 mars 2018 * Par Wesley Hartogs * Communication et conception multimédia * Avans University of Applied Sciences * * */// importer Serial libaryimport processing.serial.*;// Définir le récepteur SerialSerial receiver;// Importer MindSet libaryimport pt.citar.diablu.processing.mindset.*;MindSet mindSet;// Définir les valeurs initiales init gaz =0;int lacet =127;int pitch =127;int roll =127;void setup() { size(150, 500 ); // Initier la communication série au récepteur COM10 =new Serial(this, "COM10", 115200); // Initier la communication MindSet // Le MindSet utilise la communication série Bluetooth, // Vérifiez le COM-pot dans le connecteur ThinkGear dans votre gestionnaire de périphériques mindSet =new MindSet(this, "COM5"); // Activer l'anticrénelage smooth(); // Définir les propriétés du trait strokeWeight(5); course(255); strokeCap(SQUARE); // Définir le remplissage de la couleur de la ligne (255); } // setup()void draw(){ // Commence avec un fond noir background(0) ; // Trace une ligne horizontale à 40 % du bas // Cette ligne indique la ligne d'attention minimale (40 %) requise (0, hauteur*0.60, largeur, hauteur*.60); // Tracez une ligne du centre horizontal vers le haut // Cette ligne donne une indication de votre attention // La hauteur est mappée à l'envers pour obtenir un pourcentage à partir du haut // Exemple :par 40 % (0,4) attention la valeur de la hauteur est ( 100 - 40) 60% (0,6) à partir de la ligne du haut( width*.5, height, width*.5, height*map( float( attentionLevel ) / 100, 0, 1, 1, 0 ) ); // Pousser le niveau d'attention vers la variable d'accélérateur // 40 =attention minimale nécessaire pour faire quelque chose // 100 =attention maximale // 30 =valeur minimale de 8 bits pour Arduino // 255 =valeur maximale de 8 bits pour Arduino accélérateur =int( map( attentionLevel, 40, 100, 30, 255 ) ); // Contraindre les valeurs à des valeurs de 8 bits pour éviter les erreurs. étranglement =contrainte( étranglement, 0, 255); pas =contrainte( pas, 0, 255); roll =contraindre( roll, 0, 255); lacet =contraindre( lacet, 0, 255); // Lorsqu'une communication est possible, envoyez les valeurs au récepteur Arduino if ( receiver .available()> 0) { println( "attentionLevel:"+attentionLevel+" accélérateur:"+throttle+" lacet:"+yaw+" pitch:"+ pitch+" roll:"+roll ); receiver .write( "accélérateur:"+accélérateur+" lacet:"+yaw+" pitch:"+pitch+" roll:"+roll ); } } // draw()// Killswitch, appuyez sur K pour réinitialiser et fermer le programvoid keyPressed() { if (key =='k' || key ==ESC) { if ( receiver .available()> 0) { récepteur .write("accélérateur :"+0+" lacet :"+127+" tangage :"+127+" roulis :"+127); sortir(); } }}// Variables et fonctions MindSetint signalStrenght =0;int attentionLevel =0;public void attentionEvent( int attentionLevel_val ) { attentionLevel =attentionLevel_val;}// Cette fonction est activée lorsque la connexion avec le MindSet n'est pas optimalepublic void poorSignalEvent( int signalNoise ) { // MindSet s'ajuste if ( signalNoise ==200 ) { println( "Mindset ne touche pas votre peau!" ); } // Mapper la force du signal à un pourcentage signalStrenght =int( map( ( 200-signalNoise ), 200, 0, 100, 0 ) ); println( "Force du signal :" + Force du signal + "%" );}
Contrôle des dronesArduino
son sketch reçoit des valeurs d'entrée série (du traitement) et envoie ces valeurs au contrôleur piraté.
/* * Contrôle du drone * * Ce sketch reçoit des valeurs d'entrée série (du traitement) et envoie ces valeurs au contrôleur piraté. * Utilisez ce programme uniquement avec l'Arduino MKR1000 (ou un autre Arduino basé sur une sortie 3,3 volts) * * Le circuit :* - 4 filtres passe-bas avec des condensateurs de 100 µF et des résistances de 220Ω * - Contrôleur de drone piraté * * Créé le 21 mars 2018 * Par Wesley Hartogs * Communication et conception multimédia * Université des sciences appliquées d'Avans * * Utilisez ce croquis à vos risques et périls. * */// Définir les valeurs initiales int accélérateur =0;int lacet =255/2; // 3.3v/2int pitch =255/2; // 3.3v/2int roll =255/2; // 3.3v / 2int étrangleurPin =2; // PWMint yawPin =3; // PWMint pitchPin =4; // PWMint rollPin =5; // PWMvoid setup() { // Commencer la communication série à 115200 baud Serial.begin( 115200 ); // Définir pinModes pinMode( étrangleurPin, OUTPUT ); pinMode( yawPin, SORTIE ); pinMode( pitchPin, OUTPUT ); pinMode( rollPin, OUTPUT );}void loop() { // Lorsqu'une connexion série est disponible, récupère les valeurs if ( Serial.available()> 0 ) { étranglement =Serial.parseInt(); // Stocke la première valeur entière du tampon série lacet =Serial.parseInt(); // Stocke la deuxième valeur entière de Serial buffer pitch =Serial.parseInt(); // Stocke la troisième valeur entière de Serial buffer roll =Serial.parseInt(); // Stockez la quatrième valeur entière du tampon série } // Écrivez les valeurs sur le contrôleur de drone // Utilisez un filtre passe-bas ou un DAC (convertisseur numérique-analogique) pour convertir PWM en une tension analogique analogWrite(throttlePin, accélérateur); analogWrite( yawPin, lacet ); analogWrite( pitchPin, pitch ); analogWrite( rollPin, roll );}

Schémas

Convertir le signal PWM en tension analogique Circuit pour câbler Arduino MK1000 au contrôleur piraté

Processus de fabrication

  1. Détecteur de langage TinyML basé sur Edge Impulse et Arduino
  2. Jeu de gyroscope Arduino avec MPU-6050
  3. Dés numériques Arduino
  4. Jeu de roulette DIY 37 LED
  5. Mini arcade ATtiny85 :Serpent
  6. Détecteur de portée portable
  7. Contrôle de l'humidificateur Arduino
  8. bot de préhension de la télécommande
  9. La galvanoplastie avec du cuivre