Página 3 de 7

Re: ¿Qué os parece esto para añadir wifi con muy poquitas líneas en el conector de expansión?

Publicado: 20 Oct 2015, 00:37
por Quest
Con esta última explicación entiendo que hacen falta físicamente 2 conexiones para RTS/CTS, que el módulo ESP-01 aparentemente no tiene (que es el que tengo yo y el que muestra Gatuso en RW). Trae VCC, GND, RX, TX, CH_PD, el reset y las 2 GPIOs. No obstante, por lo que he leido hasta ahora (aún me falta) algunos firmwares alternativos como el NodeMCU, que en vez de comandos AT usa scripts en lenguaje Lua, si usa RTS y CTS por los pines CH_PD y GPIO0. Tengo que mirar si hay algún otro que también los use. De todos modos los fuentes y SDK de los firmwares creo que están publicados y puedes hacerte tu propio firmware.

Por otro lado, al margen de esto, estaba intentando hacer un comando de Esxdos para recibir/transmitir simples cadenas de/al wifi (usando como base los códigos fuente en C que hay en el SVN de otros comandos como joyconf o writespi, etc). Lo malo es que no consigo que los datos lleguen/entren correctamente. Los de salida llegan bien más o menos 1 de cada 3 veces, y los de entrada son un galimatías (mayormente se imprimen tokens de basic y otros caracteres). No se si es que al hacerlo en C, los ciclos usados son tan altos (con respecto a hacerlo en ASM) que incluso a 1200bps hay fallos, o que...

Para enviar un comando de prueba (listado de APs), por ejemplo, hago algo así:

Código: Seleccionar todo

#define UART 250
#define UARTSTAT 251

......
......

void sendTestTX (void) {

	const char *cmd;
	cmd = "AT+CWLAP\xd\xa";

	ZXUNOADDR = UART;
	
	while (*cmd!=0)	{
		ZXUNODATA = *cmd;
		ZXUNOADDR = UARTSTAT;
		while (((1 << 7) & ZXUNODATA) == 0);
		ZXUNOADDR = UART;
		*cmd++;
	}
}

Re: ¿Qué os parece esto para añadir wifi con muy poquitas líneas en el conector de expansión?

Publicado: 20 Oct 2015, 01:01
por mcleod_ideafix
Quest escribió:Para enviar un comando de prueba (listado de APs), por ejemplo, hago algo así:

Código: Seleccionar todo

......
......
		while (((1 << 7) & ZXUNODATA) == 0);
El bit que tienes que comprobar para saber si puedes seguir transmitiendo es el bit 6, no el 7. El 7 es el que se comprueba para saber si hay un dato nuevo.

Re: ¿Qué os parece esto para añadir wifi con muy poquitas líneas en el conector de expansión?

Publicado: 20 Oct 2015, 01:17
por Quest
Cierto, que torpeza, lo leí mal :oops: y encima puse la condición al revés. Ya está arreglado, y ya no falla el envío. Ahora voy a revisar la recepción.

Re: ¿Qué os parece esto para añadir wifi con muy poquitas líneas en el conector de expansión?

Publicado: 29 Sep 2016, 17:51
por yombo
Buenas nuevas! Me he puesto con este tema y he progresado :-)

En concreto he podido implementar el control de flujo por hardware en la prueba de test19_multi_uart de mcleod. (La cual he portado hacia el test23_uart_control_flujo)

También he podido activar en mi chip ESP8266 el control de flujo en los comandos AT usando el siguiente comando (gracias a Óscar Hernández, @Gatuso464 en Twitter):
AT+UART_DEF=115200,8,1,0,2

El último parámetro (2) indica que se quiere usar CTS en el ESP. 0 es para no control de flujo, 1 es para activar sólo el RTS, 2 para el CTS, y 3 para ambos.

Por lo que he investigado, el CTS siempre es de entrada y el RTS siempre es de salida, cuando se conectan dos ordenadores (cuando se conecta un ordenador y un modem es diferente, pero no es este caso). Y el RTS es por nivel bajo, es decir si un dispositivo pone RTS a 0 está diciendo que no le envíen más bytes de momento.

En las pruebas sólo he usado RTS del ZX-Uno y CTS del ESP8266. Pero se puede hacer control de flujo en ambas direcciones (está implementado en el ZX-Uno), sólo hay que añadir el cable necesario, y usar como último parámetro el 3 en el comando UART_DEF.
Por cierto si se está haciendo las primeras pruebas es útil usar el comando UART_CUR, que cambia la configuración del puerto serie pero no la graba en la flash, revirtiéndose tras un reset. El comando UART_DEF sí graba en flash la configuración.

Hago notar que tuve que actualizar el firmware de mi ESP8266 porque lo compré hace mucho y aún no tenía entre sus comandos AT el comando UART_DEF.

En el ZX-Uno he añadido las dos líneas uart_cts y uart_rts, y la lógica necesaria para el control de flujo. He añadido un nuevo estado de espera en el módulo de recepción, que espera a que el módulo superior zxunouart le indique que la cpu ya ha leído el byte de dato recibido para continuar la recepción.

