martes, 12 de noviembre de 2013

Raspberry Pi: Instalar PYWWS

Como instalar el programa PYWWS para recoger los datos de una estación meteorológica.


Instalar Git

    sudo apt-get install git

Instalar python-dev

    sudo apt-get install python-dev
    sudo apt-get install libudev-dev

crear un directorio para descargar y descomprimir los ficheros de instalación

    cd ~
    mkdir dls
    cd dls


Descargar las librerías y utilidades necesarias

    wget http://pypi.python.org/packages/source/C/Cython/Cython-0.16.tar.gz
    wget http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.9/libusb-1.0.9.tar.bz2
    git clone https://github.com/gbishop/cython-hidapi.git


Descomprimir los ficheros que habíamos descargado.

    tar xvzf Cython-0.16.tar.gz
    tar xvjf libusb-1.0.9.tar.bz2

Compilar e instalar Cython 0.16 (esto puede llevar un tiempo)

    cd ~/dls/Cython-0.16
    sudo python setup.py install
    cd ~/dls/libusb-1.0.9
    ./configure
    make  
    sudo make install            
    cd ~/dls/cython-hidapi

Editar el fichero de conflagración: setup.py

    sudo nano setup.py

Cambiamos la linea:

   os.environ['CFLAGS'] = "-I/usr/include/libusb-1.0"
a
   os.environ['CFLAGS'] = "-I/usr/local/include/libusb-1.0"


Cambiamos la linea:

   os.environ['LDFLAGS'] = "-L/usr/lib/�i386-linux-gnu -lusb-1.0 -ludev -lrt"
a
   os.environ['LDFLAGS'] = "-L/usr/lib/arm-linux-gnueabihf -lusb-1.0 -ludev -lrt"


Copiar el fichero libudev.so.0

   sudo cp /lib/arm-linux-gnueabihf/libudev.so.0 /usr/lib/arm-linux-gnueabihf/libudev.so
   sudo python setup.py install


Descargar la ultima versión pywws http://pypi.python.org/pypi/pywws/

   cd ~
   sudo mkdir weather
   cd weather
   sudo git clone https://github.com/jim-easterbrook/pywws.git

Conectar la estación a la Raspberry con el conector USB

Cambiamos al directorio:

   cd ~/weather/pywws

Comprobamos la conexion de la estación meteorológica.

sudo python -m pywws.TestWeatherStation





Debería ver una serie de números hexadecimales si la conexión está funcionando.
Si no tiene conexión o no esta conectada:

Si esta conectada daría:
pi@raspberrypi ~/weather/pywws $ sudo python -m pywws.TestWeatherStation
  
Ya tenemos instalado el programa ahora falta configurarlo.
En un próximo estará explicado.

sábado, 9 de noviembre de 2013

Raspberry PI: Instalar Transmission.

Con nuestra Raspberry podemos crear un centro de descargas, con un consumo mínimo. Con un pendrive de 16G, su consumo es ínfimo, es suficiente un cargador de 0,6A para que funcione.

Configuración de las carpetas de descarga

Para que el programa descargue en el pendrive que utilizamos como almacenamiento, hay que crear varias carpetas. En la entrada "Crear un pendrive", puedes ver como hacerlo.
  • Carpeta de descarga de ficheros.
  • Carpeta de almacenamiento de incompletos.
Carpeta de descarga: descarga
cd /media/pendrive
sudo mkdir descargas
sudo chmod 777 descargas

Carpeta de almacenamiento de incompletos: partes
cd /media/pendrive
sudo mkdir partes
sudo chmod 777 partes

Instalación del programa:

Ejecutamos el comando:

  •  sudo apt-get -y install transmission-daemon
Una vez instalado, debemos para el demonio para poder configurarlo.

  •   sudo service transmission-daemon stop

 Configuración del programa:

Una vez parado el programa, configuramos los parámetros de trabajo.
Editamos el fichero de configuración
  •  sudo nano /var/lib/transmission-daemon/info/settings.json
Modificaremos los siguientes parámetros:

Directorio donde se guardaran los ficheros descargados:
 "download-dir": "/var/lib/transmission-daemon/downloads",

