EL INTERNET DE LAS COSAS

Ahora se esta hablando mucho del termino del internet de las cosas, y esto simplemente nos indica que estamos entrando a una nueva generacion en internet.

Actualmente vivimos en internet de las personas, pero en el futuro proximo viviremos o vamos a compartir el internet con las cosas, y eso para que?..pues se abren enormes posibilidades para las cosas que usamos hoy, nos facilitaran aun mas nuestra iteraccion con ellas ya que podremos controlarlas a distancia usando algo tan comun como nuestros smartphones. Por ejemplo usted podria calentar la comida antes de llegar a la casa, o prender el aire acondicionado de su oficina minutos antes de entrar, o monitorear los signos vitales de enfermos en hospitales. Las posibilidades son interminables. Vea este VIDEO en HID es larguito. tomese un cafe.

Para nosotros es muy interesante apropiarnos de estas tecnologias como una posibilidad de desarrollar y proponer equipos nuevos que se conecten a la red, pero eso nos va a costar si queremos dedicarnos a eso, debemos tener conocimientos basicos en los siguientes temas usando YOUTUBE es suficiente para aprender:

VAMOS A JUGAR UN POCO CON ESTA TECNOLOGIA

Ya tenia experiencias con servidores webb en esta pagina y de hecho contrui uno basado en DSPIC y documente todo, ademas resaltamos la necesidad de sacar una cuenta en un servicio gratuito o pago SERVIDOR DNS en su momento trabaje con la pagina de no-ip. esto nos permite que nuestros sevidores sean visibles desde la nube, para cualquier ciudadano del mundo. Esto es fundamental si queremos conexiones globales. Esto es clave si su proveedor de servicios de internet hace asignacion IP dinamica y en aplicaciones globales y publicas para la nube, debe tener direccion ip publica fija. y eso se logra con in servidor de DNS y una configuracion apropiada de su router como el port forwarding o la apertura de puertos.

Si nuestro deseo es monitorear eventos o variables, existen otros servicios de monitoreo de variables, Thinkspeak es uno muy bueno aunque de esos hay bastantes en la nube. Este servicio gratuito y pago, nos permite compartir en la nube de forma publica o privada la respuesta de algun sensor. Mas adelante vamos a presentar ejemplos con este servicio. Se puede animar sacando su propia cuenta gratuita en esta web. Luego la vamos a usar para algunos ejemplos.

EN ESTA OPORTUNIDAD QUIERO ENTRAR RAPIDO CON UNA TECNOLOGIA NUEVA QUE ESTA CAPTANDO MUCHO INTERES ENTRE LOS ENTUSIASTAS DEL INTERNET DE LAS COSAS Y ES EL POPULAR MODULO ESP8266 y SUS VARIANTES

EL MODULO ESP8266.

Es un dispositivo fascinate en desempeño y costo, en ebay se consiguen en $4,00 us dolares cada uno. El dispositivo es multiproposito permite establecer una conexion a una red, router o internet como cliente o servidor, es muy facil de echar a andar. Se puede lograr comunicar solo con comandos AT(TIENE SU PROPIO STACK GRAVADO ya no hay que hacer esas proezas que haciamos con los pics y la configuracion dispendiosa y complicada ya es del pasado). Contiene un poderoso procesador tipo ARM que permite que el modulo sea programado con algun lenguaje compilado o interpretado. para trabajar con el usted debera aprender a instalarle FIRWARE para lo que lo va a poner a trabajar o cargarle codigo ejecutables o scripts. vamos atrabajar con el ESP-01. Los otros de la grafica pueden ser modulos con otras caracteristicas, como mas puertos GPIOX o canal de entrada analoga y salida PWM o con SPI o con I2C.

Algunos entusistas le sacan mas puertos al modulo comercial ESP-01 asi

  

Descripcion preliminar de pines visto por el lado de la antena impresa                             yo prefiero conectarme a un protoboard con este adaptador

grafica con todos los modulos ESP-XX que se consiguen actualmente

