ESTUCTURA FINAL (Modulo MP3, Sensor de Color,
Sensor de Distancia y Motores DC)
OBJETIVO:
Determinar,
realizar la cuarta entrega de nuestro prototipo la misma que se basa
en la implementación del módulo mp3 para simular la reproducción de
sonido desde nuestro prototipo.
DESARROLLO:
El módulo mp3 o
también conocido como DFPlayer Mini es un
módulo de coste pequeño
con una producción simplificada directamente al altavoz. El módulo
puede ser utilizado como un módulo independiente con la batería,
altavoces y botones pulsadores conectados o utilizado en combinación
con un Arduino UNO
o cualquier otro con capacidades de RX/ TX utilizados
para la transmición y recepción.
Se
integra perfectamente módulo de decodificación duro, que es
compatible con los formatos de audio comunes, tales como MP3 y
WAV. Además, también soporta tarjeta formateadas
con el sistema de archivos FAT16, FAT32.
Esto es en cuanto puedo compartir de información estimados lectores, sobre el funcionamiento del modulo mp3, ya que existe mucho informacion en internet, ya depende de nuestra lógica y la funcionalidad que le demos a nuestro robot.
MATERIALES
1. Placa Arduino Mega El MEGA 2560 está diseñado para los proyectos más complejos. Con 54 E / S pines, 16 entradas analógicas y un espacio más grande para su boceto es la junta recomendado para las impresoras 3D y proyectos de robótica. Esto le da a sus proyectos con mucho espacio y oportunidades
2. Placa L298N
En esta entrada describo una placa controladora de 4 motores de Corriente Continua (CC). La cual usa 4 puentes H integrados en dos "chips" L298N".
3. Motores DC
El motor de corriente continua es una máquina que convierte la energía eléctrica en mecánica, provocando un movimiento rotatorio, gracias a la acción que se genera del campo magnético
4. Sensor de Distancia
Un sensor de proximidad es un transductor que detecta objetos o señales que se encuentran cerca del elemento sensor.
5. Sensor de Color
Este sensor esta basado en el TCS3200. Es un convertidor de luz a frecuencia programable, puede filtrar los datos RGB de la fuente de luz y convertirlo en una onda cuadrada
6. Modulo Mp3
El Mini Player es un módulo de coste muy pequeño con una produccion simplificada directamente del altavos
ESQUEMA DE CONEXIÓN:
CÓDIGO:
//PROGRAMA PARA EL FUNCIONAMIENTO DE PROTITPO JUNTO
//(MOTORES DC, SENSORES DE DISTANCIA, SENSOR DE COLOR, MODULO MP3
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>
int trigger = 21;
int echo = 20;
//Motor Izquierdo
int ENA = 8;
int IN1 = 9;
int IN2 = 10;
//Motor Derecho
int ENB = 13;
int IN3 = 11;
int IN4 = 12;
int estado = 0;
int cont = 0;
int direccion;
int giros;
int sonido=0;
int colores=0;
////////////////////////////////////////////////////
//Variables del sensor de color
const int s0 = 22;
const int s1 = 23;
const int s2 = 24;
const int s3 = 25;
const int out = 26;
// Variables de los led rojo verde y azul
int redLed = 2;
int greenLed =3;
int blueLed = 4;
// Variables
int red = 0;
int green = 0;
int blue = 0;
////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
mp3_set_serial (Serial);
delay(1);
mp3_set_volume (50);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
randomSeed(analogRead(0));
apagar();
delay(2000);
//////////////////////////////////////////////
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
pinMode(out, INPUT);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(blueLed, OUTPUT);
digitalWrite(s0, HIGH);
digitalWrite(s1, HIGH);
//////////////////////////////////////////////
mp3_play(8);
}
void loop() {
digitalWrite(trigger, LOW);
delayMicroseconds(5);
// Comienzo de la medida
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);
// Adquisición y conversión a centímetros
float distancia = pulseIn(echo, HIGH);
distancia = distancia * 0.01657;
if ((distancia >= 15) && (distancia <= 40)) {
estado = 0;
}
else if (distancia > 10.0) {
estado = 1;
}
else {
estado = 2;
}
switch (estado) {
case 0:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, 200);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENB, 200);
break;
case 1:
avanzarA();
avanzarB();
break;
case 2:
direccion = random(2);
if (direccion == 0) {
retroDerecha();
}else {
retroIzquierda();
}
break;
}
}
void avanzarA() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, 255);}
void avanzarB() {
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENB, 255);}
void retroDerecha() {
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENA,255);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,255);
delay(150);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, 255);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite(ENB, 255);
delay(300);
cont++;
//giros=random(5);
Serial.println(cont);
if (cont == 10){
apagarTodo();}}
void retroIzquierda(){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(ENA,255);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(ENB,255);
delay(150);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, 255);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENB, 255);
delay(300);
cont++;
//giros=random(5);
Serial.println(cont);
if (cont == 10){
apagarTodo();
}}
void apagar() {
analogWrite(ENA, 0);
analogWrite(ENB, 0);
delay(100);}
void apagarTodo() {
cont=0;
analogWrite(ENA, 0);
analogWrite(ENB, 0);
mp3_play(0);
delay(2000);
sonido=random(1,4);
mp3_play (sonido);
delay(2000);
int sensorColor = 0;
while (sensorColor != 1) {
color();
Serial.print("R Intensity:");
Serial.print(red, DEC);
Serial.print(" G Intensity: ");
Serial.print(green, DEC);
Serial.print(" B Intensity : ");
Serial.print(blue, DEC);
Serial.println();
delay(100);
if (red < blue && green > red && red < 20) {
//Serial.println(" - (Red Color)");
digitalWrite(redLed, HIGH);
// Turn RED LED ON
delay(3000);
digitalWrite(greenLed, LOW);
digitalWrite(blueLed, LOW);
Serial.println("Se ha detectado el color rojo");
sensorColor = 1;
colores=1;
}
else if (green < red && green < blue) {
//Serial.println(" - (Green Color)");
digitalWrite(redLed, LOW);
digitalWrite(greenLed, HIGH);
// Turn GREEN LED ON
delay(3000);
digitalWrite(blueLed, LOW);
Serial.println("Se ha detectado el color verde");
sensorColor = 1;
colores=2;
}
else if (blue > red && blue > green) {
//Serial.println(" - (Blue Color)");
digitalWrite(redLed, LOW);
digitalWrite(greenLed, LOW);
digitalWrite(blueLed, HIGH);
delay(3000);
Serial.println("Se ha detectado el color azul");
colores=3;
sensorColor = 1;}
digitalWrite(redLed, LOW);
digitalWrite(greenLed, LOW);
digitalWrite(blueLed, LOW);}
//función declarada para el reconocimiento de color
if (colores==sonido){
mp3_play(7);
delay(4000);
mp3_play (4);
delay (3000);
mp3_play(8);
}
else{
mp3_play (6);
delay (3500);
mp3_play (5);
delay (3000);
mp3_play(8);
}
}
void color() {
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
//count OUT, pRed, RED
red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s3, HIGH);
//count OUT, pBLUE, BLUE
blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s2, HIGH);
//count OUT, pGreen, GREEN
green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
}
Excelente Carmita, vamos muy bien
ResponderBorrar