[TUTORIAL] Módulo multiprotocolo de Banggood

Sección dedicada a la presentación de tutoriales, que nos permitirán conocer a fondo nuestros cuadricópteros, así como debatir sobre los mismos o preguntar cuestiones de interés general.
Responder
moninox
Mensajes: 11
Registrado: 02 Mar 2016, 20:46

[TUTORIAL] Módulo multiprotocolo de Banggood

Mensaje por moninox »

Muy buenas apañeros,
aquí tenéis mi mini tuto sobre este super módulo.
Imagen
El multi-modulo integra los módulos NRF24L01 (muy utilizado en el mundo arduino y nanos chinos), A7105 (flysky y algunas variantes), CYRF6936 (dsm2 y devo), CC2500 (protocolo frsky). Aunque Banggood lo ha empezado a vender no hace mucho en plan industrial, la idea viene de uno de los usuarios ilustres del foro rcgroups, midelic, y del proyecto DeviationTX (enlaces al final del post).

Junto al módulo me llegó un conector de antena SMA hembra con pigtail y la antena correspondiente. Ojo con el tipo de conector porque no es fácil encontrar antenas decentes de 2.4Ghz con SMA macho (tengo pendiente cambiarlo...). También es importante tener en cuenta que su formato está pensado para montarlo en una cajita de tipo JR (ver enlaces al final).
Cuando lo vas a comprar hay tres opciones posibles Flysky, FRSKY y JR. Yo elegí Flysky porque entendía que era el más apropiado para mi Turnigy 9X. En su momento no estaba muy claro cuales eran las diferencias entre estas tres opciones pero lo último que supe es que traían diferentes versiones del firmware que solo afectaba al orden de los canales. Habría que buscar información actualizarla sobre estas diferencias!

En teoría este módulo puede ser instalado en cualquier emisora con soporte PPM (mediante trainer port), donde la selección de protocolos se realizaría mediante un selector físico incluido de 15 posiciones que permitirían elegir hasta 15 protocolos o subprotocolos. En emisoras Turnigy 9X, 9XR, 9XR Pro, TH9X, 9Xtreme, Taranis... con firmware er9x, ersky9X o OpenTX puede funcionar en modo serial obteniendo una integración total con los menús para la selección en caliente del protocolo y la parametrización que sea necesaria. Con la opción en modo serial es importante tener en cuenta que el firmware de la emi debe estar actualizado para incluir en sus menús los nuevos protocolos.

Si vas a utilizar el modo serial, cuando recibas esta maravilla tienes que hacer un par de retoques que dependerán de la revisión del módulo.
  • Primera revisión (que es la que tengo yo)
    Soldar dos resistencias
    Imagen
    Mi modificación:
    Imagen

    Segunda revisión (supongo que será la que se está enviando desde hace un par de meses)
    Puentear dos pequeños contactos
    Imagen
En serial mode, para elegir el protocolo o subprotocolo y asociarlo a un modelo, desde las opciones del modelo habrá que ir a la opción Protocol, elegir MULTI en la opción Proto, en la opción Protocolo elegir el protocolo y en Type el subprotocolo, si es necesario. Es importante echar un ojo a la descripción del protocolo en la docu porque en algunos casos es necesario alguna parametrización adicional (por ejemplo con el protocolo DSM2 y el limite de 4 canales que tiene por defecto)

El funcionamiento en modo PPM eligiendo el protocolo o subprotocolo desde el selector físico aún no lo he probado. Por lo que he leído, en el fichero _Config.h se define una matriz donde elegirnos el orden de los 15 protocolos que queremos tener disponibles.

La actualización del firmware se realiza desde la interfaz ISP. Para poder actualizar las versiones del firmware del módulo de forma más cómoda tengo pendiente soldar los 6 pines para la conexión ISP mediante un programador USBASP a 3.3V o utilizando Arduino. En la imagen de la revisión 2, en la parte superior izquierda pueden verse los pines para la conexión.

Con las actualizaciones del firmware solucionan algunos bugs y pueden incluir el soporte a nuevos protocolos. Aunque están disponibles los binarios con cada última versión (ver enlaces al final) lo ideal es compilar el firmware incluyendo los protocolos que cada uno necesite (no es posible cargarlos todos...). Para la compilación podemos utilizar el IDE de Arduino.

