Table des matières:

Servocommande sans fil : 6 étapes
Servocommande sans fil : 6 étapes

Vidéo: Servocommande sans fil : 6 étapes

Vidéo: Servocommande sans fil : 6 étapes
Vidéo: Le Servomoteur Expliqué 2024, Novembre
Anonim
Servocommande sans fil
Servocommande sans fil
Servocommande sans fil
Servocommande sans fil

Ce projet contrôle la rotation d'un servo sans fil au moyen d'un potentiomètre (bouton). La rotation est limitée à 180 degrés.

Étape 1: Composants

Composants
Composants
Composants
Composants
Composants
Composants

Ce projet consiste en

  • 2 cartes contrôleurs Arduino UNO avec câble de connexion USB
  • 2 modules émetteurs-récepteurs RF nRF24L01 - 2,4 GHz (pour obtenir de l'aide sur ces modules, reportez-vous à
  • 2 cartes adaptateurs de socket (puces de sac à dos) pour le nRF24L01
  • 1 carte d'extension de prototype ProtoShield 328 compatible Arduino en option
  • 1 servomoteur
  • 1 potentiomètre analogique
  • fer à souder et soudure
  • câble
  • pince à bec effilé
  • pellicule isolante, j'ai utilisé du ruban électrique

Étape 2: Carte serveur

Carte serveur
Carte serveur

La carte serveur se compose d'un module émetteur-récepteur, de la carte de blindage (qui se connecte directement à la carte Arduino dans un seul sens) et du servo. J'ai décidé d'inclure la planche de blindage pour éviter la planche à pain maladroite et donner au projet une finition globale plus soignée.

Le code et la ressource Web inclus dans la liste des composants détaillent les connexions du module émetteur-récepteur. J'ai décidé de souder les connexions au lieu d'utiliser des connexions temporaires comme dans les projets précédents. Comme je suis débutant, j'ai isolé chaque joint de soudure avec du ruban électrique (ils n'étaient pas jolis).

Les broches de la carte de blindage correspondent directement aux broches Arduino. Avant de fixer la carte de blindage, j'ai connecté la terre et les broches de 5 volts aux rails de la carte avec du fil et de la soudure. J'ai également soudé les fils de 5 volts et de terre des composants aux rails de la carte de blindage, puis j'ai finalement attaché l'Arduino à la carte de blindage.

Le servo est attaché à la broche 3 volts pour l'alimentation et à la broche numérique 2 pour la communication.

** Remarque: ce n'est qu'après avoir terminé cette construction que j'ai remarqué que mes cartes Arduino ne sont pas identiques. Mon émetteur-récepteur de serveur est alimenté par le rail 5 volts sur la carte de blindage, tandis que l'émetteur-récepteur client est alimenté par la broche 3 volts, bien que j'aie été amené à croire qu'une fonction de la puce de l'adaptateur sur l'émetteur-récepteur est de fournir la tension appropriée. Tout ce que je peux dire avec certitude, c'est que le code fourni correspond à la configuration montrée dans les images produit l'effet décrit.

Étape 3: Codeur de serveur: copier et coller

//CODE SERVEUR/* NRF24L01 Arduino CE > D8 CSN > D10 SCK > D13 MO > D11 MI > D12 RO > Non utilisé GND > GND VCC > 5V */ //câblage émetteur-récepteur

#comprendre

// bibliothèque d'asservissement

#comprendre

// bibliothèque d'émetteurs-récepteurs

#define Servopin 2

//déclaration broche de sortie servo

ServoTimer2;

//déclaration du nom du servo

RH_NRF24 nrf24;

//déclaration du nom de l'émetteur-récepteur

int timeOUT = 0;

//variable pour le servo

impulsions int = 90;

//variable pour stocker les impulsions

void setup()

{ serv.attach(Servopin); // trucs de servo

Serial.begin(9600); //truc de l'émetteur-récepteur

si (!nrf24.init())

Serial.println("échec de l'initialisation"); //truc de moniteur série if (!nrf24.setChannel(12)) //définir le canal sur 125 Serial.println("setChannel a échoué"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF a échoué"); //truc de moniteur série }

boucle vide()

{ if (nrf24.available()) { uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof(buf); if (nrf24.recv(buf, &len)) //truc de moniteur série { Serial.print("get request: "); pulses = strtol((const char*)buf, NULL, 10); // changement de type de données

int prin = map(impulsions, 750, 2250, 0, 180); // changement de type de données

Serial.println(prin); serv.write(impulsions); //fait bouger le servo } }

}

Étape 4: Conseil client

Conseil des clients
Conseil des clients

La carte client se compose d'un module émetteur-récepteur et du potentiomètre. Le module émetteur-récepteur est câblé de la même manière** que la carte serveur à l'exception du fait que sans la carte de blindage, il est câblé directement dans les broches de la carte Arduino.

Le potentiomètre prend 5v, masse, et est connecté à la broche analogique 2.

**Remarque: comme mentionné à l'étape de la carte serveur, mes cartes Arduino ne sont pas identiques. Dans ce cas, l'émetteur-récepteur est câblé à la broche étiquetée 3.3V, directement adjacente à la broche 5V, mais encore une fois, tout semble fonctionner correctement.

Étape 5: Code client: Copier et coller

//CODE CLIENT/* NRF24L01 Arduino CE > D8 CSN > D10 SCK > D13 MO > D11 MI > D12 RO > Non utilisé GND > GND VCC > 5V */ //câblage émetteur-récepteur

#comprendre

//bibliothèque d'émetteurs-récepteurs

int potpin = A2; //déclaration du potentiomètre

valeur int;

char tempChar[5];

Chaîne valString = ""; // changement de type de données

RH_NRF24 nrf24; //truc de l'émetteur-récepteur

void setup()

{ Serial.begin(9600); if (!nrf24.init()) Serial.println("l'initialisation a échoué"); // Les valeurs par défaut après l'initialisation sont 2,402 GHz (canal 2), 2 Mbps, 0 dBm if (!nrf24.setChannel(12)) Serial.println("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF a échoué"); } //truc de l'émetteur-récepteur

boucle vide() {

val = analogRead(potpin); // trucs de potentiomètre

val = carte(val, 0, 1023, 750, 2250);

chaîneval = val; Chaîne str = (valString); str.toCharArray(tempChar, 5); // changement de type de données nrf24.send(tempChar, sizeof(tempChar));

}

Étape 6: Une note sur le code:

Le code contient des fonctionnalités de dépannage limitées sous la forme de commentaires du moniteur série dans l'interface logicielle Arduino. Lors de la visualisation du moniteur série à partir du code SERVER (ctrl + shift + M), vous devriez pouvoir voir l'état du potentiomètre sous la forme d'un nombre compris entre 1 et 180.

Aussi, voici la bibliothèque pour le sans fil et le servo:

www.airspayce.com/mikem/arduino/RadioHead/

github.com/nabontra/ServoTimer2

Conseillé: