Carro modulos bluetooth

Este proyecto se basa en el desarrollo de un carro controlado a distancia por medio de comunicación serial, la cual se va a hacer por medio de dos módulos xbee, que se van a encargar de la interfaz inálambirca, sirviendo como uno como transmisor que se encarga de enviar todos los datos adquiridos por el microcontrolador, el cual se encarga de leer un joystick que esta conectado a las 2 entradas del adc. por otro lado se encuentra el circuito receptor que por medio del modulo xbee se va a encargar de decodificar la información enviada por el circuito transmisor, esta información es la que se encarga de darle movimiento y dirección.

OBJETIVO PRINCIPAL

Diseñar y construir un carro utilizando módulos bluetooth para controlar su posición y dirección

OBJETIVOS ESPECIFICOS

Implementar los sistemas de comunicación serial entre módulos bluetooth
Diseñar el algoritmo y la programación del micro controlador para comunicar los módulos
Construir el prototipo del carro incorporando módulos bluetooth.
Realizar pruebas sobre el prototipo implementado un entorno controlado.

DESCRIPCIÓN

El proyecto se basa en la comunicación serial entre dos circuitos por medio de dos módulos bleutooth donde un circuito funciona como transmisor y el otro como receptor.
En el circuito transmisor se encuentran dos potenciómetros, los cuales están encargados de la dirección y posición
El circuito receptor se encarga de decodificar la información enviada para controlar dos motores

ALCANCE
El desarrollo del proyecto permitirá poner en practica los
conocimientos adquiridos sobre microcontroladores Atmega 16
incluida la programación a través del uso especifico del sofware
Avr studio 16

LIMITACIONES

El proyecto tiene la limitación sobre la construcción de un carro al
cual solamente se le puede ordenar dirección y posición a una
distancia de 2 metros . Otros conocimientos que serán adquiridos
durante la carrera permitirán a futuro complementar la
funcionalidad del proyecto por ejemplo la inclusión de pito, luces
apertura de puertas y uso a control remoto a mayor distancia.

PROYECTO ESCLAVO

/*
 * proyecto_esclavo.c
 *
 * Created: 09/05/2015 06:09:20 p.m.
 *  Author: JULIAN
 */ 
 
#define F_CPU 1000000L
#define BAUD 9600
#include <avr/io.h>
#include <avr/interrupt.h>
#include <math.h>
#include <util/setbaud.h>
#include <lcd.h>
float voltage,vol,cifra1,cifra2,cifra21,cifra3,cifra31,cifra4,cifra41;
void usar_init (void)
{
    UBRRL =UBRRL_VALUE;                //calcula el baudrate con la libreria setbaud a 9600
    UBRRH =UBRRH_VALUE;                //calcula el baudrate con la lubreria setbaud a 9600
    UCSRB =(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);        //se habilita la recepcion y la transmicion
    UCSRC =(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);            //registro de seleccion, con 1 se escribe en ucsrc, 8 bits de caracter
}
void envio_dato (char dato)
{
    while (!(UCSRA & (1<<UDRE)));
    UDR=dato;
}
char recibe_dato (void)
{
    while(!(UCSRA & (1<<RXC)));
    return UDR;
}
char informa_si_recibe (void)
{
    return (UCSRA & (1<<RXC));
}
int main(void)
{
    LCD_init();
    usar_init();
    sei();
    while(1)
    {
        //TODO:: Please write your application code 
    }
}
ISR(USART_RXC_vect)
{
    voltage=UDR*0.01961;
    for (int i=0;i<=50;i=i+10)                //convercion de la primera cifra despues del .
    {
        vol=voltage*10;
        vol=vol-i;
        if (vol<=10)
        {
            cifra1=vol;
            i=51;
 
        }
    }
    for (int i=0;i<100;i=i+10)                // convercion de la segunda cifra .
    {
        cifra2=cifra1*10;
        cifra2=cifra2-i;
        if (cifra2<=10)
        {
            cifra21=cifra2;
            i=100;
        }
    }
    for (int i=0;i<100;i=i+10)                // convercion de la tercera cifra .
    {
        cifra3=cifra2*10;
        cifra3=cifra3-i;
        if (cifra3<=10)
        {
            cifra31=cifra3;
            i=100;
        }
    }
    for (int i=0;i<100;i=i+10)                // convercion de la cuarta cifra
    {
        cifra4=cifra3*10;
        cifra4=cifra4-i;
        if (cifra4<=10)
        {
            cifra41=cifra4;
            i=100;
        }
    }
 
    LCD_wait();
    LCD_command(0x80);
    LCD_wait();
    LCD_putchar('V');
    LCD_wait();
    LCD_putchar('=');
    LCD_wait();
    LCD_putchar(voltage+48);
    LCD_wait();
    LCD_putchar(',');
    LCD_wait();
    LCD_putchar(cifra1+48);
    LCD_wait();
    LCD_putchar(cifra21+48);
    LCD_wait();
    LCD_putchar(cifra31+48);
    LCD_wait();
    LCD_putchar(cifra41+48);
}

PROYECTO MAESTRO

/*
* proyecto_maestro.c
*
* Created: 09/05/2015 04:06:48 p.m.
* Author: JULIAN
*/

#define F_CPU 1000000L
#define BAUD 9600
#include <avr/io.h>
#include <avr/interrupt.h>
#include <math.h>
#include <util/setbaud.h>
char voltage;
void adc_init (void)
{
ADCSRA=(1«ADEN) | (1«ADPS0) | (1«ADPS1) | (1«ADPS2) | (1«ADIE); //se abilita el ADC, pre-escaler a 128, se habilita la interrupcion de ADC
ADMUX=(1«REFS0)|(1«ADLAR); //se configura como referencia el pin AVCC, y el ajuste del registro ADC se ajusta a la izquierda (ADCH)

}
void usar_init (void)
{
UBRRL =UBRRL_VALUE; //calcula el baudrate con la libreria setbaud a 9600
UBRRH =UBRRH_VALUE; //calcula el baudrate con la lubreria setbaud a 9600
UCSRB =(1«RXEN)|(1«TXEN); //se habilita la recepcion y la transmicion
UCSRC =(1«URSEL)|(1«UCSZ1)|(1«UCSZ0); //registro de seleccion, con 1 se escribe en ucsrc, 8 bits de caracter
}
void envio_dato (char dato)
{
while (!(UCSRA & (1«UDRE)));
UDR=dato;
}
char recibe_dato (voi)
{
while(!(UCSRA & (1«RXC)));
return UDR;
}
char informa_si_recibe (void)
{
return (UCSRA & (1«RXC));
}

int main(void)
{
DDRA=0x00;
adc_init();
usar_init();
ADCSRA |=(1«ADSC);
sei();
while(1)
{
//TODO:: Please write your application code
}
}
ISR(ADC_vect)
{
voltage=ADCH;
envio_dato(voltage);
ADCSRA |=(1«ADSC);
}

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License