jueves, 31 de mayo de 2018

Proyecto de Robotica: Carro evasor de Obstáculos controlado por Bluetooth

Proyecto de Robotica: Carro evasor de Obstáculos controlado por Bluetooth

1. Objetivos.
  • Utilizar el micro controlador en aplicaciones de control electrónico 
  • Desarrollar y ejecutar programas en un micro-controlado 
  • Programar y configurar interfaces básicas del micro controlador.
2. Materiales Utilizados.
  • Kit chasis de carro con tres ruedas: La plataforma incluye 2 motores DC con reducción y sus respectivas llantas de goma, las cuales gracias a su buena tracción puede trabajar sobre madera, lona, metal, vidrio, etc. El chasis posee agujeros para el montaje del portapila y para demás componentes electrónicos, como puede ser arduino, sensores ultrasonido, servomotores, cámara vga, etc.

  • Arduino UNO: Arduino, es una compañía open source y open hardware, así como un proyecto y comunidad internacional que diseña y manufactura placas de desarrollo de hardware para construir dispositivos digitales y dispositivos interactivos que puedan sensar y controlar objetos del mundo real. Arduino se enfoca en acercar y facilitar el uso de la electrónica y programación de sistemas embebidos en proyectos multidisciplinarios. Los productos que vende la compañía son distribuidos como Hardware y Software Libre, bajo la Licencia Pública General Reducida de GNU(LGPL) o la Licencia Pública General de GNU (GPL),​permitiendo la manufactura de las placas Arduino y distribución del software por cualquier individuo.

  • Puente H L293D: El integrado L293D incluye cuatro circuitos para manejar cargas de potencia media, en especial pequeños motores y cargas inductivas, con la capacidad de controlar corriente hasta 600 mA en cada circuito y una tensión entre 4,5 V a 36 V.
    Los circuitos individuales se pueden usar de manera independiente para controlar cargas de todo tipo y, en el caso de ser motores, manejar un único sentido de giro. Pero además, cualquiera de estos cuatro circuitos sirve para configurar la mitad de un puente H.
    El integrado permite formar, entonces, dos puentes H completos, con los que se puede realizar el manejo de dos motores. En este caso el manejo será bidireccional, con frenado rápido y con posibilidad de implementar fácilmente el control de velocidad.


  • Protoboard: Una placa de pruebas o placa de inserción es un tablero con orificios que se encuentran conectados eléctricamente entre sí de manera interna, habitualmente siguiendo patrones de líneas, en el cual se pueden insertar componentes electrónicos y cables para el armado y prototipado de circuitos electrónicos y sistemas similares. Está hecho de dos materiales, un aislante, generalmente un plástico, y un conductor que conecta los diversos orificios entre sí. Uno de sus usos principales es la creación y comprobación de prototipos de circuitos electrónicos antes de llegar a la impresión mecánica del circuito en sistemas de producción comercial.

  • Sensor ultrasónico HC-SR04: Es un sensor de distancias por ultrasonidos capaz de detectar objetos y calcular la distancia a la que se encuentra en un rango de 2 a 450 cm. El sensor funciona por ultrasonidos y contiene toda la electrónica encargada de hacer la medición. Su uso es tan sencillo como enviar el pulso de arranque y medir la anchura del pulso de retorno. De muy pequeño tamaño, el HC-SR04 se destaca por su bajo consumo, gran precisión y bajo precio por lo que esta reemplazando a los sensores polaroid en los robots mas recientes.

  • Modulo Bluetooth HC-05: Transceiver Bluetooth montado en tarjeta base de 6 pines para fácil utilización, interface serial, puede ser configurado como maestro o como esclavo, Bluetooth v2.0 + EDR, 2.4 GHz, alcance 5 m a 10 m. Niveles lógicos de 3.3 V.El módulo suele venir configurado como esclavo, con velocidad de transmisión serial de 38400 bps ó 9600 bps (Dependiendo del nivel de KEY al alimentarlo), 1 bit de parada, y sin bit de paridad, nombre: HC-05, password: 1234
    Para su configuración se puede conectar a el viejo puerto serial RS232 de la computadora a través de un convertidor TTL a RS232, o mejor empleando un conversor USB a serial TTL y utilizando el Hyperterminal de Windows u otro programa similar para enviar los comandos AT (Por ej. el SSCOM32, PuTTY, etc.). (A partir de Win Vista el hyperterminal ya no está incluido en el SO) Por supuesto también se pueden enviar los comandos AT desde cualquier microcontrolador sin ayuda de computadoras.
    Con
    Arduino de 3.3 V también se puede hacer fácilmente y sin ningún convertidor con un pequeño sketch que utiliza el monitor serial del IDE de Arduino para escribir los comandos AT y observar la respuesta del módulo. Como este monitor emplea la comunicación serial que el Arduino utiliza para comunicarse con la computadora en los pines 0 y 1 digitales, se crea un puerto serial por software para pasar los datos al módulo Bluetooth empleando los pines digitales 10 y 11.

