miércoles, 13 de febrero de 2019

SatNOGS (Satellite Networked Open Ground Station)

Información muy interesante distribuida por AMSAT Argentina relacionado con una red abierta para el seguimiento de satélites. Usa una configuración de SDR+RBPi Pi muy similar a la que estoy utilizando en experimentación para modos digitales de bajas señales, lo que hace muy probable que ponga un nodo experimental en los próximos días. La información está contenida en un correo enviado desde AMSAT Arg. que transcribo como ellos pidieron, literalmente, a continuación.
=======================================================================
Amigos,

Hasta que surgieron los SatNOGS, solo había dos posibilidades para recibir un satélite: esperar hasta que este "sobre su cabeza" (y esto puede llevar mucho tiempo) o alquilar una costosa red comercial de estaciones terrestres para la comunicación, ahora hay una tercer posibilidad por demás interesante. 

SatNOGS es libre y gratuito y permite analizar muchos datos, dado que hay muchas estaciones recibiendo muchos satélites y en muchos lugares diferentes, es una solución para recibir voz o datos de casi cualquier satélite este donde este.

SatNOGS integra la Fundación 'Espacio Libre'. El objetivo de este proyecto es armar una red global de estaciones terrestres de satélite. 

Es un proyecto participativo de codigo abierto basado en estaciones automatizadas, accediendo a sus capturas a traves de una pagina web. https://wiki.satnogs.org/Raspberry_Pi_3#Raspbian 

Quienes contribuyen a la red usan una Raspberry Pi-3 + un dongle SDR + una antena VHF o UHF. Hay una imagen de Raspberry Pi disponible para simplificar la instalación del software . 

A nivel publico, podremos escuchar p.ej al LUSAT yendo a https://network.satnogs.org/observations/?norad=20442 donde veremos quienes y cuando lo recibieron, su waterfall, su audio, etc. (20442 es el Nro.de catalogo, puede ponerse cualquier otro).

Otro ejemplo: https://network.satnogs.org/observations/452813/ permite escuchar la operación del AO-92 sobre Norteamérica, ademas de habilitar decodificar telemetría. 

Quizás algún dia tengamos una estación SatNOGS en nuestra region dando un servicio muy util a la radioafición.

Agradecemos, de ser posible, la difusión de esta información.

73, LU7AA, AMSAT Argentina

martes, 12 de febrero de 2019

ARRL DX International 2019 (CW)

Se viene el ARRL DX International de CW edición 2019, uno de los principales concursos del calendario internacional que abre la temporada y otorga puntos para el WRTC 2022 (en ¡Italia!).

Si bien hay algunos signos débiles que el ciclo solar ya pegó en el fondo y está empezando a repuntar estamos aún lejos, muy lejos... varios años, que la propagación sea realmente importante. En éstos días se puede observar un SFI=70 y un SSN=0, pobrísimo  (la nada misma) para sostener propagación en las bandas altas. Dado que las antenas necesarias hacen complicado trabajar en las bandas de 160 y 80 metros es de esperar que el grueso de la acción transcurra en las bandas de 20 y 40 metros. El pronóstico de propagación se complica un poco pues los modelos de propagación ionosférica tienden a dar resultados marginales, sobre todo en 40 metros, cuando no hay una propagación neta por capa F. Por otra parte, el método estadístico basado en contactos registrados en los clusters, en particular en el Reverse Beacon Network, es probable que no sea realistas puesto que hace prácticamente dos meses que no hay concursos significativos que permitan registrar un nivel de actividad aproximadamente similar al de un concurso con la configuración aproximadamente encontrada en el Sol. Para solucionar esos problemas intento estudiar la propagación a partir de los datos en el WSPRNet (Weak Signal Propagation Report). Para ello filtro la actividad durante el mes de Febrero de forma de quedarme con los reportes que involucren estaciones de Argentina y de zonas W/VE/XE. El resultado es un dataset de mas de 15000 reportes para 40 Mts. y otro tanto para 20 Mts. (el que incluye los reportes realizados por y hacia mi estación de monitoreo WSPR). En base a esos


datos es posible establecer una distribución de frecuencias horarias las que, estimo, correlacionarán con las condiciones de propagación (mas frecuencia, mejor propagación). Ahora bien, el WSPR como modo es capaz de generar un reporte para un circuito con una señal que está -30 dB por debajo del ruido en un canal de 2.5 KHz, claramente una performance que CW no tiene. Pero eso puede igualarse (aproximadamente) con algunas cuentas sencillas, las que son mostradas en la figura para mayor sencillez. A la relación señal a ruido (SNR) reportada en WSPR hay que sumarle la diferencia entre la potencia de la estación con la que se concursará (supuesta 100W o 50 dBm) y la señal del beacon que fue reportado, es decir mayor potencia menor SNR. Por otra parte el umbral de detección de CW es un poco difuso, para detección por máquina una estimación rápida entrega -5 dB mientras que se reporta que la combinación "oido-cerebro" puede mejorar esa figura hasta -15 dB, se toma como conservador el punto medio, es decir -10 dB. Eso hace que cualquier señal que esté hasta -10 dB por debajo del ruido en un canal de 2.5 KHz podrá ser decodificada. Con esa cuenta sencilla es posible identificar que señales están por encima del umbral y que por lo tanto deberían ser operables.

Filtrando por el criterio de relación señal-ruido es posible estimar un pronóstico preliminar de horarios tentativos para las aperturas de propagación, los que pueden verse en la figura. Según éste cálculo 40 metros debería presentar aprox. 12 horas de propagación siendo aproximadamente la mitad razonablemente buenos y el resto marginales, es decir aprox. 12 horas en todo el concurso.
Por su parte 20 metros presenta un patrón algo mas restringido  con también 12 horas de propagación esperada pero solo 3 o 4 horas de buenas condiciones. ¡Sin duda que va a ser un evento desafiante!

sábado, 12 de enero de 2019

Datos, datos y mas datos....

La Raspberry Pi depende de como se use puede calentar bastante, por eso los modelos mas recientes vienen con unos pequeños disipadores para colocar sobre la CPU/GPU y el dispositivo periférico  BCM2835En algunos usos se necesita incluso agregar algún dispositivo soplador para proveer refrigeración adicional. No es raro, además, que mientras se está trabajando normalmente con cualquier GUI X-Windows (lxterminal por ejemplo), aparezca un ícono de un termómetro (sobre-temperatura), o uno como un pequeño rayo (voltaje bajo). La estrategia de gestión de la placa hace que ante eventos de esa naturaleza se intente generar mejores condiciones de funcionamiento mediante bajar la velocidad de los dispositivos (si, disminuir la frecuencia del clock). Cuando tenemos una placa funcionando permanentemente queda la duda sobre si ocurren estos eventos, que tan severos son y con que frecuencia o patrón aparecen. La mejor solución es registrar en el log (del sistema o del programa, yo prefiero del programa) datos de "telemetría" periódicos, tales como temperatura, clock del procesador o tensión. Lo interesante es como medirlo.
Viene en nuestro auxilio un comando disponible en la Raspberry Pi llamado vcgencmd el cual tiene por propósito gestionar distintos aspectos del firmware. Antes que nada es necesario transmitir algo de cautela. Se trata de un comando en el que la mayoría de las opciones no está documentado que hacen, y no son siempre funciones de "lectura", las hay también funciones que operan sobre el hardware modificando la configuración. Algunos incluso el nombre meten "dudita" sobre que tan beneficioso puede ser ejecutarlos.
Por fortuna hay unas pocas opciones del comando que si se sabe que hacen, y son muy útiles.
Para empezar, el comando se ejecuta con vcgencmd operador [argumento] el operador es siempre requerido, el argumento en ocasiones no es necesario, en otras tiene un default y en oportunidades es mandatorio dependiendo del operador. El operador "commands" (vcgencmd commands) produce un listado de todos los operadores soportados, luce como

commands="vcos, ap_output_control, ap_output_post_processing, vchi_test_init, vchi_test_exit, vctest_memmap, vctest_start, vctest_stop, vctest_set, vctest_get, pm_set_policy, pm_get_status, pm_show_stats, pm_start_logging, pm_stop_logging, version, commands, set_vll_dir, set_backlight, set_logging, get_lcd_info, arbiter, cache_flush, otp_dump, test_result, codec_enabled, get_camera, get_mem, measure_clock, measure_volts, scaling_kernel, scaling_sharpness, get_hvs_asserts, get_throttled, measure_temp, get_config, hdmi_ntsc_freqs, hdmi_adjust_clock, hdmi_status_show, hvs_update_fields, pwm_speedup, force_audio, hdmi_stream_channels, hdmi_channel_map, display_power, read_ring_osc, memtest, dispmanx_list, get_rsts, schmoo, render_bar, disk_notify, inuse_notify, sus_suspend, sus_status, sus_is_enabled, sus_stop_test_thread, egl_platform_switch, mem_validate, mem_oom, mem_reloc_stats, hdmi_cvt, hdmi_timings, file"

Lo que es, como corresponde, un poco intimidante. Por ejemplo vcgencmd display_power 0 apaga el video de la placa, vcgencmd display_power 1 lo vuelve a prender. Los operadores que son interesantes con propósito de registro y telemetría son:

vcgencmd measure_clock arm
vcgencmd measure_temp
vcgencmd measure_volts
vcgencmd get_throttled

