×

ARDUINO

Control d’accés amb contrasenya. Orgue de llums. Comparativa de editors Arduino. Projecte bon Nadal. Sensor de gas i de fums. Control de la qualitat del aire interior (CO2) amb semàfor LED.

NodeMCU

NodeMCU-ThingSpeak. ThingSpeak. NodeMCU com AccessPoint. Control de la llum de casa per web. Control de un led per el mòbil. Sistema de fitxers en ESP8266. Altura del nivell d'aigua. Avis d’alarma a Telegram. Control de la llum de casa des de Telegram. Control de la intensitat de llum de un LED per Internet. Magatzematge de temperatura i humitat en Thinger. Publicar temperatura i humitat en Google Sheets. ESP8266 i Firebase. ESP8266-BME280 Firebase. La bàscula. ESP8266 NodeMCU amb cèl·lula de càrrega..

ESP32

ESP32-CAM, exemple de prova. Esp32-Cam captura fotos per ser vistes en la WEB. Pujar fotos a un servidor FTP amb ESP32-CAM. Foto amb ESP32-CAM i Telegram. Alarma amb avis a Telegram, utilitzant la placa ESP32-CAM.

PROGRAMACIÓ

Matemàtiques. App Inventor tutorial. MicroPython en ESP8266. Visual Estudio Code per Arduino

Intel·ligència artificial

Classificador d’imatges.

SERVIDORS

Instal·lar i configurar Apache en Ubuntu. Accés a un servidor Linux remotament. Client i Servidor FTP.

MÀQUINES VIRTUALS

Màquina virtual UBUNTU. WindowsXP en Virtualbox.

ELECTRÒNICA

Simulador Multisim. Simulador Proteus.

BASE DE DADES

MySQL. Instal·lació. MySQL. Aplicacions.

JAVA

Netbeans Maven MySQL. Java+Netbeans+Maven+EclipseLink+MySQL Aplicació d’escriptori JavaFX App JavaFX amb SceneBuilder App Java-Swing
favicon
logo

Tresavis

Benvinguts al blog de tresavis de noves tecnologies i més.

Correu : tresavis3@gmail.com

facebook   Instagram   youtube   x   tiktok

☰ Pràctiques   ☰ Articles

Control de la llum de casa per web.

Descripció:

Es un projecte de domotica per encendre o apagar la llum de la casa remotament per web. Es pot accedir per la xarxa local o per Internet, escribin en el navagador la IP local del servidor si estem en la mateixa xarxa o la IP publica desde Internet.

Componets:

Placa NodeMCU.

Relay.

Ide de Arduino.

La placa NodeMCU es connecta a la nostre WiFi i es configura com a un servidor web, aquest servidor escolta les peticions get dels clients:

LED=ON i LED=OFF

NodeMCU

Esquema eléctric:

La imatge del esquema eléctrictre està feta gracies a l'aplicació de la plataforma circuito.io

Esquema electric

Codi.

NodeMcuRelay.ino
          
         
//Per mitjansant la web, es vol encendre i apagar
//una bombilla conectada a 220V.
//components: NodeMCU, Relay i bombilla a 220V

//llibreries
#include <ESP8266WiFi.h>                   

//la nostre wifi
const char* ssid = "mirablau";       
const char* password = "Cla1DeCasa";
//el nostre servidor utilitza el port 80    
WiFiServer server(80);                   

 //definim el pin del relay
#define pinRelay D1  

//estat en que es troba la bombilla                
int estat = LOW;                         

/////////////////////  setup()  ////////////////////////////////
void setup() {
  //inicialitze el port serie a 115200 baudis
  Serial.begin(115200);

  // el pinRelay es de sortida i low
  pinMode(pinRelay, OUTPUT);              
  digitalWrite(pinRelay, LOW);            

  //iniciatitzem la WiFi
  WiFi.begin(ssid, password);
             
  Serial.printf("\n\nConnectat a la xarxa: %s\n", WiFi.SSID().c_str());
  //mentres no es connecta a la WiFi escriu punts.
  while (WiFi.status() != WL_CONNECTED) { 
    delay(500);
    Serial.print(".");                    
  }
  Serial.println("");
  Serial.println("WiFi connectada");       

  //inicialitzem el servidor
  server.begin();    
  Serial.println("Servidor inicialitzat");
 
 Serial.printf("\n\nURL obtinguda per el servidor: http://%s/\n", WiFi.localIP().toString().c_str());
} 

