Autor Tema: Proyecto de Domótica. Encendiendo y apagando luces de casa desde el movil  (Leído 2035 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Introducción (un poco larga)

Buenas noches colegas
Hace tiempo que ando dando vueltas con algún proyecto en este tema y tengo claro que hay mucha info en la red, y gran variedad de aplicaciones que transforman cualquier cosa doméstica, hasta un inodoro en inteligente(?) y accesible desde la nube
Esto es porque que la llamada Domótica o IoT (Internet de las cosas) está muy de moda en estos dias y claramente se impondrá globalmente tarde o temprano.
Yo arranco aquí desde un desarrolo simple y básico, usando el hardware que tengo disponible en el cajón, que luego se puede ampliar y sofisticar como se quiera, 
y en este ya he efectuado algunas pruebas satisfactorias.

Los pasos a seguir en mi caso serán:

1) Armar un plaqueta con PIC que maneje unos relés para encender y apagar luces u otros dispositivos, en principio 4.
 Y además correrá un código que como veremos será una especie de servidor de pagina web en lenguaje HTML muy básico

2) El PIC manejará el encendido y apagado de los relés por medio de comandos (strings) seriales simples recibidos en su USART, por ejemplo "ONN1" (encender luz 1), "OFF3" (apagar luz 3), embebidos estos en lenguaje HTML, y también contestará el estado de los relés en lenguaje HTML para que el cliente remoto se entere del exito del comando enviado a través de la nube.

3) El PIC recibirá dichos comandos seriales desde una placa conversora ethernet _ serial, en mi caso una WIZ108SR, que como dije la ya tenía en algún cajón de mi humilde laboratorio y la aprovecho, pero con otros modelos similares de interfaces también podrá funcionar el proyecto.
Las carácteristicas de esta placa WIZ pueden verse aquí:

https://www.wiznet.io/product-item/wiz108sr/

Esta placa que uso porque tengo disponible tiene dos problemitas perfectamente salvables, tiene que ser alimentada con 3,3V y sus señales seriales serán de 3,3V siendo el PIC de 5V, y además su interface serial es norma RS422/RS485 3,3V mientras que en el PIC su USART es norma RS232 de 5V . Una circuiteria adaptadora muy simple que luego veremos salvará este problema.
Como veremos luego en detalle en su configuración, la WIZ108SR es muy versatil y puede configurarse en su lado ethernet TCP/IP como Servidor, Cliente o Mixta, y en su lado serial con distintas velocidades y formatos de datos que se adaptarán a la USART del PIC.
Como ya adelanté, este proyecto usará la modalidad Cliente-Servidor, donde el conjunto WIZ-PIC actuará como Servidor y la aplicación remota desde PC o teléfono movil que nos permitirá finalmente prender u apagar luces en casa, será el cliente.
A la WIZ en su lado TCP/IP le asignaremos un número IP fijo dentro de nuestra red hogareña (LAN), por ejemplo si el modem/router de casa tiene número de red 192.168.1.1, a la WIZ le pondremos por ejemplo 192.168.1.108

4) Abriendo puertos y configurando DNS dinámica en nuestro router
Nuestro router doméstico nos protege de ingresos no deseados a nuestra red doméstica. Pero en algunos casos es necesario que aplicaciones clientes externas alcancen algunos dispositivos en dentro de nuestra LAN con conexiones TCP/IP entrantes, como es el caso de cámaras de vigilancia, dispositivos IoT, servidores de página, etc.
Y como ya vamos viendo,  la placa WIZ y el PIC en este proyecto actuarán como un simple conjunto servidor de página con la función física Ppal. de manejar relés y en consecuencia dispositivos
Entonces para que la conexión entrante de nuestra App cliente remota alcance la WIZ y el PIC deberemos abrir los puertos correspondientes en nuestro router doméstico. Como los mensajes de comando y respuesta estarán embebidos en lenguaje HTML, el puerto a abrir será el 80, y esto también asegurará que los comandos viajen sin escollos en la WEB pues los mensajes HTML son los más comunes de paginas Web y todo enrutador o enlace en la red los dejará pasar.
Esta configuración que veremos luego en detalle en mi router Encore se llama Virtual Server, en otros LAN Routing, etc. dependiendo de marcas y modelos.
Por otro lado, normalmente nuestro router doméstico tendrá asignada una dirección TCP/IP pública dinámica (variable) del lado WAN en la WEB,  que es asignada por nuestro ISP (Internet Service Provider) dentro de un rango de direcciones públicas,  a no ser que algún usuario pudiente pueda pagar por un número de IP público fijo (no es mi caso ni mi interés)
Este problemita de tener un número de IP público variable que no nos permite acceder libremente como un nombre o dominio de Internet, desde la Web a nuestro router de casa, lo vienen a salvar los servidores de sistema dinámico de nombres de dominio ó servidores DDNS
Los servicios DDNS mas difundidos son DynDNS, NO-IP y otros, y la mayoría por suerte proveen uno o dos nombres de dominio gratuitos.
Entonces simplemente abrimos y registramos una cuenta con usuario y password en uno de estos servicios que vienen en nuestro auxilio, seleccionamos un nombre de dominio de nuestro gusto, por ejemplo "laslucesdemicasa.ddns.net", claramente con un dominio así cualquier jacker interesado podrá intuir para que sirve el sitio, pero para que quede claro en principio usaremos este , luego se puede elegir alguno no tan explícito.
Entonces una vez que tenemos esta cuenta activada en el DDNS, configuraremos sus datos en la parte WAN/DDNS de nuestro router doméstico, luego mostraré como es esto en mi ENCORE.

5) Enviando comandos desde nuestro cliente remoto.
Una vez logrados estos pasos con éxito, y con el código correspondiente corriendo en el PIC, simplemente escribiremos en cualquier navegador de PC en cualquier parte del mundo con acceso a Internet, nuestro nombre de dominio seguido del comando deseado, por ejemplo:
www.laslucesdemicasa.ddns.net/ONN1,  y la luz, reflector de patio trasero, u otro dispositivo manejado por el relé número 1 en la placa PIC (casi magicamente) se encenderá , y recibiremos a vuelta de mensaje la confirmación correspondiente de su encendido, y  si tenemos alguna cámara de vigilancia doméstica por allí lo verificaremos.
Luego con el comando www.laslucesdemicasa.ddns.net/OFF1 , dicha luz (nuevamente casi magicamente) se apagará, y recibiremos a vuelta de mensaje nuevamente la confirmación correspondiente.
Como pueden ver está será una manera muy simple y tambíén muy vulnerable de manejar dispositivos eléctricos en nuestra casa u otro sitio, pero que luego podremos complicar o proteger en distintas formas, paswords, comandos codificados, etc.

6) Por último desarrollaremos una App en Android para movil específica para este proyecto para ya no usar un navegador Web, utilizando para esto la plataforma para principiantes (yo soy uno de ellos) del MIT App Inventor, muy amigable y sencilla de usar.

Bueno, como introducción se ha hecho larga, luego en siguientes posteos veremos cada punto en detalle.

Espero sea un tema de vuestro interés, cualquier comentario o sugerencia como siempre bienvenido.

Saludos  :-/


« Última modificación: 16 de Julio de 2021, 03:22:34 por Jorge Bern »

"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Re:Proyecto de Domótica. Encendiendo y apagando luces de casa desde el movil
« Respuesta #1 en: 20 de Julio de 2021, 12:03:57 »
Continuando con este tema, veremos ahora la configuración de la interface WIZNET que enlazará nuestra red doméstica LAN con el PIC
Para esto conectamos la WIZ a nuestra LAN y abrimos la Wiznet Configuration Tool que con Search realiza una busqueda automática por MAC address de las placas.

La primera solapa será la de Network donde como dijimos colocamos los parámetros correspondientes de la placa, como TCP Server en nuestra LAN:

 

* wiz1.jpg
(101.54 kB, 665x568 - visto 535 veces)


En la solapa Serial configuramos los parámetros de interface con la USART del PIC, lo típico 9600bps,n,8,1

 

* wiz2.jpg
(83.53 kB, 665x564 - visto 532 veces)


Y por último en la solapa Options configuramos el Inactivity Timer , que el tiempo que tardará el Server en desconectar el enlace TCP si no hay actividad de datos (desconexión por time out), y también podemos configurar una password si requerimos seguridad de ingreso

 

* wiz3.jpg
(93.58 kB, 665x566 - visto 536 veces)


Y esto sería todo por ahora en la configuración de la interface WIZNET

Continuara...

"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Re:Proyecto de Domótica. Encendiendo y apagando luces de casa desde el movil
« Respuesta #2 en: 20 de Julio de 2021, 12:18:50 »
A continuación vemos la configuración de mi router doméstico que como ya dijimos deberá enrutar las conexiones TCP entrantes en pórtico 80 hacia la interface WIZNET cuyo IP lo hemos configurado en 192.168.1.108.
 Para otros routers de otros modelos, la configuración será similar.


 

* mo1.jpg
(139.68 kB, 765x581 - visto 532 veces)


Y luego también en nuestro router debemos habilitar el servicio DDNS con una cuenta previamente dada de alta en algún servidor de nuestra elección.
 Como ya dijimos el dominio elegido será "laslucesdemicasa" y el servidor será en este caso el DynDNS

 

* mo2.jpg
(101.06 kB, 768x447 - visto 477 veces)


Y con esto finalizamos las configuraciones básicas de enrutamiento de mensajes del proyecto.

Continuara...



"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Re:Proyecto de Domótica. Encendiendo y apagando luces de casa desde el movil
« Respuesta #3 en: 04 de Agosto de 2021, 19:27:00 »
Buenas noches colegas.
En este momento estoy de viaje, así que en unos días continuaré con este proyecto
Saludos

"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Re:Proyecto de Domótica. Encendiendo y apagando luces de casa desde el movil
« Respuesta #4 en: 08 de Septiembre de 2021, 11:44:08 »
Buenos días colegas.
Retomando este tema, prepare una placa prototipo muy básica para empezar a probar lo dicho anteriormente, aquí se las muestro

 

* pic1.jpg
(151.56 kB, 1200x1600 - visto 455 veces)


 

* pic2.jpg
(195.11 kB, 1200x1600 - visto 491 veces)


En esta se puede ver la interface WIZ (lado de abajo) con el cable de red que la vincula a mi router doméstico, luego la circuiterìa para adaptar nivel de entrada y salida serial de PIC que se ve con el programador PICKit3 conectado. El circuito adaptador serial tambièn provee salidas TX y RX para monitorear los datos con HiperTerminal por medio del adaptador Serial-USB que también se muestra.
Los tres reguladores de tensión que se ven proveen los 3,3 Voltios de la  placa WIZ, que consume casi 1/4 Amper, entonces estos bajan de 12 Voltios a 8 V, de 8 V a 5 V, y el ultimo de 5V a 3,3V y se calientan bastante.
Las salidas para manejar los reles y las luces serán 4 salidas del PIC, por ejemplo PA0-PA3  que aun no estan cableadas.

Continuamos en breve. Saludos   


"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Re:Proyecto de Domótica. Encendiendo y apagando luces de casa desde el movil
« Respuesta #5 en: 30 de Septiembre de 2021, 17:40:13 »
Buenas tardes colegas
Continuando e intentando finalizar con este proyecto que incluirá como ya lo describí, lo básico para encender y apagar luces o dispositivos eléctricos en nuestra casa u otro sitio en general, a través de Internet.
Digamos que si hemos hecho todo bien en los pasos anteriores para lograr el enrutamiento de nuestros mensajes, esto es, definición de dominio DDNS, enrutamiento interno LAN y apertura de puertos, configuración correcta de la interface WIZ y su conexión al PIC,
entonces iremos a cualquier navegador WEB en PC o movil conectado a Internet en cualquier parte del mundo, colocamos la dirección:

http://www.laslucesdemicasa.ddns.net/ONN1

y damos Enter, entonces este será un mensaje HTML tipo GET que viajará y aparecerá en la entrada serial de nuestro PIC como lo siguiente: ​

LGSEG:CONNECTED
GET /ONN1 HTTP/1.1
User-Agent: Dalvik/2.1.0 (Linux; U; Android 10; ELE-L29 Build/HUAWEIELE-L29)
Host: laslucesdemicasa.ddns.net
Accept-Encoding: gzip

LGSEG: LISTENING

Este mensaje estará en código ASCII y puede ser monitoreado por Hiperterminal o PuTTy en la entrada serial del PIC (yo lo hago como se ve en la foto con un convertidor serial-USB).
Las lineas que contienen LGSEG son mensajes de señalización de la placa WIZNET que indican cuando esta establece conexión con el cliente y cuando se pone a la escucha como servidor, y se pueden ver/quitar con un tilde en su configuración (ver arriba)
Lo demás que arranca con el encabezamiento GET es el verdadero mensaje que estamos enviando y recibiendo en formato html, y que contendrá información variada que dependerá del tipo de navegador que estamos usando para enviar el mensaje (Chrome, Firefox, etc)
Toda esa información en este caso puede ser descartada, pues sólo nos quedaremos con lo importante para este proyecto, que es el encabezamiento y la orden que llega desde el cliente, que en este caso es:

GET /ONN1    que será interpretado como encender LUZ 1, y también podría ser apagarla con GET /OFF1, o  encender la nro 3 con GET /ONN3  etc. O sea se enviará ON o OFF y que luz o dispositivo debe actuar.

El código para interpretar estos mensajes y actuar en consecuencia es muy sencillo. En mi caso modifiqué el código de maquina de estados que utilicé en los proyectos anteriores para seguir estos mensajes y ejecutar las ordenes, luego colocaré ese código, pero igualmente puede haber otros métodos seguramente mejores para realizar esto.

Como dijimos el PIC deberá interpretar y accionar según  ordenen estos mensajes y además deberá contestar al cliente alguna confirmación de que la orden fue ejecutada, y para esta respuesta deberá respetar el formato html , actuando como ya dijimos como un servidor de página muy básico.
A continuación el código de programa con que el PIC podría responder ante el mensaje GET /ONN1

Código: [Seleccionar]
    call send_crlf  ;enviar caracteres CR y LF (carriage return and line feed)
    movlw 0x3C  ;<   comienza el envio de la pagina html, con el código ASCII del encabezamiento
    call tx_dato    ; rutina de envió de carácter
    movlw 0x68 ;h
    call tx_dato
    movlw 0x74 ;t
    call tx_dato
    movlw 0x6D ;m
    call tx_dato
    movlw 0x6C ;l
    call tx_dato
    movlw 0x3E ;>
    call tx_dato
    call send_crlf
    movlw 0x4C ;L    comienza el envio de confirmación de luz  encendida
    call tx_dato
    movlw 0x55 ;U
    call tx_dato
    movlw 0x5A ;Z
    call tx_dato
    movlw 0x5F ;_
    call tx_dato
    movlw 0x4F ;O         
    call tx_dato           
    movlw 0x4E ;N     
    call tx_dato
    movlw 0x4E ;N
    call tx_dato
    movlw 0x5F ;_
    call tx_dato
    movlw 0x31 ;en este registro esta almacenado el numero de luz encendida, en este caso será 1
    movlw 0x5F ;_
    call tx_dato
    movfw ESTAUX ;numero del 0 al 7
    call tx_dato ;se manda un contador de estado para mostrar actividad de respuesta
    movlw 0x5F ;_
    call tx_dato
    ;final del mensaje html
    movlw 0x3C  ;<
    call tx_dato
    movlw 0x2F ;/
    call tx_dato
    movlw 0x68 ;h
    call tx_dato
    movlw 0x74 ;t
    call tx_dato
    movlw 0x6D ;m
    call tx_dato
    movlw 0x6C ;l
    call tx_dato
    movlw 0x3E ;>
    call tx_dato
    call send_crlf
    call send_crlf
   

Como puede verse esta es una respuesta muy sencilla que será interpretada por el cliente como que la orden fue ejecutada, y que escribo paso a paso para que quede claro que se envía. Por supuesto el código se puede optimizar con tablas de mensajes, uso de EPROM, etc.

Hasta aquí la primera parte de este proyecto estaría finalizada pues ya podemos manejar luces y dispositivos de nuestra casa u otro sitio utilizando cualquier navegador desde movil u ordenador.
Habrá una segunda parte con el desarrollo de una App cliente especifica que actúe según lo explicado, pero del punto de vista del PIC no habrá grandes cambios y el código básicamente será el mismo, interpretación de la orden y envío de confirmación.

Cualquier duda hasta aquí, quedo a disposición

Un saludo


...
« Última modificación: 30 de Septiembre de 2021, 18:04:24 por Jorge Bern »

