desktop

[Aporte] Tarjeta comandada desde TCP/IP UDP Modulo ESP8266

Introduccion

Apenas hace unos días, vagando por la internet, encontré el modulo ESP8266 el cual tiene como principal característica el brindar toda una interface ethernet WIFI (TCP/IP ) que puede ser configurada desde su puerto TTL serie (rs-232) por medio de comandos de atención (AT) de una manera increíblemente sencilla. Pero ademas me sorprendió el precio, que ronda los 120 pesos mexicanos (mas o menos 8 dolares americanos) se consigue muy fácilmente y en abundancia; con todo esto compre varias y aquí estoy para aportar una sencilla aplicación del dichoso modulo.

Modulo_esp8266.jpg

Objetivo

El siguiente aporte tiene como finalidad demostrar la factibilidad de utilizar el modulo WIFI ESP8266 desde una red TCP/IP por medio del protocolo UDP. El modulo ESP8266 sera comandado por un microcontrolador 16f628 de 8 bits, que a su ves hará la función de actuar sobre 6 leds (Relevadores) y enviar el estado de 8 entradas digitales de regreso al origen por el mismo protocolo UDP.

Hardware

En la siguiente figura se anexa el diagrama general; para montar el circuito, yo utilice una plaqueta perforada universal, cabe destacar que el único cuidado relevante es que el modulo ESP8266 funciona con 3.3 volts lo cual se soluciona con un simple regulador clásico LM7833 y aunque por muchos sitios recomiendan que en el caso de que nuestro microcontrolador se alimente con un voltaje de 5 volts se deberán adecuar las señales TX y RX del puerto serie por medio de circuitos especiales para no dañar el modulo ESP8266. Con el simple hecho de interfacear estas señales con una resistencia de 100 ohms entre microcontrolador y modulo es suficiente (tal como lo muestro en el diagrama). Esto lo digo con certidumbre en base a que vengo realizando ya muchas pruebas con diferentes microcontroladores con esta forma y a lo obtenido del datasheet del propio modulo que dice al calce:

All digital IO pins are protected from over-voltage with a snap-back circuit connected between the pad and ground. The snap back voltage is typically about 6V, and the holding voltage is 5.8V. This provides protection from over-voltages and ESD. The output devices are also protected from reversed voltages with diodes

diagramaudpdemo.jpg

Por otro lado en la foto de mi montaje se aprecian unos relevadores que no vienen ilustrados en el diagrama anterior, sin embargo cabe mencionar que estos relevadores están manejados por un ULN2003 y considero no requiere mas explicación ya que no es el contexto del objetivo del presente aporte, por ultimo podran apreciar dos reguladores de 5 volts y 3 volts; derivado de que yo alimento mi tarjeta con 12 volts (para poder accionar mis relevadores) Razón por lo que fue necesario anexar también mi regulador de 5 volts para alimentar el 16f628.
Aquí dejo foto de la tarjeta terminada.

IMG_20150130_024948.jpg

Como nota final, debo asegurar que el diagrama como tal se muestra, funciona al 100%.

Software en el microcontrolador

Vamos a continuar explicando de manera general que el modulo ESP8266 una ves energizado tiene a disponibilidad por medio de su interface serie, todo un conjunto de comandos de configuración e información que se accesan por medio de comandos AT y que nos regresa un OK si se completo con éxito el comando o si se presento un ERROR en la ejecución de estos comandos AT.

El puerto serie del modulo ESP8266 por default viene configurado a 9600 baudios; al menos todos los que he comprado en México. Sin embargo debo advertir que se dice por el internet que algunos vienen pre-configurados a 115200 baudios, con lo cual deben confirmar este dato y tomar las acciones correspondientes ya sea para modificar el programa que a continuación compartiré o en su defecto configurar su modulo a 9600 baudios tal como yo tengo los míos; para este efecto existe el comando AT+CIOBAUD:9600 para re-configurar el modulo.

Yo recomiendo muy encarecidamente antes de afrontar este proyecto, que se practique con el modulo ESP8266 por medio de un convertidor USB-SERIE TTL y algún programa de “Terminal serial” para poderse familiar con los comandos AT. Hay muchos sitios por internet en el que se toca este tema en particular.

Otro punto que debo establecer aquí, es el hecho que aunque por la mayoría de los sitios de internet se menciona el aprovechamiento del modulo ESP8266 como WEB server; no es mi caso, ya que mi enfoque es en aprovechar las virtudes de poder transportar por medio del protocolo UDP la información entre un equipo cualquiera de una red y un microcontrolador conectado a esta misma red y poder tomar acciones en base a este intercambio de información.

Con respecto al protocolo UDP aprovechare la liga con la información de la WIKIPEDIA, por lo que no tiene caso dar una explicación mas alla que es un transportador de información muy elemental pero muy aprovechable para lo que ocupa cualquier aficionado a la electrónica, domotica, robotica, etc. Y que el modulo ESP8266 nos acerca mucho a aventurarnos al “Internet de las cosas” que tanto viene aflorando últimamente.

Ya para entrar en materia con respecto al programa utilizado en el microcontrolador 16f628; dejo sin mas el listado de este, el cual fue escrito en lenguaje “BASIC” del IDE Proton de mecanique, compilado en la version 3.5.2.7.

Listado de programa aquí

PHP:
'****************************************************************
'*  Name    : UDP_DEMO.BAS                                      *
'*  Author  : Miguel Angel Borbolla Bonomi                      *
'*  Notice  : Demostarcion del modulo ESP8266                   *
'*          : Utilizando protocolo UDP bajo TCP/ip              *
'*  Date    : 28/01/2015                                        *
'*  Version : 1.0                                               *
'*  Notes   : La forma mas "Burda" de utilzar el modulo ESP8266 *
'*          :  en una  LAN WI-FI                                *
'****************************************************************



Device = 16F628 ' Avisamos al compilador que microcontrolador utilizaremos

Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, BODEN_OFF, LVP_OFF, CP_OFF, MCLRE_OFF, DATA_CP_OFF  ' configuramos fusibles microcontrolador

Xtal = 4' seteamos el reloj interno a 4 MHZ 
Declare Hserial_Baud = 9600 ' Seleccionamos velocidad en baudios (aqui podria ser otra configuracion ya que hay modulos a 115200 bps)
Declare Hserial_RCSTA = %10010000 ' Habilitamos la recepcion Continua en el puerto serie
Declare Hserial_TXSTA = $24 ' Habilitamos el modo de transmicion Asincrona del puerto serie

Declare Hserial_Clear = On ' Limpiamos el buffer antes de recibir datos


All_Digital = On 'Configuramos que todas las salidas sean Digitales 
TRISA = %11111111 ' Configuramos el puerto A como entradas
TRISB = %00000010 ' Configuramos el puerto B Como salidas con excepcion del Bit 1 pues sera utilizado como TX del puerto serie

Symbol LED1 PORTB.0 'Creamos alias del puertoB con su respectivo nombre por comodidad al programar
Symbol LED2 PORTB.3
Symbol LED3 PORTB.4
Symbol LED4 PORTB.5
Symbol LED5 PORTB.6
Symbol LED6 PORTB.7

Dim DATOEN As Byte  'Declaramos la Variable DATOEN que sera donde se almacenaran los datos provenientes del puerto serie.
PORTB=0 ' Llevamos a ceros el puerto B "Apagamos todos los leds"

DelayMS 2000 'Hacemos una pausa para que el modulo ESP8266 ser inicialize

'============= Hacemos Una secuencia de encendido/apagado de leds para visualizar que la tarjeta esta "viva" ==================
High LED1
DelayMS 100
Low LED1
High LED2
DelayMS 100
Low LED2
High LED3
DelayMS 100
Low LED3
High LED4
DelayMS 100
Low LED4
High LED5
DelayMS 100
Low LED5
High LED6
DelayMS 100
Low LED6


High LED6
DelayMS 100
Low LED6
High LED5
DelayMS 100
Low LED5
High LED4
DelayMS 100
Low LED4
High LED3
DelayMS 100
Low LED3
High LED2
DelayMS 100
Low LED2
High LED1
DelayMS 100
Low LED1

'====================== Fin de secuencia =============================================



'======================== Inicializamos el modulo ESP8266 por medio de comandos AT Via el puerto serie ===================

HSerOut ["AT", 10,13]'Enviamos comando de Atencion "AT" para verificar comunicacion con modulo ESP8266

HSerIn [Wait ("OK"), DATOEN]' Esperamos agradecimiento "OK" del modulo 