La mayoria de los que trabajamos con estos modulos empleamos dos tipos de firware, el primero es el que trae por defecto o de fabrica y lo fabrica ESPRESSIF este firware es para operarlo solo con comandos AT como los de modem y el otro firware es para programarlo con ordenes escritas en lenguaje de scripts LUA. El LUA permite hacer verdaderas marivillas. Si lo logras programar en LUA puedes usarlo sin necesidad de usar un procesador externo como un arduino o otra cosa programable para administrarlo o para gestionarlo, cosa que si hay que hacer con el modo AT. En modo LUA se pueden cargar varios archivos al modulo. Sobre todo cuando nuestro programa requiere funciones adicionales y se cargan estas en estos archivos. Ojo procurando que el primero que usted cargue sea el init.lua este es el principal que llama los otros y gravelos en el ESP8266, en el orden en que sean llamados por el modulo init.lua

 De mi experiencia con estos modulos me, voy a atrever de hacerle las siguientes recomendaciones.

No todo lo que logre usted bajar de internet funciona; Inicialmente se pierde mucho tiempo bajando firwares y aplicaciones de flasheo; unas trabajan otras no, a veces por culpa de sistema operativo o por que estan desactualizadas. yo voy a colocar vinculos web de los programas y firware que me dieron buenos resultados despues de bajar y probar muchos programas; si el firware LUA no es el apropiado, el codigo escrito en LUA puede tener comportamiento muy inestable, inclusive pasa bajando firware tipo AT de la pagina del fabricante donde se especifica que es la ultima. El esnobismo terco le podria resultar caro a usted. En mis experiencias use los programas que se pueden bajar de esta pagina y mi computadora corre en windows 8. Si es su caso es un buen inicio.

 LA PAGINAS QUE MAS ME GUSTARON SON LAS SIGUIENTES

Tutoriales sobre este modulo en YOUTUBE   primero este...despues este. Mirelos son muy interesantes estan en español castizo.

La pagina de procedimientos y ejemplos de RANDOMNERDTUTORIALS y recomiendo leer el libro AUTOMATIZACION con ESP8266

        Video unico en la nube sobre ESP8266 y APPINVENTOR

 

 

BUENAS PAGINAS DE EJEMPLOS por ahora mi interes es usar el modulo solo (standalone) sin pegarlo a nada como freescale arduino pic o atmel.

leer temperatura y ponerla en THINKSPEAK

control de nivel con thinkspeak

PROCEDIMIENTOS BASICOS USANDO UN MODULO ESP8266 NUEVO

Por defecto para uno nuevo lo normal es que trabaje en modo AT a 9600 baudios

Se recomienda hacer la siguiente conexion y usar algun programa de monitoreo de puerto serial yo voy a usar termite, ademas debe conseguir un DONGLE USB o cable usb a serial con su respecivo driver instalado

esta es la conexion normal pero si lo va a flashear solo si lo va a flashear (insisto) pegue el pin GPIO0 a tierra con un puente mientras hace el flasheo, no lo olvode en el resto de casos suelte ese pin. Nota he visto en algunas paginas que se recomienda un resiror de pull up entre CH_PD y vcc de 3.3v el valor no es critico puede ser entre 4,7k y no mas de 10k no se ve en la figura anterior.

ACA SE DESCRIBE MUY BIEN COMO CAMBIAR AL FIRWARE LUA YO PROPONGO MI PROPIO PROCEDIMIENTO, ABAJO SE LO DESCRIBO PASO A PASO 

NodeMCU  es un firmware que permite programar los módulos ESP8266 con LENGUAJE DE SCRIPTS LUA. Y usted encontrará que es muy similar a la manera de programar tu Arduino. Con sólo unas pocas líneas de código se puede establecer una conexión Wi-Fi, controlar los GPIOs ESP8266, convirtiendo su ESP8266 en un servidor web y mucho más.

Cableado:

 