Os pongo un esquema de las conexiones, porque el chip ESP necesita algunas líneas a masa y otras a 3V3.
El pulsador con su resistencia de pull-up sólo es necesario para actualizar el firmware del ESP (se pulsa durante el reset para que entre en modo programación) Pero obviamente el ESP se conecta al PC para la grabación, no al ZX-Uno. Si no os hace falta, sustituid la resistencia de GPIO_0 por un cable.
El resto de las resistencias son opcionales, se pueden sustituir también por cables, por lo que he leído. Esto os irá bien si queréis usar la placa addon hdmi+esp8266 que ya se hizo (yo he usado protoboards y cables)

Imagen

El resultado de todo esto es que consigo recibir bytes a 115200 baudios sin perder ni uno.

El primer soft que he hecho (aparte de las primeras pruebas claro) es un programa de terminal "tonto" en el ZX-Uno, para poder enviar comandos al ESP.

Posteriormente quiero hacer un cliente de ftp que sea capaz de descargar ficheros y grabarlos en la SD, usando la rutina asm para grabar en SD que publicó Haplo :-)

Momento histórico de la primera recepción por WiFi de una petición GET desde el ZX-Uno:

Imagen


Montaje de las pruebas:

Imagen

Os pongo los fuentes y el TAP del terminal en ficheros adjuntos.
Los fuentes .v son del test23 pero puede que ya estén obsoletos. Me explico:
Podéis coger zxuno.v y zxunouart.v tal cual, son los que tienen más modificaciones. De los otros tres ficheros, está el de los pines (que podéis poner los pines que os vengan bien), y los otros dos sólo tienen añadida la definición del módulo zxunouart y los dos pines nuevos cts_uart y rts_uart. Como estos dos ficheros estarán más nuevos en el repositorio, no los copiéis ciegamente, sólo pasad los cambios.

Edito: he actualizado uart_control_flujo.zip, que había subido una versión anterior con un bug.

Re: ¿Qué os parece esto para añadir wifi con muy poquitas líneas en el conector de expansión?

Publicado: 29 Sep 2016, 18:53
por antoniovillena
Te puedo enviar la PCB del addon. Lo único es que necesita una ESP12E y no una ESP8266 que empleas tú, espero que no sea mucho inconveniente.

Re: ¿Qué os parece esto para añadir wifi con muy poquitas líneas en el conector de expansión?

Publicado: 29 Sep 2016, 19:00
por yombo
antoniovillena escribió:Te puedo enviar la PCB del addon. Lo único es que necesita una ESP12E y no una ESP8266 que empleas tú, espero que no sea mucho inconveniente.
Gracias, pero no hace falta de momento, porque me tendría que comprar el ESP12E.

Te explico, todos llevan lo mismo dentro y se llaman genéricamente ESP8266.
Las diferentes versiones encapsulan diferente y exponen más o menos pins. El mío es un ESP07 y tiene menos pins expuestos que el ESP12E.
Pero son perfectamente compatibles.

Re: ¿Qué os parece esto para añadir wifi con muy poquitas líneas en el conector de expansión?

Publicado: 29 Sep 2016, 19:40
por yombo
Quería decir que son compatibles en cuanto a funcionamiento. Lógicamente con más pines puedes hacer más cosas. Por ejemplo, con los ESP01 que son los primeros que salieron, y tienen los pines espaciados 100mil y no son smd, no se podría conectar adecuadamente al ZX-Uno porque no exponen los pines CTS y RTS.

La verdad es que ya tengo dos ESP-07 que son los primeros que compré antes de empezar con Yombonet, y puedo usarlos con los dos ZX-Uno que tengo. Por eso no me hace falta la PCB, gracias de nuevo.

Re: ¿Qué os parece esto para añadir wifi con muy poquitas líneas en el conector de expansión?

Publicado: 29 Sep 2016, 20:10
por antoniovillena
Yo tengo también un esp12e. Puedo comprar otro y darte el mío. Te lo digo porque en un momento dado te hará falta que la gente te depure tal cosa y con el addon es más fácil.

Te envío pcb y esp12e por el módico precio de 2 euros, y no insisto más

Re: ¿Qué os parece esto para añadir wifi con muy poquitas líneas en el conector de expansión?

Publicado: 29 Sep 2016, 20:17
por yombo
antoniovillena escribió:Yo tengo también un esp12e. Puedo comprar otro y darte el mío. Te lo digo porque en un momento dado te hará falta que la gente te depure tal cosa y con el addon es más fácil.

Te envío pcb y esp12e por el módico precio de 2 euros, y no insisto más
De acuerdo! Si me lo pones así no diré que no. Te envío privado.

Re: ¿Qué os parece esto para añadir wifi con muy poquitas líneas en el conector de expansión?

Publicado: 30 Sep 2016, 03:57
por yombo
He estado mirando el diseño de la pcb (la última versión del repositorio), y no entiendo la asignación de pines del conector externo. Están como EXTnn, mientras que en la hoja A4 del crowd se designan con Pnn, como en el .ucf. Los números de "EXT" no se corresponden en absoluto con los de "P". Imagino que tendré que cotejarlos en una hoja de cálculo, trabajo de chinos durante un rato... :roll: :mrgreen: :mrgreen: