Archivo de la categoría: Proyectos

Mis proyectos

Control de un servomotor con arduino

Para controlar un servomotor con arduino, este nos lo pone muy fácil. A la facilidad de uso de estos dispositivos, se suma el de disponer de una librería nativa en el propio IDE de arduino.

Que es un servomotor o servo?

Servomotor MG90Los servomotores son simples motores DC con una caja de engranajes para reducir la velocidad de giro de este, y sumado a una electrónica para el control de la posición.

Como todo en esta vida, los hay de diferentes tipos, fuerzas, tamaños y como no colores.

El precio de los servos varían desde poco más de 1€, se pueden encontrar en Aliexpress o Amazon, hasta de varios cientos de euros, para sistemas industriales.

Para el uso que normalmente se hace de ellos, tanto en robótica “domestica”, como para pequeños proyectos donde el coste del prototipo no queremos que se nos salga de madre, con los baratos nos es más que de sobra.

Servomotores más habituales.

El modelos más habitual en el montaje de pequeños robot, o brazos articulados el servo más habitual es el modelo SG90, también se le conoce como 9g, creo que porque su peso es ese. Este servomotor nos ofrece tanto una calidad más que aceptable para nuestros proyectos, como un precio muy contenido, este suele estar por los poco más de 1€. Este tiene una caga de engranajes de plástico, por lo que si nuestro proyecto va a necesitar que desarrolle mucha fuerce, sera mejor utilizar otro tipo de servomotor. El tamaño de este es muy contenido y la mayoría de chasis, ya sea de vehículos, robots o brazos articulados, suele venir diseñados para albergar este tipo de servos. Otro modelo muy utilizado es el MG90 de tamaño y forma idéntico al SG90, pero con la caja de engranajes en metal. Al tener los engranajes de metal del par de fuerza que puede aguantar es mayor.

Que necesito?

Para trabajar con un servo y arduino, los materiales que vamos ha necesitar son los siguientes.

Materiales usados

Arduino UNO Arduino UNO r3
Servomotor MG90

o

Servomotor SG90

protoboard Protoboard
cables_union Cables de conexión

Esquema de montaje de un servomotor controlado con Arduino.

El esquema de montaje de un servomotor controlado con arduino es muy simple. Los cables de los que dispone el servo son muy simples, un cable de color rojo, para el positivo, este suele estar alimentado entre 4,8v hasta los 7v. Por que si no tenemos muchos dispositivos conectados a nuestro arduino, lo podremos alimentar con el sin ningun problema. Cable de color negro, como es normal el negativo del servo, si alimentamos nuestro servo con una alimentación externa al arduino no debemos que olvidarnos de unir todos las masas del proyecto, para homogeneizar esta. Y por ultimo es el cable de color amarillo, este es el de control del servo. Este cable de control lo conectaremos a cualquier pin PWD de nuestro arduino.

Esquema de montaje.

Codificación del servomotor con arduino

Para programar el servo con muestro arduino no tiene mayor complejidad. El propio IDE de Arduino dispone de una librería para el control de estos aparatos. Solo tendremos que ir a la opción de “Programa” –> “Incluir libreria” –> “Servo” o directamente escribir en nuestro código.

Una vez agregada la librería, solo tenemos que crear un objeto el cual controlara nuestro servo.

Lo siguiente que deberemos hacer sera indicarle a nuestro objeto, en que pin esta conectado nuestro servo, esta operación se hace mediante el comando attach, este comando tiene dos versiones. La versión simple, a la cual solo le pasaremos como parametro el numero del pin al cual tenemos conectado nuestro servomotor.

Y la versión extendida, en esta versión, ademas de pasar el pin donde esta conectado el servo, tambien le pasaremos el valor mínimo y máximo de tamaño de la onda de control del servo.

En el 99,9% de los casos, con pasarle el pin donde esta conectado el servo en el arduino sera más que suficiente.

Si queremo “desenlazarnos” de el la librería Servo de Arduino nos ofrece la posibilidad de hacerlo mediante el comando detach(). Solo con llamarlo nos desconectaremos del servomotor.

Para comprobar que estamos conectados a un servo, contamos con el siguiente comando attached(), este nos devolverá “True” si estamos conectados o “False” si no lo estamos.