SI LO QUIERE TRANSFORMAR A MODULO QUE TRABAJA EN LUA ESTOS SON LOS PASOS

  1. Bajar este programa de flasheo. uselo segun se explica en esta pagina...visitela
  2. Bajar este codigo de firware para LUA
  3. Armar el circuito basico pegando GPI0 a tierra. Mientras transfiere el archivo tome tres voltios de algun pin de esta interfaz
  4. Inserte su interfaz UBS-serial a 3,3v verifique que windows la reconoce y tome nota del numero de puerto serial que le fue asignado
  5. ejecute el programa de flasheo e indiquele el puerto y la localizacion del firware, si nada sucede intente lo siguiente puede volver a aplicar la tension de 3,3v o inclusive dele reseo aplivcando momentaneamente tierra al modulo y clusive saque y meta de nuevo la interfaz USB a su protoboard  

SI LO QUIERE LLEVAR DE NUEVO A FIRWARE QUE RECIBE ORDENES AT ESTOS SON LOS PASOS

  1. bajese el programa para hacer el flash
  2. bajese un firware para AT actualizado
  3. haga las conexiones como en el metodo anterior
  4. conecte tambien el cable USB-serial, y tome nota del puerto COM asignado
  5. ejecute el programa de flasheo que bajo
  6. indiquele donde esta el archivo BIN con el firware que bajo antes, pongale en puerto COM correcto y dele iniciar
  7. esperese a que lo transfiera, quitele el puente entre tierra y GPI0, conecte y reconecte la alimentacion y mire la respuesta en una aplicacion de terminal serie como le indique puede ser TERMITE. mandele codigos AT y mire si responde, si queda mal envia basura que significa que manda codigos de error a 115200bps, si pasa esto repita todo.

 

Cómo subir código LUA

vamos a realizar un buen ejemplo para motivarnos, primero que todo hacemos el siguiente montaje

RUI en randomnerdstutorials recomienda el uso de la ESPlorer programa creado por 4refr0nt para crear y guardar archivos LUA en su ESP8266. nos dice que sigamos las siguientes instrucciones para descargar e instalar ESPlorer:

  1. Haga clic aquí para descargar ESPlorer
  2. Descomprimir la carpeta
  3. Ir a la carpeta dist  está en: ESPlorer-master \ ESPlorer \ dist)
  4. Ejecute  ESPlorer.jar . Es un programa de Java, por lo que necesita JAVA instalado en su equipo.
  5. Abra la ESPlorer

Usted debe ver una ventana similar a la de la figura anterior, siga estas instrucciones para cargar un archivo LUA:

  1. Conecte su programador FTDI a su ordenador
  2. Seleccione su programador FTDI puerto
  3. Pulse  Abrir / Cerrar
  4. Seleccione la pestaña NodeMCU + MicroPtyhon
  5. Crear un nuevo archivo llamado init.lua
  6. Pulse Guardar para ESP

Todo lo que usted tiene que preocuparse es por pisar donde estan las cuadros en rojo.

Código

Sube el siguiente código en su ESP8266 con el software anterior. El archivo debe ser nombrado " init.lua ". Usted puede haga clic aquí para descargar el archivo.

No se olvide de reemplazar en el programa suyo los detalles WiFi Station en el código de seguridad (nombre de red y contraseña).

Codigo LUA de este ejemplo

wifi.setmode(wifi.STATION)
wifi.sta.config("YOUR_NETWORK_NAME","YOUR_NETWORK_PASSWORD")     aca usted cambia en esta linea los datos de su router
print(wifi.sta.getip())
led1 = 3
led2 = 4
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive", function(client,request)
local buf = "";
local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
if(method == nil)then
_, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
end
local _GET = {}
if (vars ~= nil)then
for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
_GET[k] = v
end
end
buf = buf.."<h1> ESP8266 Web Server</h1>";
buf = buf.."<p>GPIO0 <a href=\"?pin=ON1\"><button>ON</button></a>&nbsp;<a href=\"?pin=OFF1\"><button>OFF</button></a></p>";
buf = buf.."<p>GPIO2 <a href=\"?pin=ON2\"><button>ON</button></a>&nbsp;<a href=\"?pin=OFF2\"><button>OFF</button></a></p>";
local _on,_off = "",""
if(_GET.pin == "ON1")then
gpio.write(led1, gpio.HIGH);
elseif(_GET.pin == "OFF1")then
gpio.write(led1, gpio.LOW);
elseif(_GET.pin == "ON2")then
gpio.write(led2, gpio.HIGH);
elseif(_GET.pin == "OFF2")then
gpio.write(led2, gpio.LOW);
end
client:send(buf);
client:close();
collectgarbage();
end)
end)

Acceso a su servidor web

Cuando su ESP8266 reinicia imprime en su monitor de serie la dirección IP de su ESP8266. Si escribe su dirección ESP8266 IP en su navegador web, podrá acceder a su servidor web. En mi caso es http://192.168.1.82.

 

ademas puede subir codigo lua con este otro programa realmente es el que yo uso y o recomiendo mas que el basado en java de la descripcion anterior ME GUSTA MAS QUE EL ANTERIOR

LuaLoader

LuaLoader es un programa de Windows para subir archivos a la ESP8266 y trabajar con la interfaz en serie Lua. Además de ser un programa de terminal sencillo, tiene simples mandos por botones de comando que hacen que sea fácil de interactuar y experimentar con el modulo ESP8266.

Descargar: LuaLoader.zip

LuaLoader.exe es una sencilla aplicación de Windows que no requiere ninguna instalación especial.

    Es muy facil de usar, al ejecutarlo sale una ventana como la anterior puede variar segun se ejecute tome la imagen anterior como referencia, primero de cuadro DISCONECT en la parte de arriba para que se concte al puerto serial dongle USB-serial

Luego pise el boton Upload file e indiquele la ruta donde usted gravo el archivo anterior init.lua al cual usted ya le modifico la linea donde se escrine su ssid y pasword de su red o router inalambrico casero.

si todo esta bien conectado y reinizializado por hardware, se inicia la descarga. No se alarme si reporta errores simplemente repita la carga varias veces, sea paciente.. si todo sale bien al final en la ventana de la derecha sale al final de enviar todo el archivo plano, una orden que se ve como "dofile" y una direccion IP tome nota de esa direccion IP muy bien ya que es la direccion web de la pagina que nos deja interactuar con los botones que prenden y apagan los dos leds del montaje esa direccion es vital

la informacion anterior la tome de.

http://benlo.com/esp8266/esp8266QuickStart.html
http://benlo.com/esp8266/esp8266QuickStart.html

ADEMAS PUEDES CONSULTAR 

DESCRIPCION GENERAL DE PINES

DESCRIPCION DETALLADA DE PINES

ACTUALIZACION DEL FIRWARE LUA SEGUN MBED.ORG sobre todo si el firware LUA requiere de varios modulos

 

INTERNET DE LAS COSAS CON DOMOTICZ

 

Que es domoticz

Caracteristicas principales

Domoticz con el ESP8266

Ejemplo del dimmer con domoticz

 

SI QUEREMOS INICIARNOS EN LA PROGRAMACION LUA, NUESTRO INTERES SE DEBERIA ORIENTAR A LO SIGUIENTE 

introduccion a lua

  1. BAJAR EL INTERPRETE DE LUA PARA WINDOWS

  2. BAJAR UN BUEN EDITOR PARA LUA SE RECOMIENDA EL MEJOR: SUBLIME TEXT 2

  3. CONFIGURA EL EDITOR PARA EJECUTE SCRIPTS DE LUA(esto es muy importante!): primero mirar esta recomendacion detallada de su instalacion en video, Luego bajar este fragmento, incrustarlo en sublime text 2 y segur las recomendaciones de este video.

  4. SEGUIR RECOMENDACIONES Y HACER CURSO DE LUA de este canal en youtube

  5. SI SE QUIERE APRENDER MAS DE SUBLIME TEX 2, VER ESTE VIDEO

  6. MANUAL DE LUA EN ESPAÑOL

  7. MANUAL MUY COMPLETO EN INGLES

  8. INTRODUCCION A LUA

  9. CURSO DE LUA PARA PRINCIPIANTES y tutorial LUA y un buen blog sobre LUA super basico!!

  10. EJEMPLOS EN LUA, MAS EJEMPLOS-1, MAS EJEMPLOS-2,

  11. OTRO EDITOR DE LUA

  12. probar scripts lua en linea MUY BUENO!! (si el codigo no es muy grande no nos fastidiemos con instaladores y plugins)

  13. paginas web escritas en lua, ejemplos lua

  14.  

PROGRAMANDO EL ESP8266 CON EL IDE DE ARDUINO

primero debemos descargar un plugin para arduino que lo habilita para programar modulos ESP8266

pegue el siguiente link en el administrador de tarjetas externas de arduino

entre por archivo preferencias le sale la ventana de abajo y pega el siguiente link

en la ventana de abajo donde se copio previamente, le da ok y se desaparece luego ir a

 

http://arduino.esp8266.com/package_esp8266com_index.json

SI DESPUES DEL PASO ANTERIOR DA ERROR

MIRE ESTA PAGINA

https://forums.losant.com/t/error-downloading-json-to-configure-arduino-ide-osx/83

entrar por herramientas/placa /gestor de tarjetas

y sale la ventana de abajo..la debe buscar en la parte inferor de toda la pagina.

Le sale instalar como yo ya lo instale se ve en la imagen instalado y se inicia una instalacion via internet que tarda un ratico y listo

Conetando modulo wifi a USB

Programando el ESP8266 con Arduino IDE

En Arduino IDE, podemos abrir el ejemplo del LED parpadeando en Archivo > Ejemplos > 01.Basics > Blink, y cambiamos el pin 13 por el 0 que es el que hemos conectado al LED.

ESP-01 ejemplo blink Arduino

Asegúrate de que en Herramientras > Placa está seleccinada “Generic ESP8266” y que en Herramientras > Puerto está seleccionado nuestro puerto serie.

Para programarlo, necesitas desconectar un momento GPIO0 del circuito y conectarlo a GND. Después desconecta VCC y vuelve a conectarlo para resetear el ESP8266. Ahora puedes subir tu sketch a la placa.

ESP-01 subiendo sketch Arduino

Cuando haya terminado de subir, vuelve a conectar GPIO0 y ya has subido tu primer sketch de Arduino al ESP8266 en la placa ESP-01.

Programación "arduino"

Con todos los componentes listos (IDE+placa de programación+módulo ESP8266), vamos a programar un sencillo ejemplo podéis descargar desde aquí.

Comenzamos declarando las librerías que vamos a necesitarESP8266WiFi.h y ESP8266WebServer.h. El nombre de nuestra wifi y la password para poder conectarnos.

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

const char* ssid = "<<SSID_WIFI>>";  
const char* password = "<<PASSWORD_WIFI>>";

const int PIN_RELE = 2;   //Es el puerto GPIO2  
String ESTADO_RELE = "OFF";

ESP8266WebServer server(80);  

Por último con ESP8266WebServer server(80); definimos un servidor http que va atender peticiones por el puerto standard 80.

Las siguientes funciones: info() y estado_rele(), nos servirán para contestar a las peticiones http. Simplemente nos devolverá información y estado del relé. Las funciones on_rele() y off_rele(), para activar y desactivar el relé. Y por último tenemos la funciónno_encontrado(), que nos servirá cuando nos llegue una petición incorrecta por http:

void info() {  
  String info_mensaje = "<b>ESP8266</b><br>Comando <b>on</b>: encender<br>Comando <b>off</b>: apagar<br><br>";
  String str_estado = ESTADO_RELE;
  info_mensaje = info_mensaje + "Estado:" + str_estado + "<br>";
  server.send(200, "text/html", info_mensaje);
}

void estado_rele() {  
  server.send(200, "text/plain", ESTADO_RELE);
}

void no_encontrado() {  
  server.send(404, "text/plain", "ERROR EN LA PETICION :( ");
}

void on_rele() {  
  server.send(200, "text/plain", "OK ON");
  ESTADO_RELE = "ON";
  digitalWrite(PIN_RELE, LOW);
}

void off_rele() {  
  server.send(200, "text/plain", "OK OFF");
  ESTADO_RELE = "OFF";
  digitalWrite(PIN_RELE, HIGH);
}