3. Evidencia de proyecto.
  












4. Explicación del Programa Arduino










Link de descargar del programa completo: 
Link de la APP:


5. Resultados Finales del Proyecto.




6. Observaciones y Conclusiones.


Observaciones
  • El modulo Bluetooth presento inconvenientes al momento de implementar al circuito ya que en algunos casos no le llegaba energía, además debía de configurarse según la función a realizar sea master o como slave.
  • La configuración del programa basado al Arduino fue exitosa, compilando la información en la tarjeta.
  • Los terminales fueron clasificados según sus correspondientes entradas y salidas al Arduino, haciendo una cubierta protectora para evitar inconvenientes durante el manejo del robot terrestre.
  • Los sensores implementados se les coloco tanto en la parte frontal como en las zonas laterales viendo que funciona correctamente.
  • Los puertos de comunicación durante el uso del software como se observó cómo COM 4 o 6, tuvo que verificarse previo a la escritura en la tarjeta, además de disponer de algunas librerías que se descargaron vía web, ya que el programa no admitía partes de código del robot.
  • El cambio de sentido de las ruedas usadas tan solo se realiza intercambiando la posición de dos cables.
  • Se genero una aplicación la cual en su momento respondió a los comandos creados.
Conclusiones:
  • Las librerías de Arduino juegan un papel importante al momento de desarrollar comandos y que estos sean validos durante la verificación y compilado.
  • La familia HC- en módulos Bluetooth se aprecian según las funciones como son recibir las directivas desde otro dispositivo.
  • El orden en el lenguaje de programación y el uso de funciones especificas se emplea para simplificar el mecanismo de acción del dispositivo.
  • Finalmente, la disposición de los componentes es esencial para evitar cortocircuitos dentro de la placa ,así como desperfectos como sobrecalentamiento.
Integrantes
Elvis Huanca Rosas
Angel Huarachi Escalante



lunes, 28 de mayo de 2018

Laboratorio 12

PROGRAMACIÓN CON ARDUINO
PASTILLERO

1. Competencias Especificas.
  • Utilizar el micro controlador en aplicaciones de control electrónico 
  • Desarrollar y ejecutar programas en un micro-controlado 
  • Programar y configurar interfaces básicas del micro controlador.
2. Marco Teórico.

DIAGRAMA DE LA TARJETA ARDUINO UNO
Pastillero.

Código del Pastillero Arduino.



Código del Reloj LCD 




Codigo Despliegue Toma





3. Evidencia de Laboratorio.







4. Observaciones.
  • Se observamos que para implementar el circuito del pastillero en nuestro protoboard utilizamos un Led que hace la función de nuestro motor, otro led que hace la función del Buzer y dos led's que van a realizar la función de lámparas indicadoras, cuando las pastilla haya caído.
  • Visualizamos que se inicializó el LCD con un " lcd.begin(16,2)" que es el tamaño del LCD según su columna y fila.
  • Existen plataformas de hardware libre, como lo es el Arduino, una placa con un controlador y un entorno de desarrollo, su sencillez y bajo costo nos permiten hacer múltiples diseños y múltiples tipos de uso de éste.


5. Conclusiones.
  • Se concluye que la funcion "void Despliegue" es citar a los otros void en su programa, para que la función de estos actúen dentro de él y así demostrar el formato hora.
  • Se debe tener conocimientos básicos de electrónica y electricidad para las conexiones , considerando que hacemos uso dispositivos , es importante tener conocimientos de programación en lenguaje java y lenguaje C, para el desarrollo de la lógica de encendido y apagado de leds que interpretara la placa Arduino.
  • Para que hayamos podido calcular el tiempo de la toma con respecto al tiempoBase utilizamos la función tiempoActual = tiempoActivacion[toma]; dentro del void DespliegueHoraToma() .

