Go Down

Topic: Encender Luces infrarrojo (Read 696 times) previous topic - next topic

daviten

y con nrf24 , tendria que poner un nano con nrf24 por cada lampara, y donde va el tablero con los botones tmb un nano con nrf24, lo cual en el tablero seria el master que envia los datos a los otros 11, estan separadas las luces en un terreno de 40x20 metros, no tendria problemas de alcance verdad?¿

surbyte

Dijiste que:

Quote
RF creo que seria lo mas conveniente, el parque tiene 40x20 aprox, tendria el alcanze suficiente?
40x20 mts con nRF24 diseminados por todos lados no hay problema si los conectas en malla o MESH.

daviten

Compre los modulos ESP-1S relay que viene con wifi, los estoy configurando como cliente conectandolos a la red wifi del lugar, ahora donde tengo la botonera como hago para mandar la funcionar de prender y apagar un rele, por ejemplo para prender 1 mando http://192.168.1.60/lampon , como puedo mandar eso desde arduino pulsando un boton o dando contacto con una llave de hogar.

daviten


tauro0221

#19
Jan 30, 2019, 05:07 am Last Edit: Jan 30, 2019, 05:16 am by tauro0221
Hi,
Aqui 3 link por si te enteresa de como hacer lo que tu quires de controlar desde un web. Otro link que tiene tutoria de como hacer un HTML.

LInk como hacer un web:
https://randomnerdtutorials.com/esp8266-web-server/

Link tutoria de HTML:
https://www.w3schools.com/html/default.asp

Este es como comunicarse usando  el esp8266.

https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html#

daviten

No, el web lo se hacer, lo que quiero es saber como mando el comando web mediante un boton manual, desde arduino o como sea.

tauro0221

Hi,
En el hilo 13 yo te puse un link de uno que envia una temperatura a otro esp8266. Esta las puedes usar y modificarla para que en vez de enviar la temperatura envie la condicion del switche. Pero el problema que vaz a tener es como vaz enviar la informacion a las 16 unidades. Normalmente la mayoria de los ejemplos  usan dos unidades de esp8266. Una que podrias usar es usando UDP. Este te permite enviar la informacion a cada unida con solamente cambiando el puerto. Pero tienes un problema y es que la infomacion la manda en packet y convertirlo a  unidades  es casi imposible. Esta trabaja bien y puedes cambiar la direccion a cada una de las unidades con solamente cambiando el puerto. Adjunto el link para que la consideres.  Solamente escribes la misma rutina con diferentes puertos y  le mandas la informacion con  selamente cambiando el puerto. Ya yo la probe pero no el podido leer la condicion del switche pues es dificil cambiar la informacion del packet a unidades. Esta no necesita un web.
 
https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/udp-examples.html

daviten

Bueno te cuento lo que tengo hasta ahora, configure cada modulo rele wifi como web server, cada uno de ellos esta conectado con una ip fija a mi router, entonces desde cualquier celular o pc entrando al navegador y poniendo http://192.168.1.60/ledon o http://192.168.1.60/ledoff , prendo y apago el rele que quiera, si quiero hacerlo con otro rele solo cambio la ip en el navegador por la del otro rele.

Ahora la pregunta es como hago para controlarlo mediante botones? la idea es poner un tablero con 11 botones y por cada pulso ejecuto esa orden http://192.168.1.60/ledoff, asi apago o prendo.

tauro0221

#23
Feb 03, 2019, 09:18 pm Last Edit: Feb 03, 2019, 09:20 pm by tauro0221
Hi,
En la forma que yo lo haria es de hacer un for/loop que vaya leyendo los switches uno a uno y lo envie a cada estacion de wifi. Tienes que poner los pines  como pinMode(pin, INPUT_PULLUP.). Esto te evita tener que intalar una resistencia 10K desde los 5 vcc al switche. Los switches los instalas que provean el ground. En otras palabras cuando estan abiertos vaz a leer 5vcc y cuando los cierras vaz a leer zero vcc.

Adjunto un dibujo de como hacerlo.





daviten

Muy bien, ahora como es la funcion para enviar el link cuando presiono el boton?

tauro0221