Para poder situar el servo en el ángulo que deseemos utilizaremos el comando write(). Ha este comando le pasaremos como parámetro el angulo en el que queremos posicionar nuestro servo.

Si queremos saber en que posición se encuentro nuestro servo utilizaremos el comando read(). Este nos devuelve el angulo en el que se encuentra nuestro servomotor.

Y con estos simples comando tendremos un control absoluto sobre los servomotores que tengamos conectados a nuestro Arduino.

Ejemplo completo del uso de servomotores con arduino.

Si tienes alguna duda o sugerencia, no dudes en dejarnos tu comentario.

Personalización imagen ISO de VMWare ESXi 6.0 para un laboratorio de pentesting (II)

Personalización imagen ISO de VMWare ESXi 6.0

El principal problema que nos encontramos al instalar un sistema con VMWare ESXi 6.0 es la falta de drivers, principalmente, para las tarjetas de red. Este problema se resuelve fácilmente con añadir a nuestra iso de VMWare ESXi 6.0 el driver que necesitemos.
Para hacer esto podemos usar el script en PowerShell de “ESXi-Customizer-PS”, este script nos permitirá no solo personalizar nuestra iso de ESXi de la versión 6.0, si no también las versiones 5.0, 5.1 y 5.5. Tampoco tendremos que descargar la iso desde la web de VMWare para realizar la personalización, el script ya se encarga de descargar la iso de la versión que deseamos personalizar. El script también dispone de varios drivers de tarjetas de red, por que tampoco nos tendremos que preocupar de buscar los drivers de nuestra tarjeta.
Personalización imagen ISO ESXiPara hacer la personalización lo primero que tenemos que hacer es descargar el script desde la pagina de “VMware Front Experience”, también tenemos que tener instalado el PowerCLI de VMWare y la versión de PowerShell en la versión 2.0 o superior.

Inicio con ESXi-Customizer-PS

Para ejecutar el script solo tendremos que abrir una consola de PowerShell. Una vez abierta nos movemos hasta la carpeta donde tenemos descargado el script de ESXi-Customizar-PS,

Una vez en la carpeta de descarga ejecutamos el scrpit

Con esto simplemente descargaremos la imagen iso de ESXi de la versión 6.0 desde la pagina de VMWare sin ninguna modificación, una versión básica .

Parámetros de ESXi-Customizer-PS

Para ver los parámetros del script solo tenemos que ejecutar el script con el parámetro -help

Los principales parámetros disponibles son los siguientes.

Versión de la imagen iso que vamos a utilizar:

  • -v50: Versión de ESXi en la versión 5.0.
  • -v51: Versión de ESXi en la versión 5.1.
  • -v55: Versión de ESXi en la versión 5.5.
  • -v60: Versión de ESXi en la versión 6.0.

Utilizamos la versión 5.5  del VMWare ESXi.

Cargar los drivers desde la pagina de “VMware Front Experience” o desde una carpeta local

Para indicar al script que dirvers queremos cargar en nuestra imagen iso personalizada usaremos el parámetro -load, este parámetro crga los drivers desde la pagina de VMWare Front Experience o desde la carpeta local, los drivers que queramos instalar los pondremos después del parámetro separados por “,” (comas).

Este ejemplo nos creara una imagen iso del VMWare ESXi de la versión 6.0 con los drivers para tarjetas de red con el chip R8168 y E1000e, la imagen iso se guardara en la misma carpeta donde se encuentra en script.

Eliminar drivers y otro paquetes de la imagen iso basica.

Igual que podemos agregar nuevos drivers y paquetes a la imagen iso básica de ESXi, podemos eliminar paquete desde esta misma imagen iso. Para ello solo tenemos que ejecutar el script con el parámetro -remove

Este ejemplo haría lo contrario que el ejemplo anterior, eliminaría los drivers de la tarjeta de red con el chip R8168 y E1000E.

Obtener una lista con las imágenes iso disponibles

En ocasiones necesitamos personalizar una versión en concreto de ESXi, para obtener una lista con las isos disponibles en la web de VMWare podemos usar el parámetro -sip. El script se conectara con la web de VMWare y obtendrá un lista con las isos disponibles y un numero, al final del listado de las isos, el script nos pedirá que introduzcamos el numero correspondiente a la isos que queremos utilizar.

Indicar la carpeta para guardar la imagen iso personalizada