cambiamos a:

"download-dir": "/media/pendrive/descargas",

Habilitar que las partes se guarden en un directorio diferente a las dercargas:
"incomplete-dir-enabled": false,

cambiar por

"incomplete-dir-enabled": true,

Directorio donde se guardaran las partes:
"incomplete-dir": "/root/Downloads",

cambiar por

"incomplete-dir": "/media/pendrive/partes",

Habilitar las aplicaciones que pueden conectarse al RPC:
Necesario para poder conectarnos mediante la pagina web. xxx.xxx.xxx.xxx:9091
Por defecto esta habilitada, si no estuviera, se tiene que habilitar
"rpc-enabled": true,

Habilitar las direcciones para conectarse.
Por defecto viene 0.0.0.0. Si queremos limitar a una dirección IP, la pondremos aquí.
"rpc-bind-address": "0.0.0.0",

Deshabilitar las listas RPC :
Si no se deshabilita, buscaría esa lista para ver las direcciones que pueden acceder.

"rpc-whitelist-enabled": true,

 Cambiamos por

"rpc-whitelist-enabled": false,

Usuario para conectarse:
Por defecto es "transmission". Lo podemos cambiar a gusto del usuario.
"rpc-username": "transmission",

Password
Por defecto es "transmission ".
"rpc-password": "{75e10b6e7306b07d013a7d866eea98fe484e12cd/RzC0ohJ",
Para cambiarla, borramos lo que hay entre las comillas y escribimos la nueva contraseña.

Definir el numero de descargas:
Definimos cuantas descargas se realizan simultáneamente. Por defecto es 5.
"download-queue-size": 5,




Una vez configurado, hay que arrancar el demonio para que se ejecute. Para ello, ejecutamos el comando:

  • sudo /etc/init.d/transmission-daemon start

 Acceso al programa:

El acceso se hace mediante la web del programa. La dirección es la que tenga la Raspberry, (por ejemplo 192.168.0.22)
Para acceder seria 192.168.0.22:9091


Raspberry PI: Montar un Pendrive

Como añadir un Pendrive a un Raspberry.

Para almacenar información en un Raspberry, se puede utilizar cualquier dispositivo USB. Para ello es necesario utilizar un HUB con alimentación externa, ya que el Raspberry no puede alimentarlo.

Primero: Identificar la direccion del Pendrive.

Sin tener conectado el Pedrive, ejecutamos la orden:
  • sudo fdisk -l
  Ahora conectamos el pendrive y ejecutamos el comando de nuevo.

 En la utlimas lineas se muestra el pendrive, y el punto de montaje.
Como se ve, la dirección es /dev/sda1. El pendrive lo formatee en el sistema de archivos es EXT4. Pero se puede formatear en FAT32, para que sea compatible con otros sistemas operativos.

Segundo: Crear el punto de montaje.

De esta forma, podremos acceder a el. Se creara una carpeta dentro del directorio /media. En mi caso lo llamare 80G. Lo podemos hacer con el comando:
  •  sudo mkdir /media/80G



Tercero: Modificar /etc/fstab
Si no modificáramos este archivo, habría que crear la partición cada vez que se arrancar la Raspberry.
Para modificarla, ejecutamos el comando:
  • sudo nano /etc/fstab
añadimos la linea
 Quedando el fichero de la siguiente forma:

Para que los cambios tengan efecto se debe de resetear o ejecutar el comando:

  • sudo mount -a

Si nos hemos equivocado no mostrar el siguiente error:

Si revisamos lo que escribimos anteriormente, nos daremos cuenta que pusimos 
/dev/sda y lo correcto es /dev/sda1



viernes, 8 de noviembre de 2013

Raspberry Pi: Actualizar el software

Actualización del Software

Una vez instalado por primera vez es muy conveniente actualizar el software. Para ello debemos de teclear los siguientes comandos:
  • sudo apt-get update
  • sudo apt-get upgrade.
Es recomendable  realizarlo cada cierto tiempo.

Raspberry PI: Primeros pasos

Configuración mínima de la Raspberry

Cuando se accede por primera vez al Raspberry. Aparece la siguiente pantalla.
En ella nos indica que antes de empezar debemos configura la tarjeta con el comando:

sudo raspi-config

En el muestra las siguientes opciones:
  1. Expand filesystem
  2. Changue User Pasword
  3. Enable Boot to Desktop/Scratch
  4. Internationalisation Options
  5. Enable Camara
  6. Add to Rastrack
  7. Overclock
  8. Advanced Options
  9. About raspi-config

Opción 1 – Expandir el sistema de archivos (Expand Filesystem)

Esta opción permite expandir el sistema operativo para que utilice todo el espacio disponible en la tarjeta. Cuando se instala Raspbian la imagen solo ocupa 2 GB, por lo tanto es necesario ejecutar esta opción para que pueda utilizarse todo el espacio.
Cuando termina pide que se resete, para que el sistema tome todo el espacio.

Opción 2 –  Cambiar la contraseña del usuario Pi (Change User Password)

Por defecto el usuario es pi y la contraseña es raspberry. Para tener seguridad tenemos que cambiar la contraseña.
Mucho cuidado al cambiar la contraseña. Por defecto el idioma esta configurado en ingles. Si se utiliza un signo en la contraseña, al cambiar el idioma a español, podría no reconocer la nueva clave. Es conveniente utilizar en este paso una contraseña que no utilicé ningún símbolo. Cuando cambiemos el idioma, si podemos poner una clave que contenga signos.
Por seguridad, la clave la pide dos veces.

Opción 3. Activar el escritorio al iniciar (Enable Boot to Desktop/Scratch)

Esta opción permite que el Raspberry Pi después de iniciar el sistema, comience inmediatamente en un interfaz X o en el programa scratch, en vez de en el terminal de consola de Linux.

Opción 4. Opciones de internacionalización (Internationalisation Options)


