×

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

Descripció.

El objectiu de aquesta practica es crear un servidor WiFi de àrea local, configurat com un punt d'accés per software.

Components.

1.- Placa NodeMCU.

2.- Led.

3.- Resistència de 330 Ω

4.- IDE de Arduino.

Formes de connexió WiFi.

El processador ESP8266 instal·lat en el NodeMCU disposa de tres formes de connexió WiFi:

1.- Connexió en mode Station(STA).

2.- Connexió en mode Access Point, al igual que un router(AP).

3.- Suma de les dos connexions anteriors AP+Station (AP+STA).

El servidor servirà per controlar un led, que els clients que es connectin al AP, podran encendre o apagar-lo.

AP

Bibliografia.

Per desenvolupar aquesta practica ens hem basat en la pàgina de ESPloradores

Teoria.

En el mode Access Point el NodeMCU difon un SSID que es el nom de la xarxa, que els dispositius clients poden veure. Si el client es acceptat comença la connexió.

Per defecte la IP del NodeMCU com AP es 192.168.4.1 i les IP's que assigna als clients son 192.168.4.2, 192.168.4.3, ...Com a màxim accepta 5 dispositius clients connectats.

La llibreria que utilitza el NodeMCU es ESP8266WiFi.h

Mètodes de la llibreria ESP8266WiFi.h:

 WiFi.softAP(ssid, password, channel, hidden)

Es el software que permet a un dispositiu que no es un router poder convertir-lo en un router virtual.

Paràmetres:

- ssid: el nom que posem a la xarxa que creem, per exemple NodeMcuAP, te que tenir mes de 7 caràcters.

- password: es opcional, però si es vol seguretat WPA2-PSK, té que tenir com a mínim 8 caràcters.

- channel: opcional per defecte utilitza el 1, pot ser del 1 al 13.

- hidden: opcional, 1 permet veure el SSID, 0 la amaga.

 Wifi.softAPdisconnect()

Per finalitzar les connexions dels dispositius amb el AP.

 WiFi.softAPConfig(local_ip, gateway, subnet)

Per defecte la IP del Access Point es 192.168.4.1,però es pot configurar:

- local_ip: direcció IP del Access Point.

- gateway: es la direcció IP de la pasarela o porta d'enllaç (pot ser la mateixa que la local_ip).

- subnet:direcció IP de la sub xarxa, normalmente 255.255.255.0.

WIFi.softAPIP()

Retorna la IP del AccessPoint.

WiFi.softAPgetStationNum()

Per saber el nombre de dispositius connectats al AP, màxim poden ser 5.

Circuit elèctric.

Subministrat per https://www.circuito.io

circuit

Codi HTML.

Comencem per el codi HTML, que es la interfície gràfica que fa servir el client per interactuar amb el servidor i poder encendre o apagar el led.

          
  // Envía la página HTML de resposta al client
  client.println("HTTP/1.1 200 OK");
  client.println("");          //No olvidar la línia de separació
  client.println("<!DOCTYPE HTML>");
  client.println("<meta charset='UTF-8'>");
  client.println("<html>");

  //Mostra el estat del led
  client.print("<h1>El LED està en el estat de: ");                 
  if(estat == HIGH) {
    client.print("ENCÈS</h1>");  
  } else {
    client.print("APAGAT</h1>");
  }
      //Se crean botones con estilos para modificar el estado del LED
  client.println("<button type='button' onClick=location.href='/LED=ON' style='margin:10px; background-color:green; color:#A9F5A9; padding:5px; border:2px solid black; width:400;'><h2> ENCENDRE</h2> </button>");
  client.println("<button type='button' onClick=location.href='/LED=OFF' style='margin:10px; background-color:red; color:#F6D8CE; padding:5px; border:2px solid black; width:400;'><h2> APAGAR</h2> </button><br><br>");
  client.println("</html>"); 
  delay(1);         
          
        

El client realitza la petició al servidor NodeMCU, amb el navegador amb les URL's següents:

 https://192.168.4.1/LED=ON
 https://192.168.4.1/LED=OFF

El NodeMCU, rep la petició:

  "/LED=ON" o "/LED=OFF"

i la analiza utilizan la funció peticion.indexOf(), per determinar les accions a realitzar.

Codi per pujar al NodeMCU.

NodeMcuAccessPoint.ino

/*
 NodeMCU Access Point. 
 Servidor Web en mode Access Point que permet encendre i apagar un LED       
 connectat a la sortida D2 del módul NodeMCU.

 */
////// llibreria  ////////
#include <ESP8266WiFi.h>                  

const char ssid[] = "NodeMcuAP";    //Definim la SSDI del nostre servidor WiFi 
const char password[] = "12345678";       //Definim la contrasenya del servidor 
WiFiServer server(80);              //Definim el port de comunicacions

#define PinLED D2                   //Definim el pin de sortida D2
int estat = LOW;                   //Definim la variable estat del LED

