Como actualizar Ubuntu 12.10 a Ubuntu 13.10

Para actualizar la versión de nuestro Ubuntu 12.10 Quantal Quetzal,  a la ultima versión, en la actualidad Ubuntu 13.04 Raring Ringtail, podemos hacerlo de dos formas.

1º Forma de actualizar Ubuntu 12.10 a Ubuntu 13.03

Para ello solo tendremos que ir al aplicaciones instaladas. Ejecutar el programa “Actualización de Software” en el escritorio del Unity, o escribir lo siguiente en un terminal.

update-manager -d

Esto nos abrirá el programa de actualización de software, buscara si hay nuevas versiones y nos dirá si queremos actualizarnos a la nueva versión. En el caso de que no nos muestre que hay una nueva versión, pulsaremos sobre el botón de “Configuración”, y en pestaña de “Actualizaciones”, en la opción de “Notificarme una versión nueva de Ubuntu” seleccionamos la opción de “Para cualquier versión nueva”, y tecleamos la clave de root. Pulsamos el botón de “Cerrar”, y cerramos el programa de “Actualización de software”. volvemos ha ejecutar el programa, y ahora si, nos tiene que aparecer que ha encontrado una nueva versión. Pulsamos sobre le botón de “Actualizar”, nos identificamos como root, introduciendo la clave, y seguimos las instrucciones que se nos muestra en pantalla.

2º Forma de actualizar Ubuntu 12.10 a Ubuntu 13.04

Este método se basa en utilizar comandos  de consola, es el recomendado para actualizar servidores que estén basados en Ubuntu. Aunque si en una versión de escritorio, tenemos problemas para actualizar de la 1º forma, podemos utilizar esta.

Para empezar abrimos un terminal y ejecutamos el siguiente comando.

do-release-upgrade -d

Si no tenemos instalado este programos lo podemos instalar de la siguiente manera

sudo apt-get install update-manager-core

 

Como instalar una imagen con el comando DD

[singlepic id=19 w=320 h=240 float=right]Para instalar una imagen ISO o BIN, en linux podemos utilizar el comando que viene por defecto “DD”.

Este comando nos permite copiar imágenes ISO o BIN en cualquier dispositivo que tengamos montado en nuestro sistema, ya sea un disco duro, CD/DVD, como unidades USB o tarjetas de memoria.

Para utilizar este comando solo tendremos que pasarle como parámetros la ruta donde se encuentra el fichero que vamos a instalar, la ruta donde se encuentra el dispositivo donde vamos ha instalar la imagen, y el tamaño del bloque de los datos, esto ultimo no es obligatorio pero si recomendable.

Ejemplo de copia de una imagen en un dispositivo USB:

sudo dd if=/ruta/del/Fichero.iso of=/dev/sdh bs=4M

Explicación del ejemplo:

  • “if=” : ruta donde se encuentra el fichero ISO o BIN que vamos ha instalar en el dispositivo deseado.
  • “of=” : Ruta donde esta montado el dispositivo donde vamos ha copiar la imagen ISO o BIN.
  • “bs=” : tamaño del bloque de datos que se va ha utilizar, no es obligatorio, pero en algunos copias, da problemas el no utilizarlo.

En este ejemplo el dispositivo USB esta montado en “/dev/sdh” pero en cada caso puede ser diferente. Para saber donde tenemos nuestras unidades montadas, solo tenemos que utilizar el comando “fdisk” como root:

sudo fdisk -l

Este comando nos muestra la ruta y mas información de como están montadas nuestras unidades.

Para copiar la imagen a un disco duro lo haríamos de la siguiente forma:

Para un Ata:

sudo dd if=/ruta/del/Fichero.Iso of=/dev/hdb bs=1M

Para un serial Ata

sudo dd if=/ruta/del/Fichero.Iso of=/dev/sdb bs=1M

En los dos ejemplos copiaríamos el fichero Iso a la unidad montada en “/dev/hdb/ para el Ata y en “/dev/sdb” para el Serial Ata, con un tamaño de bloque de datos de 1M.

Para copiarla en una unidad  de cd, lo haríamos de la siguiente forma:

sudo dd if=/Ruta/del/Fichero.Iso of=/dev/cdrom

Y esto seria todo lo que necesitamos para copiar nuestras imágenes en cualquier unidad montada en nuestro sistema.

Problemas con el puerto de Arduino en Ubuntu (Linux)

[singlepic id=1 w=320 h=240 float=right]En un sistema linux, no todos los usuario pueden tender acceso a poder manejar los puertos. Solo los usuarios que estén en el grupo “dialout” tiene permiso para manejar los puertos. Lo normal es que nuestro usuario no este dentro de ese grupo, por lo que tendremos problemas para poder acceder al puerto que crea el arduino. Para solucionar este problema solo tendremos que añadir nuestro usuario al grupo “dialout” de la siguiente manera.

sudo usermod -a -G dialout <NombreDeUsuario>

Nos pedirá la contraseña de root. y con esto, nuestro usuario ya sera miembro del grupo “dialout”.

Ya solo nos queda cerrar la sesión para que los cambios efectuados tenga efecto y podamos acceder al puerto del Arduino desde nuestro usuario.

Obtener la temperatura con Arduino y un termistor

