jueves, 18 de junio de 2015

Programando un Maple Mini clónico (2)

Siguiendo la serie de artículos sobre la programación de un microcontrolador Maple Mini clónico, en esta entrada vamos a describir como programar estos microcontroladores utilizando el IDE de Arduino y las librerías desarrolladas por la comunidad de software libre.

Como en la entrada anterior, el punto de partida será un ordenador con Linux Debian 8 64bits recién instalado. Además, deberá estar instalado el programa sudo tal y como se describió en la entrada anterior. Los pasos a seguir son los siguientes:

1. Descargamos el IDE de Arduino de su página web http://www.arduino.cc/en/Main/Software. El fichero descargado llamado arduino-1.6.4-linux64.tar.xz, lo descomprimimos en la carpeta donde queramos instalar este software (en este caso, por ejemplo, nuestro home).
cd
tar xvJf arduino-1.6.4-linux64.tar.xz
2. En la siguiente dirección:
Se encuentra la página principal de la biblioteca STM32 que permite desarrollar programas para tarjetas basadas en microcontroladores STM32F103. La mayor parte de este artículo se basa en el proceso de instalación descrito en esta página. Desde ella descargamos la librería STM32. El fichero descargado Arduino_STM32-master.zip se decomprime y obtenemos la carpeta Arduino_STM32-master que debemos copiar dentro de la carpeta Harware que se encuentra dentro de la carpeta con el IDE de Arduino.

3. Ahora es necesario instalar los compiladores cruzados para STM32. Para ello tenemos dos opciones: la primera es instalarlos desde los repositorios de Debian y adaptar la configuración del IDE de Arduino para que utilice estos compiladores; la segunda, y más sencilla, es instalar el soporte para ARM en el IDE y que descargue automáticamente el software necesario. Para ello ejecutamos el IDE de Arduino que acabamos de instalar y buscamos en los menús Herramienta -> Placa -> Boards Manager.


Elegimos Arduino SAM Boards (32-bits ARM Cortes-M3) y pulsamos la opción de instalar. Ahora podemos ver como han aparecido las nuevas placas STM32 en el menú del IDE:

4. Al igual que el IDE de Maple, las aplicaciones que trae son para una arquitectura de 32 bits. Así que hay que habilitar la ejecución de aplicaciones de 32 bits en nuestro Linux. Para ello, ejecutamos los siguientes comandos:
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libstdc++6:i386
5. Vamos a utilizar una interfaz USB a Serie TTY para programar esta placa, por lo que es necesario dar permiso a nuestro usuario para acceder a los puertos serie. Esto se consigue añadiendo nuestro usuario al grupo dialout:
sudo addgroup usuario dialout
Donde usuario es el nombre de nuestro usuario.

6. Para descargar el programa al microcontrolador en este caso utilizaremos un adaptador USB a Serie TTY.

Las conexiones que hay que hacer son:
FTDI   <---->   Maple
GND    <---->     GND
3.3V   <---->     Vcc
RXC    <---->     RX1
TXC    <---->     TX1

Dependiendo del modelo de adaptador es posible que sea necesario cruzar las línea RXC y TXC de la siguiente forma:
RXC    <---->     TX1
TXC    <---->     RX1

Pero tranquilos, que no se va a quemar nada si se conectan al revés. Simplemente no cargará el programa y bastará con cambiar la conexión para que funcione. 
Otra opción es utilizar la salida de 5V del adaptador en lugar de la de 3.3V. En ese caso, en lugar de conectar la salida de 3.3V a Vcc hay que conectar la salida de 5V a VIn. Por alguna razón, algunas veces el microcontrolador se resiste a cargar el programa cuando se utiliza la alimentación a 3.3V y funciona cuando se utiliza la de 5V.

7. Una vez conectado el adaptador, configuramos el IDE de Arduino para la placa y puerto serie. Para ello elegimos la placa Generic STM32F103C en Herramientas -> Placa; Upload method = Serial; Variant = STM32F103CB y el puerto serie /dev/ttyUSB0 (o el que corresponda a nuestro adaptador) como podemos ver en la siguiente imagen:


8. Una vez escrito el programa, para subirlo hay que poner el microcontrolador en modo programación. Esto se realiza dejando pulsado el botón But32 mientras pulsamos y soltamos el botón de Reset. La placa quedará en modo programación y no se encenderá ni parpadeará ningún led. A continuación, solo hay que pulsar el botón de carga del programa del IDE de Arduino y el programa se enviará al microcontrolador.

Este proceso cargará el programa en nuestro microcontrolador, pero eliminará el Bootloader. Si solo vamos a utilizar este método para cargar el programa no es un problema y el bootloader realmente no es necesario. Pero si, por alguna razón, queremos volver a tener instalado el bootloader en nuestro microcontrolador, podemos instalarlo siguiendo un proceso muy sencillo. Para ello se utiliza el adaptador USB a Serie TTY. En la siguiente página hay instrucciones sobre como cargar el bootloader en un Maple Mini http://leaflabs.com/docs/bootloader.html

También es posible utilizar este IDE para programar el microcontrolador utilizando el puerto USB. Para ello es necesario que el microcontrolador tenga cargado el Bootloader que viene con el IDE. Podemos encontrar este bootloader en la carpeta 

arduino-1.6.4/hardware/Arduino_STM32-master/usb_bootloader/STM32F1/binaries

El fichero se llama maple_mini_boot20.bin. Y para cargarlo podemos seguir el proceso descrito en la web http://leaflabs.com/docs/bootloader.html

No es posible cargar los programas utilizando este método si el microcontrolador tiene instalado alguno de los bootloaders originales de Maple.

Los pasos para configurar el sistema para poder conectar el Maple clónico a nuestro sistema Linus son:

1. Configuramos el dispositivos USB.
cd $HOME/arduino-1.6.4/hardware/Arduino_STM32-master/tools/linux
./install-udev-rules.sh
Después de este paso es necesario reiniciar el equipo para que se activen las reglas.

2. Instalamos la utilidad dfu-util
sudo apt-get install dfu-util
Y ya podemos cargar programas a nuestro microcontrolador siguiendo los pasos descritos en la entrega anterior de esta serie: pulsando el botón de reset y, antes de que el led termine de parpadear rápido, pulsar y mantener el botón 1 de la placa pulsado hasta que el led comienza a parpadear lentamente. En este momento podemos pulsar el botón de carga del programa que hay en el IDE y el proceso de carga comenzará. Al finalizar el proceso de carga es necesario pulsar de nuevo el botón de reset del microcontrolador.

domingo, 31 de mayo de 2015

Programando un Maple Mini clónico (1)

Recientemente he conseguido dos módulos de desarrollo Maple Mini. Estos módulos constituyen una alternativa interesante a los clásicos Arduino. De hecho, vienen preparados para programarlos y utilizarlos de una forma muy similar a los modelos de Arduino. En mi opinión, su principal ventaja consiste en la mayor cantidad de memoria tanto flash como RAM que permite realizar aplicaciones más complejas, así como su funcionamiento a 3.3V que facilita su alimentación con baterías LiPO y la conexión directa con dispositivos como tarjetas SD que trabajan a esta misma tensión.

Por otro lado, el mayor inconveniente que veo a estos módulos es la falta de documentación. Son relativamente recientes y la compañía LeafLab que los desarrolló parece haber abandonado su mantenimiento. Sin embargo, al ser un diseño abierto, han aparecido numerosos clónicos en el mercado chino que permiten adquirir microcontroladores con una potencia superior a los Atmel de Arduino a un precio hasta cuatro veces inferior a estos.

Los módulos que he probado son, en primer lugar, un Maple Mini basado en el microcontrolador STM32F103C8T6 ARM. Podemos ver este módulo en la primera figura. Aunque la publicidad indica que funciona con un reloj a 72MHz la realidad es que viene con un cristal a 8MHz. Siendo la anterior la velocidad máxima que puede alcanzar este microcontrolador.

El otro módulo es también un Maple Mini pero esta vez basado en el hermano mayor de la familia: el  STM32F103CBT6. Con nada menos que 128Kb de memoria. Al igual que el otro con un reloj a 8MHz. 

Vamos a describir como programar estos microcontroladores utilizando Linux Debian 8 64bits. Empezando en primer lugar por la instalación y configuración del IDE y el compilador para programarlos.

Existen dos opciones para programar estos controladores. La primera es utilizar el IDE de LeafLab y la segunda una adaptación para el IDE de Arduino. La primera de ella la podemos descargar del página de LeafLab en la siguiente dirección:
Los pasos para hacerla funcionar son:
1. Descomprimir el fichero descargado maple-ide-0.0.12-linux64.tgz
tar xvzf  maple-ide-0.0.12-linux64.tgz
2. Instalamos sudo ya que será necesario para la configuración (nos pedirá la contraseña de administrador)
su
apt-get install sudo
y a continuación permitimos privilegios de superusuario a nuestro usuario siguiendo las instrucciones que encontrareis aquí http://www.esdebian.org/wiki/habilitar-sudo-debian-7. Con esto ya se tendrán los permisos necesarios para configurar el sistema e instalar el IDE.

3. Aunque se supone que el IDE es para 64 bits, los compiladores que trae instalador son para 32, por lo que tenemos que habilitar la ejecución de aplicaciones de 32 bits en nuestro linux. Para ello, ejecutamos los siguientes comandos:
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libstdc++6:i386
4.  En estos momentos ya podríamos probar a compilar un programa utilizando el IDE. Sin embargo, aún no podríamos cargarlo al microcontrador. Para ello tenemos que configurar el dispostivo USB. Esto se realiza ejecutanto el siguiente script que trae el IDE de Maple

cd maple-ide-v0.0.12
sudo install-udev-rules.sh
sudo /etc/init.d/udev restart
A estas alturas ya es posible ver como se reconoce el dispositivo al enchufarlo por USB. Si ponemos el Maple en BootLoader Perpetuo deberíamos ver un dispositivo con ID 1eaf:0004 al ejecutar lsusb. Además debería aparecer el dispositivo /dev/maple.

Pero aún queda un problema por resolver para poder cargar un programa al microcontrolador. La versión de dfu-util que trae el IDE de LeafLab no es compatible con Linux Debian 8. La solución consiste en instalar este programa de los repositorios Debian y utilizar un script para ejecutarlo desde el IDE. Para ello seguimos los siguientes pasos:
1. Instalar el programa dfu-util
sudo apt-get install dfu-util
2. En la carpeta maple-ide-v0.0.12/hardware/tools/arm/bin borrar el fichero llamado dfu-util
cd maple-ide-v0.0.12/hardware/tools/arm/bin
rm dfu-util
3. Crear un fichero de texto llamado dfu-util en esta carpeta y escribir el siguiente contenido en el mismo:
#!/bin/bash
if [[ $1 == -l ]]; then
   salida=$(dfu-util -l)
   echo "${salida}" | sed -r 's/DFU: \[/DFU: \[0x/'
   #echo "Found DFU: [0x1eaf:0003"
else
        dfu-util $@
fi
4. Establecer permiso de ejecución para este script:
chmod +x dfu-util
Y con esto ya tenemos nuestro entorno configurado. Ya solo queda ejecutar el IDE:
cd maple-ide-v0.0.12
./maple-ide
Seleccionamos como Board a Leaf Lab Maple Mini Rev 2 to Flash y ya podemos escribir y subir nuestro primer programa.

Para cargar un programa hay que poner el microcontrolador en modo Bootloader Perpetuo. Esto se realiza pulsando el botón de reset y, antes de que el led termine de parpadear rápido, pulsar y mantener el botón 1 de la placa pulsado hasta que el led comienza a parpadear lentamente. En este momento podemos pulsar el botón de carga del programa que hay en el IDE y el proceso de carga comenzará. Al finalizar el proceso de carga es necesario pulsar de nuevo el botón de reset del microcontrolador. Según LeafLab esto se realiza automáticamente. Sin embargo, no he conseguido que esto ocurra y es necesario un reset manual.

Desgraciadamente este IDE parece estar abandonado por LeafLab. Siendo la última versión de marzo de 2013. Y solo parece compatible con el módulo basado en el microcontrolador STM32F103CBT6. En una próxima entrada describiré como instalar y configurar un IDE de Arduino junto con un conjunto de bibliotecas para programar módulos Maple.



domingo, 30 de noviembre de 2014

Ordenador de buceo IV


Hay que ver como pasa el tiempo. Ya hace casi un año que no hago ninguna entrada en el blog. Demasiados temas a los que atender y poco tiempo para sentarse tranquilo a escribir. Sin embargo, esto no significa que haya estado ocioso. Poco ha poco he ido encontrado algún hueco y atrás quedan un buen número de pruebas, ensayos y diseños alternativos. Veamos algunos de ellos.
Aquí podemos ver una prueba de la pantalla LCD. En este caso está controlada por un Aruino Mini. Esta pantalla presenta una buena visibilidad incluso con luz solar. Como inconveniente es monocromática y viene en una placa bastante grande que añade un espacio muerto al circuito. Teniendo en cuenta que está pensado para llevarlo en la muñeca resulta un poco grande. 
En este caso estoy probando el sensor de profundidad (arriba a la izquierda) montado en una pequeña placa que hice para pode conectar con más facilidad las conexiones. En la placa se puede observas el reloj de tiempo real encargado de generar la señal de 32kHz que necesita el sensor de profundidad para funcionar.


 En la siguiente imágen se puede ver la combinación de todo lo anterior: pantalla; sensor de profundidad; RTC; lector de tarjeta SD; e incluso un par de relés reed pensados como pulsadores magnéticos. 
La primer conclusión de todas estas pruebas se hizo patente enseguida: el microcontralor ATmega 328 con 32Kb de memoria es insuficiente para tantos controladores de dispositivos. En especial los de la pantalla y el lector de SD. Solución? Pasar al hermano mayor de la familia: el Arduino DUE. Con 512Kb de memoria Flash y 96Kb de SRAM se acerca a un pequeño ordenador. Esto debería ir más que sobrado para implementar un ordenador de buceo. En la siguiente imagen se pueden ver todos los periféricos conectados a un Arduino DUE.

La principal diferencia (aparte de la capacidad de cálculo y almacenamiento) entre este modelo y el resto de la familia es el voltaje al que trabaja. El Arduino Due trabaja con 3.3V mientras que el resto trabaja a 5V. Sin embargo, más que un inconveniente es una ventaja ya que tanto el lector de tarjeta SD como el sensor de presión funcionan a 3.3V lo que nos ahorra utilizar adaptadores de voltaje en las señales.

Claro que la placa de Arduino DUE no es precisamente pequeña. Lo cual es un inconveniente para un dispositivo portátil para llevar en la muñeca. Y aún está el tema de la fuente de energía. Aquí, por supuesto, no se puede contar con un pequeño transformador que, conectado a la red eléctrica, nos proporcione toda la potencia eléctrica necesaria. Se hace necesario recurrir a baterías.


 En la foto anterior se puede ver todo el conjunto de Arduino DUE y periféricos alimentado por una batería de litio de 3.7V. También se puede observar el pequeño conversor DC-DC (a la derecha de la batería conectado con dos pinzas) que permite elevar los 3.7V de la batería a los 5V que requiere el Arduino DUE.

Desgraciadamente este sistema no es nada eficiente. En primer lugar, aunque le microcontrolador del arduino DUE trabaja a 3.3V, la placa trabaja a 5V. Eso significa una perdida de energía en la reducción del voltaje. Además, como la  batería proporciona 3.7V es necesario elevarlos previamente a 5V. Y el conversor DC-DC no es precisamente eficiente. Y no olvidemos el consumo de la placa Arduino. Esta placa lleva varios controladores auxiliares para conectar el microcontrolador a un puerto USB y hay muy poco control sobre el consumo de estos dispositivos. Incluso aunque el microcontrolador SAM3x del Arduino DUE tiene un modo de bajo consumo muy eficiente, tal y como va montado en esta placa no proporciona ningún beneficio. Incluso en el modo más agresivo de ahorro de energía el consumo apenas baja de 170mA a 120mA. El resultado es que la batería de litio proporciona una autonomía de aproximadamente una hora. Totalmente insuficiente para los propósitos de este dispositivo. Evidentemente se requiera un replanteamiento del diseño. La solución en la próxima entrega.


