Es un projecte de domòtica per controlar els estats de un led, encès o apagat.
A traves de una aplicació Android per accedir des de el mòbil a la placa i al led, per WiFi. La app conté dos botons un ON i l'altre OFF.
Nota: En aquest cas es controla un led, però pot ser qualsevol dispositiu, aire condicionat, caldera, el reg del jardí, etc.

Placa NodeMCU amb el xip ESP8266.
Led i resistència.
Xarxa WiFi.
App Inventor com editor de la app de Android.
Ide de Arduino per programar i carregar el programa a la placa.
Circuit obtingut gràcies a la aplicació de circuito.io https://www.circuito.io
//A traves de una app de mobil, es vol encendre i apagar
//un led.
//components: NodeMCU, led, resistencia 330 oms
//llibreries
#include <ESP8266WiFi.h>
//la nostre wifi
const char* ssid = "mirablau";
const char* password = "********";
//el nostre servidor utilitza el port 80
WiFiServer server(8080);
//definim el pin del led
#define pinLed D2
//estat en que es troba el led
int estat = LOW;
///////////////////// setup() ////////////////////////////////
void setup() {
//inicialitze el port serie a 115200 baudis
Serial.begin(115200);
delay(10);
// el pinLed es de sortida i low
pinMode(pinLed, OUTPUT);
digitalWrite(pinLed, 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 des de Android");
while(!client.available()){
delay(1);
}
//llegim la peticio del client
String peticio = client.readStringUntil('\r');
Serial.println(peticio);
client.flush();
String resposta;
//analitzem la peticio
// si la peticio conté al subcadena '/ON'
if (peticio.indexOf('/ON') != -1) {
estat = HIGH;
resposta="Led encés, ON";
}
// si la peticio conté la subcadena '/OFF'
else if (peticio.indexOf('/OFF') != -1){
estat = LOW;
resposta="Led apagat, OFF";
}else{
Serial.println("Error.");
client.stop();
return;
}
//encenem o apagem depanent del estat
digitalWrite(pinLed, estat);
Serial.print("Resposta: ");
Serial.println(resposta);
delay(10);
//////////////////////////////////////////////
// Pàgina WEB. ////////////////////////////
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // Comilles importants.
client.println(resposta);
Serial.println("Petició finalitzada");
//es queda a espera de una nova petició.
Serial.println("");
}
Les APIS que entén el servidor, son:
https://IP_del_servidor/ON
https://IP_del_servidor/OFF
La placa NodeMCU es conecta a la xarxa local per WiFi i obté una IP, la qual servirà per connectar la App de mòbil al servidor NodeMCU.
Una vegada el client ha entrat en el servidor, aquest llegeix la petició d'arribada que porta la IP, fins a final de línia "\r".
Si la petició porta "/ON", l'acció a realitzar es:
estat = HIGH;
resposta="Led encés";
Altrament si la petició porta "/OFF", l'acció a realitzar es:
estat = LOW;
resposta="Led apagat";
Encenem o apaguem depenent del estat:
digitalWrite(pinLed, estat);
El servidor retorna la resposta al client (al mòbil), el codi per respondre es en llenguatge HTML. El servidor crea una pagina web perquè el client pugui visualitzar la resposta.
El monitor sèrie, mostra la IP que el router a donat al servidor NodeMCU:
En el navegador escrivim la IP obtinguda seguida de la comanda GET:
192.168.1.113/ON
La resposta es "Led encès" i realment està encès.
Altrament si en el navegador escrivim:
192.168.1.113/OFF
La resposta es "Led apagat" i realment està apagat.
Fem servir App Inventor, que es un editor de codi online per poder programar el mòbil Android. En un article anterior hem explicat la configuració i el funcionament de aquesta eina, podeu consultar-la en:
Començant per la par de dalt de la pantalla, posem un Canvas i a dins el nostre logo, que hem pujat des de el nostre ordinador. Seguidament dos Labels, el títol i la etiqueta de la IP, un TextBox on escriurem la IP del servidor a connectar, dos botons, ON i OFF, una altre etiqueta per enunciar la resposta del servidor, que es mostra en un label que queda a sota.
Al clicar el boto ON, posem en Web1 la URL:
https:// IP_escrita_en_el_TextBox/ON
Al clicar el boto OFF, posem en Web1 la URL:
https:// IP_escrita_en_el_TextBox/OFF
Quan el servidor retorna resposta, posem la resposta en el Label lbResposta.
Es descarrega directament des de la plataforma AppInventor al mòbil o tauleta. Fem servir el mètode USB, explicat en el article App Inventor, l'instal·lem i l'executem.


El mar.
Havaneres.
Lloret antic.
Lloret avui.
De cala Morisca a Sa Carabera.
De Sa Carabera a Treumal.
Lloret en kayak.
Vígilancia remota.
Caixa-tpv.
Cambrer-app.
Client webApp.
Relats del banc del si no fos
Històries d'ahir
Vídeos antics de Lloret
El caiac
Contes de l'avi.
Control d’accés amb contrasenya.
Orgue de llums.
Comparativa de editors Arduino.
Projecte bon Nadal.
Control de la qualitat del aire interior (CO2) amb semàfor LED.
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 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.
La bàscula. ESP8266 NodeMCU amb cèl·lula de càrrega.
ESP32-CAM
ESP32-CAM captura fotos per ser vistes en la WEB.
Pujar fotos a un servidor FTP amb ESP32-CAM.
MicroPython en ESP8266.
Visual Estudio Code per Arduino.
Classificador d’imatges.
Instal·lar i configurar Apache en Ubuntu.
Accés a un servidor Linux remotament.
Client i Servidor FTP.
Màquina virtual UBUNTU.
WindowsXP en Virtualbox.
Multisim, simulador de circuits electrònics.
Proteus, simulador de circuits electrònics.
MySQL. Instal·lació.
MySQL. Aplicacions.
Netbeans Maven MySQL.
Java+Netbeans+Maven+EclipseLink+Mysql
Aplicació d’escriptori JavaFX
App JavaFX amb SceneBuilder
App Java-Swing






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