Si queremos que la imagen iso personaliza que nos creara el script se guarde en una carpeta distinta a la del script, se lo tendremos que indicar con el parámetro  -outDir <Ruta del directorio>

Indicar el nombre del fichero de la imagen iso personalizada

Además de poder indicar en que directorio vamos a guardar nuestra imagen iso personalizada, también podemos indicar el nombre del fichero que queremos utilizar. Esto lo podemos hacer con el parámetro -ozip <nombre del fichero>

Indicar la carpeta local donde se encuentran los drivers, en formato VIB

Para indicar al script donde se encuentran los drivers que no están disponibles online, sino que están descargados en nuestra maquina utilizaremos el parámetro -pkgDir <Directorio>

Hay más parámetros, pero estos son los básicos para poder agregar los drivers que necesitemos para poder instalar el sistema de VMWare ESXi en nuestro equipo.

 

Instalación VMWare ESXi 6.0 para un laboratorio de pentesting (I)

Instalación VMWare ESXi 6.0

Con  ESXi de VMware permite crear un sistema virtualizado sin tener que destinar muchos recursos al sistemas host o anfitrión. El sistema ESXi instala una versión básica de linux para poder ejecutar el software de virtualización. No dispone de ningún entrono gráfico, solo tiene unas opciones básicas para poder configurar el sistema, como puede ser la  tarjeta de red y su dirección IP tanto con versión IPv4 como IPv6. La configuración del teclado.  si permite el acceso a la consola del sistema remotamente, etc.

Los requerimientos básicos para poder instalar un ESXi 6 son:

  • Procesador de 64 bits de al menos 2 núcleos.
  • Tarjeta de red de 1 Gb.
  • Memoria de 4 Gb.
  • Disco duro de 1Gb.

Casi todas las placas de equipos montados con especificaciones de servidor no tendrán problemas con estas expecificaciones. Pero si lo vamos ha instalar en un equipos de tipo “domestico” hay muchas probabilidades, aunque la tarjeta de red sea de 1 Gb, que la instalación WMWare ESXi 6.0  no la reconozca. Eso no quiere decir que no podas instalar el ESXi en esa placa, pero si que tengamos que personalizar la imagen ISO del ESXi y añadirle el driver de nuestra tarjeta. Otro problema que nos podemos encontrar es, si el equipo en el que vamos ha realizar la instalación, tiene solo 4 Gb de memoria y tenemos un tarjeta gráfica con memoria compartida, esto hará que no podamos instalar el sistemas. La única solución que hay para esto es, si podemos desactivar la tarjeta gráfica, y liberar esa memoria que usa la tarjeta gráfica,  e instalar otra tarjeta externa, o bien, si no podemos hacer el cambio, aumentar la memoria ram.

Podemos descargar el fichero iso desde la propia pagina web de VMware. Para ello solo tendremos que crear una cuenta en la pagina de VMWare, ir a la zona de descargas de VMWare y descargar la imagen.

Como crear una unidad de USB con la imagen ISO del ESXi 6.

Para crear un usb con la imagen de instalación VMWare ESXi 6.0, podemos utilizar el programa Rufus. Este programa nos permitirá copiar la imagen a nuestra unidad usb sin ninguna complicación. Solo le tendremos que indicar en que dispositivo usb queremos cargar la unidad y el fichero iso que vamos a utilizar. Después del proceso ya tendremos nuestro usb listo para poder arrancar nuestro equipo con él e instalar VMWare ESXi 6.0.

Crear sub con ESXi 6.0
Crear USB arrancable con VMWare ESXi 6.0 y Rufus

Instalar VMWare ESXi 6.0 desde una unidad USB.

Al iniciar la instalación nos aparece un menú con la opción de arrancar la instalación de ESXi  o arrancar desde el disco local. Pulsamos “intro” sobre “ESXi-6.0-XXXXXXXXXX-standard installer” e iniciamos la instalación del sistema.

Instalación VMWare ESXi 6.0 imagen 1
Menu de arranque de VMWare ESXi 6.0

 

 

 

Después se realizara la cargar de los archivos básicos para poder realizar la instalación VMWare ESXi 6.0.

Instalación VMWare ESXi 6.0 imagen 2Despues de terminar de cargar los ficheros necesarios se ejecutara el instalador del VMWare ESXi 6.0

