التحكم فى روبوط عن طريق الهاتف

الهدف 
الهدف من هذا المشروع هوا  إنجاز روبوط و التحكم فيه عن طرق الهاتف الذكى


Corps du robot

Le robot se compose de quatre parties, découpées dans du carton. Ce torse, la tête et les deux mains. Toutes les pièces sont coupées avec un couteau. Les détails peuvent être collés ensemble à l'aide d'un pistolet à colle en plastique pour chauffer. Pour installer les servos sur le corps, il est nécessaire de percer des trous rectangulaires. Pour installer le servo dans les trous en utilisant la même colle plastique. Sur la tête et les mains du robot, où l'arbre du servo se connecte au bras du servo qui sont collés au corps de l'intérieur au moyen de la même colle plastique. Nous ne donnerons pas les dimensions et les dessins exacts, vous ne devriez pas être difficile de répéter la conception.


A la tête du robot, découpez les deux trous dans lesquels s'insèrent les deux LED. Ce sera l'œil. Les yeux seront également clairs à distance.





Schéma électrique


Pour un fonctionnement stable du robot, les servo variateurs doivent être alimentés par une autre
 alimentation 5V. Le régulateur de tension Arduino ne peut pas fournir l'ampérage requis pour les trois servos. Les séries avec les LED doivent activer la résistance 680 ohms






Interface de contrôle

Ouvrez les interfaces de l'éditeur du site RemoteXY.com et créez une interface de gestion, illustrée dans l'image ci-dessous. Les interfaces sont incluses le curseur droit et gauche vers la main droite et gauche et pour faire pivoter le curseur de la tête. Réglez deux boutons pour contrôler les yeux. Et réglez l'interrupteur. Nous l'utiliserons pour démarrer le clignotement automatique des yeux.



Renommez les curseurs, appelez-les respectivement slider_left, slider_right et slider_head. Et renommez les boutons. Appelez-les respectivement button_left et button_right.


Étant donné que notre projet implique l'utilisation de la bibliothèque servo.h, sélectionnez les paramètres du projet, le code source de génération pour Arduino (série), version de la bibliothèque. La bibliothèque servo.h entre en conflit avec la bibliothèque SoftwareSerial.h, à ce sujet ne l'utilisera pas.


Générez et téléchargez le code source du projet une interface graphique sur votre ordinateur. N'oubliez pas de télécharger et d'installer la bibliothèque RemoteXY pour l'IDE Arduino. Compilez et téléchargez le croquis sur la carte Arduino. À l'aide de l'application mobile RemoteXY, vérifiez que votre smartphone peut se connecter à votre nouveau projet. N'oubliez pas que le module Bluetooth doit être connecté au matériel du port série aux broches 0 (RX) et 1 (TX). Si votre smartphone est connecté avec succès, continuez.

Programme de contrôle



///////////////////////////////////////////// 
//        RemoteXY include library         // 
///////////////////////////////////////////// 

/* RemoteXY select connection mode and include library */ 
#define REMOTEXY_MODE__SERIAL 
#include <RemoteXY.h> 

/* RemoteXY connection settings */ 
#define REMOTEXY_SERIAL Serial 
#define REMOTEXY_SERIAL_SPEED 9600 

/* RemoteXY configurate  */ 
unsigned char RemoteXY_CONF[] = 
  { 6,0,79,0,1,5,4,0,5,7
  ,11,56,2,4,0,84,7,11,56,2
  ,4,128,20,13,60,11,2,129,0,26
  ,3,49,6,0,208,161,97,114,100,98
  ,111,97,114,100,32,82,111,98,111,116
  ,0,1,0,25,29,16,16,1,76,0
  ,1,0,60,29,16,16,1,82,0,2
  ,0,38,51,24,10,2,79,78,0,79
  ,70,70,0 }; 
   
/* this structure defines all the variables of your control interface */ 
struct { 

    /* input variable */
  unsigned char slider_left; /* =0..100 slider position */
  unsigned char slider_right; /* =0..100 slider position */
  unsigned char slider_head; /* =0..100 slider position */
  unsigned char button_left; /* =1 if button pressed, else =0 */
  unsigned char button_right; /* =1 if button pressed, else =0 */
  unsigned char switch_1; /* =1 if switch ON and =0 if OFF */

    /* other variable */
  unsigned char connect_flag;  /* =1 if wire connected, else =0 */

} RemoteXY; 

///////////////////////////////////////////// 
//           END RemoteXY include          // 
///////////////////////////////////////////// 

#include <Servo.h> 

#define PIN_LED_LEFT 6
#define PIN_LED_RIGHT 7

#define PIN_LEFT_SERVO 8
#define PIN_RIGHT_SERVO 9
#define PIN_HEAD_SERVO 10

Servo left_servo;
Servo right_servo;
Servo head_servo;

unsigned char led_state = 0;
unsigned long led_time=0;
unsigned long prev_time=0;


void setup()  

  RemoteXY_Init ();  
   
  // TODO you setup code 
  
  pinMode (PIN_LED_LEFT, OUTPUT);
  pinMode (PIN_LED_RIGHT, OUTPUT);
  
  left_servo.attach(PIN_LEFT_SERVO);
  right_servo.attach(PIN_RIGHT_SERVO);
  head_servo.attach(PIN_HEAD_SERVO);

  RemoteXY.slider_left=50;
  RemoteXY.slider_right=50;
  RemoteXY.slider_head=50;
   


void loop()  
{  
  RemoteXY_Handler (); 
   
  // TODO you loop code 
  // use the RemoteXY structure for data transfer 
  unsigned long time = millis();
  unsigned long d_time = time - prev_time;
  prev_time = time;
  
  
  if (RemoteXY.switch_1==0) {
    digitalWrite(PIN_LED_LEFT, (RemoteXY.button_left==0)?LOW:HIGH);
    digitalWrite(PIN_LED_RIGHT, (RemoteXY.button_right==0)?LOW:HIGH);
  }
  else {
    led_time+=d_time;
    if (led_time>500) {
      if (led_state==0) led_state=1;
      else  led_state=0;
      led_time-=500;
    }
    digitalWrite(PIN_LED_LEFT, (led_state==0)?LOW:HIGH);
    digitalWrite(PIN_LED_RIGHT, (led_state==1)?LOW:HIGH);    
  }

  left_servo.writeMicroseconds(RemoteXY.slider_left*20+500); 
  right_servo.writeMicroseconds(2500-RemoteXY.slider_right*20); 
  head_servo.writeMicroseconds(RemoteXY.slider_head*20+500); 

}













تعليقات

المشاركات الشائعة من هذه المدونة