//////////////////////////////// loop() //////////////////////////////////////
void loop() {
  // el servidor espera un client
  //si no hi ha client, torna ha començar el bucle
  WiFiClient client = server.available();  
  if (!client) {
    return;
  }
 
  //hi ha client
  Serial.println("nou client");
  while(!client.available()){
    delay(1);
  }
 
  //llegim la peticio del client
  String peticio = client.readStringUntil('\r');
  Serial.println(peticio);
  client.flush();
  //analitzem la peticio
  // si la peticio conté al subcadena '/LED=ON' 
  if (peticio.indexOf('/LED=ON') != -1) {
    estat = LOW;
  }
  // si la peticio conté la subcadena '/LED=OFF' 
  if (peticio.indexOf('/LED=OFF') != -1){
    estat = HIGH;
  }
  //encenem o apagem depanent del estat
  digitalWrite(pinRelay, estat);
 
  //construim la web, codi HTML
  client.println("HTTP/1.1 200 OK");
  client.println("");                         
  client.println("");
  client.println("");
  client.println("");

  client.print("<h1 align=center>CONTROL LLUM DE CASA ");

  //si està encesa, el butó mostra la imatge OFF i al clicar-lo envia ON
  //el servidor al rebre la petició ON possa el estat en HIGH
  //altrament lo contrari
  if(estat == HIGH) {
    client.print("<input type='image' src='https://i.imgur.com/00i0BdB.jpg'" );
    client.print("style='display:block; margin:auto' width='30%' onClick=location.href='/LED=ON'>");
  }else{ 
    client.print("<input type='image' src='https://i.imgur.com/uQxhFE5.jpg'"); 
    client.print("style='display:block; margin:auto' width='30%' onClick=location.href='/LED=OFF'>");
  }
 
 client.println("</html>");
 delay(1);
 Serial.println("Petició finalitzada"); 
 //es queda a espera de una nova petició.
 Serial.println("");
 
}
 
          
        
Descarrega el codi aqui.

Llogica del codi:

La palca NodeMCU que dispossa de WiFi, es connecta a la xarxa local obtinguen una IP que li dona el router. Configurem el NodeMCU per que sigui un servidor WEB. Cuan el client en el navegador escriu la IP del servidor WEB, aquest envia una imatge de un butó que té dues posicions ON i OFF, depenent de la comanda get que precedeix a la IP, en el nostre cas la IP es 192.168.0.25. Les URLs que entén el servidor son:

https:// 192.168.0.25/LED=ON
https:// 192.168.0.25/LED=OFF
NodeMCU

Esquema eléctric:

La imatge del esquema eléctrictre està feta gracies a l'aplicació de la plataforma circuito.io

url ON

Analizém el codi:

En el següent tros de codi, el servidor llegeix la petició del client i encén o apaga la bombilla. El servidor llegeix la petició del client, si la petició conté la subcadena LED=ON, possa el estat en LOW i el relay en estat LOW, bombilla apagada. Altrament el contrari.

url ON

El codi HTML del servidor:

Fa servir dues imatges de Internet, dos butons, un mostra la imatge ON i l'altre OFF. Inicialment el estat es LOW, apagada. Pasem al else del codi anterior, imatge ON i al clicar-la envia LED=OFF. En el següent loop, la petició es LED=OFF, possa l'estat en HIGH, encen la bombilla. La següent interacció estat es HIGH, encesa, en el if del codi anterior, presenta la imatge de OFF que al clicar-la envia LED=ON. En el següent loop, la petició es LED=ON, possa l'estat en LOW, apaga la bombilla.

url ON

Des d'Internet.

Si volem accedir al nostre servidor WEB, des d'Internet, tenim que redireccionar els ports del router. El monitor serie del ide d'Arduino ens mostra la url que tenim que fer servir per connectar amb la placa NodeMCU:

Internet 1

Accedim al router en mode expert, mirem el nom i la IP del nostre dispositiu. El nom es ESP i la IP 192.168.0.25

Esquema electric

Afegim un nou redireccionament de ports, especifiquem el dispositiu i assignem el port 80, tan el public com també el de la LAN. Guardem i apliquem els canvis. En altres routers la configuració pot variar.

Esquema electric
Esquema electric

Mirem la IP publica que tenim assignada per el nostre proveedor d'Internet amb la cual i el navegador podrem accedir des de qualselvol lloc al nostre dispositiu.

Contingut.


Nosaltres

Les nostres fotos antigues .
antic
antic
antic
antic
antic
antic
antic
antic
antic
antic
antic

Tags

Noves tecnologies WEB Arduino Domótica MycroPython NodeMCU IoT Java ESP8266 Lora C++ Programació Server-Client