PROYECTO DE SISTEMAS

OPERATIVOS
SISTEMAS DE CONTROL DESDE EL TERMINAL DE LINUX
JUAN CARLOS GUAÑA
OSCAR ESPAÑA
JULIO GONZALEZ

OBJETIVOS
• Revisión de los dispositivos open source
hardware disponibles en el mercado. 

• Explicar la arquitectura de un sistema informático.
• Desarrollar una aplicación sobre el S.O. GNU/Linux.  
• Presentar la aplicación fundamentada con conceptos
de S.O. 

• Arduino y Raspberry PI son dos de los más conocidos del momento en cuanto a posibilidad de desarrollo. ambas plataformas no son estrictamente libres como por ejemplo. dispositivos. . • El modelo de Arduino ha tenido un gran impacto en el medio tecnológico debido a su gran sencillez y capacidad de uso en el terreno del Hardware Libre actual y a partir de este dispositivo podemos hacer una variedad de dispositivos con múltiples propósitos. distribuir y usar esos objetos. u otros objetos del mundo físico cuyo diseño ha sido publicado de forma tal que cualquier persona pueda fabricar. modificar. en Raspberry PI  lo es el software y sus controladores.OPEN SOURCE HADWARE • El hardware de código abierto es un término para denominar artefactos tangibles como máquinas. Sin embargo. dado que sus componentes pertenecen a marcas comerciales.

.ARQUITECTURA DE UN SISTEMA INFORMÁTICO (COMPUTACIONAL) • Es el término general que se aplica a la estructura de un sistema informático o de una parte del mismo. El término se aplica así mismo al diseño del software de sistema por ejemplo el sistema operativo y también se refiere a la combinación de hardware y software. • La arquitectura de ordenadores se refiere a toda una estructura y a los detalles necesarios para que ésta sea funcional.

lo conectamos a nuestro ordenador y le programamos una función a sus sensores. Es un dispositivo que conecta el mundo físico con el mundo virtual. basada en una sencilla placa con entradas y salidas. o el mundo analógico con el digital.ARDUINO • Arduino es una plataforma de hardware de código abierto. analógicas y digitales. • Esencialmente debemos entender una cosa y es que Arduino es un microcontrolador programable. Es decir. en un entorno de desarrollo que está basado en el lenguaje de programación Processing. .

3V Pin: 50 mA • Memoria Flash 32 KB ( ATmega328 ) de los cuales 0.CARACTERISTICAS DEL ARDUINO UNO • Microcontroladores: ATmega328 • Tensión de funcionamiento: 5V • Voltaje de entrada: 7-12V • Voltaje de entrada: 6-20V • Digital pines E/S: 14 (de las cuales 6 proporcionan salida PWM) • Pines de entrada analógica:6 • Corriente DC por Pin E/S: 40 mA • Corriente DC de 3.5 KB utilizado por el gestor de arranque • SRAM 2 KB ( ATmega328 ) • EEPROM 1 KB ( ATmega328 ) • Velocidad del reloj: 16 MHz .

.

Se dispone de versiones para Windows y para MAC. . así como las fuentes para compilarlas en LINUX.ENTORNO DE DESARROLLO DE ARDUINO • Para programar la placa es necesario descargarse de la página web de Arduino el entorno de desarrollo (IDE). Existen en la web versiones para distintos sistemas operativos.

• Setup() constituye la preparación del programa y loop() es la ejecución. si un determinado pin digital es de entrada o salida) e inicializar la comunicación serie. ej.). . • La función loop() incluye el código a ser ejecutado continuamente (leyendo las entradas de la placa.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. etc. salidas. 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.

HIGH). } . // Establece 'pin' como salida } void loop() { digitalWrite(pin.void setup() { inMode(pin. OUTPUT). // Activa 'pin' delay(1000). LOW). // Pausa un segundo digitalWrite(pin. // Desactiva 'pin' delay(1000).

PC .COMUNICACION SERIE ARDUINO .

Para entender el uso del buffer normalmente se usa el ejemplo de la sala de espera del médico. Esta sala de espera es el buffer.El puerto serie del Arduino Uno usa los pins 0(RX) y 1(TX). Estos están conectados al controlador FTDI (ATmega 16u2) que es el que permite la traducción del formato serie TTL a USB. Para usar el puerto serie del Arduino hay varias funciones de programación que hay que saber: . El puerto serie del Arduino utiliza un buffer de 64 bytes. que tiene una capacidad de 64 pacientes. Cada paciente es 1 byte. Estos pins no pueden ser utilizados mientras se usa la comunicación serie.

o ‘\n’). -begin(velocidad)    Abre el puerto serie y establece la velocidad. -println()    Imprime los datos al puerto serie como texto ASCII seguido de un retorno de carro (ASCII 13. Este comando tiene la misma forma que Serial. -end()    Desactiva la comunicación serie. llamar la función Serial. escribe tantos caracteres como quieras.begin(). Para volver a activar la comunicación serie. -print()    Imprime los datos al puerto serie como texto ASCII. .print (). -available()    Esta función devuelve el estado del buffer del puerto serie y rebela si hay datos dentro de este. La velocidad de conexión (baudios o Baud Rate) es la velocidad que llegan los datos al puerto serie. o ‘\r’) y un carácter de avance de línea (ASCII 10. Normalmente se usa 9600bps o 115000bps. -write()    Escribe caracteres a través del puerto serie. -read()    Lee un carácter del buffer. permitiendo a los pines 0(RX) y 1 (TX) ser usadoscomo entradas o salidas digitales. Es importante entender que lee un solo carácter (byte). A diferencia de read(). -flush()    Vacía el buffer de entrada de datos.

manejar la velocidad de los baudios.etc). en el siguiente programa en C. la entrada y salida de datos asi como los caracteres que se van a manejar y el tamaño en bits. usamos lo que es comunicación COM o puerto Serie. desde y hacia nuestro dispositivo open source. También podemos apreciar el uso funciones.h> que es la que se encarga de abrir el puerto COM SERIAL. Para la entrada y salida de datos desde y hacia al Arduino. por el cual van a navegar los datos. bucles. Nota: Para poder utilizar el puerto que en nuestro caso fue /dev/ttyACM0 debemos antes de eso colocar en el terminal sudo chmod 777 /dev/ttyACM0 . enviamos y recibimos los mismos. condicionales.En este código usamos una librería llamada #include<termios. esta libreeria es en realidad una estructura que maneja entradas y salidas.h> para el uso de string de caracteres. de datos(strings. El manejo de la librería #include<stdlib.enteros.

Para iniciar testeamos para.DESARROLLO DEL PROGRAMA EN C (GNU/LINUX) 1. un diagnostico del Arduino y si este se encuentra conectado Para esto usamos el comando lsusb .

2. . Una vez comprobada la conexión del Arduino. Esto lo hacemos con el comando dmesg | grep Arduino Una vez testeado el puerto de la conexión del Arduino. vamos a ver cual es el puerto en el cual se encuentra conectado. que en nuestro caso fue el puerto /dev/ACM0 proseguimos a realizar el código.

Para la realización del código utilizamos el terminal del GNU/LINUX usando el editor gedit .3.

Codigo en C .

.

.

.

.

DESARROLLO DEL PROGRAMA EN ARDUINO .

.

.

CIRCUITO ESTADO DEL SISTEMA .

CIRCUITO MODELO DE CONTROL DE UN MOTOR .