//////////////////////// setup()  ////////////////////////////
void setup() {
  Serial.begin(115200);

  pinMode(PinLED, OUTPUT);                
  digitalWrite(PinLED, LOW);   //Inicialment el pin D2 en estat apagat

  server.begin();               //inicialitzem el servidor
  WiFi.mode(WIFI_AP);
  WiFi.softAP(ssid, password);   //Xarxa amb password, en el canal 1 i visible
  //WiFi.softAP(ssid, password,3,1);      //Xarxa amb password, en el canal 3 i visible 
  //WiFi.softAP(ssid);                    //Xarxa oberta

  Serial.println("");

  Serial.print("Adressa IP AccessPoint - per defecte: ");
  Serial.println(WiFi.softAPIP());
 
  Serial.print("Adressa MAC del AccessPoint: ");                   
  Serial.println(WiFi.softAPmacAddress()); 

  ///// Per modificar la Adressa IP per defecte: ///////
  //IPAddress local_ip(192, 168, 2, 1);                       
  //IPAddress gateway(192, 168, 2, 1);   
  //IPAddress subnet(255, 255, 255, 0);
  //WiFi.softAPConfig(local_ip, gateway, subnet);
  //Serial.println();
  //Serial.print("AccessPoint - Nova Adressa IP: ");
  //Serial.println(WiFi.softAPIP());
}

////////////////////////  loop()  ///////////////////////////
void loop() 
{
  // Si no hi ha cliente connectat torna a comenzar
  WiFiClient client = server.available();  
  if (!client) {
    return;
  }
  // Ja tenim un client  
  // Espera fins que el cliente envía una petició
  Serial.println("Nou client");
  while(!client.available()){
    delay(1);
  }

  // Mostra el número de clients connectats
  Serial.printf("Clients connectats al AccessPoint: %d\n", WiFi.softAPgetStationNum()); 

  // Legeix la petició
  String peticio = client.readStringUntil('r');
  Serial.print("Petició del client: ");
  Serial.println(peticio);
  client.flush();

  // Comproba la petició
  if (peticio.indexOf('/LED=ON') != -1) {
    estat = HIGH;
  } 
  if (peticio.indexOf('/LED=OFF') != -1){
    estat = LOW;
  }

  //Encen o apaga el LED en funció de la petició
  digitalWrite(PinLED, estat);

  // Envía la página HTML de resposta al client
  client.println("HTTP/1.1 200 OK");
  client.println("");          //No olvidar la línia de separació
  client.println("<!DOCTYPE HTML>");
  client.println("<meta charset='UTF-8'>");
  client.println("<html>");

  //Mostra el estat del led
  client.print("<h1>El LED està en el estat de: ");                 
  if(estat == HIGH) {
    client.print("ENCÈS</h1>");  
  } else {
    client.print("APAGAT</h1>");
  }
      //Se crean botones con estilos para modificar el estado del LED
  client.println("<button type='button' onClick=location.href='/LED=ON' style='margin:10px; background-color:green; color:#A9F5A9; padding:5px; border:2px solid black; width:400;'><h2> ENCENDRE</h2> </button>");
  client.println("<button type='button' onClick=location.href='/LED=OFF' style='margin:10px; background-color:red; color:#F6D8CE; padding:5px; border:2px solid black; width:400;'><h2> APAGAR</h2> </button><br><br>");
  client.println("</html>"); 
  delay(1);
 
  //Desconexió dels clientes
  //WiFi.softAPdisconnect();
}

Connexió amb el AccessPoint.

Des de el nostre dispositiu que volem connectar al AccessPoint, busquem les xarxes WiFi disponibles. Connectem amb la xarxa NodeMcuAp amb la contrasenya 12345678.

Obrim el navegador i anem a la adreça:

https://192.168.4.1

La pàgina que es mostra es com la següent:

pag1

Al clicar en el botó ENCENDRE, la pàgina es com la següent:

pag2

Al clicar en el botó APAGAR, la pagina canvia, l'adreça a https://192.168.4.1/LED=OFF i el estat del led a APAGAT.

El monitor sèrie mostra la següent informació:

monitor

Resultat final.

off
on

Contingut.


Nosaltres

conill

Antonio Machado

Caminante, no hay camino,
se hace camino al andar.
Al andar se hace el camino,
y al volver la vista atrás
se ve la senda que nunca
se ha de volver a pisar.
Caminante no hay camino
sino estelas en la mar.

conill
conill
conill

Miquel Martí i Pol

Allau
Cap silenci no pot
dallar l'esclat de l'alba.
Asseguts al pedrís
que congrega les aigües
desxifrem el secret
de marees llunyanes
i escrutem el perfil
de rostres i paraules
per llegir-hi el futur
que anuncien els astres.
Pou endins, l'aigua és foc
i la lluna, distància.

conill


Tags

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