Issuu on Google+

openPicus

Electrónica para Monitorización y Domótica - Application Note Pr4 29/11/2013

Task 4: Exchange TCP Device: Openpicus Flyport Wi-Fi IDE Version: 2.5.4 Authors: Javier Díaz Hernández y José-Ramón Pérez Cisneros

1. Create a TCP Server En primer lugar creamos un TCP_SOCKET empleando la siguiente instrucción:

Fig. 1: Creación de un TCP_Socket La variable clconn se utilizará para indicar si hay un cliente conectado, de modo que se le permita enviar datos por el TCP socket y así controlar los LED 4 y 5 y la conversión del ADC.

Fig. 2: Variable que indica si hay un cliente conectado Inicializamos la UART a una tasa de 19200 baudios como se puede ver en la fig. 3:

Fig. 3: Inicialización UART Ahora establecemos los parámetros del perfil WF_DEFAULT, donde indicamos que es una infraestructura con el nombre de ‘ppp’, tal y como la hemos creado en nuestro dispositivo móvil, y que no posee de clave para conectarse.

Fig. 4: Establecemos los parámetros de la conexión Wi-Fi por defecto

1


openPicus

Electrónica para Monitorización y Domótica - Application Note Pr4 29/11/2013

La función WFConnect() abre la conexión del perfil Wi-Fi por defecto, en este caso con los parámetros arriba configurados.

Fig. 5: Abrimos la conexión Wi-Fi anteriormente configurada A continuación mostramos, por el puerto serie, la IP que obtenemos al conectarnos a la red Wi-Fi:

Fig. 6: Mostramos la IP por el puerto serie Posteriormente procedemos a abrir la conexión TCP, teniendo en cuenta que Flyport es el servidor. Comprobamos si está abierto el socket TCP, y si no es así lo abrimos.

Fig. 7: Abrimos la conexión TCP Comprobamos la recepción de datos a través del TCP socket comprobando si la función TCPRxLen devuelve una longitud mayor que cero, y posteriormente los leemos con la función TCPRead y lo escribimos a través del UART, tal como se ve en la fig. 8:

Fig. 8: Lectura de los datos del TCP

2


openPicus

Electrónica para Monitorización y Domótica - Application Note Pr4 29/11/2013

Comprobamos la conexión TCP y, si hay un cliente conectado, escribimos un mensaje por el UART conforme a las dos posibles opciones:

Fig. 9: Comprobamos si hay un cliente conectado Por otra parte, con la ayuda del “Wizard” que proporciona el entorno de desarrollo, configuramos el Flyport, tal como puede verse en las Fig. 10 y 11, para que se conecte a la red Wi-Fi generada con el móvil.

Fig.10: Configuración de la Red 3


openPicus

Electr贸nica para Monitorizaci贸n y Dom贸tica - Application Note Pr4 29/11/2013

Fig.11: Configuraci贸n Wireless

4


openPicus

Electrónica para Monitorización y Domótica - Application Note Pr4 29/11/2013

2. Receive TCP data and copy it to Serial Port Para envíar datos a través del TCP nos descargamos e instalamos el programa TCP Client para Android en nuestro dispositivo móvil, que presenta una interfaz como el que se muestra en la Fig. 12. En él introduciremos los comandos que controlaran el LED 4 y el 5 y el ADC, así como la posibilidad de finalizar el proceso si enviamos un comando ‘end’.

Fig. 12: Programa TCP Client para Android 3. Send via TCP the ACD value Emplearemos la función largo_cadena que nos devuelve la longitud de la cadena de caracteres que le pasemos como parámetros.

Fig. 13: Variable que nos devuelve la longitud de una cadena de caracteres Empleamos una variable entera como flag para conocer qué acción hay que realizar:

Fig. 14: Flag para conocer qué proceso hay que ejecutar

5


openPicus

Electrónica para Monitorización y Domótica - Application Note Pr4 29/11/2013

Se declaran las siguientes variables para leer el valor del ADC. Como el ADC de 10 bits nos devuelve una salida binaria de 0 a 511 (almacenado en myADCvalue), necesitamos otra variable para convertir dicho entero a valor de tensión (myVOLTvalue).

Fig. 15: Variables para leer el ADC A continuación nos definimos dos variables para recibir y enviar datos por TCP socket. Una vez leído el valor del conversor, lo mandamos a través del TCP. Lo mismo se realiza con el valor real de tensión. Para ello necesitaremos la cadena de caracteres ‘txtcp1’.

Fig. 16: Variables para recibir/enviar datos TCP Si hay un cliente conectado procedemos a comprobar si se recibe algo a través del TCP socket, y lo leemos. La función TCPRxLen permite conocer la longitud de lo que vamos a recibir.

Fig. 17: Comprobamos si recibimos datos por el TCP

6


openPicus

ElectrĂłnica para MonitorizaciĂłn y DomĂłtica - Application Note Pr4 29/11/2013

En este apartado se programa la lectura del ADC y se imprime su valor por pantalla, enviando el dato a travĂŠs del TCP socket. Es necesario emplear la funciĂłn sprintf para formatear adecuadamente la cadena de caracteres que deseamos enviar a travĂŠs del TCP. Para imprimir este valor habremos tenido que escribir el comando ‘adc’ en nuestro programa TCP Client para Android. TambiĂŠn podemos terminar el proceso escribiendo el comando ‘end’. La instrucciĂłn vTaskDelay nos permite realizar un retardo de 100 ∗ 10 đ?‘šđ?‘  = 1 đ?‘ , por lo que se realiza la operaciĂłn de forma periĂłdica cada 1 s.

Fig.18: Bucle principal para lectura del ADC y envĂ­o a travĂŠs del TCP

4. Control LED4 and LED5 via TCP A continuaciĂłn se muestra el cĂłdigo programado para el control del LED 4 y 5 del Flyport. Si escribimos, por ejemplo, LED4 en el programa para TCP Client, el LED 4 se encenderĂĄ si estĂĄ apagado y se apagarĂĄ si esta encendido, permaneciendo en ese estado hasta un nuevo comando. Lo mismo para el LED 5.

7


openPicus

Electr贸nica para Monitorizaci贸n y Dom贸tica - Application Note Pr4 29/11/2013

Fig.19: Bucle principal para el control de los LED 4 y 5

8


Perezcisneros monitorizacion v1