En este proyecto vamos ha ver como podemos obtener la temperatura mediante la utilización de un termistor. Lo primero, que es un termistor, esta es una simple resistencia que varia según la temperatura que tenga, con el valor devuelto por la resistencia y una pequeña formula podemos calcular que temperatura hace.

Esquema del circuito:

El esquema de este circuito es muy sencillo, esta basado en un simple divisor de tensión, en este caso quedaría de la siguiente manera.

[singlepic id=3 w=320 h=240 float=center]

Este esquema es el utilizado en la mayoría de sensores, simplemente cambiando el termistor, por un lcr, por ejemplo, tendríamos un sensor para detectar la luminosidad.

En mi caso el termistor no es de 10 k, como se muestra en el esquema, sino que es de 100k (NJ28 NTC Thermistor,2.8mm,100K,1%), esto no varia mucho lo fundamental del sistema, ya que en el código para el arduino , le diremos tanto el valor de resistencia del termistor, como el valor de la resistencia secundaria.

Esquema de la conexión en al arduino:

[singlepic id=10 w=320 h=240 float=center]

Para calcular la temperatura necesitamos saber el valor beta de nuestro termistor, normalmente, este valor lo suele facilitar el fabricante de la resistencia, pero si el fabricante no nos lo da o no sabemos el fabricante, lo podremos calcular sabiendo la temperatura a la que esta el termistor, apuntamos el valor de resistencia ha esa temperatura y la temperatura en grados Kelvin, después elevamos la temperatura y volvemos a puntar la resistencia y la temperatura. Cuanto mas diferencia de temperatura mas fiable sera el calculo.

Por ejemplo, ponemos el termistor sobre un hielo, con otro termómetro miramos la temperatura, por ejemplo T1 = 3º + 273,15 y resistencia R1 = 34500 Ohm. Luego lo metemos el agua caliente y hacemos la misma comprobación T2 = 80º + 273,15 y R2 = 134 Ohm. Con esos datos aplicamos la siguiente formula:

beta=(log(RT2/RT1))/((1/T2)-(1/T1))

Quedando de la siguiente manera:

beta = (log(143 / 345000)) / ((1/353,15)-(1 / 276,15))

beta = 4283,9970482988 = 4284

Código para el Arduino.

#include <stdio.h>
#include <math.h>

int analogPin=0;     // Pin donde esta conectado el divisor de tension en el Arduino

float Vin=5.0;       // [V]       Voltage de entrada en el divisor de tension
float Raux=10000;    // [ohm]     Valor de la resistencia secundaria del divisor de tension
float R0=100000;     // [ohm]     Valor de resistencia nominal del termistor (NTC) a 25ºC
float T0=298.15;     // [K] (25ºC)

float Vout=0.0;      // [V]        Voltage given by the Voltage-Divider
float Rout=0.0;      // [ohm]      Resistencia actual del Termistor (NTC)

// Valores para calcular el valor Beta, si no lo sabemos
// float T1=273;     // [K]        Temperatura del 1º punto del test (en grados Kelvin)
// float T2=373;     // [K]        Temperatura del 2º punto del test (en grados Kelvin)
// float RT1=19750;  // [ohms]     Resistencia a 273K grados Kelvin (0ºC)
// float RT2=2150;   // [ohms]     Resistencia a 373K grados Kelvin (100ºC)

float beta=0.0;      // [K]        Parametro Beta
float Rinf=0.0;      // [ohm]      Parametros Rinf
float TempK=0.0;     // [K]        Temperatura de salida en grados Kelvin
float TempC=0.0;     // [ºC]       Temperatura de salida en grados Celsius

int iCont;            // Contador de ciclos, par el calculo de la temperatura media
float cTemp1;         // Variable temporal para acumular las temperaturas leidas 

void setup() {
  // Configuramos el puerto Serie
  Serial.begin(9600);

  // Configuramos el pin del Arduino en entrada
  pinMode(analogPin, INPUT);

  // Parametros generales para el calculo
  // Formula para calcular el valor beta si no disponemos de el
  // beta=(log(RT1/RT2))/((1/T1)-(1/T2));
  // Valor beta, los fabricantes suelen disponer ya de este valor, 
  // mirar en la tabla de carateristicas del termistor
  beta = 4380;
  Rinf=R0*exp(-beta/T0);
}

void loop()
{
  cTemp1=0;  
  for (iCont = 1; iCont <= 500; iCont ++)
  {
    // Cálculo del valor de la resistencia termistor (NTC) actual (a través de Vout)
    Vout=Vin*((float)(analogRead(analogPin))/1024.0); 
    Rout=(Raux*Vout/(Vin-Vout));

    // Calculo de la temperatura en grados Kelvin
    TempK=(beta/log(Rout/Rinf));
    // Calculo de la temperatura en grados Celsius
    TempC=TempK-273.15; 
    // Almacenamos la temperatura (grados Celsuis) actual para despues obtener la media
    cTemp1 = cTemp1 + TempC; 
    // Hacemos una pausa de 10 milisegundos    
    delay(10);
  }

  // Calculamos la temperatura media
  TempC = cTemp1/iCont;

  // Mostramos la temperatura media en grados Celsius
  Serial.println(TempC);

  // Hacemos una pausda de 1 seg.
  delay(1000);
}

Y con esto ya tendríamos un termómetro digital con nuestro Arduino.