Entramos en el setup(). A destacar simplemente WiFi.begin(ssid, password);, que nos permite conectar a nuestra wifi.

void setup(void) {  
  pinMode(PIN_RELE, OUTPUT);
  digitalWrite(PIN_RELE, HIGH);

  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println("");

  // Esperamos a que se conecte
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Conectedo a ");
  Serial.println(ssid);
  Serial.print("Dirección IP: ");
  Serial.println(WiFi.localIP());

  IPAddress sensor_ip = WiFi.localIP();

Vamos a declarar en el servidor los diferentes paths que vamos a atender y reconocer. Por ejemplo, con server.on("/", info);definimos que en cuando nos mandan una petición http a la raíz, llamaremos a la función info() que hemos definido anteriormente y nos va a sacar información sobre nuestro módulo (bueno, la que hemos definido nosotros claro).

  // Declaramos un par de paths por si queremos consultar directamente el estado
  server.on("/", info);
  server.on("/estado", estado_rele);

Y así sucesivamente definimos las peticiones de encendido y apagado del relé:

  // Declaramos los paths para el control del rele
  server.on("/on", on_rele);
  server.on("/off", off_rele);

El método server.onNotFound() definiremos la función que queremos que actúe cuando la petición que recibimos no la tenemos definida. En este caso, vamos a llamar a la función no_encontrado() que hemos definido anteriormente.

  server.onNotFound(no_encontrado);

  server.begin();
  Serial.println("Servidor HTTP activo");
}

El loop() es de lo mas simple, simplemente invocar al métodohandleClient() que estará escuchando las peticiones del servidor.

void loop(void) {  
  server.handleClient();
}

Testeando nuestro interruptor remoto

Una vez cargado correctamente mediante el IDE de Arduino el programa anterior en el módulo ESP8266 (siguiendo el procedimiento que hemos comentado antes: hay que poner el pin GPIO0 a GNDpara que el boot del módulo entre en modo "upload").

 

Abrimos un navegador y ponemos la dirección IP que se le ha asignado al módulo. En mi caso la 10.2.0.208. Vemos que al indicar la raíz nos muestra la información que hemos definido en la funcióninfo()

Ahora si modificamos la URL con /on le diremos que active el pin GPIO2, o lo que es lo mismo la activación del relé, según la funciónon_rele().

Y lo contrario si le mandamos la petición /off

Pues ya tenemos nuestro interruptor remoto mediante wifi.

 

PAGINAS DE EJEMPLOS DE SERVIDORES WEB CON ARDUINO

http://kio4.com/arduino/index.htm#indice     (TUTORIAL ARDUINO EN ESPAÑOL)

http://kio4.com/arduino/57modulowifi_7.htm  (TRATA SOBRE LOS MODULOS)

http://kio4.com/arduino/57modulowifi_4.htm  (MODULO WIFI ESP8266)

http://kio4.com/arduino/57modulowifi_3.htm  (PUESTA A PUNTO DEL MODULO ESP8266) cargar firware

IOT CON BLYNK

VIDEO 1 CON BLYNK, VIDEO2 BIBLIOMAN,

EJEMPLOS PRECARGADOS EN BLYNK

NUEVOS MODULOS NODEMECU

PROGRAMAR ESP32 CON IDE DE ARDUINO,BIBLIOMAN

PROGRAMARLOS CON EL FRAMEWORK OFICIAL

PROGRAMARLOS CON MONGOOSE

PROGRAMAR CON CAYENE, PAGINA DE CAYENE EJEMPLO EXPLICADO EN CAYYENE

PRIMEROS PASOS CON NODEMECU-12   ACTUALIZAR FIRWARE AT ULTIMO FIRWARE VER 1.0 FLASHEO COMPLETO OTRO FLAHEO

Node-MCU-Pin-Out-Diagram

ARDUINO CON SUBLIME TEXT

CAYYENE CON ESP8266  Y PARTE 2

AUMENTARLES LA MEMORIA

AUTOMATIZAR PUERTA DE GARAGE CON CAYYENE