Hace un tiempo encontré en la red un decodificador de antenas con Arduino, valido para mi Yaesu y que incluye la antena para 60 m, asi que procedi a realizar el montaje, el cual ha estado funcionando hasta la fecha, sin problemas, pero hace un par de dias, dejó de funcionar, asi que me puse a investigar, resultando que el problema esta en el puerto com a traves del cual realiza la decodificiacion.
Resulta que es necesario convertir los niveles RS232 del puerto com, a niveles TTL para el Arduino, y de eso se encarga un convertidor RS232 a TTL con un integrado MAX3232, y que resulta ser el causante del problema, pues al conectar el conector DB9 procedente del equipo al convertidor RS232 a TTL, desaparece la comunicacion entre el equipo y el decodificador.
Alguna idea de como sulucionar el problema?
La fuente del proyecto es: https://4z1kd.github.io/HamSwitch/
Saludos cordiales.
Rafa. EA5TV
Rafa. EA5TV. (Ex EA5BFX)
GRUPO TORTUGAS CW
En radio desde 1979 y todavia sigo aprendiendo
Bueno, es difícil darte una solución simple, tampoco he podido consultar el modelo de yaesu y los datos que transmite a través del puerto de salida.
He consultado el trabajo del decodificador que estás utilizado y veo que incluye un Arduino UNO. No me ha dado tiempo a analizar el código aunque lo he rescatado porque me parece que está bien hecho.
En teoría, el mCU que lleva el UNO es de tecnología TTL, lo que indica que los pulsos con tensión positiva entre 2,8V y 5V debería leerlos. Indicas que el conversor RS232 que utilizas lleva un MAX3232 que, según la hoja de datos es un "MAX3232 3-V to 5.5-V Multichannel RS-232 Line Driver and Receiver With ±15-kV ESD Protection" aunque no estoy seguro de su funcionamiento porque nunca lo he utilizado aunque tenía entendido que la tecnología que utiliza el protocolo RS232 es de 12V y los conversores son de 12 a 5V.
Básicamente, como sabes, dos dispositivos serie normalmente se comunican entre sí conectando las señales TX->RX en ambos dispositivos. Con un Arduino, para comprobar si hay actividad yo utilizo un truco muy guarro, conecto el positivo de un voltímetro a TX y el negativo a masa. Si hay actividad, la tensión que refleja debería ser pulsátil sobre 3V, si la tensión es fija es que el cable no refleja actividad. Con esta comprobación se podría descartar una avería en el conversor sabiendo que el equipo debería transmitir los datos de la frecuencia.
Si hay actividad, un pequeño programa sobre otra placa de Arduino debería leer simplemente si hay o no transferencia de datos y descartar si el problema está en el Arduino. Estas son las posibilidades que se me ocurren antes de la placa, pero no tengo experiencia con Yaesu ni con conversores RS232 a TTL.
En cualquier caso, es un tema que me interesa pues estoy trabajando en los mismo, un deco de banda para diferentes marcas, ya he resuelto la comunicación con el deco de Icom [ACC] y estoy terminando el deco para Icom CI-V vía puerto Serie.
Pensaba que Yaesu codifica la banda en una salida etiquetada con BAND DATA y utiliza un codificación BCD de 4bit que. En cualquier caso, sería interesante conocer el modelo de Yaesu que utilizas.
La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio
Bueno... he tenido tiempo de echarle un vistazo al código. Veo que el autor utiliza las I/O digitales 8 y 9 para emular por software un puerto serie para la comunicación entre el Yaesu y el deco:
#include <AltSoftSerial.h> //Esta es la librería que crea un puerto serie por software ya que UNO solo tiene uno
//Pins 8 and 9 are used as Rx and Tx in AltSoftSerial to communicate with the radio
AltSoftSerial radioSerial; //a serial port to the radio (pins: 8-RX ,9-TX) // Ha creado el puerto Serie radioSerial
El pin 9 del Arduino debería conectarse al TX del conversor y el pin 9 al RX, (probar continuidades en el cable).
La lectura del puerto serie la hace esta función:
unsigned long Y_Response(AltSoftSerial* serial)
{
int i = 0;
String response = "";
while (serial->available()) {
if (i++ < 4)
{
int inChar = (int)serial->read();
response += (inChar < 10) ? "0" + String(inChar, HEX) : String(inChar, HEX);
delay(5);
}
else
{
serial->read();
}
}
unsigned long j = 0;
String pattern = "%lu";
sscanf (&response[0], &pattern[0], &j);
return j;
}
Una forma de comprobar el comportamiento del puerto sería programas una lectura directa (la función que he copiado pertenece a una librería) y ver que pasa. Pero quizá lo más práctico, si te ha funcionado el dispositivo sería reproducir las mismas condiciones que cuando funcionaba sin tratar de averiar cual es la avería.
De esta forma, si la salida del Yaesu es correcta, colocar un nuevo conversor TTL, (no puede ser muy caro), revisar el cable con los conectores, revisar las conesiones a la placa (sustituir eventualmente el Arduino UNO), revisar los ajustes del programa y volver a compilar el código y grabarlo en la memoria del Arduino.
La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio
Hola Enio. Muchas gracias por tu respuesta.
El problema se ha resuelto, aunque es cierto que no sabria decirte como.
Comoquiera que el decodificador estaba funcionando bien, y no habia habido ninguna subida de tension extraña ni cosas asi, pero si que tuvimos unos dias de fuertes tormentas electricas, (desconecto siempre las antenas cuando las hay), imagino que se debió descontrolar el puerto com en el que lo tenia conectado.
Dandole vueltas y antes de hacer otras pruebas, se me ha ocurrido entrar en la bios del PC y desactivar el puerto com y comprobando que efectivamente habia desaparecido del admnisrador de dispositivos de windows. He reiniciado varias veces el PC y despues he vuelto a entrar en la bios, he reactivado el puerto com, he conectado el decodificador y funciona perfectamente, cambiando la antena tanto desde el software, RSUno de SDRPlay, como desde el Yaesu.
Se me olvidaba, el Yaesu es un FTDx5000, y la comunicacion entre PC, equipo y decodificador es con un cable en Y, con un DB9 macho y dos DB9 hembra.
Saludos cordiales.
Rafa EA5TV
PD. Que te parece el montaje del israelí. Esta bien, no?
Rafa. EA5TV. (Ex EA5BFX)
GRUPO TORTUGAS CW
En radio desde 1979 y todavia sigo aprendiendo
Si está bien hecho, el que ha hecho el programa se ve que tiene experiencia. Realmente no hay mucha información en Internet y mucho menos en castellano. Personalmente, creo que los programas enfocados en resolver varios sistemas de decodificación, como éste, el de RemoteQTH, Micro Band Decoder, Band Master y alguno que me dejo, tienen el inconveniente de que hay demasiados parámetros para ajustar a la hora de adaptar un dispositivo a un determinado equipo.
Aunque sea más limitado, un programa que resuelve un sistema es más sencillo de hacer y también de entender. Como he comentado, voy programando soluciones para un solo sistema, ya está resuelto y probado el sistema de codificación por tensión variable del Icom [ACC] y, de paso, de los Yaesu FT 817 y FT857. También está muy avanzado el deco para CI-V de Icom y el desarrollo de un "shield" apto para cualquiera de estos sistemas. La placa que he desarrollado es para una MEGA 2560 PRO, que tiene la ventaja de que soporta cuatro puertos serie hard con el tamaño de un Arduino NANO y casi su precio.
El trabajo está pendiente de publicación.
La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio
QDURE - https://qsl.ure.es
Imprime y confirma tus QSL en tan solo tres click.
Nunca fue tan fácil y cómodo
el confirmar tus contactos.
TIENDA ONLINE URE
Publicaciones, mapas, polos, camisetas, gorras, tazas, forros polares y mucho más...
WEBCLUSTER EA4URE
Conoce el nuevo WebCluster de URE, ahora con nuevos filtros e información y compatible con GDURE