Instalación VMWare ESXi 6.0 imagen 3Si después de la pantalla de arriba, nos muestra esta pantalla de error, y nuestro equipo dispone de la tarjeta de red, es que el instalador de ESXi 6.0 no reconoce la tarjeta de red, y debemos personalizar nuestra iso de instalación VMWare ESXi 6.0.

Instalación VMWare ESXi 6.0 imagen 4
Error de adptador de red no encontrado en VMWare ESXi 6.0

Si todo a ido correctamente, y la tarjeta de red, la memoria, y demás características básicas se han cumplido nos aparecerá esta para iniciar la instalación VMWare ESXi 6.0

Instalación VMWare ESXi 6.0 imagen 5

Lo siguiente que nos pide el disco donde vamos ha realizar la instalación de sistema anfitrión.

VirtualBox_ESXi 6.0_07_01_2016_19_29_26
Seleccionar el disco donde se quiere instalar el sistema anfitrión

Si en el disco que hemos seleccionado ya existiera una instalación de VMWare nos indicara, si queremos hacer una instalación nueva, o si por lo contrario, queremos realizar una actualización del sistema ya instalado.

VirtualBox_ESXi 6.0_07_01_2016_19_29_51Lo siguiente que nos queda es seleccionar el idioma de la instalación.

VirtualBox_ESXi 6.0_07_01_2016_19_30_11
Seleccionar el idioma para la instalacion del VMWare ESXi 6.0

Contraseña del usuario root del sistema.

VirtualBox_ESXi 6.0_07_01_2016_19_30_34
Contraseña para el usuario root del sistema anfitrion del VMWare ESXi 6.0

Y confirmamos la instalación.

VirtualBox_ESXi 6.0_07_01_2016_19_32_05Después de realizar la copia de los ficheros y las configuraciones pertinentes, y si todo ha salido bien, nos aparecerá la siguiente pantalla, confirmándonos que la instalación a terminado satisfactoriamente, y que se procederá a reiniciar el equipo.

VirtualBox_ESXi 6.0_07_01_2016_19_33_52
Sistema instalado correctamente

Pantalla que nos indica que el sistema esta reiniciando.

VirtualBox_ESXi 6.0_07_01_2016_19_34_08 Y si el arranque no ha tenido ningún problema, esta sera la pantalla que nos aparezca. Ya tenemos el sistema instalado y ejecutándose.

VirtualBox_ESXi 6.0_07_01_2016_19_35_44
Pantalla principal del sistema VMWare ESXi 6.0 ya funcionando

A partir de aquí, solo nos queda instalar los sistemas que queremos que se ejecuten en nuestro sistema virtualizado, pero eso sera en otro post.

Si tienes alguna duda o sugerencia puedes dejar un comentario.

 

Ajustar color de la fuente según el color de fondo en Visual C#

En ocasiones podemos necesitar ajustar el color de la fuente según el color del fondo del control. Por ejemplo poner el color de la fuente a blanco, por que el color del fondo es negro, o de cualquier otro color oscuro.

Esto se puede hacer calculando en nivel del color. Para este calculo yo utilizo la siguiente formula.

Lo que hacemos es crear un coeficiente multiplicando cada valor de los calores básico por un coeficiente, ya que según el color básico hará que el color final sea mas o menos oscuro. Y por ultimo sumamos los resultado.

Según el valor devuelto podemos jugar con el color que deseemos.

Por ejemplo, si el coeficiente “coefienteOscuridad” es superior a 100, el color de la fuente sera negro, y por el contrario si el coeficiente es inferior el color de la fuente lo pongo a blanco.

El valor 100 lo he sacado de probar diferentes colores y ver como se distingue el texto.

Podemos jugar con el para ajustar el color de la fuente al color que más se ajuste a nuestras necesidades.

Ejemplo completo, en este ejemplo ajusta el color de la fuente, ha blanco o negro, de una celda de un dataGridView según el color de fondo de la celda:

Y con esto ya tendríamos ajustado el color de nuestra fuente para que sea totalmente legible, independientemente del color del fondo.

Si tienes alguna sugerencia o duda, no tengas ningún reparo en escribir un comentario.

Como devolver una imagen al “SRC” de un IMG con PHP

GD-Graphics-LibraryEn algunas ocasiones se necesita personalizar algún fichero de imágenes en nuestra web dependiendo de cualquier cosa, cambiar la foto del usuario, cambiar un logotipo, etc.