HSerOut ["AT+CWMODE=3", 10,13]'Enviamos comando para colocar el modulo ESP8266 en modo "BOTH"

HSerIn [Wait ("OK"), DATOEN]' Esperamos agradecimiento "OK" del modulo 

HSerOut ["AT+CWJAP=",34,"ARRIS-C852",34,",",34,"5AB924B90DF3AF8F",34, 10,13]'Solicitamos Conectarse a red WIFI SSID="ARRIS-C852" y Clave wep "5AB924B90DF3AF8F"

HSerIn [Wait ("OK"), DATOEN]' Esperamos agradecimiento "OK" del modulo

HSerOut ["AT+CIPMUX=0", 10,13]'Enviamos comando para configurar el modulo ESP8266 en modo de conexion simple.

HSerIn [Wait ("OK"), DATOEN]' Esperamos agradecimiento "OK" del modulo

HSerOut ["AT+CIPSTART=",34,"UDP",34,",",34,"192.168.0.2",34,",","7777",",","7777",10,13]'Establecemos conexion UDP con la ip 192.168.0.2 y puertos 7777

HSerIn [Wait ("OK"), DATOEN]' Esperamos agradecimiento "OK" del modulo

HSerOut ["AT+CIPMODE=1", 10,13]'Establecemos el modo de Datos transparente (lo que reciba y envie el puerto serie pasara via UDP con equipo remoto)

HSerIn [Wait ("OK"), DATOEN]' Esperamos agradecimiento "OK" del modulo

HSerOut ["AT+CIPSEND", 10,13]' Comenzamos inicio de transmicion y recepcion de datos

'HSerIn [Wait (">"), DATOEN]' Esperamos el caracter ">" el cual indica que el modulo esta listo para comunicaciones.


'------------A partir de aqui el modulo ya esta inicializado y listo para enviar y recibr datos como cualquier puerto serie.

'============= Hacemos Una segunda para "avisarnos" que nuestra tarjeta esta lista y en linea ==================
High LED1
DelayMS 100
Low LED1
High LED2
DelayMS 100
Low LED2
High LED3
DelayMS 100
Low LED3
High LED4
DelayMS 100
Low LED4
High LED5
DelayMS 100
Low LED5
High LED6
DelayMS 100
Low LED6


High LED6
DelayMS 100
Low LED6
High LED5
DelayMS 100
Low LED5
High LED4
DelayMS 100
Low LED4
High LED3
DelayMS 100
Low LED3
High LED2
DelayMS 100
Low LED2
High LED1
DelayMS 100
Low LED1

'====================== Fin de secuencia de Aviso =============================================


inicio: ' Aqui Comienza el Bucle que comanda los datos recibidos y envio del estado en el puerto A


HSerIn 500, nada,[Dec DATOEN]   'esperamos datos desde el puerto serie y los almacenamos en variable DATOEN, si en 500 ms no hay nada brinca a etiqueta nada

If DATOEN=0 Then PORTB=0
If DATOEN=10 Then Low LED1
If DATOEN=20 Then Low LED2
If DATOEN=30 Then Low LED3
If DATOEN=40 Then Low LED4
If DATOEN=50 Then Low LED5
If DATOEN=60 Then Low LED6
If DATOEN=11 Then High LED1
If DATOEN=21 Then High LED2
If DATOEN=31 Then High LED3
If DATOEN=41 Then High LED4                              
If DATOEN=51 Then High LED5
If DATOEN=61 Then High LED6
If DATOEN=99 Then PORTB=255 

HSerOut ["Comando=",Dec DATOEN, 10,13] 'se envia la confirmacion del comando recibido

GoTo inicio

nada: 

HSerOut ["PortA=",Dec PORTA, 10,13] 'Se envia el estado del puerto A en decimal
GoTo inicio



Considero que el programa como tal, viene debidamente comentado por lo que considero no requiere una explicación mas allá de decir que la comunicación entre el microcontrolador 16f628 y el modulo ESP8266 es por medio del puerto serial a 9600 baudios, el Puerto B del 16f628 se utiliza como salidas (para manejar los leds), el Puerto A del mismo se utiliza como entradas (donde esta conectado el microswitch de 8 ) y que por medio de comandos AT se configura el modulo ESP8266 de tal suerte que al anexarse a la red inalambrica WiFi y obtener su IP, se deja abierta la comunicación UDP por el puerto 7777 y finalmente se deja abierto el transporte del puerto UDP hacia el pin RX del ESP8266 y desde el pin TX del ESP8266 hacia el puerto UDP.

¡Hemos creado un Tunel UDP<>RS232 entre la red Wi-Fi y nuestro microcontrolador 16f628!

Por ultimo simplemente se pone el microntrolador a la “escucha” de comandos para prender o apagar LEDS (relevadores en mi tarjeta) y enviar el estado de los pines del puerto A al destinatario en la red.

Software en la Computadora

Ahora me ocupa explicar como accesar o comandar desde un equipo conectado a la misma red a la que anexamos nuestra tarjeta por medio del protocolo UDP desde TCP/IP, para este fin existe una infinidad de software utilitario para poder enviar y recibir paquetes UDP tanto en Windows, Linux, Android, Machintosh, Ipad y otros sistemas operativos que seria larga la lista de ellos, solo basta dar una buscada por la red y encontraremos varias alternativas.

Recomiendo que se practique enviar y recibir mensajes entre dos computadoras o entre computadora y un teléfono, tableta, etc, para poder familiarizarse con el tema UDP. En el caso de Windows recomiendo el “Hercules Setup Utility” ya que es un software bastante completo y gratis, para android hay uno que se llama “UDP Tester” con el que ya se puede manipular la tarjeta que ocupa este aporte.

Sin embargo yo escribí un programa lo en Visual Basic .net con la finalidad de también aportar la facilidad a quien se aventure a montar la tarjeta, probar y en verdad cerrar el circulo del conocimiento que deseo verter aquí; dejo a continuación el listado de este programa que se puede compilar en Visual basic 2010.

VB_UDPDEMO.jpg

PHP:
Imports System.Net
Imports System.Text.Encoding


Public Class UDPDEMO
    Dim puerto As Integer = 7777 'Puerto UDP que sera utilizado; modificar aqui si se prefiere otro diferente al 7777
    Dim publisher As New Sockets.UdpClient(0)
    Dim subscriber As New Sockets.UdpClient(puerto)


    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        publisher.Connect(DireccionIP.Text, puerto)
        Dim sendbytes() As Byte = ASCII.GetBytes(Envio.Text + Chr(10) + Chr(13))
        publisher.Send(sendbytes, sendbytes.Length)
    End Sub




    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        DireccionIP.Text = "192.168.0.5" 'Direccion IP del Host de destino
        subscriber.Client.ReceiveTimeout = 100
        subscriber.Client.Blocking = False
    End Sub

    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        Try
            Dim ep As IPEndPoint = New IPEndPoint(IPAddress.Any, 0)
            Dim rcvbytes() As Byte = subscriber.Receive(ep)
            Recibo.Text = ASCII.GetString(rcvbytes)
        Catch ex As Exception
        End Try
    End Sub

    Private Sub TBTo_TextChanged(sender As System.Object, e As System.EventArgs) Handles DireccionIP.TextChanged
        
    End Sub

    Private Sub Label1_Click(sender As System.Object, e As System.EventArgs) Handles Label1.Click

    End Sub
End Class


Obviamente se pueden usar otros lenguajes como Phyton, Java, Processing, C, C++, etc, etc.

Por ultimo dejo el Video de la tarjeta funcionando con el programa que escribi en Visual Basic .net que espero sea lo suficientemente explicativo por si mismo, ya que de presentador soy pesimo, asi que disculpen la austeridad del mismo.

https://plus.google.com/u/0/105335396337664792597/posts/YvcwJseYZPd?pid=6110075813635573442&oid=105335396337664792597




Gracias, espero sea de su agrado y Saludos.
 

Adjuntos

  • UDPDEMO.rar
    14.5 KB · Visitas: 127
Última edición por un moderador:
vaya, excelente módulo... precisamente estaba trabajando con un módulo wi-fi de Microchip, un tal MRB0*** pero me es muy complicado, maneja muchos términos desconocidos para mi y no he podido entablar comunicación con nada.

Me interesa el modulito este, pero me queda la duda ¿en que parte de México lo conseguiste? y luego ese precio! :cool:
 
Me interesa el modulito este, pero me queda la duda ¿en que parte de México lo conseguiste? y luego ese precio! :cool:

No se donde residas, el lugar mas sencillo es por Internet via ML, y donde yo los he comprado cuando voy al distrito federal;es en una tienda ubicada en la colonia Lindavista atrás de lo que fue el cine Futurama en la avenida IPN.

Saludos
 
Excelente, creo saber de que negocio comentas. Soy del Estado de México y me queda cerca; me daré una vuelta un día de estos, el modulo me ha interesado para unos cuantos proyectitos que tengo en mente
 
De manera complementaria, me compromete anexar que el programa ejecutable en Visual Basic que deje anexado, requiere de tener instalado el Netframework 4.0 para su funcionamiento y que independientemente de tener montada la tarjeta; con este programa se puede conseguir comunicación entre dos computadoras corriendo el programa en cada una de las respectivas computadoras y estableciendo en mi programa la dirección IP de destino ( la de la otra maquina) y así comprobar la debida comunicación.

Por el hecho de que seguramente tenemos instalados programas antivirus que toman "control" del firewall, el puerto udp "7777" utilizado en este proyecto pudiera estar cerrado, con lo que recomiendo encarecidamente verificar que su firewall tenga abierto el puerto UDP 7777 o en su defecto "inhabilitar" el firewall de manera temporal o dar apertura en este; el acceso al puerto UPD 7777.

Definitivamente es importante esta acotación, pues en su momento yo mismo tuve incertidumbre en el funcionamiento de mi programa y aquellas utilitarias que probé para enviar datos a través de UDP.

Teniendo esto en cuenta, espero poder dar mas apertura, para tener exito en el funcionamiento de este sencillo programa que deje compartido.

Saludos.
 
Última edición:
Buen día,

Agradezco a miborbolla por sus excelentes aportes, y en base a ello quisiera realizar algunas consultas.

Estoy trabajando con un modulo 3G y GPS (sim5320 de simcom) y un pic 18f26j50, he logrado realizar varias cosas con este modulo como enviar sms, realizar llamadas, enviar datos a un servidor creado con un programa llamado hercules, entre otras cosas, ahora estoy realizando un proyecto para lo cual ya llevo algunas cosas adelantadas pero tengo aun muchas dudas,

El proyecto consiste en adquirir la información de dos equipos de medición (Densidad y Flujo), con los cuales ya me he logrado comunicar y traer todo esa info por medio del puerto serial mediante una app realizada en vb.net, la idea seria ahora realizar esa adquisición a distancia por medio del modulo 3G, tanto como enviar y recibir esos mismos datos pero ahora no usando el puerto serie si no algun tipo de protocolo de Internet, quisas hacer la app de vb.net como un servidor y que se comunique con el cliente que seria el modulo 3G, o algún otro protocolo, la verdad he trabajado bastante con micros y con ello no tengo muchos problemas, pero no he hecho mucho con aplicaciones o protocolos de Internet, y la verdad tengo muchos vacíos, quisiera si es posible me plantearan como podría comunicarme con el modulo a través de Internet para realizar esa comunicación en tiempo real, les agradezco de antemano su colaboración. También tengo un modulo WIFI con el que no he trabajado.

NOTA: tengo bastantes proyectos sobres micros PIC de Microchip y ubn manual que realizae hace poco sobre Micros PSOC de Cypress Semiconductor, cualquier info que requieran sobre ella estoy atento.

Cordialmente,

Einner Cruz
 
Hola EINNER, desafortunadamente no tengo acceso a un modulo GSM como el que comentas como para saber que prestaciones TCP/ip tenga, lo cual supongo dependerá del servicio "contratado" por el chip SIM que coloques en el modulo GSM.

Y en el caso de que te brinde servicio de Internet (tcp/ip) no sabria como vincularlo con la red local y así poder comenzar con un simple PING desde una de mis computadoras locales con el modulo, en teoría (por los comandos AT de tu modulo sim5320) puedes obtener una IP, y después ya poder mandar "mensages" UDP o TCP, el asunto como lo veo yo, es que seguramente obtendrás una IP de tu proveedor de internet; el que te da tu SIM, pero esa ip estará en la NUBE de internet y habría que lograr colocar en tu red local un servicio (servidor) que este escuchando las peticiones que entren a tu red desde internet.

Para este fin, lo que yo he logrado es lo siguiente:

Me he montado en un equipo con windows 7, el web server iis del propio sistema operativo, junto con las herramientas de "tcpip simple" y ademas en el router/modem de mi proveedor realice el "port fordwaring" de los numero de puertos udp/tcp que pienso utilizar o escuchar. Una ves logrado esto con el programa que deje aquí arriba anexado anteriormente desde una computadora conectada a internet de mi vecino, inicie a enviar mensages UDP ; pude recibirlos y enviarlos satisfactoriamente con lo que logre el cometido de poder tener un "ambiente" de pruebas para lo que estoy haciendo.

Es oportuno aclarar que las IP´s de envió y recepción corresponden a las IP´s que mi proveedor de internet me entrega.

En mi caso particular con el modulo ESP8266 he logrado enviar información desde diferentes lugares vía internet, yo arme 7 tarjetas como las del Aporte de este tema y he podido recibir la informacion de cada una de ellas, pero no he logrado comandar las tarjetas de manera remota a menos que haga lo mismo que en mi laboratorio (hacer el port fordwaring en cada modem donde este conectado el modulo ESP8266).

En conclusión, veo que el modulo GSM sim5320 tiene la capacidad de hacerlo, solo habrá que ver lo que comento de inicio y ver si tu servicio proporcionado por el SIM conectado al modulo, tiene los servicios de internet disponibles.

Quizas en un comienzo, como yo, te valga hacer los primeros pasos de descubrimiento con un modulo como el ESP8266 o aquel que comentas que tienes.

Espero no haber sido enredoso en la explicación, así que perdonaras el intento.

Dejo un cordial saludo.
 
Buen día,

Gracias por tu respuesta, es de gran ayuda, lo que comenta de realizar port forwarding en el router y realizar así la comunicación ya lo he logrado, he configurado el modulo como un cliente y en el PC con la aplicación hercules he creado un servidor, y he logrado enviar la info del modulo al PC y viceversa, pero quisiera recibir esos datos no en el servidor creado en hercules sino en una aplicación hecha en vb.net para así graficar y controlar dicha información, otro punto es el tema del portforwarding, no me gusta ya que tengo que hacerlo en cualquier moden al que me conecte, no se si haya otra forma mas directa, muchas gracias
 
Hola:

Bueno, pues justamente el programa que viene listado en mi aporte que se llama UDPDEMO te puede servir como base para desarrollar tu propia aplicación, obviamente mi programa es para escuchar el protocolo UDP, si buscas recibir paquetes TCP, entonces requieres otro tipo de instrucciones de Visual Basic .net.

Buscando por la red, encontraras varios ejemplos, pero notaras que son muy parecido todos, ya que el NETFRAMEWORK es en el caso de windows quien hace el "transporte" de los paquetes TCP/IP.

Aqui un Ejemplo en VB.net de tantos que hay por ahi

Y aquí lo mismo pero desde Python

Obviamente se pueden usar otras plataformas como Python, incluso montarte tu servidor en Linux si lo prefieres. Así que lo que ocupa, es ver como programar por el lado de la PC para enviar y recibir paquetes TCP/IP ya sea por UDP o TCP.

Yo por el momento sigo utilizando el protocolo UDP, ya que facilita mucho la comunicación y por tanto la programación, y en muy pocas lineas se puede obtener bastante.

Sobre el asunto del port fordwaring, pues es un mal necesario que no se puede evitar y es el "padre nuestro" de todos los que con redes trabajamos y por eso es que yo tengo montado una pc a manera de servidor (laboratorio) para desarrollar y probar ahí todo esto del "Internet de las cosas"

Saludos
 
Última edición:
Hola:
Sobre el asunto del port fordwaring, pues es un mal necesario que no se puede evitar y es el "padre nuestro" de todos los que con redes trabajamos y por eso es que yo tengo montado una pc a manera de servidor (laboratorio) para desarrollar y probar ahí todo esto del "Internet de las cosas"

Saludos

para evitar el port forwading en el lado cliente no usar udp tienen que cambiar el protocolo a tcp solo es mas complicado mucho mas
 
para evitar el port forwading en el lado cliente no usar udp tienen que cambiar el protocolo a tcp solo es mas complicado mucho mas

El port forwarding es INEVITABLE, sin importar el protocolo usado, siempre que tengas un router de pormedio entre una IP de internet y un rango de IPs privadas de tu red interna.
La unica posibilidad de evitarlo es que tengas un modem en modo bridge y una unica PC conectada a el... lo que por supuesto, es un desperdicio de recursos.
 
Última edición:
El port forwarding es INEVITABLE, sin importar el protocolo usado, siempre que tengas un router de pormedio entre una IP de internet y un rango de IPs privadas de tu red interna.
La unica posibilidad de evitarlo es que tengas un modem en modo bridge y una unica PC conectada a el... lo que por supuesto, es un desperdicio de recursos.

hay mas posibilidades pero para no alargar
-----
por eso dije en el lado cliente
asi como esta el invento si lo usan en 5 lugares tienen que configurar 6 routers
el del servidor mas los 5 clientes

si lo hacen con tcp solo tienen que configurar el router del server
pero la programacion se hace mas dificil

--
agrego
con unas modificaciones tambien sirve de aporte para controlar reles desde usb
sobre todo ahora que no hay puertos paralelos
 
Última edición:
Muchas gracias por el espectacular aporte!
hace rato quiero comprarme el modulito, pero por el tema del protocolo tcp/ip y udp no me sentia seguro, ahora ya tengo el pie inicial para meterle mano!
muy bien explicado, y aunque no use protton con lo comentado que está el codigo seguramente lo pueda realizar en ccs sin ningun problema (o casi ninguno espero:LOL:) muchas gracias!

Saludos
PACIO!
 
Excelente aplicación, no lo había visto antes. Yo por mi lado estuve probando varias cosas con Arduino y el módulo ESP8266, entre ellas un servidor/cliente TCP local. Un WebClient para IoT y un Webserver. Como programa de pruebas uso el TCP test tool y el UDP test tool, en el caso del teléfono utilizo el software de NextPrototypes software para poder realizar las pruebas. En cuanto tenga algo más documentado lo voy a empezar a subir.
 
Hola,
Comentar que estoy tanteando un proyecto similar, comunico el móvil con un microcontrolador con TCP-IP ya sea por wifi o 3g. De momento tengo que pasar a través de un ordenador y reconducir el puerto del modem hacia el puerto serial de este, donde está conectado el pic, pero eso lo superaré cuando me llegue el chip chino, de momento no necesito ir a la versión wifi.
Es bastante curioso, programar una aplicación (o ya existente en android) y de momento lo que ha de hacer lo hace, enviar mensajes a una pantalla o recibir. También obtener la temperatura de varios DS18b20 conectados por one-wire en un móvil, a ver en cualquier parte del mundo.
Hecho en ensamblador y con pic16f84A (más apretado más optimizado)
Yo veo un campo enorme en esto. Cuando reuna la información del proyecto la paso, y si alguien quiere preguntar algo, para eso estamos.



El chip chino es un TCP-Ip conversor a puerto serial. En mi caso el Usr-T, de la misma casa.
El programa de redireccionamiento de puertos es el Piracom.
Sino hay puerto serie disponible, usar cable ftd-usb.
El protocolo one-wire es de Maxim, en ensamblador un dolor de cabeza leer todos los db18b20 que hagan falta.
En android usar cualquier Tcp-ip client.
El proyecto de llevarse en ensamblador es algo complejo, pero muy factible.
(Que pena no poder invertir en los proyectos lo necesario, muchos se quedaron en el cajón del olvido)
 
Última edición:
Hola amigo miborbolla esto esta fabuloso ¡FELICITACIONES Y GRACIAS!, hace dos meses vengo buscando en la web ejemplos para iniciarme en el tema del ESP8266, y ninguno me dio frutos, creo con tu proyecto sale. Sera que manejo solo VB6 y Mikrobasic.
Bueno, espero no molestarte con algunas preguntas, aunque ya tiempo que presentaste tu proyecto, me puedas ayudar.
Recibe mis saludos desde Peru.
 
Cómo andan? Me pasaron un módulo wifi ESP8266 ESP-12 para implementarlo con un pic, pero al buscar en la web todo lo que encuentro de este módulo está relacionado con Arduino, lo cual no manejo y tampoco tengo tiempo para ponerme de cero teniendo una gran base de pics.
Mi consulta principal es la siguiente: ¿Existen librerías para usar el módulo con compilador CCS? Ya que es el que mejor manejo?

Muchas gracias!!!

Fernando
 
Atrás
Arriba