"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Proyecto de Domótica. Encendiendo y apagando luces de casa desde el movil
« Respuesta #6 en: 30 de Septiembre de 2021, 18:04:28 »
¿Has pensado usar AWS IoT de Amazon?
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re:Proyecto de Domótica. Encendiendo y apagando luces de casa desde el movil
« Respuesta #7 en: 11 de Octubre de 2021, 19:57:04 »
muy buen proyecto, voy a seguirlo mas de cerca!
Habia hecho algo similar con el modulo nodemcu, que se enlaza por wifi mediante el esp8266, eso mas un par de cosillas mas y prendia la luz mediante web. habia arrancado con un enc28j60 para arduino pero me trajo puros dolores de cabeza.
otra cosa, viendo que utilizas la aplicacion wiznet, me hizo ruido el tema que se llame Wiz, tengo en casa 2 lamparas enlazadas al google nest y utilizan la aplicacion wiz para configurarse, tendran alguna relacion entre si? voy a investigar  ;-)

exitos y a darle atomos!
Volviendo al mundo de los PIC....

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Re:Proyecto de Domótica. Encendiendo y apagando luces de casa desde el movil
« Respuesta #8 en: 21 de Octubre de 2021, 13:29:48 »
¿Has pensado usar AWS IoT de Amazon?

Hola, he visto que hay plataformas para hacer cosas muy sofisticadas, las estoy viendo luego de empezar con esto muy básico.

Gracias por vuestros comentarios e inyecciones de ánimo  :-/

"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado Atlasthings

  • PIC10
  • *
  • Mensajes: 1
Re:Proyecto de Domótica. Encendiendo y apagando luces de casa desde el movil
« Respuesta #9 en: 24 de Diciembre de 2022, 17:40:18 »
Hola buenas tardes,

Perdón si mi pregunta es ingenua, pero hay alguna aplicación para monitorear lo que hacen los dispositivos a través de internet?

Conseguí esta información de atlaslocator.com, Todos sus dispositivos IOT en un lugar fácil y seguro Ofreciendo la mejor solución para monitorear personas, animales, plantas y objetos en general, con mapa, gráficos, tabla, notificación, exportación de datos y opción de compartir.
Dispositivos:La plataforma es compatible con la mayoría de dispositivos LoraWan del mercado, muy pronto ampliaremos a otros dispositivos de otras tecnologías como Sigfox, NarrowBandIOT y 5GComunicaciones. Trabajamos con operadores IOT de LoraWan como The Things Stack (The Things Network) y Helium.
Muy pronto ampliaremos a otros como Sigfox, Fossa,Aplicación IoTPlataforma de centralización de todos tus dispositivos IOT con la opción de compartirlos con tus amigos. Tiene la posibilidad de monitorearlos en mapa, gráficos y tablas, exportarlos a excel y definir notificaciones y alarmas. Gracias.
« Última modificación: 25 de Diciembre de 2022, 06:58:59 por xocas »

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Proyecto de Domótica. Encendiendo y apagando luces de casa desde el movil
« Respuesta #10 en: 24 de Diciembre de 2022, 17:56:27 »
Hola buenas tardes,

Perdón si mi pregunta es ingenua, pero hay alguna aplicación para monitorear lo que hacen los dispositivos a través de internet?

Conseguí esta información de atlaslocator.com, Todos sus dispositivos IOT en un lugar fácil y seguro Ofreciendo la mejor solución para monitorear personas, animales, plantas y objetos en general, con mapa, gráficos, tabla, notificación, exportación de datos y opción de compartir.
Dispositivos:La plataforma es compatible con la mayoría de dispositivos LoraWan del mercado, muy pronto ampliaremos a otros dispositivos de otras tecnologías como Sigfox, NarrowBandIOT y 5GComunicaciones. Trabajamos con operadores IOT de LoraWan como The Things Stack (The Things Network) y Helium.
Muy pronto ampliaremos a otros como Sigfox, Fossa,Aplicación IoTPlataforma de centralización de todos tus dispositivos IOT con la opción de compartirlos con tus amigos. Tiene la posibilidad de monitorearlos en mapa, gráficos y tablas, exportarlos a excel y definir notificaciones y alarmas. Gracias.

¿algo así como AWS de Amazon?

https://www.hackster.io/skrebergene/your-first-aws-application-for-pic-iot-and-avr-iot-67bf99
« Última modificación: 25 de Diciembre de 2022, 06:59:15 por xocas »
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re:Proyecto de Domótica. Encendiendo y apagando luces de casa desde el movil
« Respuesta #11 en: 25 de Diciembre de 2022, 07:00:57 »
No es una pregunta ingenua. Para nada. Estás dando publicidad a tu web.

De momento lo mantengo por si puede interesar a alguien.


 

anything