Lo fácil es poner en el propio “src” de la etiqueta “IMG” el código de php que cargue el nombre de la imagen que queremos cargar.

Algo parecido a esto:

Pero esto si tenemos muchas imagen a procesar seria un poco engorroso, sobre todo a la hora de actualizar.

Para evitar tener que duplicar código hay varios métodos, el más común seria crearnos una función en nuestro fichero de funciones globales,  pero rebuscando por google encontré otra solución que me pareció a lo menos curiosa.

Y esta es hacer que el propio fichero de php nos devuelva la imagen, no la ruta al fichero que contiene la imagen, sino la propia imagen. Una cosa como esto.

Una de las funciones que nos permite esto, es crear nuestro propio sistema de captcha, o crear una imagen de algún texto que no queramos que los robots que pululan por la red lo puedan indexar.

Para hacer esto lo que tenemos que hacer lo primero, es indicar que los datos que vamos ha devolver desde el fichero de php son una imagen, esto en php se hace con las siguientes funciones.

Donde “tipo de mime” le indica el formato en el que le vamos ha enviar los datos, para imágenes lo tenemos que cambiar por:

  • image/jpeg: le indicamos que los datos que va ha recibir están en formato de iamgen jpeg.
  • image/png: los datos que le vamos ha enviar están en formato png.
  • image/gif: lo mismos pero en formato gif.

No solo podemos indicarle que lo que vamos ha enviar es una imagen, también podemos decirle que es otro tipo de archivo como por ejemplo un fichero pdf (application/pdf), un fichero de audio en formato mp3 (audio/x-mpeg-3), en esta pagina hay una lista con todos los tipo de mimes que podemos utilizar.

Y ya podemos enviar al “scr” el fichero de la imagen con el siguiente comando de php

Utilizando la libreria GD, podemos crear nuestras propias imágenes, si quieres saber algo mas sobre estas funciones solo tienes que ver los comandos que hay disponibles.

Un ejemplo completo quedaría de la siguiente forma.

Y con esto estaría, si tienes alguna duda o sugerencia puedes dejar un comentario.

Crear maquinas virtuales con VirtualBox

Virtualbox_logoLos equipos actuales se suelen desaprovechar en un alto porcentaje, más de la mitad del tiempo, los equipos están sin hacer nada o en un porcentaje muy bajo de ocupación.

Para aprovechar estos tiempos se crearon unos programas que permiten poder instalar otro sistema operativo como si se estuviera ejecutando en la propia maquina, pero en realidad lo hace sobre una maquina virtual.

El funcionamiento de estos sistemas de es fácil, lo primero que hace falta es tener un sistemas anfitrión donde poder correr el programa de virtualización, estas maquinas no tiene por que tener un sistema operativo con los que normalmente conocemos (windows, linux, OSx, etc), puede ser unas pequeñas instrucciones en una memoria de la maquina que arranque las dispositivos y después llame al programa de virtualización. Luego están los sistemas invitados en los que podemos instalar desde la ultima versión de Windows 8.1, hasta MS-Dos con windows 3.1, cualquier versión de Linux o Unix, o OSx, IBM OS/2, etc.

En el mercado hay varias sistemas de virtualización, los más populares son VMWare, que copa casi todo el mercado, sobre todo para grandes sistemas, también tiene una versión para uso personal la VMWare Player. Luego esta VirtualBox, en la actualidad de Oracle y con una versión de software libre, esta es la versión que a mi personalmente más me gusta para pequeños sistemas. Microsoft también tiene su sistema de virtualización, pero este daba problemas cuando intentabas instalar alguna versión de Linux, eso si con los Windows no daba ningún problema, en la actualidad no se como trabaja.

VirtualBox lo podemos encontrar para cualquier sistema operativo, desde Linux, Windows o OSx. Solo tenemos en la pagina de VirtualBox y podemos descargar la versión para muestro sistemas.

Download VirtualBox

Una vez instalado ya podemos crear nuestro primer sistema virtual.

Para crear nuestro sistema virtual tenemos que asegurarnos de tener espacio suficiente en el disco duro para crear el fichero que contendrá el disco virtual, una copia del sistema operativo que queramos crear, puede ser en CD, DVD o una imagen ISO.

Arrancamos el programa de VirtualBox,

Ubuntu de pruebas - VirtualBox -1