Elvis Huanca Rosas
Angel Huarachi Escalante



domingo, 6 de mayo de 2018

Laboratorio 10 y 11

Programación con Arduino

1. Competencias Especificas.

  • Utilizar el micro controlador en aplicaciones de control electrónico 
  • Desarrollar y ejecutar programas en un micro-controlado 
  • Programar y configurar interfaces básicas del micro controlador. 
2. Marco Teórico 

Funciones de lectura y escritura digital en arduino
Una función es un conjunto de líneas de código que realizan una tarea específica y pueden retornar un valor. Las funciones pueden tomar parámetros que modifiquen su funcionamiento, por ejemplo algunas funciones son utilizadas para descomponer grandes problemas en tareas simples y para implementar operaciones que son comúnmente utilizadas durante un programa y de esta manera reducir la cantidad de códigos.

Nuestro Arduino no sólo puede enviar señales sino que también puede recibirlas con dos propósitos principales como son leer datos de sensores y recibir mensajes de otros dispositivos (shield, otro Arduino, PC, etc.). Las entradas las clasificaremos en analógicas y digitales

Estructura básica de un programa
La estructura básica de programación de Arduino es bastante simple y divide la ejecución en dos partes: setup y loop. Setup() constituye la preparación del programa y loop() es la ejecución. En la función Setup() se incluye la declaración de variables y se trata de la primera función que se ejecuta en el programa.

Esta función se ejecuta una única vez y es empleada para configurar el pinMode (p. ej. si un determinado pin digital es de entrada o salida) e inicializar la comunicación serie. La función loop() incluye el código a ser ejecutado continuamente (leyendo las entradas de la placa, salidas, etc.).



Variables

Una variable puede ser declarada al inicio del programa antes de la parte de configuración setup(), a nivel local dentro de las funciones, y, a veces, dentro de un bloque, como para los bucles del tipo if.. for.., etc. En función del lugar de declaración de la variable así se determinará el ámbito de aplicación, o la capacidad de ciertas partes de un programa para hacer uso de ella.

Una variable global es aquella que puede ser vista y utilizada por cualquier función y estamento de un programa. Esta variable se declara al comienzo del programa, antes de setup().

Una variable local es aquella que se define dentro de una función o como parte de un bucle. Sólo es visible y sólo puede utilizarse dentro de la función en la que se declaró. Por lo tanto, es posible tener dos o más variables del mismo nombre en diferentes partes del mismo programa que pueden contener valores diferentes, pero no es una práctica aconsejable porque complica la lectura de código

El modificador de variable static, es utilizado para crear variables que solo son visibles dentro de una función, sin embargo, al contrario que las variables locales que se crean y destruyen cada vez que se llama a la función, las variables estáticas mantienen sus valores entre las llamadas a las funciones.

Los tipos de variables en Arduino son:

Arrays: Un array es un conjunto de valores a los que se accede con un número índice. Cualquier valor puede ser recogido haciendo uso del nombre de la matriz y el número del índice. El primer valor de la matriz es el que está indicado con el índice 0, es decir el primer valor del conjunto es el de la posición 0. Un array tiene que ser declarado y opcionalmente asignados valores a cada posición antes de ser utilizado.





Operadores

El core de Arduino ofrece una serie de operadores según su reference:
Aritméticos:

  1. Asignación +, -, *, /
  2. Módulo
  3. Compuestos: ++, –: += , -= , *= , /= : 
  4. Comparación: ==, !=, <, >, <=, >=: 
  5. Booleanos:
Estructuras de control

Las estructuras de control en Arduino según el reference son:

  • Estructuras de decisión
  • if
  • else
  • switch case
  • Estructuras de repetición
  • for
  • while
  • do .. while


Funciones definidas por usuario

Una función es un bloque de código que tiene un nombre y un conjunto de instrucciones que son ejecutadas cuando se llama a la función. Son funciones setup() y loop() de las que ya se ha hablado.

Las funciones de usuario pueden ser escritas para realizar tareas repetitivas y para reducir el tamaño de un programa. Segmentar el código en funciones permite crear piezas de código que hacen una determinada tarea y volver al área del código desde la que han sido llamadas.


