Bitácoras de Tecnología Juan Pablo Diaz Correa 9°1
Bitácora de tecnología #1 En nuestra primera clase pudimos obtener un acercamiento a lo que nos sigue este periodo, circuitos analógicos, un gran tema que abarca cosas como transistores, resistencia, diodos, un tal 555, y pudimos parte de nuestro primer circuito, un variador de velocidad que nos serviría para un proyecto que tenemos, un juego a partir de cartón y un montón de soldaduras locas y geniales, he aquí un ejemplo:
Es increíble como pudieron crearlos y me pareció genial que vamos a hacerlo, aprenderemos mucho y divertirse en el momento; pude recordar algunos conceptos de electrónica que había olvidado hace años cuando robótica la daban unos geeks de Pygmalion.
Bitácora de Tecnología #2 Para empezar el profesor Juan Pablo nos había avisado el día anterior que no podía asistir a clase por razones personales, el profesor nos dejó un trabajo para que lo respondiéramos en las horas de clase en parejas, este trataba sobre una introducción a los circuitos análogos, el cual nos iba a servir para elaborar nuestro proyecto final, el cual sería un juego que tenemos que vender por parte de la asignatura de emprendimiento. Hoy aprendimos a calcular el valor de las resistencias y que significa cada color y bandas en ellas, también aprendimos los diferentes símbolos en un circuito análogo.
Bitácora de tecnología #3 Comenzaban clases a las 8:40 a.m., perdimos tiempo. En este día, se formaron equipos o parejas para la formación del micro proyecto de emprendimiento y tecnología, el trabajo consistiría en un juego mecánico análogo, el cual se tenía que hacer con cartón y otros elementos como metales, engranajes, cauchos, papel aluminio, cableado; para poder empezar con el proyecto necesitábamos ver un video el cual nos daba una idea de cómo hacer el trabajo, también se realizó una lista con los materiales que se consideraban necesarios para la creación del micro proyecto, esto se le presentaba al profesor diciendo lo que era necesario para que el profesor nos pudiera dar los materiales. también estaba la opción de comprar los materiales electrónicos para poder quedarnos con nuestro trabajo. Decidimos escoger un juego llamado Flappy bird, trata de un pajarito que tiene que volar sin ser tocado por los tubos.
Si quieres puedes jugar el juego en tu móvil o pc yendo a este link http://flappybird.io/
BitĂĄcora de tecnologĂa #4 No hubo clase esa semana
Bitácora de tecnología #5 Los dos días de clase de esta semana se estuvo trabajando con el circuito y lo que se pensaba hacer con el mismo ya que no se había presentado la oportunidad de trabajar con el cartón así que solamente se trabajaba en hacer que el circuito funcionara lo que algunos estudiantes se les dio muy fácil como a otros que no se les facilitaba el asunto y no les funcionaba debidamente el circuito, para mi equipo fue complicado porque tratamos, tratamos y tratamos, revisamos si estaba bien, que le falta, no sabíamos que error tenia pero por suerte para nuestro juego no lo necesitaríamos. El circuito hace variar la velocidad mediante impulsos eléctricos controlados fue lo que entendí como una de esas maquinas que miden el latido del corazón, suben y bajan haciendo frecuencias.
Bitácora tecnología #6 En esta ocasión empezamos a trabajar con respecto al juego en general: estructura, diseño etc. pero, en mi equipo ninguno de nosotros llevo materiales para trabajar así que tuvimos que trabajar solamente con el circuito por toda la clase, sin ningún avance ni en el juego (el cartón) ni en lo electrónico porque no había un correcto funcionamiento del circuito como debía ya que no variaba la velocidad o la corriente no pasaba como debía de ser al motor. En el día siguiente si se llevó el cartón por lo que una parte del equipo estuvo trabajando con el circuito mientras que otro estuvo cortando y pegando cartón para que de esa forma quedara uniforme para la presentación de este. Estuvimos construyendo el circuito de diferentes maneras, la primera era en cuestión seguir el diseño propuesto en clase o la otra opción era la que dos compañeros habían conseguido directamente de internet, intentamos de las dos maneras, pero decidimos no complicarnos tanto y usar la manera más sencilla ya que ahorrábamos espacio al tener esa pequeña vaquera reciclada porque teníamos muy pocos materiales y difícil acceso al centro para ir a comprar componentes
Bitácora tecnología #7 En este día se presentó un inconveniente en la sala de tecnología por la llegada de nuevos materiales como computadoras, impresoras 3D, cautines y otros materiales para aprender más, así que la construcción de los juegos se tuvo que hacer en el salón de clases comunes, hubo un completo enfoque en esto así que eso fue todo lo que se hizo en la clase. Al día siguiente se empezaron a presentar los juegos, mi equipo estuvo en el auditorio con el equipo de robótica presenta nuestros agradecimientos a la fundación que dono todos estos materiales así que avanzamos muy poco y los avances que se tenía los cuales el profesor calificaba con una nota según el avance encontrado en cada uno y de esa forma nos decía que faltaba para hacer y que para después de semana santa se debía de tener el juego completo sin tomar en cuenta lo electrónico, no alcanzamos a terminar por eso decidimos que alguien se lo llevara para adelantar. El trabajo era un poco complicado porque requería delicadeza y precisión de parte de cada integrante, aunque tuvimos problemas porque a veces se dañaba al llevarlo a nuestras casas o algunos no adelantaban si quiera eran muchos problemas.
Bitácora tecnología #8 Define Raspberry pi 3, un micro computador a base de un procesador de 1.2 GHz que tiene como disco duro una tarjeta SD de 32 GB, todo gracias a la donación de esa fundación cuyo nombre olvide, es fantástico porque esta tienen muchas funciones, podemos trabajar como si fuera una tableta en la que podemos hacer documentos, navegar por la web, entrar en redes sociales, estudiar y muchas otras cosas, pero lo mas importante es la capacidad de controlar componentes electrónicos a través de pines llamados GPIO (General Purpose Input/Output, Entrada/Salida de Propósito General) que nos sirve para enviar y recibir 1 o 0, prender o apagar. En esta clase aprendimos a armarlos con mucha delicadeza, premero debemos desempacar todos los componentes que consta de una pantalla para visualizar el entorno del raspbyan (sistema operativo diseñado especialmente para la raspberry basado en debian (distribución de Linux GNU)))
Esta es la raspberry Pi3 con sus pines.
Bitácora tecnología #9 Tuvimos que armar de nuevo las Raspberry porque las encontramos todas desconectadas porque otros grupos también estaban aprendiendo a construir un computador como nosotros y esto nos llevo la mitad de la clase. Empezamos a aprender a programar en Python un lenguaje de programación que es nativo en la Raspberry pi 3, este nos permitirá controlar ciertas salidas y entradas o también llamados pines que hay dentro de nuestro computador, para empezar a programar teníamos que entrar a la consola como super usuario y escribir: sudo idle3, este nos servirá para abrir la interfaz de Python y empezar a escribir códigos, empezamos con algo simple, el comando “print” era el indicado porque nos adentraría en la aventura que es la programación. El comando se escribe así: print ("Dentro de las comillas escribimos lo que queramos") #Algo también importante es que después de un código y escribir un numeral este servirá como un comentario y no interferirá con nuestra función. También aprendimos como hacer sumas y restas 2+2 #Este sirve para sumar cualquier número + imprimirá el resultado 2-2 #Este sirve para restar cualquier número - imprimirá el resultado 2/4 #Este sirve para dividir cualquier número / imprimirá el resultado 2*2 #Este sirve para multiplicar cualquier número * imprimirá el resultado
Bitácora tecnología #10 Seguimos con nuestras prácticas en programación, además de repasar todo lo anterior hay algo importante que cabe destacar, es que nosotros cuando estamos interactuando directamente con la consola solo podríamos manejarla nosotros y esto no es lo que queremos, nuestro objetivo es automatizar un proceso, para ello debemos escribir todo el código dentro de un editor de texto especial como el que tiene Python, en esta interfaz podemos automatizar cualquier proceso que este dentro del alcanza de la Raspberry y también usar los GPIO, aprendimos varios comandos importantes en esta clase. El primer paso para poder usar aquellos pines de la Raspberry es usar el siguiente comando: import RPi.GPIO as GPIO #Este nos servirá para poder reconocer que la Raspberry tiene unos pines que sirve de entrada o salida para ello usamos la función import que significa que importaremos la librería de GPIO (General Purpose Input/Output). GPIO.setmode (GPIO.BCM) #Despues de haber importado la librería tenemos que decirle a la Raspberry que vamos a nombrar a los pines por una tabla de GPIO y no por número de pin. Y por último aprendimos la función para definir variable, nombrar un resultado por otro: led1 = 4 #led1 lo podemos cambiar por cualquier otro nombre, esto significa que lo que hay después de 4 puede ser llamado de esa manera. También podemos sumar variables: led1 + led1 es 8
#El resultado seria 8 porque led1 es igual a 4 y 4 + 4
Bitácora tecnología #11 Es hora de aprender como podemos controlar diferentes elementos electrónicos como lo son los LED.
Empezamos a programar un pequeño LED, este podíamos prenderlo y apagarlo, pero la idea era controlar ese movimiento, algo importante es que los LED pueden quemar la Raspberry porque piden más energía que la que brinda la Raspberry, por eso usamos una resistencia para que protegiera nuestro circuito. Aprendimos los siguientes comandos: GPIO.setup (led1, GPIO.OUT) #Definimos pin como salida de energía, como se menciona en la anterior bitácora led1 es una variable y esta en nuestro caso es 4 y debe ser el número que coincida con el número de pin en el GPIO. import time #Sera nuestra segunda librería, esta sirve para definir tiempo y poder tenerlos en cuentan, por ejemplo, si queremos que se prenda una luz por dos segundo, esta librería es muy importante para tener un mayor control. Todo lo anterior en programación se llama la configuración, pero el verdadero reto empieza ahora try: #Sirve para empezar a ejecutar una serie de acciones while True : #Si la condición es verdadera se ejecutara infinitamente lo de abajo.
Bitácora tecnología #12 Retomando la anterior clase faltaron algunos códigos para poder completar nuestro programa. GPIO.output(led1, True) #Este comando define que se va enviar energía a el GPIO en el que esta led1 y este va a viajar hasta llegar al LED, la parte de True se define como un 1 para que sea positivo. GPIO.output(led1, False) #Este comando define que se va a parar de enviar energía a el GPIO en el que esta led1 y este va a viajar hasta llegar al LED, la parte de False se define como un 0 para que sea negativo. time.sleep(1) #Este comando esta vinculado a la librería sleep y hace que podamos esperar un tiempo y controlar mas las salidas de energía, el valor que demos en los paréntesis definirá en segundos cuanto espera. Y para poder parar nuestro código debemos escribir lo siguiente: finally: #Llegaría a finally solo si se detiene con Ctrl+C porque no hay una acción estipulada y esta dará lugar a los siguientes códigos GPIO.cleanup() #Limpiamos todos los pines para que no queden con energía o renombrados, siempre en necesario escribir estas dos últimas líneas. Con todos estos comandos nuestra misión era crear una secuencia de luces y con mi compañera Valeria Berrio lo logramos haciendo que dos LEDs se intercalen entre ellos.
Bitácora tecnología #13 Pudimos terminar nuestro prototipo y este fue con el código que trabajamos: import RPi.GPIO as GPIO import time GPIO.setmode (GPIO.BCM) led1 = 4 juanipis = 17 GPIO.setup (led1, GPIO.OUT) GPIO.setup (juanipis, GPIO.OUT) try: while True : GPIO.output(led1, True) GPIO.output(juanipis, False) time.sleep(0.5) GPIO.output(led1, False) GPIO.output(juanipis, True) time.sleep(0.5) finally: print ("Hecho por Valeria y Juan P.") GPIO.cleanup() Hay que tener en cuenta el tema de la sintaxis porque si no alineamos nuestros códigos obtendremos errores.
Bitácora tecnología #14 En esta clase empezamos a repasar cada una de nuestras líneas de código porque la próxima clase se venia un examen, así que decidí hacer un código para el examen porque el profesor ya nos estaba diciendo lo que íbamos a tener que hacer, este es el código para el examen: import RPi.GPIO as GPIO #Importamos librería de GPIO (General Purpose Input/Output)
time.sleep(0.5)
GPIO.output(led1, False)
GPIO.output(led1, False)
GPIO.output(led2, False)
import time #Importamos librería de tiempo GPIO.output(led2, False)
GPIO.output(led3, True)
GPIO.setmode (GPIO.BCM) #Preparamos los pines para uso general
GPIO.output(led3, True)
GPIO.output(led4, False)
led1 = 4 #Definimos variables
GPIO.output(led4, False)
GPIO.output(led5, False)
led2 = 17 #Definimos variables
GPIO.output(led5, False)
time.sleep(0.5)
led3 = 18 #Definimos variables
time.sleep(0.5)
GPIO.output(led1, False)
led4 = 27 #Definimos variables
GPIO.output(led1, False)
GPIO.output(led2, True)
led5 = 22 #Definimos variables
GPIO.output(led2, False)
GPIO.output(led3, False)
GPIO.setup (led1, GPIO.OUT) #Definimos pin como entrada
GPIO.output(led3, False)
GPIO.output(led4, False)
GPIO.output(led4, True)
GPIO.output(led5, False)
GPIO.output(led5, False)
time.sleep(0.5)
time.sleep(0.5)
GPIO.output(led1, True)
GPIO.output(led1, False)
GPIO.output(led2, False)
GPIO.output(led2, False)
GPIO.output(led3, False)
GPIO.output(led3, False)
GPIO.output(led4, False)
GPIO.output(led4, False)
GPIO.output(led5, False)
GPIO.output(led5, True)
time.sleep(0.5)
GPIO.setup (led2, GPIO.OUT) #Definimos pin como entrada GPIO.setup (led3, GPIO.OUT) #Definimos pin como entrada GPIO.setup (led4, GPIO.OUT) #Definimos pin como entrada GPIO.setup (led5, GPIO.OUT) #Definimos pin como entrada try: #Probamos el codigo de abajo while True : #Si verdadero nos permite ejecutar una acción infinitamente GPIO.output(led1, True) #En este tipo de código podemos enviar energía al LED
time.sleep(0.5)
finally: #Llegaría a finally solo si se detiene con Ctrl+C para que dé lugar a los siguientes códigos
GPIO.output(led1, False) GPIO.output(led2, False)
print ("Hecho Juan Pablo DC") #Imprimimos un texto
GPIO.output(led2, False) GPIO.output(led3, False) GPIO.output(led3, False) GPIO.output(led4, False) GPIO.output(led4, False) GPIO.output(led5, True) GPIO.output(led5, False) time.sleep(0.5) time.sleep(0.5) #Este tipo de código nos sirve para esperar un tiempo definido
GPIO.output(led1, False)
GPIO.output(led1, False)
GPIO.output(led2, False)
GPIO.output(led2, True)
GPIO.output(led3, False)
GPIO.output(led3, False)
GPIO.output(led4, True)
GPIO.output(led4, False)
GPIO.output(led5, False)
GPIO.output(led5, False)
time.sleep(0.5)
GPIO.cleanup() #Limpiamos todos los pines para usarlos después
Bitácora tecnología #15 Este fue el día esperado, todos nos preparamos para poder ganar este examen, lo único que teníamos habilitado era internet para acceder a nuestra pagina web y revisar nuestras bitácoras, entonces el código que había escrito la clase pasada lo monte allí y solo tuve que hacer unas modificaciones sorpresas que Juan Pablo agrego al examen, por eso lo termine rápido y sin problemas, el resto de la clase me la pase haciendo un taller de emprendimiento que nos dejó.
Bitácora tecnología #16-17 Empezó el tercer periodo y nuestro objetivo principal era la construcción de un robot mensajero, para ello empezaríamos a toar un nuevo tema, estos son los denominados servomotores, sirven para controlar un eje con una rotación de 180 grados y en nuestra Raspberry tienen unos comandos especiales: import RPi.GPIO as GPIO #Importamos la libreria RPi.GPIO import time
#Importamos time para poder usar time.sleep
GPIO.setmode(GPIO.BOARD) #Ponemos la Raspberry en modo BOARD GPIO.setup(21,GPIO.OUT) #Ponemos el pin 21 como salida p = GPIO.PWM(21,50) p.start(7.5)
#Ponemos el pin 21 en modo PWM y enviamos 50 pulsos por segundo
#Enviamos un pulso del 7.5% para centrar el servo
try: while True:
#iniciamos un loop infinito
p.ChangeDutyCycle(2.5) #Enviamos un pulso del 2.5% para girar el servo hacia la izquierda time.sleep(0.5)
#pausa de medio segundo
p.ChangeDutyCycle(7.5) #Enviamos un pulso del 7.5% para girar el servo hacia la derecha time.sleep(0.5)
#pausa de medio segundo
p.ChangeDutyCycle(12.5) #Enviamos un pulso del 12.5% para centrar el servo de nuevo time.sleep(0.5)
#pausa de medio segundo
except KeyboardInterrupt: p.stop() GPIO.cleanup()
#Si el usuario pulsa CONTROL+C entonces...
#Detenemos el servo #Limpiamos los pines GPIO de la Raspberry y cerramos el script
Este programa serviría para mover a los lados necesarios nuestro servomotor.
Bitácora tecnología #18-19-20 Luego de haber experimentado con los servomotores empezaríamos a construir las bases en donde serian ubicado los pimpones que funcionarían como los ojos, el objetivo era crear un sistema que hiciera que el servo moviera los ojos, el profesor Juan Pablo nos propuso usar fichas de lego mindstorms EV3 y usar cauchos para mover los ojos en polea. Durante estos 3 días bregamos a hacer el sistema, no pudimos crearlo de esta manera, pero no es tiempo para lamentarse así que usamos engranajes y tornillos para asegurarnos de que se moviera como quisiéramos. El 18 obtuvimos nuestra base con la que se supone que deberíamos trabajar, los cauchos eran muy poco convincentes, pero logramos conectar los pimpones con los palos de lego. El 19 no obtuvimos ningún avance porque no encontrábamos la manera de conectar el caucho, pero fue inútil así que finalizando la clase se nos ocurrió tratar de conectar una base del servo a un engranaje de lego mindstorms y efectivamente funciono, por eso decidimos que la próxima clase nos enfocaríamos en eso. El 20 empezamos a experimentar con los engranajes y cada vez encontrábamos la forma de lo que queríamos hacer y terminamos con una nueva base que haría que el trabajo sea más fácil y sencillo, pero siempre cometíamos errores de diseño y algunas cosas nos quedaban torcidas o no simétricas.
Bitácora tecnología #21 Esta clase fue muy importante porque estuvimos en el salón repasando de nuevo programación porque la estábamos olvidando, ese día el profesor Juan Pablo nos recordó todo de las clases pasadas y entregamos este trabajo donde escribíamos todos los códigos que sabíamos:
Bitácora tecnología #22-23-24-25-26 En estas 3 clases seguimos trabajando con el prototipo de ojo, a este le añadimos unas pestañas para que simulara el movimiento de parpadear, este también lo hicimos con un servo motor y engranajes, pero también tuvimos muchas dificultades porque a veces los pimpones se destrozaban o no encontrábamos la pieza necesaria, esto nos quitaba mucho tiempo pero logramos poder programar el servomotor para que pudiese mover los ojos, durante 2 clases nos la pasamos así hasta poder lograr esta meta, en el caso de los parpados ya teníamos la idea diseñada desde el 22 pero aún no la podíamos aplicar a nuestra base. Fue cuando el 23 logramos que se movieran los ojos y empezar a pensar cómo íbamos hacer que los parpados funcionaran porque no encontrábamos la manera de ponerlos correctamente, así que el 24, 25 y 26 trabajamos en eso mucho pero no lográbamos avance, se nos ocurrió pegar engranajes con clavos de lego, eso era lo que faltaba, con esto claro pudimos sincronizar los engranajes aunque nos quedó faltando fijar el servomotor para que todo funcionara a la perfección.