Para crear nuestra maquina pulsamos en el botón de “Nueva”, donde nos aparecerá esta venta. En la casilla de “Nombre” insertamos el nombre con con el que identificaremos nuestra maquina. Si el nombre hace referencia algún sistema operativo que reconozca el VirtualBox, este no cambiara automáticamente las casillas de “Tipo” y “Versión”. Teniendo solo que verificar que la versión es la correcta. En el caso de que no la reconozca lo tendremos que hacer manualmente. En el caso de las distribuciones linux, posiblemente no se encuentre en las opciones disponibles, a no ser que sean una de las habituales, Ubuntu, Suse, OpenSuse, Debian, RedHat, etc. Si no aparece podemos  seleccionar la opción de ” Other Linux (32 bit)” si es una versión de 32 bit, “Other Linux 64 bit” para una de 64 bit, o seleccionar la versión de la que se base esa distribución.

Captura de pantalla de 2015-01-29 13:38:47Lo siguiente sera indicar cuanta memoria va ha utilizar la maquina virtual, ha que tener en cuenta que esta se le quitara al la maquina anfitrión, por lo que hay que elegirla con cuidado. El VirtualBox indica una cantidad por defecto dependiendo del sistema elegido. Aunque nosotros podremos cambiarla a la cantidad que queramos. El VirtualBox también nos marca unas zona, de color verde y rojo, para estar tranquilos de no  perjudicar al sistema anfitrión.

Captura de pantalla de 2015-01-29 13:40:28En la siguiente venta seleccionaremos si nuestro sistema va ha tener o no disco duro, y si de tenerlo le asignaremos uno nuevo, o si por lo contrario este ya existe. Por internet hay muchos sistemas ya virtualizados, que lo único que tenemos que hacer es descargarlo, indicarle al VirtualBox que ese es el que queremos utilizar y listo. En este caso seleccionaremos la opción de “Usar un archivo de disco duro virtual existente“, seleccionamos el fichero descargado y ya lo tendríamos funcionando.

Captura de pantalla de 2015-01-29 13:41:15Si hemos elegido la opción de crear uno nuevo, la siguiente ventana nos pedirá que elijamos el tipo. Para empezar los mejor es dejar la opción por defecto, tipo de disco “VDI (VirtualBox Disk Image)“.

Captura de pantalla de 2015-01-29 13:42:13Los disco virtuales pueden ser de dos tipos, de “Tamaño fijo“, se creara un fichero con el mismo tamaño que tamaño tendrá nuestro disco virtual. O “Reservado dinámicamente“, en este caso el fichero que almacena el disco se ira ajusta a las necesidades de uso del disco virtual de la maquina creada. Esta opción no quiere decir que podremos usar todo el tamaño del disco real, el tamaño del disco virtual se ira ajusta hasta llegar al tamaño que fijaremos en la siguiente ventana.

Captura de pantalla de 2015-01-29 13:42:39En esta ventana estableceremos el tamaño que el disco duro va ha tener de nuestra maquina virtual. En esta ventana también configuraremos donde queremos que se graben los ficheros que van ha contener nuestra maquina virtual.

Captura de pantalla de 2015-01-29 13:43:13Y con esto solo nos queda pulsar el botón de “Crear“, y el VirtualBox creara los ficheros de configuración, de disco virtual, etc. de nuestra maquina.

Captura de pantalla de 2015-01-29 18:05:11Una vez que ya tengamos creada nuestra maquina solo nos queda configurar la maquina, para una configuración básica, solo tendremos que indicarle donde esta el sistema desde donde vamos hacer la instalación. Para ello pulsaremos sobre el botón de “Configuración“. Dentro de esta ventana iremos a la opción de “Almacenamiento“, seleccionaremos la unidad de “CD”, que nos indicara que esta “Vacía“. Luego en la parte derecha de la ventana , en la parte de “Atributos“, marcaremos la opción de “CD/DVD vivo” si la copia de nuestro sistema la tenemos en CD/DVD, o si por el contrario, nuestro sistema esta en un fichero ISO, pulsaremos el icono del cd para cargar la imagen.

Captura de pantalla de 2015-01-29 18:05:11La otra configuración básica que nos queda por hacer sera  elegir que tipo de red queremos para nuestra maquina virtual. Si solo queremos es tener un acceso básica a la red, usar internet, sin querer acceder a otras maquinas de la red, podemos dejar la opción por defecto “NAT“.