Que sirven respectivamente para medir el clock, la temperatura del chip, el voltaje (del chip, no de la fuente) y si hay alguna condición que empuje la restricción del clock y cual es.
De esa manera, periódicamente podemos grabar en el log esta información, y luego revisarla para ver en que condiciones ha estado operando el dispositivo, y si hay que hacer algo. Por ejemplo, en el beacon en funcionamiento continuo emitiendo cada 10 minutos el clock es el nominal, la tensión se mantiene estable en 1.2-1.3V, no se observan casi nunca eventos de restricción de performance (get_throttled dá 0x00) y la temperatura oscila entre 45-52 °C dependiendo de la temperatura ambiente y el ciclo de trabajo (suele subir entre 1 °C y 2 °C durante los 2 minutos que está transmitiendo el beacon. He observado alguna ocasión que la temperatura subió a casi 70 °C pero sin mostrar restricción de performance por ello.
Para interpretar los valores de get_throttled debe revisarse la documentación disponible (aqui entre otros), pero un resumen de los posibles valores distintos de 0x00 y su significado es:

bit 0: under-voltage (0xX0001)
bit 1: arm frequency capped (0xX0002 or 0xX0003 with under-voltage)
bit 2: currently throttled (0xX0004 or 0xX0005 with under-voltage)

bit 16: under-voltage has occurred (0x1000X)
bit 17: arm frequency capped has occurred (0x2000X or 0x3000X also under-voltage occurred)
bit 18: throttling has occurred (0x4000X or 0x5000X also under-voltage occurred)

La condición de tensión baja se dá cuando la fuente externa entrega menos de 4.63V y se empieza a gestionar el clock cuando la temperatura excede los 80 ºC, cuando la temperatura excede 85 ºC empieza a marcarse que es excesiva.
La lectura se puede hacer con un simple script en Python (por ejempo picheck.py es el que uso) e integrar fácilmente con otro script que esté manejando el beacon pues la salida es entregada en stdout mediante una función en (por ejemplo) bash.

getTelemetry () {
   TEMP=`sudo python picheck.py -t`
   VOLT=`sudo python picheck.py -v`
   OPST=`sudo python picheck.py -s`
   FREQ=`sudo python picheck.py -f`
   echo "Whisper: "`date`" Telemetry: "$TEMP" °C "$VOLT" V "$FREQ" MHz ("$OPST")" | tee -a $DPATH$TLM
   CMD="python wsprtlm.py -g "$GRID$GRIX" -e "$HEIGHT" -c "$CHANNEL" -b "$VOLT" -t "$TEMP" -l -q -p"  
   TLMG=`$CMD`
   echo "Whisper: "`date`" WSPR TLMF: "$TLMG  
   return 0
}

El log termina teniendo registros que lucen como:

Whisper: vie ene 11 21:31:05 -03 2019 Telemetry: 48.2 °C 1.3125 V 900000000 MHz (Normal operation)
Whisper: vie ene 11 21:32:04 -03 2019 Telemetry: 48.7 °C 1.3125 V 900000000 MHz (Normal operation)
Whisper: vie ene 11 21:33:04 -03 2019 Telemetry: 48.7 °C 1.3125 V 900000000 MHz (Normal operation)

Usando ésta información podemos ir haciendo cambios para refrigerar mejor la placa, por ejemplo, o ponerle una fuente de mayor capacidad. Es improbable que una operación razonable dañe la placa, que por cierto es bastante robusta. Pero lo que en realidad se quiere preservar es que el firmware no recurra a hacer mas lento el clock para gestionar un problema de temperatura o de tensión.
Si tenemos la placa visible en la red con puertos abiertos en el router y la podemos acceder desde Internet, cosa que no siempre se puede hacer pero es muy útil cuando se puede, seguramente nos encontraremos a nosotros mismos tirando de tanto en tanto un

cat whisper.log | grep "Telemetry: " 

Para pegarle una mirada rápida a como van las cosas y si hay algún evento raro, se deja para el lector el ejercicio de hacer que el beacon nos mande un correo si pasa algo raro. Beacon saludable, ¡operador contento!

lunes, 31 de diciembre de 2018

HNY 2019!

Un año con muchas alegrías, alguna que otra dificultad, aprendizajes y logros se acaba de ir, uno con muchas expectativas está por comenzar.
Momento para la pausa, el recuerdo a los que se fueron, el deseo de felicidad a los que continuan en la ruta. Cuando llega esta época es poco lo que queda por decir excepto compartir mis deseos de muy felices fiestas y un gran 2019 para todos.
En paz, en familia, con salud y si es posible con prosperidad.

martes, 25 de diciembre de 2018

Frambuesas susurrantes cinco nueves!

Dias atras comentaba que la experimentación con un beacon tiene muchos aspectos divertidos. Armarlo y ponerlo en funcionamiento por supuesto es uno, y para muchos el mas importante. Un segundo aspecto es poder realizar experiencias con el, como las compartidas en entrada anterior donde con cuentas simples puede evaluarse distintos circuitos de propagación basado en los reportes que nos entregan del beacon. Estamos hablando de un beacon de WSPR, pero estoy seguro que lo que comparto en ésta entrada es válido para un beacon de cualquier otro modo, y también para cualquier otro tipo de servicio o recurso de infraestructura que nos propongamos poner en funcionamiento.
El título de ésta entrada alude, justamente, a la denominación en "jerga" informática de cualquier servicio con altisimos niveles de prestación, responde a un servicio que está disponible el 99.999% del tiempo comprometido (cinco nueves). Para transmitir la idea de que significa basta una figura, implica que el servicio en cuestión solo no estuvo disponible en horarios comprometidos 5 minutos por año. Eso es una cifra que requiere inversiones cuantiosas en recursos de infraestructura para lograrse, y aún así muy pocas instalaciones realmente lo consiguen. Si el servicio depende de una computadora solo dar un reboot toma mas que eso, o sea que en la práctica implica que no haya caidas. Posiblemente mueva a la reflexión sobre si no es una exageración para una actividad amateur siquiera plantearselo, mas de uno concordará que lo es. En ocasiones me han comentado con cierta incredulidad sobre mis esfuerzos para hacer mas robusta mi estación de concursos un ¿Para qué?, es un juego... un hobby, ¿no?.

Bueno, si lo es. Pero la gracia de un hobby es experimentar, y se experimenta para aprender, esa es la clave. Para mejorar el nivel de servicio hay que pensar, trabajar, experimentar, encontrar soluciones ingeniosas y finalmente comprender la mejor forma de abordar sensatamente el problema. Hay servicios amateurs que tienen una disponibilidad altísima, posiblemente "cinco nueves" en ocasiones, aunque no tengo datos confiables para afirmarlo. Los satelites OSCAR vienen a mi cabeza inmediatamente, algunos han fallado sin cumplir su misión, pero la mayoría funcionó continuamente por muchos años, incluso muchisimo despues de cualquier expiración sensata de su vida útil. El OSCAR-7 me viene a la cabeza, del cual aún se reportan momentos de funcionamiento luego de 40 años (!¡) de su lanzamiento, o mismo nuestro LUSAT OSCAR-19 quien superó holgadamente la década de funcionamiento. Mas terrenales, pero no menos útiles, las repetidoras de VHF-UHF son recursos que funcionan prácticamente sin interrupción, en ocasiones por meses o incluso años. Si bien la red de packet no es lo que supo ser, los nodos o BBS de esa red funcionaban en forma continua por semanas o meses por vez, y cualquiera que haya sido responsable de uno sabe también que eso no ocurre por casualidad. Si bien profesionalmente estoy habituado a gestionar proyectos de despliegue o funcionamiento de servicios de misión crítica que apuntan a los "cinco nueves" también tengo claro que los esfuerzos (y costos) involucrados en proveerlos distan de ser triviales, el enfoque que se usa en ellos tiene que ser necesariamente diferente de lo que se pone en juego en un esfuerzo amateur. Algo de eso aprendí hace bastante tiempo, tuve en funcionamiento por casi un lustro el nodo LU7DID:ABROWN (década el 90) que operaba como BBS de packet, nodo NETROM y gateway AX.25-Internet; aún hoy me cruzo con gente para el que significó sus primeros contactos con Internet, cuando tener contacto con Internet no era como hoy algo ubicuo y casi universal, sino mas bien todo lo contrario; eso, quizás, es una historia en si misma. El punto es que con su funcionamiento aprendí la esencia de lo que puede llevar ser un servicio de alta disponibilidad amateur, y llegó a funcionar en forma ininterrumpida de a semanas por vez. De alguna manera esos aprendizajes los estoy tratando de poner en juego con la baliza WSPR. Un resumen.
Para empezar la disponibilidad 99.999% las 24 días y los 7 días de la semana es una quimera, ningún servicio, excepto contadisimas ocasiones y a gran costo, lo alcanza. Es mucho mas sensato poner una ventana de funcionamiento mas reducida o una exigencia de disponibilidad mas pequeña; 80 o 90% del tiempo estaría bien, algunas horas por día también. En el ámbito amateur es una mejor estrategia no establecer una disponibilidad, sino tratar que sea lo mas alta, medirla y encontrarnos con el resultado real. Medir la disponibilidad implica que tendremos que desarrollar un método para hacer un "logging" detallado y extensivo del servicio, de manera que cuando ocurra una falla (la que ocurrirá casi siempre con nosotros lejos) nos permita luego reconstruir que pasó. Tener un logging trae el primer problema de mantenimiento, que hacer con ellos cuando crecen incesantemente. Bueno, seguramente adoptaremos alguna estrategia de retener el logging durante algunos pocos dias, lo suficiente mucho para que no se nos escape del horizonte un problema, y lo suficiente poco para que no nos ocupe recursos excesivamente. Siete dias suele ser un buen compromiso. Pero el logging tiende a "achanchar" el proceso que lo escribe cuando se hace muy grande, abrir un archivo de muchos centenares de MBytes o incluso algunos GBytes para agregar una linea de texto puede llevar un tiempo muy significativo, tanto que empieza a distorsionar el funcionamiento mismo del servicio. Por eso hay que tomar la decisión de irlos "rotando", es decir en algún momento del día (medianoche) hacer que se cierre el log del día, guardarlo y abrir uno nuevo para el día siguiente; en le proceso se puede aprovechar para eliminar el mas viejo en la lista, de tal manera que tengamos un número constante de dias guardados. Si fueran importantes o el horizonte debiera ser mas grande que una semana podría considerar que la "cola" guardada sea mayor o periódicamente sacar los logs mas viejos y guardarlos en alguna otra parte (¿un pen drive? ¿un disco externo?) por un tiempo mas prolongado (¿un mes?¿varios meses?¿un año?). En mi experiencia nunca necesité un log mas antiguo que un mes y es eso lo que guardo. A todo ésto, si no quiero encasillarme con estar todos los dias a la medianoche haciendo todas estas cosas tengo que empezar a automatizar, un recurso infaltable es instalar un utilitario tipo "cron", casi standard en Linux pero con versiones para Windows también. Básicamente es un utilitario donde podemos programar que un determinado comando (que puede ser un script complejo incluso) se ejecute a determinada hora. Ya que tenemos algo que puede correr comandos a cualquier hora también hay que aprovechar para resguardar periódicamente el software y la configuración del servicio, porque nos encontraremos permanentemente haciendo modificaciones a uno u otro, en ocasiones triviales y facilmente reproducibles y en ocasiones muy profundas que si tuvieramos que revertirlas nos llevarían mucho trabajo. De esa forma, y al igual que los logs, podremos recurrir a una copia anterior en caso que la modificación se muestre como inconveniente o, tampoco impensable, que tengamos una falla lo suficientemente severa como para que parte de los datos, configuración o software del servicio se pierda. De esa forma vamos mirando cada vez que ocurre una falla que fue lo que la produjo y pensando como subsanarla, o al menos mitigarla. Descubriremos, con algo de estupor, que muy rápidamente aparecemos nosotros como causa de la falla. Al hacer modificaciones o mejoras, algunas incluso increiblemente sencillas (hacemos una modificación sencilla, en un sistema complejo cuando ya estamos cansados de un día de trabajo.... ¿que puede salir mal?). Pero ¿como evitamos hacer lo que en definitiva es el propósito mismo de tener el beacon o el servicio que sea?... divertirnos.... experimentar.... cambiar cosas... mejorarlas....
Es bueno comprender, y lo mas rápidamente que se pueda, que la única forma de juntar ambas tendencias opuestas, y aparentemente irreconciliables, es con método. Para empezar, nunca tocar el servicio "vivo", por simple que sea la falla o la mejora, excepto que ya esté caido y aún así no siempre es buena idea. Rápidamente uno descubre que tiene que tener una versión, un duplicado un "muletto" para desarrollo, donde uno hace las modificaciones y las prueba, antes de trasladarlas el servicio de "producción" (el que funciona). El "muletto" debe ser tan parecido al real como nos sea prácticamente posible. Y se debe desarrollar, con paciencia y perseverancia, un conjunto de pruebas mínimas para correrlas cada vez que se haga un cambio con el propósito de detectar si se rompió algo fundamental. A ese test se lo suela llamar "smoke test" (prueba de humo), y proviene del viejo método de encender un dispositivo de hardware y observar con atención (y cautela) que no salga humo. Hay que recordar que por mas que nuestros instintos digan lo contrario podemos provocar fallas grandes realizando cambios pequeños, incluso en partes del sistema aparentemente no vinculadas con el cambio. Lo que se cuenta tan sintéticamente lleva horas, dias, semanas de estudio y trabajo tanto para desarrollar los instrumentos como para identificar el software que nos permita hacerlo o nos ayude a hacerlo.
Continuando con la evolución rápidamente encontraremos que la disponibilidad está gobernada por la energía, o mas bien su disponibilidad. En un beacon WSPR es relativamente sencillo de mitigar, bastará utilizar un pack de carga de 5A/h de teléfono celular para tener una autonomía de 12 horas o más. Bastará tenerlo con un esquema de carga flotante para que esté siempre listo. El tipo de consumo (1 a 2A/h @ 5V) permite considerar alternativas, una batería de gel mas un regulador puede alimentar el servicio por horas, incluso una placa de paneles solares pequeña (como las que se venden para cargar celulares) puede ser suficiente para independizar el beacon de la red de alimentación.
¿Es realmente necesario el servicio de un beacon WSPR para que tengamos tanto cuidado con la disponibilidad? ¿Que pasa si simplemente se apaga?. La respuesta, para sorpresa de nadie es, nada. La disponibilidad, o su mejora, no es necesaria para la red de estudio de propagación, hay muchas otras alternativas, y de última unos pocos reportes perdidos no alteran los GBytes o TBytes de información acumulada a nivel global. No es una cuestión de necesidad, es una cuestión de ansias de aprender. Cuando mejoramos la disponibilidad nos enfrentamos a problemas, los estudiamos, buscamos estrategias para solucionarlos, descubrimos que las buenas ideas no siempre son buenas, que hay veces que las malas ideas confirman que lo son y que sorprendentemente la "navaja de Occam" (Occam's razor) es casi siempre cierta. Y alli también aplicamos el juicio y el sentido común, aplicamos un pack de recarga si ya tenemos uno, y si tenemos uno mas chico entonces acordamos con nosotros mismos que la autonomía será de unas pocas horas en vez de días, cosa que de todas maneras probablemente será suficiente. Y miraremos con cariño los avisos en Mercado Libre o en los cambalaches de FaceBook para cuando ofrezcan paneles solares chicos a buen precio. ¿Un generador?, ... ¿porque no?, ¿no quisimos siempre acaso tener uno y no queremos ver como es la mejor forma de dar energía alternativa a la estación?
Aprenderemos que en algún momento de la hoja de ruta nos encontraremos con una pared, pasada la cual nos es cada vez mas trabajoso, o costoso, mejorar. En la mejora de procesos profesional también pasa, se lo llama "plateau" y es el indicativo que lo que estamos haciendo agotó el potencial para seguir mejorando, hay que buscar otra cosa... Se pueden tomar muchas estrategias, pero la redundancia suele ser una buena opción. No tiene que ser el sistema completo, en ocasiones basta con partes de el. En el caso de una baliza es posiblemente una placa Raspberry adicional, con una configuración denominada "hot stand-by", es decir, que toma control cuando la principal por alguna razón queda fuera de servicio. Un par de relays bastarán para conmutar otros componentes como antenas por ejemplo, y algo de software para implementar todo, y backups, claro.
En realidad al beacon WSPR lo respalda una constelación de otras 5 placas Rasbpberry, el conjunto lo he llamado "Croix du Sud" y las hosts se llaman respectivamente GaCrux (Gamma Crucis, en la foto arriba, el beacon propiamente dicho) y las otras ACrux (Alfa Crucis) máquina de desarrollo y "hot stand-by", BeCrux (Beta Crucis o "Mimosa"), DeCrux (Delta Crucis), ECrux (Epsilo Crucis) y KaCrux (Kappa Crucis) que no es una estrella sino uno de los cúmulos mas bonitos de los cielos australes, la "caja de joyas" o el "Joyero". Necesito todo ésto para un beacon WSPR, claro que no :-)
Lo necesito para de paso estudiar en detalle problemas de computación de alta performance (computación paralela) y correr ciertos paquetes de software que se benefician del alto paralelismo, o en todo caso para preparar software para luego correrlo en computadores realmente grandes.
El proceso de mejora, que técnicamente se llama de "mejora continua", puede continuar tan indefinidamente como uno quiera o le haga sentido los esfuerzos incrementalmente mayores para perfeccionar aspectos cada vez mas menores (rendimientos decrecientes). Quizás no lo mencioné, pero todo ésto corre en Linux, y mi mejor estimación en éste momento es que uno puede estudiarlo por una vida y no será suficiente, siempre encontrará algo que no conocía.
Y si.... me descubrieron, poner un beacon es, después de todo una excusa. Feliz Navidad!

martes, 18 de diciembre de 2018

Enseñanza de la pequeña frambuesita (susurrante)

He compartido en entradas anteriores el comienzo de experimentos con el maridaje entre una placa de procesamiento de propósitos múltiples como la Raspberry Pi junto con el sombrero (shield) QRPi de TAPR siendo utilizados en el modo WSPR creado por Joe Taylor (K1JT). Que todo ésto ande junto es un entretenimiento fantástico, que seguramente generará una nota posterior. Que además funcione como un recurso de infraestructura (7x24) es otro entretenimiento fantástico, que también seguramente compartiré en una nota posterior. Lo que quiero compartir ahora son algunas conclusiones, simples pero interesantes, que se pueden obtener con el análisis de los datos obtenidos. El database de observaciones puede bajarse desde WSPRNet.org, es gigantesco y cubre todos los reportes compartidos en todas las bandas donde opera el sistema (virtualmente todas). Sin embargo es un poco difícil cuadrar los datos y hacerlos comparables entre estaciones diferentes. Puedo tomar dos spots entre USA y EU por ejemplo, donde alguno de los actores es diferente y siempre me  quedará la duda sobre si las diferencias de nivel de señal se corresponden con propagación o se trata de alguna particularidad de las estaciones intervinientes. Para solucionar eso puedo tomar todos los spots reportados a una estación en particular, allí la diferencia será la que corresponda a la estación receptora solamente. Puedo reducir el alcance tomando  estaciones receptoras de referencia en distintos puntos geográficos y estudiar la propagación en el "circuito de propagación" (como se lo denominaba antes) entre dos referencias estables.
En la medida que los datos de mi beacon empiezan a ser significativos en volumen es posible hacer ese estudio con mis propios datos, después de todo conozco muy bien uno de los extremos. El beacon opera en 14 MHz con 100 mW (+20 dBm) sobre una antena dipolo rígido orientada en dirección NNO-SSE.
El beacon es rutinariamente reportado por un conjunto de estaciones, de las cuales tomo una representativa de Brasil (PY), Antártida (DP0) y USA Costa Oeste (W6), los resultados de múltiples observaciones puede verse en la tabla adjunta.
Las sucesivas columnas son el promedio de la mejor relación señal a ruido (SNRmax), la peor que es el límite del sistema WSPR (-28 dB, SNRmin), la grilla, distancia y luego un cálculo simplificado de cual debería ser la potencia a utilizar en esas condiciones en SSB y CW para ser audible (condición tomada arbitrariamente como 6 dB de SNR).
Dado que WSPR mide su SNR directamente sobre un ancho de banda de fonía la diferencia para el caso de SSB será entre +6 dB y lo que fuera el máximo, en éste ejemplo 21 dB para PY, 25 dB para DP0 o 31 dB para W6 todas para SSB. En el caso de CW éste modo tiene una ventaja "teórica" sobre el SSB de 10 dB la que se deriva de comparar un ancho de banda de 2700 Hz contra uno de 250 Hz. Esto es muy arbitrario, se puede tomar CW con filtros mucho mas angostos que eso, en concursos rutinariamente uso 100 Hz o menos. Y además la combinación cerebro-oido agrega un filtro aún mas selectivo que mejora la SNR. Pero esas son medidas subjetivas que no tomará en cuenta, bastará para la comparación que el CW tenga una ventaja en SNR de 10 dB sobre el SSB.

Luego se pueden calcular los SNR como en el caso anterior. Teniendo los SNR es posible calcular la potencia que requeriría en CW o SSB para obtener una relación equivalente a la promedio obtenida con WSPR. Puede verse por ejemplo que para obtener una señal audible en SSB cuando el circuito con PY en WSPR es de -15 dB SNR la potencia debería ser de 13W en SSB y 1W en CW. Figuras largamente consistentes con la experiencia práctica. Para un circuito mas complicado, W6 por ejemplo, para obtener un equivalente a -25 dB SNR en WSPR debería utilizar 126W en SSB y 13 W en CW; de nuevo consistente con la experiencia para las geografías involucradas.
Usando el mismo criterio se puede calcular la potencia mínima necesaria en CW o SSB para obtener una relación SNR de 6 dB cuando el sistema WSPR está al límite (-28 dB SNR), el resultado puede verse en el gráfico donde para un beacon WSPR de 100 mW en 14 MHz se grafica cuanta potencia sería necesaria en CW o SSB cuando es reportado en WSPR como distintos niveles de SNR. Entonces si el beacon, que recordemos tiene solo 100 mW,  es reportado como teniendo -28 dB SNR en WSPR para un dado circuito en un dado momento, se necesitan para ese circuito y ese momento 25 W en CW o 250 W en SSB para ser escuchados al limite sobre el ruido (+6 dB SNR), siempre midiendo en términos de potencia irradiada. A medida que la señal mejora en WSPR los requerimientos de potencia se hacen mas modestos en los otros modos; en el extremo cuando el sistema WSPR reporta un SNR de -13 dB bastarán 1 W en CW u 8 W en SSB para trabajar el mismo circuito, claramente potencias del orden de las usadas en QRP!
Para comunicar con la base antártica DP0GVN se necesitarán en los mejores momentos 3 W en CW y 32 W en SSB; finalmente con zona W6 en los mejores momentos se necesitarán 13 W en CW y 126 W en SSB. Notese que en CW las potencias solo son un poco mejores que QRP, mientras que en SSB son bien compatibles con equipos normales de baja potencia. No lo he comparado con otros modos en términos prácticos, pero como una hipótesis de trabajo inicial diría que las condiciones de CW son aplicables a PSK31. Asumiendo que FT8 tiene una performance 8-10 dB peor que WSPR una primer iteración del análisis podría decirse que el circuito debería estar habilitado a igual potencia cuando WSPR reporta -18 dB o mejor o igual SNR con potencia en FT8 10 dB mayor (1W).
Esta es una fantástica referencia para comparar antenas, comparar condiciones, planear concursos y hasta estudiar condiciones de DX con un determinado lugar; y es sorprendente los poquisimos recursos que es necesario poner en juego para habilitar éste tipo de estudios; y lo divertido que es hacerlo, pero eso como dije al principio lo contaré en otra entrada.

martes, 4 de diciembre de 2018

ARRL 10 Mts 2018

El próximo fin de semana se viene el ARRL 10 Meter Contest organizado por la ARRL. Tradicional concurso y uno de los que cierran el calendario 2018 de concursos internacionales.
Si bien es un concurso muy desafiante y entretenido en los momentos del máximo solar, donde la propagación en la banda de 10 metros es global y prácticamente 20 o más horas por día, no lo es tanto en momentos en que el ciclo solar está en el mínimo y la banda a duras penas se abre unos momentos por día, si es que lo hace.
Existe una tímida actividad solar que algunos expertos asimilan a las primeras manchas que por su polaridad y ubicación parecen empezar a anticipar el nuevo ciclo solar; sin embargo estamos muy lejos que la propagación tenga buenas características y con un Solar Flux Index (SFI) de 69 y un SN=0 los pronósticos dejan poco margen para el aliento.
Utilizando el método que expliqué en muchos otros "pronósticos" anteriores utilizo los spots del Reverse Beacon Network durante el reciente CQ WW CW 2018, como un posible indicador de los horarios en que se puede esperar algo de propagación.
Filtrando los archivos "crudos" (raw) disponibles en el sitio del Reverse Beacon Net para los días 24 y 25 de Noviembre y filtrando por spots que provengan o reflejen actividad de estaciones LU y CX pues por proximidad las características de propagación se asumen comparables. En base a ellos se extrae la tabla adjunta donde se indica la probabilidad de tener propagación (rojo=sin propagación, verde=con propagación, amarillos/naranjas=estados intermedios).
Puede observarse que éste pronostico proyecta 15 horas de apertura durante los dos días de concurso, con solo 7 horas (marcadas con un asterisco en verde sobre la columna izquierda) entre ambos días donde la propagación se pronostica moderada a buena. El grueso de las aperturas serán con estaciones de Sud América y el resto con Norte América. No hay trazas de posibles aperturas con el resto de los continentes. Esto parece corresponderse con aperturas de tipo "Esporádica-E" mas que ionosfèrica; lo que de ser cierto desalienta participaciones con potencias menores a LP (y el que pueda con HP incluso).
Intenté corroborar éste pronóstico con otro basado en los patrones de propagación detectados por la red WSPR, pero en ese caso me encontré con que no hay datos para 10m que incluyan estaciones de Sud América, parece un buen proyecto poner una baliza WSPR que opere en 10 metros para proveer datos que existen con cierta abundancia en otras bandas.
Cada uno decidirá si un concurso que plantea tan pobres condiciones es suficientemente desafiante o divertido como para justificar la "inversión" en horas necesaria. Hay dos puntos a favor de participar, una es que después de todo la propagación es impredecible y quizás haya aperturas mas amplias que las que éste pronóstico permite establecer. Por otra parte se puede utilizar una estrategia de participación mínima pues después de todo la cantidad de horas en las cuales el movimiento puede ser de cierta intensidad es ciertamente muy bajo, y está concentrado en el domingo además; debido a éste factor con una concentración muy baja de horas se puede lograr un puntaje aceptable e incluso competitivo. A diferencia de la tradicional ventaja que disfrutamos en el cono sur para participaciones en la banda de 10 metros es posible que ésta oportunidad no tengamos esa ventaja; si la propagación ocurre mayormente dictada por condiciones típicas de Esporádica-E las estaciones en el Caribe, Europa y Estados Unidos nos llevarán una enorme ventaja. La única forma de saberlo será participando!

jueves, 22 de noviembre de 2018

Pronóstico (susurrante) de propagación

 El fin de semana próximo se viene el CQ WW de CW edición 2018, fecha cumbre del calendario internacional siendo uno de los concursos con mas participación. La propagación está pobre en todas las bandas, y en particular en las bandas altas que es donde podemos tener base para ser competitivos desde lo profundo del mapa que estamos. Usualmente 10 metros me dá la mayoría de los contactos, los runs mas intensos y la cantidad de multiplicadores mas importante. Pero 10 metros está virtualmente apagada. El pronóstico (y las escuchas recientes) parecen indicar que 15 metros será la banda mas alta que estará disponible, siendo 20 y 40 metros probablemente las que mas intensidad provean. En un pronóstico reciente basado en la cantidad de spots durante la edición de fonía  del mismo concurso, hace aproximadamente un mes, ensayé una idea preliminar de cuales podrían ser las mejores bandas en cada hora y las mejores horas para cada banda (respectivamente para usarse en planeamiento de participaciones "All Band" (AB) y "Single Band" (SB). Recientemente estuve experimentando mucho con los modos de señales débiles, en particular FT8 (Franken Taylor 8-PSK) y WSPR (Weak Signal Propagation Report pronunciado como  "Whisper" o susurro). Este último no deja de sorprenderme respecto a que distancias pueden lograrse con que señales insignificantes. Pero al margen de ésto al estar monitoreando las 24 horas marcan una buena idea de cuando hay propagación y para donde. La indicación necesita de otros factores para poder transformarse en pronóstico, por cierto que puede haber propagación pero no haber participantes. También es posible que haya propagación pero dentro de los límites de señales débiles que éstos modos a fuerza de teoría de comunicaciones y calculo matemático puede extraer desde ahí abajo, pero que para cualquier otro modo representaría una banda cerrada. No obstante, y aún a cuento de esas salvedades es interesante comprobar en que horarios parecen indicarse aperturas hacia donde. 
El método de cálculo es simple, se extraen 48 o 72 horas de reportes de los beacons (WSPRNet) con base en Argentina de una banda dada (en éste ejemplo 40 metros), se elige al azar una de las estaciones reportadas que muestre un número de spots importante y se analiza la distribución de quien hizo el reporte y que nivel de señal reportó. Aquí aparece otro factor de distorsión, obviamente el nivel de señal reportada dependerá de la antena de quien reporta, supongo que habrá quienes tengan antenas mejores que otros. Pero se trata de un análisis aproximado en cualquier caso. Luego los reportes son ordenados según el continente, la hora y el nivel de señal para luego tabularlos y graficarlos. Se toma como piso teórico del modo WSPR -28 dB como relación SNR (Relación Señal-Ruido o Signal-to-Noise-Ratio sobre una banda base de fonía) hasta el cual el modo puede decodificar una señal, por lo tanto se calcula cual es la relación SNR sacando la diferencia con el reporte; de esa forma "mas" SNR es "mejor" reporte o mejores condiciones de propagación. El resultado está en el gráfico adjunto. Puede verse que la propagación es reportada como permanente durante las 24 horas con Sud-América (mayormente Brasil), mas allá de eso la banda se muestra cerrada entre las 8am y las 6pm hora Argentina. En distintas horas se van alternando los diferentes continentes, terminando hacia la madrugada con Asia, lo que coincide con las escuchas respecto a la apertura con JA hacia el amanecer. Oceanía es mayormente Hawaii. Este reporte no es demasiado diferente del reporte de mejor hora por banda basado en spots, de hecho es bastante consistente. El análisis puede ser repetido para cualquier banda que se tenga interés, o para todos en caso que se planee una participación "All Band". Un elemento mas para hacer cuentas e imaginar que podemos pronosticar algo tan cambiante y aleatorio como la propagación. Que sea con suerte para todos los que participen, ¡aunque sea un ratito para divertirse!

martes, 6 de noviembre de 2018

Silbando (muy) bajito

¿Que tan lejos se puede llegar con una emisión QRP? ¿QRPp? ¿QRPpp?, bueno en realidad aún menos, con solo 10 mW (+10 dBm). Bueno, depende del modo, en el caso de WSPR y de acuerdo a los reportes en el database mantenido en WSPRNet bastante lejos, 1600 Km (PY2GN) y 4900 Km (DP0GVN, Antártida). 160000 Km/W y ... 490000 Km/W (¡!) respectivamente. En perspectiva una comunicación típica de HF con, digamos, antípodas como por ejemplo 15000 Km con 100W tiene un rendimiento de 150 Km/W. En VHF podríamos esperar 50 Km con 10W (5 Km/W). Eso da una idea del rendimiento del modo y su capacidad de operar con señales extremadamente débiles. 
La configuración utilizada es la generación usando el programa WsprryPi corriendo en una placa Raspberry Pi 3, con solo un filtro pasabajos pero sin amplificador de señal, es decir una potencia en el orden de 10 mW, como antena utilizo un dipolo rígido Walmar que habitualmente utilizo para pruebas y evaluación. El aparato es realmente compacto, el pequeño filtro "pi" cabe dentro de la caja del procesador, un script en bash levanta la baliza al dar "reboot" para funcionamiento autónomo. En la estación la señal es bien "caliente" a pesar de su bajo nivel (lo que se vé en la pantalla local del programa WSPR), si bien la cercanía sugiere que el filtro deja pasar espurias en realidad ninguna de ellas está a menos de 30 dB por debajo de la fundamental, lo que es mas que suficiente para considerarse "limpia" (aunque podría ser mejor, claro). Para no hacer un uso excesivo de la banda pasante la baliza se emite cada 10 minutos, siendo éste un compromiso para no esperar demasiado entre emisión y emisión para hacer pruebas; es posible que una mirada posterior haga mas razonable una latencia de 20 o 30 minutos. La idea general es seguir trabajando con la baliza y hacerla multi modo (CW, RTTY, quizás SSTV y PSK) en el futuro aunque dudo mucho que esos modos (con la posible excepción de CW) puedan ser escuchados mas allá de un ámbito muy local. Mucho, para ser la nada misma en términos de energía.


lunes, 5 de noviembre de 2018

CQ WW CW Ediciòn 2018

Se viene el CQ WW CW Edición 2018, posiblemente la fecha mas importante del calendario de CW y una de las mas importantes del calendario anual de concursos. Como parte de la preparación es útil intentar pronosticar que bandas tienen mejores posibilidades, y en función de eso cual es la mejor categoría para poder competir. Estamos en el bajo del ciclo solar, y eso hace que las opciones de bandas sean menos y que las condiciones tiendan a ser malas en las bandas mas altas y algo mejores en las mas bajas.
La reciente edición de Fonía puede dar algunas pautas de los patrones de propagación esperables, que quizás al estar separado en el calendario de la edición de CW por aproximadamente un mes es de esperar que las condiciones generales de propagación sean similares. Mas esperanza que otra cosa, pues la propagación es un fenómeno con mucho de caótico e impredecible, gobernado por energías de escala cósmica donde muchos eventos pueden trastocar cualquier pronóstico.
De repetirse los patrones de condiciones, premisa de éste pronóstico, es posible proyectar las posibilidades de contacto para estaciones de Zona 13 (Argentina y Uruguay) utilizando para ello los reportes en DX Cluster durante la competencia. Los reportes fueron extraidos de los registros del DX-Cluster que Rick (LU9DA) mantiene en funcionamiento y hace disponibles para el análisis. La cantidad de reportes (spots) es necesariamente menor pues depende de lo que puedan enviar las estaciones manualmente (no hay, aún, un servicio de reporte automático como el Reverse Beacon Network para CW/Digitales para SSB). Aun así hay suficientes reportes como para establecer preliminarmente frecuencias proyectadas durante el concurso. Es importante calcular por separado el primer del segundo día del concurso pues las posibilidades de contactos dependen tanto que haya estaciones como que exista propagación, en general el patrón de participación de estaciones no es uniforme en ambos días de la competencia. Dados los contactos reportados pueden hacerse dos cálculos, por un lado la mejor hora para la banda, es decir para una dada banda cual es la proporción de reportes en una dada hora (a mas alto el valor se asume mayor la probabilidad de tener contacto en esa hora). Y por otro lado es posible calcular la mejor banda para la hora, es decir cual es la probabilidad de tener contactos en una dada banda respecto de las otras. Se utiliza un mecanismo de coloreado donde verde significa mejor, rojo peor y gamas amarillas intermedio. El primer pronóstico puede ser indicativo para planear participaciones de tipo "Single Band" mientras que las segundas para participaciones de tipo "All Band". En el caso de "Single Band" puede además usarse para identificar posibles horarios, supuesto que no sea posible o deseable participar la totalidad del concurso. Hay otras posibles formas de estudiar la posible propagaciòn, entre ellas escuchar en la semana anterior las condiciones mas localizadas, utilizar pronósticos basados en VOACAP u otros. Hay muchas otras condiciones técnicas y reglamentarias sobre las que trabajar para estar a punto, para divertirse, ¡por supuesto!

lunes, 29 de octubre de 2018

Frambuesas susurrantes

El título refiere, claro, al juego de palabras con los nombres en inglés de la placa Raspberri Pi (Frambuesa) y la utilización del modo WSPR (Whisper, susurro en inglés). Aclarados los aspectos linguísticos y el hecho que el blog sigue siendo despues de todo técnico es bueno contar un poco una serie de posibilidades fantásticas de esa combinación. La placa Raspberry Pi es una maravilla que contiene un computador con buenas posibilidades de ser utilizada en muchos fines de experimentación, incluida la experimentación de radio, a un costo asombrosamente bajo. Mucho se ha escrito sobre ella, sus orígenes y centenares de posibles usos para repetirlos aqui. Tampoco es el momento de repetir el extenso campo de experimentación que trajeron a la radio los modos digitales de bajo nivel de señal inventados por Joe Taylor (K1JT). Lo que es fascinante es la combinación de ambos. En mi vieja casa digital (lu7hz.blogspot.com) compartí muchos artículos sobre ambas plataformas e incluso una sobre los primeros esfuerzos de generar WSPR a partir de una Raspberry Pi (aqui). El trabajo, para sorpresa de nadie, es el resultado del talento de un equipo internacional que ha venido trabajando los últimos años para explorar y perfeccionar un concepto. Si bien los detalles pueden conseguirse en los enlaces provistos no viene mal repasar los fundamentos. La placa Raspberry implementa varios de su periféricos con un chip denominado Periféricos ARM (BCM2835) el cual entre muchas de sus funciones implementa un modulador por ancho de pulsos, el cual puede ser programado para generar señales de cualquier frecuencia en el rango de HF-VHF cercano; esto puede ser aplicado directamente en radio para usar la placa Raspberry Pi como un generador de señales pudiendo implementar diferentes modos de modulación, en particular los modos digitales donde la información de amplitud sea constante. Los esfuerzos iniciales fueron realizados por  Oliver Mattos y Oskar Weigl quienes implementaron PiFM como prueba de concepto de explotar el DPLL en las Raspberry Pi implementando  un transmisor de FM capaz de operar en el rango 0-250 MHz.  
Posteriormente Dan (MD1CLV) agregó un algoritmo de codificación de WSPR originalmente ideado por F8CHK resultando en el programa WsprryPi que es un beacon para las bandas de LF y HF. Guido (PE1NNZ) extendió el concepto utilizando un esquema de modulación PWM basado en el DMA reusando un divisor fraccional presente en la implementación original de PiFM, permitiendo extender el funcionamiento a las bandas altas de HF y VHF. Finalmente James Peroulas simplificó enormemente la sincronización de tiempo utilizando un servidor NTP para corregir el ruido de fase y jitter producido por el clock del Raspberry Pi (ver aqui detalles). El desarrollo en WsppryPi sigue al presente siendo un proyecto muy activo en el repositorio GitHub desde el cual se puede bajar la versión mas reciente. La señal se extrae de uno de los puertos digitales de la Raspberry Pi (usualmente GPIO4). Ahora bien, esa señal tiene algunos inconvenientes, por un lado es debil, no puede exceder los 100 mW y es mucho mas realista considerar que no excederá los 10 mW (10 dBm). Por otro lado el puerto es muy sensible, basta una descarga estática (facilmente presente en una antena), demasiada corriente extraida (por un cortocircuito, por ejemplo) para dañarlo en forma permanente. Finalmente, la señal es una onda rectangular, muy rica en armónicos y espureas.

La onda rectangular se puede resolver con un filtrado pasabajos razonable, al menos preliminarmente. Pero sigue siendo necesario obtener algo de aislación. Zoltán Dóczi (HA7DCD) diseñó una placa que es comercializada por TAPR a costo muy modesto denominada QRPi que no solo incluye extensivo filtrado sino también aislación y algo de ganancia con lo que pueden extraerse 100 mW en operación continua (20 dBm). La instalación de hardware y software es realmente simple, solo hay que seguir las instrucciones en el sitio GitHub para facilmente bajar los paquetes de software, configurarlos y ejecutarlos. Hay que leer con detenimiento la documentación del software para estar seguro que aplica a la placa que tengamos y a la versión del software. Una vez en el aire luce como cualquier emisión de WSPR.
Lo curioso del caso es que con la misma configuración pueden implementarse otros proyectos, tales como un beacon de CW (PiCW) y  SSTV (PySSTV). Con modificaciones mínimas también se puede utilizar en otros modos y con el agregado de una placa RTL-SDR construir un transceiver completo multimodo a partir de la combinación de la placa RaspberryPi para generar la señal con el dongle para recibirla con el programa QTCSDR. Las oportunidades de experimentación son infinitas, la diversión también.

lunes, 24 de septiembre de 2018

Arduino+SDR=SINPLEA

Recibí la placa "Arduino Shield" ofrecida por la Elektor Labs, complemento a los artículos publicados en la revista Elektor, con una serie de artículos titulados "SDR Reloaded". La placa la que rápidamente pude integrar con un marco de trabajo (en progreso) pensado para integrar  diferentes proyectos usando una placa Arduino como controlador. Originalmente el desarrollo lo hice con la idea para un proyecto de integrar con un transceiver QRPp "Pixie" para, en conjunto con un DDS, tener un transceiver monobanda capaz de operar en uno o mas modos digitales (CW, RTTY, PSK, WSPR, JT65, etc), y por sobre todas las cosas una plataforma sencilla de experimentación. En la medida que el proyecto empezó a tomar forma se ramificó, inevitablemente diría, a muchas otras ideas tales como servir de controlador de un transceiver de banda lateral comercial convertido (Cahuane), una baliza de WSPR, un transceiver de PSK, un handy de VHF-FM de baja potencia y varios otros mas. Claramente las ideas rápidamente desbordaron cualquier marco de tiempo real disponible para implementarlas y los materiales lentamente se fueron apilando en cajas respectivas esperando su turno. 

La idea general es, en general, construir una plataforma (se puede ver como una librería) que maneje "objetos" mas o menos comunes en una implementación de equipos de radio tales como un panel de sintonía, uno o mas VFO asumiendo la disponibilidad de un DDS., un sistema de navegación en menu para configuración, una plataforma de comandos y un sistema CAT. Luego, para cada proyecto desarrollar los pedazos de código que correspondan con la plataforma específica e integrarlos con la librería base para crear el microcódigo específico de forma que el objeto del proyecto que funcione en forma autónoma. En tal sentido, no intento generar un solo bloque de microcódigo que contenga todos los proyectos, sino que mediante opciones de configuración durante la compilación (comandos condicionales) active o separe los bloques de código que intervienen en un proyecto en particular, algunos proyectos podrán implementarse en una plataforma realmente pequeña (un Arduino mini o incluso un chip Tiny-85, por ejemplo) mientras que otras requerirán otras mas grandes.


En general la arquitectura consiste en (ver foto) una placa Arduino (One, Nano o Mega según el caso), con un shield específico del proyecto que sirva como interfaz con el hardware y otro shield que provea botonera, visor LCD y palanca de mando. El primero y el último son ofertas comerciales fácilmente disponibles mientras que el shield especializado depende mucho del proyecto. En el caso de la placa SDR de Elektor la misma fue descripta un  artículo de la revista e implementa un demodulador Tayloe con el cual se obtienen las señales I/Q con las que procesar el resultado. Ese tipo de moduladores fueron descripto muchas veces en entradas anteriores de éste blog, y en particular de mi anterior blog lu7hz.blogspot.com. La implementación siempre empieza por un oscilador a 4x la frecuencia de trabajo,  circuitería para obtener dos señales en cuadratura, un detector de producto digital y amplificadores de RF y audio. El circuito de ésta placa en particular puede verse en la figura adjunta. La implementación de éste proyecto, al que denominé SINPLEA, es un receptor multimodo de banda corrida para la gama de HF (200KHz a 30 MHz). La plataforma aún incompleta se denomina DDSPLUS y está disponible en GitHub como una versión que evoluciona según agrego funciones o soluciono problemas. Aunque en su estado actual todavía tiene "bugs" significativos es suficientemente estable como para ser utilizado casualmente.  El software tiene una interfaz simple para seleccionar uno de dos VFO disponibles, la banda (bandas de aficionado o "Off" para banda corrida) y el paso de sintonía (100Hz, 1KHz, 10 KHz, 100 KHz,1 MHz). Como en cualquier proyecto las opciones y "defaults" pueden fácilmente ser cambiados e implementados en una versión diferente de firmware si así se desea.
La operación de la interfaz de usuario es relativamente simple. En condiciones normales el encoder se utiliza para cambiar la frecuencia (como si fuera un dial). Apretándolo  se habilita el modo menu donde el encoder mismo sirve para navegar las opciones (en éste caso Banda, VFO y paso), para cambiar una opción se mantiene nuevamente presionado el botón de enconder hasta que se activa el modo edición, se selecciona la opción y para salir se dá un toque corto al encoder (salida sin grabar) o uno mas largo (salida grabando resultados). Para operar el circuito utilizo una placa de sonido USB, lo que me permite sintonizar segmentos de 48 KHz en cada banda (24 KHz a cada lado de las sintonía del DDS). La sintonía no se hace directamente en el receptor, alli solo se coloca la frecuencia base, la sintonía de las señales propiamente dichas y el modo a decodificar se realizar mediante la interfaz gráfica del programa SDR. El software que utilizo es SDRSharp, potente y confiable. Las pruebas preliminares en el aire son muy satisfactorias. No he desarrollado aún el sistema CAT, el cual lo haré emulando el conjunto de comandos de un Yaesu FT817, el cual además de ser muy completo y relativamente simple de implementar permitirá integrar los distintos dispositivos a la estación utilizando OmniRig como plataforma.







sábado, 1 de septiembre de 2018

Viejos recursos, nueva casa

He migrado a éste blog el recurso de monitoreo de propagación (WebCluster) que provisto por Rick (LU9DA) en su página Web vengo usando desde hace más de una década y que me resulta sorprendentemente eficiente y efectivo.
El mismo se basa en una serie de imágenes que genera Rick cada pocos minutos mostrando los trazos en un mapa indicando estaciones reportadas en el cluster y sus reportantes. La suma de ambas muestra que caminos de propagación están abiertos y en cierta medida su intensidad. Es enormemente útil para identificar rápidamente cuando la propagación cambia, sea geográficamente o en cuanto a la banda en la que ocurren aperturas. Un simple script, disponible como gadget permanente en éste blog, lo único que hace es tomar esas imágenes y refrescarlas periódicamente. Muchas veces he intercambiado opiniones con otros colegas sobre si el uso de éste recurso implica operar "asistido" o no, y la cuestión no es facil de dilucidar puesto que si bien no aporta información de estación y frecuencia (un spot) también es claro que es mas facil que estar ruleteando las bandas para escuchar cual se abrió y para donde. En mi caso lo uso cuando opero asistido con lo que la situación pierde entidad. También aproveché para trasladar otros dos recursos muy útiles de mi anterior blog a éste. Espero que les sea útil, es un gran recurso.