MESFAVORISITES .COM

 

Robot Arduino + Module d'enregistrement vocal ISD



Principe de fonctionnement: Ce module d'enregistrement Multi messages utilise une puce ISD 1760. Il peut fonctionner de façon autonome commandé depuis un clavier à 6 boutons, (avec lecture, enregistrement, effacement, ...) ou être piloté par un micro contrôleur SPI comme une carte Arduino. Il comporte un microphone incorporé et un entrée analogique.

Module- d`enregistrement- vocal- ISD-
Caractéristiques techniques
  •  
  •  
  • Le taux d'échantillonnage de la puce est ajustable de 4 kHz à 12 kHz.
  • La durée d'enregistrement varie de 75 secondes à 6 kHz, 60 secondes à 8 kHz.
  • Fréquence de travail 6 et 8 kHz.
  • Microphone incorporé avec AGC (Automatic Gain Control).
  • Alimentation entre 2.4 à 5.5 V DC (compatible Arduino).
  • LED témoin de nouvel enregistrement (voice alert).
  • Bip sonores (4) personnalisables pour indiquer début, arrêt d'enregistrement, effacement simple ou total.
  • Mémoire flash sans compression pour une bonne qualité sonore et sans consommation quand le module est éteint.
  • Multi segments, peut mémoriser plusieurs sons ou messages.
  • Extinction automatique pour réduire la consommation électrique.
  • Sortie sur haut-parleur, et une voie analogique séparée.
  • Durée de mémorisation flash 100 ans, 100 000 cycles d'enregistrements.
  •  
circuit- robot-carte-Arduino
Pour lire en boucle il suffit de shunter le bouton play.
LISTE DES COMPOSANTS POUR CONSTRUIRE UN PREMIER ROBOT

plaque d'essais prototype 830 points -- breadboard PCB arduino -
ici
CAPTEUR IR GP2Y0A21YK0F SUR Ebay ici
Module d'enregistrement vocal ISD ici
L293D - Pilote moteur 4 canaux - Double Pont-H -ICI
Carte Arduino +USB Câble ICI
Robot Car Chassis Kit/Speed For Arduino ici
Servomoteur ici
Jumper Câble Arduino Male Breadboard Fil Wire Souder Circuit Imprimé ici
Logiciel Arduino ici / Windows 

Le code Arduino du montage
 
#include <Servo.h>                                  //includes the servo library

int motor_pin1 = 4;
int motor_pin2 = 5;
int motor_pin3 = 6;
int motor_pin4 = 7;
int servopin = 8;
int sensorpin = 0;
int dist = 0;
int leftdist = 0;
int rightdist = 0;
int object = 500;             //distance à laquelle le robot doit chercher une autre route                           

Servo myservo;

void setup ()
{
  pinMode(motor_pin1,OUTPUT);
  pinMode(motor_pin2,OUTPUT);
  pinMode(motor_pin3,OUTPUT);
  pinMode(motor_pin4,OUTPUT);
  myservo.attach(servopin);
  myservo.write(90);
  delay(700);
}
void loop()
{
  dist = analogRead(sensorpin);               //reads the sensor
 
  if(dist < object) {                         //si la distance est inférieure à 550
   forward();                                  //then move forward
  }
  if(dist >= object) {               //si la distance est supérieure ou égale à 550
    findroute();
  }
}
 
void forward() {                            // use combination which works for you
   digitalWrite(motor_pin1,HIGH);
   digitalWrite(motor_pin2,LOW);
   digitalWrite(motor_pin3,HIGH);
   digitalWrite(motor_pin4,LOW);
   return;
 }
 
void findroute() {
  halt();                                             // stop
  backward();                                       //go backwards
  lookleft();                                      //go to subroutine lookleft
  lookright();                                   //go to subroutine lookright
                                      
  if ( leftdist < rightdist )
  {
    turnleft();
  }
 else
 {
   turnright ();
 }
}

void backward() {
  digitalWrite(motor_pin1,LOW);
  digitalWrite(motor_pin2,HIGH);
  digitalWrite(motor_pin3,LOW);
  digitalWrite(motor_pin4,HIGH);
  delay(500);
  halt();
  return;
}

void halt () {
  digitalWrite(motor_pin1,LOW);
  digitalWrite(motor_pin2,LOW);
  digitalWrite(motor_pin3,LOW);
  digitalWrite(motor_pin4,LOW);
  delay(500);                          //wait after stopping
  return;
}
 
void lookleft() {
  myservo.write(150);
  delay(700);                                //wait for the servo to get there
  leftdist = analogRead(sensorpin);
  myservo.write(90);
  delay(700);                                 //wait for the servo to get there
  return;
}

void lookright () {
  myservo.write(30);
  delay(700);                           //wait for the servo to get there
  rightdist = analogRead(sensorpin);
  myservo.write(90);                                  
  delay(700);                        //wait for the servo to get there
  return;
}

void turnleft () {
  digitalWrite(motor_pin1,HIGH);       //use the combination which works for you
  digitalWrite(motor_pin2,LOW);      //right motor rotates forward and left motor backward
  digitalWrite(motor_pin3,LOW);
  digitalWrite(motor_pin4,HIGH);
  delay(1000);                     // wait for the robot to make the turn
  halt();
  return;
}

void turnright () {
  digitalWrite(motor_pin1,LOW);       //use the combination which works for you
  digitalWrite(motor_pin2,HIGH);    //left motor rotates forward and right motor backward
  digitalWrite(motor_pin3,HIGH);
  digitalWrite(motor_pin4,LOW);
  delay(1000);                              // wait for the robot to make the turn
  halt();
  return;
}



 souce avec le cablage et le code Arduino
Module d'enregistrement vocal autonome
et pilotable Arduino.


TUTORIEL

http://tiptopboards.free.fr/arduino_forum/viewtopic.php?f=2&t=46


 

LE BLOG