Captura de pantalla de 2015-01-29 18:24:02Pulsamos el botón de “Aceptar” para guardar la configuración y ya podemos pulsar el botón de “Iniciar”. Esto encenderá nuestra maquina como si pulsaremos el  botón de encendido de nuestra maquina física. Lo único que nos queda es instalar el sistema de la misma manera que lo haríamos en una maquina normal.

Windows 7 - 1

Esto es la creación de una maquina virtual básica. También se le puede configurar para que una de las carpetas del sistema anfitrión funcione como una unidad de red compartida, que cuando insertemos cualquier dispositivo USB automáticamente  se active en la maquina invitada, También podemos indicarle cuantos procesadores va ha tener, cuantas pantallas, etc. También, y esto es una posibilidad que más provecho le encuentro, cuantas tarjetas de red va ha tener, esto no quiere decir que las tengamos que tener físicamente, podemos tener una física y hasta cuatro virtuales, y además,  como queremos que funcionen, si puede incluirse como un equipo normal a la red, si por el contrario solo puede ser accesible desde otras maquinas virtuales de su propio grupo, etc.

Pero eso creo que sera para otro post. Si tienes alguna pregunta, no dudes en dejar un comentario.

Crear gráficos de datos en c#

graph_fixed_x_rangeLa mejor formar de ver y entender los datos que capturamos desde nuestros sensores, es mediante la utilización de gráficos.

Si trabajamos con C# esta tarea es relativamente sencilla, gracias al controlador que por defecto trae el Visual C#. Este controlador nos permite crear gráficos de diferentes formas, de lineas, tarta, columnas,  puntos, etc.

Los datos se los podemos facilitar tanto en tiempo real añadiéndolos directamente los valores al gráfico, o mediante una base de datos.

Para añadir el gráfico a nuestro formulario solo tendremos que añadir el controlador “Chart” que se encuentra dentro de la sección “Datos”.

Con esto, ya podríamos empezar a mostrar nuestros datos, el tipo de gráfico por defecto es un gráfico de columnas. para añadir los datos solo tendríamos que utilizar el siguiente comando.