Diferencia entre PIC y Arduino.

PIC:
El nombre verdadero de este microcontrolador es PICmicro (Peripheral Interface Controller), conocido bajo el nombre PIC. Su primer antecesor fue creado en 1975 por la compañía General Instruments. Este chip denominado PIC1650 fue diseñado para propósitos completamente diferentes. Diez años más tarde, al añadir una memoria EEPROM, este circuito se convirtió en un verdadero microcontrolador PIC. Hace unos pocos años la compañía Microchip Technology fabricó la 5 billonésima muestra.Todos los microcontroladores PIC utilizan una arquitectura Harvard, lo que quiere decir que su memoria de programa está conectada a la CPU por más de 8 líneas. Hay microcontroladores de 12, 14 y 16 bits, dependiendo de la anchura del bus.



Arduino: Arduino es una plataforma de hardware y software de código abierto, basada en una sencilla placa con entradas y salidas, analógicas y digitales, en un entorno de desarrollo que está basado en el lenguaje de programación Processing. Es decir, una plataforma de código abierto para prototipos electrónicos.
Al ser open source, tanto su diseño como su distribución, puede utilizarse libremente para el desarrollo de cualquier tipo de proyecto sin necesidad de licencia.
El proyecto fue concebido en Italia en el año 2005 por el zaragozano David Cuartielles, ingeniero electrónico y docente de la Universidad de Mälmo (Suecia) y Massimo Banzi, italiano, diseñador y desarrollador Web.


La comparacion entre  Microcontroladores ATmel y MICROCHIP, aunque en parte se tomarán en cuenta sus características de Arquitectura. Empecemos con la siguiente afirmación, no existe comparación entre los microcontroladores actuales de 8 bits ATmel y los de MICROCHIP, los microcontroladores de ATmel son de una tecnología más reciente, mientras de los de MICROCHIP llevan muchos años en el mercado, por lo tanto no extraña que los ATmega sean mejores en sus características.

Por lo tanto un ATmega328 supera en creces a un PIC10F, PIC12F, PIC16F e incluso a un PIC18F. Pero también según reseñas que he leído el microcontrolador de MICROCHIP de 16 y 32 bits supera en creces a los Atmel de 16 y 32 bits.

Pero volvamos al tema de Arduino y PICAXE, así que te invito a que leas y sobre todo ANALICES la siguiente tabla


Evidencia:









Observaciones:

  • Se uso los focos propios de la tarjeta para poder reconocer si la función establecida fue correcta.
  • Se tuvo que cambiar el comp de la entrada para hacer efectiva la secuencia de comandos.
  • Segun se indico los leds iluminaban en un sentido hasta que estos intercalen de acuerdo a un tiempo determinado.

Conclusiones:


  • Al inicio de nuestro programa al dirigir nuestras entradas y salidas, se nombraran para que puedan ser mas sencillos de reconocer.
  • Comandos como el VOID dentro de Arduino son esenciales para configurar  o referir a una repetición continua de la función empleada.
  • Arduino maneja alrededor de 32 bits por lo cual el nombrar cantidades mejores hace que sea una tarea mucho mas simple.
  • Las variables a usar tienen que cumplir con un orden especifico.
  • Los comados se usan de manera que sea lo mas simple posible, para cumplir directivas o condiciones.

Integrantes:

Elvis Huanca Rosas
Gianlui Suca Motta
Angel Huarachi Escalante




Laboratorio 9


Laboratorio 9
Programación con Arduino:

1. Competencia especifica de la sesión:

  • Conocer tanto la parte lógica y física de Arduino 
  • Instalación y configuración de Arduino 
  • Comprender el lenguaje de programación usado, ademas de los comandos esenciales 
2. Marco teórico.

Definición:
Arduino es una plataforma de hardware libre, basada en una placa con un micro controlador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinarios. Por otro lado Arduino nos proporciona un software consistente en un entorno de desarrollo (IDE) que implementa el lenguaje de programación de arduino y el bootloader ejecutado en la placa. La principal característica del software de programación y del lenguaje de programación es su sencillez y facilidad de uso.

