User Tools

Site Tools


Writing /var/lib/dokuwiki/data/meta/teaching/ie0117/proyectos/2015/ii/boton_de_emergencia.meta failed
teaching:ie0117:proyectos:2015:ii:boton_de_emergencia

Botón de emergencia para el robot Humanoide
Elaborado por:
Javier Calvo Camacho B41249
Jean Pierre Segura Aparicio B46591
Segunda Parte
Objetivos
Objetivo General
• Construir un botón de emergencia inalámbrico para el robot humanoide.
Objetivos Específicos
Primera Parte
• Analizar el funcionamiento de los botones de emergencia y realizar un estudio de mercado sobre marcas, características, precios y demás incluyendo las necesidades del ARCOS Lab.
• Seleccionar posibles componentes,elegir los adecuados y realizar el diagrama de bloques del sistema.
• Construir el diagrama del flujo del funcionamiento de los programas de las dos partes a elaborar.
• Diseñar y construir un modo esquemático para el botón y receptor que cumpla las características requeridas para dado botón.
Segunda Parte
• Implementar el diagrama de flujo.
• Construir el hardware necesario para el botón inalámbrico y la base del robot.
• Construir el diagrama de kidcad para el botón inalámbrico y la base del robot.
• Interpolar los elementos diseñados al robot.
Justificación
La seguridad del usuario del robot es una prioridad en la actualidad, y tener protocolos ya planificados para poder brindar esta seguridad debe ser necesario. Para garantizar esta seguridad se debe de tener mecanismos de prevención, como también en caso de emergencias. Para mejorar el ámbito de prevención de emergencias y de mejorar el funcionamiento, se formula este proyecto del botón inalámbrico, que busca asegurarle al usuario que el robot no va a actuar si no se desea así, además de que en o de emergencia o fallo se apagará solo.
Metodología
Para la construcción del botón se va a dividir el proyecto en dos partes. La primera parte va a consistir principalmente en investigación teórica como preparación a la segunda parte, en esta primera parte se va investigar sobre el mercado de los botones de emergencia y sobre los diferentes componentes que se pueden utilizar para así escoger los que mejor satisfagan nuestras necesidades. Posteriormente se va diseñar un esquema para el botón de forma que cumpla lo que se busca, junto a esto se realizara un diagrama de flujo para los programas de tanto el robot como el botón. Para la segunda parte se va a implementar lo de la primera parte en la elaboración de tanto el software como hardware del botón y para la base del robot.
Marco teorico
La primera parte se puede encontrar en el siguiente link: boton_de_emergencia_para_el_robot_humanoide .

Para la segunda parte del proyecto se inicio con la construcción del hardware del circuito sobre dos “protoboards”, en esta parte se presentaron varios inconvenientes como los problemas con el provedor de los materiales para conectar eficientemente los stms y los xbees a la protoboard ya que estos no lograron llegar a tiempo para la exposicion asi que se tuvo que conectar esto de forma mas ineficiente, los stms se conectaron con cables los cuales debimos pelar y separar para asi usarlos como conector entre la protoboard y los stms, en el caso de los xbees para uno se utilizo una plataforma directa que fue prestada por el ArcosLab y en el caso del segundo se logro con ayuda de headers y soldando a estos cables para asi poder tener una conexion eficiente con la protoboard , para esto primero se recubrio con una capa de estaño, con ayuda de un cautil, los extremos de los cables como los extremos de los headers para asi asegurar una mejor y más duradera conexión entre ambos,a continuación se muestran fotos del proceso de soldado que se realizo:





Ya con las soldaduras se continuo conectando los componentes entre si siguiendo lo especificado en el diagrama esquematico realizado en la primera parte del proyecto y se obtuvo lo siguiente:




Para poder implementar el diagrama de flujo primero se debe conectar y entender el funcionamiento de un stm32F1VL-DISCOVERY, para eso se utilizo la libreria LIBOPENCM-3, con ayuda de la guia propuesta por el ARCOSLAB sobre instalacion de STM32(Actividad 7. Programando Microcontroladores, aunque en esto se presento una dificultad ya que el modelo F1 tiene el problema de que al conectarse a la computadora esta lo reconoce como si fuera un dispositivo de almacenamiento usb entonces debemos aplicar el siguiente codigo en el kernel antes de realizar la conexión:
sudo modprobe -r usb-storage
sudo modprobe usb-storage quirks=483:3744:i

Luego se debe conectar el stm32 a la computadora y se debe agregar lo siguiente al archivo makefiles.rules:
OOCD_INTERFACE=stlink-v1
OOCD_BOARD=stm32vldiscovery

Para realizar el codigo que utilizaremos para enviar la señal entre los dos xbees se hizo juntando partes de los ejemplos del STM32 de button, miniBlink y Usart.Se presenta al final del archivo/


Para hacer la tarjeta impresa se hiso con ayuda del programa KICAD y la guia publicada en el wiki del arcos: Tutorial: Create and Modify a PCB Card Printer File from Kicad to Inkscape to use on LaserPrinter.

Para el desarrollo de las tarjetas fue importante dada guia la cual, se siguio pero durante el desarrollo de las mismas se presentaron distintos incovenientes que atrasaron en su elaboración. Lo primero fue que los elementos diseñados anteriormente, en el diagrama esquematico , cuando se realizaba la creación de la PCB no aparecian los elementos para acomodarlos respectivamente, lo cual se procedio a utilizar elementos ya alamacendados en la biblioteca de kidcad para mantener la configuración provista por kicad. Es necesario mencionar que dados elementos empleados no son complementamete similares a los reales utilizados y adquiridos previamente pero se utilizan para representar los elementos que se poseen y delimitar el espacio de desarrollo para las PCB.
Seguidamente se muestran los diagramas para el PCB obtenidos para emisor y receptor respectivamente:


Conclusiones

El conocimiento obtenido a lo largo de todo el curso fue bastante provechoso. Por una parte, en el caso especifico del trabajo realizado, se abarco la parte de hardware y búsqueda de elementos específicos de acuerdo a las necesidades planteadas y requeridas. Lo cual es importante , para tener siempre presente la búsqueda inicial que se debe hacer ante las diversas características y propiedades de elementos que ofrece el mercado en la actualidad. También se incursiono en el uso de la plataforma de software libre en la programación y ejecución de código, específicamente en el uso de los microcontroladores y en caso utilizado para el proyecto del STM32VLDiscovery. Dentro de este mismo apartado se relaciona lo hardware y software para el desarrollo de las tarjetas , el cual involucra el uso del programa Kicad.
Luego se tiene una parte de hardware específicamente la cual es interrelacionar los elementos en la proto-board inicialmente para las pruebas de desarrollo.
Referencias
http://www.mouser.com/ds/2/111/ds_xbeezbmodules-19298.pdf accesado el 30/11/2015 a las 3:00pm
http://www.mouser.com/ds/2/389/CD00277245-492652.pdf accesado el 30/11/2015 a las 3:05pm

Presentación segunda parte:boton_de_emergencia_segunda_parte.pdf

#include <libopencm3/stm32/rcc.h>
#include <libopencm3/stm32/gpio.h>
#include <libopencm3/stm32/usart.h>


uint16_t exti_line_state;

static void clock_setup(void)
{
rcc_clock_setup_in_hse_8mhz_out_24mhz();
}
static void gpio_setup(void)
{
/* Enable GPIOA clock. */
rcc_periph_clock_enable(RCC_GPIOA);

/* Set GPI11 (in GPIO port A) to 'output pullUp'. */
gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT,
_GPIO_PUPD_NONE, GPIO11);
/* Set GPI10 (in GPIO port A) to 'input pullUp'. */
gpio_set_mode(GPIOS, GPIO_MODE_INPUT,
GPIO_CNF_INPUT_UPDOWN, GPIO10)
}
static void button_setup(void)
{
/* Enable GPIOA clock. */
rcc_periph_clock_enable(RCC_GPIOA);

/* Set GPIO0 (in GPIO port A) to 'input open-drain'. */
gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_UPDOWN, GPIO0);
}

static void usart_setup(void)

{

/* Setup GPIO pin GPIO_USART1_TX/GPIO9 on GPIO port A for transmit. */

gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ,

GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO_USART1_TX);



/* Setup UART parameters. */

usart_set_baudrate(USART1, 38400);

/* TODO usart_set_baudrate() doesn't support 24MHz clock (yet). */

/* This is the equivalent: */

USART_BRR(USART1) = (uint16_t)1);



usart_set_databits(USART1, 8);

usart_set_stopbits(USART1, USART_STOPBITS_1);

usart_set_mode(USART1, USART_MODE_TX);

usart_set_parity(USART1, USART_PARITY_NONE);

usart_set_flow_control(USART1, USART_FLOWCONTROL_NONE);



/* Finally enable the USART. */

usart_enable(USART1);
int main(void)
{

clock_setup();
button_setup();
gpio_setup();
usart_setup();


int i, j = 0, c = 0;

exti_line_state = GPIOA_IDR;
while (1) {

gpio_toggle(GPIOA, GPIO10); /* LED on/off */
/* Upon button press, Activates output on PA10. */
exti_line_state = GPIOA_IDR;
if 2) != 0) {
for (i = 0; i < 800000; i++) /* Wait a bit. */
asm(“nop”);
}

for (i = 0; i < 800000; i++) /* Wait a bit. */
asm(“nop”);

usart_send_blocking(USART1, c + '0'); /* USART1: Send byte. */
c = (c == 9) ? 0 : c + 1; /* Increment c. */
if ((j++ % 80) == 0) { /* Newline after line full. */
usart_send_blocking(USART1, '\r');
usart_send_blocking(USART1, '\n');
}
for (i = 0; i < 800000; i++) /* Wait a bit. */
asm(“NOP”);''

1)
24000000 « 4) / (38400 * 16
2)
exti_line_state & (1 « 0
teaching/ie0117/proyectos/2015/ii/boton_de_emergencia.txt · Last modified: 2022/09/20 00:08 (external edit)