sábado, 7 de diciembre de 2013

Ordenador de buceo III

Aunque lentamente, este proyecto avanza. Al fin he terminado el diseño de los circuitos y la placa base del ordenador. Esta incluye las conexiones entre el microcontrolador y los periféricos como la pantalla, reloj de tiempo real, sensor de presión, etc.
También he podido incluir en esta placa el control de encendido y un sensor de agua, lo que permitirá que el ordenador se encienda automáticamente cuando entre en contacto con el agua. Inicialmente tenía pensado hacer esto en una placa aparte como un módulo. Pero incluirlo todo en la misma disminuirá el tamaño del ordenador a costa de una mayor complicación de diseño de la placa.
Aún quedan algunas decisiones que no son definitivas como, por ejemplo, utilizar una batería de LiPo para la alimentación. Quizás más adelante busque una solución más eficiente. Sobre todo con mayor autonomía. Pero, para una primera versión, usar esta fuente de alimentación simplifica el diseño ya que hay una amplia gama de circuitos que proporcionan 5V a partir de una de estas baterías.
A continuación muestro una imagen tridimensional de la placa base. Ahora a ir preparando la insoladora...

miércoles, 25 de septiembre de 2013

DIR

Hace tiempo que quería traducir este texto que encontré navegando en busca de información sobre buceo técnico. Originalmente fue publicado de forma anónima en un foro de buceo técnico. Yo lo encontré en esta web http://njscuba.net/gear/trng_08_dir.html

Creo que es una buena visión de hasta que punto los buzos nos dejamos llevar por nuestra afición al buceo y a los tecnicismos. Espero que disfrutéis como yo leyéndolo. Y ya sabéis, si os gusta y queréis seguir leyendo cosas así, suscribiros a mi blog.

---------------------------------------------------

Sobre DIR y otros temas religiosos ( una broma )


Advertencia: Políticamente incorrecto

Me convertí al DIR ( "Doing It Right ") hace unos 6 meses y me he dado cuenta que la filosofía se extiende mucho más allá de buceo. Creo que la mayoría de la gente tiende a ver a DIR como una configuración del equipo o tipo de buceo, pero realmente es una filosofía que se puede utilizar en otras partes de su vida. Por ejemplo, a continuación podemos ver algunas de las maneras en que he aplicado la filosofía DIR en otras áreas de mi vida.

La semana pasada, algunos de mis amigos vinieron a mi casa . Aunque no todos ellos son buceadores entienden la filosofía DIR . Así, en primer lugar, todos bebemos el mismo tipo de cerveza. Esto evita las situaciones en las que podría estar disfrutando de una lager y, sin querer coger una ale (o al revés). Eso podría ser muy desagradable. Podría conducir rápidamente a una situación de pánico, por lo que lo evitamos de forma conjunta. También bebemos sólo de latas y no botellas. Y nunca tenemos la cerveza en la nevera. Siempre la tenemos en un cubo con hielo en mi sala de estar. El 47 % de incidentes relacionados con el consumo de alcohol ( DRI ) se producen cuando alguien va a la nevera a por otra cerveza, por lo que es mejor prevenir que curar. Por supuesto, todo esto se ensaya  mientras seguimos siendo 100 % sobrio para que no haya alteraciones en el juicio una vez que las cosas se ponen en marcha.

Todos nosotros usamos un collar Bungie con una cerveza completa sobre el mismo por si alguien experimenta un "quedarse sin cerveza" ( OOB ) de emergencia. Puedo ofrecer mi cerveza abierta hacia mi amigo y simplemente agacharme y agarrar la copia de seguridad de mi collar de cerveza. Y, sin excepción, siempre utilizamos la manguera de 7 pies en el grifo de cerveza .