Hi,
Adjunto un sketch de como yo lo haria. El sketch esta echo usando un  for/loop para leer todas las entrada digitales usando un array que tiene definidos los puntos que vaz a leer pues creo que no van estar en order del uno 1 al 12 y los valores se lo  asigna a una  variable llama valor. Esta te va dar un valor de 1 o 0. Tambien otra variable que tiene el valor que lleva el contador para identificar cada wifi de control de luz. No se como piensas asignar que luz vaz a prender pues creo que tienes que enviar dos variables la de cerrar/abrir los switches y que estacion quires prender la luz.Otra cosa que tienes que hacer es de asignar los puertos como entrada digitales.En el sketch estoy usando otro for/ loop para asigna todos los puertos como puntos digitales de entrada. El sketch es para que tengas una idea de como hacerlo. Correlo y te va dar los volores de todos lo puntos de entradas diitales.
 
Recuerda yo no soy experto en programcion. Es una sugerencia de como hacerlo. Recuerda cada cual tiene su forma hacer ls cosas.

Code: [Select]

byte num_puerto[12] = {16, 5, 4, 0, 2, 14, 12, 13, 15, 3, 10, 9};
//**********************************************************************
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);

  //********************************************************************
  //asigna todos los puertos como entrads digitales con el PULLUP activo
  //*********************************************************************
  for (byte puertos = 0 ; puertos <=11; puertos++) {
   pinMode(num_puerto[puertos],INPUT_PULLUP);
  }
  //********************************************************************
}
//**********************************************************************
void loop() {
  // put your main code here, to run repeatedly:
  leer_switches();
  delay(1000);
}
//*********************************************************************
void leer_switches() {
  byte valor ;
  byte  estacion ;
  for (byte pin_entrada  = 1 ;  pin_entrada  <= 12;  pin_entrada  ++) {
    //**********************************************
    //leer puerto de entrada digital de cada estacion
    valor  = digitalRead(num_puerto[pin_entrada-1]);
    estacion = pin_entrada;
    //**********************************************
    // aqui mandar a la rutina que envia los datos para cada switche
    //*******************************************
    delay(100); //adjustar delay para que le de tiempo a procesar los datos
     Serial.println("************************************************************");
    Serial.print("  estacion num. = ");    Serial.print(estacion);
      Serial.print("  Puerto num      ");    Serial.print(num_puerto[pin_entrada-1]);
      Serial.print("  valor puerto  = ");    Serial.println(valor);
  }
}
//***********************************************************************










daviten

Vos me estas pasando un metodo y yo lo estoy haciendo de otra manera, cada esp es un web server, necesito desde un arduino mandar el link para encender por cada pulso de un boton, necesito enviar esto http://192.168.1.60/ledon

tauro0221

Hi,
Yo entendi que tu estabas buscando era leer los puntos.De todas manera puedes usar el loop y entoces cojes la informacion y se la envia al server. La mayoria de los programas que se usan tu le dices el status del  contacto y manda la informacon de la condicion del contacto.Tambien crei que tu estamas contruyendo una consola de control local no atraves del web.

daviten

Claro es un parque con 11 luces, y el cliente no quiere poner cables quiere unificarlas todas desde.un solo control local mediante botones, y pense hacerlo con estos reles wifi que vos me pasaste compre para hacer una prueba 2, e hice lo que te mencione anteriormente, los puse a cada uno como web server. Y pensaba poner un tablero con botones y un arduino para que envie el link cuando puso el boton.

tauro0221

HI,
Bueno eso fue lo que yo entendi. No veo cual es el problema. La routina que yo hice mas o menos es lo que tu quires. Aqui lo que tienes que hacer es cuando lee el contacto llamas donde envias la informacion  al web para que prenda/apagues las luces. La routina te da dos variables. Si hiciste una prueba y te trabajo entonces  prueba en vez de usar tu variables usas  las variables que te da mi routina.
Yo hice un google buscando como hacerlo cuando queria hacer lo mismo pero no queria usarel web. Queria ir directamente usando wifi pero no encontre nada porque la mayoria usan el web no encontre ninguna que explique como  hacerlo directamente.

Go Up