Pero el sistema de gráficos de columnas no es que sea el más idóneo para mostrar la información de sensores, lo normal sera utilizar un gráfico de lineas, para cambiar el tipo de gráficos tendremos que ir  a:

  1. Propiedades del gráfico
  2. Series, Seleccionar la serie que queremos modificar (por defecto “Series1”.
  3.   En la sección “Gráfico”, en “ChartType”, seleccionar el tipo de gráfico.
  4.  Pulsar en “Aceptar”, y listo ya tenemos cambiado nuestro tipo de gráfico.

Si lo queremos hacer mediante código, tendremos que introducir la siguiente instrucción:

En la parte de “Series[“Series1″]”, en este caso hacemos la llamada utilizando el nombre de la serie, en este caso es el de por defecto “Series1”, también podemos hacer la llamada utilizando su posición en la lista de las series, acordándose que toda lista empiezan en el “0” (cero). Esto “Series[“Series1″]”, y esto “Series[0]”, seria lo mismo.

Y con esto ya tendríamos creado nuestro gráfico y seleccionado el tipo de gráfico para la muestra de datos básica, pero funcional.

Ejemplo simple de lo descrito en el artículo, ejemplo creado con Visual Studio Express 2012:

Como mandar un correo mediante Python

Enviar correo con Python y Gmail
Enviar correos mediante smtplib de python y una cuenta de gmail

En algunas ocasiones necesito enviar los resultados que me devuelve el arduino a mi teléfono para avisarme de alguna anomalía. Lo primero que se le viene a la cabeza a uno es hacer un programa para el móvil para recibir los datos, ahora que se ha puesto de moda hacer “app’s” para todo ( ya no son programas o aplicaciones ahora son “app’s”).

Pero yo no necesito un programa que me este ocupando espacio y memoria en el teléfono para recibir una alerta una vez al mes a lo sumo. Aprovechando que el “android” te pide una dirección de correo para poder acceder a “Google Play” y que además, esta en todo momento mirando el contenido de esa cuenta, lo mas fácil es que el arduino mande un correo a esa cuenta.  Por ello le he implementado una opción al programa que gestiona el arduino para que me mande el correo.

Para poder enviar un correo a través de Python, lenguaje con el que gestiono el arduino,  solo tenemos que hacer uso de la librería “smtplib”, esta librería nos proporciona todas la funciones necesarias para poder enviar el correo.

Lo primero que haremos el importar la función desde la librería.

Una vez que ya podemos utilizar la librería, creamos la variable que gestionara el envío.

Nos conectamos al servidor de correo saliente de gmail, smtp.gmail.com que esta a la escucha en el puerto 587, para utilizar cualquier otro servidor tendremos que cambiar el servidor y el puerto por el que este escuchando.

El servidor de gmail necesita que habilitemos el modo TTL, esto es uno de los métodos de enviar el correo de forma segura, el otro modo seria utilizar SSL.

Esto me ha dado problemas algunas veces, buscando por internet he visto que varia gente utiliza esta forma para activar el TTL.

Lo que hace la función “.ehlo()” es decirle a “EnviarCorreo” que se ponga en modo de enviar un correo. Es decir, ponemos la función en modo de enviar correo, le decimos que vamos ha enviar el correo utilizando TTL, y volvemos a indicarle que se vuelva poner modo de enviar un correo, esta vez, si para enviar el correo.

Antes de enviar el correo, nos identificamos en el servidor de la siguiente forma.

Ahora solo nos queda montar el correo que queremos enviar. Para ello tenemos que crear tanto la cabecera del mensaje, donde ira la dirección de quien lo envía, la dirección de quien lo recibe, el asunto del mensaje, y demás información que podemos incluir en la cabecera, y por ultimo crear el cuerpo del mensaje.

Esta seria una cabecera básica, al final del cuerpo incluimos dos saltos de linea, porque? no lo se aun.

Para crear el cuerpo solo tenemos que pasar el contenido del mensaje a una variable del tipo string.

Como en la cabecera, terminamos el cuerpo del mensaje con dos salto de linea, la explicación no la se todavía.

Y ya tenemos todo listo para enviar el correo.

Y con esto, y si todo esta bien, ya hemos enviado el correo. Ahora solo nos queda cerrar la comunicación con el servidor SMTP.

Y listo, ya hemos mando la alerta a nuestro teléfono móvil, y sin tener que instalar ninguna aplicación nueva y sin tener que hacer nada en el teléfono.

Que te ha parecido?

 

Enviar SMS con Python y la libreria PySerial

Mandar un SMS con Python
Mandar un SMS con Python

Algunos módem usb permiten recibir ordenes mediante comandos AT, con estos comandos podemos hacer muchas cosas. Hace años, muchos años, estos comandos los utilizábamos para configurar centralitas, realizar llamadas, obtener información del aparato, etc. Ahora esta técnica esta en desuso, pero aun así, algunos módems están preparados todavía para poderse programar con estos comandos.

Aprovechando la librería PySerial y python he creado un programa para cuando lee ciertos valores desde el arduino me los mande por SMS a mi móvil.

Para empezar con el programa tenemos que saber cual es el puerto serie del módem, en mi caso cuando pincho el módem usb al ordenador me crea tres puertos /dev/ttyUSB0, /dev/ttyUSB1 y /dev/ttyUSB2, para windows no tengo ni idea que hace.

Una vez que sabemos los puertos del módem, tenemos que saber cual de ellos es el que responde a los comandos AT. Para saber que puerto responde a los comandos hice este programa

Con este programa, lo que hacemos es abrir el puerto correspondiente, y le enviamos el comando “AT”. Si el módem sabe que es lo que le estoy enviando nos devolverá “OK”, en caso contrario “ERRROR”, o saltara la excepción del programa.

También lo podemos probar con un programa de terminal, como el “Serial port Terminal” o el “minicom” en Linux, o con el “Hiperterminal” en windows. Solo tenemos que abrir el puerto a probar y escribir “AT” y esperar la respuesta

Así con todos los puertos disponibles, en mi caso me admitió peticiones por los puertos /dev/ttyUSB1 y /dev/ttyUSB2.

Una vez que sabes el puerto, podes probar ha enviar un SMS de la siguiente forma.

Y con esto ya podemos mandar SMS desde python, esta un poco chapucero, pero para lo hace y lo que he tardado en el, sobra la mitad.

Ya solo nos queda leer los datos del arduino y mandar el SMS.