Esta opción permite modificar el lenguaje del sistema operativo, la zona horaria y la distribución de su teclado.
  • Lenguaje del sistema: He dejado el ingles y  el español, por si algunos programas solo tienen compatibilidad con caracteres ingleses. 
          Se selecciona pulsado la tecla espaciadora. 
          Una vez seleccionado hay que poner por defecto el idioma español

  • Zona Horaria: Selecciono Madrid.







    • Configuración del teclado: Se debe resetear el Raspberry, antes de seleccionar el teclado. Algunas veces, no se puede escoger el idioma español, porque el sistema no lo tiene configurado. Selecciono Generic 102-key intel PC, idioma español, escojo la posición del ALTGR (derecha) escojo la tecla de acciones especiales y le digo que si, que quiero salir del servidor X con ctrl+alt+backspace.

    Opción 5. Activar la cámara (Enable Camara)

    Si tenemos la cámara de  Raspberry, debemos activarla para poder utilizarla.

    Opción 6. Añadir a Rastrack (Add to Rastrack)

    Con esto autorizamos a que nuestra Raspberry muestre su ubicación en la pagina de Rastrack .

    Opción 7. Overclock

    Permite aumentar la velocidad del procesador. Pero al aumentar la velocidad.
    1. La vida del dispositivo se disminuye considerablemente. 
    2. Generara más calor, por lo tanto es recomendable tener disipadores en el procesador, en circuito de Ethernet y en regulador de energía. 
    3. Se necesita una fuente de alimentación con mas potencia.
    Es mejor no modificarla.

    Opción 8. Opciones Avanzadas (Advanced Options)

     

    • Overscan: Soluciona el problema que aparece en algunos monitores, al presentar unas lineas negras.
    • Hostname: Para identificar el dispositivo en la red. Solo se pueden utiliza números y letras.
    • Memory Split: Definimos la memoria que se adjudica a los gráficos. Hay que tener presente, que si la aumentamos demasiado, disminuiremos el rendimiento del procesador.
    • SSH: Muy importante e imprescindible, activa la conexión remota por SSH
    • SPI:  Activar el Bus SPI desde el kernel.
    • Update: actualiza el sistema a la última versión, muy recomendable.

    Raspberry PI: Cambiar la dirección IP

    Como cambiar la dirección IP de DHCP a Fija.

    Por defecto al grabar la tarjeta SD con la imagen de Raspbian, la configura para que este como DHCP.
    En mi caso, no esta en funcionamiento el servidor de DHCP. Por lo que no puedo acceder al Raspberry.
    Accediendo al lector de tarjetas de SD. Configuro la red de la tarjeta.
    En la figura anterior vemos dos figuras de Pendrive.
    • boot
    • Sistema de archivos de 2,9 GB
     Abrimos la pantalla de terminal y accedemos al directorio "media".
    En el vemos los dispositivos que se han montado. En mi caso

    ea7tb@ea7tb:~$ cd /media

    ea7tb@ea7tb:/media$ ls

    548da502-ebde-45c0-9ab2-de5e2431ee0b  boot  Despacho

    ea7tb@ea7tb:/media$ cd 548da502-ebde-45c0-9ab2-de5e2431ee0b/

    ea7tb@ea7tb:/media/548da502-ebde-45c0-9ab2-de5e2431ee0b$ ls
    bin   dev  home  lost+found  mnt  proc  run   selinux  sys  usr
    boot  etc  lib   media       opt  root  sbin  srv      tmp  var

    ea7tb@ea7tb:/media/548da502-ebde-45c0-9ab2-de5e2431ee0b$

    Se accede a este directorio que correspondería a  "Sistema de archivos de 2,9 GB"
    Se accede al directorio etc/network
    ea7tb@ea7tb:/media/548da502-ebde-45c0-9ab2-de5e2431ee0b$ cd etc/network

     ea7tb@ea7tb:/media/548da502-ebde-45c0-9ab2-de5e2431ee0b/etc/network$ ls
    if-down.d  if-post-down.d  if-pre-up.d  if-up.d  interfaces  run


    Comprobamos que esta el fichero "inetrfaces". Para mas seguridad hacemos una copia del fichero anterior.

    sudo cp interfaces interfaces.old

    Editamos el fichero con "nano":

    sudo nano interfaces

    Borramos las lineas:
    • iface eth0 inet dhcp
    • iface default inet dhcp
    Añadimos las lineas:
    • auto eth0
    • iface eth0 inet static
    • address 192.168.1.52
    • netmask 255.255.255.0
    • gateway 192.168.1.1

    Grabamos Ctrl + O
    Salimos Ctrl + X

    Ya esta configurada la Raspberry desde el lector de tarjetas SD.


    Servidor DNS:

    Se debe modificar en el fichero /etc/resolv.conf, la direccion del servidor de DNS.
    Si no lo hacemos, no se podra conectar a internet.
    sudo nano /etc/resolv.conf

    Cambiar:
    • nameserver 192.168.1.249
    por
    • nameserver 80.58.61.250
       











    Raspberry PI desde XP


    Como grabar Raspberry Pi desde XP.

    Normalmente trabajo con Ubuntu, pero en alguna ocasión me han preguntado como hacerlo desde XP.
    La distribucion que utlizo es Rapbian
    logo
    Se puede descargar de la pagina oficial: http://www.raspberrypi.org/downloads
    No pongo el enlace a la  descarga directa, porque se actualiza periódicamente y daría error.
    Se descaga el fichero y se descomprime.
    Para grabar la imagen utilizo el programa: Win32DiskImager.

    Grabamos la imagen en la tarjeta SD.


    Ya tendríamos grabada la imagen en la tarjeta SD.
     

    Consideraciones de la tarjeta SD.

    En la mayoria de la paginas we que he visto, dicen que con una de 4GB de capacidad, es suficiente.
    Pero con el precio que tienen actualmente. Recomiendo una de 16GB. Puede ser util, tener ese espacio para posibles ampliaciones.
    La unico que si recomiendo, es que sean del tipo "8". Las de caractericticas inferiores, se suelen corromper cuando se apaga accidentalmente.



    jueves, 3 de octubre de 2013

    TEA5767. Receptor FM para el Arduino.

    Este chip es una radio de FM estéreo.

    Características del chip:
    • Tamaño:  7x7x1.4 mm, SOT358 
    • Consumo: 13mA  el voltaje de funcionamiento va de 2,5 a 3,5V
    • Comunicación: Bus I2C. Dirección 0x60
    • Banda de recepción: 87.5 a 108 MHz
    • Control automático de ganancia.
    • Salida de audio estéreo. Pero a muy bajo nivel, es necesario usar un amplificador para poder oirlo.
    • La antena necesaria es de 75cm, que 1/4 de longitud de onda a 100MHz.
    • La frecuencia se controla con una palabra de 14 bits


    Para mas información sobre el chip, se puede ver la nota de aplicación de Philips
    El chip

    El chip suelto, no nos serviría para nada. Pero en Ebay se puede encontrar montado en una placa con todos sus elementos accesorios. El tamaño del modulo es 11.2x11mm
    Como se ve, solo tiene 10 patillas, el esquema seria:

    En un próximo articulo, haré una pequeña radio o un radio despertador con los siguientes elementos:
    • Modulo TEA5767
    • Arduino NANO
    • Amplificador 2W.
    • LCD 16x2.
    •  

    jueves, 29 de agosto de 2013

    Arduino Nano

    Nueva adquisición.
    Este arduino de principio lo voy a utilizar para que controle un manipulador morse.

    Problemas al intentar subir el programa.
    • Cuando lo encendía, el ordenador detectaba que esta conectado. 
    • Pero cuando le cargaba el programa, daba un error el cargador. 
    • El Led "L" esta intermitente.

    BasicUploader.java:126

    La solución.
    Desconecta la impresora USB del ordenador y esperar unos 20 segundos después de pulsar el botón de reset. Mano de santo.

    Leyendo en internet, encontré que algunos imitaciones del arduino nano, no cargan el programa cuando hay otro dispositivo USB conectado al ordenador.
    Pero después de la primera subida de un programa, desaparece este fallo.

    Para Windows es necesario el driver para el dispositivo FT232R, que se crea cuando conectamos la placa.
    Los drivers y las instrucciones se encuentran en la pagina de ftdichip
    • Instrucciones: http://www.ftdichip.com/Support/Documents/InstallGuides.htm
    • Drives: http://www.ftdichip.com/Drivers/VCP.htm
    Saludos
     

    martes, 27 de agosto de 2013

    LCD Keypad Shield


    Existe en el mercado la placa LCD Keypad Shield.

    Es bastante cómoda de programar con pocas lineas tenemos
    • LCD 16x2
    • 7 pulsadores. Uno de ellos Reset.
    Utiliza las lineas:
    • D4, D5, D6, D7, D8, D9
    • RST
    • VCC y GND.
    Problemas.
    De las dos placas que he probado,
    • Una de ella tenia mal el potenciómetro de contraste.
    • A las dos le faltabas la resistencia R1 de 1K y el led PWR.
    • Las resistencias para los pulsadores no son de muy buena calidad y he tenido que medir la tensión que entregaban para poder determinar el valor que debía de medir el conversor.
    En código siguiente muestra el tiempo que lleva funcionando el arduino y la tecla que pulsamos.

    #include <LiquidCrystal.h>
    #include <Wire.h>
    /*******************************************************

    Este programa se utiliza para controlar el LCD Shield

    ********************************************************/

    // seleccionar los pines usados por el lcd
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

    // define los valores utilizados por el panel y los botones.
    int lcd_key     = 0;
    int adc_key_in  = 0;
    #define btnRIGHT  0
    #define btnUP     1
    #define btnDOWN   2
    #define btnLEFT   3
    #define btnSELECT 4
    #define btnNONE   5

    // leer los botones
    int read_LCD_buttons()
    {
     adc_key_in = analogRead(0);      // leer el valor leido en el puerto A0

     if (adc_key_in > 1000) return btnNONE; //valor cuando no esta pulsado ningun boton
     // For V1.1 us this threshold
     if (adc_key_in < 50)   return btnRIGHT;
     if (adc_key_in < 250)  return btnUP;
     if (adc_key_in < 450)  return btnDOWN;
     if (adc_key_in < 600)  return btnLEFT;
     if (adc_key_in < 850)  return btnSELECT;




     return btnNONE;  // cuando falla, ira a ninguno.
    }

    void setup()
    {
      Serial.begin(9600);
     lcd.begin(16, 2);              // Definir el lcd
     lcd.setCursor(0,0);
     lcd.print("Pulsa un boton");
    }
     
    void loop()
    {
     lcd.setCursor(9,1);            // posiciona el cursor para indicar el tiempo
     lcd.print(millis()/1000);      // Muestra los segundos desde el comienzo


     lcd.setCursor(0,1);            // posiciona el cursor en la segunda linea.
     lcd_key = read_LCD_buttons();  // lee los botones

     switch (lcd_key)               // dependiendo del boton pulsado hara una accion
     {
       case btnRIGHT:
         {
         lcd.print("RIGHT ");
         Serial.println("RIGHT");
         delay(300);
         break;
         }
       case btnLEFT:
         {
         lcd.print("LEFT   ");
         Serial.println("LEFT   ");
         delay(300);
         break;
         }
       case btnUP:
         {
         lcd.print("UP    ");
         Serial.println("UP    ");
         delay(300);
         break;
         }
       case btnDOWN:
         {
         lcd.print("DOWN  ");
         Serial.println("DOWN  ");
         delay(300);
         break;
         }
       case btnSELECT:
         {
         lcd.print("SELECT");
         Serial.println("SELECT");
         delay(300);
         break;
         }
         case btnNONE:
         {
         lcd.print("NONE  ");
        delay(300);
         break;
         }
     }
    }

    sábado, 9 de marzo de 2013

    Arduino: Error "WProgram.h: No existe el fichero o el directorio"

    Este error aparece cuando trabajando con el compilador Arduino 1.01, utilizamos una librería de una versión anterior a la 1.01 y en ella hay una llamada a  "WProgram.h"

             #include "WProgram.h"

    Aparece el error "WProgram.h: No existe el fichero o el directorio"

    Dicho error es debido a que el compilador 1.01 no utiliza WProgram.h.

    Hay que sustituir en los ficheros *.cpp y *.h de la librería

            #include "WProgram.h" 
    por

           #include "Arduino.h"  

    Desapareciendo dicho error.
    Fácil, no?

    jueves, 14 de febrero de 2013

    Arduino: Modulo I2C LCD

    El arduino están limitadas el numero de entradas y salidas.
    Para aumentar dicho numero tiene implementado el Bus I2C. Con el podemos expandir el numero de periféricos utilizando solamente dos pines.

    El modulo que se describe, es un interfase I2C para LCD.
    • Con solo dos lineas podemos gobernar un LCD compatible con el chip 44870.
    • Dirección del Bus 0x20 (no se puede modificar)
    • Transistor para la retro iluminación del LCD.
    • Potenciómetro de contraste.
    • Preparado para soldar directamente al LCD
    Para utilizarlo es recomendable utilizar la librería LiquidCrystal_I2C.

    Ejemplo para un dsiplay 16x4

    /*******************************************
    Prueba del funcionamiento del dispaly
    Proyecto
    LCD 16x4 I2c
      ** EA7TB **
    www.ea7tb.com
    */
    #include <Wire.h>
    #include <LCD.h>
    #include <LiquidCrystal_I2C.h> 

    #define BACKLIGHT_PIN     7
    #define  LED_OFF  0
    #define  LED_ON  1


    LiquidCrystal_I2C  lcd(0x20,4,5,6,0,1,2,3);

    void setup()
    {
      lcd.begin (16,4);  // inicializo el LCD 20x4
      // Switch on the backlight
      lcd.setBacklightPin(BACKLIGHT_PIN,NEGATIVE);
      lcd.setBacklight(LED_ON);

      lcd.home();
     
      lcd.setCursor(0, 0);

      for(int i=0;i<16;i++) lcd.print("*");
      lcd.setCursor(0, 1);

      lcd.print(" Hola mundo   ");
      lcd.setCursor(0,2);
      lcd.print("Display 16x4");
      lcd.setCursor(0, 3);
      for(int i=0;i<16;i++) lcd.print("*");
     
      delay(1000);
      lcd.clear();
    }

    void loop()
    {
      lcd.setCursor(0,0);
      lcd.print("Proyecto");
      lcd.setCursor(0,1);
      lcd.print("LCD 16x4 I2C ");
      lcd.setCursor(0,2);
      lcd.print("  ** EA7TB **");
      lcd.setCursor(0,3);
      lcd.print("www.ea7tb.com");
      delay(5000);
     }


    Una vez modificado el potenciómetro.






    domingo, 10 de febrero de 2013

    Arduino: Buscador de dispositivos I2C

    Por regla general, sabemos la dirección I2C de un dispositivo o integrado.
    Los programas para obtener la dirección del bus se denomina "sniffer".
    El programa original lo podemos descargar de la siguiente dirección:
    http://playground.arduino.cc/Main/I2cScanner

    jueves, 24 de enero de 2013

    Arduino: Errores con la libreria Wire.

    En la librería "Wire.h", han desaparecido los términos "receive" y "send".
    Cuando escribimos un programa utilizando la librería aparecerán los siguientes  errores:
    • error: ‘class TwoWire’ has no member named ‘receive’
    • error: ‘class TwoWire’ has no member named ‘send’
    Dichos términos se tienen que sustituir por:

    • receive por read.
    • send por write
    ¿Facil?
    Saludos

    domingo, 20 de enero de 2013

    Arduino: Incorporar nuevas librerias.

    Cuando queremos utilizar una nueva librería para Arduino, hay que cargar dicha librería en los ficheros de Arduino.
    El proceso es el siguiente:
    • Nos situamos en el subdirectorio de las librerías de Arduino:
      •  cd   /usr/share/arduino/libraries
    • Creamos un nuevo subdirectorio:
      •  sudo mkdir nueva_librería.
    • En ella se copian los ficheros de la libreria, excepto los ejemplos.
      • sudo cp ficheros_nueva_libreria /usr/share/arduino/libraries/nueva_libreria/ficheros/nueva_libreria
    • Creamos un subdirectorio para los ejemplos:
      • sudo mkdir nueva_libreria/examples. 
    • En ella se copia los ejemplos, de esta forma aparecerá en el submenu de Arduino los ejemplos de esta librería.
    • Cerramos el Arduino para que se recargue las nuevas librerías, al arrancarlo de nuevo ya las tendremos disponibles.

    sábado, 19 de enero de 2013

    Arduino y Tarjeta SD


    Las tarjetas SD pueden utilizar dos protocolos:

    • Bus SD: Trasferencia paralela de 4 bits. 
    • SPI (Serial Peripheral Interface): Interfaz de Periféricos Serie.
    Vamos a utilizar el interfase SPI. Este interfase funciona con una configuración Maestro-Esclavo. Controla la transferencia mediante un bus serie, controlado por reloj. La tarjeta seria la esclava y el Arduino es el Master,
    Las señales que se utilizan son:
    • CLK (Línea de reloj): Es la señal de reloj.
    • MOSI (MasterOut-SlaveIn): Línea por donde el maestro envía y el esclavo recibe.
    • MISO (MasterIn-SlaveOut): Línea por donde el maestro recibe y el esclavo envía.
    • CS (Chip Select)/ SS (Slave Selector): Conecta o desconecta la operación del dispositivo con el que comunicamos. Permite la comunicación de varios esclavos a un mismo maestro, multiplexando la señal de reloj.

    Pines de una tarjeta SD

     

    Conexiones entre Arduino y SD

    Señal
    Arduino
    SD
    CS / SS
    4
    1
    MOSI
    11
    2
    MISO
    12
    7
    CLK
    13
    5
    VCC


    4
    GND


    3, 6

    Los pines 8 y 9 de la tarjeta SD no se utilizan

    Montaje de un interfase casero

    La alimentación y los buses de la tarjeta trabajan a 3,v3. Por lo que hay que incluir un divisor de tensión en todas los lineas. Para esto, instalaremos un divisor de tensión, según el esquema inferior.

    R1, R3, R5 = 2K2
    R2, R4, R6 = 1K2


    Software

    Arduino tiene una librería especifica para este dispositivo SD.H
    Hay que definir el pin por el cual seleccionamos la señal CS/SS. Normalmente se utiliza el pin 4.
    Pero hay módulos que la tienen definida:.
    • Arduino Ethernet shield: pin 4
    • Adafruit SD shields and modules: pin 10
    • Sparkfun SD shield: pin 8

    En el lanzador de Arduino existen varios ejemplos para comenzar.
    • Cardinfo: Muestra la información de la tarjeta. Formato, capacidad, ficheros presentes.
    • Dataloger: Muestra los datos grabados de un sensor.
    • DumpFile: Muestra el contenido de la tarjeta en el monitor serie.
    • Files: Como crear y borrar ficheros en la SD.
    • Listfiles: Muestra los ficheros presentes en la tarjeta (el ejemplo tiene los siguientes errores):
    • incluir la linea: const int chipSelect = 4;
    • cambiar la linea pinMode(10, OUTPUT); por pinMode(4, OUTPUT);
    • if (!SD.begin(10)) { por if (!SD.begin(4)) {
    • ReadWrite: como leer y escribir en la tarjeta.
    Las pruebas de los eejmplos las he realizado con Arduino UNO y Arduino Ethernet shield.

    jueves, 17 de enero de 2013

    Montaje Iler-40 o Iler-20

    Montaje del Iller (Iler-40 o Iler-20)
    Las instrucciones de montaje que suministra EA3GCY, son correctas.
    Pero a la hora de colocar los componentes, he preferido cambiar el orden de montar los componentes.
    Empiezo montando la placa del CAG.
    El orden de montaje de los componentes es la siguiente:
    • Puente.
    • Resistencia R1.
    • Diodos.
    • Alargador para conexión a la placa  principal.
    • Condensadores ceramicos.
    • Resto de resistencias.
    • Transistores.
    • Condensador electrolítico.


    OpenBeacon

    Nuevo Proyecto: OpenBeacon
    MEPT  (manned experimental propagation transmitter).

    Puede trabajar en diversos modos como:
    • QRSS.
    • DFCW.
    • Hellschreiber multi-tono.
    Se configura a través del puerto USB. Ajustando todos sus parámetros a través de la linea de comandos.
    Despues de configurarlo, operara independiente.


    Se puede adquirir en www.etherkit.com.
    Toda la documentacion esta disponible en la pagina anterior.
    Hay un articulo sobre este en la revista de Enero /2013 de URE. El autor es John Iza EA2SN


    Características:
    • Frecuencia: Controlada por cristal.
      • Disponible en la bandas de 80, 40 y 30 metros
    • Modos: CW, QRSS, DFCW, Sequential Multi-tone Hellschreiber, Glyphcode, WSPR
    • Potencia salida (nominal):30 metros: 300 mW, 10 metros: 100 mW (alimentado a +13.7 VC)
    • Alimentación: de +5 a +14 VC
    • Consumo: 50 mA a +5 VC, 120 mA a +13.7 VC
    • Control via USB en  Windows, OS X, y Linux 

    lunes, 14 de enero de 2013

    Tabla AWG (American Wire Gauge)


    Tabla de conversión de la referencia AWG (American Wire Gauge)


    Muestra la relación del diámetro y área de sección del conductor, con el  número AWG.
    AWG
    Diam. mm
    Área mm2

    AWG
    Diam. mm
    Área mm2
    1
    7.35
    42.40
    16
    1.29
    1.31
    2
    6.54
    33.60
    17
    1.15
    1.04
    3
    5.86
    27.00
    18
    1.024
    0.823
    4
    5.19
    21.20
    19
    0.912
    0.653
    5
    4.62
    16.80
    20
    0.812
    0.519
    6
    4.11
    13.30
    21
    0.723
    0.412
    7
    3.67
    10.60
    22
    0.644
    0.325
    8
    3.26
    8.35
    23
    0.573
    0.259
    9
    2.91
    6.62
    24
    0.511
    0.205
    10
    2.59
    5.27
    25
    0.455
    0.163
    11
    2.30
    4.15
    26
    0.405
    0.128
    12
    2.05
    3.31
    27
    0.361
    0.102
    13
    1.83
    2.63
    28
    0.321
    0.0804
    14
    1.63
    2.08
    29
    0.286
    0.0646
    15
    1.45
    1.65
    30
    0.255
    0.0503