Funcionamiento: Arduino se puede utilizar para desarrollar elementos autónomos, conectándose a dispositivos e interactuar tanto con el hardware como con el software. Nos sirve tanto para controlar un elemento, pongamos por ejemplo un motor que nos suba o baje una persiana basada en la luz existente es una habitación, gracias a un sensor de luz conectado al Arduino, o bien para leer la información de una fuente, como puede ser un teclado, y convertir la información en una acción como puede ser encender una luz y pasar por un display lo tecleado.





Funcionamiento del Blootloader.

Cuando cargamos un programa en Arduino desde el USB con el IDE, estamos haciendo uso del bootloader, se trata de un pequeño programa que ha sido guardado previamente en el microcontrolador de la placa y que nos permite cargar código sin necesidad de hardware adicional. El bootloader solo está activo unos segundos cuando se resetea el Arduino y después comienza el sketch que está cargado en la flash de Arduino y que hemos programado y subido a la placa.

El bootloader se ejecuta cuando el microcontrolador se enciende o se pulsa el botón reset, durante un corto espacio de tiempo espera que le llegue por el puerto serie un nuevo sketch desde el IDE de Arduino (este distingue un sketch de otra cosa porque tiene un formato definido). Si llega un sketch, este es guardado en la memoria flash y ejecutado, en caso contrario ejecuta el sketch anteriormente cargado.

La mayoría de los Arduinos tienen la función autoreset que permite al IDE de Arduino subir el código sin tener que pulsar el botón de reset.

El bootloader hace que parpadee el pin 13 (led integrado en la placa) cuando se ejecuta.
La mayoría de los microcontroladores de AVR pueden reservar una zona de la memoria flash (entre 256B a 4 KB) para el bootloader. El programa bootloader reprograma el microcontrolador para guardar en la memoria flash el código binario a través de cualquier interface disponible.
El bootloader de Arduino está programado en la memoria flash del ATMega328p y ocupa 0,5 KB de los 32KB disponibles. Este bootloader viene precargado en la memoria flash del microcontrolador y es lo que diferencia el ATMega328p de Arduino de otro que viene de fábrica.

Funcionamiento del uC.

El Atmega328 AVR 8-bit es un Circuito integrado de alto rendimiento que está basado un microcontrolador RISC, combinando 32 KB ISP flash una memoria con la capacidad de leer-mientras-escribe, 1 KB de memoria EEPROM, 2 KB de SRAM, 23 líneas de E/S de propósito general, 32 registros de proceso general, tres temporizadores flexibles/contadores con modo de comparación, interrupciones internas y externas, programador de modo USART, una interfaz serial orientada a byte de 2 cables, SPI puerto serial, 6-canales 10-bit Conversor A/D (canales en TQFP y QFN/MLF packages), "watchdog timer" programable con oscilador interno, y cinco modos de ahorro de energía seleccionables por software. El dispositivo opera entre 1.8 y 5.5 voltios. Por medio de la ejecución de poderosas instrucciones en un solo ciclo de reloj, el dispositivo alcanza una respuesta de 1 MIPS, balanceando consumo de energía y velocidad de proceso.



3.Evidencia de Laboratorio








4. Observaciones:
  • Los COM, o también puertos a los que se conecta y Lee la placa Arduino, no eran tan funcionales ya que se buscó la manera de poder usarlos en el laboratorio ya que no presentaban respuesta aparente a las entradas USB comunes.
  • Se utiliza la plataforma en  Coursera el cual complementa el desarrollo de aprendizaje y reforzamiento en conocimientos básicos de Arduino.
5. Conclusiones:
  • Mediante Coursera se aprendió la línea de tiempo en los que los micro controladores y microprocesadores fueron invadiendo el mundo hasta este momento donde cualquier micro o macro empresa recurre al uso de estos ya sea en mayor o menor medida.
  • Se logro comprender funciones "int", "void loop"y "void setup".
  • Durante el trabajo de este laboratorio se implementó un circuito simple de secuencia en prendido y apagado de un LED con señal de 1 y 0 según los tiempos dados por el docente.
6.Integrantes de grupo.

Elvis Huanca Rosas
Angel Huarachi Escalante

Proyecto de Robotica: Carro evasor de Obstáculos controlado por Bluetooth

Proyecto de Robotica: Carro evasor de Obstáculos controlado por Bluetooth 1. Objetivos. Utilizar el micro controlador en aplicaciones ...