Los pasos a seguir para la compilación y actualización serían los siguientes:
  • 1. Descargamos el zip con el proyecto y fuentes: https://codeload.github.com/pascallange ... zip/master
    2. Abrimos el proyecto Multiprotocol.ino con el IDE de Arduino y editamos el fichero _Config.h (en la pestaña con mismo nombre) comentando los protocolos que no necesitemos (anteponiendo // a cada línea a comentar). Durante la compilación aparecerá un error si los protocolos que se incluirán son demasiados y no caben en la memoria del Atmega328 que lleva el módulo. En este caso habrá que seguir eliminado protocolos y volver a probar la compilación.

    En mi caso he elegido estos:

    Código: Seleccionar todo

    //Bellow is the list of all available protocols. Comment the protocols you are not using with "//" to save Flash space.
    #ifdef	A7105_INSTALLED
    	#define	FLYSKY_A7105_INO
    //	#define	HUBSAN_A7105_INO
    #endif
    #ifdef	CYRF6936_INSTALLED
    	#define	DEVO_CYRF6936_INO
    	#define	DSM2_CYRF6936_INO
    //	#define J6PRO_CYRF6936_INO
    #endif
    #ifdef	CC2500_INSTALLED
    	#define	FRSKY_CC2500_INO
    	#define	FRSKYX_CC2500_INO
    #define SFHSS_CC2500_INO
    #endif
    #ifdef	NFR24L01_INSTALLED
    	#define	BAYANG_NRF24L01_INO
    	#define	CG023_NRF24L01_INO
    	#define	CX10_NRF24L01_INO
    //	#define	ESKY_NRF24L01_INO
    //	#define	HISKY_NRF24L01_INO
    	#define	KN_NRF24L01_INO
    //	#define	SLT_NRF24L01_INO
    	#define	SYMAX_NRF24L01_INO
    	#define	V2X2_NRF24L01_INO
    	#define	YD717_NRF24L01_INO
    //	#define	MT99XX_NRF24L01_INO
    	#define	MJXQ_NRF24L01_INO
    //	#define	SHENQI_NRF24L01_INO
    	#define	FY326_NRF24L01_INO
    	#define	FQ777_NRF24L01_INO
    	#define	ASSAN_NRF24L01_INO
    #endif
    Si vamos a utilizar el modo ppm (eligiendo el protocolo desde el selector físico) habría que adaptar el siguiente array a nuestras necesidades (este modo aún no lo he probado :roll: ):

    Código: Seleccionar todo

    //The table below indicates which protocol to run when a specific position on the dial has been selected.
    //All fields and values are explained below. Everything is configurable from here like in the Serial mode.
    //Example: You can associate multiple times the same protocol to different dial positions to take advantage of the model match (RX_Num)
    const PPM_Parameters PPM_prot[15]=	{
    //	Dial	Protocol 		Sub protocol	RX_Num	Power		Auto Bind		Option
    /*	1	*/	{MODE_FLYSKY,	Flysky		,	0	,	P_HIGH	,	NO_AUTOBIND	,	0		},
    /*	2	*/	{MODE_HUBSAN,	0			,	0	,	P_HIGH	,	NO_AUTOBIND	,	0		},
    /*	3	*/	{MODE_FRSKY	,	0			,	0	,	P_HIGH	,	NO_AUTOBIND	,	0		},	// option=fine freq tuning
    /*	4	*/	{MODE_HISKY	,	Hisky		,	0	,	P_HIGH	,	NO_AUTOBIND	,	0		},
    /*	5	*/	{MODE_V2X2	,	0			,	0	,	P_HIGH	,	NO_AUTOBIND	,	0		},
    /*	6	*/	{MODE_DSM2	,	DSM2		,	0	,	P_HIGH	,	NO_AUTOBIND	,	2		},	// option=2=6 channels @ 22ms
    /*	7	*/	{MODE_DEVO	,	0			,	0	,	P_HIGH	,	NO_AUTOBIND	,	0		},
    /*	8	*/	{MODE_YD717	,	YD717		,	0	,	P_HIGH	,	NO_AUTOBIND	,	0		},
    /*	9	*/	{MODE_KN	,	WLTOYS		,	0	,	P_HIGH	,	NO_AUTOBIND	,	0		},
    /*	10	*/	{MODE_SYMAX	,	SYMAX		,	0	,	P_HIGH	,	NO_AUTOBIND	,	0		},
    /*	11	*/	{MODE_SLT	,	0			,	0	,	P_HIGH	,	NO_AUTOBIND	,	0		},
    /*	12	*/	{MODE_CX10	,	CX10_BLUE	,	0	,	P_HIGH	,	NO_AUTOBIND	,	0		},
    /*	13	*/	{MODE_CG023	,	CG023		,	0	,	P_HIGH	,	NO_AUTOBIND	,	0		},
    /*	14	*/	{MODE_BAYANG,	0			,	0	,	P_HIGH	,	NO_AUTOBIND	,	0		},
    /*	15	*/	{MODE_SYMAX	,	SYMAX5C		,	0	,	P_HIGH	,	NO_AUTOBIND	,	0		}
    };
    3. Verificar la conexión por ISP al módulo, que el selector físico esta en la posición 0 y que tenemos el programador en 3.3 voltios.
    4. Lanzar la compilación y subirlo vía USBASP.
Llegados a este punto el módulo ya tendría disponible todos los protocolos incluidos en la versión del firmware pero como comentaba anteriormente para poder hacer uso de ellos, o bien utilizamos el selector físico, o bien lo hacemos desde el menú de la emi. Para esto último es muy probable que debamos actualizar el firmware de la emi, que tiene el problema de que normalmente no se actualiza su código y binarios disponibles al mismo ritmo que el firmware del módulo por lo que ante un nuevo protocolo es posible que no podamos hacer uso de éste desde el menú.

Me he decidido ha actualizar el firmware de la emi para acceder a algunos protocolos que necesitaba después de la actualización del módulo. Después de pegarme durante más de un día y perder algún que otro pelo he conseguido entender como añadir nuevos protocolos y subprotocolos al código del proyecto er9x. He partido de la rama en desarrollo del firmware er9x (donde si que se encuentra disponible el protocolo H8_3D que necesitaba para mi JJRC H20, que he probado que funciona) y he añadido el subprotocolo E010 al protocolo MJXQ (el Eachine E010 es un clone barato del nano Inductrix que estoy esperando recibir). No he podido realizar muchas pruebas con esta versión del firmware de la emi pero de momento pinta todo bien. Si alguno de vosotros quiere probarlo subo los binarios al foro pero tened en cuenta que es una versión alpha, muy verde.

Imagen
Imagen

Hace unas semanas publicaron la revisión 821 del firmware er9x que incluye los últimos modelos soportados por el multimódulo

Pues hasta aquí. Si os molan los juguetitos y queréis controlarlos desde una emi medianamente en condiciones os recomiendo este módulo, con el que hasta el momento no he tenido ningún problema.

Por supuesto, cualquier comentario o corrección será bienvenida. Iremos actualizando el post entre todos!!

Enlaces:
El prota: http://www.banggood.com/es/2_4G-CC2500- ... 48377.html
Hilo de la idea original: http://www.rcgroups.com/forums/showthread.php?t=2165676
Hilo en rcgroups: http://www.rcgroups.com/forums/showthread.php?t=2709034
Docu oficial: https://github.com/pascallanger/DIY-Mul ... -TX-Module
Protocolos: https://github.com/pascallanger/DIY-Mul ... Details.md
Fuentes del firmware del módulo: https://github.com/pascallanger/DIY-Mul ... Module.git
IDE Arduino: https://www.arduino.cc/en/Main/Software
Binarios: https://github.com/pascallanger/DIY-Mul ... e/releases
Fuentes del firmware de la emi: https://github.com/MikeBland/mbtx
Mod e instalación del firmware er9x: https://www.youtube.com/watch?v=mHdmA69bLHY
Caja JR: http://www.thingiverse.com/thing:1691786 (este diseño no lo he probado aún)
Última edición por moninox el 17 Dic 2016, 20:59, editado 21 veces en total.
Munan
Mensajes: 272
Registrado: 24 Dic 2015, 08:46

Re: [TUTORIAL] Módulo multiprotocolo de Banggood (no terminado)

Mensaje por Munan »

Genial Moninox, puedes decir que tipo de programador hace falta para actualizar?

Enviado desde mi SM-G900F mediante Tapatalk
Imagen
moninox
Mensajes: 11
Registrado: 02 Mar 2016, 20:46

Re: [TUTORIAL] Módulo multiprotocolo de Banggood (no terminado)

Mensaje por moninox »

Hola Munan

Justo ahora estoy liado con temas de la actualización del módulo...

Como programador puedes utilizar un programador de tipo USBASP con selector de voltaje y soporte al chip Atmega328 (casi todos, por ejemplo yo uso este (http://www.banggood.com/USBASP-USBISP-3 ... 34425.html). También sería recomendable soldar los 6 pines en el módulo y usar un adaptador de 10 a 6 pines para que la conexión sea más cómoda (http://www.banggood.com/10-to-6-Pin-Sta ... 65532.html).

Otra opción es utilizar Arduino Pro Mini junto a un FTDI. Más info en https://github.com/pascallanger/DIY-Mul ... grammation

Ya he podido actualizar el módulo pero me acabo de enterar de que para poder acceder a los nuevos protocolos o subprotocolos desde el menú de la emi es necesario actualizar la versión del firmware (er9x/ersky9x) :o . Y aquí veo un problemilla, y es que no parece que estén manteniendo actualizado este firmware al ritmo que el del multimódulo (por ingenieria inversa tengo casi claro como poder añadir nuevos protocolos y subprotocolos a este menú yo mismo :D ). Otra opción para poder hacer uso de nuevos protocolos, independientemente del firmware de la emi, es utilizar el selector físico para lo que habrá que personalizar fichero _Config.h, eligiendo un máximo de 15 protocolos en orden y después compilar y flashear el módulo.

Iré actualizando el post con los avances que vaya consiguiendo.

Salu2
Durete
Mensajes: 15
Registrado: 12 Mar 2016, 02:46

Re: [TUTORIAL] Módulo multiprotocolo de Banggood

Mensaje por Durete »

Genial aporte Moninox clap clap clap...
Avatar de Usuario
Kitsune
Mensajes: 93
Registrado: 24 Dic 2015, 09:59

Re: [TUTORIAL] Módulo multiprotocolo de Banggood

Mensaje por Kitsune »

Cojonudo el aporte. Cuando me meta con los minis de andar por casa tendre que mirarme un multimodulo de estos aunque sea por ppm.
motoraton
Mensajes: 53
Registrado: 02 Jun 2016, 12:32

Re: [TUTORIAL] Módulo multiprotocolo de Banggood

Mensaje por motoraton »

Muy bueno, gracias!!

para el que no quiera/pueda imprimir la carcasa porta modulos existe este, que imagino que se podra acoplar

http://www.t9hobbysport.com/frsky-djt-j ... odule-case

Saludos
Avatar de Usuario
cacer
Mensajes: 14
Registrado: 04 Feb 2016, 22:40

Re: [TUTORIAL] Módulo multiprotocolo de Banggood

Mensaje por cacer »

Que grande eres!!!!

;)
robertoagp
Mensajes: 1
Registrado: 21 Jun 2017, 23:37

Re: [TUTORIAL] Módulo multiprotocolo de Banggood

Mensaje por robertoagp »

Hola a todos.
Yo he comprado uno en banggood nuevo que trae usb-
y la primera en la frente, he intentado linkar en D8 frsky con una f3evo con receptor frsky y nada.
He de decir que en canales marca 1-16 y no puedo cambiar a 1-8.
Alguna ayuda..
moninox
Mensajes: 11
Registrado: 02 Mar 2016, 20:46

Re: [TUTORIAL] Módulo multiprotocolo de Banggood

Mensaje por moninox »

Hola.
Entiendo q la fc lleva integrado el rx frsky y este solo soporta D8, verdad?

Que emisora y firmware tienes?

Para rx D8 debes elegir el protocolo FRSKYD en la lista de protocolos del menú
Responder