Por supuesto, no nos quedamos en casa todas las noches, así que, cuando decidimos salir, nos aseguramos de que estamos siendo DIR . Todos nosotros usamos exactamente la misma ropa :


  • 501 Jeans Levi , negro ( cierre con botones , pierna recta )
  • Camiseta negra
  • Calzoncillos boxer negros
  • Calcetines negros
  • Zapatos Kenneth Cole, estilo de Brad Bitt, negro
  • Reloj G-Shock , banda negro
  • Correa de nylon negra, con hebilla militar
  • Chaqueta de cuero negro (opcional, dependiendo de las condiciones climáticas)


Esto puede sonar un poco tonto o exagerado, pero créanme, cuando se está penetrando un club de noche, sabiendo exactamente que sus amigos se visten igual, puede marcar una diferencia importante, si usted tiene la esperanza de enganchar algún bombón. Digamos que veo alguna chica y justo antes de que me levanto para ir a hablar con ella una camarera derrama una bebida en mi regazo. No hay problema, porque siempre puedo cambiar los pantalones con mi amigo. Yo no tengo que preocuparme si coinciden, porque sé que él está usando 501 de Levi. Bam! Intercambia los pantalones y todavía puedo completar mi objetivo.

Una cosa a tener en cuenta acerca de las discotecas es que rara vez se quiere beber cerveza . Lo sé, algunos de los idiotas machistas hacen esto y presumen con sus amigos. Créeme, no es DIR. Tienes que beber bebidas mezcladas. Obviamente, la mezcla será diferente en diferentes noches, pero una buena mezcla de vodka con tónica es bastante estándar. Una vez más, hay una manera correcta y una manera incorrecta de hacer esto. No se puede pedir cualquier vodka de cualquier edad o depender de algún camarero para conseguir la mezcla correcta. Eso es lo que hacen los aficionados. No, tu pides Stoli vodka que tiene una excelente reputación en la comunidad de fiestas DIR. La mezcla correcta es 2 partes de Stoli con agua tónica vertida sobre hielo en un vaso alto (limón o lima opcional). Siempre llevo un kit de prueba conmigo y si la mezcla está floja la devuelvo. No vale la pena el riesgo y no es DIR.

Así que entras en la discoteca y tienes una buena mezcla, ahora es el momento de cumplir con las damas. Debería haber dicho esto antes pero vigilen su consumo de bebidas. Es un hecho bien conocido que las mujeres exigen un 25% - 30% más en un club nocturno, y si te quedas narcotizado con el vodka con tónica, aumenta las probabilidades de parecer un coyote ambriento. Usted debe que mantener despierto su ingenio.

Si es temprano, es probable que tenga buena visibilidad. Más tarde en la noche, cuando las nubes de humo llenen la habitación, va a ser difícil distinguir a las mujeres en el otro lado del club para establecer un rumbo a tiempo. En algunas ocasiones he tenido que lanzar un hilo guía sólo para ir al baño y de regresar.

Si tienes la suerte de conectar con un buen bombón es cuando hacer las cosas realmente de forma correcta puede proporcionar un benerifio. Ahora, seamos sinceros, hay un cierto grado de peligro involucrado aquí que no quiero minimizar. Es necesario reducir al mínimo sus riesgos mediante el uso de los equipos adecuados. Llevo 2 condones. Uno puse en mi... bueno ya sabes, y el segundo me lo puse en un bolsillo atado alrededor de mi cintura. Si hay un fallo en mi primaria, puedo ir rápidamente a la copia de seguridad sin perder el ritmo.

Así, como se puede ver en estos ejemplos muy básicos, DIR no es sólo para el buceo. Es algo que se puede utilizar en todas las áreas de su vida .

Deben ser realistas.

domingo, 1 de septiembre de 2013

Ordenador de buceo II

Después de un "accidentado" verano, vuelvo a retomar el tema del ordenador de buceo.

Tras varias búsquedas por internet se van perfilando algunos de los módulos hardware que necesitaré. El siguiente esquema muestra los mejores candidatos:


El sensor de profundidad MS5541 es capaz de medir hasta una profundidad de 130 metros. Hubiese preferido un rango mayor, pero no encuentro ningún sensor en el mercado capaz de medir una presión mayor de 14 bares. Al menos que se pueda comprar al por menor. De hecho, este chip es bastante difícil de localizar. Sólo he encontrado dos puntos de venta en internet.

Otro de los inconvenientes que presenta el sensor de presión es que requiere una señal de 32KHz externa para realizar la medida. Sin embargo esto lo he resuelto fácilmente utilizando como reloj de tiempo real el módulo basado en el chip DS3231 que, además de ser más preciso que otros módulos basados en otros chips de esta familia, genera justo la señal de reloj que requiere el sensor de presión. Cualquiera diría que han sido diseñados para trabajar juntos.

Los relés reed para los botones me parecen una buena opción ya que permiten controlar el ordenador sin necesidad de hacer perforaciones en la caja estanca. Con esto espero simplificar su diseño y disminuir la probabilidad de que se inunde.

Aún me quedan dos frentes abiertos:
1. ¿Convendría poner un sensor de humedad? Esto permitiría que el ordenador de encendiese solo al entrar en contacto con el agua. Aunque complica el diseño de la fuente de alimentación. e implica más agujeros en la caja estana.
2. ¿Que alimentación utilizar para el circuito? No estoy seguro si debería utilizar pilas recargables, baterias de LiPo, etc. Los principales factores a tener en cuenta son: tamaño, peso y autonomía. Sin olvidar que, en caso de utilizar baterias recargables, habrá que añadir un módulo de carga y conectores.

Y hasta aquí he llegado. Si alguien tiene alguna idea sobre como solucionar las cuestiones que quedan abiertas que no dude en escribirlo en los comentarios de este blog.

Continuará...


martes, 23 de julio de 2013

Ordenador de buceo I

Hola de nuevo! Aprovechando que se acercan las vacaciones y tengo un poco más de "tiempo libre" voy a empezar un proyecto que hace tiempo tenía en mente: construir un ordenador de buceo.

La idea básicamente consiste en utilizar componentes fácilmente localizables en tiendas de electrónica o internet, entre ellos un microcontrolador económico, para fabricar un ordenador de buceo completamente funcional y a un precio competitivo con los existentes comercialmente.

Un ordenador de buceo deportivo corriente puede costar unos 200€, esto da muy poco margen para el desarrollo casero. Además sería difícil justificar el mayor tamaño o consumo de energía que tendría el ordenador que podría construir. Para ser competitivo hay que apuntar más alto, a un tipo de ordenador donde la relación precio/funcionalidad sea mucho mayor. Esto se corresponde a los ordenadores de buceo técnico que permiten combinarr varias mezclas de aire e incluso trimix en una misma inmersión. En este caso, el precio de un ordenador de estas características supera ampliamente el coste de los materiales. Esto deja margen para que podamos desarrollar de forma más económica un ordenador de estas características.

Las funciones que debería implementar un ordenador de estas características son:
  • Controlar la saturación de los tejidos. Así como los tiempos a no descompresión y las paradas de descompresión
  • Controlar la profundidad y tiempo de inmersión.
  • Almacenar un registro de la inmersión.
  • Permitir almacenar varias mezclas de gases que incluyan opcionalmente helio y permitir cambiar entre ellas durante la inmersión. Los ordenadores técnicos comerciales suelen permitir unas 15 mezclas diferentes en la misma inmersión.
  • Premitir ajustar parámetros de seguridad de la inmersión como por ejemplo los factores gradientes del algoritmos Bülhmann.
El microcontrolador que quiero utilizar es un Arduino. Un microcontrolador económico, fácil de encontrar y con una amplia documentación. Esta es una foto de uno de los modelos más pequeños: un arduino nano:


Y esta la foto del hermano mayor de la familia: un arduino duo con una capacidad unas 95 veces superior a la del modelo anterior.


La cuestión es cual de los dos utilizar o incluso si utilizar alguno de los otros modelos disponibles. Claro que esto es una pregunta que habrá que responder más adelante tras estimar el tamaño del software necesario y los datos que procesará.

La primera cuestión de diseño que habrá que plantearse es que módulos hardware son necesarios para implementar las funcionalidades indicadas más arriba y que componentes concretos existen en el mercado que los proporcionen. Pero eso es una cuestión que resolveré en la siguiente entrada a este blog.

Continuará...