Hace tiempo que hice acopio de material de arduino y componentes electrónicos asociados, con el objetivo de emprender posibles proyectos en el entorno de la radio.
Ha sido a raíz de haber comentado con el colega EA4AQM sobre el desarrollo de su tracker APRS (publicado en la revista de URE de Enero de 2011) que me he animado a ponerme un poco más en serio con el tema de la programación y el entorno de Arduino para dar uso a las placas que tengo por casa.
Por cierto, para los que no sepan que es arduino, les remito a la siguientes dirección:
http://www.arduino.cc/
http://www.youtube.com/watch?v=qhy5UtIzZfo
http://www.youtube.com/watch?v=-KXBZZO6IgQ&feature=fvw
Como ya sabéis, se trata de un entorno de desarrollo con hardware y software libre, que está basado en un microprocesador AVR. Para mí tiene una serie de ventajas que enumero a continuación:
- Hardware y código libre, con una amplia comunidad de desarrolladores.
- Amplia documentación (manuales y proyectos) disponible en la red.
- Entorno de programación sencillo en lenguaje C, con editor, compilador y grabador incluídos.
- Uso del puerto usb para una grabación inmediata del micro. (el micro incorpora un bootloader para esta funcionalidad).
- Funcionamiento en Windows, Linux y Mac.
He buscado por la red si ya existía codigo desarrollado para un tracker APRS y efectivamente existe. Después de probar alguna solución me he quedado con el desarrollado por un colega español EZ5HAV Javier, con el que no he podido contactar por el momento para contrastar impresiones.
Se trata del proyecto Trackuino, del que podéis ver la información original en el siguiente enlace:
http://code.google.com/p/trackuino/
Pues bien, esta nueva entrada del blog trata de la implementación del proyecto Trackuino adaptado a mi caso concreto con el fin de compartir la experiencia con los colegas que pudieran estar interesados.
Trackuino, es un proyecto principalmente pensado para hacer seguimiento vía APRS de un globo sonda por lo que además de incorporar todo lo necesario para el protocolo APRS, incluye soporte para un sensor. El proyecto lo tiene todo para funcionar como un tracker aprs, decodificando las tramas NMEA proporcionadas por un GPS externo y trasmitiéndolas bajo el protocolo AX25 de APRS. Además incorpora soporte para un sensor externo de temperatura, ésta parte es la que no necesito y hay que adaptar.
Lo primero de todo es tener el entorno de programación arduino instalado en el ordenador y recomiendo siempre bajar la última versión de la página oficial. Actualmente está la ver. 022. A continuación tener a mano todo el hardware necesario, placa arduino, componentes electrónicos, polímetro y si se dispone de un osciloscopio pues mejor. Aunque el polímetro y el osciloscopio no son 100% necesarios ayudan en el caso de que exista algún problema de funcionamiento. Una vez todo a mano, descargar el código de trackuino y descomprimir el fichero.
http://code.google.com/p/trackuino/downloads/detail?name=trackuino-ide-1.1.zip&can=2&q=
La carpeta que resulta debereis guardarla colgando de la carpeta "examples" del entorno arduino, de esta forma la tendréis disponible rápidamente en el menú "examples" del entorno de programación.
Para los ya iniciados, los detalles seguro que sobran, pero para los que decidáis acometer el proyecto sin mucha idea, os recomiendo tirar de la documentación existente en la web de arduino o bién la propia ayuda del programa. La idea es que estéis familiarizados con el entorno, aunque ya os digo que lo atractivo de arduino es lo sencillito que resulta todo.
Arrancais arduino y os vais a cargar el código de trackuino, para ello File/examples/trackuino
En la ventana que se abre ya tenéis el codigo. Podéis ver que teneis varias pestañas, deberéis seleccionar config.h y modificarla con vuestros datos, indicativo etc.
En el código principal yo he comentado varias lineas de código relacionadas con la parte del sensor. Por otro lado, os habréis dado cuenta que el codigo contempla dos modulos de radio, el mx146 y el hx1. Se tratan de modulos trasmisores compactos que se podrían utilizar en un globo sonda, como éste no es nuetro caso ya que vamos a utilizar un transceptor externo, usaremos el hx1 que viene por defecto en el config.h. Se trata del módulo más sencillo y que podemos compatibilizar con el uso de un equipo externo de forma fácil.
Os sugiero comentar en el código todo lo relacionado con el sensor y con el módulo mx146.
Para esta tarea, os dejo que os familiaricéis con el entorno practicando con la compilación del código (boton Play) hasta que no tengáis ningun error. Una vez hecho todo eso, tendríais el codigo listo y configurado con vuestros datos para ser grabado en el micro.
Conectar la placa arduino via USB al PC. En el programa seleccionar vuestra placa en Tools/Board y el puerto serie en Tools/Serial port.
Ya está todo listo para grabar el programa en el micro, sólo tendréis que hacer click en el icono de Upload indicado con una flecha hacia la derecha y veréis que el código se graba en vuestro arduino. No debiérais tener ningun error, en caso contrario a investigar...
Esto no es todo, ahora falta la parte externa de hardware que hará de interface con nuestra radio y el GPS. Yo lo he implementado en una placa de prototipos ya que son pocos componentes. Mas adelante usaré una placa taladrada con nodos de cobre.
Si no lo habéis descubierto aún, os recuerdo que en el proyecto se usan los siguientes pines:
Pin3: Señal de audio AFSK para TX.
Pin4: PTT
Pin0: RX Recepción de datos del gps.
Para el audio TX conviene filtrar la señan proveniente del pin 3 a través del siguiente circuito:
Para el PTT se puede implementar el siguiente circuito:
Os dejo en el aire el tema de la configuración del GPS.... deberéis investigar el código para ver dónde se configura la velocidad del puerto serie para que coincida con la velocidad a la que entrega los datos vuestro gps. En mi caso estoy aprovechando un gps bluetooth al que le he sacado una salida TTL de datos que se conecta directamente al RX (Pin0) de la placa arduino y masa.
Con esto quedaría explicado lo más importante de la implementación del proyecto, espero os haya servido.